From 2dca0785d7c21cd63117c915723ca339a8c29884 Mon Sep 17 00:00:00 2001 From: neomoth Date: Fri, 16 Jan 2026 03:25:15 -0500 Subject: [PATCH 001/603] Fix Zombie Resistance Probability (#42451) free merge --- Content.Server/Zombies/ZombieSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Zombies/ZombieSystem.cs b/Content.Server/Zombies/ZombieSystem.cs index b840e7203e2..542c065e4b2 100644 --- a/Content.Server/Zombies/ZombieSystem.cs +++ b/Content.Server/Zombies/ZombieSystem.cs @@ -262,7 +262,7 @@ private void OnMeleeHit(Entity entity, ref MeleeHitEvent args) _damageable.TryChangeDamage(args.User, entity.Comp.HealingOnBite, true, false); // If we cannot infect the living target, the zed will just heal itself. - if (HasComp(uid) || cannotSpread || _random.Prob(GetZombieInfectionChance(uid, entity.Comp))) + if (HasComp(uid) || cannotSpread || !_random.Prob(GetZombieInfectionChance(uid, entity.Comp))) continue; EnsureComp(uid); From d0352e734d97f3762f2e9082ea61bd2f83101874 Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 16 Jan 2026 08:41:57 +0000 Subject: [PATCH 002/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index a7e836e8e42..b9971ab1256 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: M4rchy-S - changes: - - message: dead mobs will no longer vomit from radiation damage - type: Fix - id: 8909 - time: '2025-09-02T00:07:37.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40020 - author: SolidSyn changes: - message: Detectives noir-tech glasses are now contraband, but now include a noir @@ -3913,3 +3906,11 @@ id: 9412 time: '2026-01-16T02:09:01.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42446 +- author: neomoth + changes: + - message: Fix zombie resistance, instead of making you more likely to be infected, + it now properly makes you less likely to be infected. + type: Fix + id: 9413 + time: '2026-01-16T08:40:47.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42451 From 40c634d7e2c6ad1beabc9c45b7c97b941e5af8de Mon Sep 17 00:00:00 2001 From: Samuka <47865393+Samuka-C@users.noreply.github.com> Date: Fri, 16 Jan 2026 14:04:01 -0300 Subject: [PATCH 003/603] Adds more starting materials for the mothership (#42448) * more mats * update the guidebook * missed a word --- Resources/Maps/Shuttles/mothership.yml | 122 ++++++++++++++++-- .../Guidebook/Antagonist/Xenoborgs.xml | 6 +- 2 files changed, 115 insertions(+), 13 deletions(-) diff --git a/Resources/Maps/Shuttles/mothership.yml b/Resources/Maps/Shuttles/mothership.yml index 9803b1fbfef..9092ffb9e6e 100644 --- a/Resources/Maps/Shuttles/mothership.yml +++ b/Resources/Maps/Shuttles/mothership.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Grid - engineVersion: 268.0.0 + engineVersion: 270.1.0 forkId: "" forkVersion: "" - time: 12/20/2025 12:50:17 - entityCount: 581 + time: 01/16/2026 03:06:16 + entityCount: 591 maps: [] grids: - 1 @@ -160,6 +160,8 @@ entities: - type: GasTileOverlay - type: RadiationGridResistance - type: ExplosionAirtightGrid + - type: TileHistory + chunkHistory: {} - proto: AirlockGlassShuttleXenoborgLocked entities: - uid: 107 @@ -1473,6 +1475,7 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + storage: 425 - proto: CableHV entities: - uid: 139 @@ -1534,6 +1537,7 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + storage: 425 - proto: CableMV entities: - uid: 149 @@ -1910,6 +1914,7 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + storage: 425 - proto: CableTerminal entities: - uid: 138 @@ -2041,14 +2046,24 @@ entities: showEnts: False occludes: True ents: - - 339 + - 455 + - 453 + - 370 + - 340 + - 346 - 341 - - 343 + - 344 - 342 + - 456 + - 586 + - 587 + - 588 + - 589 - 345 - - 344 - - 340 - - 346 + - 343 + - 339 + - 590 + - 591 paper_label: !type:ContainerSlot showEnts: False occludes: True @@ -2473,15 +2488,32 @@ entities: parent: 1 - proto: SheetGlass entities: - - uid: 341 + - uid: 586 components: - type: Transform parent: 425 - type: Physics canCollide: False - type: InsideEntityStorage + storage: 425 + - uid: 589 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 - proto: SheetPlasteel entities: + - uid: 340 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 - uid: 342 components: - type: Transform @@ -2489,8 +2521,17 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + storage: 425 - proto: SheetPlastic entities: + - uid: 341 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 - uid: 344 components: - type: Transform @@ -2498,22 +2539,81 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + storage: 425 - proto: SheetSteel entities: - - uid: 340 + - uid: 346 components: - type: Transform parent: 425 - type: Physics canCollide: False - type: InsideEntityStorage - - uid: 346 + storage: 425 + - uid: 370 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 + - uid: 453 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 + - uid: 455 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 + - uid: 456 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 + - uid: 587 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 + - uid: 588 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 + - uid: 590 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 + - uid: 591 components: - type: Transform parent: 425 - type: Physics canCollide: False - type: InsideEntityStorage + storage: 425 - proto: SignalButton entities: - uid: 584 diff --git a/Resources/ServerInfo/Guidebook/Antagonist/Xenoborgs.xml b/Resources/ServerInfo/Guidebook/Antagonist/Xenoborgs.xml index 2c698251be7..6cf0894e28a 100644 --- a/Resources/ServerInfo/Guidebook/Antagonist/Xenoborgs.xml +++ b/Resources/ServerInfo/Guidebook/Antagonist/Xenoborgs.xml @@ -128,8 +128,10 @@ - ## Preparation - Before launching an attack, each xenoborg will need to aid the mothership in collection materials to create empty xenoborgs. Before FTLing near the station, make sure the IFF is off. This can be done in any way but will require teamwork to ensure speed. The safest way to collect materials is from space debris, where scrap and refined materials can be harvested and given to the Mothership Core. Once enough materials are collected, the Xenoborgs then must try to collect sentient brains without being detected. The longer the threat is unknown, the more dangerous the xenoborgs become. + ## Preparation and Tactics + Before FTLing near the station, make sure the IFF is off. + Before launching an attack, xenoborgs should discuss strategy and decide which targets to strike first. + Xenoborgs should try to collect sentient brains without being detected. The longer the threat is unknown, the more dangerous the xenoborgs become. ## Mothership and Xenoborg lawsets The Mothership and Xenoborgs have unique laws that define their purpose to self replicate and protect the Mothership. From 12592bf5299a650084e84a297133ef5a4a142600 Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 16 Jan 2026 17:20:57 +0000 Subject: [PATCH 004/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index b9971ab1256..0240286d566 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: SolidSyn - changes: - - message: Detectives noir-tech glasses are now contraband, but now include a noir - secHUD! - type: Tweak - id: 8910 - time: '2025-09-02T13:32:18.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39859 - author: FungiFellow changes: - message: Sentience Event can no longer target Corgis, Smile or Mothroaches @@ -3914,3 +3906,13 @@ id: 9413 time: '2026-01-16T08:40:47.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42451 +- author: Samuka + changes: + - message: The mothership now starts with more materials so there is less need to + salvage for them. + type: Tweak + - message: Xenoborgs guidebook entry got updated in regards to preparation and tactics. + type: Tweak + id: 9414 + time: '2026-01-16T17:19:48.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42448 From 8a59ead61e791ea5d93e7c528f59875f5d270303 Mon Sep 17 00:00:00 2001 From: Velken <8467292+Velken@users.noreply.github.com> Date: Fri, 16 Jan 2026 19:08:52 -0300 Subject: [PATCH 005/603] Admin Anomaly Scanner (#42443) * admin anom scanner * improvement * green * sprite --- .../Anomaly/AnomalyScannerSystem.cs | 18 ++--- Content.Server/Anomaly/AnomalySystem.cs | 67 ++++++++++++++---- .../Components/AnomalyScannerComponent.cs | 6 ++ Resources/Locale/en-US/anomaly/anomaly.ftl | 3 +- .../Objects/Specific/Research/anomaly.yml | 12 ++++ .../adminanomalyscanner.rsi/decaying.png | Bin 0 -> 603 bytes .../adminanomalyscanner.rsi/growing.png | Bin 0 -> 211 bytes .../Research/adminanomalyscanner.rsi/icon.png | Bin 0 -> 582 bytes .../adminanomalyscanner.rsi/inhand-left.png | Bin 0 -> 638 bytes .../adminanomalyscanner.rsi/inhand-right.png | Bin 0 -> 659 bytes .../adminanomalyscanner.rsi/meta.json | 61 ++++++++++++++++ .../adminanomalyscanner.rsi/severity_mask.png | Bin 0 -> 195 bytes .../adminanomalyscanner.rsi/supercritical.png | Bin 0 -> 501 bytes .../adminanomalyscanner.rsi/timer_1.png | Bin 0 -> 149 bytes .../adminanomalyscanner.rsi/timer_2.png | Bin 0 -> 157 bytes .../adminanomalyscanner.rsi/timer_3.png | Bin 0 -> 158 bytes .../adminanomalyscanner.rsi/timer_4.png | Bin 0 -> 158 bytes .../adminanomalyscanner.rsi/timer_5.png | Bin 0 -> 160 bytes 18 files changed, 143 insertions(+), 24 deletions(-) create mode 100644 Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/decaying.png create mode 100644 Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/growing.png create mode 100644 Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/icon.png create mode 100644 Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/meta.json create mode 100644 Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/severity_mask.png create mode 100644 Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/supercritical.png create mode 100644 Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/timer_1.png create mode 100644 Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/timer_2.png create mode 100644 Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/timer_3.png create mode 100644 Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/timer_4.png create mode 100644 Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/timer_5.png diff --git a/Content.Server/Anomaly/AnomalyScannerSystem.cs b/Content.Server/Anomaly/AnomalyScannerSystem.cs index ba657cf0567..b8bc3b60366 100644 --- a/Content.Server/Anomaly/AnomalyScannerSystem.cs +++ b/Content.Server/Anomaly/AnomalyScannerSystem.cs @@ -41,12 +41,12 @@ public void UpdateScannerWithNewAnomaly(EntityUid scanner, EntityUid anomaly, An Appearance.SetData(scanner, AnomalyScannerVisuals.HasAnomaly, true, appearanceComp); - var stability = _secretData.IsSecret(anomaly, AnomalySecretData.Stability, secretDataComp) + var stability = _secretData.IsSecret(anomaly, AnomalySecretData.Stability, secretDataComp) && !scannerComp.IgnoreSecret ? AnomalyStabilityVisuals.Stable : _anomaly.GetStabilityVisualOrStable((anomaly, anomalyComp)); Appearance.SetData(scanner, AnomalyScannerVisuals.AnomalyStability, stability, appearanceComp); - var severity = _secretData.IsSecret(anomaly, AnomalySecretData.Severity, secretDataComp) + var severity = _secretData.IsSecret(anomaly, AnomalySecretData.Severity, secretDataComp) && !scannerComp.IgnoreSecret ? 0 : anomalyComp.Severity; Appearance.SetData(scanner, AnomalyScannerVisuals.AnomalySeverity, severity, appearanceComp); @@ -109,13 +109,14 @@ private void OnScannerUiOpened(EntityUid uid, AnomalyScannerComponent component, private void OnScannerAnomalySeverityChanged(ref AnomalySeverityChangedEvent args) { - var severity = _secretData.IsSecret(args.Anomaly, AnomalySecretData.Severity) ? 0 : args.Severity; var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var component)) { if (component.ScannedAnomaly != args.Anomaly) continue; + var severity = _secretData.IsSecret(args.Anomaly, AnomalySecretData.Severity) && !component.IgnoreSecret ? 0 : args.Severity; + UpdateScannerUi(uid, component); Appearance.SetData(uid, AnomalyScannerVisuals.AnomalySeverity, severity); } @@ -123,15 +124,16 @@ private void OnScannerAnomalySeverityChanged(ref AnomalySeverityChangedEvent arg private void OnScannerAnomalyStabilityChanged(ref AnomalyStabilityChangedEvent args) { - var stability = _secretData.IsSecret(args.Anomaly, AnomalySecretData.Stability) - ? AnomalyStabilityVisuals.Stable - : _anomaly.GetStabilityVisualOrStable(args.Anomaly); var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var component)) { if (component.ScannedAnomaly != args.Anomaly) continue; + var stability = _secretData.IsSecret(args.Anomaly, AnomalySecretData.Stability) && !component.IgnoreSecret + ? AnomalyStabilityVisuals.Stable + : _anomaly.GetStabilityVisualOrStable(args.Anomaly); + UpdateScannerUi(uid, component); Appearance.SetData(uid, AnomalyScannerVisuals.AnomalyStability, stability); } @@ -154,12 +156,12 @@ private void OnScannerAnomalyBehaviorChanged(ref AnomalyBehaviorChangedEvent arg TryComp(uid, out var appearanceComp); TryComp(args.Anomaly, out var secretDataComp); - var severity = _secretData.IsSecret(args.Anomaly, AnomalySecretData.Severity, secretDataComp) + var severity = _secretData.IsSecret(args.Anomaly, AnomalySecretData.Severity, secretDataComp) && !component.IgnoreSecret ? 0 : anomalyComp.Severity; Appearance.SetData(uid, AnomalyScannerVisuals.AnomalySeverity, severity, appearanceComp); - var stability = _secretData.IsSecret(args.Anomaly, AnomalySecretData.Stability, secretDataComp) + var stability = _secretData.IsSecret(args.Anomaly, AnomalySecretData.Stability, secretDataComp) && !component.IgnoreSecret ? AnomalyStabilityVisuals.Stable : _anomaly.GetStabilityVisualOrStable((args.Anomaly, anomalyComp)); Appearance.SetData(uid, AnomalyScannerVisuals.AnomalyStability, stability, appearanceComp); diff --git a/Content.Server/Anomaly/AnomalySystem.cs b/Content.Server/Anomaly/AnomalySystem.cs index 102391baffd..4955b4e3369 100644 --- a/Content.Server/Anomaly/AnomalySystem.cs +++ b/Content.Server/Anomaly/AnomalySystem.cs @@ -236,14 +236,19 @@ public FormattedMessage GetScannerMessage(AnomalyScannerComponent component) TryComp(anomaly, out var secret); //Severity - if (secret != null && secret.Secret.Contains(AnomalySecretData.Severity)) + if (secret != null && secret.Secret.Contains(AnomalySecretData.Severity) && !component.IgnoreSecret) msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-severity-percentage-unknown")); else - msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-severity-percentage", ("percent", anomalyComp.Severity.ToString("P")))); + { + var text = Loc.GetString("anomaly-scanner-severity-percentage", ("percent", anomalyComp.Severity.ToString("P"))); + if (secret != null && secret.Secret.Contains(AnomalySecretData.Severity)) + text += " " + Loc.GetString("anomaly-secret-admin"); + msg.AddMarkupOrThrow(text); + } msg.PushNewline(); //Stability - if (secret != null && secret.Secret.Contains(AnomalySecretData.Stability)) + if (secret != null && secret.Secret.Contains(AnomalySecretData.Stability) && !component.IgnoreSecret) msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-stability-unknown")); else { @@ -254,15 +259,24 @@ public FormattedMessage GetScannerMessage(AnomalyScannerComponent component) stateLoc = Loc.GetString("anomaly-scanner-stability-high"); else stateLoc = Loc.GetString("anomaly-scanner-stability-medium"); + + if (secret != null && secret.Secret.Contains(AnomalySecretData.Stability)) + stateLoc += " " + Loc.GetString("anomaly-secret-admin"); + msg.AddMarkupOrThrow(stateLoc); } msg.PushNewline(); //Point output - if (secret != null && secret.Secret.Contains(AnomalySecretData.OutputPoint)) + if (secret != null && secret.Secret.Contains(AnomalySecretData.OutputPoint) && !component.IgnoreSecret) msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-point-output-unknown")); else - msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-point-output", ("point", GetAnomalyPointValue(anomaly, anomalyComp)))); + { + var text = Loc.GetString("anomaly-scanner-point-output", ("point", GetAnomalyPointValue(anomaly, anomalyComp))); + if (secret != null && secret.Secret.Contains(AnomalySecretData.OutputPoint)) + text += " " + Loc.GetString("anomaly-secret-admin"); + msg.AddMarkupOrThrow(text); + } msg.PushNewline(); msg.PushNewline(); @@ -271,40 +285,63 @@ public FormattedMessage GetScannerMessage(AnomalyScannerComponent component) msg.PushNewline(); //Danger - if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleDanger)) + if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleDanger) && !component.IgnoreSecret) msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-particle-danger-unknown")); else - msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-particle-danger", ("type", GetParticleLocale(anomalyComp.SeverityParticleType)))); + { + var text = Loc.GetString("anomaly-scanner-particle-danger", ("type", GetParticleLocale(anomalyComp.SeverityParticleType))); + if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleDanger)) + text += " " + Loc.GetString("anomaly-secret-admin"); + msg.AddMarkupOrThrow(text); + } msg.PushNewline(); //Unstable - if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleUnstable)) + if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleUnstable) && !component.IgnoreSecret) msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-particle-unstable-unknown")); else - msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-particle-unstable", ("type", GetParticleLocale(anomalyComp.DestabilizingParticleType)))); + { + var text = Loc.GetString("anomaly-scanner-particle-unstable", ("type", GetParticleLocale(anomalyComp.DestabilizingParticleType))); + if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleUnstable)) + text += " " + Loc.GetString("anomaly-secret-admin"); + msg.AddMarkupOrThrow(text); + } msg.PushNewline(); //Containment - if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleContainment)) + if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleContainment) && !component.IgnoreSecret) msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-particle-containment-unknown")); else - msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-particle-containment", ("type", GetParticleLocale(anomalyComp.WeakeningParticleType)))); + { + var text = Loc.GetString("anomaly-scanner-particle-containment", ("type", GetParticleLocale(anomalyComp.WeakeningParticleType))); + if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleContainment)) + text += " " + Loc.GetString("anomaly-secret-admin"); + msg.AddMarkupOrThrow(text); + } msg.PushNewline(); //Transformation - if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleTransformation)) + if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleTransformation) && !component.IgnoreSecret) msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-particle-transformation-unknown")); else - msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-particle-transformation", ("type", GetParticleLocale(anomalyComp.TransformationParticleType)))); + { + var text = Loc.GetString("anomaly-scanner-particle-transformation", ("type", GetParticleLocale(anomalyComp.TransformationParticleType))); + if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleTransformation)) + text += " " + Loc.GetString("anomaly-secret-admin"); + msg.AddMarkupOrThrow(text); + } //Behavior msg.PushNewline(); msg.PushNewline(); - msg.AddMarkupOrThrow(Loc.GetString("anomaly-behavior-title")); + var behaviorTitle = Loc.GetString("anomaly-behavior-title"); + if (secret != null && secret.Secret.Contains(AnomalySecretData.Behavior) && component.IgnoreSecret) + behaviorTitle += " " + Loc.GetString("anomaly-secret-admin"); + msg.AddMarkupOrThrow(behaviorTitle); msg.PushNewline(); - if (secret != null && secret.Secret.Contains(AnomalySecretData.Behavior)) + if (secret != null && secret.Secret.Contains(AnomalySecretData.Behavior) && !component.IgnoreSecret) msg.AddMarkupOrThrow(Loc.GetString("anomaly-behavior-unknown")); else { diff --git a/Content.Shared/Anomaly/Components/AnomalyScannerComponent.cs b/Content.Shared/Anomaly/Components/AnomalyScannerComponent.cs index c49743f6304..842445b704b 100644 --- a/Content.Shared/Anomaly/Components/AnomalyScannerComponent.cs +++ b/Content.Shared/Anomaly/Components/AnomalyScannerComponent.cs @@ -29,4 +29,10 @@ public sealed partial class AnomalyScannerComponent : Component /// [DataField] public SoundSpecifier? CompleteSound = new SoundPathSpecifier("/Audio/Items/beep.ogg"); + + /// + /// Whether to ignore the secret data on the anomaly. + /// + [DataField] + public bool IgnoreSecret; } diff --git a/Resources/Locale/en-US/anomaly/anomaly.ftl b/Resources/Locale/en-US/anomaly/anomaly.ftl index 77608da435a..cb6841ca4b5 100644 --- a/Resources/Locale/en-US/anomaly/anomaly.ftl +++ b/Resources/Locale/en-US/anomaly/anomaly.ftl @@ -79,7 +79,7 @@ anomaly-generator-flavor-right = v1.1 anomaly-behavior-unknown = [color=red]ERROR. Cannot be read.[/color] -anomaly-behavior-title = behavior deviation analysis: +anomaly-behavior-title = Behavior Deviation Analysis: anomaly-behavior-point = [color=gold]Anomaly produces {$mod}% of the points[/color] anomaly-behavior-safe = [color=forestgreen]The anomaly is extremely stable. Extremely rare pulsations.[/color] @@ -97,3 +97,4 @@ anomaly-behavior-inconstancy = [color=crimson]Impermanence has been detected. Pa anomaly-behavior-fast = [color=crimson]The pulsation frequency is strongly increased.[/color] anomaly-behavior-strenght = [color=crimson]The pulsation power is significantly increased.[/color] anomaly-behavior-moving = [color=crimson]Coordinate instability was detected.[/color] +anomaly-secret-admin = [color=red](ERROR)[/color] diff --git a/Resources/Prototypes/Entities/Objects/Specific/Research/anomaly.yml b/Resources/Prototypes/Entities/Objects/Specific/Research/anomaly.yml index b2eae73ddf8..b9fccd35f0e 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Research/anomaly.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Research/anomaly.yml @@ -69,6 +69,18 @@ - type: Item storedRotation: -90 +- type: entity + parent: AnomalyScanner + id: AnomalyScannerAdmin + name: admin anomaly scanner + description: A hand-held scanner built to collect information on various anomalous objects. This one seems to have a few extra features. + suffix: Admin + components: + - type: AnomalyScanner + ignoreSecret: true + - type: Sprite + sprite: Objects/Specific/Research/adminanomalyscanner.rsi + - type: entity id: AnomalyLocatorUnpowered parent: BaseItem diff --git a/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/decaying.png b/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/decaying.png new file mode 100644 index 0000000000000000000000000000000000000000..7335e13cb0c0d2c733a99bcd21689d574011c3de GIT binary patch literal 603 zcmV-h0;K(kP)4Tx04R}tkv&MmKpe$izoibb$c+6t{Ym|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jf7n~Gbq{ROvg%&X$9QWhhy~o`4L6R%#8_xhH>NsHm=FxlVH!Nh~3SGz3U!po$ty#A#JYF_5ACgo}U3_NU1uk*f+u zjs?`AK(zhffAG6oqck%%087&Oc}KlZwa~*o3a}c)cU= p@46Nw>K%a@^ZA#|vtrY0YC{Alv`|002ovPDHLkV1f(j5KaI9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/growing.png b/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/growing.png new file mode 100644 index 0000000000000000000000000000000000000000..3c9eeba747a681da8e605d26e8c1cfd22e93cc3a GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|dOcknLn`LH zy=BPPY{0`BaQXJvIR(4*Vy$*_YupsjoV4_rEoUd|&&i72^(;W;2X@-b`?~XK$>+`7 z6HFD2@@-m6)>YNL zW)o>WvEmK;m%9!15oh^CRg`Y^?Mt%1f0-Ys#;t}i)j0Oz5#2CGkQPr@KbLh*2~7Yw Ck57;Q literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/icon.png b/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4f2e97776fe69e1b7db632c0b4d93648634ebae6 GIT binary patch literal 582 zcmV-M0=fN(P)Px%07*naR9J=Wl(B0QaTLctmsBNO?M;PRXvyHx&~QRa>tX^*N(KWFEG3&11t*7s z&_BST;N)fzf|J3a7|@{#3e6X{C4I5LCMb?U|Llz!)T%FP3JtVs;*WH1qF!Z zk^_BP8qE&)z24t+-aBuxsY3lQ+Efi(M zIlnAE_02(01+E;*@a`wg+mmGXrpPS%57G%hR=)zL15gwN!!TU7)zycmO1`%C{6wF? zA@qWhAEcQ{R092K+bPT!TS75~0KU}Tb9eC$05gdS&t@;uF{_k%c?yv-F?kMv;=y?T zMg<%3$Ij=#*uHz(o}&;cQ|jgEm{mGvRpej90rrMW{@hQ{9UFGpYuhOb zk+K7^eEBy3rC#3UBdWj_L>p~SduHPi07WMImg~X^g#iwC_9Zs$q2Ld22Te{w4W#x%bPyqFsimo>UXNjOqcvKVdxaS%b(XZWIp&X$?g*w0b2fAXa U0?UDZ*Z=?k07*qoM6N<$f`Ew$3;+NC literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..0fd106f67fce69d9f505de4f12649a366aba7cf3 GIT binary patch literal 638 zcmV-^0)hRBP)Px%I7vi7RCt{2+OcaBVHgJRC#eW04N^2%y7V7NxI#;_*a#kXgu+c3t{{ZtrVhdF zD0G&Bbn8?^f(V5a9E3s%4V~L1@AtkB zA6ec5h=_=Yh=_=Yh$3@6U;XbMt|~26$n|`s&*%UEty)x?ofiv3v-3);7840qB!F=E zdioGs^@ei#1z>st5>1CeI{kt~tCz$MARPWy`4tW-Z_!)WglQS)4Y#`SJDi??lP$rt zjQF+w;D$tzdioFtnKo*tQy71p~PacevM0!+(5Z(&oS)k{PIczkye z_g|iWHuv_i{iPu?JOI3?t)~De6UzWzOO%x7dcNAKHvS9hshqAWCtJd5^XcIGACu!4`_zjRxM%?SjE;@YF1$?pmk@Hgu8xBs6?J`f zu_6Zm%*|RbEd$RVtply@V0g5;kyi4e0R%?@md@r;JDq};X=9_a3)3<%H){=^86M^; zhJSZ*(g6UhnJXB3_c8MD03h-b!?5A^g_h3d5gY}PhyL3cNz@h*UiBoGrCh`k5m9_U Y0b1?e@FeQ@aR2}S07*qoM6N<$f)?o@zyJUM literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/inhand-right.png b/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..cdac73f3982c906f78644a9e7968c057056f0c24 GIT binary patch literal 659 zcmV;E0&M+>P)Px%O-V#SRCt{2+OcaIQ5*;G?`bJqQA%i~Axr)Nk0&(5C9zOZByf|%1qwlKa*%Ek z$Xo)&ty3sPLLuPLPJ#r*DIFT89A@ek0@4OcC=s2~*CFu;g{Wtq^k}}H@$TL8{eJiE zJoxZURA8b>BTFC-)u z=V0~Y*sJWzN}%QYBv}18aDC$@89#aloSehz$B{}W(OccYmyNG@l>OxEB&5Sri%3{7dptJQEy_mT+)~-3arg{Vh)wYI{a|91hv7Ook z0Gyq5-SgAd=5JoN^!zILcikH7a0lg!1+4#GhI8ahGxe?R+(eMGi&De{oFhkhQ^IiW tN}%Niue|X=g;^F&hwl>>W{HSMy+1PQ+PQN)gb4ru002ovPDHLkV1k6DHHH8H literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/meta.json b/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/meta.json new file mode 100644 index 00000000000..66fa65a74ff --- /dev/null +++ b/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/meta.json @@ -0,0 +1,61 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Modified from anomalyscanner.rsi (at commit d0352e734d97f3762f2e9082ea61bd2f83101874) by Samuka-C (github)", + "states": [ + { + "name": "icon" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "growing", + "delays": [ + [ 0.2, 0.2, 0.2 ] + ] + }, + { + "name": "decaying", + "delays": [ + [ 0.2, 0.2, 0.2 ] + ] + }, + { + "name": "severity_mask", + "delays": [ + [ 0.25, 0.25, 0.25, 0.25 ] + ] + }, + { + "name": "timer_1" + }, + { + "name": "timer_2" + }, + { + "name": "timer_3" + }, + { + "name": "timer_4" + }, + { + "name": "timer_5" + }, + { + "name": "supercritical", + "delays": [ + [ 0.125, 0.125, 0.125, 0.125 ] + ] + } + ] +} diff --git a/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/severity_mask.png b/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/severity_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..4d0ae9a3aec38d0a62c97ed155ecb337ec712c93 GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|YCT;XLn`LH zz2(T&pdi3{;myDDZBrE*C8mX)sh*t`ST9s!yg3(Sf=T9sxi%kfpZ@$^x^)h7+TRZz z->yV`I{I2aOColqm4fNK@SMi5vYqd_>Ooe4bO=1GZdU%xxc=L-{S##C>=wM+|Gny~ l@syj*?wbzJXJlXyxWf3SMuU-0rHBut-qY33Wt~$(697t|NM!&3 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/supercritical.png b/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/supercritical.png new file mode 100644 index 0000000000000000000000000000000000000000..fedb3ba03b76fc8d8390d1b34979462ece53725a GIT binary patch literal 501 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv=}#LT=BJwMkF1yemk zJ@f8s-z|Y^wxvdRrg?g5F>nAmtPE0&tPG4mmKP99L)jqLXfQH^#hHL?Lq;YB0U#X( z#F_0ZVDT&<8w3)77^ELYqgl$p%)l^#oq+|Y!obMbfN=rDRFDqV1rU>_0NEhG1T=>U ztTM>b0?2~uGBhv%$*Q`~>s@TJ^(c_J#M8wwq$2L^O-H^a0}+;hlDB{TU&&<$ZBV$> zRdeyl-Y4v7rb{(fmw~kL{!09H`f;tId*rLCQ<<~oeEzJvGH21W?_0{hFXNS%v+k$r z?B^ctW&Ou>-j-E9`S(fu#-gZs#U01q{RZg<0{I_}yLWCqXJme}#&({U+Owb1eNl&R zt(z{K`ewx%MYp$yyJePsd+5x!IV{R=%ErZ;fbsWW>bl*GOI7z8pR@XF3o^sg)z4*} HQ$iB}?%j)l literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/timer_1.png b/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/timer_1.png new file mode 100644 index 0000000000000000000000000000000000000000..47b483bf5dc49cd1cc0e7997d8383bd29bec0151 GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}{+=$5ArY;~ z2@=gy+DhBVS%rdYCg9J$O;BeS3j3^P6oFc4t9D9e?c^ip-}f=i4dlj;m4z9<^pm~bZH+fV!Lj~phctc;!F!m#n2Y8_{V zd(P>5qK37SQ(1O?oAZ|E#Me#+i*?05p3V2`9VVGv;oWpzYD!J#%AY_x7(8A5T-G@y GGywn>Z#gpn literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/timer_4.png b/Resources/Textures/Objects/Specific/Research/adminanomalyscanner.rsi/timer_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e3c79e9ab29bff7b630d91efcd92d9c3f71e0937 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}5uPrNArY;~ z2@!HOgf$#RBe1N)FpG!WmVgpNFJWxOBx#| zIk6v*VPsyvziz>_=nl3I8WIyszRrWex_+%!mIUo#(Al#3H;?in~Z-<1{CB zktYTQJ~NmS_y7CVXr-sfc%Zp{!KDKl5ObJTF)=(+luF2IxETSog~8L+&t;ucLK6VX C0Wrz| literal 0 HcmV?d00001 From 3cd407e7a68ea8ae8449472ec8b4dd65cf3a6f37 Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 16 Jan 2026 22:25:23 +0000 Subject: [PATCH 006/603] Automatic changelog update --- Resources/Changelog/Admin.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index c42b04a3a8d..dd93af67dc6 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -1597,5 +1597,13 @@ Entries: id: 194 time: '2026-01-13T01:02:06.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42370 +- author: Velken + changes: + - message: new Admin version of the Anomaly Scanner, that shows the hidden particle + types. + type: Add + id: 195 + time: '2026-01-16T22:24:15.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42443 Name: Admin Order: 3 From d0c2734dad6b2ecfda62738a03539a04904d23d6 Mon Sep 17 00:00:00 2001 From: pathetic meowmeow Date: Fri, 16 Jan 2026 19:39:35 -0500 Subject: [PATCH 007/603] Nubody (#42419) * Nubody * fix test fails * gibbing * lung test returns * doc comment * hand organ test * giblet test * yaml formatting * returning * relocate * trimming * re-smite * oops thusd tweak * arachnids have slower metabolism i guess * never mind the old behaviour is bad actually * rider whyyy * style changes and allat * fix collision --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- Content.Client/Body/Systems/BodySystem.cs | 7 - .../EntitySystems/ChemistryGuideDataSystem.cs | 4 +- .../Commands/HideMechanismsCommand.cs | 36 - .../Commands/ShowMechanismsCommand.cs | 22 - .../Tests/Body/GibbingTest.cs | 60 ++ .../Tests/Body/HandOrganTest.cs | 87 ++ .../Tests/Body/LegTest.cs | 79 -- .../Tests/Body/LungTest.cs | 193 ----- .../Tests/Body/SaveLoadReparentTest.cs | 182 ---- .../Tests/Buckle/BuckleTest.cs | 28 - .../Tests/Respirator/LungTest.cs | 189 +++++ .../Commands/AddBodyPartCommand.cs | 43 - .../Commands/AddMechanismCommand.cs | 48 -- .../Systems/AdminVerbSystem.Smites.cs | 26 +- .../Anomaly/Effects/InnerBodyAnomalySystem.cs | 3 - .../Body/Commands/AddHandCommand.cs | 73 +- .../Body/Commands/AttachBodyPartCommand.cs | 123 --- .../Body/Commands/DestroyMechanismCommand.cs | 59 -- .../Body/Commands/RemoveHandCommand.cs | 58 -- Content.Server/Body/Systems/BodySystem.cs | 95 --- .../Body/Systems/MetabolizerSystem.cs | 8 +- .../Body/Systems/RespiratorSystem.cs | 132 +-- .../Cargo/Components/MobPriceComponent.cs | 6 - Content.Server/Cargo/Systems/PricingSystem.cs | 17 +- .../Disposal/Unit/DisposableSystem.cs | 2 +- Content.Server/Hands/Systems/HandsSystem.cs | 30 - .../ImmovableRod/ImmovableRodSystem.cs | 5 +- .../Kitchen/EntitySystems/MicrowaveSystem.cs | 25 +- .../Medical/MedicalScannerSystem.cs | 2 +- .../Systems/ShuttleSystem.FasterThanLight.cs | 4 +- Content.Server/Species/Systems/NymphSystem.cs | 14 +- .../Tools/Innate/InnateToolSystem.cs | 1 - .../Systems/ArtifactCrusherSystem.cs | 5 - Content.Shared/Body/BodyComponent.cs | 41 + .../Body/BodySystem.Compatibility.cs | 20 + Content.Shared/Body/BodySystem.Relay.cs | 50 ++ Content.Shared/Body/BodySystem.cs | 89 ++ .../Body/Components/BodyComponent.cs | 44 - .../Body/Events/MechanismBodyEvents.cs | 28 - Content.Shared/Body/GibbableOrganComponent.cs | 7 + Content.Shared/Body/GibbableOrganSystem.cs | 18 + Content.Shared/Body/HandOrganComponent.cs | 15 + Content.Shared/Body/HandOrganSystem.cs | 30 + Content.Shared/Body/Organ/OrganComponent.cs | 16 - Content.Shared/Body/OrganCategoryPrototype.cs | 13 + Content.Shared/Body/OrganComponent.cs | 21 + Content.Shared/Body/Part/BodyPartComponent.cs | 114 --- Content.Shared/Body/Part/BodyPartEvents.cs | 7 - Content.Shared/Body/Part/BodyPartSymmetry.cs | 16 - Content.Shared/Body/Part/BodyPartType.cs | 21 - .../Body/Prototypes/BodyPrototype.cs | 29 - .../Prototypes/BodyPrototypeSerializer.cs | 178 ---- Content.Shared/Body/Systems/BrainSystem.cs | 5 +- .../Body/Systems/SharedBodySystem.Body.cs | 300 ------- .../Body/Systems/SharedBodySystem.Organs.cs | 212 ----- .../Body/Systems/SharedBodySystem.Parts.cs | 803 ------------------ .../Body/Systems/SharedBodySystem.cs | 77 -- Content.Shared/Body/Systems/StomachSystem.cs | 1 - .../Systems/ChangelingDevourSystem.cs | 2 +- Content.Shared/Clothing/LoadoutSystem.cs | 3 +- .../Humanoid/HumanoidVisualLayersExtension.cs | 70 -- .../SharedMaterialReclaimerSystem.cs | 3 +- .../Medical/Cryogenics/SharedCryoPodSystem.cs | 1 + Content.Shared/Medical/VomitSystem.cs | 24 +- .../EntitySystems/IngestionSystem.cs | 26 +- .../Traits/Assorted/LegsParalyzedSystem.cs | 5 +- .../components/microwave-component.ftl | 2 - Resources/Maps/Salvage/ruin-cargo-salvage.yml | 4 +- Resources/Prototypes/Body/Animals/animal.yml | 55 ++ .../Prototypes/Body/Animals/bloodsucker.yml | 34 + .../Prototypes/Body/Animals/hemocyanin.yml | 14 + .../Prototypes/Body/Animals/mothroach.yml | 14 + Resources/Prototypes/Body/Animals/rat.yml | 22 + .../Prototypes/Body/Animals/ruminant.yml | 30 + Resources/Prototypes/Body/Animals/slimes.yml | 11 + .../Prototypes/Body/Organs/Animal/animal.yml | 162 ---- .../Body/Organs/Animal/bloodsucker.yml | 23 - .../Body/Organs/Animal/ruminant.yml | 21 - .../Prototypes/Body/Organs/Animal/slimes.yml | 67 -- Resources/Prototypes/Body/Organs/arachnid.yml | 169 ---- Resources/Prototypes/Body/Organs/diona.yml | 203 ----- Resources/Prototypes/Body/Organs/dwarf.yml | 38 - Resources/Prototypes/Body/Organs/human.yml | 239 ------ Resources/Prototypes/Body/Organs/moth.yml | 27 - Resources/Prototypes/Body/Organs/rat.yml | 24 - .../Prototypes/Body/Organs/reptilian.yml | 23 - Resources/Prototypes/Body/Organs/slime.yml | 78 -- Resources/Prototypes/Body/Organs/vox.yml | 98 --- .../Prototypes/Body/Organs/vulpkanin.yml | 14 - Resources/Prototypes/Body/Parts/animal.yml | 120 --- Resources/Prototypes/Body/Parts/arachnid.yml | 121 --- Resources/Prototypes/Body/Parts/base.yml | 123 --- Resources/Prototypes/Body/Parts/diona.yml | 97 --- .../Prototypes/Body/Parts/gingerbread.yml | 117 --- Resources/Prototypes/Body/Parts/human.yml | 119 --- Resources/Prototypes/Body/Parts/moth.yml | 120 --- Resources/Prototypes/Body/Parts/rat.yml | 20 - Resources/Prototypes/Body/Parts/reptilian.yml | 119 --- Resources/Prototypes/Body/Parts/silicon.yml | 144 ---- Resources/Prototypes/Body/Parts/skeleton.yml | 196 ----- Resources/Prototypes/Body/Parts/slime.yml | 96 --- Resources/Prototypes/Body/Parts/vox.yml | 111 --- Resources/Prototypes/Body/Parts/vulpkanin.yml | 89 -- .../Body/Prototypes/Animal/animal.yml | 43 - .../Body/Prototypes/Animal/bloodsucker.yml | 21 - .../Body/Prototypes/Animal/hemocyanin.yml | 21 - .../Body/Prototypes/Animal/nymph.yml | 66 -- .../Body/Prototypes/Animal/ruminant.yml | 21 - .../Body/Prototypes/Animal/slimes.yml | 18 - .../Body/Prototypes/Specific/mothroach.yml | 13 - .../Body/Prototypes/Specific/smartcorgi.yml | 28 - .../Prototypes/Body/Prototypes/arachnid.yml | 49 -- Resources/Prototypes/Body/Prototypes/bot.yml | 23 - .../Prototypes/Body/Prototypes/diona.yml | 45 - .../Prototypes/Body/Prototypes/dwarf.yml | 49 -- .../Body/Prototypes/gingerbread.yml | 49 -- .../Prototypes/Body/Prototypes/human.yml | 49 -- Resources/Prototypes/Body/Prototypes/moth.yml | 49 -- .../Prototypes/Body/Prototypes/primate.yml | 24 - Resources/Prototypes/Body/Prototypes/rat.yml | 21 - .../Prototypes/Body/Prototypes/reptilian.yml | 49 -- .../Prototypes/Body/Prototypes/skeleton.yml | 40 - .../Prototypes/Body/Prototypes/slime.yml | 43 - Resources/Prototypes/Body/Prototypes/vox.yml | 49 -- .../Prototypes/Body/Prototypes/vulpkanin.yml | 49 -- .../Prototypes/Body/Species/arachnid.yml | 215 +++++ Resources/Prototypes/Body/Species/diona.yml | 321 +++++++ Resources/Prototypes/Body/Species/dwarf.yml | 98 +++ .../Prototypes/Body/Species/gingerbread.yml | 153 ++++ Resources/Prototypes/Body/Species/human.yml | 162 ++++ Resources/Prototypes/Body/Species/moth.yml | 261 ++++++ .../Prototypes/Body/Species/reptilian.yml | 242 ++++++ .../Mobs => Body}/Species/skeleton.yml | 130 ++- Resources/Prototypes/Body/Species/slime.yml | 232 +++++ .../{Entities/Mobs => Body}/Species/vox.yml | 404 ++++----- .../Prototypes/Body/Species/vulpkanin.yml | 258 ++++++ Resources/Prototypes/Body/base_organs.yml | 322 +++++++ .../Prototypes/Body/organ_categories.yml | 59 ++ .../Prototypes/Body/species_appearance.yml | 87 ++ .../base.yml => Body/species_base.yml} | 154 +--- .../Catalog/Fills/Lockers/heads.yml | 2 +- .../Prototypes/Entities/Mobs/NPCs/animals.yml | 45 +- .../Entities/Mobs/NPCs/argocyte.yml | 4 +- .../Entities/Mobs/NPCs/asteroid.yml | 3 +- .../Prototypes/Entities/Mobs/NPCs/carp.yml | 5 +- .../Entities/Mobs/NPCs/dummy_npcs.yml | 10 - .../Entities/Mobs/NPCs/hellspawn.yml | 3 +- .../Prototypes/Entities/Mobs/NPCs/human.yml | 10 +- .../Entities/Mobs/NPCs/regalrat.yml | 10 +- .../Prototypes/Entities/Mobs/NPCs/silicon.yml | 4 - .../Entities/Mobs/NPCs/simplemob.yml | 3 +- .../Prototypes/Entities/Mobs/NPCs/slimes.yml | 5 +- .../Prototypes/Entities/Mobs/NPCs/space.yml | 10 +- .../Entities/Mobs/Player/arachnid.yml | 13 - .../Prototypes/Entities/Mobs/Player/diona.yml | 23 - .../Prototypes/Entities/Mobs/Player/dwarf.yml | 5 - .../Entities/Mobs/Player/gingerbread.yml | 33 - .../Entities/Mobs/Player/guardian.yml | 6 +- .../Prototypes/Entities/Mobs/Player/human.yml | 6 - .../Prototypes/Entities/Mobs/Player/moth.yml | 5 - .../Entities/Mobs/Player/reptilian.yml | 8 - .../Entities/Mobs/Player/skeleton.yml | 11 - .../Prototypes/Entities/Mobs/Player/slime.yml | 4 - .../Prototypes/Entities/Mobs/Player/vox.yml | 5 - .../Entities/Mobs/Player/vulpkanin.yml | 5 - .../Entities/Mobs/Species/arachnid.yml | 137 --- .../Entities/Mobs/Species/diona.yml | 132 --- .../Entities/Mobs/Species/dwarf.yml | 78 -- .../Entities/Mobs/Species/gingerbread.yml | 74 -- .../Entities/Mobs/Species/human.yml | 43 - .../Prototypes/Entities/Mobs/Species/moth.yml | 240 ------ .../Entities/Mobs/Species/reptilian.yml | 147 ---- .../Entities/Mobs/Species/slime.yml | 135 --- .../Entities/Mobs/Species/vulpkanin.yml | 238 ------ .../Entities/Objects/Misc/botparts.yml | 108 +++ .../Entities/Structures/Furniture/dresser.yml | 2 +- Resources/Prototypes/Reagents/gases.yml | 2 +- .../Graphs/furniture/ritualseat.yml | 2 +- Resources/Prototypes/Species/arachnid.yml | 2 +- Resources/Prototypes/Species/diona.yml | 2 +- Resources/Prototypes/Species/dwarf.yml | 2 +- Resources/Prototypes/Species/gingerbread.yml | 2 +- Resources/Prototypes/Species/human.yml | 2 +- Resources/Prototypes/Species/moth.yml | 2 +- Resources/Prototypes/Species/reptilian.yml | 2 +- Resources/Prototypes/Species/skeleton.yml | 2 +- Resources/Prototypes/Species/slime.yml | 2 +- Resources/Prototypes/Species/vox.yml | 2 +- Resources/Prototypes/Species/vulpkanin.yml | 2 +- Resources/ServerInfo/Guidebook/Mobs/Human.xml | 2 +- Resources/ServerInfo/Guidebook/Mobs/Moth.xml | 2 +- .../ServerInfo/Guidebook/Mobs/Reptilian.xml | 2 +- .../ServerInfo/Guidebook/Mobs/Species.xml | 18 +- .../organs.rsi/{brain-slime.png => brain.png} | Bin .../{lung-l-slime.png => lung-l.png} | Bin .../{lung-r-slime.png => lung-r.png} | Bin .../Mobs/Species/Slime/organs.rsi/meta.json | 6 +- Resources/migration.yml | 14 + 198 files changed, 3859 insertions(+), 8619 deletions(-) delete mode 100644 Content.Client/Body/Systems/BodySystem.cs delete mode 100644 Content.Client/Commands/HideMechanismsCommand.cs delete mode 100644 Content.Client/Commands/ShowMechanismsCommand.cs create mode 100644 Content.IntegrationTests/Tests/Body/GibbingTest.cs create mode 100644 Content.IntegrationTests/Tests/Body/HandOrganTest.cs delete mode 100644 Content.IntegrationTests/Tests/Body/LegTest.cs delete mode 100644 Content.IntegrationTests/Tests/Body/LungTest.cs delete mode 100644 Content.IntegrationTests/Tests/Body/SaveLoadReparentTest.cs create mode 100644 Content.IntegrationTests/Tests/Respirator/LungTest.cs delete mode 100644 Content.Server/Administration/Commands/AddBodyPartCommand.cs delete mode 100644 Content.Server/Administration/Commands/AddMechanismCommand.cs delete mode 100644 Content.Server/Body/Commands/AttachBodyPartCommand.cs delete mode 100644 Content.Server/Body/Commands/DestroyMechanismCommand.cs delete mode 100644 Content.Server/Body/Commands/RemoveHandCommand.cs delete mode 100644 Content.Server/Body/Systems/BodySystem.cs create mode 100644 Content.Shared/Body/BodyComponent.cs create mode 100644 Content.Shared/Body/BodySystem.Compatibility.cs create mode 100644 Content.Shared/Body/BodySystem.Relay.cs create mode 100644 Content.Shared/Body/BodySystem.cs delete mode 100644 Content.Shared/Body/Components/BodyComponent.cs delete mode 100644 Content.Shared/Body/Events/MechanismBodyEvents.cs create mode 100644 Content.Shared/Body/GibbableOrganComponent.cs create mode 100644 Content.Shared/Body/GibbableOrganSystem.cs create mode 100644 Content.Shared/Body/HandOrganComponent.cs create mode 100644 Content.Shared/Body/HandOrganSystem.cs delete mode 100644 Content.Shared/Body/Organ/OrganComponent.cs create mode 100644 Content.Shared/Body/OrganCategoryPrototype.cs create mode 100644 Content.Shared/Body/OrganComponent.cs delete mode 100644 Content.Shared/Body/Part/BodyPartComponent.cs delete mode 100644 Content.Shared/Body/Part/BodyPartEvents.cs delete mode 100644 Content.Shared/Body/Part/BodyPartSymmetry.cs delete mode 100644 Content.Shared/Body/Part/BodyPartType.cs delete mode 100644 Content.Shared/Body/Prototypes/BodyPrototype.cs delete mode 100644 Content.Shared/Body/Prototypes/BodyPrototypeSerializer.cs delete mode 100644 Content.Shared/Body/Systems/SharedBodySystem.Body.cs delete mode 100644 Content.Shared/Body/Systems/SharedBodySystem.Organs.cs delete mode 100644 Content.Shared/Body/Systems/SharedBodySystem.Parts.cs delete mode 100644 Content.Shared/Body/Systems/SharedBodySystem.cs create mode 100644 Resources/Prototypes/Body/Animals/animal.yml create mode 100644 Resources/Prototypes/Body/Animals/bloodsucker.yml create mode 100644 Resources/Prototypes/Body/Animals/hemocyanin.yml create mode 100644 Resources/Prototypes/Body/Animals/mothroach.yml create mode 100644 Resources/Prototypes/Body/Animals/rat.yml create mode 100644 Resources/Prototypes/Body/Animals/ruminant.yml create mode 100644 Resources/Prototypes/Body/Animals/slimes.yml delete mode 100644 Resources/Prototypes/Body/Organs/Animal/animal.yml delete mode 100644 Resources/Prototypes/Body/Organs/Animal/bloodsucker.yml delete mode 100644 Resources/Prototypes/Body/Organs/Animal/ruminant.yml delete mode 100644 Resources/Prototypes/Body/Organs/Animal/slimes.yml delete mode 100644 Resources/Prototypes/Body/Organs/arachnid.yml delete mode 100644 Resources/Prototypes/Body/Organs/diona.yml delete mode 100644 Resources/Prototypes/Body/Organs/dwarf.yml delete mode 100644 Resources/Prototypes/Body/Organs/human.yml delete mode 100644 Resources/Prototypes/Body/Organs/moth.yml delete mode 100644 Resources/Prototypes/Body/Organs/rat.yml delete mode 100644 Resources/Prototypes/Body/Organs/reptilian.yml delete mode 100644 Resources/Prototypes/Body/Organs/slime.yml delete mode 100644 Resources/Prototypes/Body/Organs/vox.yml delete mode 100644 Resources/Prototypes/Body/Organs/vulpkanin.yml delete mode 100644 Resources/Prototypes/Body/Parts/animal.yml delete mode 100644 Resources/Prototypes/Body/Parts/arachnid.yml delete mode 100644 Resources/Prototypes/Body/Parts/base.yml delete mode 100644 Resources/Prototypes/Body/Parts/diona.yml delete mode 100644 Resources/Prototypes/Body/Parts/gingerbread.yml delete mode 100644 Resources/Prototypes/Body/Parts/human.yml delete mode 100644 Resources/Prototypes/Body/Parts/moth.yml delete mode 100644 Resources/Prototypes/Body/Parts/rat.yml delete mode 100644 Resources/Prototypes/Body/Parts/reptilian.yml delete mode 100644 Resources/Prototypes/Body/Parts/silicon.yml delete mode 100644 Resources/Prototypes/Body/Parts/skeleton.yml delete mode 100644 Resources/Prototypes/Body/Parts/slime.yml delete mode 100644 Resources/Prototypes/Body/Parts/vox.yml delete mode 100644 Resources/Prototypes/Body/Parts/vulpkanin.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/Animal/animal.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/Animal/bloodsucker.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/Animal/hemocyanin.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/Animal/nymph.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/Animal/ruminant.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/Animal/slimes.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/Specific/mothroach.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/Specific/smartcorgi.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/arachnid.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/bot.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/diona.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/dwarf.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/gingerbread.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/human.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/moth.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/primate.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/rat.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/reptilian.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/skeleton.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/slime.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/vox.yml delete mode 100644 Resources/Prototypes/Body/Prototypes/vulpkanin.yml create mode 100644 Resources/Prototypes/Body/Species/arachnid.yml create mode 100644 Resources/Prototypes/Body/Species/diona.yml create mode 100644 Resources/Prototypes/Body/Species/dwarf.yml create mode 100644 Resources/Prototypes/Body/Species/gingerbread.yml create mode 100644 Resources/Prototypes/Body/Species/human.yml create mode 100644 Resources/Prototypes/Body/Species/moth.yml create mode 100644 Resources/Prototypes/Body/Species/reptilian.yml rename Resources/Prototypes/{Entities/Mobs => Body}/Species/skeleton.yml (59%) create mode 100644 Resources/Prototypes/Body/Species/slime.yml rename Resources/Prototypes/{Entities/Mobs => Body}/Species/vox.yml (52%) create mode 100644 Resources/Prototypes/Body/Species/vulpkanin.yml create mode 100644 Resources/Prototypes/Body/base_organs.yml create mode 100644 Resources/Prototypes/Body/organ_categories.yml create mode 100644 Resources/Prototypes/Body/species_appearance.yml rename Resources/Prototypes/{Entities/Mobs/Species/base.yml => Body/species_base.yml} (53%) delete mode 100644 Resources/Prototypes/Entities/Mobs/NPCs/dummy_npcs.yml delete mode 100644 Resources/Prototypes/Entities/Mobs/Player/arachnid.yml delete mode 100644 Resources/Prototypes/Entities/Mobs/Player/diona.yml delete mode 100644 Resources/Prototypes/Entities/Mobs/Player/dwarf.yml delete mode 100644 Resources/Prototypes/Entities/Mobs/Player/gingerbread.yml delete mode 100644 Resources/Prototypes/Entities/Mobs/Player/moth.yml delete mode 100644 Resources/Prototypes/Entities/Mobs/Player/reptilian.yml delete mode 100644 Resources/Prototypes/Entities/Mobs/Player/slime.yml delete mode 100644 Resources/Prototypes/Entities/Mobs/Player/vox.yml delete mode 100644 Resources/Prototypes/Entities/Mobs/Player/vulpkanin.yml delete mode 100644 Resources/Prototypes/Entities/Mobs/Species/arachnid.yml delete mode 100644 Resources/Prototypes/Entities/Mobs/Species/diona.yml delete mode 100644 Resources/Prototypes/Entities/Mobs/Species/dwarf.yml delete mode 100644 Resources/Prototypes/Entities/Mobs/Species/gingerbread.yml delete mode 100644 Resources/Prototypes/Entities/Mobs/Species/human.yml delete mode 100644 Resources/Prototypes/Entities/Mobs/Species/moth.yml delete mode 100644 Resources/Prototypes/Entities/Mobs/Species/reptilian.yml delete mode 100644 Resources/Prototypes/Entities/Mobs/Species/slime.yml delete mode 100644 Resources/Prototypes/Entities/Mobs/Species/vulpkanin.yml rename Resources/Textures/Mobs/Species/Slime/organs.rsi/{brain-slime.png => brain.png} (100%) rename Resources/Textures/Mobs/Species/Slime/organs.rsi/{lung-l-slime.png => lung-l.png} (100%) rename Resources/Textures/Mobs/Species/Slime/organs.rsi/{lung-r-slime.png => lung-r.png} (100%) diff --git a/Content.Client/Body/Systems/BodySystem.cs b/Content.Client/Body/Systems/BodySystem.cs deleted file mode 100644 index bab785525b0..00000000000 --- a/Content.Client/Body/Systems/BodySystem.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Content.Shared.Body.Systems; - -namespace Content.Client.Body.Systems; - -public sealed class BodySystem : SharedBodySystem -{ -} diff --git a/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs b/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs index 3392545be8a..4b449b96cbb 100644 --- a/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs +++ b/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs @@ -1,7 +1,7 @@ using System.Linq; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Atmos.Prototypes; -using Content.Shared.Body.Part; +using Content.Shared.Body; using Content.Shared.Chemistry; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components.SolutionManager; @@ -94,7 +94,7 @@ private void OnPrototypesReloaded(PrototypesReloadedEventArgs? ev) continue; //these bloat the hell out of blood/fat - if (entProto.HasComponent()) + if (entProto.HasComponent()) continue; //these feel obvious... diff --git a/Content.Client/Commands/HideMechanismsCommand.cs b/Content.Client/Commands/HideMechanismsCommand.cs deleted file mode 100644 index 00e024a72cb..00000000000 --- a/Content.Client/Commands/HideMechanismsCommand.cs +++ /dev/null @@ -1,36 +0,0 @@ -using Content.Shared.Body.Organ; -using Robust.Client.GameObjects; -using Robust.Shared.Console; -using Robust.Shared.Containers; - -namespace Content.Client.Commands; - -public sealed class HideMechanismsCommand : LocalizedEntityCommands -{ - [Dependency] private readonly SharedContainerSystem _containerSystem = default!; - [Dependency] private readonly SpriteSystem _spriteSystem = default!; - - public override string Command => "hidemechanisms"; - - public override void Execute(IConsoleShell shell, string argStr, string[] args) - { - var query = EntityManager.AllEntityQueryEnumerator(); - - while (query.MoveNext(out var uid, out _, out var sprite)) - { - _spriteSystem.SetContainerOccluded((uid, sprite), false); - - var tempParent = uid; - while (_containerSystem.TryGetContainingContainer((tempParent, null, null), out var container)) - { - if (!container.ShowContents) - { - _spriteSystem.SetContainerOccluded((uid, sprite), true); - break; - } - - tempParent = container.Owner; - } - } - } -} diff --git a/Content.Client/Commands/ShowMechanismsCommand.cs b/Content.Client/Commands/ShowMechanismsCommand.cs deleted file mode 100644 index 091fe05f89e..00000000000 --- a/Content.Client/Commands/ShowMechanismsCommand.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Content.Shared.Body.Organ; -using Robust.Client.GameObjects; -using Robust.Shared.Console; - -namespace Content.Client.Commands; - -public sealed class ShowMechanismsCommand : LocalizedEntityCommands -{ - [Dependency] private readonly SpriteSystem _spriteSystem = default!; - - public override string Command => "showmechanisms"; - - public override void Execute(IConsoleShell shell, string argStr, string[] args) - { - var query = EntityManager.AllEntityQueryEnumerator(); - - while (query.MoveNext(out var uid, out _, out var sprite)) - { - _spriteSystem.SetContainerOccluded((uid, sprite), false); - } - } -} diff --git a/Content.IntegrationTests/Tests/Body/GibbingTest.cs b/Content.IntegrationTests/Tests/Body/GibbingTest.cs new file mode 100644 index 00000000000..a7274879404 --- /dev/null +++ b/Content.IntegrationTests/Tests/Body/GibbingTest.cs @@ -0,0 +1,60 @@ +using Content.Shared.Body; +using Content.Shared.Gibbing; +using Robust.Shared.GameObjects; + +namespace Content.IntegrationTests.Tests.Body; + +[TestFixture] +[TestOf(typeof(GibbableOrganSystem))] +public sealed class GibletTest +{ + [TestPrototypes] + private const string Prototypes = @" +- type: entity + id: GibbingBody + components: + - type: Body + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: Giblet + - id: Giblet + - id: Giblet + +- type: entity + id: Giblet + components: + - type: Organ + - type: GibbableOrgan + - type: Physics +"; + + [Test] + public async Task GibletCountTest() + { + await using var pair = await PoolManager.GetServerClient(); + var server = pair.Server; + + await server.WaitIdleAsync(); + + var entityManager = server.ResolveDependency(); + var mapData = await pair.CreateTestMap(); + + await server.WaitAssertion(() => + { + var body = entityManager.SpawnEntity("GibbingBody", mapData.GridCoords); + var gibbing = entityManager.System(); + var giblets = gibbing.Gib(body); + + Assert.That(giblets.Count, Is.EqualTo(3)); + + foreach (var giblet in giblets) + { + Assert.That(entityManager.HasComponent(giblet), Is.True); + } + }); + + await pair.CleanReturnAsync(); + } +} diff --git a/Content.IntegrationTests/Tests/Body/HandOrganTest.cs b/Content.IntegrationTests/Tests/Body/HandOrganTest.cs new file mode 100644 index 00000000000..560dfbf64a1 --- /dev/null +++ b/Content.IntegrationTests/Tests/Body/HandOrganTest.cs @@ -0,0 +1,87 @@ +using System.Collections.Generic; +using System.Linq; +using Content.Shared.Body; +using Content.Shared.Hands.Components; +using Robust.Shared.Containers; +using Robust.Shared.GameObjects; + +namespace Content.IntegrationTests.Tests.Body; + +[TestFixture] +[TestOf(typeof(HandOrganSystem))] +public sealed class HandOrganTest +{ + [TestPrototypes] + private const string Prototypes = @" +- type: entity + id: TheBody + components: + - type: Body + - type: Hands + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: LeftHand + - id: RightHand + +- type: entity + id: LeftHand + components: + - type: Organ + - type: HandOrgan + handID: left + data: + location: Left + +- type: entity + id: RightHand + components: + - type: Organ + - type: HandOrgan + handID: right + data: + location: Right +"; + [Test] + public async Task HandInsertionAndRemovalTest() + { + await using var pair = await PoolManager.GetServerClient(); + var server = pair.Server; + + await server.WaitIdleAsync(); + + var entityManager = server.ResolveDependency(); + var mapData = await pair.CreateTestMap(); + + await server.WaitAssertion(() => + { + var container = entityManager.System(); + var body = entityManager.SpawnEntity("TheBody", mapData.GridCoords); + var hands = entityManager.GetComponent(body); + + Assert.That(hands.Count, Is.EqualTo(2)); + + var handsContainer = container.GetContainer(body, BodyComponent.ContainerID); + + var expectedCount = 2; + var contained = handsContainer.ContainedEntities.ToList(); + foreach (var hand in contained) + { + expectedCount--; + container.Remove(hand, handsContainer); + Assert.That(hands.Count, Is.EqualTo(expectedCount)); + } + + var protos = new List() { "LeftHand", "RightHand" }; + foreach (var proto in protos) + { + expectedCount++; + entityManager.SpawnInContainerOrDrop(proto, body, BodyComponent.ContainerID); + Assert.That(hands.Count, Is.EqualTo(expectedCount)); + } + }); + + await pair.CleanReturnAsync(); + } +} diff --git a/Content.IntegrationTests/Tests/Body/LegTest.cs b/Content.IntegrationTests/Tests/Body/LegTest.cs deleted file mode 100644 index 7b49bbe84a3..00000000000 --- a/Content.IntegrationTests/Tests/Body/LegTest.cs +++ /dev/null @@ -1,79 +0,0 @@ -using System.Numerics; -using Content.Server.Body.Systems; -using Content.Shared.Body.Components; -using Content.Shared.Body.Part; -using Content.Shared.Rotation; -using Robust.Shared.GameObjects; -using Robust.Shared.Map; - -namespace Content.IntegrationTests.Tests.Body -{ - [TestFixture] - [TestOf(typeof(BodyPartComponent))] - [TestOf(typeof(BodyComponent))] - public sealed class LegTest - { - [TestPrototypes] - private const string Prototypes = @" -- type: entity - name: HumanBodyAndAppearanceDummy - id: HumanBodyAndAppearanceDummy - components: - - type: Appearance - - type: Body - prototype: Human - - type: StandingState -"; - - [Test] - public async Task RemoveLegsFallTest() - { - await using var pair = await PoolManager.GetServerClient(); - var server = pair.Server; - - EntityUid human = default!; - AppearanceComponent appearance = null; - - var entityManager = server.ResolveDependency(); - var mapManager = server.ResolveDependency(); - var appearanceSystem = entityManager.System(); - var xformSystem = entityManager.System(); - - var map = await pair.CreateTestMap(); - - await server.WaitAssertion(() => - { - BodyComponent body = null; - - human = entityManager.SpawnEntity("HumanBodyAndAppearanceDummy", - new MapCoordinates(Vector2.Zero, map.MapId)); - - Assert.Multiple(() => - { - Assert.That(entityManager.TryGetComponent(human, out body)); - Assert.That(entityManager.TryGetComponent(human, out appearance)); - }); - - Assert.That(!appearanceSystem.TryGetData(human, RotationVisuals.RotationState, out RotationState _, appearance)); - - var bodySystem = entityManager.System(); - var legs = bodySystem.GetBodyChildrenOfType(human, BodyPartType.Leg, body); - - foreach (var leg in legs) - { - xformSystem.DetachEntity(leg.Id, entityManager.GetComponent(leg.Id)); - } - }); - - await server.WaitAssertion(() => - { -#pragma warning disable NUnit2045 - // Interdependent assertions. - Assert.That(appearanceSystem.TryGetData(human, RotationVisuals.RotationState, out RotationState state, appearance)); - Assert.That(state, Is.EqualTo(RotationState.Horizontal)); -#pragma warning restore NUnit2045 - }); - await pair.CleanReturnAsync(); - } - } -} diff --git a/Content.IntegrationTests/Tests/Body/LungTest.cs b/Content.IntegrationTests/Tests/Body/LungTest.cs deleted file mode 100644 index 584eb58595b..00000000000 --- a/Content.IntegrationTests/Tests/Body/LungTest.cs +++ /dev/null @@ -1,193 +0,0 @@ -using Content.Server.Atmos.Components; -using Content.Server.Atmos.EntitySystems; -using Content.Server.Body.Components; -using Content.Shared.Body.Systems; -using Content.Shared.Body.Components; -using Robust.Server.GameObjects; -using Robust.Shared; -using Robust.Shared.Configuration; -using Robust.Shared.GameObjects; -using Robust.Shared.Map; -using Robust.Shared.Map.Components; -using System.Linq; -using System.Numerics; -using Robust.Shared.EntitySerialization.Systems; -using Robust.Shared.Utility; - -namespace Content.IntegrationTests.Tests.Body -{ - [TestFixture] - [TestOf(typeof(LungSystem))] - public sealed class LungTest - { - [TestPrototypes] - private const string Prototypes = @" -- type: entity - name: HumanLungDummy - id: HumanLungDummy - components: - - type: SolutionContainerManager - - type: Body - prototype: Human - - type: MobState - allowedStates: - - Alive - - type: Damageable - - type: ThermalRegulator - metabolismHeat: 5000 - radiatedHeat: 400 - implicitHeatRegulation: 5000 - sweatHeatRegulation: 5000 - shiveringHeatRegulation: 5000 - normalBodyTemperature: 310.15 - thermalRegulationTemperatureThreshold: 25 - - type: Respirator - damage: - types: - Asphyxiation: 1.5 - damageRecovery: - types: - Asphyxiation: -1.5 -"; - - [Test] - public async Task AirConsistencyTest() - { - // --- Setup - await using var pair = await PoolManager.GetServerClient(); - var server = pair.Server; - - await server.WaitIdleAsync(); - - var entityManager = server.ResolveDependency(); - var mapLoader = entityManager.System(); - var mapSys = entityManager.System(); - - EntityUid? grid = null; - BodyComponent body = default; - RespiratorComponent resp = default; - EntityUid human = default; - GridAtmosphereComponent relevantAtmos = default; - var startingMoles = 0.0f; - - var testMapName = new ResPath("Maps/Test/Breathing/3by3-20oxy-80nit.yml"); - - await server.WaitPost(() => - { - mapSys.CreateMap(out var mapId); - Assert.That(mapLoader.TryLoadGrid(mapId, testMapName, out var gridEnt)); - grid = gridEnt!.Value.Owner; - }); - - Assert.That(grid, Is.Not.Null, $"Test blueprint {testMapName} not found."); - - float GetMapMoles() - { - var totalMapMoles = 0.0f; - foreach (var tile in relevantAtmos.Tiles.Values) - { - totalMapMoles += tile.Air?.TotalMoles ?? 0.0f; - } - - return totalMapMoles; - } - - await server.WaitAssertion(() => - { - var center = new Vector2(0.5f, 0.5f); - var coordinates = new EntityCoordinates(grid.Value, center); - human = entityManager.SpawnEntity("HumanLungDummy", coordinates); - relevantAtmos = entityManager.GetComponent(grid.Value); - startingMoles = 100f; // Hardcoded because GetMapMoles returns 900 here for some reason. - -#pragma warning disable NUnit2045 - Assert.That(entityManager.TryGetComponent(human, out body), Is.True); - Assert.That(entityManager.TryGetComponent(human, out resp), Is.True); -#pragma warning restore NUnit2045 - }); - - // --- End setup - - var inhaleCycles = 100; - for (var i = 0; i < inhaleCycles; i++) - { - // Breathe in - await PoolManager.WaitUntil(server, () => resp.Status == RespiratorStatus.Exhaling); - Assert.That( - GetMapMoles(), Is.LessThan(startingMoles), - "Did not inhale in any gas" - ); - - // Breathe out - await PoolManager.WaitUntil(server, () => resp.Status == RespiratorStatus.Inhaling); - Assert.That( - GetMapMoles(), Is.EqualTo(startingMoles).Within(0.0002), - "Did not exhale as much gas as was inhaled" - ); - } - - await pair.CleanReturnAsync(); - } - - [Test] - public async Task NoSuffocationTest() - { - await using var pair = await PoolManager.GetServerClient(); - var server = pair.Server; - - var mapManager = server.ResolveDependency(); - var entityManager = server.ResolveDependency(); - var cfg = server.ResolveDependency(); - var mapLoader = entityManager.System(); - var mapSys = entityManager.System(); - - EntityUid? grid = null; - RespiratorComponent respirator = null; - EntityUid human = default; - - var testMapName = new ResPath("Maps/Test/Breathing/3by3-20oxy-80nit.yml"); - - await server.WaitPost(() => - { - mapSys.CreateMap(out var mapId); - Assert.That(mapLoader.TryLoadGrid(mapId, testMapName, out var gridEnt)); - grid = gridEnt!.Value.Owner; - }); - - Assert.That(grid, Is.Not.Null, $"Test blueprint {testMapName} not found."); - - await server.WaitAssertion(() => - { - var center = new Vector2(0.5f, 0.5f); - - var coordinates = new EntityCoordinates(grid.Value, center); - human = entityManager.SpawnEntity("HumanLungDummy", coordinates); - - var mixture = entityManager.System().GetContainingMixture(human); -#pragma warning disable NUnit2045 - Assert.That(mixture.TotalMoles, Is.GreaterThan(0)); - Assert.That(entityManager.HasComponent(human), Is.True); - Assert.That(entityManager.TryGetComponent(human, out respirator), Is.True); - Assert.That(respirator.SuffocationCycles, Is.LessThanOrEqualTo(respirator.SuffocationCycleThreshold)); -#pragma warning restore NUnit2045 - }); - - var increment = 10; - - // 20 seconds - var total = 20 * cfg.GetCVar(CVars.NetTickrate); - - for (var tick = 0; tick < total; tick += increment) - { - await server.WaitRunTicks(increment); - await server.WaitAssertion(() => - { - Assert.That(respirator.SuffocationCycles, Is.LessThanOrEqualTo(respirator.SuffocationCycleThreshold), - $"Entity {entityManager.GetComponent(human).EntityName} is suffocating on tick {tick}"); - }); - } - - await pair.CleanReturnAsync(); - } - } -} diff --git a/Content.IntegrationTests/Tests/Body/SaveLoadReparentTest.cs b/Content.IntegrationTests/Tests/Body/SaveLoadReparentTest.cs deleted file mode 100644 index 67163d07961..00000000000 --- a/Content.IntegrationTests/Tests/Body/SaveLoadReparentTest.cs +++ /dev/null @@ -1,182 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using Content.Shared.Body.Components; -using Content.Shared.Body.Systems; -using Robust.Shared.Containers; -using Robust.Shared.EntitySerialization.Systems; -using Robust.Shared.GameObjects; -using Robust.Shared.Map; -using Robust.Shared.Utility; - -namespace Content.IntegrationTests.Tests.Body; - -[TestFixture] -public sealed class SaveLoadReparentTest -{ - [TestPrototypes] - private const string Prototypes = @" -- type: entity - name: HumanBodyDummy - id: HumanBodyDummy - components: - - type: Body - prototype: Human -"; - - [Test] - public async Task Test() - { - await using var pair = await PoolManager.GetServerClient(); - var server = pair.Server; - - var entities = server.ResolveDependency(); - var maps = server.ResolveDependency(); - var mapLoader = entities.System(); - var bodySystem = entities.System(); - var containerSystem = entities.System(); - var mapSys = entities.System(); - - await server.WaitAssertion(() => - { - mapSys.CreateMap(out var mapId); - maps.CreateGrid(mapId); - var human = entities.SpawnEntity("HumanBodyDummy", new MapCoordinates(0, 0, mapId)); - - Assert.That(entities.HasComponent(human), Is.True); - - var parts = bodySystem.GetBodyChildren(human).Skip(1).ToArray(); - var organs = bodySystem.GetBodyOrgans(human).ToArray(); - - Assert.Multiple(() => - { - Assert.That(parts, Is.Not.Empty); - Assert.That(organs, Is.Not.Empty); - }); - - foreach (var (id, component) in parts) - { - Assert.Multiple(() => - { - Assert.That(component.Body, Is.EqualTo(human)); - Assert.That(component.Body, Is.Not.Null); - var parent = bodySystem.GetParentPartOrNull(id); - Assert.That(parent, Is.Not.EqualTo(default(EntityUid))); - if (!bodySystem.IsPartRoot(component.Body.Value, id, null, component)) - { - Assert.That(parent, Is.Not.Null); - } - else - { - Assert.That(parent, Is.Null); - } - }); - - foreach (var (slotId, slot) in component.Children) - { - Assert.Multiple(() => - { - Assert.That(slot.Id, Is.EqualTo(slotId)); - var container = - containerSystem.GetContainer(id, SharedBodySystem.GetPartSlotContainerId(slotId)); - Assert.That(container.ContainedEntities, Is.Not.Empty); - }); - } - } - - foreach (var (id, component) in organs) - { - var parent = bodySystem.GetParentPartOrNull(id); - - Assert.Multiple(() => - { - Assert.That(component.Body, Is.EqualTo(human)); - Assert.That(parent, Is.Not.Null); - Assert.That(parent.Value, Is.Not.EqualTo(default(EntityUid))); - }); - } - - // Converts an entity query enumerator to an enumerable. - static IEnumerable<(EntityUid Uid, TComp Comp)> EnumerateQueryEnumerator(EntityQueryEnumerator query) - where TComp : Component - { - while (query.MoveNext(out var uid, out var comp)) - yield return (uid, comp); - } - - Assert.That( - EnumerateQueryEnumerator( - entities.EntityQueryEnumerator() - ).Where((e) => - entities.GetComponent(e.Uid).EntityPrototype!.Name == "HumanBodyDummy" - ), - Is.Not.Empty - ); - - var mapPath = new ResPath($"/{nameof(SaveLoadReparentTest)}{nameof(Test)}map.yml"); - - Assert.That(mapLoader.TrySaveMap(mapId, mapPath)); - mapSys.DeleteMap(mapId); - - Assert.That(mapLoader.TryLoadMap(mapPath, out var map, out _), Is.True); - - var query = EnumerateQueryEnumerator( - entities.EntityQueryEnumerator() - ).Where((e) => - entities.GetComponent(e.Uid).EntityPrototype!.Name == "HumanBodyDummy" - ).ToArray(); - - Assert.That(query, Is.Not.Empty); - foreach (var (uid, body) in query) - { - human = uid; - parts = bodySystem.GetBodyChildren(human).Skip(1).ToArray(); - organs = bodySystem.GetBodyOrgans(human).ToArray(); - - Assert.Multiple(() => - { - Assert.That(parts, Is.Not.Empty); - Assert.That(organs, Is.Not.Empty); - }); - - foreach (var (id, component) in parts) - { - var parent = bodySystem.GetParentPartOrNull(id); - - Assert.Multiple(() => - { - Assert.That(component.Body, Is.EqualTo(human)); - Assert.That(parent, Is.Not.Null); - Assert.That(parent.Value, Is.Not.EqualTo(default(EntityUid))); - }); - - foreach (var (slotId, slot) in component.Children) - { - Assert.Multiple(() => - { - Assert.That(slot.Id, Is.EqualTo(slotId)); - var container = - containerSystem.GetContainer(id, SharedBodySystem.GetPartSlotContainerId(slotId)); - Assert.That(container.ContainedEntities, Is.Not.Empty); - }); - } - } - - foreach (var (id, component) in organs) - { - var parent = bodySystem.GetParentPartOrNull(id); - - Assert.Multiple(() => - { - Assert.That(component.Body, Is.EqualTo(human)); - Assert.That(parent, Is.Not.Null); - Assert.That(parent.Value, Is.Not.EqualTo(default(EntityUid))); - }); - } - - entities.DeleteEntity(map); - } - }); - - await pair.CleanReturnAsync(); - } -} diff --git a/Content.IntegrationTests/Tests/Buckle/BuckleTest.cs b/Content.IntegrationTests/Tests/Buckle/BuckleTest.cs index bbc8b67c53b..b42f42922a4 100644 --- a/Content.IntegrationTests/Tests/Buckle/BuckleTest.cs +++ b/Content.IntegrationTests/Tests/Buckle/BuckleTest.cs @@ -1,9 +1,6 @@ using System.Numerics; -using Content.Server.Body.Systems; using Content.Shared.Buckle; using Content.Shared.ActionBlocker; -using Content.Shared.Body.Components; -using Content.Shared.Body.Part; using Content.Shared.Buckle.Components; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; @@ -247,7 +244,6 @@ public async Task BuckledDyingDropItemsTest() EntityUid human = default; BuckleComponent buckle = null; HandsComponent hands = null; - BodyComponent body = null; await server.WaitIdleAsync(); @@ -267,7 +263,6 @@ await server.WaitAssertion(() => Assert.That(entityManager.TryGetComponent(human, out buckle)); Assert.That(entityManager.HasComponent(chair)); Assert.That(entityManager.TryGetComponent(human, out hands)); - Assert.That(entityManager.TryGetComponent(human, out body)); }); // Buckle @@ -289,29 +284,6 @@ await server.WaitAssertion(() => await server.WaitRunTicks(10); - await server.WaitAssertion(() => - { - // Still buckled - Assert.That(buckle.Buckled); - - // With items in all hands - foreach (var hand in hands.Hands.Keys) - { - Assert.That(handsSys.GetHeldItem((human, hands), hand), Is.Not.Null); - } - - var bodySystem = entityManager.System(); - var legs = bodySystem.GetBodyChildrenOfType(human, BodyPartType.Leg, body); - - // Break our guy's kneecaps - foreach (var leg in legs) - { - entityManager.DeleteEntity(leg.Id); - } - }); - - await server.WaitRunTicks(10); - await server.WaitAssertion(() => { // Still buckled diff --git a/Content.IntegrationTests/Tests/Respirator/LungTest.cs b/Content.IntegrationTests/Tests/Respirator/LungTest.cs new file mode 100644 index 00000000000..a4ad733348e --- /dev/null +++ b/Content.IntegrationTests/Tests/Respirator/LungTest.cs @@ -0,0 +1,189 @@ +using Content.Server.Atmos.Components; +using Content.Server.Atmos.EntitySystems; +using Content.Server.Body.Components; +using Content.Shared.Body.Systems; +using Robust.Shared; +using Robust.Shared.Configuration; +using Robust.Shared.GameObjects; +using Robust.Shared.Map; +using System.Numerics; +using Robust.Shared.EntitySerialization.Systems; +using Robust.Shared.Utility; + +namespace Content.IntegrationTests.Tests.Respirator; + +[TestFixture] +[TestOf(typeof(LungSystem))] +public sealed class LungTest +{ + [TestPrototypes] + private const string Prototypes = @" +- type: entity + name: HumanLungDummy + id: HumanLungDummy + components: + - type: SolutionContainerManager + - type: Body + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganHumanLungs + - type: MobState + allowedStates: + - Alive + - type: Damageable + - type: ThermalRegulator + metabolismHeat: 5000 + radiatedHeat: 400 + implicitHeatRegulation: 5000 + sweatHeatRegulation: 5000 + shiveringHeatRegulation: 5000 + normalBodyTemperature: 310.15 + thermalRegulationTemperatureThreshold: 25 + - type: Respirator + damage: + types: + Asphyxiation: 1.5 + damageRecovery: + types: + Asphyxiation: -1.5 +"; + + [Test] + public async Task AirConsistencyTest() + { + // --- Setup + await using var pair = await PoolManager.GetServerClient(); + var server = pair.Server; + + await server.WaitIdleAsync(); + + var entityManager = server.ResolveDependency(); + var mapLoader = entityManager.System(); + var mapSys = entityManager.System(); + + EntityUid? grid = null; + RespiratorComponent resp = default; + EntityUid human = default; + GridAtmosphereComponent relevantAtmos = default; + var startingMoles = 0.0f; + + var testMapName = new ResPath("Maps/Test/Breathing/3by3-20oxy-80nit.yml"); + + await server.WaitPost(() => + { + mapSys.CreateMap(out var mapId); + Assert.That(mapLoader.TryLoadGrid(mapId, testMapName, out var gridEnt)); + grid = gridEnt!.Value.Owner; + }); + + Assert.That(grid, Is.Not.Null, $"Test blueprint {testMapName} not found."); + + float GetMapMoles() + { + var totalMapMoles = 0.0f; + foreach (var tile in relevantAtmos.Tiles.Values) + { + totalMapMoles += tile.Air?.TotalMoles ?? 0.0f; + } + + return totalMapMoles; + } + + await server.WaitAssertion(() => + { + var center = new Vector2(0.5f, 0.5f); + var coordinates = new EntityCoordinates(grid.Value, center); + human = entityManager.SpawnEntity("HumanLungDummy", coordinates); + relevantAtmos = entityManager.GetComponent(grid.Value); + startingMoles = 100f; // Hardcoded because GetMapMoles returns 900 here for some reason. + +#pragma warning disable NUnit2045 + Assert.That(entityManager.TryGetComponent(human, out resp), Is.True); +#pragma warning restore NUnit2045 + }); + + // --- End setup + + var inhaleCycles = 100; + for (var i = 0; i < inhaleCycles; i++) + { + // Breathe in + await PoolManager.WaitUntil(server, () => resp.Status == RespiratorStatus.Exhaling); + Assert.That( + GetMapMoles(), Is.LessThan(startingMoles), + "Did not inhale in any gas" + ); + + // Breathe out + await PoolManager.WaitUntil(server, () => resp.Status == RespiratorStatus.Inhaling); + Assert.That( + GetMapMoles(), Is.EqualTo(startingMoles).Within(0.0002), + "Did not exhale as much gas as was inhaled" + ); + } + + await pair.CleanReturnAsync(); + } + + [Test] + public async Task NoSuffocationTest() + { + await using var pair = await PoolManager.GetServerClient(); + var server = pair.Server; + + var mapManager = server.ResolveDependency(); + var entityManager = server.ResolveDependency(); + var cfg = server.ResolveDependency(); + var mapLoader = entityManager.System(); + var mapSys = entityManager.System(); + + EntityUid? grid = null; + RespiratorComponent respirator = null; + EntityUid human = default; + + var testMapName = new ResPath("Maps/Test/Breathing/3by3-20oxy-80nit.yml"); + + await server.WaitPost(() => + { + mapSys.CreateMap(out var mapId); + Assert.That(mapLoader.TryLoadGrid(mapId, testMapName, out var gridEnt)); + grid = gridEnt!.Value.Owner; + }); + + Assert.That(grid, Is.Not.Null, $"Test blueprint {testMapName} not found."); + + await server.WaitAssertion(() => + { + var center = new Vector2(0.5f, 0.5f); + + var coordinates = new EntityCoordinates(grid.Value, center); + human = entityManager.SpawnEntity("HumanLungDummy", coordinates); + + var mixture = entityManager.System().GetContainingMixture(human); +#pragma warning disable NUnit2045 + Assert.That(mixture.TotalMoles, Is.GreaterThan(0)); + Assert.That(entityManager.TryGetComponent(human, out respirator), Is.True); + Assert.That(respirator.SuffocationCycles, Is.LessThanOrEqualTo(respirator.SuffocationCycleThreshold)); +#pragma warning restore NUnit2045 + }); + + var increment = 10; + + // 20 seconds + var total = 20 * cfg.GetCVar(CVars.NetTickrate); + + for (var tick = 0; tick < total; tick += increment) + { + await server.WaitRunTicks(increment); + await server.WaitAssertion(() => + { + Assert.That(respirator.SuffocationCycles, Is.LessThanOrEqualTo(respirator.SuffocationCycleThreshold), + $"Entity {entityManager.GetComponent(human).EntityName} is suffocating on tick {tick}"); + }); + } + + await pair.CleanReturnAsync(); + } +} diff --git a/Content.Server/Administration/Commands/AddBodyPartCommand.cs b/Content.Server/Administration/Commands/AddBodyPartCommand.cs deleted file mode 100644 index a28fa93ad04..00000000000 --- a/Content.Server/Administration/Commands/AddBodyPartCommand.cs +++ /dev/null @@ -1,43 +0,0 @@ -using Content.Server.Body.Systems; -using Content.Shared.Administration; -using Content.Shared.Body.Part; -using Robust.Shared.Console; - -namespace Content.Server.Administration.Commands; - -[AdminCommand(AdminFlags.Admin)] -public sealed class AddBodyPartCommand : LocalizedEntityCommands -{ - [Dependency] private readonly BodySystem _bodySystem = default!; - - public override string Command => "addbodypart"; - - public override void Execute(IConsoleShell shell, string argStr, string[] args) - { - if (args.Length != 4) - { - shell.WriteError(Loc.GetString("shell-wrong-arguments-number")); - return; - } - - if (!NetEntity.TryParse(args[0], out var childNetId) || !EntityManager.TryGetEntity(childNetId, out var childId)) - { - shell.WriteError(Loc.GetString("shell-invalid-entity-uid", ("uid", args[0]))); - return; - } - - if (!NetEntity.TryParse(args[1], out var parentNetId) || !EntityManager.TryGetEntity(parentNetId, out var parentId)) - { - shell.WriteError(Loc.GetString("shell-invalid-entity-uid", ("uid", args[1]))); - return; - } - - if (Enum.TryParse(args[3], out var partType) && - _bodySystem.TryCreatePartSlotAndAttach(parentId.Value, args[2], childId.Value, partType)) - { - shell.WriteLine($@"Added {childId} to {parentId}."); - } - else - shell.WriteError($@"Could not add {childId} to {parentId}."); - } -} diff --git a/Content.Server/Administration/Commands/AddMechanismCommand.cs b/Content.Server/Administration/Commands/AddMechanismCommand.cs deleted file mode 100644 index e62ddea47ba..00000000000 --- a/Content.Server/Administration/Commands/AddMechanismCommand.cs +++ /dev/null @@ -1,48 +0,0 @@ -using Content.Server.Body.Systems; -using Content.Shared.Administration; -using Robust.Shared.Console; - -namespace Content.Server.Administration.Commands -{ - [AdminCommand(AdminFlags.Admin)] - public sealed class AddMechanismCommand : IConsoleCommand - { - [Dependency] private readonly IEntityManager _entManager = default!; - - public string Command => "addmechanism"; - public string Description => "Adds a given entity to a containing body."; - public string Help => "Usage: addmechanism "; - - public void Execute(IConsoleShell shell, string argStr, string[] args) - { - if (args.Length != 2) - { - shell.WriteError(Loc.GetString("shell-wrong-arguments-number")); - return; - } - - if (!NetEntity.TryParse(args[0], out var organIdNet) || !_entManager.TryGetEntity(organIdNet, out var organId)) - { - shell.WriteError(Loc.GetString("shell-entity-uid-must-be-number")); - return; - } - - if (!NetEntity.TryParse(args[1], out var partIdNet) || !_entManager.TryGetEntity(partIdNet, out var partId)) - { - shell.WriteError(Loc.GetString("shell-entity-uid-must-be-number")); - return; - } - - var bodySystem = _entManager.System(); - - if (bodySystem.AddOrganToFirstValidSlot(partId.Value, organId.Value)) - { - shell.WriteLine($@"Added {organId} to {partId}."); - } - else - { - shell.WriteError($@"Could not add {organId} to {partId}."); - } - } - } -} diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs index bae7776ef06..dab886f8105 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs @@ -1,3 +1,4 @@ +using System.Linq; using System.Numerics; using System.Threading; using Content.Server.Atmos.EntitySystems; @@ -20,8 +21,8 @@ using Content.Shared.Administration.Components; using Content.Shared.Administration.Systems; using Content.Shared.Atmos.Components; +using Content.Shared.Body; using Content.Shared.Body.Components; -using Content.Shared.Body.Part; using Content.Shared.Clothing.Components; using Content.Shared.Clumsy; using Content.Shared.Cluwne; @@ -307,7 +308,6 @@ private void AddSmiteVerbs(GetVerbsEvent args) args.Verbs.Add(bloodRemoval); } - // bobby... if (TryComp(args.Target, out var body)) { var vomitOrgansName = Loc.GetString("admin-smite-vomit-organs-name").ToLowerInvariant(); @@ -319,14 +319,14 @@ private void AddSmiteVerbs(GetVerbsEvent args) Act = () => { _vomitSystem.Vomit(args.Target, -1000, -1000); // You feel hollow! - var organs = _bodySystem.GetBodyOrganEntityComps((args.Target, body)); + _bodySystem.TryGetOrgansWithComponent((args.Target, body), out var organs); var baseXform = Transform(args.Target); foreach (var organ in organs) { if (HasComp(organ.Owner) || HasComp(organ.Owner)) continue; - _transformSystem.PlaceNextTo((organ.Owner, organ.Comp1), (args.Target, baseXform)); + _transformSystem.PlaceNextTo((organ.Owner, organ.Comp), (args.Target, baseXform)); } _popupSystem.PopupEntity(Loc.GetString("admin-smite-vomit-organs-self"), args.Target, @@ -348,9 +348,11 @@ private void AddSmiteVerbs(GetVerbsEvent args) Act = () => { var baseXform = Transform(args.Target); - foreach (var part in _bodySystem.GetBodyChildrenOfType(args.Target, BodyPartType.Hand)) + var parts = new HashSet>() { "HandRight", "HandLeft" }; + _bodySystem.TryGetOrgansWithComponent((args.Target, body), out var organs); + foreach (var organ in organs.Where(it => it.Comp.Category is { } category && parts.Contains(category))) { - _transformSystem.AttachToGridOrMap(part.Id); + _transformSystem.AttachToGridOrMap(organ); } _popupSystem.PopupEntity(Loc.GetString("admin-smite-remove-hands-self"), args.Target, args.Target, PopupType.LargeCaution); @@ -371,9 +373,11 @@ private void AddSmiteVerbs(GetVerbsEvent args) Act = () => { var baseXform = Transform(args.Target); - foreach (var part in _bodySystem.GetBodyChildrenOfType(args.Target, BodyPartType.Hand, body)) + var parts = new HashSet>() { "HandRight", "HandLeft" }; + _bodySystem.TryGetOrgansWithComponent((args.Target, body), out var organs); + foreach (var organ in organs.Where(it => it.Comp.Category is { } category && parts.Contains(category))) { - _transformSystem.AttachToGridOrMap(part.Id); + _transformSystem.AttachToGridOrMap(organ); break; } _popupSystem.PopupEntity(Loc.GetString("admin-smite-remove-hands-self"), args.Target, @@ -394,7 +398,8 @@ private void AddSmiteVerbs(GetVerbsEvent args) Icon = new SpriteSpecifier.Rsi(new("/Textures/Mobs/Species/Human/organs.rsi"), "stomach"), Act = () => { - foreach (var entity in _bodySystem.GetBodyOrganEntityComps((args.Target, body))) + _bodySystem.TryGetOrgansWithComponent((args.Target, body), out var organs); + foreach (var entity in organs) { QueueDel(entity.Owner); } @@ -415,7 +420,8 @@ private void AddSmiteVerbs(GetVerbsEvent args) Icon = new SpriteSpecifier.Rsi(new("/Textures/Mobs/Species/Human/organs.rsi"), "lung-r"), Act = () => { - foreach (var entity in _bodySystem.GetBodyOrganEntityComps((args.Target, body))) + _bodySystem.TryGetOrgansWithComponent((args.Target, body), out var organs); + foreach (var entity in organs) { QueueDel(entity.Owner); } diff --git a/Content.Server/Anomaly/Effects/InnerBodyAnomalySystem.cs b/Content.Server/Anomaly/Effects/InnerBodyAnomalySystem.cs index 9c671d4db23..3cfb9c70253 100644 --- a/Content.Server/Anomaly/Effects/InnerBodyAnomalySystem.cs +++ b/Content.Server/Anomaly/Effects/InnerBodyAnomalySystem.cs @@ -132,9 +132,6 @@ private void OnAnomalyPulse(Entity ent, ref AnomalyPu private void OnAnomalySupercritical(Entity ent, ref AnomalySupercriticalEvent args) { - if (!TryComp(ent, out var body)) - return; - _gibbing.Gib(ent.Owner); } diff --git a/Content.Server/Body/Commands/AddHandCommand.cs b/Content.Server/Body/Commands/AddHandCommand.cs index 4d2805333a7..5d02d19155e 100644 --- a/Content.Server/Body/Commands/AddHandCommand.cs +++ b/Content.Server/Body/Commands/AddHandCommand.cs @@ -1,10 +1,6 @@ -using System.Linq; using Content.Server.Administration; -using Content.Server.Body.Systems; using Content.Server.Hands.Systems; using Content.Shared.Administration; -using Content.Shared.Body.Components; -using Content.Shared.Body.Part; using Content.Shared.Hands.Components; using Robust.Shared.Console; using Robust.Shared.Prototypes; @@ -17,19 +13,17 @@ sealed class AddHandCommand : IConsoleCommand [Dependency] private readonly IEntityManager _entManager = default!; [Dependency] private readonly IPrototypeManager _protoManager = default!; - private static readonly EntProtoId DefaultHandPrototype = "LeftHandHuman"; private static int _handIdAccumulator; public string Command => "addhand"; public string Description => "Adds a hand to your entity."; - public string Help => $"Usage: {Command} / {Command} / {Command} / {Command}"; + public string Help => $"Usage: {Command} "; public void Execute(IConsoleShell shell, string argStr, string[] args) { var player = shell.Player; EntityUid entity; - EntityUid hand; switch (args.Length) { @@ -47,7 +41,6 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) } entity = player.AttachedEntity.Value; - hand = _entManager.SpawnEntity(DefaultHandPrototype, _entManager.GetComponent(entity).Coordinates); break; case 1: { @@ -60,7 +53,6 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) } entity = uid.Value; - hand = _entManager.SpawnEntity(DefaultHandPrototype, _entManager.GetComponent(entity).Coordinates); } else { @@ -77,35 +69,8 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) } entity = player.AttachedEntity.Value; - hand = _entManager.SpawnEntity(args[0], _entManager.GetComponent(entity).Coordinates); } - break; - } - case 2: - { - if (!NetEntity.TryParse(args[0], out var netEnt) || !_entManager.TryGetEntity(netEnt, out var uid)) - { - shell.WriteLine($"{args[0]} is not a valid entity uid."); - return; - } - - if (!_entManager.EntityExists(uid)) - { - shell.WriteLine($"No entity exists with uid {uid}."); - return; - } - - entity = uid.Value; - - if (!_protoManager.HasIndex(args[1])) - { - shell.WriteLine($"No hand entity exists with id {args[1]}."); - return; - } - - hand = _entManager.SpawnEntity(args[1], _entManager.GetComponent(entity).Coordinates); - break; } default: @@ -113,41 +78,7 @@ public void Execute(IConsoleShell shell, string argStr, string[] args) return; } - if (!_entManager.TryGetComponent(entity, out BodyComponent? body) || body.RootContainer.ContainedEntity == null) - { - var location = _entManager.GetComponentOrNull(hand)?.Symmetry switch - { - BodyPartSymmetry.None => HandLocation.Middle, - BodyPartSymmetry.Left => HandLocation.Left, - BodyPartSymmetry.Right => HandLocation.Right, - _ => HandLocation.Right - }; - _entManager.DeleteEntity(hand); - - // You have no body and you must scream. - _entManager.System().AddHand(entity, $"{hand}-cmd-{_handIdAccumulator++}", location); - return; - } - - if (!_entManager.TryGetComponent(hand, out BodyPartComponent? part)) - { - shell.WriteLine($"Hand entity {hand} does not have a {nameof(BodyPartComponent)} component."); - return; - } - - var bodySystem = _entManager.System(); - - var attachAt = bodySystem.GetBodyChildrenOfType(entity, BodyPartType.Arm, body).FirstOrDefault(); - if (attachAt == default) - attachAt = bodySystem.GetBodyChildren(entity, body).First(); - - var slotId = part.GetHashCode().ToString(); - - if (!bodySystem.TryCreatePartSlotAndAttach(attachAt.Id, slotId, hand, BodyPartType.Hand, attachAt.Component, part)) - { - shell.WriteError($"Couldn't create a slot with id {slotId} on entity {_entManager.ToPrettyString(entity)}"); - return; - } + _entManager.System().AddHand(entity, $"cmd-{_handIdAccumulator++}", HandLocation.Middle); shell.WriteLine($"Added hand to entity {_entManager.GetComponent(entity).EntityName}"); } diff --git a/Content.Server/Body/Commands/AttachBodyPartCommand.cs b/Content.Server/Body/Commands/AttachBodyPartCommand.cs deleted file mode 100644 index 9172e9e87ec..00000000000 --- a/Content.Server/Body/Commands/AttachBodyPartCommand.cs +++ /dev/null @@ -1,123 +0,0 @@ -using Content.Server.Administration; -using Content.Server.Body.Systems; -using Content.Shared.Administration; -using Content.Shared.Body.Components; -using Content.Shared.Body.Part; -using Robust.Shared.Console; - -namespace Content.Server.Body.Commands -{ - [AdminCommand(AdminFlags.Fun)] - public sealed class AttachBodyPartCommand : IConsoleCommand - { - [Dependency] private readonly IEntityManager _entManager = default!; - - public string Command => "attachbodypart"; - public string Description => "Attaches a body part to you or someone else."; - public string Help => $"{Command} / {Command} "; - - public void Execute(IConsoleShell shell, string argStr, string[] args) - { - var player = shell.Player; - - EntityUid bodyId; - EntityUid? partUid; - - switch (args.Length) - { - case 1: - if (player == null) - { - shell.WriteLine($"You need to specify an entity to attach the part to if you aren't a player.\n{Help}"); - return; - } - - if (player.AttachedEntity == null) - { - shell.WriteLine($"You need to specify an entity to attach the part to if you aren't attached to an entity.\n{Help}"); - return; - } - - if (!NetEntity.TryParse(args[0], out var partNet) || !_entManager.TryGetEntity(partNet, out partUid)) - { - shell.WriteLine($"{args[0]} is not a valid entity uid."); - return; - } - - bodyId = player.AttachedEntity.Value; - - break; - case 2: - if (!NetEntity.TryParse(args[0], out var entityNet) || !_entManager.TryGetEntity(entityNet, out var entityUid)) - { - shell.WriteLine($"{args[0]} is not a valid entity uid."); - return; - } - - if (!NetEntity.TryParse(args[1], out partNet) || !_entManager.TryGetEntity(partNet, out partUid)) - { - shell.WriteLine($"{args[1]} is not a valid entity uid."); - return; - } - - if (!_entManager.EntityExists(entityUid)) - { - shell.WriteLine($"{entityUid} is not a valid entity."); - return; - } - - bodyId = entityUid.Value; - break; - default: - shell.WriteLine(Help); - return; - } - - if (!_entManager.TryGetComponent(bodyId, out BodyComponent? body)) - { - shell.WriteLine($"Entity {_entManager.GetComponent(bodyId).EntityName} with uid {bodyId} does not have a {nameof(BodyComponent)}."); - return; - } - - if (!_entManager.EntityExists(partUid)) - { - shell.WriteLine($"{partUid} is not a valid entity."); - return; - } - - if (!_entManager.TryGetComponent(partUid, out BodyPartComponent? part)) - { - shell.WriteLine($"Entity {_entManager.GetComponent(partUid.Value).EntityName} with uid {args[0]} does not have a {nameof(BodyPartComponent)}."); - return; - } - - var bodySystem = _entManager.System(); - if (bodySystem.BodyHasChild(bodyId, partUid.Value, body, part)) - { - shell.WriteLine($"Body part {_entManager.GetComponent(partUid.Value).EntityName} with uid {partUid} is already attached to entity {_entManager.GetComponent(bodyId).EntityName} with uid {bodyId}"); - return; - } - - var slotId = $"AttachBodyPartVerb-{partUid}"; - - if (body.RootContainer.ContainedEntity is null && !bodySystem.AttachPartToRoot(bodyId, partUid.Value, body, part)) - { - shell.WriteError("Body container does not have a root entity to attach to the body part!"); - return; - } - - var (rootPartId, rootPart) = bodySystem.GetRootPartOrNull(bodyId, body)!.Value; - if (!bodySystem.TryCreatePartSlotAndAttach(rootPartId, - slotId, - partUid.Value, - part.PartType, - rootPart, - part)) - { - shell.WriteError($"Could not create slot {slotId} on entity {_entManager.ToPrettyString(bodyId)}"); - return; - } - shell.WriteLine($"Attached part {_entManager.ToPrettyString(partUid.Value)} to {_entManager.ToPrettyString(bodyId)}"); - } - } -} diff --git a/Content.Server/Body/Commands/DestroyMechanismCommand.cs b/Content.Server/Body/Commands/DestroyMechanismCommand.cs deleted file mode 100644 index e3278fd4e72..00000000000 --- a/Content.Server/Body/Commands/DestroyMechanismCommand.cs +++ /dev/null @@ -1,59 +0,0 @@ -using Content.Server.Administration; -using Content.Server.Body.Systems; -using Content.Shared.Administration; -using Content.Shared.Body.Components; -using Robust.Shared.Console; - -namespace Content.Server.Body.Commands -{ - [AdminCommand(AdminFlags.Fun)] - internal sealed class DestroyMechanismCommand : LocalizedEntityCommands - { - [Dependency] private readonly IComponentFactory _compFactory = default!; - [Dependency] private readonly BodySystem _bodySystem = default!; - - public override string Command => "destroymechanism"; - - public override void Execute(IConsoleShell shell, string argStr, string[] args) - { - var player = shell.Player; - if (player == null) - { - shell.WriteLine(Loc.GetString($"shell-only-players-can-run-this-command")); - return; - } - - if (args.Length == 0) - { - shell.WriteLine(Help); - return; - } - - if (player.AttachedEntity is not {} attached) - { - shell.WriteLine(Loc.GetString($"shell-must-be-attached-to-entity")); - return; - } - - if (!EntityManager.TryGetComponent(attached, out BodyComponent? body)) - { - shell.WriteLine(Loc.GetString($"shell-must-have-body")); - return; - } - - var mechanismName = string.Join(" ", args).ToLowerInvariant(); - - foreach (var organ in _bodySystem.GetBodyOrgans(attached, body)) - { - if (_compFactory.GetComponentName(organ.Component.GetType()).ToLowerInvariant() == mechanismName) - { - EntityManager.QueueDeleteEntity(organ.Id); - shell.WriteLine(Loc.GetString($"cmd-destroymechanism-success", ("name", mechanismName))); - return; - } - } - - shell.WriteLine(Loc.GetString($"cmd-destroymechanism-no-mechanism-found", ("name", mechanismName))); - } - } -} diff --git a/Content.Server/Body/Commands/RemoveHandCommand.cs b/Content.Server/Body/Commands/RemoveHandCommand.cs deleted file mode 100644 index 4a2956ae7ab..00000000000 --- a/Content.Server/Body/Commands/RemoveHandCommand.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System.Linq; -using Content.Server.Administration; -using Content.Server.Body.Systems; -using Content.Shared.Administration; -using Content.Shared.Body.Components; -using Content.Shared.Body.Part; -using Robust.Shared.Console; -using Robust.Shared.Random; - -namespace Content.Server.Body.Commands -{ - [AdminCommand(AdminFlags.Fun)] - public sealed class RemoveHandCommand : IConsoleCommand - { - [Dependency] private readonly IEntityManager _entManager = default!; - [Dependency] private readonly IRobustRandom _random = default!; - - public string Command => "removehand"; - public string Description => "Removes a hand from your entity."; - public string Help => $"Usage: {Command}"; - - public void Execute(IConsoleShell shell, string argStr, string[] args) - { - var player = shell.Player; - if (player == null) - { - shell.WriteLine("Only a player can run this command."); - return; - } - - if (player.AttachedEntity == null) - { - shell.WriteLine("You have no entity."); - return; - } - - if (!_entManager.TryGetComponent(player.AttachedEntity, out BodyComponent? body)) - { - var text = $"You have no body{(_random.Prob(0.2f) ? " and you must scream." : ".")}"; - - shell.WriteLine(text); - return; - } - - var bodySystem = _entManager.System(); - var hand = bodySystem.GetBodyChildrenOfType(player.AttachedEntity.Value, BodyPartType.Hand, body).FirstOrDefault(); - - if (hand == default) - { - shell.WriteLine("You have no hands."); - } - else - { - _entManager.System().AttachToGridOrMap(hand.Id); - } - } - } -} diff --git a/Content.Server/Body/Systems/BodySystem.cs b/Content.Server/Body/Systems/BodySystem.cs deleted file mode 100644 index 2627e979825..00000000000 --- a/Content.Server/Body/Systems/BodySystem.cs +++ /dev/null @@ -1,95 +0,0 @@ -using System.Numerics; -using Content.Server.Ghost; -using Content.Server.Humanoid; -using Content.Shared.Body.Components; -using Content.Shared.Body.Events; -using Content.Shared.Body.Part; -using Content.Shared.Body.Systems; -using Content.Shared.Damage.Components; -using Content.Shared.Humanoid; -using Content.Shared.Mind; -using Content.Shared.Mobs.Systems; -using Content.Shared.Movement.Events; -using Content.Shared.Movement.Systems; -using Robust.Shared.Audio; -using Robust.Shared.Timing; - -namespace Content.Server.Body.Systems; - -public sealed class BodySystem : SharedBodySystem -{ - [Dependency] private readonly GhostSystem _ghostSystem = default!; - [Dependency] private readonly IGameTiming _gameTiming = default!; - [Dependency] private readonly HumanoidAppearanceSystem _humanoidSystem = default!; - [Dependency] private readonly MobStateSystem _mobState = default!; - [Dependency] private readonly SharedMindSystem _mindSystem = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnRelayMoveInput); - SubscribeLocalEvent(OnApplyMetabolicMultiplier); - } - - private void OnRelayMoveInput(Entity ent, ref MoveInputEvent args) - { - // If they haven't actually moved then ignore it. - if ((args.Entity.Comp.HeldMoveButtons & - (MoveButtons.Down | MoveButtons.Left | MoveButtons.Up | MoveButtons.Right)) == 0x0) - { - return; - } - - if (_mobState.IsDead(ent) && _mindSystem.TryGetMind(ent, out var mindId, out var mind)) - { - mind.TimeOfDeath ??= _gameTiming.RealTime; - _ghostSystem.OnGhostAttempt(mindId, canReturnGlobal: true, mind: mind); - } - } - - private void OnApplyMetabolicMultiplier( - Entity ent, - ref ApplyMetabolicMultiplierEvent args) - { - foreach (var organ in GetBodyOrgans(ent, ent)) - { - RaiseLocalEvent(organ.Id, ref args); - } - } - - protected override void AddPart( - Entity bodyEnt, - Entity partEnt, - string slotId) - { - // TODO: Predict this probably. - base.AddPart(bodyEnt, partEnt, slotId); - - var layer = partEnt.Comp.ToHumanoidLayers(); - if (layer != null) - { - var layers = HumanoidVisualLayersExtension.Sublayers(layer.Value); - _humanoidSystem.SetLayersVisibility(bodyEnt.Owner, layers, visible: true); - } - } - - protected override void RemovePart( - Entity bodyEnt, - Entity partEnt, - string slotId) - { - base.RemovePart(bodyEnt, partEnt, slotId); - - if (!TryComp(bodyEnt, out var humanoid)) - return; - - var layer = partEnt.Comp.ToHumanoidLayers(); - - if (layer is null) - return; - - var layers = HumanoidVisualLayersExtension.Sublayers(layer.Value); - _humanoidSystem.SetLayersVisibility((bodyEnt, humanoid), layers, visible: false); - } -} diff --git a/Content.Server/Body/Systems/MetabolizerSystem.cs b/Content.Server/Body/Systems/MetabolizerSystem.cs index 8e329bc4208..3e01b05feb3 100644 --- a/Content.Server/Body/Systems/MetabolizerSystem.cs +++ b/Content.Server/Body/Systems/MetabolizerSystem.cs @@ -1,7 +1,7 @@ using System.Linq; using Content.Server.Body.Components; +using Content.Shared.Body; using Content.Shared.Body.Events; -using Content.Shared.Body.Organ; using Content.Shared.Body.Prototypes; using Content.Shared.Body.Systems; using Content.Shared.Chemistry.Components; @@ -47,7 +47,7 @@ public override void Initialize() SubscribeLocalEvent(OnMetabolizerInit); SubscribeLocalEvent(OnMapInit); - SubscribeLocalEvent(OnApplyMetabolicMultiplier); + SubscribeLocalEvent>(OnApplyMetabolicMultiplier); } private void OnMapInit(Entity ent, ref MapInitEvent args) @@ -67,9 +67,9 @@ private void OnMetabolizerInit(Entity entity, ref Componen } } - private void OnApplyMetabolicMultiplier(Entity ent, ref ApplyMetabolicMultiplierEvent args) + private void OnApplyMetabolicMultiplier(Entity ent, ref BodyRelayedEvent args) { - ent.Comp.UpdateIntervalMultiplier = args.Multiplier; + ent.Comp.UpdateIntervalMultiplier = args.Args.Multiplier; } public override void Update(float frameTime) diff --git a/Content.Server/Body/Systems/RespiratorSystem.cs b/Content.Server/Body/Systems/RespiratorSystem.cs index 208208025be..4a761c518d0 100644 --- a/Content.Server/Body/Systems/RespiratorSystem.cs +++ b/Content.Server/Body/Systems/RespiratorSystem.cs @@ -5,6 +5,7 @@ using Content.Shared.Body.Systems; using Content.Shared.Alert; using Content.Shared.Atmos; +using Content.Shared.Body; using Content.Shared.Body.Components; using Content.Shared.Body.Events; using Content.Shared.Body.Prototypes; @@ -34,7 +35,7 @@ public sealed class RespiratorSystem : EntitySystem [Dependency] private readonly IPrototypeManager _protoMan = default!; [Dependency] private readonly AlertsSystem _alertsSystem = default!; [Dependency] private readonly AtmosphereSystem _atmosSys = default!; - [Dependency] private readonly BodySystem _bodySystem = default!; + [Dependency] private readonly BodySystem _body = default!; [Dependency] private readonly ChatSystem _chat = default!; [Dependency] private readonly DamageableSystem _damageableSys = default!; [Dependency] private readonly LungSystem _lungSystem = default!; @@ -54,11 +55,17 @@ public override void Initialize() SubscribeLocalEvent(OnApplyMetabolicMultiplier); // BodyComp stuff - SubscribeLocalEvent(OnGasInhaled); - SubscribeLocalEvent(OnGasExhaled); - SubscribeLocalEvent(CanBodyMetabolizeGas); - SubscribeLocalEvent(OnSuffocation); - SubscribeLocalEvent(OnStopSuffocating); + SubscribeLocalEvent(_body.RelayEvent); + SubscribeLocalEvent(_body.RelayEvent); + SubscribeLocalEvent(_body.RelayEvent); + SubscribeLocalEvent(_body.RelayEvent); + SubscribeLocalEvent(_body.RelayEvent); + + SubscribeLocalEvent>(OnGasInhaled); + SubscribeLocalEvent>(OnGasExhaled); + SubscribeLocalEvent>(CanBodyMetabolizeGas); + SubscribeLocalEvent>(OnSuffocation); + SubscribeLocalEvent>(OnStopSuffocating); } private void OnMapInit(Entity ent, ref MapInitEvent args) @@ -236,72 +243,22 @@ public bool CanMetabolizeInhaledAir(Entity ent, GasMixture /// /// Tries to safely metabolize the current solutions in a body's lungs. /// - private void CanBodyMetabolizeGas(Entity ent, ref CanMetabolizeGasEvent args) + private void CanBodyMetabolizeGas(Entity ent, ref BodyRelayedEvent args) { - if (args.Handled) + if (args.Args.Handled) return; - var organs = _bodySystem.GetBodyOrganEntityComps((ent, null)); - if (organs.Count == 0) - return; - - var solution = _lungSystem.GasToReagent(args.Gas); + var solution = _lungSystem.GasToReagent(args.Args.Gas); var saturation = 0f; - foreach (var organ in organs) - { - saturation += GetSaturation(solution, organ.Owner, out var toxic); - if (!toxic) - continue; - - args.Handled = true; - args.Toxic = true; - return; - } - - args.Handled = true; - args.Saturation = saturation; - } - - public bool TryInhaleGasToBody(Entity entity, GasMixture gas) - { - if (!Resolve(entity, ref entity.Comp)) - return false; - - var organs = _bodySystem.GetBodyOrganEntityComps((entity, entity.Comp)); - if (organs.Count == 0) - return false; - - var lungRatio = 1.0f / organs.Count; - var splitGas = organs.Count == 1 ? gas : gas.RemoveRatio(lungRatio); - foreach (var (organUid, lung, _) in organs) - { - // Merge doesn't remove gas from the giver. - _atmosSys.Merge(lung.Air, splitGas); - _lungSystem.GasToReagent(organUid, lung); - } - - return true; - } - - public void RemoveGasFromBody(Entity ent, GasMixture gas) - { - var outGas = new GasMixture(gas.Volume); - - var organs = _bodySystem.GetBodyOrganEntityComps((ent, ent.Comp)); - if (organs.Count == 0) - return; + saturation += GetSaturation(solution, ent.Owner, out var toxic); - foreach (var (organUid, lung, _) in organs) + args.Args = args.Args with { - _atmosSys.Merge(outGas, lung.Air); - lung.Air.Clear(); - - if (_solutionContainerSystem.ResolveSolution(organUid, lung.SolutionName, ref lung.Solution)) - _solutionContainerSystem.RemoveAllSolution(lung.Solution.Value); - } - - _atmosSys.Merge(gas, outGas); + Saturation = saturation, + Toxic = toxic, + Handled = true + }; } /// @@ -387,24 +344,14 @@ private void StopSuffocation(Entity ent) RaiseLocalEvent(ent, ref ev); } - private void OnSuffocation(Entity ent, ref SuffocationEvent args) + private void OnSuffocation(Entity ent, ref BodyRelayedEvent args) { - // TODO: This is not going work with multiple different lungs, if that ever becomes a possibility - var organs = _bodySystem.GetBodyOrganEntityComps((ent, null)); - foreach (var entity in organs) - { - _alertsSystem.ShowAlert(ent.Owner, entity.Comp1.Alert); - } + _alertsSystem.ShowAlert(args.Body.Owner, ent.Comp.Alert); } - private void OnStopSuffocating(Entity ent, ref StopSuffocatingEvent args) + private void OnStopSuffocating(Entity ent, ref BodyRelayedEvent args) { - // TODO: This is not going work with multiple different lungs, if that ever becomes a possibility - var organs = _bodySystem.GetBodyOrganEntityComps((ent, null)); - foreach (var entity in organs) - { - _alertsSystem.ClearAlert(ent.Owner, entity.Comp1.Alert); - } + _alertsSystem.ClearAlert(args.Body.Owner, ent.Comp.Alert); } public void UpdateSaturation(EntityUid uid, float amount, RespiratorComponent? respirator = null) @@ -422,24 +369,33 @@ private void OnApplyMetabolicMultiplier(Entity ent, ref App ent.Comp.UpdateIntervalMultiplier = args.Multiplier; } - private void OnGasInhaled(Entity entity, ref InhaledGasEvent args) + private void OnGasInhaled(Entity ent, ref BodyRelayedEvent args) { - if (args.Handled) + if (args.Args.Handled) return; - args.Handled = true; + _atmosSys.Merge(ent.Comp.Air, args.Args.Gas); + _lungSystem.GasToReagent(ent, ent); - args.Succeeded = TryInhaleGasToBody((entity, entity.Comp), args.Gas); + args.Args = args.Args with + { + Handled = true, + Succeeded = true + }; } - private void OnGasExhaled(Entity entity, ref ExhaledGasEvent args) + private void OnGasExhaled(Entity ent, ref BodyRelayedEvent args) { - if (args.Handled) - return; + _atmosSys.Merge(args.Args.Gas, ent.Comp.Air); + ent.Comp.Air.Clear(); - args.Handled = true; + if (_solutionContainerSystem.ResolveSolution(ent.Owner, ent.Comp.SolutionName, ref ent.Comp.Solution)) + _solutionContainerSystem.RemoveAllSolution(ent.Comp.Solution.Value); - RemoveGasFromBody(entity, args.Gas); + args.Args = args.Args with + { + Handled = true + }; } } diff --git a/Content.Server/Cargo/Components/MobPriceComponent.cs b/Content.Server/Cargo/Components/MobPriceComponent.cs index ee9f53d0871..ec4bb514874 100644 --- a/Content.Server/Cargo/Components/MobPriceComponent.cs +++ b/Content.Server/Cargo/Components/MobPriceComponent.cs @@ -6,12 +6,6 @@ [RegisterComponent] public sealed partial class MobPriceComponent : Component { - /// - /// How much of a penalty per part there should be. This is a multiplier for a multiplier, the penalty for each body part is calculated from the total number of slots, and then multiplied by this. - /// - [DataField("missingBodyPartPenalty")] - public double MissingBodyPartPenalty = 1.0f; - /// /// The base price this mob should fetch. /// diff --git a/Content.Server/Cargo/Systems/PricingSystem.cs b/Content.Server/Cargo/Systems/PricingSystem.cs index 24ee4ffaf2f..0101b913d6a 100644 --- a/Content.Server/Cargo/Systems/PricingSystem.cs +++ b/Content.Server/Cargo/Systems/PricingSystem.cs @@ -1,9 +1,7 @@ using Content.Server.Administration; -using Content.Server.Body.Systems; using Content.Server.Cargo.Components; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Administration; -using Content.Shared.Body.Components; using Content.Shared.Cargo; using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.Reagent; @@ -16,7 +14,6 @@ using Robust.Shared.Map.Components; using Robust.Shared.Prototypes; using Robust.Shared.Utility; -using System.Linq; using Content.Shared.Research.Prototypes; namespace Content.Server.Cargo.Systems; @@ -28,7 +25,6 @@ public sealed class PricingSystem : EntitySystem { [Dependency] private readonly IConsoleHost _consoleHost = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly BodySystem _bodySystem = default!; [Dependency] private readonly MobStateSystem _mobStateSystem = default!; [Dependency] private readonly SharedSolutionContainerSystem _solutionContainerSystem = default!; @@ -96,18 +92,7 @@ private void CalculateMobPrice(EntityUid uid, MobPriceComponent component, ref P return; } - var partPenalty = 0.0; - if (TryComp(uid, out var body)) - { - var partList = _bodySystem.GetBodyChildren(uid, body).ToList(); - var totalPartsPresent = partList.Sum(_ => 1); - var totalParts = partList.Count; - - var partRatio = totalPartsPresent / (double) totalParts; - partPenalty = component.Price * (1 - partRatio) * component.MissingBodyPartPenalty; - } - - args.Price += (component.Price - partPenalty) * (_mobStateSystem.IsAlive(uid, state) ? 1.0 : component.DeathPenalty); + args.Price += component.Price * (_mobStateSystem.IsAlive(uid, state) ? 1.0 : component.DeathPenalty); } private double GetSolutionPrice(Entity entity) diff --git a/Content.Server/Disposal/Unit/DisposableSystem.cs b/Content.Server/Disposal/Unit/DisposableSystem.cs index 73365c4f62e..993545b9dca 100644 --- a/Content.Server/Disposal/Unit/DisposableSystem.cs +++ b/Content.Server/Disposal/Unit/DisposableSystem.cs @@ -1,6 +1,6 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Disposal.Tube; -using Content.Shared.Body.Components; +using Content.Shared.Body; using Content.Shared.Damage.Systems; using Content.Shared.Disposal.Components; using Content.Shared.Item; diff --git a/Content.Server/Hands/Systems/HandsSystem.cs b/Content.Server/Hands/Systems/HandsSystem.cs index 7688d14ada4..99225f451ee 100644 --- a/Content.Server/Hands/Systems/HandsSystem.cs +++ b/Content.Server/Hands/Systems/HandsSystem.cs @@ -2,7 +2,6 @@ using Content.Server.Stack; using Content.Server.Stunnable; using Content.Shared.ActionBlocker; -using Content.Shared.Body.Part; using Content.Shared.CombatMode; using Content.Shared.Damage.Systems; using Content.Shared.Explosion; @@ -49,9 +48,6 @@ public override void Initialize() SubscribeLocalEvent(OnDisarmed, before: new[] {typeof(StunSystem), typeof(SharedStaminaSystem)}); - SubscribeLocalEvent(HandleBodyPartAdded); - SubscribeLocalEvent(HandleBodyPartRemoved); - SubscribeLocalEvent(GetComponentState); SubscribeLocalEvent(OnExploded); @@ -107,32 +103,6 @@ private void OnDisarmed(EntityUid uid, HandsComponent component, ref DisarmedEve args.Handled = true; // no shove/stun. } - private void HandleBodyPartAdded(Entity ent, ref BodyPartAddedEvent args) - { - if (args.Part.Comp.PartType != BodyPartType.Hand) - return; - - // If this annoys you, which it should. - // Ping Smugleaf. - var location = args.Part.Comp.Symmetry switch - { - BodyPartSymmetry.None => HandLocation.Middle, - BodyPartSymmetry.Left => HandLocation.Left, - BodyPartSymmetry.Right => HandLocation.Right, - _ => throw new ArgumentOutOfRangeException(nameof(args.Part.Comp.Symmetry)) - }; - - AddHand(ent.AsNullable(), args.Slot, location); - } - - private void HandleBodyPartRemoved(EntityUid uid, HandsComponent component, ref BodyPartRemovedEvent args) - { - if (args.Part.Comp.PartType != BodyPartType.Hand) - return; - - RemoveHand(uid, args.Slot); - } - #region interactions private bool HandleThrowItem(ICommonSession? playerSession, EntityCoordinates coordinates, EntityUid entity) diff --git a/Content.Server/ImmovableRod/ImmovableRodSystem.cs b/Content.Server/ImmovableRod/ImmovableRodSystem.cs index a06d521a3be..860dac1a84d 100644 --- a/Content.Server/ImmovableRod/ImmovableRodSystem.cs +++ b/Content.Server/ImmovableRod/ImmovableRodSystem.cs @@ -1,8 +1,7 @@ -using Content.Server.Body.Systems; using Content.Server.Destructible; using Content.Server.Polymorph.Components; using Content.Server.Popups; -using Content.Shared.Body.Components; +using Content.Shared.Body; using Content.Shared.Damage.Systems; using Content.Shared.Examine; using Content.Shared.Gibbing; @@ -112,7 +111,7 @@ private void OnCollide(EntityUid uid, ImmovableRodComponent component, ref Start } // gib or damage em - if (TryComp(ent, out var body)) + if (HasComp(ent)) { component.MobCount++; _popup.PopupEntity(Loc.GetString("immovable-rod-penetrated-mob", ("rod", uid), ("mob", ent)), uid, PopupType.LargeCaution); diff --git a/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs b/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs index 1c6ed26d488..6f3d3932090 100644 --- a/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs @@ -1,5 +1,4 @@ using Content.Server.Administration.Logs; -using Content.Server.Body.Systems; using Content.Server.Construction; using Content.Server.Explosion.EntitySystems; using Content.Server.DeviceLinking.Systems; @@ -8,8 +7,6 @@ using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Server.Temperature.Systems; -using Content.Shared.Body.Components; -using Content.Shared.Body.Part; using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Reaction; @@ -46,7 +43,6 @@ namespace Content.Server.Kitchen.EntitySystems { public sealed class MicrowaveSystem : EntitySystem { - [Dependency] private readonly BodySystem _bodySystem = default!; [Dependency] private readonly DeviceLinkSystem _deviceLink = default!; [Dependency] private readonly SharedPopupSystem _popupSystem = default!; [Dependency] private readonly PowerReceiverSystem _power = default!; @@ -305,26 +301,9 @@ private void OnSuicideByEnvironment(Entity ent, ref SuicideB _suicide.ApplyLethalDamage((args.Victim, damageableComponent), "Heat"); var victim = args.Victim; - var headCount = 0; - if (TryComp(victim, out var body)) - { - var headSlots = _bodySystem.GetBodyChildrenOfType(victim, BodyPartType.Head, body); - - foreach (var part in headSlots) - { - _container.Insert(part.Id, ent.Comp.Storage); - headCount++; - } - } - - var othersMessage = headCount > 1 - ? Loc.GetString("microwave-component-suicide-multi-head-others-message", ("victim", victim)) - : Loc.GetString("microwave-component-suicide-others-message", ("victim", victim)); - - var selfMessage = headCount > 1 - ? Loc.GetString("microwave-component-suicide-multi-head-message") - : Loc.GetString("microwave-component-suicide-message"); + var othersMessage = Loc.GetString("microwave-component-suicide-others-message", ("victim", victim)); + var selfMessage = Loc.GetString("microwave-component-suicide-message"); _popupSystem.PopupEntity(othersMessage, victim, Filter.PvsExcept(victim), true); _popupSystem.PopupEntity(selfMessage, victim, victim); diff --git a/Content.Server/Medical/MedicalScannerSystem.cs b/Content.Server/Medical/MedicalScannerSystem.cs index b24690e204a..82bbfd9c6d9 100644 --- a/Content.Server/Medical/MedicalScannerSystem.cs +++ b/Content.Server/Medical/MedicalScannerSystem.cs @@ -10,7 +10,7 @@ using Content.Server.DeviceLinking.Systems; using Content.Shared.DeviceLinking.Events; using Content.Server.Power.EntitySystems; -using Content.Shared.Body.Components; +using Content.Shared.Body; using Content.Shared.Climbing.Systems; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; diff --git a/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs b/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs index 766c3e18dcf..0705944c35d 100644 --- a/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs +++ b/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs @@ -4,11 +4,9 @@ using Content.Server.Shuttles.Components; using Content.Server.Shuttles.Events; using Content.Server.Station.Events; -using Content.Shared.Body.Components; +using Content.Shared.Body; using Content.Shared.CCVar; using Content.Shared.Database; -using Content.Shared.Ghost; -using Content.Shared.Maps; using Content.Shared.Parallax; using Content.Shared.Shuttles.Components; using Content.Shared.Shuttles.Systems; diff --git a/Content.Server/Species/Systems/NymphSystem.cs b/Content.Server/Species/Systems/NymphSystem.cs index f6477a7c8bb..0d56e3da256 100644 --- a/Content.Server/Species/Systems/NymphSystem.cs +++ b/Content.Server/Species/Systems/NymphSystem.cs @@ -1,8 +1,8 @@ using Content.Server.Mind; +using Content.Server.Zombies; +using Content.Shared.Body; using Content.Shared.Species.Components; -using Content.Shared.Body.Events; using Content.Shared.Zombies; -using Content.Server.Zombies; using Robust.Shared.Prototypes; namespace Content.Server.Species.Systems; @@ -17,12 +17,12 @@ public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnRemovedFromPart); + SubscribeLocalEvent(OnRemovedFromPart); } - private void OnRemovedFromPart(EntityUid uid, NymphComponent comp, ref OrganRemovedFromBodyEvent args) + private void OnRemovedFromPart(EntityUid uid, NymphComponent comp, ref OrganGotRemovedEvent args) { - if (TerminatingOrDeleted(uid) || TerminatingOrDeleted(args.OldBody)) + if (TerminatingOrDeleted(uid) || TerminatingOrDeleted(args.Target)) return; if (!_protoManager.TryIndex(comp.EntityPrototype, out var entityProto)) @@ -32,11 +32,11 @@ private void OnRemovedFromPart(EntityUid uid, NymphComponent comp, ref OrganRemo var coords = Transform(uid).Coordinates; var nymph = SpawnAtPosition(entityProto.ID, coords); - if (HasComp(args.OldBody)) // Zombify the new nymph if old one is a zombie + if (HasComp(args.Target)) // Zombify the new nymph if old one is a zombie _zombie.ZombifyEntity(nymph); // Move the mind if there is one and it's supposed to be transferred - if (comp.TransferMind == true && _mindSystem.TryGetMind(args.OldBody, out var mindId, out var mind)) + if (comp.TransferMind == true && _mindSystem.TryGetMind(args.Target, out var mindId, out var mind)) _mindSystem.TransferTo(mindId, nymph, mind: mind); // Delete the old organ diff --git a/Content.Server/Tools/Innate/InnateToolSystem.cs b/Content.Server/Tools/Innate/InnateToolSystem.cs index 6afe8863033..7b7cc2a8aa7 100644 --- a/Content.Server/Tools/Innate/InnateToolSystem.cs +++ b/Content.Server/Tools/Innate/InnateToolSystem.cs @@ -1,5 +1,4 @@ using System.Linq; -using Content.Shared.Body.Part; using Content.Shared.Destructible; using Content.Shared.Hands; using Content.Shared.Hands.Components; diff --git a/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactCrusherSystem.cs b/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactCrusherSystem.cs index 5db6ba78e94..7087499c93a 100644 --- a/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactCrusherSystem.cs +++ b/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactCrusherSystem.cs @@ -1,6 +1,4 @@ -using Content.Server.Body.Systems; using Content.Server.Stack; -using Content.Shared.Body.Components; using Content.Shared.Gibbing; using Content.Shared.Storage.Components; using Content.Shared.Whitelist; @@ -42,9 +40,6 @@ public override void FinishCrushing(Entity(contained, out var body)) - Del(contained); - var gibs = _gibbing.Gib(contained); foreach (var gib in gibs) { diff --git a/Content.Shared/Body/BodyComponent.cs b/Content.Shared/Body/BodyComponent.cs new file mode 100644 index 00000000000..0b32657f2ec --- /dev/null +++ b/Content.Shared/Body/BodyComponent.cs @@ -0,0 +1,41 @@ +using Robust.Shared.Containers; +using Robust.Shared.GameStates; + +namespace Content.Shared.Body; + +[RegisterComponent, NetworkedComponent] +[Access(typeof(BodySystem))] +public sealed partial class BodyComponent : Component +{ + public const string ContainerID = "body_organs"; + + /// + /// The actual container with entities with in it + /// + [ViewVariables] + public Container? Organs; +} + +/// +/// Raised on organ entity, when it is inserted into a body +/// +[ByRefEvent] +public readonly record struct OrganGotInsertedEvent(EntityUid Target); + +/// +/// Raised on organ entity, when it is removed from a body +/// +[ByRefEvent] +public readonly record struct OrganGotRemovedEvent(EntityUid Target); + +/// +/// Raised on body entity, when an organ is inserted into it +/// +[ByRefEvent] +public readonly record struct OrganInsertedIntoEvent(EntityUid Organ); + +/// +/// Raised on body entity, when an organ is removed from it +/// +[ByRefEvent] +public readonly record struct OrganRemovedFromEvent(EntityUid Organ); diff --git a/Content.Shared/Body/BodySystem.Compatibility.cs b/Content.Shared/Body/BodySystem.Compatibility.cs new file mode 100644 index 00000000000..c6dd2bc2ba5 --- /dev/null +++ b/Content.Shared/Body/BodySystem.Compatibility.cs @@ -0,0 +1,20 @@ +namespace Content.Shared.Body; + +public sealed partial class BodySystem +{ + [Obsolete("Use an event-relay based approach instead")] + public bool TryGetOrgansWithComponent(Entity ent, out List> organs) where TComp : Component + { + organs = new(); + if (!_bodyQuery.Resolve(ent, ref ent.Comp)) + return false; + + foreach (var organ in ent.Comp.Organs?.ContainedEntities ?? []) + { + if (TryComp(organ, out var comp)) + organs.Add((organ, comp)); + } + + return organs.Count != 0; + } +} diff --git a/Content.Shared/Body/BodySystem.Relay.cs b/Content.Shared/Body/BodySystem.Relay.cs new file mode 100644 index 00000000000..c6a025ace26 --- /dev/null +++ b/Content.Shared/Body/BodySystem.Relay.cs @@ -0,0 +1,50 @@ +using Content.Shared.Body.Events; +using Content.Shared.Gibbing; +using Content.Shared.Medical; + +namespace Content.Shared.Body; + +public sealed partial class BodySystem +{ + private void InitializeRelay() + { + SubscribeLocalEvent(RefRelayBodyEvent); + SubscribeLocalEvent(RefRelayBodyEvent); + SubscribeLocalEvent(RefRelayBodyEvent); + } + + private void RefRelayBodyEvent(EntityUid uid, BodyComponent component, ref T args) where T : struct + { + RelayEvent((uid, component), ref args); + } + + private void RelayBodyEvent(EntityUid uid, BodyComponent component, T args) where T : class + { + RelayEvent((uid, component), args); + } + + public void RelayEvent(Entity ent, ref T args) where T : struct + { + var ev = new BodyRelayedEvent(ent, args); + foreach (var organ in ent.Comp.Organs?.ContainedEntities ?? []) + { + RaiseLocalEvent(organ, ref ev); + } + args = ev.Args; + } + + public void RelayEvent(Entity ent, T args) where T : class + { + var ev = new BodyRelayedEvent(ent, args); + foreach (var organ in ent.Comp.Organs?.ContainedEntities ?? []) + { + RaiseLocalEvent(organ, ref ev); + } + } +} + +/// +/// Event wrapper for relayed events. +/// +[ByRefEvent] +public record struct BodyRelayedEvent(Entity Body, TEvent Args); diff --git a/Content.Shared/Body/BodySystem.cs b/Content.Shared/Body/BodySystem.cs new file mode 100644 index 00000000000..c53ab22452e --- /dev/null +++ b/Content.Shared/Body/BodySystem.cs @@ -0,0 +1,89 @@ +using Content.Shared.DragDrop; +using Robust.Shared.Containers; + +namespace Content.Shared.Body; + +public sealed partial class BodySystem : EntitySystem +{ + [Dependency] private readonly SharedContainerSystem _container = default!; + + private EntityQuery _bodyQuery; + private EntityQuery _organQuery; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnBodyInit); + SubscribeLocalEvent(OnBodyShutdown); + + SubscribeLocalEvent(OnCanDrag); + + SubscribeLocalEvent(OnBodyEntInserted); + SubscribeLocalEvent(OnBodyEntRemoved); + + _bodyQuery = GetEntityQuery(); + _organQuery = GetEntityQuery(); + + InitializeRelay(); + } + + private void OnBodyInit(Entity ent, ref ComponentInit args) + { + ent.Comp.Organs = + _container.EnsureContainer(ent, BodyComponent.ContainerID); + } + + private void OnBodyShutdown(Entity ent, ref ComponentShutdown args) + { + if (ent.Comp.Organs is { } organs) + _container.ShutdownContainer(organs); + } + + private void OnBodyEntInserted(Entity ent, ref EntInsertedIntoContainerMessage args) + { + if (args.Container.ID != BodyComponent.ContainerID) + return; + + if (!_organQuery.TryComp(args.Entity, out var organ)) + return; + + var body = new OrganInsertedIntoEvent(args.Entity); + RaiseLocalEvent(ent, ref body); + + var ev = new OrganGotInsertedEvent(ent); + RaiseLocalEvent(args.Entity, ref ev); + + if (organ.Body != ent) + { + organ.Body = ent; + Dirty(args.Entity, organ); + } + } + + private void OnBodyEntRemoved(Entity ent, ref EntRemovedFromContainerMessage args) + { + if (args.Container.ID != BodyComponent.ContainerID) + return; + + if (!_organQuery.TryComp(args.Entity, out var organ)) + return; + + var body = new OrganRemovedFromEvent(args.Entity); + RaiseLocalEvent(ent, ref body); + + var ev = new OrganGotRemovedEvent(ent); + RaiseLocalEvent(args.Entity, ref ev); + + if (organ.Body == null) + return; + + organ.Body = null; + Dirty(args.Entity, organ); + } + + private void OnCanDrag(Entity ent, ref CanDragEvent args) + { + args.Handled = true; + } +} diff --git a/Content.Shared/Body/Components/BodyComponent.cs b/Content.Shared/Body/Components/BodyComponent.cs deleted file mode 100644 index 481e22150b0..00000000000 --- a/Content.Shared/Body/Components/BodyComponent.cs +++ /dev/null @@ -1,44 +0,0 @@ -using Content.Shared.Body.Prototypes; -using Content.Shared.Body.Systems; -using Robust.Shared.Audio; -using Robust.Shared.Containers; -using Robust.Shared.GameStates; -using Robust.Shared.Prototypes; - -namespace Content.Shared.Body.Components; - -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] -[Access(typeof(SharedBodySystem))] -public sealed partial class BodyComponent : Component -{ - /// - /// Relevant template to spawn for this body. - /// - [DataField, AutoNetworkedField] - public ProtoId? Prototype; - - /// - /// Container that holds the root body part. - /// - /// - /// Typically is the torso. - /// - [ViewVariables] public ContainerSlot RootContainer = default!; - - [ViewVariables] - public string RootPartSlot => RootContainer.ID; - - [DataField, AutoNetworkedField] - public SoundSpecifier GibSound = new SoundCollectionSpecifier("gib"); - - /// - /// The amount of legs required to move at full speed. - /// If 0, then legs do not impact speed. - /// - [DataField, AutoNetworkedField] - public int RequiredLegs; - - [ViewVariables] - [DataField, AutoNetworkedField] - public HashSet LegEntities = new(); -} diff --git a/Content.Shared/Body/Events/MechanismBodyEvents.cs b/Content.Shared/Body/Events/MechanismBodyEvents.cs deleted file mode 100644 index 968b172aef5..00000000000 --- a/Content.Shared/Body/Events/MechanismBodyEvents.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace Content.Shared.Body.Events; - -// All of these events are raised on a mechanism entity when added/removed to a body in different -// ways. - -/// -/// Raised on a mechanism when it is added to a body part. -/// -[ByRefEvent] -public readonly record struct OrganAddedEvent(EntityUid Part); - -/// -/// Raised on a mechanism when it is added to a body part within a body. -/// -[ByRefEvent] -public readonly record struct OrganAddedToBodyEvent(EntityUid Body, EntityUid Part); - -/// -/// Raised on a mechanism when it is removed from a body part. -/// -[ByRefEvent] -public readonly record struct OrganRemovedEvent(EntityUid OldPart); - -/// -/// Raised on a mechanism when it is removed from a body part within a body. -/// -[ByRefEvent] -public readonly record struct OrganRemovedFromBodyEvent(EntityUid OldBody, EntityUid OldPart); diff --git a/Content.Shared/Body/GibbableOrganComponent.cs b/Content.Shared/Body/GibbableOrganComponent.cs new file mode 100644 index 00000000000..fd813049092 --- /dev/null +++ b/Content.Shared/Body/GibbableOrganComponent.cs @@ -0,0 +1,7 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Body; + +[RegisterComponent, NetworkedComponent] +[Access(typeof(GibbableOrganSystem))] +public sealed partial class GibbableOrganComponent : Component; diff --git a/Content.Shared/Body/GibbableOrganSystem.cs b/Content.Shared/Body/GibbableOrganSystem.cs new file mode 100644 index 00000000000..56b0af11c19 --- /dev/null +++ b/Content.Shared/Body/GibbableOrganSystem.cs @@ -0,0 +1,18 @@ +using Content.Shared.Gibbing; + +namespace Content.Shared.Body; + +public sealed class GibbableOrganSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent>(OnBeingGibbed); + } + + private void OnBeingGibbed(Entity ent, ref BodyRelayedEvent args) + { + args.Args.Giblets.Add(ent); + } +} diff --git a/Content.Shared/Body/HandOrganComponent.cs b/Content.Shared/Body/HandOrganComponent.cs new file mode 100644 index 00000000000..78cdea4a698 --- /dev/null +++ b/Content.Shared/Body/HandOrganComponent.cs @@ -0,0 +1,15 @@ +using Content.Shared.Hands.Components; +using Robust.Shared.GameStates; + +namespace Content.Shared.Body; + +[RegisterComponent, NetworkedComponent] +[Access(typeof(HandOrganSystem))] +public sealed partial class HandOrganComponent : Component +{ + [DataField(required: true)] + public string HandID; + + [DataField(required: true)] + public Hand Data; +} diff --git a/Content.Shared/Body/HandOrganSystem.cs b/Content.Shared/Body/HandOrganSystem.cs new file mode 100644 index 00000000000..0c3a0b0824b --- /dev/null +++ b/Content.Shared/Body/HandOrganSystem.cs @@ -0,0 +1,30 @@ +using Content.Shared.Hands.EntitySystems; + +namespace Content.Shared.Body; + +public sealed class HandOrganSystem : EntitySystem +{ + [Dependency] private readonly SharedHandsSystem _hands = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnGotInserted); + SubscribeLocalEvent(OnGotRemoved); + } + + private void OnGotInserted(Entity ent, ref OrganGotInsertedEvent args) + { + _hands.AddHand(args.Target, ent.Comp.HandID, ent.Comp.Data); + } + + private void OnGotRemoved(Entity ent, ref OrganGotRemovedEvent args) + { + // prevent a recursive double-delete bug + if (LifeStage(args.Target) >= EntityLifeStage.Terminating) + return; + + _hands.RemoveHand(args.Target, ent.Comp.HandID); + } +} diff --git a/Content.Shared/Body/Organ/OrganComponent.cs b/Content.Shared/Body/Organ/OrganComponent.cs deleted file mode 100644 index 3048927b5fb..00000000000 --- a/Content.Shared/Body/Organ/OrganComponent.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Content.Shared.Body.Systems; -using Robust.Shared.Containers; -using Robust.Shared.GameStates; - -namespace Content.Shared.Body.Organ; - -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] -[Access(typeof(SharedBodySystem))] -public sealed partial class OrganComponent : Component -{ - /// - /// Relevant body this organ is attached to. - /// - [DataField, AutoNetworkedField] - public EntityUid? Body; -} diff --git a/Content.Shared/Body/OrganCategoryPrototype.cs b/Content.Shared/Body/OrganCategoryPrototype.cs new file mode 100644 index 00000000000..40bf13961de --- /dev/null +++ b/Content.Shared/Body/OrganCategoryPrototype.cs @@ -0,0 +1,13 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared.Body; + +/// +/// Marker prototype that defines well-known types of organs, e.g. "kidneys" or "left arm". +/// +[Prototype] +public sealed partial class OrganCategoryPrototype : IPrototype +{ + [IdDataField] + public string ID { get; private set; } = default!; +} diff --git a/Content.Shared/Body/OrganComponent.cs b/Content.Shared/Body/OrganComponent.cs new file mode 100644 index 00000000000..4126c192fb9 --- /dev/null +++ b/Content.Shared/Body/OrganComponent.cs @@ -0,0 +1,21 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Body; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(BodySystem))] +public sealed partial class OrganComponent : Component +{ + /// + /// The body entity containing this organ, if any + /// + [DataField, AutoNetworkedField] + public EntityUid? Body; + + /// + /// What kind of organ is this, if any + /// + [DataField] + public ProtoId? Category; +} diff --git a/Content.Shared/Body/Part/BodyPartComponent.cs b/Content.Shared/Body/Part/BodyPartComponent.cs deleted file mode 100644 index c4e65c06a3f..00000000000 --- a/Content.Shared/Body/Part/BodyPartComponent.cs +++ /dev/null @@ -1,114 +0,0 @@ -using Content.Shared.Body.Components; -using Content.Shared.Body.Systems; -using Robust.Shared.Containers; -using Robust.Shared.GameStates; -using Robust.Shared.Serialization; - -namespace Content.Shared.Body.Part; - -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] -[Access(typeof(SharedBodySystem))] -public sealed partial class BodyPartComponent : Component -{ - // Need to set this on container changes as it may be several transform parents up the hierarchy. - /// - /// Parent body for this part. - /// - [DataField, AutoNetworkedField] - public EntityUid? Body; - - [DataField, AutoNetworkedField] - public BodyPartType PartType = BodyPartType.Other; - - // TODO BODY Replace with a simulation of organs - /// - /// Whether or not the owning will die if all - /// s of this type are removed from it. - /// - [DataField("vital"), AutoNetworkedField] - public bool IsVital; - - [DataField, AutoNetworkedField] - public BodyPartSymmetry Symmetry = BodyPartSymmetry.None; - - /// - /// Child body parts attached to this body part. - /// - [DataField, AutoNetworkedField] - public Dictionary Children = new(); - - /// - /// Organs attached to this body part. - /// - [DataField, AutoNetworkedField] - public Dictionary Organs = new(); - - /// - /// These are only for VV/Debug do not use these for gameplay/systems - /// - [ViewVariables] - private List BodyPartSlotsVV - { - get - { - List temp = new(); - var containerSystem = IoCManager.Resolve().System(); - - foreach (var slotId in Children.Keys) - { - temp.Add((ContainerSlot) containerSystem.GetContainer(Owner, SharedBodySystem.PartSlotContainerIdPrefix+slotId)); - } - - return temp; - } - } - - [ViewVariables] - private List OrganSlotsVV - { - get - { - List temp = new(); - var containerSystem = IoCManager.Resolve().System(); - - foreach (var slotId in Organs.Keys) - { - temp.Add((ContainerSlot) containerSystem.GetContainer(Owner, SharedBodySystem.OrganSlotContainerIdPrefix+slotId)); - } - - return temp; - } - } -} - -/// -/// Contains metadata about a body part in relation to its slot. -/// -[NetSerializable, Serializable] -[DataRecord] -public partial struct BodyPartSlot -{ - public string Id; - public BodyPartType Type; - - public BodyPartSlot(string id, BodyPartType type) - { - Id = id; - Type = type; - } -}; - -/// -/// Contains metadata about an organ part in relation to its slot. -/// -[NetSerializable, Serializable] -[DataRecord] -public partial struct OrganSlot -{ - public string Id; - - public OrganSlot(string id) - { - Id = id; - } -}; diff --git a/Content.Shared/Body/Part/BodyPartEvents.cs b/Content.Shared/Body/Part/BodyPartEvents.cs deleted file mode 100644 index 0d8d2c8a268..00000000000 --- a/Content.Shared/Body/Part/BodyPartEvents.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Content.Shared.Body.Part; - -[ByRefEvent] -public readonly record struct BodyPartAddedEvent(string Slot, Entity Part); - -[ByRefEvent] -public readonly record struct BodyPartRemovedEvent(string Slot, Entity Part); diff --git a/Content.Shared/Body/Part/BodyPartSymmetry.cs b/Content.Shared/Body/Part/BodyPartSymmetry.cs deleted file mode 100644 index aa008698231..00000000000 --- a/Content.Shared/Body/Part/BodyPartSymmetry.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Content.Shared.Body.Components; -using Robust.Shared.Serialization; - -namespace Content.Shared.Body.Part -{ - /// - /// Defines the symmetry of a . - /// - [Serializable, NetSerializable] - public enum BodyPartSymmetry - { - None = 0, - Left, - Right - } -} diff --git a/Content.Shared/Body/Part/BodyPartType.cs b/Content.Shared/Body/Part/BodyPartType.cs deleted file mode 100644 index acaee76fd85..00000000000 --- a/Content.Shared/Body/Part/BodyPartType.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Content.Shared.Body.Components; -using Robust.Shared.Serialization; - -namespace Content.Shared.Body.Part -{ - /// - /// Defines the type of a . - /// - [Serializable, NetSerializable] - public enum BodyPartType - { - Other = 0, - Torso, - Head, - Arm, - Hand, - Leg, - Foot, - Tail - } -} diff --git a/Content.Shared/Body/Prototypes/BodyPrototype.cs b/Content.Shared/Body/Prototypes/BodyPrototype.cs deleted file mode 100644 index 45ad6df0e42..00000000000 --- a/Content.Shared/Body/Prototypes/BodyPrototype.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Robust.Shared.Prototypes; - -namespace Content.Shared.Body.Prototypes; - -[Prototype] -public sealed partial class BodyPrototype : IPrototype -{ - [IdDataField] public string ID { get; private set; } = default!; - - [DataField("name")] - public string Name { get; private set; } = ""; - - [DataField("root")] public string Root { get; private set; } = string.Empty; - - [DataField("slots")] public Dictionary Slots { get; private set; } = new(); - - private BodyPrototype() { } - - public BodyPrototype(string id, string name, string root, Dictionary slots) - { - ID = id; - Name = name; - Root = root; - Slots = slots; - } -} - -[DataRecord] -public sealed partial record BodyPrototypeSlot(EntProtoId? Part, HashSet Connections, Dictionary Organs); diff --git a/Content.Shared/Body/Prototypes/BodyPrototypeSerializer.cs b/Content.Shared/Body/Prototypes/BodyPrototypeSerializer.cs deleted file mode 100644 index 338e6c8ab84..00000000000 --- a/Content.Shared/Body/Prototypes/BodyPrototypeSerializer.cs +++ /dev/null @@ -1,178 +0,0 @@ -using System.Linq; -using Content.Shared.Body.Organ; -using Content.Shared.Prototypes; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization; -using Robust.Shared.Serialization.Manager; -using Robust.Shared.Serialization.Markdown.Mapping; -using Robust.Shared.Serialization.Markdown.Sequence; -using Robust.Shared.Serialization.Markdown.Validation; -using Robust.Shared.Serialization.Markdown.Value; -using Robust.Shared.Serialization.TypeSerializers.Interfaces; - -namespace Content.Shared.Body.Prototypes; - -[TypeSerializer] -public sealed class BodyPrototypeSerializer : ITypeReader -{ - private (ValidationNode Node, List Connections) ValidateSlot(MappingDataNode slot, IDependencyCollection dependencies) - { - var nodes = new List(); - var prototypes = dependencies.Resolve(); - var factory = dependencies.Resolve(); - - var connections = new List(); - if (slot.TryGet("connections", out SequenceDataNode? connectionsNode)) - { - foreach (var node in connectionsNode) - { - if (node is not ValueDataNode connection) - { - nodes.Add(new ErrorNode(node, $"Connection is not a value data node")); - continue; - } - - connections.Add(connection.Value); - } - } - - if (slot.TryGet("organs", out MappingDataNode? organsNode)) - { - foreach (var (key, value) in organsNode) - { - if (value is not ValueDataNode organ) - { - nodes.Add(new ErrorNode(value, $"Value is not a value data node")); - continue; - } - - if (!prototypes.TryIndex(organ.Value, out EntityPrototype? organPrototype)) - { - nodes.Add(new ErrorNode(value, $"No organ entity prototype found with id {organ.Value}")); - continue; - } - - if (!organPrototype.HasComponent(factory)) - { - nodes.Add(new ErrorNode(value, $"Organ {organ.Value} does not have a body component")); - } - } - } - - var validation = new ValidatedSequenceNode(nodes); - return (validation, connections); - } - - public ValidationNode Validate(ISerializationManager serializationManager, MappingDataNode node, - IDependencyCollection dependencies, ISerializationContext? context = null) - { - var nodes = new List(); - - if (!node.TryGet("root", out ValueDataNode? root)) - nodes.Add(new ErrorNode(node, $"No root value data node found")); - - if (!node.TryGet("slots", out MappingDataNode? slots)) - { - nodes.Add(new ErrorNode(node, $"No slots mapping data node found")); - } - else if (root != null) - { - if (!slots.TryGet(root.Value, out MappingDataNode? _)) - { - nodes.Add(new ErrorNode(slots, $"No slot found with id {root.Value}")); - return new ValidatedSequenceNode(nodes); - } - - foreach (var (key, value) in slots) - { - if (value is not MappingDataNode slot) - { - nodes.Add(new ErrorNode(value, $"Slot is not a mapping data node")); - continue; - } - - var result = ValidateSlot(slot, dependencies); - nodes.Add(result.Node); - - foreach (var connection in result.Connections) - { - if (!slots.TryGet(connection, out MappingDataNode? _)) - nodes.Add(new ErrorNode(slots, $"No slot found with id {connection}")); - } - } - } - - return new ValidatedSequenceNode(nodes); - } - - public BodyPrototype Read(ISerializationManager serializationManager, MappingDataNode node, - IDependencyCollection dependencies, - SerializationHookContext hookCtx, ISerializationContext? context = null, - ISerializationManager.InstantiationDelegate? instanceProvider = null) - { - var id = node.Get("id").Value; - var name = node.Get("name").Value; - var root = node.Get("root").Value; - var slotNodes = node.Get("slots"); - var allConnections = new Dictionary? Connections, Dictionary? Organs)>(); - - foreach (var (slotId, valueNode) in slotNodes) - { - var slot = (MappingDataNode) valueNode; - - string? part = null; - if (slot.TryGet("part", out var value)) - { - part = value.Value; - } - - HashSet? connections = null; - if (slot.TryGet("connections", out SequenceDataNode? slotConnectionsNode)) - { - connections = new HashSet(); - - foreach (var connection in slotConnectionsNode.Cast()) - { - connections.Add(connection.Value); - } - } - - Dictionary? organs = null; - if (slot.TryGet("organs", out MappingDataNode? slotOrgansNode)) - { - organs = new Dictionary(); - - foreach (var (organKey, organValueNode) in slotOrgansNode) - { - organs.Add(organKey, ((ValueDataNode) organValueNode).Value); - } - } - - allConnections.Add(slotId, (part, connections, organs)); - } - - foreach (var (slotId, (_, connections, _)) in allConnections) - { - if (connections == null) - continue; - - foreach (var connection in connections) - { - var other = allConnections[connection]; - other.Connections ??= new HashSet(); - other.Connections.Add(slotId); - allConnections[connection] = other; - } - } - - var slots = new Dictionary(); - - foreach (var (slotId, (part, connections, organs)) in allConnections) - { - var slot = new BodyPrototypeSlot(part, connections ?? new HashSet(), organs ?? new Dictionary()); - slots.Add(slotId, slot); - } - - return new BodyPrototype(id, name, root, slots); - } -} diff --git a/Content.Shared/Body/Systems/BrainSystem.cs b/Content.Shared/Body/Systems/BrainSystem.cs index 55abcbb8687..41eea8e1112 100644 --- a/Content.Shared/Body/Systems/BrainSystem.cs +++ b/Content.Shared/Body/Systems/BrainSystem.cs @@ -1,5 +1,4 @@ using Content.Shared.Body.Components; -using Content.Shared.Body.Events; using Content.Shared.Ghost; using Content.Shared.Mind; using Content.Shared.Mind.Components; @@ -16,8 +15,8 @@ public override void Initialize() { base.Initialize(); - SubscribeLocalEvent((uid, _, args) => HandleMind(args.Body, uid)); - SubscribeLocalEvent((uid, _, args) => HandleMind(uid, args.OldBody)); + SubscribeLocalEvent((uid, _, args) => HandleMind(args.Target, uid)); + SubscribeLocalEvent((uid, _, args) => HandleMind(uid, args.Target)); SubscribeLocalEvent(OnPointAttempt); } diff --git a/Content.Shared/Body/Systems/SharedBodySystem.Body.cs b/Content.Shared/Body/Systems/SharedBodySystem.Body.cs deleted file mode 100644 index 22d1febff6b..00000000000 --- a/Content.Shared/Body/Systems/SharedBodySystem.Body.cs +++ /dev/null @@ -1,300 +0,0 @@ -using System.Linq; -using System.Numerics; -using Content.Shared.Body.Components; -using Content.Shared.Body.Organ; -using Content.Shared.Body.Part; -using Content.Shared.Body.Prototypes; -using Content.Shared.DragDrop; -using Content.Shared.Gibbing; -using Content.Shared.Inventory; -using Robust.Shared.Audio.Systems; -using Robust.Shared.Containers; -using Robust.Shared.Map; -using Robust.Shared.Utility; - -namespace Content.Shared.Body.Systems; - -public partial class SharedBodySystem -{ - /* - * tl;dr of how bobby works - * - BodyComponent uses a BodyPrototype as a template. - * - On MapInit we spawn the root entity in the prototype and spawn all connections outwards from here - * - Each "connection" is a body part (e.g. arm, hand, etc.) and each part can also contain organs. - */ - - [Dependency] private readonly InventorySystem _inventory = default!; - - private const float GibletLaunchImpulse = 8; - private const float GibletLaunchImpulseVariance = 3; - - private void InitializeBody() - { - // Body here to handle root body parts. - SubscribeLocalEvent(OnBodyInserted); - SubscribeLocalEvent(OnBodyRemoved); - - SubscribeLocalEvent(OnBodyInit); - SubscribeLocalEvent(OnBodyMapInit); - SubscribeLocalEvent(OnBodyCanDrag); - SubscribeLocalEvent(OnBeingGibbed); - } - - private void OnBodyInserted(Entity ent, ref EntInsertedIntoContainerMessage args) - { - // Root body part? - var slotId = args.Container.ID; - - if (slotId != BodyRootContainerId) - return; - - var insertedUid = args.Entity; - - if (TryComp(insertedUid, out BodyPartComponent? part)) - { - AddPart((ent, ent), (insertedUid, part), slotId); - RecursiveBodyUpdate((insertedUid, part), ent); - } - - if (TryComp(insertedUid, out OrganComponent? organ)) - { - AddOrgan((insertedUid, organ), ent, ent); - } - } - - private void OnBodyRemoved(Entity ent, ref EntRemovedFromContainerMessage args) - { - // Root body part? - var slotId = args.Container.ID; - - if (slotId != BodyRootContainerId) - return; - - var removedUid = args.Entity; - DebugTools.Assert(!TryComp(removedUid, out BodyPartComponent? b) || b.Body == ent); - DebugTools.Assert(!TryComp(removedUid, out OrganComponent? o) || o.Body == ent); - - if (TryComp(removedUid, out BodyPartComponent? part)) - { - RemovePart((ent, ent), (removedUid, part), slotId); - RecursiveBodyUpdate((removedUid, part), null); - } - - if (TryComp(removedUid, out OrganComponent? organ)) - RemoveOrgan((removedUid, organ), ent); - } - - private void OnBodyInit(Entity ent, ref ComponentInit args) - { - // Setup the initial container. - ent.Comp.RootContainer = Containers.EnsureContainer(ent, BodyRootContainerId); - } - - private void OnBodyMapInit(Entity ent, ref MapInitEvent args) - { - if (ent.Comp.Prototype is null) - return; - - // One-time setup - // Obviously can't run in Init to avoid double-spawns on save / load. - var prototype = Prototypes.Index(ent.Comp.Prototype.Value); - MapInitBody(ent, prototype); - } - - private void MapInitBody(EntityUid bodyEntity, BodyPrototype prototype) - { - var protoRoot = prototype.Slots[prototype.Root]; - if (protoRoot.Part is null) - return; - - // This should already handle adding the entity to the root. - var rootPartUid = SpawnInContainerOrDrop(protoRoot.Part, bodyEntity, BodyRootContainerId); - var rootPart = Comp(rootPartUid); - rootPart.Body = bodyEntity; - Dirty(rootPartUid, rootPart); - - // Setup the rest of the body entities. - SetupOrgans((rootPartUid, rootPart), protoRoot.Organs); - MapInitParts(rootPartUid, prototype); - } - - private void OnBodyCanDrag(Entity ent, ref CanDragEvent args) - { - args.Handled = true; - } - - /// - /// Sets up all of the relevant body parts for a particular body entity and root part. - /// - private void MapInitParts(EntityUid rootPartId, BodyPrototype prototype) - { - // Start at the root part and traverse the body graph, setting up parts as we go. - // Basic BFS pathfind. - var rootSlot = prototype.Root; - var frontier = new Queue(); - frontier.Enqueue(rootSlot); - - // Child -> Parent connection. - var cameFrom = new Dictionary(); - cameFrom[rootSlot] = rootSlot; - // Maps slot to its relevant entity. - var cameFromEntities = new Dictionary(); - cameFromEntities[rootSlot] = rootPartId; - - while (frontier.TryDequeue(out var currentSlotId)) - { - var currentSlot = prototype.Slots[currentSlotId]; - - foreach (var connection in currentSlot.Connections) - { - // Already been handled - if (!cameFrom.TryAdd(connection, currentSlotId)) - continue; - - // Setup part - var connectionSlot = prototype.Slots[connection]; - var parentEntity = cameFromEntities[currentSlotId]; - var parentPartComponent = Comp(parentEntity); - - // Spawn the entity on the target - // then get the body part type, create the slot, and finally - // we can insert it into the container. - var childPart = Spawn(connectionSlot.Part, new EntityCoordinates(parentEntity, Vector2.Zero)); - cameFromEntities[connection] = childPart; - - var childPartComponent = Comp(childPart); - var partSlot = CreatePartSlot(parentEntity, connection, childPartComponent.PartType, parentPartComponent); - var cont = Containers.GetContainer(parentEntity, GetPartSlotContainerId(connection)); - - if (partSlot is null || !Containers.Insert(childPart, cont)) - { - Log.Error($"Could not create slot for connection {connection} in body {prototype.ID}"); - QueueDel(childPart); - continue; - } - - // Add organs - SetupOrgans((childPart, childPartComponent), connectionSlot.Organs); - - // Enqueue it so we can also get its neighbors. - frontier.Enqueue(connection); - } - } - } - - private void SetupOrgans(Entity ent, Dictionary organs) - { - foreach (var (organSlotId, organProto) in organs) - { - var slot = CreateOrganSlot((ent, ent), organSlotId); - SpawnInContainerOrDrop(organProto, ent, GetOrganContainerId(organSlotId)); - - if (slot is null) - { - Log.Error($"Could not create organ for slot {organSlotId} in {ToPrettyString(ent)}"); - } - } - } - - /// - /// Gets all body containers on this entity including the root one. - /// - public IEnumerable GetBodyContainers( - EntityUid id, - BodyComponent? body = null, - BodyPartComponent? rootPart = null) - { - if (!Resolve(id, ref body, logMissing: false) - || body.RootContainer.ContainedEntity is null - || !Resolve(body.RootContainer.ContainedEntity.Value, ref rootPart)) - { - yield break; - } - - yield return body.RootContainer; - - foreach (var childContainer in GetPartContainers(body.RootContainer.ContainedEntity.Value, rootPart)) - { - yield return childContainer; - } - } - - /// - /// Gets all child body parts of this entity, including the root entity. - /// - public IEnumerable<(EntityUid Id, BodyPartComponent Component)> GetBodyChildren( - EntityUid? id, - BodyComponent? body = null, - BodyPartComponent? rootPart = null) - { - if (id is null - || !Resolve(id.Value, ref body, logMissing: false) - || body.RootContainer.ContainedEntity is null - || !Resolve(body.RootContainer.ContainedEntity.Value, ref rootPart)) - { - yield break; - } - - foreach (var child in GetBodyPartChildren(body.RootContainer.ContainedEntity.Value, rootPart)) - { - yield return child; - } - } - - public IEnumerable<(EntityUid Id, OrganComponent Component)> GetBodyOrgans( - EntityUid? bodyId, - BodyComponent? body = null) - { - if (bodyId is null || !Resolve(bodyId.Value, ref body, logMissing: false)) - yield break; - - foreach (var part in GetBodyChildren(bodyId, body)) - { - foreach (var organ in GetPartOrgans(part.Id, part.Component)) - { - yield return organ; - } - } - } - - /// - /// Returns all body part slots for this entity. - /// - /// - /// - /// - public IEnumerable GetBodyAllSlots( - EntityUid bodyId, - BodyComponent? body = null) - { - if (!Resolve(bodyId, ref body, logMissing: false) - || body.RootContainer.ContainedEntity is null) - { - yield break; - } - - foreach (var slot in GetAllBodyPartSlots(body.RootContainer.ContainedEntity.Value)) - { - yield return slot; - } - } - - private void OnBeingGibbed(Entity ent, ref BeingGibbedEvent args) - { - var parts = GetBodyChildren(ent, ent).ToArray(); - args.Giblets.EnsureCapacity(args.Giblets.Capacity + parts.Length); - foreach (var part in parts) - { - foreach (var organ in GetPartOrgans(part.Id, part.Component)) - { - args.Giblets.Add(organ.Id); - } - PredictedQueueDel(part.Id); - } - - foreach (var item in _inventory.GetHandOrInventoryEntities(ent.Owner)) - { - args.Giblets.Add(item); - } - } -} diff --git a/Content.Shared/Body/Systems/SharedBodySystem.Organs.cs b/Content.Shared/Body/Systems/SharedBodySystem.Organs.cs deleted file mode 100644 index f83dd50c998..00000000000 --- a/Content.Shared/Body/Systems/SharedBodySystem.Organs.cs +++ /dev/null @@ -1,212 +0,0 @@ -using System.Diagnostics.CodeAnalysis; -using Content.Shared.Body.Components; -using Content.Shared.Body.Events; -using Content.Shared.Body.Organ; -using Content.Shared.Body.Part; -using Robust.Shared.Containers; - -namespace Content.Shared.Body.Systems; - -public partial class SharedBodySystem -{ - private void AddOrgan( - Entity organEnt, - EntityUid bodyUid, - EntityUid parentPartUid) - { - organEnt.Comp.Body = bodyUid; - var addedEv = new OrganAddedEvent(parentPartUid); - RaiseLocalEvent(organEnt, ref addedEv); - - if (organEnt.Comp.Body is not null) - { - var addedInBodyEv = new OrganAddedToBodyEvent(bodyUid, parentPartUid); - RaiseLocalEvent(organEnt, ref addedInBodyEv); - } - - Dirty(organEnt, organEnt.Comp); - } - - private void RemoveOrgan(Entity organEnt, EntityUid parentPartUid) - { - var removedEv = new OrganRemovedEvent(parentPartUid); - RaiseLocalEvent(organEnt, ref removedEv); - - if (organEnt.Comp.Body is { Valid: true } bodyUid) - { - var removedInBodyEv = new OrganRemovedFromBodyEvent(bodyUid, parentPartUid); - RaiseLocalEvent(organEnt, ref removedInBodyEv); - } - - organEnt.Comp.Body = null; - Dirty(organEnt, organEnt.Comp); - } - - /// - /// Creates the specified organ slot on the parent entity. - /// - private OrganSlot? CreateOrganSlot(Entity parentEnt, string slotId) - { - if (!Resolve(parentEnt, ref parentEnt.Comp, logMissing: false)) - return null; - - Containers.EnsureContainer(parentEnt, GetOrganContainerId(slotId)); - var slot = new OrganSlot(slotId); - parentEnt.Comp.Organs.Add(slotId, slot); - return slot; - } - - /// - /// Attempts to create the specified organ slot on the specified parent if it exists. - /// - public bool TryCreateOrganSlot( - EntityUid? parent, - string slotId, - [NotNullWhen(true)] out OrganSlot? slot, - BodyPartComponent? part = null) - { - slot = null; - - if (parent is null || !Resolve(parent.Value, ref part, logMissing: false)) - { - return false; - } - - Containers.EnsureContainer(parent.Value, GetOrganContainerId(slotId)); - slot = new OrganSlot(slotId); - return part.Organs.TryAdd(slotId, slot.Value); - } - - /// - /// Returns whether the slotId exists on the partId. - /// - public bool CanInsertOrgan( - EntityUid partId, - string slotId, - BodyPartComponent? part = null) - { - return Resolve(partId, ref part) && part.Organs.ContainsKey(slotId); - } - - /// - /// Returns whether the specified organ slot exists on the partId. - /// - public bool CanInsertOrgan( - EntityUid partId, - OrganSlot slot, - BodyPartComponent? part = null) - { - return CanInsertOrgan(partId, slot.Id, part); - } - - public bool InsertOrgan( - EntityUid partId, - EntityUid organId, - string slotId, - BodyPartComponent? part = null, - OrganComponent? organ = null) - { - if (!Resolve(organId, ref organ, logMissing: false) - || !Resolve(partId, ref part, logMissing: false) - || !CanInsertOrgan(partId, slotId, part)) - { - return false; - } - - var containerId = GetOrganContainerId(slotId); - - return Containers.TryGetContainer(partId, containerId, out var container) - && Containers.Insert(organId, container); - } - - /// - /// Removes the organ if it is inside of a body part. - /// - public bool RemoveOrgan(EntityUid organId, OrganComponent? organ = null) - { - if (!Containers.TryGetContainingContainer((organId, null, null), out var container)) - return false; - - var parent = container.Owner; - - return HasComp(parent) - && Containers.Remove(organId, container); - } - - /// - /// Tries to add this organ to any matching slot on this body part. - /// - public bool AddOrganToFirstValidSlot( - EntityUid partId, - EntityUid organId, - BodyPartComponent? part = null, - OrganComponent? organ = null) - { - if (!Resolve(partId, ref part, logMissing: false) - || !Resolve(organId, ref organ, logMissing: false)) - { - return false; - } - - foreach (var slotId in part.Organs.Keys) - { - InsertOrgan(partId, organId, slotId, part, organ); - return true; - } - - return false; - } - - /// - /// Returns a list of Entity<, > - /// for each organ of the body - /// - /// The component that we want to return - /// The body to check the organs of - public List> GetBodyOrganEntityComps( - Entity entity) - where T : IComponent - { - if (!Resolve(entity, ref entity.Comp)) - return new List>(); - - var query = GetEntityQuery(); - var list = new List>(3); - foreach (var organ in GetBodyOrgans(entity.Owner, entity.Comp)) - { - if (query.TryGetComponent(organ.Id, out var comp)) - list.Add((organ.Id, comp, organ.Component)); - } - - return list; - } - - /// - /// Tries to get a list of ValueTuples of and OrganComponent on each organs - /// in the given body. - /// - /// The body entity id to check on. - /// The list of components. - /// The body to check for organs on. - /// The component to check for. - /// Whether any were found. - public bool TryGetBodyOrganEntityComps( - Entity entity, - [NotNullWhen(true)] out List>? comps) - where T : IComponent - { - if (!Resolve(entity.Owner, ref entity.Comp)) - { - comps = null; - return false; - } - - comps = GetBodyOrganEntityComps(entity); - - if (comps.Count != 0) - return true; - - comps = null; - return false; - } -} diff --git a/Content.Shared/Body/Systems/SharedBodySystem.Parts.cs b/Content.Shared/Body/Systems/SharedBodySystem.Parts.cs deleted file mode 100644 index f7876501d41..00000000000 --- a/Content.Shared/Body/Systems/SharedBodySystem.Parts.cs +++ /dev/null @@ -1,803 +0,0 @@ -using System.Diagnostics.CodeAnalysis; -using System.Linq; -using Content.Shared.Body.Components; -using Content.Shared.Body.Events; -using Content.Shared.Body.Organ; -using Content.Shared.Body.Part; -using Content.Shared.Damage; -using Content.Shared.Damage.Prototypes; -using Content.Shared.Movement.Components; -using Content.Shared.Standing; -using Robust.Shared.Containers; -using Robust.Shared.Prototypes; -using Robust.Shared.Utility; - -namespace Content.Shared.Body.Systems; - -public partial class SharedBodySystem -{ - private static readonly ProtoId BloodlossDamageType = "Bloodloss"; - private void InitializeParts() - { - // TODO: This doesn't handle comp removal on child ents. - - // If you modify this also see the Body partial for root parts. - SubscribeLocalEvent(OnBodyPartInserted); - SubscribeLocalEvent(OnBodyPartRemoved); - } - - private void OnBodyPartInserted(Entity ent, ref EntInsertedIntoContainerMessage args) - { - // Body part inserted into another body part. - var insertedUid = args.Entity; - var slotId = args.Container.ID; - - if (ent.Comp.Body is null) - return; - - if (TryComp(insertedUid, out BodyPartComponent? part)) - { - AddPart(ent.Comp.Body.Value, (insertedUid, part), slotId); - RecursiveBodyUpdate((insertedUid, part), ent.Comp.Body.Value); - } - - if (TryComp(insertedUid, out OrganComponent? organ)) - AddOrgan((insertedUid, organ), ent.Comp.Body.Value, ent); - } - - private void OnBodyPartRemoved(Entity ent, ref EntRemovedFromContainerMessage args) - { - // Body part removed from another body part. - var removedUid = args.Entity; - var slotId = args.Container.ID; - - DebugTools.Assert(!TryComp(removedUid, out BodyPartComponent? b) || b.Body == ent.Comp.Body); - DebugTools.Assert(!TryComp(removedUid, out OrganComponent? o) || o.Body == ent.Comp.Body); - - if (TryComp(removedUid, out BodyPartComponent? part) && part.Body is not null) - { - RemovePart(part.Body.Value, (removedUid, part), slotId); - RecursiveBodyUpdate((removedUid, part), null); - } - - if (TryComp(removedUid, out OrganComponent? organ)) - RemoveOrgan((removedUid, organ), ent); - } - - private void RecursiveBodyUpdate(Entity ent, EntityUid? bodyUid) - { - ent.Comp.Body = bodyUid; - Dirty(ent, ent.Comp); - - foreach (var slotId in ent.Comp.Organs.Keys) - { - if (!Containers.TryGetContainer(ent, GetOrganContainerId(slotId), out var container)) - continue; - - foreach (var organ in container.ContainedEntities) - { - if (!TryComp(organ, out OrganComponent? organComp)) - continue; - - Dirty(organ, organComp); - - if (organComp.Body is { Valid: true } oldBodyUid) - { - var removedEv = new OrganRemovedFromBodyEvent(oldBodyUid, ent); - RaiseLocalEvent(organ, ref removedEv); - } - - organComp.Body = bodyUid; - if (bodyUid is not null) - { - var addedEv = new OrganAddedToBodyEvent(bodyUid.Value, ent); - RaiseLocalEvent(organ, ref addedEv); - } - } - } - - foreach (var slotId in ent.Comp.Children.Keys) - { - if (!Containers.TryGetContainer(ent, GetPartSlotContainerId(slotId), out var container)) - continue; - - foreach (var containedUid in container.ContainedEntities) - { - if (TryComp(containedUid, out BodyPartComponent? childPart)) - RecursiveBodyUpdate((containedUid, childPart), bodyUid); - } - } - } - - protected virtual void AddPart( - Entity bodyEnt, - Entity partEnt, - string slotId) - { - Dirty(partEnt, partEnt.Comp); - partEnt.Comp.Body = bodyEnt; - - var ev = new BodyPartAddedEvent(slotId, partEnt); - RaiseLocalEvent(bodyEnt, ref ev); - - AddLeg(partEnt, bodyEnt); - } - - protected virtual void RemovePart( - Entity bodyEnt, - Entity partEnt, - string slotId) - { - Resolve(bodyEnt, ref bodyEnt.Comp, logMissing: false); - Dirty(partEnt, partEnt.Comp); - partEnt.Comp.Body = null; - - var ev = new BodyPartRemovedEvent(slotId, partEnt); - RaiseLocalEvent(bodyEnt, ref ev); - - RemoveLeg(partEnt, bodyEnt); - PartRemoveDamage(bodyEnt, partEnt); - } - - private void AddLeg(Entity legEnt, Entity bodyEnt) - { - if (!Resolve(bodyEnt, ref bodyEnt.Comp, logMissing: false)) - return; - - if (legEnt.Comp.PartType == BodyPartType.Leg) - { - bodyEnt.Comp.LegEntities.Add(legEnt); - UpdateMovementSpeed(bodyEnt); - Dirty(bodyEnt, bodyEnt.Comp); - } - } - - private void RemoveLeg(Entity legEnt, Entity bodyEnt) - { - if (!Resolve(bodyEnt, ref bodyEnt.Comp, logMissing: false)) - return; - - if (legEnt.Comp.PartType != BodyPartType.Leg) - return; - - bodyEnt.Comp.LegEntities.Remove(legEnt); - UpdateMovementSpeed(bodyEnt); - Dirty(bodyEnt, bodyEnt.Comp); - - if (bodyEnt.Comp.LegEntities.Count != 0) - return; - - if (!TryComp(bodyEnt, out var standingState) - || !standingState.Standing - || !Standing.Down(bodyEnt, standingState: standingState)) - return; - - var ev = new DropHandItemsEvent(); - RaiseLocalEvent(bodyEnt, ref ev); - } - - private void PartRemoveDamage(Entity bodyEnt, Entity partEnt) - { - if (!Resolve(bodyEnt, ref bodyEnt.Comp, logMissing: false)) - return; - - if (!_timing.ApplyingState - && partEnt.Comp.IsVital - && !GetBodyChildrenOfType(bodyEnt, partEnt.Comp.PartType, bodyEnt.Comp).Any() - ) - { - // TODO BODY SYSTEM KILL : remove this when wounding and required parts are implemented properly - var damage = new DamageSpecifier(Prototypes.Index(BloodlossDamageType), 300); - Damageable.ChangeDamage(bodyEnt.Owner, damage); - } - } - - /// - /// Tries to get the parent body part to this if applicable. - /// Doesn't validate if it's a part of body system. - /// - public EntityUid? GetParentPartOrNull(EntityUid uid) - { - if (!Containers.TryGetContainingContainer((uid, null, null), out var container)) - return null; - - var parent = container.Owner; - - if (!HasComp(parent)) - return null; - - return parent; - } - - /// - /// Tries to get the parent body part and slot to this if applicable. - /// - public (EntityUid Parent, string Slot)? GetParentPartAndSlotOrNull(EntityUid uid) - { - if (!Containers.TryGetContainingContainer((uid, null, null), out var container)) - return null; - - var slotId = GetPartSlotContainerIdFromContainer(container.ID); - - if (string.IsNullOrEmpty(slotId)) - return null; - - var parent = container.Owner; - - if (!TryComp(parent, out var parentBody) - || !parentBody.Children.ContainsKey(slotId)) - return null; - - return (parent, slotId); - } - - /// - /// Tries to get the relevant parent body part to this if it exists. - /// It won't exist if this is the root body part or if it's not in a body. - /// - public bool TryGetParentBodyPart( - EntityUid partUid, - [NotNullWhen(true)] out EntityUid? parentUid, - [NotNullWhen(true)] out BodyPartComponent? parentComponent) - { - DebugTools.Assert(HasComp(partUid)); - parentUid = null; - parentComponent = null; - - if (Containers.TryGetContainingContainer((partUid, null, null), out var container) && - TryComp(container.Owner, out parentComponent)) - { - parentUid = container.Owner; - return true; - } - - return false; - } - - #region Slots - - /// - /// Creates a BodyPartSlot on the specified partUid. - /// - private BodyPartSlot? CreatePartSlot( - EntityUid partUid, - string slotId, - BodyPartType partType, - BodyPartComponent? part = null) - { - if (!Resolve(partUid, ref part, logMissing: false)) - return null; - - Containers.EnsureContainer(partUid, GetPartSlotContainerId(slotId)); - var partSlot = new BodyPartSlot(slotId, partType); - part.Children.Add(slotId, partSlot); - Dirty(partUid, part); - return partSlot; - } - - /// - /// Tries to create a BodyPartSlot on the specified partUid. - /// - /// false if not relevant or can't add it. - public bool TryCreatePartSlot( - EntityUid? partId, - string slotId, - BodyPartType partType, - [NotNullWhen(true)] out BodyPartSlot? slot, - BodyPartComponent? part = null) - { - slot = null; - - if (partId is null - || !Resolve(partId.Value, ref part, logMissing: false)) - { - return false; - } - - Containers.EnsureContainer(partId.Value, GetPartSlotContainerId(slotId)); - slot = new BodyPartSlot(slotId, partType); - - if (!part.Children.TryAdd(slotId, slot.Value)) - return false; - - Dirty(partId.Value, part); - return true; - } - - public bool TryCreatePartSlotAndAttach( - EntityUid parentId, - string slotId, - EntityUid childId, - BodyPartType partType, - BodyPartComponent? parent = null, - BodyPartComponent? child = null) - { - return TryCreatePartSlot(parentId, slotId, partType, out _, parent) - && AttachPart(parentId, slotId, childId, parent, child); - } - - #endregion - - #region RootPartManagement - - /// - /// Returns true if the partId is the root body container for the specified bodyId. - /// - public bool IsPartRoot( - EntityUid bodyId, - EntityUid partId, - BodyComponent? body = null, - BodyPartComponent? part = null) - { - return Resolve(partId, ref part) - && Resolve(bodyId, ref body) - && Containers.TryGetContainingContainer(bodyId, partId, out var container) - && container.ID == BodyRootContainerId; - } - - /// - /// Returns true if we can attach the partId to the bodyId as the root entity. - /// - public bool CanAttachToRoot( - EntityUid bodyId, - EntityUid partId, - BodyComponent? body = null, - BodyPartComponent? part = null) - { - return Resolve(bodyId, ref body) - && Resolve(partId, ref part) - && body.RootContainer.ContainedEntity is null - && bodyId != part.Body; - } - - /// - /// Returns the root part of this body if it exists. - /// - public (EntityUid Entity, BodyPartComponent BodyPart)? GetRootPartOrNull(EntityUid bodyId, BodyComponent? body = null) - { - if (!Resolve(bodyId, ref body) - || body.RootContainer.ContainedEntity is null) - { - return null; - } - - return (body.RootContainer.ContainedEntity.Value, - Comp(body.RootContainer.ContainedEntity.Value)); - } - - /// - /// Returns true if the partId can be attached to the parentId in the specified slot. - /// - public bool CanAttachPart( - EntityUid parentId, - BodyPartSlot slot, - EntityUid partId, - BodyPartComponent? parentPart = null, - BodyPartComponent? part = null) - { - return Resolve(partId, ref part, logMissing: false) - && Resolve(parentId, ref parentPart, logMissing: false) - && CanAttachPart(parentId, slot.Id, partId, parentPart, part); - } - - /// - /// Returns true if we can attach the specified partId to the parentId in the specified slot. - /// - public bool CanAttachPart( - EntityUid parentId, - string slotId, - EntityUid partId, - BodyPartComponent? parentPart = null, - BodyPartComponent? part = null) - { - return Resolve(partId, ref part, logMissing: false) - && Resolve(parentId, ref parentPart, logMissing: false) - && parentPart.Children.TryGetValue(slotId, out var parentSlotData) - && part.PartType == parentSlotData.Type - && Containers.TryGetContainer(parentId, GetPartSlotContainerId(slotId), out var container) - && Containers.CanInsert(partId, container); - } - - public bool AttachPartToRoot( - EntityUid bodyId, - EntityUid partId, - BodyComponent? body = null, - BodyPartComponent? part = null) - { - return Resolve(bodyId, ref body) - && Resolve(partId, ref part) - && CanAttachToRoot(bodyId, partId, body, part) - && Containers.Insert(partId, body.RootContainer); - } - - #endregion - - #region Attach/Detach - - /// - /// Attaches a body part to the specified body part parent. - /// - public bool AttachPart( - EntityUid parentPartId, - string slotId, - EntityUid partId, - BodyPartComponent? parentPart = null, - BodyPartComponent? part = null) - { - return Resolve(parentPartId, ref parentPart, logMissing: false) - && parentPart.Children.TryGetValue(slotId, out var slot) - && AttachPart(parentPartId, slot, partId, parentPart, part); - } - - /// - /// Attaches a body part to the specified body part parent. - /// - public bool AttachPart( - EntityUid parentPartId, - BodyPartSlot slot, - EntityUid partId, - BodyPartComponent? parentPart = null, - BodyPartComponent? part = null) - { - if (!Resolve(parentPartId, ref parentPart, logMissing: false) - || !Resolve(partId, ref part, logMissing: false) - || !CanAttachPart(parentPartId, slot.Id, partId, parentPart, part) - || !parentPart.Children.ContainsKey(slot.Id)) - { - return false; - } - - if (!Containers.TryGetContainer(parentPartId, GetPartSlotContainerId(slot.Id), out var container)) - { - DebugTools.Assert($"Unable to find body slot {slot.Id} for {ToPrettyString(parentPartId)}"); - return false; - } - - return Containers.Insert(partId, container); - } - - #endregion - - #region Misc - - public void UpdateMovementSpeed( - EntityUid bodyId, - BodyComponent? body = null, - MovementSpeedModifierComponent? movement = null) - { - if (!Resolve(bodyId, ref body, ref movement, logMissing: false) - || body.RequiredLegs <= 0) - { - return; - } - - var walkSpeed = 0f; - var sprintSpeed = 0f; - var acceleration = 0f; - foreach (var legEntity in body.LegEntities) - { - if (!TryComp(legEntity, out var legModifier)) - continue; - - walkSpeed += legModifier.WalkSpeed; - sprintSpeed += legModifier.SprintSpeed; - acceleration += legModifier.Acceleration; - } - walkSpeed /= body.RequiredLegs; - sprintSpeed /= body.RequiredLegs; - acceleration /= body.RequiredLegs; - Movement.ChangeBaseSpeed(bodyId, walkSpeed, sprintSpeed, acceleration, movement); - } - - #endregion - - #region Queries - - /// - /// Get all organs for the specified body part. - /// - public IEnumerable<(EntityUid Id, OrganComponent Component)> GetPartOrgans(EntityUid partId, BodyPartComponent? part = null) - { - if (!Resolve(partId, ref part, logMissing: false)) - yield break; - - foreach (var slotId in part.Organs.Keys) - { - var containerSlotId = GetOrganContainerId(slotId); - - if (!Containers.TryGetContainer(partId, containerSlotId, out var container)) - continue; - - foreach (var containedEnt in container.ContainedEntities) - { - if (!TryComp(containedEnt, out OrganComponent? organ)) - continue; - - yield return (containedEnt, organ); - } - } - } - - /// - /// Gets all BaseContainers for body parts on this entity and its child entities. - /// - public IEnumerable GetPartContainers(EntityUid id, BodyPartComponent? part = null) - { - if (!Resolve(id, ref part, logMissing: false) || - part.Children.Count == 0) - { - yield break; - } - - foreach (var slotId in part.Children.Keys) - { - var containerSlotId = GetPartSlotContainerId(slotId); - - if (!Containers.TryGetContainer(id, containerSlotId, out var container)) - continue; - - yield return container; - - foreach (var ent in container.ContainedEntities) - { - foreach (var childContainer in GetPartContainers(ent)) - { - yield return childContainer; - } - } - } - } - - /// - /// Returns all body part components for this entity including itself. - /// - public IEnumerable<(EntityUid Id, BodyPartComponent Component)> GetBodyPartChildren( - EntityUid partId, - BodyPartComponent? part = null) - { - if (!Resolve(partId, ref part, logMissing: false)) - yield break; - - yield return (partId, part); - - foreach (var slotId in part.Children.Keys) - { - var containerSlotId = GetPartSlotContainerId(slotId); - - if (Containers.TryGetContainer(partId, containerSlotId, out var container)) - { - foreach (var containedEnt in container.ContainedEntities) - { - if (!TryComp(containedEnt, out BodyPartComponent? childPart)) - continue; - - foreach (var value in GetBodyPartChildren(containedEnt, childPart)) - { - yield return value; - } - } - } - } - } - - /// - /// Returns all body part slots for this entity. - /// - public IEnumerable GetAllBodyPartSlots( - EntityUid partId, - BodyPartComponent? part = null) - { - if (!Resolve(partId, ref part, logMissing: false)) - yield break; - - foreach (var (slotId, slot) in part.Children) - { - yield return slot; - - var containerSlotId = GetOrganContainerId(slotId); - - if (Containers.TryGetContainer(partId, containerSlotId, out var container)) - { - foreach (var containedEnt in container.ContainedEntities) - { - if (!TryComp(containedEnt, out BodyPartComponent? childPart)) - continue; - - foreach (var subSlot in GetAllBodyPartSlots(containedEnt, childPart)) - { - yield return subSlot; - } - } - } - } - } - - /// - /// Returns true if the bodyId has any parts of this type. - /// - public bool BodyHasPartType( - EntityUid bodyId, - BodyPartType type, - BodyComponent? body = null) - { - return GetBodyChildrenOfType(bodyId, type, body).Any(); - } - - /// - /// Returns true if the parentId has the specified childId. - /// - public bool PartHasChild( - EntityUid parentId, - EntityUid childId, - BodyPartComponent? parent, - BodyPartComponent? child) - { - if (!Resolve(parentId, ref parent, logMissing: false) - || !Resolve(childId, ref child, logMissing: false)) - { - return false; - } - - foreach (var (foundId, _) in GetBodyPartChildren(parentId, parent)) - { - if (foundId == childId) - return true; - } - return false; - } - - /// - /// Returns true if the bodyId has the specified partId. - /// - public bool BodyHasChild( - EntityUid bodyId, - EntityUid partId, - BodyComponent? body = null, - BodyPartComponent? part = null) - { - return Resolve(bodyId, ref body, logMissing: false) - && body.RootContainer.ContainedEntity is not null - && Resolve(partId, ref part, logMissing: false) - && TryComp(body.RootContainer.ContainedEntity, out BodyPartComponent? rootPart) - && PartHasChild(body.RootContainer.ContainedEntity.Value, partId, rootPart, part); - } - - public IEnumerable<(EntityUid Id, BodyPartComponent Component)> GetBodyChildrenOfType( - EntityUid bodyId, - BodyPartType type, - BodyComponent? body = null) - { - foreach (var part in GetBodyChildren(bodyId, body)) - { - if (part.Component.PartType == type) - yield return part; - } - } - - /// - /// Returns a list of ValueTuples of and OrganComponent on each organ - /// in the given part. - /// - /// The part entity id to check on. - /// The part to check for organs on. - /// The component to check for. - public List<(T Comp, OrganComponent Organ)> GetBodyPartOrganComponents( - EntityUid uid, - BodyPartComponent? part = null) - where T : IComponent - { - if (!Resolve(uid, ref part)) - return new List<(T Comp, OrganComponent Organ)>(); - - var query = GetEntityQuery(); - var list = new List<(T Comp, OrganComponent Organ)>(); - - foreach (var organ in GetPartOrgans(uid, part)) - { - if (query.TryGetComponent(organ.Id, out var comp)) - list.Add((comp, organ.Component)); - } - - return list; - } - - /// - /// Tries to get a list of ValueTuples of and OrganComponent on each organs - /// in the given part. - /// - /// The part entity id to check on. - /// The list of components. - /// The part to check for organs on. - /// The component to check for. - /// Whether any were found. - public bool TryGetBodyPartOrganComponents( - EntityUid uid, - [NotNullWhen(true)] out List<(T Comp, OrganComponent Organ)>? comps, - BodyPartComponent? part = null) - where T : IComponent - { - if (!Resolve(uid, ref part)) - { - comps = null; - return false; - } - - comps = GetBodyPartOrganComponents(uid, part); - - if (comps.Count != 0) - return true; - - comps = null; - return false; - } - - /// - /// Gets the parent body part and all immediate child body parts for the partId. - /// - public IEnumerable GetBodyPartAdjacentParts( - EntityUid partId, - BodyPartComponent? part = null) - { - if (!Resolve(partId, ref part, logMissing: false)) - yield break; - - if (TryGetParentBodyPart(partId, out var parentUid, out _)) - yield return parentUid.Value; - - foreach (var slotId in part.Children.Keys) - { - var container = Containers.GetContainer(partId, GetPartSlotContainerId(slotId)); - - foreach (var containedEnt in container.ContainedEntities) - { - yield return containedEnt; - } - } - } - - public IEnumerable<(EntityUid AdjacentId, T Component)> GetBodyPartAdjacentPartsComponents( - EntityUid partId, - BodyPartComponent? part = null) - where T : IComponent - { - if (!Resolve(partId, ref part, logMissing: false)) - yield break; - - var query = GetEntityQuery(); - foreach (var adjacentId in GetBodyPartAdjacentParts(partId, part)) - { - if (query.TryGetComponent(adjacentId, out var component)) - yield return (adjacentId, component); - } - } - - public bool TryGetBodyPartAdjacentPartsComponents( - EntityUid partId, - [NotNullWhen(true)] out List<(EntityUid AdjacentId, T Component)>? comps, - BodyPartComponent? part = null) - where T : IComponent - { - if (!Resolve(partId, ref part, logMissing: false)) - { - comps = null; - return false; - } - - var query = GetEntityQuery(); - comps = new List<(EntityUid AdjacentId, T Component)>(); - - foreach (var adjacentId in GetBodyPartAdjacentParts(partId, part)) - { - if (query.TryGetComponent(adjacentId, out var component)) - comps.Add((adjacentId, component)); - } - - if (comps.Count != 0) - return true; - - comps = null; - return false; - } - - #endregion -} diff --git a/Content.Shared/Body/Systems/SharedBodySystem.cs b/Content.Shared/Body/Systems/SharedBodySystem.cs deleted file mode 100644 index f359ebc6324..00000000000 --- a/Content.Shared/Body/Systems/SharedBodySystem.cs +++ /dev/null @@ -1,77 +0,0 @@ -using Content.Shared.Damage.Systems; -using Content.Shared.Movement.Systems; -using Content.Shared.Standing; -using Robust.Shared.Containers; -using Robust.Shared.Prototypes; -using Robust.Shared.Timing; - -namespace Content.Shared.Body.Systems; - -public abstract partial class SharedBodySystem : EntitySystem -{ - /* - * See the body partial for how this works. - */ - - /// - /// Container ID prefix for any body parts. - /// - public const string PartSlotContainerIdPrefix = "body_part_slot_"; - - /// - /// Container ID for the ContainerSlot on the body entity itself. - /// - public const string BodyRootContainerId = "body_root_part"; - - /// - /// Container ID prefix for any body organs. - /// - public const string OrganSlotContainerIdPrefix = "body_organ_slot_"; - - [Dependency] private readonly IGameTiming _timing = default!; - [Dependency] protected readonly IPrototypeManager Prototypes = default!; - [Dependency] protected readonly DamageableSystem Damageable = default!; - [Dependency] protected readonly MovementSpeedModifierSystem Movement = default!; - [Dependency] protected readonly SharedContainerSystem Containers = default!; - [Dependency] protected readonly SharedTransformSystem SharedTransform = default!; - [Dependency] protected readonly StandingStateSystem Standing = default!; - - public override void Initialize() - { - base.Initialize(); - - InitializeBody(); - InitializeParts(); - } - - /// - /// Inverse of - /// - protected static string? GetPartSlotContainerIdFromContainer(string containerSlotId) - { - // This is blursed - var slotIndex = containerSlotId.IndexOf(PartSlotContainerIdPrefix, StringComparison.Ordinal); - - if (slotIndex < 0) - return null; - - var slotId = containerSlotId.Remove(slotIndex, PartSlotContainerIdPrefix.Length); - return slotId; - } - - /// - /// Gets the container Id for the specified slotId. - /// - public static string GetPartSlotContainerId(string slotId) - { - return PartSlotContainerIdPrefix + slotId; - } - - /// - /// Gets the container Id for the specified slotId. - /// - public static string GetOrganContainerId(string slotId) - { - return OrganSlotContainerIdPrefix + slotId; - } -} diff --git a/Content.Shared/Body/Systems/StomachSystem.cs b/Content.Shared/Body/Systems/StomachSystem.cs index 3d8647b14d9..ef258d3fe01 100644 --- a/Content.Shared/Body/Systems/StomachSystem.cs +++ b/Content.Shared/Body/Systems/StomachSystem.cs @@ -1,6 +1,5 @@ using Content.Shared.Body.Components; using Content.Shared.Body.Events; -using Content.Shared.Body.Organ; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.EntitySystems; diff --git a/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs b/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs index a30387a807e..3b5b07d3f94 100644 --- a/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs +++ b/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs @@ -2,7 +2,7 @@ using Content.Shared.Administration.Logs; using Content.Shared.Armor; using Content.Shared.Atmos.Rotting; -using Content.Shared.Body.Components; +using Content.Shared.Body; using Content.Shared.Changeling.Components; using Content.Shared.Damage.Components; using Content.Shared.Damage.Systems; diff --git a/Content.Shared/Clothing/LoadoutSystem.cs b/Content.Shared/Clothing/LoadoutSystem.cs index dfe6d1377ba..760c9f39d8b 100644 --- a/Content.Shared/Clothing/LoadoutSystem.cs +++ b/Content.Shared/Clothing/LoadoutSystem.cs @@ -1,5 +1,4 @@ using System.Linq; -using Content.Shared.Body.Systems; using Content.Shared.Clothing.Components; using Content.Shared.Humanoid; using Content.Shared.Preferences; @@ -29,7 +28,7 @@ public override void Initialize() base.Initialize(); // Wait until the character has all their organs before we give them their loadout - SubscribeLocalEvent(OnMapInit, after: [typeof(SharedBodySystem)]); + SubscribeLocalEvent(OnMapInit); } public static string GetJobPrototype(string? loadout) diff --git a/Content.Shared/Humanoid/HumanoidVisualLayersExtension.cs b/Content.Shared/Humanoid/HumanoidVisualLayersExtension.cs index 1365c488d88..c493ca2c04d 100644 --- a/Content.Shared/Humanoid/HumanoidVisualLayersExtension.cs +++ b/Content.Shared/Humanoid/HumanoidVisualLayersExtension.cs @@ -1,6 +1,3 @@ -using Content.Shared.Body.Components; -using Content.Shared.Body.Part; - namespace Content.Shared.Humanoid { public static class HumanoidVisualLayersExtension @@ -72,72 +69,5 @@ public static IEnumerable Sublayers(HumanoidVisualLayers l yield break; } } - - public static HumanoidVisualLayers? ToHumanoidLayers(this BodyPartComponent part) - { - switch (part.PartType) - { - case BodyPartType.Other: - break; - case BodyPartType.Torso: - return HumanoidVisualLayers.Chest; - case BodyPartType.Tail: - return HumanoidVisualLayers.Tail; - case BodyPartType.Head: - // use the Sublayers method to hide the rest of the parts, - // if that's what you're looking for - return HumanoidVisualLayers.Head; - case BodyPartType.Arm: - switch (part.Symmetry) - { - case BodyPartSymmetry.None: - break; - case BodyPartSymmetry.Left: - return HumanoidVisualLayers.LArm; - case BodyPartSymmetry.Right: - return HumanoidVisualLayers.RArm; - } - - break; - case BodyPartType.Hand: - switch (part.Symmetry) - { - case BodyPartSymmetry.None: - break; - case BodyPartSymmetry.Left: - return HumanoidVisualLayers.LHand; - case BodyPartSymmetry.Right: - return HumanoidVisualLayers.RHand; - } - - break; - case BodyPartType.Leg: - switch (part.Symmetry) - { - case BodyPartSymmetry.None: - break; - case BodyPartSymmetry.Left: - return HumanoidVisualLayers.LLeg; - case BodyPartSymmetry.Right: - return HumanoidVisualLayers.RLeg; - } - - break; - case BodyPartType.Foot: - switch (part.Symmetry) - { - case BodyPartSymmetry.None: - break; - case BodyPartSymmetry.Left: - return HumanoidVisualLayers.LFoot; - case BodyPartSymmetry.Right: - return HumanoidVisualLayers.RFoot; - } - - break; - } - - return null; - } } } diff --git a/Content.Shared/Materials/SharedMaterialReclaimerSystem.cs b/Content.Shared/Materials/SharedMaterialReclaimerSystem.cs index 7c2a3532fd4..77f157fcddc 100644 --- a/Content.Shared/Materials/SharedMaterialReclaimerSystem.cs +++ b/Content.Shared/Materials/SharedMaterialReclaimerSystem.cs @@ -1,9 +1,8 @@ using System.Linq; using Content.Shared.Administration.Logs; using Content.Shared.Audio; -using Content.Shared.Body.Components; +using Content.Shared.Body; using Content.Shared.Database; -using Content.Shared.Emag.Components; using Content.Shared.Emag.Systems; using Content.Shared.Examine; using Content.Shared.Mobs.Components; diff --git a/Content.Shared/Medical/Cryogenics/SharedCryoPodSystem.cs b/Content.Shared/Medical/Cryogenics/SharedCryoPodSystem.cs index fe9db189608..ac1a00d5798 100644 --- a/Content.Shared/Medical/Cryogenics/SharedCryoPodSystem.cs +++ b/Content.Shared/Medical/Cryogenics/SharedCryoPodSystem.cs @@ -1,5 +1,6 @@ using System.Linq; using Content.Shared.Administration.Logs; +using Content.Shared.Body; using Content.Shared.Body.Components; using Content.Shared.Body.Systems; using Content.Shared.Chemistry; diff --git a/Content.Shared/Medical/VomitSystem.cs b/Content.Shared/Medical/VomitSystem.cs index bdde1f0c98b..75d3f116bdf 100644 --- a/Content.Shared/Medical/VomitSystem.cs +++ b/Content.Shared/Medical/VomitSystem.cs @@ -1,3 +1,4 @@ +using Content.Shared.Body; using Content.Shared.Body.Components; using Content.Shared.Body.Systems; using Content.Shared.Chemistry.Components; @@ -28,7 +29,6 @@ public sealed class VomitSystem : EntitySystem [Dependency] private readonly ThirstSystem _thirst = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedBloodstreamSystem _bloodstream = default!; - [Dependency] private readonly SharedBodySystem _body = default!; [Dependency] private readonly SharedForensicsSystem _forensics = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedPuddleSystem _puddle = default!; @@ -38,7 +38,7 @@ public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(TryBodyVomitSolution); + SubscribeLocalEvent>(TryVomitSolution); } private const float ChemMultiplier = 0.1f; @@ -50,24 +50,12 @@ public override void Initialize() private readonly SoundSpecifier _vomitSound = new SoundCollectionSpecifier(VomitCollection, AudioParams.Default.WithVariation(0.2f).WithVolume(-4f)); - private void TryBodyVomitSolution(Entity ent, ref TryVomitEvent args) + private void TryVomitSolution(Entity ent, ref BodyRelayedEvent args) { - if (args.Handled) - return; - - // Main requirement: You have a stomach - var stomachList = _body.GetBodyOrganEntityComps((ent, null)); - if (stomachList.Count == 0) - return; - - // Empty the stomach out into it - foreach (var stomach in stomachList) - { - if (_solutionContainer.ResolveSolution(stomach.Owner, StomachSystem.DefaultSolutionName, ref stomach.Comp1.Solution, out var sol)) - _solutionContainer.TryTransferSolution(stomach.Comp1.Solution.Value, args.Sol, sol.AvailableVolume); - } + if (_solutionContainer.ResolveSolution(ent.Owner, StomachSystem.DefaultSolutionName, ref ent.Comp.Solution, out var sol)) + _solutionContainer.TryTransferSolution(ent.Comp.Solution.Value, args.Args.Sol, sol.AvailableVolume); - args.Handled = true; + args.Args = args.Args with { Handled = true }; } /// diff --git a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs index ae10110ebc2..586c4f5bfdc 100644 --- a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs @@ -1,6 +1,6 @@ using Content.Shared.Administration.Logs; +using Content.Shared.Body; using Content.Shared.Body.Components; -using Content.Shared.Body.Organ; using Content.Shared.Body.Systems; using Content.Shared.Chemistry; using Content.Shared.Chemistry.Components; @@ -57,7 +57,7 @@ public sealed partial class IngestionSystem : EntitySystem [Dependency] private readonly SharedTransformSystem _transform = default!; // Body Component Dependencies - [Dependency] private readonly SharedBodySystem _body = default!; + [Dependency] private readonly BodySystem _body = default!; [Dependency] private readonly ReactiveSystem _reaction = default!; [Dependency] private readonly StomachSystem _stomach = default!; @@ -178,7 +178,7 @@ private void OnSolutionContainerChanged(Entity entity, ref Solu /// Entity being eaten /// Stomachs available to digest /// Should we also display popup text if it exists? - public bool IsDigestibleBy(EntityUid food, List> stomachs, out bool popup) + public bool IsDigestibleBy(EntityUid food, List> stomachs, out bool popup) { popup = false; var ev = new IsDigestibleEvent(); @@ -195,7 +195,7 @@ public bool IsDigestibleBy(EntityUid food, List /// Entity being eaten /// Stomachs that is attempting to digest. - public bool IsDigestibleBy(EntityUid food, Entity stomach) + public bool IsDigestibleBy(EntityUid food, Entity stomach) { var ev = new IsDigestibleEvent(); RaiseLocalEvent(food, ref ev); @@ -233,9 +233,9 @@ public bool IsDigestibleBy(EntityUid food, Entity entity, ref AttemptIngestEvent ar var food = args.Ingested; var forceFed = args.User != entity.Owner; - if (!_body.TryGetBodyOrganEntityComps(entity!, out var stomachs)) + if (!_body.TryGetOrgansWithComponent(entity!, out var stomachs)) return; // Can we digest the specific item we're trying to eat? @@ -311,7 +311,7 @@ private void OnEatingDoAfter(Entity entity, ref EatingDoAfterEven if (!CanConsume(args.User, entity, food, out var solution, out _)) return; - if (!_body.TryGetBodyOrganEntityComps(entity!, out var stomachs)) + if (!_body.TryGetOrgansWithComponent(entity!, out var stomachs)) return; var forceFed = args.User != entity.Owner; @@ -321,7 +321,7 @@ private void OnEatingDoAfter(Entity entity, ref EatingDoAfterEven foreach (var ent in stomachs) { var owner = ent.Owner; - if (!_solutionContainer.ResolveSolution(owner, StomachSystem.DefaultSolutionName, ref ent.Comp1.Solution, out var stomachSol)) + if (!_solutionContainer.ResolveSolution(owner, StomachSystem.DefaultSolutionName, ref ent.Comp.Solution, out var stomachSol)) continue; if (stomachSol.AvailableVolume <= highestAvailable) diff --git a/Content.Shared/Traits/Assorted/LegsParalyzedSystem.cs b/Content.Shared/Traits/Assorted/LegsParalyzedSystem.cs index 929ee3a19fb..0ab661dce97 100644 --- a/Content.Shared/Traits/Assorted/LegsParalyzedSystem.cs +++ b/Content.Shared/Traits/Assorted/LegsParalyzedSystem.cs @@ -1,5 +1,4 @@ -using Content.Shared.Body.Systems; -using Content.Shared.Buckle.Components; +using Content.Shared.Buckle.Components; using Content.Shared.Movement.Events; using Content.Shared.Movement.Systems; using Content.Shared.Standing; @@ -11,7 +10,6 @@ public sealed class LegsParalyzedSystem : EntitySystem { [Dependency] private readonly MovementSpeedModifierSystem _movementSpeedModifierSystem = default!; [Dependency] private readonly StandingStateSystem _standingSystem = default!; - [Dependency] private readonly SharedBodySystem _bodySystem = default!; public override void Initialize() { @@ -32,7 +30,6 @@ private void OnStartup(EntityUid uid, LegsParalyzedComponent component, Componen private void OnShutdown(EntityUid uid, LegsParalyzedComponent component, ComponentShutdown args) { _standingSystem.Stand(uid); - _bodySystem.UpdateMovementSpeed(uid); } private void OnBuckled(EntityUid uid, LegsParalyzedComponent component, ref BuckledEvent args) diff --git a/Resources/Locale/en-US/kitchen/components/microwave-component.ftl b/Resources/Locale/en-US/kitchen/components/microwave-component.ftl index 0603b3c8463..8d30ea1a5f3 100644 --- a/Resources/Locale/en-US/kitchen/components/microwave-component.ftl +++ b/Resources/Locale/en-US/kitchen/components/microwave-component.ftl @@ -5,9 +5,7 @@ microwave-component-interact-using-broken = It's broken! microwave-component-interact-using-container-full = Container is full microwave-component-interact-using-transfer-success = Transferred {$amount}u microwave-component-interact-using-transfer-fail = That won't work! -microwave-component-suicide-multi-head-others-message = {$victim} is trying to cook their heads! microwave-component-suicide-others-message = {$victim} is trying to cook their head! -microwave-component-suicide-multi-head-message = You cook your heads! microwave-component-suicide-message = You cook your head! microwave-component-interact-full = It's full. microwave-component-interact-item-too-big = { CAPITALIZE(THE($item)) } is too big to fit in the microwave! diff --git a/Resources/Maps/Salvage/ruin-cargo-salvage.yml b/Resources/Maps/Salvage/ruin-cargo-salvage.yml index cbc2bdd9edb..b44f212b9ed 100644 --- a/Resources/Maps/Salvage/ruin-cargo-salvage.yml +++ b/Resources/Maps/Salvage/ruin-cargo-salvage.yml @@ -1983,14 +1983,14 @@ entities: - type: Transform pos: 7.5,6.5 parent: 16 -- proto: LeftArmSkeleton +- proto: OrganSkeletonPersonArmLeft entities: - uid: 175 components: - type: Transform pos: 6.8180027,-5.7761726 parent: 16 -- proto: LeftHandSkeleton +- proto: OrganSkeletonPersonHandLeft entities: - uid: 174 components: diff --git a/Resources/Prototypes/Body/Animals/animal.yml b/Resources/Prototypes/Body/Animals/animal.yml new file mode 100644 index 00000000000..bf8d15c9211 --- /dev/null +++ b/Resources/Prototypes/Body/Animals/animal.yml @@ -0,0 +1,55 @@ +- type: entity + id: OrganAnimalMetabolizer + abstract: true + components: + - type: Metabolizer + metabolizerTypes: [ Animal ] + +- type: entity + parent: OrganBase + id: OrganAnimal + abstract: true + suffix: Animal + +- type: entity + parent: OrganAnimal + id: OrganAnimalInternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Human/organs.rsi + +- type: entity + parent: [ OrganBaseLungs, OrganAnimalInternal, OrganAnimalMetabolizer ] + id: OrganAnimalLungs + +- type: entity + parent: [ OrganBaseHeart, OrganAnimalInternal, OrganAnimalMetabolizer ] + id: OrganAnimalHeart + +- type: entity + parent: [ OrganBaseStomach, OrganAnimalInternal, OrganAnimalMetabolizer ] + id: OrganAnimalStomach + +- type: entity + parent: [ OrganBaseLiver, OrganAnimalInternal, OrganAnimalMetabolizer ] + id: OrganAnimalLiver + +- type: entity + parent: [ OrganBaseKidneys, OrganAnimalInternal, OrganAnimalMetabolizer ] + id: OrganAnimalKidneys + +- type: entity + id: BaseMobAnimal + abstract: true + components: + - type: Body + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganAnimalLungs + - id: OrganAnimalHeart + - id: OrganAnimalStomach + - id: OrganAnimalLiver + - id: OrganAnimalKidneys diff --git a/Resources/Prototypes/Body/Animals/bloodsucker.yml b/Resources/Prototypes/Body/Animals/bloodsucker.yml new file mode 100644 index 00000000000..cfe8c1b6c76 --- /dev/null +++ b/Resources/Prototypes/Body/Animals/bloodsucker.yml @@ -0,0 +1,34 @@ +- type: entity + id: OrganBloodsucker + abstract: true + suffix: bloodsucker + components: + - type: Metabolizer + metabolizerTypes: [ Bloodsucker ] + +- type: entity + id: OrganBloodsuckerStomach + parent: [ OrganBloodsucker, OrganAnimalStomach ] + +- type: entity + id: OrganBloodsuckerLiver + parent: [ OrganBloodsucker, OrganAnimalLiver ] + +- type: entity + id: OrganBloodsuckerHeart + parent: [ OrganBloodsucker, OrganAnimalHeart ] + +- type: entity + id: BaseMobBloodsucker + abstract: true + components: + - type: Body + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganAnimalLungs + - id: OrganBloodsuckerHeart + - id: OrganBloodsuckerStomach + - id: OrganBloodsuckerLiver + - id: OrganAnimalKidneys diff --git a/Resources/Prototypes/Body/Animals/hemocyanin.yml b/Resources/Prototypes/Body/Animals/hemocyanin.yml new file mode 100644 index 00000000000..aa3093097e6 --- /dev/null +++ b/Resources/Prototypes/Body/Animals/hemocyanin.yml @@ -0,0 +1,14 @@ +- type: entity + id: BaseMobHemocyanin + abstract: true + components: + - type: Body + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganAnimalLungs + - id: OrganArachnidHeart + - id: OrganAnimalStomach + - id: OrganAnimalLiver + - id: OrganAnimalKidneys diff --git a/Resources/Prototypes/Body/Animals/mothroach.yml b/Resources/Prototypes/Body/Animals/mothroach.yml new file mode 100644 index 00000000000..679639bea22 --- /dev/null +++ b/Resources/Prototypes/Body/Animals/mothroach.yml @@ -0,0 +1,14 @@ +- type: entity + id: BaseMobMothroach + abstract: true + components: + - type: Body + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganAnimalLungs + - id: OrganAnimalHeart + - id: OrganMothStomach + - id: OrganAnimalLiver + - id: OrganAnimalKidneys diff --git a/Resources/Prototypes/Body/Animals/rat.yml b/Resources/Prototypes/Body/Animals/rat.yml new file mode 100644 index 00000000000..e8bf585c663 --- /dev/null +++ b/Resources/Prototypes/Body/Animals/rat.yml @@ -0,0 +1,22 @@ +- type: entity + parent: OrganAnimalLungs + id: OrganRatLungs + suffix: Rat + components: + - type: Metabolizer + metabolizerTypes: [ Rat ] + +- type: entity + id: BaseMobRat + abstract: true + components: + - type: Body + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganRatLungs + - id: OrganAnimalHeart + - id: OrganAnimalStomach + - id: OrganAnimalLiver + - id: OrganAnimalKidneys diff --git a/Resources/Prototypes/Body/Animals/ruminant.yml b/Resources/Prototypes/Body/Animals/ruminant.yml new file mode 100644 index 00000000000..a6ca80975e8 --- /dev/null +++ b/Resources/Prototypes/Body/Animals/ruminant.yml @@ -0,0 +1,30 @@ +- type: entity + parent: [ OrganBaseStomach, OrganAnimalInternal, OrganAnimalMetabolizer ] + id: OrganRuminantStomach + suffix: Ruminant + components: + - type: Stomach + specialDigestible: + tags: + - Ruminant + - Wheat + - BananaPeel + - type: SolutionContainerManager + solutions: + stomach: + maxVol: 80 + +- type: entity + id: BaseMobRuminant + abstract: true + components: + - type: Body + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganAnimalLungs + - id: OrganAnimalHeart + - id: OrganRuminantStomach + - id: OrganAnimalLiver + - id: OrganAnimalKidneys diff --git a/Resources/Prototypes/Body/Animals/slimes.yml b/Resources/Prototypes/Body/Animals/slimes.yml new file mode 100644 index 00000000000..6d028640fa2 --- /dev/null +++ b/Resources/Prototypes/Body/Animals/slimes.yml @@ -0,0 +1,11 @@ +- type: entity + id: BaseMobSlimes + abstract: true + components: + - type: Body + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganSlimePersonCore + - id: OrganSlimePersonLungs diff --git a/Resources/Prototypes/Body/Organs/Animal/animal.yml b/Resources/Prototypes/Body/Organs/Animal/animal.yml deleted file mode 100644 index b31904437e0..00000000000 --- a/Resources/Prototypes/Body/Organs/Animal/animal.yml +++ /dev/null @@ -1,162 +0,0 @@ -- type: entity - id: BaseAnimalOrgan - parent: BaseItem - abstract: true - components: - - type: Organ - - type: Edible - - type: Sprite - sprite: Mobs/Species/Human/organs.rsi - - type: StaticPrice - price: 50 - - type: SolutionContainerManager - solutions: - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 - - type: FlavorProfile - flavors: - - chicken # everything kinda tastes like chicken - - type: Tag - tags: - - Meat - -- type: entity - id: OrganAnimalLungs - parent: BaseAnimalOrgan - name: animal lungs - categories: [ HideSpawnMenu ] - components: - - type: Sprite - layers: - - state: lung-l - - state: lung-r - - type: Organ - - type: Lung - - type: Metabolizer - removeEmpty: true - solutionOnBody: false - solution: "Lung" - metabolizerTypes: [ Animal ] - groups: - - id: Gas - rateModifier: 100.0 - - type: SolutionContainerManager - solutions: - Lung: - maxVol: 100.0 - canReact: false - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 - - type: Item - size: Small - heldPrefix: lungs - -- type: entity - id: OrganAnimalStomach - parent: BaseAnimalOrgan - name: animal stomach - categories: [ HideSpawnMenu ] - components: - - type: Sprite - state: stomach - - type: Organ - - type: SolutionContainerManager - solutions: - stomach: - maxVol: 40 - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 - - type: Stomach - - type: Metabolizer - maxReagents: 3 - metabolizerTypes: [ Animal ] - groups: - - id: Food - - id: Drink - - type: Item - size: Small - heldPrefix: stomach - -- type: entity - id: OrganMouseStomach - parent: OrganAnimalStomach - categories: [ HideSpawnMenu ] - components: - - type: SolutionContainerManager - solutions: - stomach: - maxVol: 30 - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 - - type: Item - size: Small - heldPrefix: stomach - -- type: entity - id: OrganAnimalLiver - parent: BaseAnimalOrgan - name: animal liver - categories: [ HideSpawnMenu ] - components: - - type: Sprite - state: liver - - type: Organ - - type: Metabolizer - maxReagents: 1 - metabolizerTypes: [ Animal ] - groups: - - id: Alcohol - - type: Item - size: Small - heldPrefix: liver - -- type: entity - id: OrganAnimalHeart - parent: BaseAnimalOrgan - name: animal heart - categories: [ HideSpawnMenu ] - components: - - type: Sprite - state: heart-on - - type: Organ - - type: Metabolizer - maxReagents: 2 - metabolizerTypes: [ Animal ] - groups: - - id: Medicine - - id: Poison - - id: Narcotic - - type: Item - size: Small - heldPrefix: heart - -- type: entity - id: OrganAnimalKidneys - parent: BaseAnimalOrgan - name: animal kidneys - categories: [ HideSpawnMenu ] - components: - - type: Sprite - layers: - - state: kidney-l - - state: kidney-r - - type: Organ - - type: Metabolizer - maxReagents: 5 - metabolizerTypes: [ Animal ] - removeEmpty: true - - type: Item - size: Small - heldPrefix: kidneys diff --git a/Resources/Prototypes/Body/Organs/Animal/bloodsucker.yml b/Resources/Prototypes/Body/Organs/Animal/bloodsucker.yml deleted file mode 100644 index 6e9b4d5900a..00000000000 --- a/Resources/Prototypes/Body/Organs/Animal/bloodsucker.yml +++ /dev/null @@ -1,23 +0,0 @@ -- type: entity - id: OrganBloodsuckerStomach - parent: OrganAnimalStomach - categories: [ HideSpawnMenu ] - components: - - type: Metabolizer - metabolizerTypes: [ Bloodsucker ] - -- type: entity - id: OrganBloodsuckerLiver - parent: OrganAnimalLiver - categories: [ HideSpawnMenu ] - components: - - type: Metabolizer - metabolizerTypes: [ Bloodsucker ] - -- type: entity - id: OrganBloodsuckerHeart - parent: OrganAnimalHeart - categories: [ HideSpawnMenu ] - components: - - type: Metabolizer - metabolizerTypes: [ Bloodsucker ] diff --git a/Resources/Prototypes/Body/Organs/Animal/ruminant.yml b/Resources/Prototypes/Body/Organs/Animal/ruminant.yml deleted file mode 100644 index 3dd34f1bb6e..00000000000 --- a/Resources/Prototypes/Body/Organs/Animal/ruminant.yml +++ /dev/null @@ -1,21 +0,0 @@ -- type: entity - id: OrganAnimalRuminantStomach - parent: OrganAnimalStomach - name: ruminant stomach - categories: [ HideSpawnMenu ] - components: - - type: Stomach - specialDigestible: - tags: - - Ruminant - - Wheat - - BananaPeel - - type: SolutionContainerManager - solutions: - stomach: - maxVol: 80 - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 diff --git a/Resources/Prototypes/Body/Organs/Animal/slimes.yml b/Resources/Prototypes/Body/Organs/Animal/slimes.yml deleted file mode 100644 index 0c72945c7ad..00000000000 --- a/Resources/Prototypes/Body/Organs/Animal/slimes.yml +++ /dev/null @@ -1,67 +0,0 @@ -- type: entity - id: SentientSlimesCore - parent: [BaseItem, OrganHumanBrain] - name: sentient slimes core - description: "The source of incredible, unending gooeyness." - components: - - type: Sprite - sprite: Mobs/Species/Slime/organs.rsi - state: brain-slime - - type: Stomach - - type: Metabolizer - maxReagents: 3 - metabolizerTypes: [ Slime ] - removeEmpty: true - groups: - - id: Food - - id: Drink - - id: Medicine - - id: Poison - - id: Narcotic - - id: Alcohol - rateModifier: 2 - - type: SolutionContainerManager - solutions: - stomach: - maxVol: 30.0 - food: - maxVol: 5 - reagents: - - ReagentId: GreyMatter - Quantity: 5 - -- type: entity - id: OrganSlimesLungs - parent: BaseHumanOrgan - name: slimes gas sacs - description: "Collects nitrogen, which slime cells use for maintenance." - components: - - type: Sprite - sprite: Mobs/Species/Slime/organs.rsi - layers: - - state: lung-l-slime - - state: lung-r-slime - - type: Lung - alert: LowNitrogen - - type: Metabolizer - removeEmpty: true - solutionOnBody: false - solution: "Lung" - metabolizerTypes: [ Slime ] - groups: - - id: Gas - rateModifier: 100.0 - - type: SolutionContainerManager - solutions: - organ: - reagents: - - ReagentId: Nutriment - Quantity: 10 - Lung: - maxVol: 100.0 - canReact: false - food: - maxVol: 5 - reagents: - - ReagentId: Slime - Quantity: 5 diff --git a/Resources/Prototypes/Body/Organs/arachnid.yml b/Resources/Prototypes/Body/Organs/arachnid.yml deleted file mode 100644 index 337ead6e09d..00000000000 --- a/Resources/Prototypes/Body/Organs/arachnid.yml +++ /dev/null @@ -1,169 +0,0 @@ -- type: entity - id: BaseArachnidOrgan - parent: BaseItem - abstract: true - components: - - type: Sprite - sprite: Mobs/Species/Arachnid/organs.rsi - - type: Organ - - type: Edible - - type: Extractable - grindableSolutionName: organ - - type: SolutionContainerManager - solutions: - organ: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 10 - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 - - type: Tag - tags: - - Meat - -- type: entity - id: OrganArachnidStomach - parent: OrganAnimalStomach - description: "Gross. This is hard to stomach." - components: - - type: Sprite - sprite: Mobs/Species/Arachnid/organs.rsi - state: stomach - - type: Item - size: Small - heldPrefix: stomach - - type: Stomach - digestionDelay: 30 - - type: SolutionContainerManager - solutions: - stomach: - maxVol: 50 - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 - - type: Metabolizer - updateInterval: 1.5 - -- type: entity - id: OrganArachnidLungs - parent: BaseArachnidOrgan - name: lungs - description: "Filters oxygen from an atmosphere... just more greedily." - components: - - type: Sprite - layers: - - state: lung-l - - state: lung-r - - type: Lung - - type: Metabolizer - updateInterval: 1.5 - removeEmpty: true - solutionOnBody: false - solution: "Lung" - metabolizerTypes: [ Human ] - groups: - - id: Gas - rateModifier: 100.0 - - type: SolutionContainerManager - solutions: - organ: - reagents: - - ReagentId: Nutriment - Quantity: 10 - Lung: - maxVol: 100.0 - canReact: false - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 - -- type: entity - id: OrganArachnidHeart - parent: BaseArachnidOrgan - name: heart - description: "A disgustingly persistent little biological pump made for spiders." - components: - - type: Sprite - state: heart-on - - type: Item - size: Small - heldPrefix: heart - - type: Metabolizer - updateInterval: 1.5 - maxReagents: 2 - metabolizerTypes: [Arachnid] - groups: - - id: Medicine - - id: Poison - - id: Narcotic - -- type: entity - id: OrganArachnidLiver - parent: BaseHumanOrgan - name: liver - description: "Pairing suggestion: chianti and fava beans." - categories: [ HideSpawnMenu ] - components: - - type: Item - size: Small - heldPrefix: liver - - type: Sprite - state: liver - - type: Metabolizer # The liver metabolizes certain chemicals only, like alcohol. - updateInterval: 1.5 - maxReagents: 1 - metabolizerTypes: [Animal] - groups: - - id: Alcohol - -- type: entity - id: OrganArachnidKidneys - parent: BaseHumanOrgan - name: kidneys - description: "Filters toxins from the bloodstream." - categories: [ HideSpawnMenu ] - components: - - type: Sprite - layers: - - state: kidney-l - - state: kidney-r - # The kidneys just remove anything that doesn't currently have any metabolisms, as a stopgap. - - type: Item - size: Small - heldPrefix: kidneys - - type: Metabolizer - updateInterval: 1.5 - maxReagents: 5 - metabolizerTypes: [Animal] - removeEmpty: true - -- type: entity - id: OrganArachnidEyes - parent: BaseArachnidOrgan - name: eyes - description: "Two was already too many." - components: - - type: Sprite - layers: - - state: eyeball-l - - state: eyeball-r - - type: Item - size: Small - heldPrefix: eyeballs - -- type: entity - id: OrganArachnidTongue - parent: BaseArachnidOrgan - name: tongue - description: "A fleshy muscle mostly used for lying." - components: - - type: Sprite - state: tongue diff --git a/Resources/Prototypes/Body/Organs/diona.yml b/Resources/Prototypes/Body/Organs/diona.yml deleted file mode 100644 index 81cee7c442f..00000000000 --- a/Resources/Prototypes/Body/Organs/diona.yml +++ /dev/null @@ -1,203 +0,0 @@ -- type: entity - id: BaseDionaOrgan - parent: BaseItem - abstract: true - components: - - type: Sprite - sprite: Mobs/Species/Diona/organs.rsi - - type: Organ - - type: Edible - - type: Extractable - grindableSolutionName: organ - - type: SolutionContainerManager - solutions: - organ: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 10 - food: - maxVol: 5 - reagents: - - ReagentId: Cellulose - Quantity: 5 - - type: FlavorProfile - flavors: - - people - -- type: entity - id: OrganDionaBrain - parent: [BaseDionaOrgan, OrganHumanBrain] - name: brain - description: "The central hub of a diona's pseudo-neurological activity, its root-like tendrils search for its former body." - components: - - type: Item - size: Small - heldPrefix: brain - - type: Sprite - state: brain - - type: SolutionContainerManager - solutions: - organ: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 10 - Lung: - maxVol: 100 - canReact: False - food: - maxVol: 5 - reagents: - - ReagentId: GreyMatter - Quantity: 5 - -- type: entity - id: OrganDionaEyes - parent: BaseDionaOrgan - name: eyes - description: "I see you!" - components: - - type: Sprite - layers: - - state: eyeball-l - - state: eyeball-r - -- type: entity - id: OrganDionaStomach - parent: BaseDionaOrgan - name: stomach - description: "The diona's equivalent of a stomach, it reeks of asparagus and vinegar." - components: - - type: Sprite - state: stomach - - type: SolutionContainerManager - solutions: - stomach: - maxVol: 50 - food: - maxVol: 5 - reagents: - - ReagentId: Cellulose - Quantity: 5 - - type: Stomach - - type: Metabolizer - maxReagents: 6 - metabolizerTypes: [ Plant ] - removeEmpty: true - groups: - - id: Food - - id: Drink - - id: Medicine - - id: Poison - - id: Narcotic - - id: Alcohol - - type: Item - size: Small - heldPrefix: stomach - -- type: entity - id: OrganDionaLungs - parent: BaseDionaOrgan - name: lungs - description: "A spongy mess of slimy, leaf-like structures. Capable of breathing both carbon dioxide and oxygen." - components: - - type: Sprite - state: lungs - - type: Item - size: Small - heldPrefix: lungs - - type: Lung - - type: Metabolizer - removeEmpty: true - solutionOnBody: false - solution: "Lung" - metabolizerTypes: [ Plant ] - groups: - - id: Gas - rateModifier: 100.0 - - type: SolutionContainerManager - solutions: - organ: - maxVol: 10 - reagents: - - ReagentId: Nutriment - Quantity: 10 - Lung: - maxVol: 100 - canReact: False - food: - maxVol: 5 - reagents: - - ReagentId: Cellulose - Quantity: 5 - -# Organs that turn into nymphs on removal -- type: entity - id: OrganDionaBrainNymph - parent: OrganDionaBrain - categories: [ HideSpawnMenu ] - name: brain - description: "The source of incredible, unending intelligence. Honk." - components: - - type: Brain - - type: Nymph # This will make the organs turn into a nymph when they're removed. - entityPrototype: OrganDionaNymphBrain - transferMind: true - -- type: entity - id: OrganDionaStomachNymph - parent: OrganDionaStomach - categories: [ HideSpawnMenu ] - name: stomach - description: "Gross. This is hard to stomach." - components: - - type: Nymph - entityPrototype: OrganDionaNymphStomach - -- type: entity - id: OrganDionaLungsNymph - parent: OrganDionaLungs - categories: [ HideSpawnMenu ] - name: lungs - description: "Filters oxygen from an atmosphere, which is then sent into the bloodstream to be used as an electron carrier." - components: - - type: Nymph - entityPrototype: OrganDionaNymphLungs - -# Nymphs that the organs will turn into -- type: entity - id: OrganDionaNymphBrain - parent: MobDionaNymph - categories: [ HideSpawnMenu ] - name: diona nymph - suffix: Brain - description: Contains the brain of a formerly fully-formed Diona. Killing this would kill the Diona forever. You monster. - components: - - type: IsDeadIC - - type: Body - prototype: AnimalNymphBrain - -- type: entity - id: OrganDionaNymphStomach - parent: MobDionaNymphAccent - categories: [ HideSpawnMenu ] - name: diona nymph - suffix: Stomach - description: Contains the stomach of a formerly fully-formed Diona. It doesn't taste any better for it. - components: - - type: IsDeadIC - - type: Body - prototype: AnimalNymphStomach - -- type: entity - id: OrganDionaNymphLungs - parent: MobDionaNymphAccent - categories: [ HideSpawnMenu ] - name: diona nymph - suffix: Lungs - description: Contains the lungs of a formerly fully-formed Diona. Breathtaking. - components: - - type: IsDeadIC - - type: Body - prototype: AnimalNymphLungs diff --git a/Resources/Prototypes/Body/Organs/dwarf.yml b/Resources/Prototypes/Body/Organs/dwarf.yml deleted file mode 100644 index 8da0cb1666f..00000000000 --- a/Resources/Prototypes/Body/Organs/dwarf.yml +++ /dev/null @@ -1,38 +0,0 @@ -- type: entity - id: OrganDwarfHeart - parent: OrganHumanHeart - name: dwarf heart - components: - - type: Metabolizer - metabolizerTypes: [Dwarf] - -- type: entity - id: OrganDwarfLiver - parent: OrganHumanLiver - name: dwarf liver - components: - - type: Metabolizer - metabolizerTypes: [Dwarf] - -- type: entity - id: OrganDwarfStomach - parent: OrganHumanStomach - name: dwarf stomach - components: - - type: Sprite - state: stomach - - type: Organ - - type: SolutionContainerManager - solutions: - stomach: - maxVol: 75 - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 - - type: Stomach - - type: Metabolizer - # mm very yummy - maxReagents: 5 - metabolizerTypes: [Dwarf] diff --git a/Resources/Prototypes/Body/Organs/human.yml b/Resources/Prototypes/Body/Organs/human.yml deleted file mode 100644 index c12df454118..00000000000 --- a/Resources/Prototypes/Body/Organs/human.yml +++ /dev/null @@ -1,239 +0,0 @@ -- type: entity - id: BaseHumanOrgan - parent: BaseItem - abstract: true - components: - - type: Sprite - sprite: Mobs/Species/Human/organs.rsi - - type: Organ - - type: Edible - - type: Extractable - grindableSolutionName: organ - - type: SolutionContainerManager - solutions: - organ: - reagents: - - ReagentId: Nutriment - Quantity: 10 - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 - - type: FlavorProfile - flavors: - - people - - type: Tag - tags: - - Meat - -- type: entity - id: OrganHumanBrain - parent: BaseHumanOrgan - name: brain - description: "The source of incredible, unending intelligence. Honk." - components: - - type: Sprite - state: brain - - type: Organ - - type: Input - context: "ghost" - - type: Brain - - type: InputMover - - type: Examiner - - type: BlockMovement - - type: BadFood - - type: Tag - tags: - - Meat - - type: SolutionContainerManager - solutions: - organ: - reagents: - - ReagentId: Nutriment - Quantity: 10 - food: - maxVol: 5 - reagents: - - ReagentId: GreyMatter - Quantity: 5 - - type: FlavorProfile - flavors: - - people - - type: FoodSequenceElement - entries: - Burger: Brain - Taco: Brain - - type: Item - size: Small - heldPrefix: brain - -- type: entity - id: OrganHumanEyes - parent: BaseHumanOrgan - name: eyes - description: "I see you!" - components: - - type: Sprite - layers: - - state: eyeball-l - - state: eyeball-r - - type: Item - size: Small - heldPrefix: eyeballs - -- type: entity - id: OrganHumanTongue - parent: BaseHumanOrgan - name: tongue - description: "A fleshy muscle mostly used for lying." - components: - - type: Sprite - state: tongue - -- type: entity - id: OrganHumanAppendix - parent: BaseHumanOrgan - name: appendix - components: - - type: Sprite - layers: - - state: appendix - - state: appendix-inflamed - visible: false - -- type: entity - id: OrganHumanEars - parent: BaseHumanOrgan - name: ears - description: "There are three parts to the ear. Inner, middle and outer. Only one of these parts should normally be visible." - components: - - type: Sprite - state: ears - -- type: entity - id: OrganHumanLungs - parent: BaseHumanOrgan - name: lungs - description: "Filters oxygen from an atmosphere, which is then sent into the bloodstream to be used as an electron carrier." - components: - - type: Sprite - layers: - - state: lung-l - - state: lung-r - - type: Item - size: Small - heldPrefix: lungs - - type: Lung - - type: Metabolizer - removeEmpty: true - solutionOnBody: false - solution: "Lung" - metabolizerTypes: [ Human ] - groups: - - id: Gas - rateModifier: 100.0 - - type: SolutionContainerManager - solutions: - organ: - reagents: - - ReagentId: Nutriment - Quantity: 10 - Lung: - maxVol: 100.0 - canReact: false - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 - -- type: entity - id: OrganHumanHeart - parent: BaseHumanOrgan - name: heart - description: "I feel bad for the heartless bastard who lost this." - components: - - type: Sprite - state: heart-on - # The heart 'metabolizes' medicines and poisons that aren't filtered out by other organs. - # This is done because these chemicals need to have some effect even if they aren't being filtered out of your body. - # You're technically 'immune to poison' without a heart, but.. uhh, you'll have bigger problems on your hands. - - type: Metabolizer - maxReagents: 2 - metabolizerTypes: [Human] - groups: - - id: Medicine - - id: Poison - - id: Narcotic - - type: Item - size: Small - heldPrefix: heart - -- type: entity - id: OrganHumanStomach - parent: BaseHumanOrgan - name: stomach - description: "Gross. This is hard to stomach." - components: - - type: Sprite - state: stomach - - type: Item - size: Small - heldPrefix: stomach - - type: SolutionContainerManager - solutions: - stomach: - maxVol: 50 - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 - - type: Stomach - # The stomach metabolizes stuff like foods and drinks. - # TODO: Have it work off of the ent's solution container, and move this - # to intestines instead. - - type: Metabolizer - # mm yummy - maxReagents: 3 - metabolizerTypes: [Human] - groups: - - id: Food - - id: Drink - -- type: entity - id: OrganHumanLiver - parent: BaseHumanOrgan - name: liver - description: "Pairing suggestion: chianti and fava beans." - components: - - type: Sprite - state: liver - - type: Item - size: Small - heldPrefix: liver - - type: Metabolizer # The liver metabolizes certain chemicals only, like alcohol. - maxReagents: 1 - metabolizerTypes: [Human] - groups: - - id: Alcohol - -- type: entity - id: OrganHumanKidneys - parent: BaseHumanOrgan - name: kidneys - description: "Filters toxins from the bloodstream." - components: - - type: Sprite - layers: - - state: kidney-l - - state: kidney-r - - type: Item - size: Small - heldPrefix: kidneys - # The kidneys just remove anything that doesn't currently have any metabolisms, as a stopgap. - - type: Metabolizer - maxReagents: 5 - metabolizerTypes: [Human] - removeEmpty: true diff --git a/Resources/Prototypes/Body/Organs/moth.yml b/Resources/Prototypes/Body/Organs/moth.yml deleted file mode 100644 index 4bbe151e8b1..00000000000 --- a/Resources/Prototypes/Body/Organs/moth.yml +++ /dev/null @@ -1,27 +0,0 @@ -- type: entity - id: OrganMothStomach - parent: [OrganAnimalStomach, OrganHumanStomach] - categories: [ HideSpawnMenu ] - components: - - type: Stomach - specialDigestible: - tags: - - ClothMade - - Paper - - Pill - - type: SolutionContainerManager - solutions: - stomach: - maxVol: 50 - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 - - type: Metabolizer - maxReagents: 3 - metabolizerTypes: [ Moth ] - removeEmpty: true - groups: - - id: Food - - id: Drink diff --git a/Resources/Prototypes/Body/Organs/rat.yml b/Resources/Prototypes/Body/Organs/rat.yml deleted file mode 100644 index 9d1352c72f5..00000000000 --- a/Resources/Prototypes/Body/Organs/rat.yml +++ /dev/null @@ -1,24 +0,0 @@ -- type: entity - id: OrganRatLungs - parent: OrganHumanLungs - suffix: "rat" - components: - - type: Metabolizer - metabolizerTypes: [ Rat ] - -- type: entity - id: OrganRatStomach - parent: OrganAnimalStomach - suffix: "rat" - components: - - type: SolutionContainerManager - solutions: - stomach: - maxVol: 50 - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 - - type: Sprite - state: stomach diff --git a/Resources/Prototypes/Body/Organs/reptilian.yml b/Resources/Prototypes/Body/Organs/reptilian.yml deleted file mode 100644 index 34c736aec8b..00000000000 --- a/Resources/Prototypes/Body/Organs/reptilian.yml +++ /dev/null @@ -1,23 +0,0 @@ -- type: entity - id: OrganReptilianStomach - parent: OrganAnimalStomach - categories: [ HideSpawnMenu ] - components: - - type: Stomach - specialDigestible: - tags: - - Fruit - - ReptilianFood - - Meat - - Pill - - Crayon - - Paper - - type: SolutionContainerManager - solutions: - stomach: - maxVol: 50 - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 diff --git a/Resources/Prototypes/Body/Organs/slime.yml b/Resources/Prototypes/Body/Organs/slime.yml deleted file mode 100644 index 7f1a96a7f05..00000000000 --- a/Resources/Prototypes/Body/Organs/slime.yml +++ /dev/null @@ -1,78 +0,0 @@ -- type: entity - id: SentientSlimeCore - parent: [BaseItem, OrganHumanBrain] - name: sentient slime core - description: "The source of incredible, unending gooeyness." - components: - - type: Sprite - sprite: Mobs/Species/Slime/organs.rsi - state: brain-slime - - type: Stomach - - type: Metabolizer - maxReagents: 6 - metabolizerTypes: [ Slime ] - removeEmpty: true - groups: - - id: Food - - id: Drink - - id: Medicine - - id: Poison - - id: Narcotic - - id: Alcohol - rateModifier: 2.5 - - type: SolutionContainerManager - solutions: - stomach: - maxVol: 50.0 - food: - maxVol: 5 - reagents: - - ReagentId: GreyMatter - Quantity: 5 - organ: - reagents: - - ReagentId: Slime - Quantity: 10 - - type: Item - size: Small - heldPrefix: brain - - -- type: entity - id: OrganSlimeLungs - parent: BaseHumanOrgan - name: slime gas sacs - description: "Collects nitrogen, which slime cells use for maintenance." - components: - - type: Sprite - sprite: Mobs/Species/Slime/organs.rsi - layers: - - state: lung-l-slime - - state: lung-r-slime - - type: Lung - alert: LowNitrogen - - type: Metabolizer - removeEmpty: true - solutionOnBody: false - solution: "Lung" - metabolizerTypes: [ Slime ] - groups: - - id: Gas - rateModifier: 100.0 - - type: SolutionContainerManager - solutions: - organ: - reagents: - - ReagentId: Slime - Quantity: 10 - Lung: - maxVol: 100.0 - canReact: false - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 - - type: Item - size: Small - heldPrefix: lungs diff --git a/Resources/Prototypes/Body/Organs/vox.yml b/Resources/Prototypes/Body/Organs/vox.yml deleted file mode 100644 index 46583004b21..00000000000 --- a/Resources/Prototypes/Body/Organs/vox.yml +++ /dev/null @@ -1,98 +0,0 @@ -- type: entity - id: OrganVoxLungs - parent: OrganHumanLungs - description: "The blue, anaerobic lungs of a vox, they intake nitrogen to breathe. Any form of gaseous oxygen is lethally toxic if breathed in." - suffix: "vox" - components: - - type: Sprite - sprite: Mobs/Species/Vox/organs.rsi - - type: Metabolizer - metabolizerTypes: [ Vox ] - - type: Lung - alert: LowNitrogen - - type: Item - size: Small - heldPrefix: lungs - -- type: entity - parent: OrganHumanStomach - id: OrganVoxStomach - name: stomach - description: "A stomach that smells of ammonia." - components: - - type: Metabolizer #Skreeeee! - metabolizerTypes: [Vox] - - type: Stomach -#Bird vs tags - specialDigestible: - tags: - - Trash - isSpecialDigestibleExclusive: false - - type: Sprite - sprite: Mobs/Species/Vox/organs.rsi - -- type: entity - parent: OrganHumanLiver - id: OrganVoxLiver - name: liver - description: "Smells flammable." - components: - - type: Metabolizer - metabolizerTypes: [Vox] - - type: Sprite - sprite: Mobs/Species/Vox/organs.rsi - -- type: entity - parent: OrganHumanHeart - id: OrganVoxHeart - name: heart - description: "The strange heart of a vox." - components: - - type: Metabolizer - metabolizerTypes: [Vox] - - type: Sprite - sprite: Mobs/Species/Vox/organs.rsi - -- type: entity - parent: OrganHumanKidneys - id: OrganVoxKidneys - name: kidney - description: "Smells flammable." - components: - - type: Metabolizer - metabolizerTypes: [Vox] - - type: Sprite - sprite: Mobs/Species/Vox/organs.rsi - -- type: entity - id: OrganVoxEyes - parent: OrganHumanEyes - name: eyes - components: - - type: Sprite - sprite: Mobs/Species/Vox/organs.rsi - - type: Item - size: Small - heldPrefix: eyeballs - -- type: entity - id: OrganVoxTongueA - parent: OrganHumanTongue - name: tongue - description: "A fleshy muscle mostly used for screaming." - components: - - type: Sprite - sprite: Mobs/Species/Vox/organs.rsi - - type: Item - size: Small - -- type: entity - id: OrganVoxTongueB - parent: OrganHumanTongue - name: tongue - description: "A fleshy muscle mostly used for screaming." - components: - - type: Sprite - sprite: Mobs/Species/Vox/organs.rsi - - type: Item - size: Small diff --git a/Resources/Prototypes/Body/Organs/vulpkanin.yml b/Resources/Prototypes/Body/Organs/vulpkanin.yml deleted file mode 100644 index a689262b514..00000000000 --- a/Resources/Prototypes/Body/Organs/vulpkanin.yml +++ /dev/null @@ -1,14 +0,0 @@ -- type: entity - id: OrganVulpkaninStomach - parent: OrganAnimalStomach - categories: [ HideSpawnMenu ] - components: - - type: SolutionContainerManager - solutions: - stomach: - maxVol: 50 - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 diff --git a/Resources/Prototypes/Body/Parts/animal.yml b/Resources/Prototypes/Body/Parts/animal.yml deleted file mode 100644 index 9672b097115..00000000000 --- a/Resources/Prototypes/Body/Parts/animal.yml +++ /dev/null @@ -1,120 +0,0 @@ -# Just copypasta of some human basic body parts for interaction, -# only differences for now is that limbs work in pairs, -# they are unextractable and can't be spawned (no surgery on Animals!?). - -- type: entity - id: PartAnimal - parent: BaseItem - name: "animal body part" - abstract: true - components: - # yes these sprites dont make sense i dont care its better than them being invisible - - type: Sprite - sprite: Mobs/Species/Reptilian/parts.rsi - - type: Damageable - damageContainer: Biological - - type: BodyPart - - type: ContainerContainer - containers: - bodypart: !type:Container - ents: [] - - type: StaticPrice - price: 50 - - type: Tag - tags: - - Trash - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 3 - - ReagentId: Blood - Quantity: 10 - -- type: entity - id: HandsAnimal - name: animal hands - parent: PartAnimal - categories: [ HideSpawnMenu ] - components: - - type: Sprite - layers: - - state: l_hand - - state: r_hand - - type: BodyPart - partType: Hand - symmetry: Left - -- type: entity - id: LegsAnimal - name: animal legs - parent: PartAnimal - categories: [ HideSpawnMenu ] - components: - - type: Sprite - layers: - - state: l_leg - - state: r_leg - - type: BodyPart - partType: Leg - - type: MovementBodyPart - -- type: entity - id: FeetAnimal - name: animal feet - parent: PartAnimal - categories: [ HideSpawnMenu ] - components: - - type: Sprite - layers: - - state: r_foot - - state: l_foot - - type: BodyPart - partType: Foot - -- type: entity - id: TorsoAnimal - name: animal torso - parent: PartAnimal - categories: [ HideSpawnMenu ] - components: - - type: Sprite - layers: - - state: torso_m - - type: BodyPart - partType: Torso - - type: Damageable - damageContainer: Biological - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 10 - - ReagentId: Blood - Quantity: 20 - -- type: entity - parent: PartAnimal - id: LeftHandSmartCorgi - name: corgi hand - categories: [ HideSpawnMenu ] - components: - - type: Sprite - layers: - - state: l_hand - - type: BodyPart - partType: Hand - symmetry: Left - -- type: entity - parent: PartAnimal - id: RightHandSmartCorgi - name: corgi hand - categories: [ HideSpawnMenu ] - components: - - type: Sprite - layers: - - state: r_hand - - type: BodyPart - partType: Hand - symmetry: Right diff --git a/Resources/Prototypes/Body/Parts/arachnid.yml b/Resources/Prototypes/Body/Parts/arachnid.yml deleted file mode 100644 index d275bd91c63..00000000000 --- a/Resources/Prototypes/Body/Parts/arachnid.yml +++ /dev/null @@ -1,121 +0,0 @@ -# TODO: Add descriptions (many) -# TODO BODY: Part damage -- type: entity - id: PartArachnid - parent: [BaseItem, BasePart] - name: "arachnid body part" - abstract: true - components: - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 3 - - ReagentId: CopperBlood - Quantity: 10 - -- type: entity - id: TorsoArachnid - name: "arachnid torso" - parent: [PartArachnid, BaseTorso] - components: - - type: Sprite - sprite: Mobs/Species/Arachnid/parts.rsi - state: "torso_m" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 10 - - ReagentId: CopperBlood - Quantity: 20 - -- type: entity - id: HeadArachnid - name: "arachnid head" - parent: [PartArachnid, BaseHead] - components: - - type: Sprite - sprite: Mobs/Species/Arachnid/parts.rsi - state: "head_m" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 5 - - ReagentId: CopperBlood - Quantity: 10 - -- type: entity - id: LeftArmArachnid - name: "left arachnid arm" - parent: [PartArachnid, BaseLeftArm] - components: - - type: Sprite - sprite: Mobs/Species/Arachnid/parts.rsi - state: "l_arm" - -- type: entity - id: RightArmArachnid - name: "right arachnid arm" - parent: [PartArachnid, BaseRightArm] - components: - - type: Sprite - sprite: Mobs/Species/Arachnid/parts.rsi - state: "r_arm" - -- type: entity - id: LeftHandArachnid - name: "left arachnid hand" - parent: [PartArachnid, BaseLeftHand] - components: - - type: Sprite - sprite: Mobs/Species/Arachnid/parts.rsi - state: "l_hand" - -- type: entity - id: RightHandArachnid - name: "right arachnid hand" - parent: [PartArachnid, BaseRightHand] - components: - - type: Sprite - sprite: Mobs/Species/Arachnid/parts.rsi - state: "r_hand" - -- type: entity - id: LeftLegArachnid - name: "left arachnid leg" - parent: [PartArachnid, BaseLeftLeg] - components: - - type: Sprite - sprite: Mobs/Species/Arachnid/parts.rsi - state: "l_leg" - - type: MovementBodyPart - -- type: entity - id: RightLegArachnid - name: "right arachnid leg" - parent: [PartArachnid, BaseRightLeg] - components: - - type: Sprite - sprite: Mobs/Species/Arachnid/parts.rsi - state: "r_leg" - - type: MovementBodyPart - -- type: entity - id: LeftFootArachnid - name: "left arachnid foot" - parent: [PartArachnid, BaseLeftFoot] - components: - - type: Sprite - sprite: Mobs/Species/Arachnid/parts.rsi - state: "l_foot" - -- type: entity - id: RightFootArachnid - name: "right arachnid foot" - parent: [PartArachnid, BaseRightFoot] - components: - - type: Sprite - sprite: Mobs/Species/Arachnid/parts.rsi - state: "r_foot" diff --git a/Resources/Prototypes/Body/Parts/base.yml b/Resources/Prototypes/Body/Parts/base.yml deleted file mode 100644 index 8e41ba927d9..00000000000 --- a/Resources/Prototypes/Body/Parts/base.yml +++ /dev/null @@ -1,123 +0,0 @@ -# TODO: Add descriptions (many) -# TODO BODY: Part damage -- type: entity - id: BasePart - parent: BaseItem - name: "body part" - abstract: true - components: - - type: Damageable - damageContainer: Biological - - type: BodyPart - - type: ContainerContainer - containers: - bodypart: !type:Container - ents: [] - - type: StaticPrice - price: 100 - - type: Tag - tags: - - Trash - -- type: entity - id: BaseTorso - name: "torso" - parent: BasePart - abstract: true - components: - - type: BodyPart - partType: Torso - -- type: entity - id: BaseHead - name: "head" - parent: BasePart - abstract: true - components: - - type: BodyPart - partType: Head - vital: true - - type: Input - context: "ghost" - -- type: entity - id: BaseLeftArm - name: "left arm" - parent: BasePart - abstract: true - components: - - type: BodyPart - partType: Arm - symmetry: Left - -- type: entity - id: BaseRightArm - name: "right arm" - parent: BasePart - abstract: true - components: - - type: BodyPart - partType: Arm - symmetry: Right - -- type: entity - id: BaseLeftHand - name: "left hand" - parent: BasePart - abstract: true - components: - - type: BodyPart - partType: Hand - symmetry: Left - -- type: entity - id: BaseRightHand - name: "right hand" - parent: BasePart - abstract: true - components: - - type: BodyPart - partType: Hand - symmetry: Right - -- type: entity - id: BaseLeftLeg - name: "left leg" - parent: BasePart - abstract: true - components: - - type: BodyPart - partType: Leg - symmetry: Left - - type: MovementBodyPart - -- type: entity - id: BaseRightLeg - name: "right leg" - parent: BasePart - abstract: true - components: - - type: BodyPart - partType: Leg - symmetry: Right - - type: MovementBodyPart - -- type: entity - id: BaseLeftFoot - name: "left foot" - parent: BasePart - abstract: true - components: - - type: BodyPart - partType: Foot - symmetry: Left - -- type: entity - id: BaseRightFoot - name: "right foot" - parent: BasePart - abstract: true - components: - - type: BodyPart - partType: Foot - symmetry: Right diff --git a/Resources/Prototypes/Body/Parts/diona.yml b/Resources/Prototypes/Body/Parts/diona.yml deleted file mode 100644 index 5257512aaab..00000000000 --- a/Resources/Prototypes/Body/Parts/diona.yml +++ /dev/null @@ -1,97 +0,0 @@ -- type: entity - id: PartDiona - parent: [BaseItem, BasePart] - name: "diona body part" - abstract: true - components: - - type: Sprite - sprite: Mobs/Species/Diona/parts.rsi - -- type: entity - id: TorsoDiona - name: "diona torso" - parent: [PartDiona, BaseTorso] - components: - - type: Sprite - state: "torso_m" - -- type: entity - id: HeadDiona - name: "diona head" - parent: [PartDiona, BaseHead] - components: - - type: Sprite - state: "head_m" - -- type: entity - id: LeftArmDiona - name: "left diona arm" - parent: [PartDiona, BaseLeftArm] - components: - - type: Sprite - state: "l_arm" - -- type: entity - id: RightArmDiona - name: "right diona arm" - parent: [PartDiona, BaseRightArm] - components: - - type: Sprite - state: "r_arm" - -- type: entity - id: LeftHandDiona - name: "left diona hand" - parent: [PartDiona, BaseLeftHand] - components: - - type: Sprite - state: "l_hand" - -- type: entity - id: RightHandDiona - name: "right diona hand" - parent: [PartDiona, BaseRightHand] - components: - - type: Sprite - state: "r_hand" - -- type: entity - id: LeftLegDiona - name: "left diona leg" - parent: [PartDiona, BaseLeftLeg] - components: - - type: Sprite - state: "l_leg" - -- type: entity - id: RightLegDiona - name: "right diona leg" - parent: [PartDiona, BaseRightLeg] - components: - - type: Sprite - state: "r_leg" - - type: BodyPart - partType: Leg - symmetry: Right - -- type: entity - id: LeftFootDiona - name: "left diona foot" - parent: [PartDiona, BaseLeftFoot] - components: - - type: Sprite - state: "l_foot" - - type: BodyPart - partType: Foot - symmetry: Left - -- type: entity - id: RightFootDiona - name: "right diona foot" - parent: [PartDiona, BaseRightFoot] - components: - - type: Sprite - state: "r_foot" - - type: BodyPart - partType: Foot - symmetry: Right diff --git a/Resources/Prototypes/Body/Parts/gingerbread.yml b/Resources/Prototypes/Body/Parts/gingerbread.yml deleted file mode 100644 index f95e66145be..00000000000 --- a/Resources/Prototypes/Body/Parts/gingerbread.yml +++ /dev/null @@ -1,117 +0,0 @@ -- type: entity - id: PartGingerbread - parent: [BaseItem, BasePart] - name: "gingerbread body part" - abstract: true - components: - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Nutriment - Quantity: 3 - - ReagentId: Sugar - Quantity: 10 - -- type: entity - id: TorsoGingerbread - name: "gingerbread torso" - parent: [PartGingerbread, BaseTorso] - components: - - type: Sprite - sprite: Mobs/Species/Gingerbread/parts.rsi - state: "torso_m" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Nutriment - Quantity: 10 - - ReagentId: Sugar - Quantity: 20 - -- type: entity - id: HeadGingerbread - name: "gingerbread head" - parent: [PartGingerbread, BaseHead] - components: - - type: Sprite - sprite: Mobs/Species/Gingerbread/parts.rsi - state: "head_m" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Nutriment - Quantity: 5 - - ReagentId: Sugar - Quantity: 10 - -- type: entity - id: LeftArmGingerbread - name: "left gingerbread arm" - parent: [PartGingerbread, BaseLeftArm] - components: - - type: Sprite - sprite: Mobs/Species/Gingerbread/parts.rsi - state: "l_arm" - -- type: entity - id: RightArmGingerbread - name: "right gingerbread arm" - parent: [PartGingerbread, BaseRightArm] - components: - - type: Sprite - sprite: Mobs/Species/Gingerbread/parts.rsi - state: "r_arm" - -- type: entity - id: LeftHandGingerbread - name: "left gingerbread hand" - parent: [PartGingerbread, BaseLeftHand] - components: - - type: Sprite - sprite: Mobs/Species/Gingerbread/parts.rsi - state: "l_hand" - -- type: entity - id: RightHandGingerbread - name: "right gingerbread hand" - parent: [PartGingerbread, BaseRightHand] - components: - - type: Sprite - sprite: Mobs/Species/Gingerbread/parts.rsi - state: "r_hand" - -- type: entity - id: LeftLegGingerbread - name: "left gingerbread leg" - parent: [PartGingerbread, BaseLeftLeg] - components: - - type: Sprite - sprite: Mobs/Species/Gingerbread/parts.rsi - state: "l_leg" - -- type: entity - id: RightLegGingerbread - name: "right gingerbread leg" - parent: [PartGingerbread, BaseRightLeg] - components: - - type: Sprite - sprite: Mobs/Species/Gingerbread/parts.rsi - state: "r_leg" - -- type: entity - id: LeftFootGingerbread - name: "left gingerbread foot" - parent: [PartGingerbread, BaseLeftFoot] - components: - - type: Sprite - sprite: Mobs/Species/Gingerbread/parts.rsi - state: "l_foot" - -- type: entity - id: RightFootGingerbread - name: "right gingerbread foot" - parent: [PartGingerbread, BaseRightFoot] - components: - - type: Sprite - sprite: Mobs/Species/Gingerbread/parts.rsi - state: "r_foot" diff --git a/Resources/Prototypes/Body/Parts/human.yml b/Resources/Prototypes/Body/Parts/human.yml deleted file mode 100644 index a1510fcdbb1..00000000000 --- a/Resources/Prototypes/Body/Parts/human.yml +++ /dev/null @@ -1,119 +0,0 @@ -# TODO: Add descriptions (many) -# TODO BODY: Part damage -- type: entity - id: PartHuman - parent: [BaseItem, BasePart] - name: "human body part" - abstract: true - components: - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 3 - - ReagentId: Blood - Quantity: 10 - -- type: entity - id: TorsoHuman - name: "human torso" - parent: [PartHuman, BaseTorso] - components: - - type: Sprite - sprite: Mobs/Species/Human/parts.rsi - state: "torso_m" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 10 - - ReagentId: Blood - Quantity: 20 - -- type: entity - id: HeadHuman - name: "human head" - parent: [PartHuman, BaseHead] - components: - - type: Sprite - sprite: Mobs/Species/Human/parts.rsi - state: "head_m" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 5 - - ReagentId: Blood - Quantity: 10 - -- type: entity - id: LeftArmHuman - name: "left human arm" - parent: [PartHuman, BaseLeftArm] - components: - - type: Sprite - sprite: Mobs/Species/Human/parts.rsi - state: "l_arm" - -- type: entity - id: RightArmHuman - name: "right human arm" - parent: [PartHuman, BaseRightArm] - components: - - type: Sprite - sprite: Mobs/Species/Human/parts.rsi - state: "r_arm" - -- type: entity - id: LeftHandHuman - name: "left human hand" - parent: [PartHuman, BaseLeftHand] - components: - - type: Sprite - sprite: Mobs/Species/Human/parts.rsi - state: "l_hand" - -- type: entity - id: RightHandHuman - name: "right human hand" - parent: [PartHuman, BaseRightHand] - components: - - type: Sprite - sprite: Mobs/Species/Human/parts.rsi - state: "r_hand" - -- type: entity - id: LeftLegHuman - name: "left human leg" - parent: [PartHuman, BaseLeftLeg] - components: - - type: Sprite - sprite: Mobs/Species/Human/parts.rsi - state: "l_leg" - -- type: entity - id: RightLegHuman - name: "right human leg" - parent: [PartHuman, BaseRightLeg] - components: - - type: Sprite - sprite: Mobs/Species/Human/parts.rsi - state: "r_leg" - -- type: entity - id: LeftFootHuman - name: "left human foot" - parent: [PartHuman, BaseLeftFoot] - components: - - type: Sprite - sprite: Mobs/Species/Human/parts.rsi - state: "l_foot" - -- type: entity - id: RightFootHuman - name: "right human foot" - parent: [PartHuman, BaseRightFoot] - components: - - type: Sprite - sprite: Mobs/Species/Human/parts.rsi - state: "r_foot" diff --git a/Resources/Prototypes/Body/Parts/moth.yml b/Resources/Prototypes/Body/Parts/moth.yml deleted file mode 100644 index bb96430383a..00000000000 --- a/Resources/Prototypes/Body/Parts/moth.yml +++ /dev/null @@ -1,120 +0,0 @@ -# TODO: Add descriptions (many) -# TODO BODY: Part damage -- type: entity - id: PartMoth - parent: [BaseItem, BasePart] - name: "moth body part" - abstract: true - components: - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 3 - - ReagentId: Blood - Quantity: 10 - -- type: entity - id: TorsoMoth - name: "moth torso" - parent: [PartMoth, BaseTorso] - components: - - type: Sprite - sprite: Mobs/Species/Moth/parts.rsi - state: "torso_m" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 10 - - ReagentId: Blood - Quantity: 20 - - -- type: entity - id: HeadMoth - name: "moth head" - parent: [PartMoth, BaseHead] - components: - - type: Sprite - sprite: Mobs/Species/Moth/parts.rsi - state: "head_m" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 5 - - ReagentId: Blood - Quantity: 10 - -- type: entity - id: LeftArmMoth - name: "left moth arm" - parent: [PartMoth, BaseLeftArm] - components: - - type: Sprite - sprite: Mobs/Species/Moth/parts.rsi - state: "l_arm" - -- type: entity - id: RightArmMoth - name: "right moth arm" - parent: [PartMoth, BaseRightArm] - components: - - type: Sprite - sprite: Mobs/Species/Moth/parts.rsi - state: "r_arm" - -- type: entity - id: LeftHandMoth - name: "left moth hand" - parent: [PartMoth, BaseLeftHand] - components: - - type: Sprite - sprite: Mobs/Species/Moth/parts.rsi - state: "l_hand" - -- type: entity - id: RightHandMoth - name: "right moth hand" - parent: [PartMoth, BaseRightHand] - components: - - type: Sprite - sprite: Mobs/Species/Moth/parts.rsi - state: "r_hand" - -- type: entity - id: LeftLegMoth - name: "left moth leg" - parent: [PartMoth, BaseLeftLeg] - components: - - type: Sprite - sprite: Mobs/Species/Moth/parts.rsi - state: "l_leg" - -- type: entity - id: RightLegMoth - name: "right moth leg" - parent: [PartMoth, BaseRightLeg] - components: - - type: Sprite - sprite: Mobs/Species/Moth/parts.rsi - state: "r_leg" - -- type: entity - id: LeftFootMoth - name: "left moth foot" - parent: [PartMoth, BaseLeftFoot] - components: - - type: Sprite - sprite: Mobs/Species/Moth/parts.rsi - state: "l_foot" - -- type: entity - id: RightFootMoth - name: "right moth foot" - parent: [PartMoth, BaseRightFoot] - components: - - type: Sprite - sprite: Mobs/Species/Moth/parts.rsi - state: "r_foot" diff --git a/Resources/Prototypes/Body/Parts/rat.yml b/Resources/Prototypes/Body/Parts/rat.yml deleted file mode 100644 index bd51e006f70..00000000000 --- a/Resources/Prototypes/Body/Parts/rat.yml +++ /dev/null @@ -1,20 +0,0 @@ -# Just copypasta of some animal basic body parts for interaction, -# It's basically as animals except a different torso with different organs -- type: entity - id: TorsoRat - name: "animal torso" - parent: PartAnimal - categories: [ HideSpawnMenu ] - components: - - type: BodyPart - partType: Torso - - type: Damageable - damageContainer: Biological - - type: Tag - tags: - - Trash - # TODO get a proper rat king & servant torso sprite. - # currently their torso is just a small dead rat.... - - type: Sprite - sprite: Mobs/Animals/mouse.rsi - state: splat-0 diff --git a/Resources/Prototypes/Body/Parts/reptilian.yml b/Resources/Prototypes/Body/Parts/reptilian.yml deleted file mode 100644 index a299636352a..00000000000 --- a/Resources/Prototypes/Body/Parts/reptilian.yml +++ /dev/null @@ -1,119 +0,0 @@ -# TODO: Add descriptions (many) -# TODO BODY: Part damage -- type: entity - id: PartReptilian - parent: [BaseItem, BasePart] - name: "reptilian body part" - abstract: true - components: - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 3 - - ReagentId: Blood - Quantity: 10 - -- type: entity - id: TorsoReptilian - name: "reptilian torso" - parent: [PartReptilian, BaseTorso] - components: - - type: Sprite - sprite: Mobs/Species/Reptilian/parts.rsi - state: "torso_m" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 10 - - ReagentId: Blood - Quantity: 20 - -- type: entity - id: HeadReptilian - name: "reptilian head" - parent: [PartReptilian, BaseHead] - components: - - type: Sprite - sprite: Mobs/Species/Reptilian/parts.rsi - state: "head_m" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 5 - - ReagentId: Blood - Quantity: 10 - -- type: entity - id: LeftArmReptilian - name: "left reptilian arm" - parent: [PartReptilian, BaseLeftArm] - components: - - type: Sprite - sprite: Mobs/Species/Reptilian/parts.rsi - state: "l_arm" - -- type: entity - id: RightArmReptilian - name: "right reptilian arm" - parent: [PartReptilian, BaseRightArm] - components: - - type: Sprite - sprite: Mobs/Species/Reptilian/parts.rsi - state: "r_arm" - -- type: entity - id: LeftHandReptilian - name: "left reptilian hand" - parent: [PartReptilian, BaseLeftHand] - components: - - type: Sprite - sprite: Mobs/Species/Reptilian/parts.rsi - state: "l_hand" - -- type: entity - id: RightHandReptilian - name: "right reptilian hand" - parent: [PartReptilian, BaseRightHand] - components: - - type: Sprite - sprite: Mobs/Species/Reptilian/parts.rsi - state: "r_hand" - -- type: entity - id: LeftLegReptilian - name: "left reptilian leg" - parent: [PartReptilian, BaseLeftLeg] - components: - - type: Sprite - sprite: Mobs/Species/Reptilian/parts.rsi - state: "l_leg" - -- type: entity - id: RightLegReptilian - name: "right reptilian leg" - parent: [PartReptilian, BaseRightLeg] - components: - - type: Sprite - sprite: Mobs/Species/Reptilian/parts.rsi - state: "r_leg" - -- type: entity - id: LeftFootReptilian - name: "left reptilian foot" - parent: [PartReptilian, BaseLeftFoot] - components: - - type: Sprite - sprite: Mobs/Species/Reptilian/parts.rsi - state: "l_foot" - -- type: entity - id: RightFootReptilian - name: "right reptilian foot" - parent: [PartReptilian, BaseRightFoot] - components: - - type: Sprite - sprite: Mobs/Species/Reptilian/parts.rsi - state: "r_foot" diff --git a/Resources/Prototypes/Body/Parts/silicon.yml b/Resources/Prototypes/Body/Parts/silicon.yml deleted file mode 100644 index 9e6d8268c70..00000000000 --- a/Resources/Prototypes/Body/Parts/silicon.yml +++ /dev/null @@ -1,144 +0,0 @@ -- type: entity - id: PartSilicon - parent: BaseItem - abstract: true - components: - - type: Sprite - sprite: Objects/Specific/Robotics/cyborg_parts.rsi - - type: Icon - sprite: Objects/Specific/Robotics/cyborg_parts.rsi - - type: Damageable - damageContainer: Inorganic - - type: BodyPart - - type: ContainerContainer - containers: - bodypart: !type:Container - ents: [] - - type: StaticPrice - price: 5 - - type: Tag - tags: - - Trash - - type: PhysicalComposition - materialComposition: - Steel: 25 - - type: GuideHelp - guides: - - Cyborgs - - Robotics - -- type: entity - id: LeftArmBorg - parent: PartSilicon - name: cyborg left arm - components: - - type: BodyPart - partType: Hand - symmetry: Left - - type: Sprite - state: borg_l_arm - - type: Icon - state: borg_l_arm - - type: Tag - tags: - - Trash - - BorgArm - - BorgLArm - - type: Item - heldPrefix: borg-arm - -- type: entity - id: RightArmBorg - parent: PartSilicon - name: cyborg right arm - components: - - type: BodyPart - partType: Hand - symmetry: Right - - type: Sprite - state: borg_r_arm - - type: Icon - state: borg_r_arm - - type: Tag - tags: - - Trash - - BorgArm - - BorgRArm - - type: Item - heldPrefix: borg-arm - -- type: entity - id: LeftLegBorg - parent: PartSilicon - name: cyborg left leg - components: - - type: BodyPart - partType: Leg - symmetry: Left - - type: Sprite - state: borg_l_leg - - type: Icon - state: borg_l_leg - - type: Tag - tags: - - Trash - - BorgLeg - - BorgLLeg - - type: Item - heldPrefix: borg-leg - -- type: entity - id: RightLegBorg - parent: PartSilicon - name: cyborg right leg - components: - - type: BodyPart - partType: Leg - symmetry: Right - - type: Sprite - state: borg_r_leg - - type: Icon - state: borg_r_leg - - type: Tag - tags: - - Trash - - BorgLeg - - BorgRLeg - - type: Item - heldPrefix: borg-leg - -- type: entity - id: LightHeadBorg - parent: PartSilicon - name: cyborg head - components: - - type: BodyPart - partType: Head - - type: Sprite - state: borg_head - - type: Icon - state: borg_head - - type: Tag - tags: - - Trash - - BorgHead - - type: Item - heldPrefix: borg-head - -- type: entity - id: TorsoBorg - parent: PartSilicon - name: cyborg torso - components: - - type: BodyPart - partType: Torso - - type: Sprite - state: borg_chest - - type: Icon - state: borg_chest - - type: Tag - tags: - - Trash - - BorgTorso - - type: Item - heldPrefix: borg-chest diff --git a/Resources/Prototypes/Body/Parts/skeleton.yml b/Resources/Prototypes/Body/Parts/skeleton.yml deleted file mode 100644 index 378c4263dcf..00000000000 --- a/Resources/Prototypes/Body/Parts/skeleton.yml +++ /dev/null @@ -1,196 +0,0 @@ -# TODO BODY: Part damage -- type: entity - id: PartSkeleton - parent: BaseItem - name: "skeleton body part" - abstract: true - components: - - type: Damageable - damageContainer: Biological - - type: BodyPart - - type: ContainerContainer - containers: - bodypart: !type:Container - ents: [] - - type: StaticPrice - price: 20 - - type: Tag - tags: - - Trash - -- type: entity - id: TorsoSkeleton - name: "skeleton torso" - parent: PartSkeleton - components: - - type: Sprite - sprite: Mobs/Species/Skeleton/parts.rsi - state: "torso_m" - - type: Icon - sprite: Mobs/Species/Skeleton/parts.rsi - state: "torso_m" - - type: BodyPart - partType: Torso - -- type: entity - id: HeadSkeleton - name: "skull" - description: Alas poor Yorick... - parent: [ PartSkeleton, BaseMob ] - components: - - type: Sprite - sprite: Mobs/Species/Skeleton/parts.rsi - state: "skull_icon" - - type: Icon - sprite: Mobs/Species/Skeleton/parts.rsi - state: "skull_icon" - - type: BodyPart - partType: Head - - type: BlockMovement - - type: Input - context: "human" - - type: Speech - speechVerb: Skeleton - speechSounds: Alto - - type: SkeletonAccent - - type: Actions - - type: Vocal - sounds: - Male: Skeleton - Female: Skeleton - Unsexed: Skeleton - - type: Emoting - - type: Grammar - attributes: - proper: true - - type: Examiner - - type: DoAfter - - type: MobState - allowedStates: - - Alive - - type: Tag - tags: - - MindTransferTarget - - Head - -- type: entity - id: LeftArmSkeleton - name: "left skeleton arm" - parent: PartSkeleton - components: - - type: Sprite - sprite: Mobs/Species/Skeleton/parts.rsi - state: "l_arm" - - type: Icon - sprite: Mobs/Species/Skeleton/parts.rsi - state: "l_arm" - - type: BodyPart - partType: Arm - symmetry: Left - -- type: entity - id: RightArmSkeleton - name: "right skeleton arm" - parent: PartSkeleton - components: - - type: Sprite - sprite: Mobs/Species/Skeleton/parts.rsi - state: "r_arm" - - type: Icon - sprite: Mobs/Species/Skeleton/parts.rsi - state: "r_arm" - - type: BodyPart - partType: Arm - symmetry: Right - -- type: entity - id: LeftHandSkeleton - name: "left skeleton hand" - parent: PartSkeleton - components: - - type: Sprite - sprite: Mobs/Species/Skeleton/parts.rsi - state: "l_hand" - - type: Icon - sprite: Mobs/Species/Skeleton/parts.rsi - state: "l_hand" - - type: BodyPart - partType: Hand - symmetry: Left - -- type: entity - id: RightHandSkeleton - name: "right skeleton hand" - parent: PartSkeleton - components: - - type: Sprite - sprite: Mobs/Species/Skeleton/parts.rsi - state: "r_hand" - - type: Icon - sprite: Mobs/Species/Skeleton/parts.rsi - state: "r_hand" - - type: BodyPart - partType: Hand - symmetry: Right - -- type: entity - id: LeftLegSkeleton - name: "left skeleton leg" - parent: PartSkeleton - components: - - type: Sprite - sprite: Mobs/Species/Skeleton/parts.rsi - state: "l_leg" - - type: Icon - sprite: Mobs/Species/Skeleton/parts.rsi - state: "l_leg" - - type: BodyPart - partType: Leg - symmetry: Left - - type: MovementBodyPart - -- type: entity - id: RightLegSkeleton - name: "right skeleton leg" - parent: PartSkeleton - components: - - type: Sprite - sprite: Mobs/Species/Skeleton/parts.rsi - state: "r_leg" - - type: Icon - sprite: Mobs/Species/Skeleton/parts.rsi - state: "r_leg" - - type: BodyPart - partType: Leg - symmetry: Right - - type: MovementBodyPart - -- type: entity - id: LeftFootSkeleton - name: "left skeleton foot" - parent: PartSkeleton - components: - - type: Sprite - sprite: Mobs/Species/Skeleton/parts.rsi - state: "l_foot" - - type: Icon - sprite: Mobs/Species/Skeleton/parts.rsi - state: "l_foot" - - type: BodyPart - partType: Foot - symmetry: Left - -- type: entity - id: RightFootSkeleton - name: "right skeleton foot" - parent: PartSkeleton - components: - - type: Sprite - sprite: Mobs/Species/Skeleton/parts.rsi - state: "r_foot" - - type: Icon - sprite: Mobs/Species/Skeleton/parts.rsi - state: "r_foot" - - type: BodyPart - partType: Foot - symmetry: Right diff --git a/Resources/Prototypes/Body/Parts/slime.yml b/Resources/Prototypes/Body/Parts/slime.yml deleted file mode 100644 index 4b0e94b008f..00000000000 --- a/Resources/Prototypes/Body/Parts/slime.yml +++ /dev/null @@ -1,96 +0,0 @@ -# TODO BODY: Part damage -- type: entity - id: PartSlime - parent: [BaseItem, BasePart] - name: "slime body part" - abstract: true - -- type: entity - id: TorsoSlime - name: "slime torso" - parent: [PartSlime, BaseTorso] - components: - - type: Sprite - sprite: Mobs/Species/Slime/parts.rsi - state: "torso_m" - -- type: entity - id: HeadSlime - name: "slime head" - parent: [PartSlime, BaseHead] - components: - - type: Sprite - sprite: Mobs/Species/Slime/parts.rsi - state: "head_m" - -- type: entity - id: LeftArmSlime - name: "left slime arm" - parent: [PartSlime, BaseLeftArm] - components: - - type: Sprite - sprite: Mobs/Species/Slime/parts.rsi - state: "l_arm" - -- type: entity - id: RightArmSlime - name: "right slime arm" - parent: [PartSlime, BaseRightArm] - components: - - type: Sprite - sprite: Mobs/Species/Slime/parts.rsi - state: "r_arm" - -- type: entity - id: LeftHandSlime - name: "left slime hand" - parent: [PartSlime, BaseLeftHand] - components: - - type: Sprite - sprite: Mobs/Species/Slime/parts.rsi - state: "l_hand" - -- type: entity - id: RightHandSlime - name: "right slime hand" - parent: [PartSlime, BaseRightHand] - components: - - type: Sprite - sprite: Mobs/Species/Slime/parts.rsi - state: "r_hand" - -- type: entity - id: LeftLegSlime - name: "left slime leg" - parent: [PartSlime, BaseLeftLeg] - components: - - type: Sprite - sprite: Mobs/Species/Slime/parts.rsi - state: "l_leg" - -- type: entity - id: RightLegSlime - name: "right slime leg" - parent: [PartSlime, BaseRightLeg] - components: - - type: Sprite - sprite: Mobs/Species/Slime/parts.rsi - state: "r_leg" - -- type: entity - id: LeftFootSlime - name: "left slime foot" - parent: [PartSlime, BaseLeftFoot] - components: - - type: Sprite - sprite: Mobs/Species/Slime/parts.rsi - state: "l_foot" - -- type: entity - id: RightFootSlime - name: "right slime foot" - parent: [PartSlime, BaseRightFoot] - components: - - type: Sprite - sprite: Mobs/Species/Slime/parts.rsi - state: "r_foot" diff --git a/Resources/Prototypes/Body/Parts/vox.yml b/Resources/Prototypes/Body/Parts/vox.yml deleted file mode 100644 index ee767f3e8f0..00000000000 --- a/Resources/Prototypes/Body/Parts/vox.yml +++ /dev/null @@ -1,111 +0,0 @@ -# TODO: Add descriptions (many) -# TODO BODY: Part damage -- type: entity - abstract: true - parent: [ BaseItem, BasePart ] - id: PartVox - name: "vox body part" - components: - - type: Sprite - sprite: Mobs/Species/Vox/parts.rsi - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 3 - - ReagentId: AmmoniaBlood - Quantity: 10 - -- type: entity - parent: [PartVox, BaseTorso] - id: TorsoVox - name: "vox torso" - components: - - type: Sprite - state: "torso" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 10 - - ReagentId: AmmoniaBlood - Quantity: 20 - -- type: entity - parent: [ PartVox, BaseHead ] - id: HeadVox - name: "vox head" - components: - - type: Sprite - state: "head" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 5 - - ReagentId: AmmoniaBlood - Quantity: 10 - -- type: entity - parent: [ PartVox, BaseLeftArm ] - id: LeftArmVox - name: "left vox arm" - components: - - type: Sprite - state: "l_arm" - -- type: entity - parent: [ PartVox, BaseRightArm ] - id: RightArmVox - name: "right vox arm" - components: - - type: Sprite - state: "r_arm" - -- type: entity - parent: [ PartVox, BaseLeftHand ] - id: LeftHandVox - name: "left vox hand" - components: - - type: Sprite - state: "l_hand" - -- type: entity - parent: [ PartVox, BaseRightHand ] - id: RightHandVox - name: "right vox hand" - components: - - type: Sprite - state: "r_hand" - -- type: entity - parent: [ PartVox, BaseLeftLeg ] - id: LeftLegVox - name: "left vox leg" - components: - - type: Sprite - state: "l_leg" - -- type: entity - parent: [ PartVox, BaseRightLeg ] - id: RightLegVox - name: "right vox leg" - components: - - type: Sprite - state: "r_leg" - -- type: entity - parent: [ PartVox, BaseLeftFoot ] - id: LeftFootVox - name: "left vox foot" - components: - - type: Sprite - state: "l_foot" - -- type: entity - parent: [ PartVox, BaseRightFoot ] - id: RightFootVox - name: "right vox foot" - components: - - type: Sprite - state: "r_foot" diff --git a/Resources/Prototypes/Body/Parts/vulpkanin.yml b/Resources/Prototypes/Body/Parts/vulpkanin.yml deleted file mode 100644 index d563a6423f4..00000000000 --- a/Resources/Prototypes/Body/Parts/vulpkanin.yml +++ /dev/null @@ -1,89 +0,0 @@ -# Limbs that spawn when gibbed should get descriptions. -- type: entity - abstract: true - parent: [ BasePart ] - id: PartVulpkanin - name: vulpkanin body part - components: - - type: Sprite - sprite: Mobs/Species/Vulpkanin/parts.rsi - -- type: entity - parent: [ PartVulpkanin, BaseTorso ] - id: TorsoVulpkanin - name: vulpkanin torso - components: - - type: Sprite - state: torso_m - -- type: entity - parent: [ PartVulpkanin, BaseHead ] - id: HeadVulpkanin - name: vulpkanin head - components: - - type: Sprite - state: head_m - -- type: entity - parent: [ PartVulpkanin, BaseLeftArm ] - id: LeftArmVulpkanin - name: left vulpkanin arm - components: - - type: Sprite - state: l_arm - -- type: entity - parent: [ PartVulpkanin, BaseRightArm ] - id: RightArmVulpkanin - name: right vulpkanin arm - components: - - type: Sprite - state: r_arm - -- type: entity - parent: [ PartVulpkanin, BaseLeftHand ] - id: LeftHandVulpkanin - name: left vulpkanin hand - components: - - type: Sprite - state: l_hand - -- type: entity - parent: [ PartVulpkanin, BaseRightHand ] - id: RightHandVulpkanin - name: right vulpkanin hand - components: - - type: Sprite - state: r_hand - -- type: entity - parent: [ PartVulpkanin, BaseLeftLeg ] - id: LeftLegVulpkanin - name: left vulpkanin leg - components: - - type: Sprite - state: l_leg - -- type: entity - parent: [ PartVulpkanin, BaseRightLeg ] - id: RightLegVulpkanin - name: right vulpkanin leg - components: - - type: Sprite - state: r_leg - -- type: entity - parent: [ PartVulpkanin, BaseLeftFoot ] - id: LeftFootVulpkanin - name: left vulpkanin foot - components: - - type: Sprite - state: l_foot - -- type: entity - parent: [ PartVulpkanin, BaseRightFoot ] - id: RightFootVulpkanin - name: right vulpkanin foot - components: - - type: Sprite - state: r_foot diff --git a/Resources/Prototypes/Body/Prototypes/Animal/animal.yml b/Resources/Prototypes/Body/Prototypes/Animal/animal.yml deleted file mode 100644 index a8c81f9eb60..00000000000 --- a/Resources/Prototypes/Body/Prototypes/Animal/animal.yml +++ /dev/null @@ -1,43 +0,0 @@ -- type: body - id: Animal - name: "animal" - root: torso - slots: - torso: - part: TorsoAnimal - connections: - - legs - organs: - lungs: OrganAnimalLungs - stomach: OrganAnimalStomach - liver: OrganAnimalLiver - heart: OrganAnimalHeart - kidneys: OrganAnimalKidneys - legs: - part: LegsAnimal - connections: - - feet - feet: - part: FeetAnimal - -- type: body - id: Mouse - name: "mouse" - root: torso - slots: - torso: - part: TorsoAnimal - connections: - - legs - organs: - lungs: OrganAnimalLungs - stomach: OrganMouseStomach - liver: OrganAnimalLiver - heart: OrganAnimalHeart - kidneys: OrganAnimalKidneys - legs: - part: LegsAnimal - connections: - - feet - feet: - part: FeetAnimal \ No newline at end of file diff --git a/Resources/Prototypes/Body/Prototypes/Animal/bloodsucker.yml b/Resources/Prototypes/Body/Prototypes/Animal/bloodsucker.yml deleted file mode 100644 index dd8750714ef..00000000000 --- a/Resources/Prototypes/Body/Prototypes/Animal/bloodsucker.yml +++ /dev/null @@ -1,21 +0,0 @@ -- type: body - id: Bloodsucker - name: "bloodsucker" - root: torso - slots: - torso: - part: TorsoAnimal - connections: - - legs - organs: - lungs: OrganAnimalLungs - stomach: OrganBloodsuckerStomach - liver: OrganBloodsuckerLiver - heart: OrganBloodsuckerHeart - kidneys: OrganAnimalKidneys - legs: - part: LegsAnimal - connections: - - feet - feet: - part: FeetAnimal diff --git a/Resources/Prototypes/Body/Prototypes/Animal/hemocyanin.yml b/Resources/Prototypes/Body/Prototypes/Animal/hemocyanin.yml deleted file mode 100644 index b29edadc806..00000000000 --- a/Resources/Prototypes/Body/Prototypes/Animal/hemocyanin.yml +++ /dev/null @@ -1,21 +0,0 @@ -- type: body - id: AnimalHemocyanin - name: "hemocyanin" - root: torso - slots: - torso: - part: TorsoAnimal - connections: - - legs - organs: - lungs: OrganAnimalLungs - stomach: OrganAnimalStomach - liver: OrganAnimalLiver - heart: OrganArachnidHeart - kidneys: OrganAnimalKidneys - legs: - part: LegsAnimal - connections: - - feet - feet: - part: FeetAnimal diff --git a/Resources/Prototypes/Body/Prototypes/Animal/nymph.yml b/Resources/Prototypes/Body/Prototypes/Animal/nymph.yml deleted file mode 100644 index 21aafe291c9..00000000000 --- a/Resources/Prototypes/Body/Prototypes/Animal/nymph.yml +++ /dev/null @@ -1,66 +0,0 @@ -- type: body - id: AnimalNymphBrain - name: "nymph" - root: torso - slots: - torso: - part: TorsoAnimal - connections: - - legs - organs: - brain: OrganDionaBrain - lungs: OrganAnimalLungs - stomach: OrganAnimalStomach - liver: OrganAnimalLiver - heart: OrganAnimalHeart - kidneys: OrganAnimalKidneys - legs: - part: LegsAnimal - connections: - - feet - feet: - part: FeetAnimal - -- type: body - id: AnimalNymphLungs - name: "nymph" - root: torso - slots: - torso: - part: TorsoAnimal - connections: - - legs - organs: - lungs: OrganDionaLungs - stomach: OrganAnimalStomach - liver: OrganAnimalLiver - heart: OrganAnimalHeart - kidneys: OrganAnimalKidneys - legs: - part: LegsAnimal - connections: - - feet - feet: - part: FeetAnimal - -- type: body - id: AnimalNymphStomach - name: "nymph" - root: torso - slots: - torso: - part: TorsoAnimal - connections: - - legs - organs: - lungs: OrganAnimalLungs - stomach: OrganDionaStomach - liver: OrganAnimalLiver - heart: OrganAnimalHeart - kidneys: OrganAnimalKidneys - legs: - part: LegsAnimal - connections: - - feet - feet: - part: FeetAnimal \ No newline at end of file diff --git a/Resources/Prototypes/Body/Prototypes/Animal/ruminant.yml b/Resources/Prototypes/Body/Prototypes/Animal/ruminant.yml deleted file mode 100644 index 3a213e3cdf0..00000000000 --- a/Resources/Prototypes/Body/Prototypes/Animal/ruminant.yml +++ /dev/null @@ -1,21 +0,0 @@ -- type: body - id: AnimalRuminant - name: "ruminant" - root: torso - slots: - torso: - part: TorsoAnimal - connections: - - legs - organs: - lungs: OrganAnimalLungs - stomach: OrganAnimalRuminantStomach - liver: OrganAnimalLiver - heart: OrganAnimalHeart - kidneys: OrganAnimalKidneys - legs: - part: LegsAnimal - connections: - - feet - feet: - part: FeetAnimal diff --git a/Resources/Prototypes/Body/Prototypes/Animal/slimes.yml b/Resources/Prototypes/Body/Prototypes/Animal/slimes.yml deleted file mode 100644 index 8d9827e99a0..00000000000 --- a/Resources/Prototypes/Body/Prototypes/Animal/slimes.yml +++ /dev/null @@ -1,18 +0,0 @@ -- type: body - id: Slimes - name: "slimes" - root: torso - slots: - torso: - part: TorsoSlime - connections: - - legs - organs: - core: SentientSlimesCore - lungs: OrganSlimesLungs - legs: - part: LegsAnimal - connections: - - feet - feet: - part: FeetAnimal diff --git a/Resources/Prototypes/Body/Prototypes/Specific/mothroach.yml b/Resources/Prototypes/Body/Prototypes/Specific/mothroach.yml deleted file mode 100644 index ef5df769def..00000000000 --- a/Resources/Prototypes/Body/Prototypes/Specific/mothroach.yml +++ /dev/null @@ -1,13 +0,0 @@ -- type: body - id: Mothroach - name: "mothroach" - root: torso - slots: - torso: - part: TorsoAnimal - organs: - lungs: OrganAnimalLungs - stomach: OrganMothStomach - liver: OrganAnimalLiver - heart: OrganAnimalHeart - kidneys: OrganAnimalKidneys diff --git a/Resources/Prototypes/Body/Prototypes/Specific/smartcorgi.yml b/Resources/Prototypes/Body/Prototypes/Specific/smartcorgi.yml deleted file mode 100644 index 89c374ccdd1..00000000000 --- a/Resources/Prototypes/Body/Prototypes/Specific/smartcorgi.yml +++ /dev/null @@ -1,28 +0,0 @@ -- type: body - id: SmartCorgi - name: corgi - root: torso - slots: - torso: - part: TorsoAnimal - connections: - - righthand - - lefthand - - legs - organs: - brain: OrganHumanBrain # feels strange but it is what it is - lungs: OrganAnimalLungs - stomach: OrganAnimalStomach - liver: OrganAnimalLiver - heart: OrganAnimalHeart - kidneys: OrganAnimalKidneys - lefthand: - part: LeftHandSmartCorgi - righthand: - part: RightHandSmartCorgi - legs: - part: LegsAnimal - connections: - - feet - feet: - part: FeetAnimal diff --git a/Resources/Prototypes/Body/Prototypes/arachnid.yml b/Resources/Prototypes/Body/Prototypes/arachnid.yml deleted file mode 100644 index e198f7934ab..00000000000 --- a/Resources/Prototypes/Body/Prototypes/arachnid.yml +++ /dev/null @@ -1,49 +0,0 @@ -- type: body - id: Arachnid - name: "arachnid" - root: torso - slots: - head: - part: HeadArachnid - connections: - - torso - organs: - brain: OrganHumanBrain - eyes: OrganArachnidEyes - torso: - part: TorsoArachnid - organs: - heart: OrganArachnidHeart - lungs: OrganArachnidLungs - stomach: OrganArachnidStomach - liver: OrganArachnidLiver - kidneys: OrganArachnidKidneys - connections: - - right arm - - left arm - - right leg - - left leg - right arm: - part: RightArmArachnid - connections: - - right hand - left arm: - part: LeftArmArachnid - connections: - - left hand - right hand: - part: RightHandArachnid - left hand: - part: LeftHandArachnid - right leg: - part: RightLegArachnid - connections: - - right foot - left leg: - part: LeftLegArachnid - connections: - - left foot - right foot: - part: RightFootArachnid - left foot: - part: LeftFootArachnid diff --git a/Resources/Prototypes/Body/Prototypes/bot.yml b/Resources/Prototypes/Body/Prototypes/bot.yml deleted file mode 100644 index ae9bd4a77a6..00000000000 --- a/Resources/Prototypes/Body/Prototypes/bot.yml +++ /dev/null @@ -1,23 +0,0 @@ -- type: body - id: Bot - name: "bot" - root: hand 1 - slots: - hand 1: - part: LeftArmBorg - -# It's like a medibot or a cleanbot except it has two arms to hug :) -- type: body - id: HugBot - name: "hugBot" - root: box - slots: - box: - part: TorsoBorg - connections: - - right_arm - - left_arm - right_arm: - part: RightArmBorg - left_arm: - part: LeftArmBorg diff --git a/Resources/Prototypes/Body/Prototypes/diona.yml b/Resources/Prototypes/Body/Prototypes/diona.yml deleted file mode 100644 index 12ca203988c..00000000000 --- a/Resources/Prototypes/Body/Prototypes/diona.yml +++ /dev/null @@ -1,45 +0,0 @@ -- type: body - id: Diona - name: diona - root: torso - slots: - head: - part: HeadDiona - connections: - - torso - organs: - brain: OrganDionaBrainNymph - torso: - part: TorsoDiona - connections: - - right arm - - left arm - - right leg - - left leg - organs: - stomach: OrganDionaStomachNymph - lungs: OrganDionaLungsNymph - right arm: - part: RightArmDiona - connections: - - right hand - left arm: - part: LeftArmDiona - connections: - - left hand - right hand: - part: RightHandDiona - left hand: - part: LeftHandDiona - right leg: - part: RightLegDiona - connections: - - right foot - left leg: - part: LeftLegDiona - connections: - - left foot - right foot: - part: RightFootDiona - left foot: - part: LeftFootDiona diff --git a/Resources/Prototypes/Body/Prototypes/dwarf.yml b/Resources/Prototypes/Body/Prototypes/dwarf.yml deleted file mode 100644 index 592492688b7..00000000000 --- a/Resources/Prototypes/Body/Prototypes/dwarf.yml +++ /dev/null @@ -1,49 +0,0 @@ -- type: body - id: Dwarf - name: "dwarf" - root: torso - slots: - head: - part: HeadHuman - connections: - - torso - organs: - brain: OrganHumanBrain - eyes: OrganHumanEyes - torso: - part: TorsoHuman - connections: - - right arm - - left arm - - right leg - - left leg - organs: - heart: OrganDwarfHeart - lungs: OrganHumanLungs - stomach: OrganDwarfStomach - liver: OrganDwarfLiver - kidneys: OrganHumanKidneys - right arm: - part: RightArmHuman - connections: - - right hand - left arm: - part: LeftArmHuman - connections: - - left hand - right hand: - part: RightHandHuman - left hand: - part: LeftHandHuman - right leg: - part: RightLegHuman - connections: - - right foot - left leg: - part: LeftLegHuman - connections: - - left foot - right foot: - part: RightFootHuman - left foot: - part: LeftFootHuman diff --git a/Resources/Prototypes/Body/Prototypes/gingerbread.yml b/Resources/Prototypes/Body/Prototypes/gingerbread.yml deleted file mode 100644 index d5355be6412..00000000000 --- a/Resources/Prototypes/Body/Prototypes/gingerbread.yml +++ /dev/null @@ -1,49 +0,0 @@ -- type: body - id: Gingerbread - name: gingerbread - root: torso - slots: - head: - part: HeadGingerbread - connections: - - torso - organs: - brain: OrganHumanBrain - eyes: OrganHumanEyes - torso: - part: TorsoGingerbread - connections: - - right arm - - left arm - - right leg - - left leg - organs: - heart: OrganHumanHeart - lungs: OrganHumanLungs - stomach: OrganHumanStomach - liver: OrganHumanLiver - kidneys: OrganHumanKidneys - right arm: - part: RightArmGingerbread - connections: - - right hand - left arm: - part: LeftArmGingerbread - connections: - - left hand - right hand: - part: RightHandGingerbread - left hand: - part: LeftHandGingerbread - right leg: - part: RightLegGingerbread - connections: - - right foot - left leg: - part: LeftLegGingerbread - connections: - - left foot - right foot: - part: RightFootGingerbread - left foot: - part: LeftFootGingerbread diff --git a/Resources/Prototypes/Body/Prototypes/human.yml b/Resources/Prototypes/Body/Prototypes/human.yml deleted file mode 100644 index 94c77a27d73..00000000000 --- a/Resources/Prototypes/Body/Prototypes/human.yml +++ /dev/null @@ -1,49 +0,0 @@ -- type: body - id: Human - name: "human" - root: torso - slots: - head: - part: HeadHuman - connections: - - torso - organs: - brain: OrganHumanBrain - eyes: OrganHumanEyes - torso: - part: TorsoHuman - connections: - - right_arm - - left_arm - - right_leg - - left_leg - organs: - heart: OrganHumanHeart - lungs: OrganHumanLungs - stomach: OrganHumanStomach - liver: OrganHumanLiver - kidneys: OrganHumanKidneys - right_arm: - part: RightArmHuman - connections: - - right_hand - left_arm: - part: LeftArmHuman - connections: - - left_hand - right_hand: - part: RightHandHuman - left_hand: - part: LeftHandHuman - right_leg: - part: RightLegHuman - connections: - - right_foot - left_leg: - part: LeftLegHuman - connections: - - left_foot - right_foot: - part: RightFootHuman - left_foot: - part: LeftFootHuman diff --git a/Resources/Prototypes/Body/Prototypes/moth.yml b/Resources/Prototypes/Body/Prototypes/moth.yml deleted file mode 100644 index b3271834417..00000000000 --- a/Resources/Prototypes/Body/Prototypes/moth.yml +++ /dev/null @@ -1,49 +0,0 @@ -- type: body - id: Moth - name: "moth" - root: torso - slots: - head: - part: HeadMoth - connections: - - torso - organs: - brain: OrganHumanBrain - eyes: OrganHumanEyes - torso: - part: TorsoMoth - organs: - heart: OrganAnimalHeart - lungs: OrganHumanLungs - stomach: OrganMothStomach - liver: OrganAnimalLiver - kidneys: OrganHumanKidneys - connections: - - right arm - - left arm - - right leg - - left leg - right arm: - part: RightArmMoth - connections: - - right hand - left arm: - part: LeftArmMoth - connections: - - left hand - right hand: - part: RightHandMoth - left hand: - part: LeftHandMoth - right leg: - part: RightLegMoth - connections: - - right foot - left leg: - part: LeftLegMoth - connections: - - left foot - right foot: - part: RightFootMoth - left foot: - part: LeftFootMoth diff --git a/Resources/Prototypes/Body/Prototypes/primate.yml b/Resources/Prototypes/Body/Prototypes/primate.yml deleted file mode 100644 index 2af9273be4c..00000000000 --- a/Resources/Prototypes/Body/Prototypes/primate.yml +++ /dev/null @@ -1,24 +0,0 @@ -- type: body - id: Primate - name: "primate" - root: torso - slots: - torso: - part: TorsoAnimal - connections: - - hands - - legs - organs: - lungs: OrganAnimalLungs - stomach: OrganAnimalStomach - liver: OrganAnimalLiver - heart: OrganAnimalHeart - kidneys: OrganAnimalKidneys - hands: - part: HandsAnimal - legs: - part: LegsAnimal - connections: - - feet - feet: - part: FeetAnimal diff --git a/Resources/Prototypes/Body/Prototypes/rat.yml b/Resources/Prototypes/Body/Prototypes/rat.yml deleted file mode 100644 index fe772889944..00000000000 --- a/Resources/Prototypes/Body/Prototypes/rat.yml +++ /dev/null @@ -1,21 +0,0 @@ -- type: body - id: Rat - name: "animal" - root: torso - slots: - torso: - part: TorsoRat - connections: - - legs - organs: - lungs: OrganRatLungs - stomach: OrganRatStomach - liver: OrganAnimalLiver - heart: OrganAnimalHeart - kidneys: OrganAnimalKidneys - legs: - part: LegsAnimal - connections: - - feet - feet: - part: FeetAnimal diff --git a/Resources/Prototypes/Body/Prototypes/reptilian.yml b/Resources/Prototypes/Body/Prototypes/reptilian.yml deleted file mode 100644 index 1e9ebd54a48..00000000000 --- a/Resources/Prototypes/Body/Prototypes/reptilian.yml +++ /dev/null @@ -1,49 +0,0 @@ -- type: body - name: "reptilian" - id: Reptilian - root: torso - slots: - head: - part: HeadReptilian - connections: - - torso - organs: - brain: OrganHumanBrain - eyes: OrganHumanEyes - torso: - part: TorsoReptilian - organs: - heart: OrganAnimalHeart - lungs: OrganHumanLungs - stomach: OrganReptilianStomach - liver: OrganAnimalLiver - kidneys: OrganHumanKidneys - connections: - - right arm - - left arm - - right leg - - left leg - right arm: - part: RightArmReptilian - connections: - - right hand - left arm: - part: LeftArmReptilian - connections: - - left hand - right hand: - part: RightHandReptilian - left hand: - part: LeftHandReptilian - right leg: - part: RightLegReptilian - connections: - - right foot - left leg: - part: LeftLegReptilian - connections: - - left foot - right foot: - part: RightFootReptilian - left foot: - part: LeftFootReptilian diff --git a/Resources/Prototypes/Body/Prototypes/skeleton.yml b/Resources/Prototypes/Body/Prototypes/skeleton.yml deleted file mode 100644 index 16d08365610..00000000000 --- a/Resources/Prototypes/Body/Prototypes/skeleton.yml +++ /dev/null @@ -1,40 +0,0 @@ -- type: body - id: Skeleton - name: "skeleton" - root: torso - slots: - head: - part: HeadSkeleton - connections: - - torso - torso: - part: TorsoSkeleton - connections: - - right arm - - left arm - - right leg - - left leg - right arm: - part: RightArmSkeleton - connections: - - right hand - left arm: - part: LeftArmSkeleton - connections: - - left hand - right hand: - part: RightHandSkeleton - left hand: - part: LeftHandSkeleton - right leg: - part: RightLegSkeleton - connections: - - right foot - left leg: - part: LeftLegSkeleton - connections: - - left foot - right foot: - part: RightFootSkeleton - left foot: - part: LeftFootSkeleton diff --git a/Resources/Prototypes/Body/Prototypes/slime.yml b/Resources/Prototypes/Body/Prototypes/slime.yml deleted file mode 100644 index b57c5eceb44..00000000000 --- a/Resources/Prototypes/Body/Prototypes/slime.yml +++ /dev/null @@ -1,43 +0,0 @@ -- type: body - id: Slime - name: "slime" - root: torso - slots: - head: - part: HeadSlime - connections: - - torso - torso: - part: TorsoSlime - connections: - - right arm - - left arm - - right leg - - left leg - organs: - core: SentientSlimeCore - lungs: OrganSlimeLungs - right arm: - part: RightArmSlime - connections: - - right hand - left arm: - part: LeftArmSlime - connections: - - left hand - right hand: - part: RightHandSlime - left hand: - part: LeftHandSlime - right leg: - part: RightLegSlime - connections: - - right foot - left leg: - part: LeftLegSlime - connections: - - left foot - right foot: - part: RightFootSlime - left foot: - part: LeftFootSlime diff --git a/Resources/Prototypes/Body/Prototypes/vox.yml b/Resources/Prototypes/Body/Prototypes/vox.yml deleted file mode 100644 index 0062149b96d..00000000000 --- a/Resources/Prototypes/Body/Prototypes/vox.yml +++ /dev/null @@ -1,49 +0,0 @@ -- type: body - id: Vox - name: "vox" - root: torso - slots: - head: - part: HeadVox - connections: - - torso - organs: - brain: OrganHumanBrain - eyes: OrganVoxEyes - torso: - part: TorsoVox - connections: - - right arm - - left arm - - right leg - - left leg - organs: - heart: OrganVoxHeart - lungs: OrganVoxLungs - stomach: OrganVoxStomach - liver: OrganVoxLiver - kidneys: OrganVoxKidneys - right arm: - part: RightArmVox - connections: - - right hand - left arm: - part: LeftArmVox - connections: - - left hand - right hand: - part: RightHandVox - left hand: - part: LeftHandVox - right leg: - part: RightLegVox - connections: - - right foot - left leg: - part: LeftLegVox - connections: - - left foot - right foot: - part: RightFootVox - left foot: - part: LeftFootVox diff --git a/Resources/Prototypes/Body/Prototypes/vulpkanin.yml b/Resources/Prototypes/Body/Prototypes/vulpkanin.yml deleted file mode 100644 index e939e3ac477..00000000000 --- a/Resources/Prototypes/Body/Prototypes/vulpkanin.yml +++ /dev/null @@ -1,49 +0,0 @@ -- type: body - id: Vulpkanin - name: vulpkanin - root: torso - slots: - head: - part: HeadVulpkanin - connections: - - torso - organs: - brain: OrganHumanBrain - eyes: OrganHumanEyes - torso: - part: TorsoVulpkanin - connections: - - right arm - - left arm - - right leg - - left leg - organs: - heart: OrganAnimalHeart - lungs: OrganHumanLungs - stomach: OrganVulpkaninStomach - liver: OrganAnimalLiver - kidneys: OrganHumanKidneys - right arm: - part: RightArmVulpkanin - connections: - - right hand - left arm: - part: LeftArmVulpkanin - connections: - - left hand - right hand: - part: RightHandVulpkanin - left hand: - part: LeftHandVulpkanin - right leg: - part: RightLegVulpkanin - connections: - - right foot - left leg: - part: LeftLegVulpkanin - connections: - - left foot - right foot: - part: RightFootVulpkanin - left foot: - part: LeftFootVulpkanin diff --git a/Resources/Prototypes/Body/Species/arachnid.yml b/Resources/Prototypes/Body/Species/arachnid.yml new file mode 100644 index 00000000000..10c7623a2d2 --- /dev/null +++ b/Resources/Prototypes/Body/Species/arachnid.yml @@ -0,0 +1,215 @@ +- type: entity + parent: BaseSpeciesAppearance + id: AppearanceArachnid + name: arachnid appearance + components: + - type: Inventory + templateId: arachnid + speciesId: arachnid + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganArachnidTorso + - id: OrganArachnidHead + - id: OrganArachnidArmLeft + - id: OrganArachnidArmRight + - id: OrganArachnidHandRight + - id: OrganArachnidHandLeft + - id: OrganArachnidLegLeft + - id: OrganArachnidLegRight + - id: OrganArachnidFootLeft + - id: OrganArachnidFootRight + - id: OrganArachnidBrain + - id: OrganArachnidEyes + - id: OrganArachnidTongue + - id: OrganArachnidAppendix + - id: OrganArachnidEars + - id: OrganArachnidLungs + - id: OrganArachnidHeart + - id: OrganArachnidStomach + - id: OrganArachnidLiver + - id: OrganArachnidKidneys + - type: HumanoidAppearance + species: Arachnid + +- type: entity + parent: + - AppearanceArachnid + - BaseSpeciesMobOrganic + id: MobArachnid + name: Urist McWebs + components: + - type: Respirator + damage: + types: + Asphyxiation: 1.5 # This makes space and crit more lethal to arachnids. + damageRecovery: + types: + Asphyxiation: -0.5 + - type: Sericulture + productionLength: 2 + entityProduced: MaterialWebSilk1 + hungerCost: 4 # Should total to 25 total silk on full hunger + - type: Tag + tags: + - CanPilot + - FootstepSound + - DoorBumpOpener + - SpiderCraft + - AnomalyHost + - type: Butcherable + spawned: + - id: FoodMeatSpider + amount: 5 + - type: Reactive + reactions: + - reagents: [Water] + methods: [Touch] + effects: + - !type:SpawnEntityInInventory + slot: head + entity: WaterDropletHat + - reagents: [Water, SpaceCleaner] + methods: [Touch] + effects: + - !type:WashCreamPie + - type: Bloodstream + bloodReferenceSolution: + reagents: + - ReagentId: CopperBlood + Quantity: 300 + - type: MeleeWeapon + animation: WeaponArcBite + soundHit: + path: /Audio/Effects/bite.ogg + damage: + types: + Piercing: 5 + - type: DamageVisuals + damageOverlayGroups: + Brute: + sprite: Mobs/Effects/brute_damage.rsi + color: "#162581" + Burn: + sprite: Mobs/Effects/burn_damage.rsi + - type: Speech + speechVerb: Arachnid + speechSounds: Arachnid + allowedEmotes: ['Click', 'Chitter'] + - type: Vocal + sounds: + Male: UnisexArachnid + Female: UnisexArachnid + Unsexed: UnisexArachnid + - type: TypingIndicator + proto: spider + +- type: entity + parent: OrganBase + id: OrganArachnid + abstract: true + suffix: Arachnid + +- type: entity + id: OrganArachnidMetabolizer + abstract: true + components: + - type: Metabolizer + metabolizerTypes: [ Arachnid ] + +- type: entity + parent: OrganArachnid + id: OrganArachnidInternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Arachnid/organs.rsi + +- type: entity + parent: OrganArachnid + id: OrganArachnidExternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Arachnid/parts.rsi + +- type: entity + parent: [ OrganBaseTorso, OrganArachnidExternal ] + id: OrganArachnidTorso + +- type: entity + parent: [ OrganBaseHead, OrganArachnidExternal ] + id: OrganArachnidHead + +- type: entity + parent: [ OrganBaseArmLeft, OrganArachnidExternal ] + id: OrganArachnidArmLeft + +- type: entity + parent: [ OrganBaseArmRight, OrganArachnidExternal ] + id: OrganArachnidArmRight + +- type: entity + parent: [ OrganBaseHandLeft, OrganArachnidExternal ] + id: OrganArachnidHandLeft + +- type: entity + parent: [ OrganBaseHandRight, OrganArachnidExternal ] + id: OrganArachnidHandRight + +- type: entity + parent: [ OrganBaseLegLeft, OrganArachnidExternal ] + id: OrganArachnidLegLeft + +- type: entity + parent: [ OrganBaseLegRight, OrganArachnidExternal ] + id: OrganArachnidLegRight + +- type: entity + parent: [ OrganBaseFootLeft, OrganArachnidExternal ] + id: OrganArachnidFootLeft + +- type: entity + parent: [ OrganBaseFootRight, OrganArachnidExternal ] + id: OrganArachnidFootRight + +- type: entity + parent: [ OrganBaseBrain, OrganSpriteHumanInternal, OrganArachnidInternal ] + id: OrganArachnidBrain + +- type: entity + parent: [ OrganBaseEyes, OrganArachnidInternal ] + id: OrganArachnidEyes + +- type: entity + parent: [ OrganBaseTongue, OrganArachnidInternal ] + id: OrganArachnidTongue + +- type: entity + parent: [ OrganBaseAppendix, OrganSpriteHumanInternal, OrganArachnidInternal ] + id: OrganArachnidAppendix + +- type: entity + parent: [ OrganBaseEars, OrganSpriteHumanInternal, OrganArachnidInternal ] + id: OrganArachnidEars + +- type: entity + parent: [ OrganBaseLungs, OrganArachnidInternal, OrganArachnidMetabolizer ] + id: OrganArachnidLungs + +- type: entity + parent: [ OrganBaseHeart, OrganArachnidInternal, OrganArachnidMetabolizer ] + id: OrganArachnidHeart + +- type: entity + parent: [ OrganBaseStomach, OrganArachnidInternal, OrganArachnidMetabolizer ] + id: OrganArachnidStomach + +- type: entity + parent: [ OrganBaseLiver, OrganSpriteHumanInternal, OrganArachnidInternal, OrganArachnidMetabolizer ] + id: OrganArachnidLiver + +- type: entity + parent: [ OrganBaseKidneys, OrganSpriteHumanInternal, OrganArachnidInternal, OrganArachnidMetabolizer ] + id: OrganArachnidKidneys diff --git a/Resources/Prototypes/Body/Species/diona.yml b/Resources/Prototypes/Body/Species/diona.yml new file mode 100644 index 00000000000..630fd73b995 --- /dev/null +++ b/Resources/Prototypes/Body/Species/diona.yml @@ -0,0 +1,321 @@ +- type: entity + parent: BaseSpeciesAppearance + id: AppearanceDiona + name: diona appearance + components: + - type: Inventory + templateId: diona + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganDionaTorso + - id: OrganDionaHead + - id: OrganDionaArmLeft + - id: OrganDionaArmRight + - id: OrganDionaHandRight + - id: OrganDionaHandLeft + - id: OrganDionaLegLeft + - id: OrganDionaLegRight + - id: OrganDionaFootLeft + - id: OrganDionaFootRight + - id: OrganDionaBrainNymphing + - id: OrganDionaEyes + - id: OrganDionaLungsNymphing + - id: OrganDionaStomachNymphing + - type: HumanoidAppearance + species: Diona + +- type: entity + parent: + - AppearanceDiona + - BaseSpeciesMobOrganic + id: MobDiona + name: McUrist Plants + components: + - type: Respirator + damage: + types: + Asphyxiation: 0.5 + damageRecovery: + types: + Asphyxiation: -1.0 + - type: Hunger + baseDecayRate: 0.0083 + - type: Thirst + baseDecayRate: 0.0083 + - type: Damageable + damageModifierSet: Diona + - type: DamageVisuals + damageOverlayGroups: + Brute: + sprite: Mobs/Effects/brute_damage.rsi + color: "#cd7314" + Burn: + sprite: Mobs/Effects/burn_damage.rsi + - type: Butcherable + butcheringType: Spike + spawned: + - id: FoodMeatPlant + amount: 5 + - type: Bloodstream + bloodReferenceSolution: + reagents: + - ReagentId: Sap + Quantity: 300 + - type: Reactive + groups: + Flammable: [ Touch ] + Extinguish: [ Touch ] + Acidic: [Touch, Ingestion] + reactions: + - reagents: [Water, SpaceCleaner] + methods: [Touch] + effects: + - !type:WashCreamPie + - reagents: [ PlantBGone ] + methods: [ Touch ] + effects: + - !type:HealthChange + damage: + types: + Blunt: 0.05 + Slash: 0.05 + Piercing: 0.075 + - !type:PopupMessage + type: Local + visualType: Large + messages: [ "diona-hurt-by-herbicide-popup" ] + probability: 0.66 + - reagents: [ WeedKiller ] + methods: [ Touch ] + effects: + - !type:HealthChange + damage: + types: + Poison: 0.125 + - !type:PopupMessage + type: Local + visualType: Large + messages: [ "diona-hurt-by-herbicide-popup" ] + probability: 0.66 + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.35 + density: 300 #weighs more than humans because wood + restitution: 0.0 + mask: + - MobMask + layer: + - MobLayer + - type: Speech + speechVerb: Plant + allowedEmotes: ['Chirp'] + - type: Vocal + sounds: + Male: UnisexDiona + Female: UnisexDiona + Unsexed: UnisexDiona + - type: TypingIndicator + proto: diona + - type: BodyEmotes + soundsId: DionaBodyEmotes + - type: IgnoreKudzu + - type: IgniteOnHeatDamage + fireStacks: 1 + threshold: 12 + - type: GibAction + actionPrototype: DionaGibAction + allowedStates: + - Dead + - type: Rootable + +- type: entity + parent: OrganBase + id: OrganDiona + abstract: true + suffix: Diona + +- type: entity + id: OrganDionaMetabolizer + abstract: true + components: + - type: Metabolizer + metabolizerTypes: [ Plant ] + +- type: entity + parent: OrganDiona + id: OrganDionaInternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Diona/organs.rsi + +- type: entity + parent: OrganDiona + id: OrganDionaExternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Diona/parts.rsi + +- type: entity + parent: [ OrganBaseTorso, OrganDionaExternal ] + id: OrganDionaTorso + +- type: entity + parent: [ OrganBaseHead, OrganDionaExternal ] + id: OrganDionaHead + +- type: entity + parent: [ OrganBaseArmLeft, OrganDionaExternal ] + id: OrganDionaArmLeft + +- type: entity + parent: [ OrganBaseArmRight, OrganDionaExternal ] + id: OrganDionaArmRight + +- type: entity + parent: [ OrganBaseHandLeft, OrganDionaExternal ] + id: OrganDionaHandLeft + +- type: entity + parent: [ OrganBaseHandRight, OrganDionaExternal ] + id: OrganDionaHandRight + +- type: entity + parent: [ OrganBaseLegLeft, OrganDionaExternal ] + id: OrganDionaLegLeft + +- type: entity + parent: [ OrganBaseLegRight, OrganDionaExternal ] + id: OrganDionaLegRight + +- type: entity + parent: [ OrganBaseFootLeft, OrganDionaExternal ] + id: OrganDionaFootLeft + +- type: entity + parent: [ OrganBaseFootRight, OrganDionaExternal ] + id: OrganDionaFootRight + +- type: entity + parent: [ OrganBaseBrain, OrganDionaInternal ] + id: OrganDionaBrain + +- type: entity + parent: [ OrganBaseEyes, OrganDionaInternal ] + id: OrganDionaEyes + +- type: entity + parent: [ OrganBaseLungs, OrganDionaInternal, OrganDionaMetabolizer ] + id: OrganDionaLungs + components: + - type: Sprite + layers: + - state: lungs + +- type: entity + parent: [ OrganBaseStomach, OrganDionaInternal, OrganDionaMetabolizer ] + id: OrganDionaStomach + components: + - type: Metabolizer + maxReagents: 6 + removeEmpty: true + groups: + - id: Food + - id: Drink + - id: Medicine + - id: Poison + - id: Narcotic + - id: Alcohol + +- type: entity + parent: OrganDionaBrain + suffix: "Diona, Nymphing" + id: OrganDionaBrainNymphing + components: + - type: Nymph + entityPrototype: OrganDionaNymphBrain + +- type: entity + parent: OrganDionaLungs + suffix: "Diona, Nymphing" + id: OrganDionaLungsNymphing + components: + - type: Nymph + entityPrototype: OrganDionaNymphLungs + +- type: entity + parent: OrganDionaStomach + suffix: "Diona, Nymphing" + id: OrganDionaStomachNymphing + components: + - type: Nymph + entityPrototype: OrganDionaNymphStomach + +- type: entity + parent: MobDionaNymph + id: OrganDionaNymphBrain + suffix: brain + components: + - type: IsDeadIC + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganDionaBrain + - id: OrganAnimalLungs + - id: OrganAnimalStomach + - id: OrganAnimalLiver + - id: OrganAnimalHeart + - id: OrganAnimalKidneys + +- type: entity + parent: MobDionaNymph + id: OrganDionaNymphStomach + suffix: stomach + components: + - type: IsDeadIC + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganDionaLungs + - id: OrganAnimalStomach + - id: OrganAnimalLiver + - id: OrganAnimalHeart + - id: OrganAnimalKidneys + +- type: entity + parent: MobDionaNymph + id: OrganDionaNymphLungs + suffix: lungs + components: + - type: IsDeadIC + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganAnimalLungs + - id: OrganDionaStomach + - id: OrganAnimalLiver + - id: OrganAnimalHeart + - id: OrganAnimalKidneys + +- type: entity + parent: MobDiona + id: MobDionaReformed + categories: [ HideSpawnMenu ] + components: + - type: IsDeadIC + - type: RandomHumanoidAppearance diff --git a/Resources/Prototypes/Body/Species/dwarf.yml b/Resources/Prototypes/Body/Species/dwarf.yml new file mode 100644 index 00000000000..cfc9e43a34e --- /dev/null +++ b/Resources/Prototypes/Body/Species/dwarf.yml @@ -0,0 +1,98 @@ +- type: entity + parent: AppearanceHuman + id: AppearanceDwarf + name: dwarf appearance + components: + - type: Inventory + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganHumanTorso + - id: OrganHumanHead + - id: OrganHumanArmLeft + - id: OrganHumanArmRight + - id: OrganHumanHandRight + - id: OrganHumanHandLeft + - id: OrganHumanLegLeft + - id: OrganHumanLegRight + - id: OrganHumanFootLeft + - id: OrganHumanFootRight + - id: OrganHumanBrain + - id: OrganHumanEyes + - id: OrganHumanTongue + - id: OrganHumanAppendix + - id: OrganHumanEars + - id: OrganHumanLungs + - id: OrganDwarfHeart + - id: OrganDwarfStomach + - id: OrganDwarfLiver + - id: OrganHumanKidneys + - type: HumanoidAppearance + species: Dwarf + - type: ScaleVisuals + scale: 1, 0.8 + +- type: entity + parent: + - AppearanceDwarf + - MobHuman + id: MobDwarf + name: Urist McHands The Dwarf + components: + - type: Fixtures + fixtures: # TODO: This needs a second fixture just for mob collisions. + fix1: + shape: + !type:PhysShapeCircle + radius: 0.35 + # they r smaller + density: 120 + restitution: 0.0 + mask: + - MobMask + layer: + - MobLayer + - type: Vocal + sounds: + Male: UnisexDwarf + Female: FemaleDwarf + Unsexed: UnisexDwarf + - type: ReplacementAccent + accent: dwarf + - type: Speech + speechSounds: Bass + +- type: entity + parent: OrganBase + id: OrganDwarf + abstract: true + suffix: Dwarf + +- type: entity + id: OrganDwarfMetabolizer + abstract: true + components: + - type: Metabolizer + metabolizerTypes: [ Dwarf ] + +- type: entity + parent: [ OrganDwarfMetabolizer, OrganHumanStomach ] + id: OrganDwarfStomach + components: + - type: Metabolizer + maxReagents: 5 + +- type: entity + parent: [ OrganDwarfMetabolizer, OrganHumanLiver ] + id: OrganDwarfLiver + +- type: entity + parent: [ OrganDwarfMetabolizer, OrganHumanHeart ] + id: OrganDwarfHeart diff --git a/Resources/Prototypes/Body/Species/gingerbread.yml b/Resources/Prototypes/Body/Species/gingerbread.yml new file mode 100644 index 00000000000..6b528e9a0ca --- /dev/null +++ b/Resources/Prototypes/Body/Species/gingerbread.yml @@ -0,0 +1,153 @@ +- type: entity + parent: BaseSpeciesAppearance + id: AppearanceGingerbread + name: gingerbread appearance + components: + - type: Inventory + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganGingerbreadTorso + - id: OrganGingerbreadHead + - id: OrganGingerbreadArmLeft + - id: OrganGingerbreadArmRight + - id: OrganGingerbreadHandRight + - id: OrganGingerbreadHandLeft + - id: OrganGingerbreadLegLeft + - id: OrganGingerbreadLegRight + - id: OrganGingerbreadFootLeft + - id: OrganGingerbreadFootRight + - id: OrganHumanBrain + - id: OrganHumanEyes + - id: OrganHumanTongue + - id: OrganHumanAppendix + - id: OrganHumanEars + - id: OrganHumanLungs + - id: OrganHumanHeart + - id: OrganHumanStomach + - id: OrganHumanLiver + - id: OrganHumanKidneys + - type: HumanoidAppearance + species: Gingerbread + +- type: entity + parent: + - AppearanceGingerbread + - BaseSpeciesMobOrganic + id: MobGingerbread + name: Urist McCookie + components: + - type: Butcherable + spawned: + - id: FoodBakedCookie + amount: 5 + - type: Damageable + damageModifierSet: Gingerbread + - type: DamageVisuals + damageOverlayGroups: + Brute: + sprite: Mobs/Effects/brute_damage.rsi + color: "#896e55" + Burn: + sprite: Mobs/Effects/burn_damage.rsi + - type: Bloodstream + bloodReferenceSolution: + reagents: + - ReagentId: Sugar + Quantity: 100 + - ReagentId: Butter + Quantity: 200 + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.35 + density: 100 #fairly light + restitution: 0.0 + mask: + - MobMask + layer: + - MobLayer + - type: TypingIndicator + proto: gingerbread + +- type: entity + parent: OrganBase + id: OrganGingerbread + abstract: true + suffix: gingerbread + +- type: entity + parent: OrganGingerbread + id: OrganGingerbreadExternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Gingerbread/parts.rsi + +- type: entity + parent: [ OrganBaseTorso, OrganGingerbreadExternal ] + id: OrganGingerbreadTorso + +- type: entity + parent: [ OrganBaseHead, OrganGingerbreadExternal ] + id: OrganGingerbreadHead + +- type: entity + parent: [ OrganBaseArmLeft, OrganGingerbreadExternal ] + id: OrganGingerbreadArmLeft + +- type: entity + parent: [ OrganBaseArmRight, OrganGingerbreadExternal ] + id: OrganGingerbreadArmRight + +- type: entity + parent: [ OrganBaseHandLeft, OrganGingerbreadExternal ] + id: OrganGingerbreadHandLeft + +- type: entity + parent: [ OrganBaseHandRight, OrganGingerbreadExternal ] + id: OrganGingerbreadHandRight + +- type: entity + parent: [ OrganBaseLegLeft, OrganGingerbreadExternal ] + id: OrganGingerbreadLegLeft + +- type: entity + parent: [ OrganBaseLegRight, OrganGingerbreadExternal ] + id: OrganGingerbreadLegRight + +- type: entity + parent: [ OrganBaseFootLeft, OrganGingerbreadExternal ] + id: OrganGingerbreadFootLeft + +- type: entity + parent: [ OrganBaseFootRight, OrganGingerbreadExternal ] + id: OrganGingerbreadFootRight + +- type: entity + name: gingerbread man + id: MobGingerbreadAI + parent: [ MobGingerbread, MobCombat ] + components: + - type: GhostRole + name: ghost-role-information-gingerbread-name + description: ghost-role-information-gingerbread-description + rules: ghost-role-information-nonantagonist-rules + - type: GhostTakeoverAvailable + - type: NPCRetaliation + - type: FactionException + - type: NpcFactionMember + factions: + - Passive + - type: HTN + rootTask: + task: SimpleHostileCompound diff --git a/Resources/Prototypes/Body/Species/human.yml b/Resources/Prototypes/Body/Species/human.yml new file mode 100644 index 00000000000..5f4d65d6a79 --- /dev/null +++ b/Resources/Prototypes/Body/Species/human.yml @@ -0,0 +1,162 @@ +- type: entity + parent: BaseSpeciesAppearance + id: AppearanceHuman + name: human appearance + components: + - type: Inventory + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganHumanTorso + - id: OrganHumanHead + - id: OrganHumanArmLeft + - id: OrganHumanArmRight + - id: OrganHumanHandRight + - id: OrganHumanHandLeft + - id: OrganHumanLegLeft + - id: OrganHumanLegRight + - id: OrganHumanFootLeft + - id: OrganHumanFootRight + - id: OrganHumanBrain + - id: OrganHumanEyes + - id: OrganHumanTongue + - id: OrganHumanAppendix + - id: OrganHumanEars + - id: OrganHumanLungs + - id: OrganHumanHeart + - id: OrganHumanStomach + - id: OrganHumanLiver + - id: OrganHumanKidneys + - type: HumanoidAppearance + species: Human + hideLayersOnEquip: + - Hair + - Snout + +- type: entity + parent: + - AppearanceHuman + - BaseSpeciesMobOrganic + id: MobHuman + name: Urist McHands + components: + - type: Butcherable + spawned: + - id: FoodMeatHuman + amount: 5 + +- type: entity + parent: OrganBase + id: OrganHuman + abstract: true + suffix: human + +- type: entity + id: OrganHumanMetabolizer + abstract: true + components: + - type: Metabolizer + metabolizerTypes: [ Human ] + +- type: entity + parent: OrganHuman + id: OrganHumanInternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Human/organs.rsi + +- type: entity + parent: OrganHuman + id: OrganHumanExternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Human/parts.rsi + +- type: entity + parent: [ OrganBaseTorso, OrganHumanExternal ] + id: OrganHumanTorso + +- type: entity + parent: [ OrganBaseHead, OrganHumanExternal ] + id: OrganHumanHead + +- type: entity + parent: [ OrganBaseArmLeft, OrganHumanExternal ] + id: OrganHumanArmLeft + +- type: entity + parent: [ OrganBaseArmRight, OrganHumanExternal ] + id: OrganHumanArmRight + +- type: entity + parent: [ OrganBaseHandLeft, OrganHumanExternal ] + id: OrganHumanHandLeft + +- type: entity + parent: [ OrganBaseHandRight, OrganHumanExternal ] + id: OrganHumanHandRight + +- type: entity + parent: [ OrganBaseLegLeft, OrganHumanExternal ] + id: OrganHumanLegLeft + +- type: entity + parent: [ OrganBaseLegRight, OrganHumanExternal ] + id: OrganHumanLegRight + +- type: entity + parent: [ OrganBaseFootLeft, OrganHumanExternal ] + id: OrganHumanFootLeft + +- type: entity + parent: [ OrganBaseFootRight, OrganHumanExternal ] + id: OrganHumanFootRight + +- type: entity + parent: [ OrganBaseBrain, OrganHumanInternal ] + id: OrganHumanBrain + +- type: entity + parent: [ OrganBaseEyes, OrganHumanInternal ] + id: OrganHumanEyes + +- type: entity + parent: [ OrganBaseTongue, OrganHumanInternal ] + id: OrganHumanTongue + +- type: entity + parent: [ OrganBaseAppendix, OrganHumanInternal ] + id: OrganHumanAppendix + +- type: entity + parent: [ OrganBaseEars, OrganHumanInternal ] + id: OrganHumanEars + +- type: entity + parent: [ OrganBaseLungs, OrganHumanInternal, OrganHumanMetabolizer ] + id: OrganHumanLungs + +- type: entity + parent: [ OrganBaseHeart, OrganHumanInternal, OrganHumanMetabolizer ] + id: OrganHumanHeart + +- type: entity + parent: [ OrganBaseStomach, OrganHumanInternal, OrganHumanMetabolizer ] + id: OrganHumanStomach + +- type: entity + parent: [ OrganBaseLiver, OrganHumanInternal, OrganHumanMetabolizer ] + id: OrganHumanLiver + +- type: entity + parent: [ OrganBaseKidneys, OrganHumanInternal, OrganHumanMetabolizer ] + id: OrganHumanKidneys diff --git a/Resources/Prototypes/Body/Species/moth.yml b/Resources/Prototypes/Body/Species/moth.yml new file mode 100644 index 00000000000..d274a06cd68 --- /dev/null +++ b/Resources/Prototypes/Body/Species/moth.yml @@ -0,0 +1,261 @@ +- type: entity + parent: BaseSpeciesAppearance + id: AppearanceMoth + name: moth appearance + components: + - type: Inventory + speciesId: moth + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Moth/displacement.rsi + state: jumpsuit-female + back: + sizeMaps: + 32: + sprite: Mobs/Species/Moth/displacement.rsi + state: back + outerClothing: + sizeMaps: + 32: + sprite: Mobs/Species/Moth/displacement.rsi + state: outerclothing + gloves: + sizeMaps: + 32: + sprite: Mobs/Species/Moth/displacement.rsi + state: hand + shoes: + sizeMaps: + 32: + sprite: Mobs/Species/Moth/displacement.rsi + state: shoes + displacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Moth/displacement.rsi + state: jumpsuit-male + back: + sizeMaps: + 32: + sprite: Mobs/Species/Moth/displacement.rsi + state: back + outerClothing: + sizeMaps: + 32: + sprite: Mobs/Species/Moth/displacement.rsi + state: outerclothing + gloves: + sizeMaps: + 32: + sprite: Mobs/Species/Moth/displacement.rsi + state: hand + shoes: + sizeMaps: + 32: + sprite: Mobs/Species/Moth/displacement.rsi + state: shoes + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganMothTorso + - id: OrganMothHead + - id: OrganMothArmLeft + - id: OrganMothArmRight + - id: OrganMothHandRight + - id: OrganMothHandLeft + - id: OrganMothLegLeft + - id: OrganMothLegRight + - id: OrganMothFootLeft + - id: OrganMothFootRight + - id: OrganMothBrain + - id: OrganMothEyes + - id: OrganMothTongue + - id: OrganMothAppendix + - id: OrganMothEars + - id: OrganMothLungs + - id: OrganMothHeart + - id: OrganMothStomach + - id: OrganMothLiver + - id: OrganMothKidneys + - type: HumanoidAppearance + species: Moth + +- type: entity + parent: + - AppearanceMoth + - BaseSpeciesMobOrganic + id: MobMoth + name: Urist McFluff + components: + - type: Damageable + damageModifierSet: Moth + - type: ZombieAccentOverride + accent: zombieMoth + - type: Speech + speechVerb: Moth + allowedEmotes: ['Chitter', 'Squeak'] + - type: TypingIndicator + proto: moth + - type: Bloodstream + bloodReferenceSolution: + reagents: + - ReagentId: InsectBlood + Quantity: 300 + - type: DamageVisuals + damageOverlayGroups: + Brute: + sprite: Mobs/Effects/brute_damage.rsi + color: "#808A51" + Burn: + sprite: Mobs/Effects/burn_damage.rsi + - type: MothAccent + - type: Vocal + sounds: + Male: UnisexMoth + Female: UnisexMoth + Unsexed: UnisexMoth + - type: MovementSpeedModifier + baseWeightlessAcceleration: 1.5 # Move around more easily in space. + baseWeightlessFriction: 1 + baseWeightlessModifier: 1 + - type: Flammable + damage: + types: + Heat: 2.5 # moths burn more easily + - type: Temperature + currentTemperature: 310.15 + specificHeat: 46 + - type: TemperatureDamage # Moths hate the heat and thrive in the cold. + heatDamageThreshold: 320 + coldDamageThreshold: 230 + coldDamage: + types: + Cold: 0.05 # per second, scales with temperature & other constants + heatDamage: + types: + Heat: 3 # per second, scales with temperature & other constants + - type: TemperatureSpeed + thresholds: + 289: 0.9 + 275: 0.8 + 250: 0.7 + +- type: entity + parent: OrganBase + id: OrganMoth + abstract: true + suffix: Moth + +- type: entity + id: OrganMothMetabolizer + abstract: true + components: + - type: Metabolizer + metabolizerTypes: [ Moth ] + +- type: entity + parent: OrganMoth + id: OrganMothInternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Human/organs.rsi + +- type: entity + parent: OrganMoth + id: OrganMothExternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Moth/parts.rsi + +- type: entity + parent: [ OrganBaseTorso, OrganMothExternal ] + id: OrganMothTorso + +- type: entity + parent: [ OrganBaseHead, OrganMothExternal ] + id: OrganMothHead + +- type: entity + parent: [ OrganBaseArmLeft, OrganMothExternal ] + id: OrganMothArmLeft + +- type: entity + parent: [ OrganBaseArmRight, OrganMothExternal ] + id: OrganMothArmRight + +- type: entity + parent: [ OrganBaseHandLeft, OrganMothExternal ] + id: OrganMothHandLeft + +- type: entity + parent: [ OrganBaseHandRight, OrganMothExternal ] + id: OrganMothHandRight + +- type: entity + parent: [ OrganBaseLegLeft, OrganMothExternal ] + id: OrganMothLegLeft + +- type: entity + parent: [ OrganBaseLegRight, OrganMothExternal ] + id: OrganMothLegRight + +- type: entity + parent: [ OrganBaseFootLeft, OrganMothExternal ] + id: OrganMothFootLeft + +- type: entity + parent: [ OrganBaseFootRight, OrganMothExternal ] + id: OrganMothFootRight + +- type: entity + parent: [ OrganBaseBrain, OrganSpriteHumanInternal, OrganMothInternal ] + id: OrganMothBrain + +- type: entity + parent: [ OrganBaseEyes, OrganMothInternal ] + id: OrganMothEyes + +- type: entity + parent: [ OrganBaseTongue, OrganMothInternal ] + id: OrganMothTongue + +- type: entity + parent: [ OrganBaseAppendix, OrganSpriteHumanInternal, OrganMothInternal ] + id: OrganMothAppendix + +- type: entity + parent: [ OrganBaseEars, OrganSpriteHumanInternal, OrganMothInternal ] + id: OrganMothEars + +- type: entity + parent: [ OrganBaseLungs, OrganMothInternal, OrganMothMetabolizer ] + id: OrganMothLungs + +- type: entity + parent: [ OrganBaseHeart, OrganMothInternal, OrganAnimalMetabolizer ] + id: OrganMothHeart + +- type: entity + parent: [ OrganBaseStomach, OrganMothInternal, OrganMothMetabolizer ] + id: OrganMothStomach + components: + - type: Stomach + specialDigestible: + tags: + - ClothMade + - Paper + - Pill + +- type: entity + parent: [ OrganBaseLiver, OrganSpriteHumanInternal, OrganMothInternal, OrganAnimalMetabolizer ] + id: OrganMothLiver + +- type: entity + parent: [ OrganBaseKidneys, OrganSpriteHumanInternal, OrganMothInternal, OrganMothMetabolizer ] + id: OrganMothKidneys diff --git a/Resources/Prototypes/Body/Species/reptilian.yml b/Resources/Prototypes/Body/Species/reptilian.yml new file mode 100644 index 00000000000..4a7a4f23f7c --- /dev/null +++ b/Resources/Prototypes/Body/Species/reptilian.yml @@ -0,0 +1,242 @@ +- type: entity + parent: BaseSpeciesAppearance + id: AppearanceReptilian + name: reptilian appearance + components: + - type: Inventory + speciesId: reptilian + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female + head: + sizeMaps: + 32: + sprite: Mobs/Species/Reptilian/displacement.rsi + state: head + mask: + sizeMaps: + 32: + sprite: Mobs/Species/Reptilian/displacement.rsi + state: mask + displacements: + head: + sizeMaps: + 32: + sprite: Mobs/Species/Reptilian/displacement.rsi + state: head + mask: + sizeMaps: + 32: + sprite: Mobs/Species/Reptilian/displacement.rsi + state: mask + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganReptilianTorso + - id: OrganReptilianHead + - id: OrganReptilianArmLeft + - id: OrganReptilianArmRight + - id: OrganReptilianHandRight + - id: OrganReptilianHandLeft + - id: OrganReptilianLegLeft + - id: OrganReptilianLegRight + - id: OrganReptilianFootLeft + - id: OrganReptilianFootRight + - id: OrganReptilianBrain + - id: OrganReptilianEyes + - id: OrganReptilianTongue + - id: OrganReptilianAppendix + - id: OrganReptilianEars + - id: OrganReptilianLungs + - id: OrganReptilianHeart + - id: OrganReptilianStomach + - id: OrganReptilianLiver + - id: OrganReptilianKidneys + - type: HumanoidAppearance + species: Reptilian + hideLayersOnEquip: + - Snout + - HeadTop + - HeadSide + - Tail + undergarmentBottom: UndergarmentBottomBoxersReptilian + +- type: entity + parent: + - AppearanceReptilian + - BaseSpeciesMobOrganic + id: MobReptilian + name: Urissst Mz'Hand + components: + - type: Puller + needsHands: false + - type: Butcherable + butcheringType: Spike + spawned: + - id: FoodMeatLizard + amount: 5 + - type: LizardAccent + - type: Speech + speechSounds: Lizard + speechVerb: Reptilian + allowedEmotes: ['Thump'] + - type: TypingIndicator + proto: lizard + - type: Vocal + sounds: + Male: MaleReptilian + Female: FemaleReptilian + Unsexed: MaleReptilian + - type: BodyEmotes + soundsId: ReptilianBodyEmotes + - type: Damageable + damageModifierSet: Scale + - type: MeleeWeapon + soundHit: + collection: AlienClaw + angle: 30 + animation: WeaponArcClaw + damage: + types: + Slash: 5 + - type: Temperature + currentTemperature: 310.15 + specificHeat: 42 + - type: TemperatureDamage + heatDamageThreshold: 400 + coldDamageThreshold: 285 + coldDamage: + types: + Cold : 0.1 #per second, scales with temperature & other constants + heatDamage: + types: + Heat : 1.5 #per second, scales with temperature & other constants + - type: TemperatureSpeed + thresholds: + 301: 0.9 + 295: 0.8 + 285: 0.7 + - type: Wagging + +- type: entity + parent: OrganBase + id: OrganReptilian + abstract: true + suffix: Reptilian + +- type: entity + id: OrganReptilianMetabolizer + abstract: true + components: + - type: Metabolizer + metabolizerTypes: [ Animal ] + +- type: entity + parent: OrganReptilian + id: OrganReptilianInternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Human/organs.rsi + +- type: entity + parent: OrganReptilian + id: OrganReptilianExternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Reptilian/parts.rsi + +- type: entity + parent: [ OrganBaseTorso, OrganReptilianExternal ] + id: OrganReptilianTorso + +- type: entity + parent: [ OrganBaseHead, OrganReptilianExternal ] + id: OrganReptilianHead + +- type: entity + parent: [ OrganBaseArmLeft, OrganReptilianExternal ] + id: OrganReptilianArmLeft + +- type: entity + parent: [ OrganBaseArmRight, OrganReptilianExternal ] + id: OrganReptilianArmRight + +- type: entity + parent: [ OrganBaseHandLeft, OrganReptilianExternal ] + id: OrganReptilianHandLeft + +- type: entity + parent: [ OrganBaseHandRight, OrganReptilianExternal ] + id: OrganReptilianHandRight + +- type: entity + parent: [ OrganBaseLegLeft, OrganReptilianExternal ] + id: OrganReptilianLegLeft + +- type: entity + parent: [ OrganBaseLegRight, OrganReptilianExternal ] + id: OrganReptilianLegRight + +- type: entity + parent: [ OrganBaseFootLeft, OrganReptilianExternal ] + id: OrganReptilianFootLeft + +- type: entity + parent: [ OrganBaseFootRight, OrganReptilianExternal ] + id: OrganReptilianFootRight + +- type: entity + parent: [ OrganBaseBrain, OrganSpriteHumanInternal, OrganReptilianInternal ] + id: OrganReptilianBrain + +- type: entity + parent: [ OrganBaseEyes, OrganReptilianInternal ] + id: OrganReptilianEyes + +- type: entity + parent: [ OrganBaseTongue, OrganReptilianInternal ] + id: OrganReptilianTongue + +- type: entity + parent: [ OrganBaseAppendix, OrganSpriteHumanInternal, OrganReptilianInternal ] + id: OrganReptilianAppendix + +- type: entity + parent: [ OrganBaseEars, OrganSpriteHumanInternal, OrganReptilianInternal ] + id: OrganReptilianEars + +- type: entity + parent: [ OrganBaseLungs, OrganReptilianInternal, OrganReptilianMetabolizer ] + id: OrganReptilianLungs + +- type: entity + parent: [ OrganBaseHeart, OrganReptilianInternal, OrganReptilianMetabolizer ] + id: OrganReptilianHeart + +- type: entity + parent: [ OrganBaseStomach, OrganReptilianInternal, OrganReptilianMetabolizer ] + id: OrganReptilianStomach + components: + - type: Stomach + specialDigestible: + tags: + - Fruit + - ReptilianFood + - Meat + - Pill + - Crayon + - Paper + +- type: entity + parent: [ OrganBaseLiver, OrganSpriteHumanInternal, OrganReptilianInternal, OrganReptilianMetabolizer ] + id: OrganReptilianLiver + +- type: entity + parent: [ OrganBaseKidneys, OrganSpriteHumanInternal, OrganReptilianInternal, OrganReptilianMetabolizer ] + id: OrganReptilianKidneys diff --git a/Resources/Prototypes/Entities/Mobs/Species/skeleton.yml b/Resources/Prototypes/Body/Species/skeleton.yml similarity index 59% rename from Resources/Prototypes/Entities/Mobs/Species/skeleton.yml rename to Resources/Prototypes/Body/Species/skeleton.yml index a03a5476e26..5cddd68e1ad 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/skeleton.yml +++ b/Resources/Prototypes/Body/Species/skeleton.yml @@ -1,24 +1,42 @@ - type: entity - save: false - name: Urist McSkelly - parent: - - MobFlammable - - BaseMobSpecies - id: BaseMobSkeletonPerson - abstract: true + parent: BaseSpeciesAppearance + id: AppearanceSkeletonPerson + name: skeletonperson appearance components: + - type: Inventory + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganSkeletonPersonTorso + - id: OrganSkeletonPersonHead + - id: OrganSkeletonPersonArmLeft + - id: OrganSkeletonPersonArmRight + - id: OrganSkeletonPersonHandRight + - id: OrganSkeletonPersonHandLeft + - id: OrganSkeletonPersonLegLeft + - id: OrganSkeletonPersonLegRight + - id: OrganSkeletonPersonFootLeft + - id: OrganSkeletonPersonFootRight - type: HumanoidAppearance species: Skeleton - - type: Icon - sprite: Mobs/Species/Skeleton/parts.rsi - state: full - - type: Body - prototype: Skeleton - requiredLegs: 2 - gibSound: /Audio/Effects/bone_rattle.ogg + +- type: entity + parent: + - AppearanceSkeletonPerson + - BaseSpeciesMob + id: MobSkeletonPerson + name: Urist McSkelly + components: - type: Damageable - damageContainer: BiologicalMetaphysical # Allows them to take Holy damage - damageModifierSet: Skeleton # If we get non-Holy metaphysical damage types in the future, the Skeleton set might need to be adjusted to provide immunity to them (depends on what exactly the new types are) + damageContainer: BiologicalMetaphysical + damageModifierSet: Skeleton - type: DamageVisuals damageOverlayGroups: Brute: @@ -26,7 +44,6 @@ color: "#555555AA" Burn: sprite: Mobs/Effects/burn_damage.rsi - - type: MobState - type: MobThresholds thresholds: 0: Alive @@ -39,8 +56,8 @@ !type:DamageTrigger damage: 150 behaviors: - - !type:GibBehavior { } - - type: SlowOnDamage #modified speeds because they're so weak + - !type:GibBehavior + - type: SlowOnDamage speedModifierThresholds: 60: 0.9 80: 0.7 @@ -103,13 +120,6 @@ alternateState: Standing - type: FlashImmunity showInExamine: false - - type: Inventory - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Human/displacement.rsi - state: jumpsuit-female - type: Instrument program: 13 # Xylophone. Woodblock is 115 (another good option) - type: ActivatableUI @@ -128,18 +138,62 @@ type: HumanoidMarkingModifierBoundUserInterface enum.StrippingUiKey.Key: type: StrippableBoundUserInterface + - type: InteractionPopup + successChance: 1 + interactSuccessString: hugging-success-generic + interactSuccessSound: /Audio/Effects/thudswoosh.ogg + messagePerceivedByOthers: hugging-success-generic-others + +- type: entity + parent: OrganBase + id: OrganSkeletonPerson + abstract: true + suffix: SkeletonPerson - type: entity - parent: BaseSpeciesDummy - id: MobSkeletonPersonDummy - categories: [ HideSpawnMenu ] + parent: OrganSkeletonPerson + id: OrganSkeletonPersonExternal + abstract: true components: - - type: HumanoidAppearance - species: Skeleton - - type: Inventory - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Human/displacement.rsi - state: jumpsuit-female + - type: Sprite + sprite: Mobs/Species/Skeleton/parts.rsi + +- type: entity + parent: [ OrganBaseTorso, OrganSkeletonPersonExternal ] + id: OrganSkeletonPersonTorso + +- type: entity + parent: [ OrganBaseHead, OrganSkeletonPersonExternal ] + id: OrganSkeletonPersonHead + +- type: entity + parent: [ OrganBaseArmLeft, OrganSkeletonPersonExternal ] + id: OrganSkeletonPersonArmLeft + +- type: entity + parent: [ OrganBaseArmRight, OrganSkeletonPersonExternal ] + id: OrganSkeletonPersonArmRight + +- type: entity + parent: [ OrganBaseHandLeft, OrganSkeletonPersonExternal ] + id: OrganSkeletonPersonHandLeft + +- type: entity + parent: [ OrganBaseHandRight, OrganSkeletonPersonExternal ] + id: OrganSkeletonPersonHandRight + +- type: entity + parent: [ OrganBaseLegLeft, OrganSkeletonPersonExternal ] + id: OrganSkeletonPersonLegLeft + +- type: entity + parent: [ OrganBaseLegRight, OrganSkeletonPersonExternal ] + id: OrganSkeletonPersonLegRight + +- type: entity + parent: [ OrganBaseFootLeft, OrganSkeletonPersonExternal ] + id: OrganSkeletonPersonFootLeft + +- type: entity + parent: [ OrganBaseFootRight, OrganSkeletonPersonExternal ] + id: OrganSkeletonPersonFootRight diff --git a/Resources/Prototypes/Body/Species/slime.yml b/Resources/Prototypes/Body/Species/slime.yml new file mode 100644 index 00000000000..4d596c05583 --- /dev/null +++ b/Resources/Prototypes/Body/Species/slime.yml @@ -0,0 +1,232 @@ +- type: entity + parent: BaseSpeciesAppearance + id: AppearanceSlimePerson + name: SlimePerson appearance + components: + - type: Inventory + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganSlimePersonTorso + - id: OrganSlimePersonHead + - id: OrganSlimePersonArmLeft + - id: OrganSlimePersonArmRight + - id: OrganSlimePersonHandRight + - id: OrganSlimePersonHandLeft + - id: OrganSlimePersonLegLeft + - id: OrganSlimePersonLegRight + - id: OrganSlimePersonFootLeft + - id: OrganSlimePersonFootRight + - id: OrganSlimePersonCore + - id: OrganSlimePersonLungs + - type: HumanoidAppearance + species: SlimePerson + +- type: entity + parent: + - AppearanceSlimePerson + - BaseSpeciesMobOrganic + id: MobSlimePerson + name: Urist McWobble + components: + - type: Storage + clickInsert: false + grid: + - 0,0,1,2 + maxItemSize: Large + storageInsertSound: + path: /Audio/Voice/Slime/slime_squish.ogg + - type: ContainerContainer + containers: + storagebase: !type:Container + ents: [] + - type: UserInterface + interfaces: + enum.StorageUiKey.Key: + type: StorageBoundUserInterface + enum.HumanoidMarkingModifierKey.Key: + type: HumanoidMarkingModifierBoundUserInterface + enum.StrippingUiKey.Key: + type: StrippableBoundUserInterface + - type: UseDelay + delay: 0.5 + - type: Speech + speechVerb: Slime + speechSounds: Slime + allowedEmotes: ['Squish'] + - type: TypingIndicator + proto: slime + - type: Vocal + sounds: + Male: MaleSlime + Female: FemaleSlime + Unsexed: MaleSlime + - type: Damageable + damageModifierSet: Slime + - type: PassiveDamage # Around 8 damage a minute healed + allowedStates: + - Alive + damageCap: 65 + damage: + types: + Heat: -0.14 + groups: + Brute: -0.14 + - type: DamageVisuals + damageOverlayGroups: + Brute: + sprite: Mobs/Effects/brute_damage.rsi + color: "#2cf274" + Burn: + sprite: Mobs/Effects/burn_damage.rsi + - type: Bloodstream + bloodReferenceSolution: # TODO Color slime blood based on their slime color or smth + reagents: + - ReagentId: Slime + Quantity: 300 + - type: Barotrauma + damage: + types: + Blunt: 0.50 #per second, scales with pressure and other constants. + Heat: 0.2 # 0.1 more than humans, i feel like low pressure would make slime boil more than blunt stretch them so i decided on this instead. + - type: Reactive + groups: + Flammable: [ Touch ] + Extinguish: [ Touch ] + reactions: + - reagents: [ Water, SpaceCleaner ] + methods: [ Touch ] + effects: + - !type:WashCreamPie + - reagents: [ Water ] + methods: [ Touch ] + effects: + - !type:HealthChange + damage: + types: + Heat: 0.05 + - !type:PopupMessage + type: Local + visualType: Large + messages: [ "slime-hurt-by-water-popup" ] + probability: 0.25 + - type: Butcherable + butcheringType: Spike + spawned: + - id: FoodMeatSlime + amount: 5 + - type: Respirator + damage: + types: + Asphyxiation: 0.2 + damageRecovery: + types: + Asphyxiation: -1.0 + maxSaturation: 15 + +- type: entity + parent: OrganBase + id: OrganSlimePerson + abstract: true + suffix: slime person + +- type: entity + id: OrganSlimePersonMetabolizer + abstract: true + components: + - type: Metabolizer + metabolizerTypes: [ Slime ] + +- type: entity + parent: OrganSlimePerson + id: OrganSlimePersonInternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Slime/organs.rsi + +- type: entity + parent: OrganSlimePerson + id: OrganSlimePersonExternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Slime/parts.rsi + +- type: entity + parent: [ OrganBaseTorso, OrganSlimePersonExternal ] + id: OrganSlimePersonTorso + +- type: entity + parent: [ OrganBaseHead, OrganSlimePersonExternal ] + id: OrganSlimePersonHead + +- type: entity + parent: [ OrganBaseArmLeft, OrganSlimePersonExternal ] + id: OrganSlimePersonArmLeft + +- type: entity + parent: [ OrganBaseArmRight, OrganSlimePersonExternal ] + id: OrganSlimePersonArmRight + +- type: entity + parent: [ OrganBaseHandLeft, OrganSlimePersonExternal ] + id: OrganSlimePersonHandLeft + +- type: entity + parent: [ OrganBaseHandRight, OrganSlimePersonExternal ] + id: OrganSlimePersonHandRight + +- type: entity + parent: [ OrganBaseLegLeft, OrganSlimePersonExternal ] + id: OrganSlimePersonLegLeft + +- type: entity + parent: [ OrganBaseLegRight, OrganSlimePersonExternal ] + id: OrganSlimePersonLegRight + +- type: entity + parent: [ OrganBaseFootLeft, OrganSlimePersonExternal ] + id: OrganSlimePersonFootLeft + +- type: entity + parent: [ OrganBaseFootRight, OrganSlimePersonExternal ] + id: OrganSlimePersonFootRight + +- type: entity + parent: [ OrganBaseBrain, OrganSlimePersonInternal, OrganSlimePersonMetabolizer ] + id: OrganSlimePersonCore + name: sentient slime core + components: + - type: SolutionContainerManager + solutions: + stomach: + maxVol: 50.0 + - type: Stomach + - type: Metabolizer + maxReagents: 6 + metabolizerTypes: [ Slime ] + removeEmpty: true + groups: + - id: Food + - id: Drink + - id: Medicine + - id: Poison + - id: Narcotic + - id: Alcohol + rateModifier: 2.5 + +- type: entity + parent: [ OrganBaseLungs, OrganSlimePersonInternal, OrganSlimePersonMetabolizer ] + id: OrganSlimePersonLungs + name: gas sacs + components: + - type: Lung + alert: LowNitrogen diff --git a/Resources/Prototypes/Entities/Mobs/Species/vox.yml b/Resources/Prototypes/Body/Species/vox.yml similarity index 52% rename from Resources/Prototypes/Entities/Mobs/Species/vox.yml rename to Resources/Prototypes/Body/Species/vox.yml index f9ef0a357d6..e25d1739559 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/vox.yml +++ b/Resources/Prototypes/Body/Species/vox.yml @@ -1,17 +1,106 @@ -- type: entity - parent: BaseMobSpeciesOrganic - id: BaseMobVox - abstract: true +- type: entity + parent: BaseSpeciesAppearance + id: AppearanceVox + name: vox appearance components: - - type: Hunger - - type: Thirst - - type: Icon - sprite: Mobs/Species/Vox/parts.rsi - state: vox_m - - type: Body - prototype: Vox - requiredLegs: 2 - #- type: VoxAccent # Not yet coded + - type: Inventory + speciesId: vox + displacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: jumpsuit + eyes: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: eyes + gloves: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: hand + head: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: head + neck: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: neck + back: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: back + ears: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: ears + shoes: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: shoes + - type: Hands + leftHandDisplacement: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: hand_l + rightHandDisplacement: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: hand_r + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganVoxTorso + - id: OrganVoxHead + - id: OrganVoxArmLeft + - id: OrganVoxArmRight + - id: OrganVoxHandRight + - id: OrganVoxHandLeft + - id: OrganVoxLegLeft + - id: OrganVoxLegRight + - id: OrganVoxFootLeft + - id: OrganVoxFootRight + - id: OrganVoxBrain + - id: OrganVoxEyes + - id: OrganVoxTongue + - id: OrganVoxAppendix + - id: OrganVoxEars + - id: OrganVoxLungs + - id: OrganVoxHeart + - id: OrganVoxStomach + - id: OrganVoxLiver + - id: OrganVoxKidneys + - type: HumanoidAppearance + species: Vox + undergarmentTop: UndergarmentTopTanktopVox + undergarmentBottom: UndergarmentBottomBoxersVox + markingsDisplacement: + Hair: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: hair + +- type: entity + parent: + - AppearanceVox + - BaseSpeciesMobOrganic + id: MobVox + name: Uristititi McVox + components: + - type: Damageable + damageModifierSet: Vox - type: Speech speechVerb: Vox speechSounds: Vox @@ -28,9 +117,6 @@ spawned: - id: FoodMeatChicken amount: 5 - - type: Damageable - damageContainer: Biological - damageModifierSet: Vox - type: Destructible thresholds: - trigger: @@ -102,180 +188,118 @@ damage: types: Slash: 5 # Reduce? - - type: Sprite # Need to redefine the whole order to draw the tail over their gas tank - layers: - - map: [ "enum.HumanoidVisualLayers.Chest" ] - - map: [ "enum.HumanoidVisualLayers.Head" ] - - map: [ "enum.HumanoidVisualLayers.Snout" ] - - map: [ "enum.HumanoidVisualLayers.Eyes" ] - - map: [ "enum.HumanoidVisualLayers.RArm" ] - - map: [ "enum.HumanoidVisualLayers.LArm" ] - - map: [ "enum.HumanoidVisualLayers.RLeg" ] - - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ] - - map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ] - - map: [ "jumpsuit" ] - - map: [ "enum.HumanoidVisualLayers.LFoot" ] - - map: [ "enum.HumanoidVisualLayers.RFoot" ] - - map: [ "enum.HumanoidVisualLayers.LHand" ] - - map: [ "enum.HumanoidVisualLayers.RHand" ] - - map: [ "gloves" ] - - map: [ "shoes" ] - - map: [ "ears" ] - - map: [ "eyes" ] - - map: [ "belt" ] - - map: [ "id" ] - - map: [ "outerClothing" ] - - map: [ "back" ] - - map: [ "neck" ] - - map: [ "suitstorage" ] # This is not in the default order - - map: [ "enum.HumanoidVisualLayers.SnoutCover" ] - - map: [ "enum.HumanoidVisualLayers.FacialHair" ] - - map: [ "enum.HumanoidVisualLayers.Hair" ] - - map: [ "enum.HumanoidVisualLayers.HeadSide" ] - - map: [ "enum.HumanoidVisualLayers.HeadTop" ] - - map: [ "enum.HumanoidVisualLayers.Tail" ] - - map: [ "mask" ] - - map: [ "head" ] - - map: [ "pocket1" ] - - map: [ "pocket2" ] - - map: [ "enum.HumanoidVisualLayers.Handcuffs" ] - color: "#ffffff" - sprite: Objects/Misc/handcuffs.rsi - state: body-overlay-2 - visible: false - - map: [ "clownedon" ] - sprite: "Effects/creampie.rsi" - state: "creampie_vox" # Not default - visible: false - - type: HumanoidAppearance - species: Vox - undergarmentTop: UndergarmentTopTanktopVox - undergarmentBottom: UndergarmentBottomBoxersVox - markingsDisplacement: - Hair: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: hair - - type: Inventory - speciesId: vox - displacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: jumpsuit - eyes: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: eyes - gloves: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: hand - head: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: head - neck: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: neck - back: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: back - ears: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: ears - shoes: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: shoes - - type: Hands - leftHandDisplacement: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: hand_l - rightHandDisplacement: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: hand_r - type: entity - parent: BaseSpeciesDummy - id: MobVoxDummy - categories: [ HideSpawnMenu ] + parent: OrganBase + id: OrganVox + abstract: true + suffix: Vox + +- type: entity + id: OrganVoxMetabolizer + abstract: true components: - - type: HumanoidAppearance - species: Vox - undergarmentTop: UndergarmentTopTanktopVox - undergarmentBottom: UndergarmentBottomBoxersVox - markingsDisplacement: - Hair: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: hair - - type: Body - prototype: Vox - - type: Inventory - speciesId: vox - displacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: jumpsuit - eyes: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: eyes - gloves: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: hand - head: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: head - back: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: back - ears: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: ears - shoes: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: shoes - - type: Hands - leftHandDisplacement: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: hand_l - rightHandDisplacement: - sizeMaps: - 32: - sprite: Mobs/Species/Vox/displacement.rsi - state: hand_r + - type: Metabolizer + metabolizerTypes: [ Vox ] + +- type: entity + parent: OrganVox + id: OrganVoxInternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Vox/organs.rsi + +- type: entity + parent: OrganVox + id: OrganVoxExternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Vox/parts.rsi + +- type: entity + parent: [ OrganBaseTorso, OrganVoxExternal ] + id: OrganVoxTorso + components: + - type: Sprite + state: torso + +- type: entity + parent: [ OrganBaseHead, OrganVoxExternal ] + id: OrganVoxHead + components: + - type: Sprite + state: head + +- type: entity + parent: [ OrganBaseArmLeft, OrganVoxExternal ] + id: OrganVoxArmLeft + +- type: entity + parent: [ OrganBaseArmRight, OrganVoxExternal ] + id: OrganVoxArmRight + +- type: entity + parent: [ OrganBaseHandLeft, OrganVoxExternal ] + id: OrganVoxHandLeft + +- type: entity + parent: [ OrganBaseHandRight, OrganVoxExternal ] + id: OrganVoxHandRight + +- type: entity + parent: [ OrganBaseLegLeft, OrganVoxExternal ] + id: OrganVoxLegLeft + +- type: entity + parent: [ OrganBaseLegRight, OrganVoxExternal ] + id: OrganVoxLegRight + +- type: entity + parent: [ OrganBaseFootLeft, OrganVoxExternal ] + id: OrganVoxFootLeft + +- type: entity + parent: [ OrganBaseFootRight, OrganVoxExternal ] + id: OrganVoxFootRight + +- type: entity + parent: [ OrganBaseBrain, OrganSpriteHumanInternal, OrganVoxInternal ] + id: OrganVoxBrain + +- type: entity + parent: [ OrganBaseEyes, OrganVoxInternal ] + id: OrganVoxEyes + +- type: entity + parent: [ OrganBaseTongue, OrganVoxInternal ] + id: OrganVoxTongue + +- type: entity + parent: [ OrganBaseAppendix, OrganSpriteHumanInternal, OrganVoxInternal ] + id: OrganVoxAppendix + +- type: entity + parent: [ OrganBaseEars, OrganSpriteHumanInternal, OrganVoxInternal ] + id: OrganVoxEars + +- type: entity + parent: [ OrganBaseLungs, OrganVoxInternal, OrganVoxMetabolizer ] + id: OrganVoxLungs + +- type: entity + parent: [ OrganBaseHeart, OrganVoxInternal, OrganVoxMetabolizer ] + id: OrganVoxHeart + +- type: entity + parent: [ OrganBaseStomach, OrganVoxInternal, OrganVoxMetabolizer ] + id: OrganVoxStomach + +- type: entity + parent: [ OrganBaseLiver, OrganSpriteHumanInternal, OrganVoxInternal, OrganVoxMetabolizer ] + id: OrganVoxLiver + +- type: entity + parent: [ OrganBaseKidneys, OrganSpriteHumanInternal, OrganVoxInternal, OrganVoxMetabolizer ] + id: OrganVoxKidneys diff --git a/Resources/Prototypes/Body/Species/vulpkanin.yml b/Resources/Prototypes/Body/Species/vulpkanin.yml new file mode 100644 index 00000000000..6a3b657bfb5 --- /dev/null +++ b/Resources/Prototypes/Body/Species/vulpkanin.yml @@ -0,0 +1,258 @@ +- type: entity + parent: BaseSpeciesAppearance + id: AppearanceVulpkanin + name: vulpkanin appearance + components: + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganVulpkaninTorso + - id: OrganVulpkaninHead + - id: OrganVulpkaninArmLeft + - id: OrganVulpkaninArmRight + - id: OrganVulpkaninHandRight + - id: OrganVulpkaninHandLeft + - id: OrganVulpkaninLegLeft + - id: OrganVulpkaninLegRight + - id: OrganVulpkaninFootLeft + - id: OrganVulpkaninFootRight + - id: OrganVulpkaninBrain + - id: OrganVulpkaninEyes + - id: OrganVulpkaninTongue + - id: OrganVulpkaninAppendix + - id: OrganVulpkaninEars + - id: OrganVulpkaninLungs + - id: OrganVulpkaninHeart + - id: OrganVulpkaninStomach + - id: OrganVulpkaninLiver + - id: OrganVulpkaninKidneys + - type: HumanoidAppearance + species: Vulpkanin + undergarmentTop: UndergarmentTopTanktopVulpkanin + undergarmentBottom: UndergarmentBottomBoxersVulpkanin + hideLayersOnEquip: + - Snout + - SnoutCover + - HeadTop + - HeadSide + - FacialHair + - Hair + markingsDisplacement: + Hair: + sizeMaps: + 32: + sprite: Mobs/Species/Vulpkanin/displacement.rsi + state: hair + - type: Inventory + speciesId: vulpkanin + displacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Vulpkanin/displacement.rsi + state: jumpsuit + back: + sizeMaps: + 32: + sprite: Mobs/Species/Vulpkanin/displacement.rsi + state: back + outerClothing: + sizeMaps: + 32: + sprite: Mobs/Species/Vulpkanin/displacement.rsi + state: outerwear + gloves: + sizeMaps: + 32: + sprite: Mobs/Species/Vulpkanin/displacement.rsi + state: hand + shoes: + sizeMaps: + 32: + sprite: Mobs/Species/Vulpkanin/displacement.rsi + state: shoes + head: + sizeMaps: + 32: + sprite: Mobs/Species/Vulpkanin/displacement.rsi + state: head + neck: + sizeMaps: + 32: + sprite: Mobs/Species/Vulpkanin/displacement.rsi + state: neck + eyes: + sizeMaps: + 32: + sprite: Mobs/Species/Vulpkanin/displacement.rsi + state: eyes + belt: + sizeMaps: + 32: + sprite: Mobs/Species/Vulpkanin/displacement.rsi + state: belt + +- type: entity + parent: + - AppearanceVulpkanin + - BaseSpeciesMobOrganic + id: MobVulpkanin + name: Urist McArfArf + components: + - type: MessyDrinker + spillChance: 0.33 + - type: Speech + speechSounds: Vulpkanin + speechVerb: Vulpkanin + allowedEmotes: [ 'Bark', 'Snarl', 'Whine', 'Howl', 'Growl' ] + - type: Vocal + sounds: + Male: MaleVulpkanin + Female: FemaleVulpkanin + Unsexed: MaleVulpkanin + - type: Damageable + damageModifierSet: Vulpkanin + - type: MeleeWeapon + soundHit: + path: /Audio/Weapons/pierce.ogg + animation: WeaponArcClaw + damage: + types: + Piercing: 2 + Slash: 3 + - type: Temperature # Same as moth temperatures until below is solved. + specificHeat: 44 + - type: TemperatureDamage + heatDamageThreshold: 320 # TODO: 315 when there is a way to make the temperature alert not blink to the side of the screen and disappear when you "sweat" at 39C. + coldDamageThreshold: 230 # TODO: 220 when the above is solved. + coldDamage: + types: + Cold: 0.05 # Per second, scales with temperature & other constants + heatDamage: + types: + Heat: 2.5 # Per second, scales with temperature & other constants + # - type: Wagging TODO: Add back once we have animated tails again. Were removed due to the sprite rework, causing all of them to not fit anymore. + # action: ActionToggleWaggingVulpkanin + - type: TemperatureProtection + heatingCoefficient: 1.2 + coolingCoefficient: 0.3 + - type: JumpAbility + action: ActionVulpkaninGravityJump + canCollide: true + jumpDistance: 3 + jumpSound: + path: /Audio/Weapons/punchmiss.ogg + params: + pitch: 1.33 + volume: -5 + variation: 0.05 + +- type: entity + parent: OrganBase + id: OrganVulpkanin + abstract: true + suffix: vulpkanin + +- type: entity + id: OrganVulpkaninMetabolizer + abstract: true + components: + - type: Metabolizer + metabolizerTypes: [ Animal ] + +- type: entity + parent: OrganVulpkanin + id: OrganVulpkaninInternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Human/organs.rsi + +- type: entity + parent: OrganVulpkanin + id: OrganVulpkaninExternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Vulpkanin/parts.rsi + +- type: entity + parent: [ OrganBaseTorso, OrganVulpkaninExternal ] + id: OrganVulpkaninTorso + +- type: entity + parent: [ OrganBaseHead, OrganVulpkaninExternal ] + id: OrganVulpkaninHead + +- type: entity + parent: [ OrganBaseArmLeft, OrganVulpkaninExternal ] + id: OrganVulpkaninArmLeft + +- type: entity + parent: [ OrganBaseArmRight, OrganVulpkaninExternal ] + id: OrganVulpkaninArmRight + +- type: entity + parent: [ OrganBaseHandLeft, OrganVulpkaninExternal ] + id: OrganVulpkaninHandLeft + +- type: entity + parent: [ OrganBaseHandRight, OrganVulpkaninExternal ] + id: OrganVulpkaninHandRight + +- type: entity + parent: [ OrganBaseLegLeft, OrganVulpkaninExternal ] + id: OrganVulpkaninLegLeft + +- type: entity + parent: [ OrganBaseLegRight, OrganVulpkaninExternal ] + id: OrganVulpkaninLegRight + +- type: entity + parent: [ OrganBaseFootLeft, OrganVulpkaninExternal ] + id: OrganVulpkaninFootLeft + +- type: entity + parent: [ OrganBaseFootRight, OrganVulpkaninExternal ] + id: OrganVulpkaninFootRight + +- type: entity + parent: [ OrganBaseBrain, OrganSpriteHumanInternal, OrganVulpkaninInternal ] + id: OrganVulpkaninBrain + +- type: entity + parent: [ OrganBaseEyes, OrganVulpkaninInternal ] + id: OrganVulpkaninEyes + +- type: entity + parent: [ OrganBaseTongue, OrganVulpkaninInternal ] + id: OrganVulpkaninTongue + +- type: entity + parent: [ OrganBaseAppendix, OrganSpriteHumanInternal, OrganVulpkaninInternal ] + id: OrganVulpkaninAppendix + +- type: entity + parent: [ OrganBaseEars, OrganSpriteHumanInternal, OrganVulpkaninInternal ] + id: OrganVulpkaninEars + +- type: entity + parent: [ OrganBaseLungs, OrganVulpkaninInternal, OrganVulpkaninMetabolizer ] + id: OrganVulpkaninLungs + +- type: entity + parent: [ OrganBaseHeart, OrganVulpkaninInternal, OrganVulpkaninMetabolizer ] + id: OrganVulpkaninHeart + +- type: entity + parent: [ OrganBaseStomach, OrganVulpkaninInternal, OrganVulpkaninMetabolizer ] + id: OrganVulpkaninStomach + +- type: entity + parent: [ OrganBaseLiver, OrganSpriteHumanInternal, OrganVulpkaninInternal, OrganVulpkaninMetabolizer ] + id: OrganVulpkaninLiver + +- type: entity + parent: [ OrganBaseKidneys, OrganSpriteHumanInternal, OrganVulpkaninInternal, OrganVulpkaninMetabolizer ] + id: OrganVulpkaninKidneys diff --git a/Resources/Prototypes/Body/base_organs.yml b/Resources/Prototypes/Body/base_organs.yml new file mode 100644 index 00000000000..2101ceffaba --- /dev/null +++ b/Resources/Prototypes/Body/base_organs.yml @@ -0,0 +1,322 @@ +- type: entity + id: OrganBase + name: organ + abstract: true + parent: BaseItem + components: + - type: Organ + +- type: entity + parent: OrganBase + id: OrganBaseTorso + name: torso + abstract: true + components: + - type: Organ + category: Torso + - type: Sprite + state: torso_m + +- type: entity + parent: OrganBase + id: OrganBaseHead + name: head + abstract: true + components: + - type: Organ + category: Head + - type: Sprite + state: head_m + +- type: entity + parent: OrganBase + id: OrganBaseArmLeft + name: left arm + abstract: true + components: + - type: Organ + category: ArmLeft + - type: Sprite + state: l_arm + +- type: entity + parent: OrganBase + id: OrganBaseArmRight + name: right arm + abstract: true + components: + - type: Organ + category: ArmRight + - type: Sprite + state: r_arm + +- type: entity + parent: OrganBase + id: OrganBaseHandLeft + name: left hand + abstract: true + components: + - type: Organ + category: HandLeft + - type: HandOrgan + handID: left + data: + location: Left + - type: Sprite + state: l_hand + +- type: entity + parent: OrganBase + id: OrganBaseHandRight + name: right hand + abstract: true + components: + - type: Organ + category: HandRight + - type: HandOrgan + handID: right + data: + location: Right + - type: Sprite + state: r_hand + +- type: entity + parent: OrganBase + id: OrganBaseLegLeft + name: left leg + abstract: true + components: + - type: Organ + category: LegLeft + - type: Sprite + state: l_leg + +- type: entity + parent: OrganBase + id: OrganBaseLegRight + name: right leg + abstract: true + components: + - type: Organ + category: LegRight + - type: Sprite + state: r_leg + +- type: entity + parent: OrganBase + id: OrganBaseFootLeft + name: left foot + abstract: true + components: + - type: Organ + category: FootLeft + - type: Sprite + state: l_foot + +- type: entity + parent: OrganBase + id: OrganBaseFootRight + name: right foot + abstract: true + components: + - type: Organ + category: FootRight + - type: Sprite + state: r_foot + +- type: entity + parent: OrganBase + id: OrganBaseBrain + name: brain + abstract: true + components: + - type: GibbableOrgan + - type: Organ + category: Brain + - type: Sprite + layers: + - state: brain + - type: Item + heldPrefix: brain + - type: Input + context: "ghost" + - type: Brain + - type: InputMover + - type: Examiner + - type: BlockMovement + - type: BadFood + - type: FoodSequenceElement + entries: + Burger: Brain + Taco: Brain + +- type: entity + parent: OrganBase + id: OrganBaseEyes + name: eyes + abstract: true + components: + - type: GibbableOrgan + - type: Organ + category: Eyes + - type: Sprite + layers: + - state: eyeball-l + - state: eyeball-r + +- type: entity + parent: OrganBase + id: OrganBaseTongue + name: tongue + abstract: true + components: + - type: GibbableOrgan + - type: Organ + category: Tongue + - type: Sprite + layers: + - state: tongue + +- type: entity + parent: OrganBase + id: OrganBaseAppendix + name: appendix + abstract: true + components: + - type: GibbableOrgan + - type: Organ + category: Appendix + - type: Sprite + layers: + - state: appendix + +- type: entity + parent: OrganBase + id: OrganBaseEars + name: ears + abstract: true + components: + - type: GibbableOrgan + - type: Organ + category: Ears + - type: Sprite + layers: + - state: ears + +- type: entity + parent: OrganBase + id: OrganBaseLungs + name: lungs + abstract: true + components: + - type: GibbableOrgan + - type: Organ + category: Lungs + - type: Lung + - type: Metabolizer + removeEmpty: true + solutionOnBody: false + solution: "Lung" + groups: + - id: Gas + rateModifier: 100.0 + - type: SolutionContainerManager + solutions: + Lung: + maxVol: 100.0 + canReact: false + - type: Sprite + layers: + - state: lung-l + - state: lung-r + - type: Item + heldPrefix: lungs + +- type: entity + parent: OrganBase + id: OrganBaseHeart + name: heart + abstract: true + components: + - type: GibbableOrgan + - type: Organ + category: Heart + - type: Sprite + layers: + - state: heart-on + - type: Metabolizer + maxReagents: 2 + groups: + - id: Medicine + - id: Poison + - id: Narcotic + +- type: entity + parent: OrganBase + id: OrganBaseStomach + name: stomach + abstract: true + components: + - type: GibbableOrgan + - type: Organ + category: Stomach + - type: Stomach + - type: SolutionContainerManager + solutions: + stomach: + maxVol: 50 + - type: Metabolizer + maxReagents: 3 + groups: + - id: Food + - id: Drink + - type: Sprite + layers: + - state: stomach + - type: Item + heldPrefix: stomach + +- type: entity + parent: OrganBase + id: OrganBaseLiver + name: liver + abstract: true + components: + - type: GibbableOrgan + - type: Organ + category: Liver + - type: Sprite + layers: + - state: liver + - type: Item + heldPrefix: liver + - type: Metabolizer + maxReagents: 1 + groups: + - id: Alcohol + +- type: entity + parent: OrganBase + id: OrganBaseKidneys + name: kidneys + abstract: true + components: + - type: GibbableOrgan + - type: Organ + category: Kidneys + - type: Sprite + layers: + - state: kidney-l + - state: kidney-r + - type: Item + heldPrefix: kidneys + - type: Metabolizer + maxReagents: 5 + removeEmpty: true + +- type: entity + id: OrganSpriteHumanInternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Human/organs.rsi diff --git a/Resources/Prototypes/Body/organ_categories.yml b/Resources/Prototypes/Body/organ_categories.yml new file mode 100644 index 00000000000..9816aeb0707 --- /dev/null +++ b/Resources/Prototypes/Body/organ_categories.yml @@ -0,0 +1,59 @@ +- type: organCategory + id: Torso + +- type: organCategory + id: Head + +- type: organCategory + id: ArmLeft + +- type: organCategory + id: ArmRight + +- type: organCategory + id: HandRight + +- type: organCategory + id: HandLeft + +- type: organCategory + id: LegLeft + +- type: organCategory + id: LegRight + +- type: organCategory + id: FootLeft + +- type: organCategory + id: FootRight + +- type: organCategory + id: Brain + +- type: organCategory + id: Eyes + +- type: organCategory + id: Tongue + +- type: organCategory + id: Appendix + +- type: organCategory + id: Ears + +- type: organCategory + id: Lungs + +- type: organCategory + id: Heart + +- type: organCategory + id: Stomach + +- type: organCategory + id: Liver + +- type: organCategory + id: Kidneys diff --git a/Resources/Prototypes/Body/species_appearance.yml b/Resources/Prototypes/Body/species_appearance.yml new file mode 100644 index 00000000000..91f7370f657 --- /dev/null +++ b/Resources/Prototypes/Body/species_appearance.yml @@ -0,0 +1,87 @@ +- type: entity + abstract: true + id: BaseSpeciesLayers + components: + - type: Sprite + layers: + # Torso + - map: [ "enum.HumanoidVisualLayers.Chest" ] + + # Head + - map: [ "enum.HumanoidVisualLayers.Head" ] + - map: [ "enum.HumanoidVisualLayers.Snout" ] + - map: [ "enum.HumanoidVisualLayers.Eyes" ] + + # Limbs + - map: [ "enum.HumanoidVisualLayers.RArm" ] + - map: [ "enum.HumanoidVisualLayers.LArm" ] + - map: [ "enum.HumanoidVisualLayers.RLeg" ] + - map: [ "enum.HumanoidVisualLayers.LLeg" ] + + # Underwear & clothing + - map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ] + - map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ] + - map: ["jumpsuit"] + + # Extremities + - map: ["enum.HumanoidVisualLayers.LFoot"] + - map: ["enum.HumanoidVisualLayers.RFoot"] + - map: ["enum.HumanoidVisualLayers.LHand"] + - map: ["enum.HumanoidVisualLayers.RHand"] + + # More equipment + - map: [ "gloves" ] + - map: [ "shoes" ] + - map: [ "ears" ] + - map: [ "eyes" ] + - map: [ "belt" ] + - map: [ "id" ] + - map: [ "outerClothing" ] + - map: [ "back" ] + - map: [ "neck" ] + + # Stuff that goes in front of equipment + - map: [ "enum.HumanoidVisualLayers.SnoutCover" ] + - map: [ "enum.HumanoidVisualLayers.FacialHair" ] + - map: [ "enum.HumanoidVisualLayers.Hair" ] + - map: [ "enum.HumanoidVisualLayers.HeadSide" ] + - map: [ "enum.HumanoidVisualLayers.HeadTop" ] + - map: [ "enum.HumanoidVisualLayers.Tail" ] + + # Stuff that goes in front of stuff that goes in front of equipment + - map: [ "mask" ] + - map: [ "head" ] + - map: [ "pocket1" ] + - map: [ "pocket2" ] + + # Extra stuff + - map: ["enum.HumanoidVisualLayers.Handcuffs"] + color: "#ffffff" + sprite: Objects/Misc/handcuffs.rsi + state: body-overlay-2 + visible: false + + - map: [ "clownedon" ] # Dynamically generated + sprite: "Effects/creampie.rsi" + state: "creampie_human" + visible: false + +- type: entity + id: BaseSpeciesAppearance + parent: + - InventoryBase + - BaseSpeciesLayers + abstract: true + save: false + components: + - type: Body + - type: Hands + - type: ComplexInteraction + - type: ContainerContainer + - type: Appearance + - type: UserInterface + interfaces: + enum.HumanoidMarkingModifierKey.Key: + type: HumanoidMarkingModifierBoundUserInterface + enum.StrippingUiKey.Key: + type: StrippableBoundUserInterface diff --git a/Resources/Prototypes/Entities/Mobs/Species/base.yml b/Resources/Prototypes/Body/species_base.yml similarity index 53% rename from Resources/Prototypes/Entities/Mobs/Species/base.yml rename to Resources/Prototypes/Body/species_base.yml index 335b9c7a5de..7caa300bc99 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/Body/species_base.yml @@ -1,59 +1,15 @@ - type: entity - save: false + abstract: true parent: - BaseMob + - MobCombat - MobDamageable - MobPolymorphable - - MobCombat - StripableInventoryBase - id: BaseMobSpecies - abstract: true + - BaseSpeciesAppearance + id: BaseSpeciesMob + save: false components: - - type: Sprite - layers: - - map: [ "enum.HumanoidVisualLayers.Chest" ] - - map: [ "enum.HumanoidVisualLayers.Head" ] - - map: [ "enum.HumanoidVisualLayers.Snout" ] - - map: [ "enum.HumanoidVisualLayers.Eyes" ] - - map: [ "enum.HumanoidVisualLayers.RArm" ] - - map: [ "enum.HumanoidVisualLayers.LArm" ] - - map: [ "enum.HumanoidVisualLayers.RLeg" ] - - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ] - - map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ] - - map: ["jumpsuit"] - - map: ["enum.HumanoidVisualLayers.LFoot"] - - map: ["enum.HumanoidVisualLayers.RFoot"] - - map: ["enum.HumanoidVisualLayers.LHand"] - - map: ["enum.HumanoidVisualLayers.RHand"] - - map: [ "gloves" ] - - map: [ "shoes" ] - - map: [ "ears" ] - - map: [ "eyes" ] - - map: [ "belt" ] - - map: [ "id" ] - - map: [ "outerClothing" ] - - map: [ "back" ] - - map: [ "neck" ] - - map: [ "enum.HumanoidVisualLayers.SnoutCover" ] - - map: [ "enum.HumanoidVisualLayers.FacialHair" ] - - map: [ "enum.HumanoidVisualLayers.Hair" ] - - map: [ "enum.HumanoidVisualLayers.HeadSide" ] - - map: [ "enum.HumanoidVisualLayers.HeadTop" ] - - map: [ "enum.HumanoidVisualLayers.Tail" ] - - map: [ "mask" ] - - map: [ "head" ] - - map: [ "pocket1" ] - - map: [ "pocket2" ] - - map: ["enum.HumanoidVisualLayers.Handcuffs"] - color: "#ffffff" - sprite: Objects/Misc/handcuffs.rsi - state: body-overlay-2 - visible: false - - map: [ "clownedon" ] # Dynamically generated - sprite: "Effects/creampie.rsi" - state: "creampie_human" - visible: false - type: DamageVisuals thresholds: [ 10, 20, 30, 50, 70, 100 ] targetLayers: @@ -72,16 +28,15 @@ - type: GenericVisualizer visuals: enum.CreamPiedVisuals.Creamed: - clownedon: # Not 'creampied' bc I can already see Skyrat complaining about conflicts. - True: {visible: true} - False: {visible: false} + clownedon: + True: { visible: true } + False: { visible: false } - type: StatusIcon bounds: -0.5,-0.5,0.5,0.5 - type: RotationVisuals defaultRotation: 90 horizontalRotation: 90 - type: HumanoidAppearance - species: Human - type: TypingIndicator - type: SlowOnDamage speedModifierThresholds: @@ -130,13 +85,8 @@ - Flashed - RadiationProtection - Adrenaline - - type: Body - prototype: Human - requiredLegs: 2 - type: Identity - type: IdExaminable - - type: Hands - - type: ComplexInteraction - type: Internals - type: FloatingVisuals - type: Climbing @@ -211,22 +161,24 @@ - AnomalyHost - type: entity - save: false + abstract: true parent: - MobBloodstream - MobRespirator - MobAtmosStandard - MobFlammable - - BaseMobSpecies - id: BaseMobSpeciesOrganic - abstract: true + - BaseSpeciesMob + id: BaseSpeciesMobOrganic + save: false components: + - type: Hunger + - type: Thirst - type: Barotrauma damage: types: - Blunt: 0.50 #per second, scales with pressure and other constants. + Blunt: 0.50 Heat: 0.1 - - type: PassiveDamage # Slight passive regen. Assuming one damage type, comes out to about 4 damage a minute. + - type: PassiveDamage allowedStates: - Alive damageCap: 20 @@ -237,7 +189,6 @@ Brute: -0.07 - type: Fingerprint - type: Blindable - # Other - type: Temperature currentTemperature: 310.15 specificHeat: 42 @@ -265,10 +216,10 @@ thermalRegulationTemperatureThreshold: 2 - type: Perishable - type: Butcherable - butcheringType: Spike # TODO human. + butcheringType: Spike spawned: - - id: FoodMeat - amount: 5 + - id: FoodMeat + amount: 5 - type: Respirator damage: types: @@ -279,70 +230,3 @@ - type: FireVisuals alternateState: Standing - type: StunVisuals - -- type: entity - save: false - id: BaseSpeciesDummy - parent: InventoryBase - abstract: true - components: - - type: Hands - - type: ComplexInteraction - - type: ContainerContainer - - type: Icon - sprite: Mobs/Species/Human/parts.rsi - state: full - - type: Sprite - drawdepth: Mobs - noRot: true - # TODO BODY Turn these into individual body parts? - layers: - - map: [ "enum.HumanoidVisualLayers.Chest" ] - - map: [ "enum.HumanoidVisualLayers.Head" ] - - map: [ "enum.HumanoidVisualLayers.Snout" ] - - map: [ "enum.HumanoidVisualLayers.Eyes" ] - - map: [ "enum.HumanoidVisualLayers.RArm" ] - - map: [ "enum.HumanoidVisualLayers.LArm" ] - - map: [ "enum.HumanoidVisualLayers.RLeg" ] - - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ] - - map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ] - - map: ["jumpsuit"] - - map: ["enum.HumanoidVisualLayers.LFoot"] - - map: ["enum.HumanoidVisualLayers.RFoot"] - - map: ["enum.HumanoidVisualLayers.LHand"] - - map: ["enum.HumanoidVisualLayers.RHand"] - - map: ["enum.HumanoidVisualLayers.Handcuffs"] - color: "#ffffff" - sprite: Objects/Misc/handcuffs.rsi - state: body-overlay-2 - visible: false - - map: [ "gloves" ] - - map: [ "shoes" ] - - map: [ "ears" ] - - map: [ "eyes" ] - - map: [ "belt" ] - - map: [ "id" ] - - map: [ "outerClothing" ] - - map: [ "back" ] - - map: [ "neck" ] - - map: [ "enum.HumanoidVisualLayers.SnoutCover" ] - - map: [ "enum.HumanoidVisualLayers.FacialHair" ] - - map: [ "enum.HumanoidVisualLayers.Hair" ] - - map: [ "enum.HumanoidVisualLayers.HeadSide" ] - - map: [ "enum.HumanoidVisualLayers.HeadTop" ] - - map: [ "enum.HumanoidVisualLayers.Tail" ] - - map: [ "mask" ] - - map: [ "head" ] - - map: [ "pocket1" ] - - map: [ "pocket2" ] - - type: Appearance - - type: HumanoidAppearance - species: Human - - type: Body - prototype: Human - requiredLegs: 2 - - type: UserInterface - interfaces: - enum.HumanoidMarkingModifierKey.Key: # sure, this can go here too - type: HumanoidMarkingModifierBoundUserInterface diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml index 57da7446902..23ee84bd3c7 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml @@ -45,7 +45,7 @@ - id: SpaceCash1000 - id: WeaponDisabler - id: ClothingEyesGlassesCommand - - id: HeadSkeleton # A skull to accompany your skeleton crew + - id: OrganSkeletonPersonHead # A skull to accompany your skeleton crew conditions: - !type:PlayerCountCondition max: 15 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 3248ea05355..66d3549b440 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -489,7 +489,7 @@ - type: entity name: mothroach - parent: MobCockroach + parent: [ BaseMobMothroach, MobCockroach ] id: MobMothroach description: This is the adorable by-product of multiple attempts at genetically mixing mothpeople with cockroaches. components: @@ -604,8 +604,6 @@ - type: NpcFactionMember factions: - Mouse - - type: Body - prototype: Mothroach - type: TypingIndicator proto: moth - type: Destructible @@ -870,7 +868,7 @@ - type: entity name: cow - parent: SimpleMobBase + parent: [ SimpleMobBase, BaseMobRuminant ] id: MobCow description: Moo. components: @@ -943,8 +941,6 @@ - type: NpcFactionMember factions: - Passive - - type: Body - prototype: AnimalRuminant - type: HTN rootTask: task: RuminantCompound @@ -955,7 +951,7 @@ - type: entity name: crab - parent: SimpleMobBase + parent: [ SimpleMobBase, BaseMobHemocyanin ] id: MobCrab description: A folk legend goes around that his claw snaps spacemen out of existence over distasteful remarks. Be polite and tolerant for your own safety. components: @@ -1020,12 +1016,10 @@ - type: HTN rootTask: task: RuminantCompound - - type: Body - prototype: AnimalHemocyanin - type: entity name: goat - parent: SimpleMobBase + parent: [ SimpleMobBase, BaseMobRuminant ] id: MobGoat description: Her spine consists of long sharp segments, no wonder she is so grumpy. components: @@ -1117,8 +1111,6 @@ - type: NpcFactionMember factions: - Passive - - type: Body - prototype: AnimalRuminant - type: NPCRetaliation attackMemoryLength: 5 - type: FactionException @@ -1356,7 +1348,7 @@ - type: entity name: genetic ancestor id: MobBaseAncestor - parent: [SimpleMobBase, StripableInventoryBase] + parent: [BaseMobAnimal, SimpleMobBase, StripableInventoryBase] description: The genetic bipedal ancestor of... Uh... Something. Yeah, there's definitely something on the station that descended from whatever this is. abstract: true components: @@ -1405,6 +1397,10 @@ state: "creampie_human" visible: false - type: Hands + activeHandId: Hand + hands: + Hand: + location: Left - type: ComplexInteraction - type: GenericVisualizer visuals: @@ -1412,9 +1408,6 @@ clownedon: True: {visible: true} False: {visible: false} - - type: Body - prototype: Primate - requiredLegs: 1 # TODO: More than 1 leg - type: CreamPied - type: FireVisuals sprite: Mobs/Effects/onfire.rsi @@ -1733,12 +1726,12 @@ - type: entity name: mouse - parent: SimpleMobBase + parent: + - SimpleMobBase + - BaseMobAnimal id: MobMouse description: Squeak! components: - - type: Body - prototype: Mouse - type: GhostRole makeSentient: true allowSpeech: true @@ -2512,7 +2505,7 @@ # Code unique spider prototypes or combine them all into one spider and get a # random sprite state when you spawn it. - type: entity - parent: [ SimpleMobBase, MobCombat ] + parent: [ SimpleMobBase, BaseMobHemocyanin, MobCombat ] id: MobSpiderBase abstract: true components: @@ -2533,8 +2526,6 @@ - id: FoodMeatSpider amount: 2 - type: CombatMode - - type: Body - prototype: AnimalHemocyanin - type: MobThresholds thresholds: 0: Alive @@ -3672,7 +3663,7 @@ - type: entity name: diona nymph - parent: [SimpleMobBase, StripableInventoryBase] + parent: [BaseMobAnimal, SimpleMobBase, StripableInventoryBase] id: MobDionaNymph description: It's like a cat, only.... branch-ier. components: @@ -3901,14 +3892,18 @@ sprite: Mobs/Pets/displacements.rsi state: corgi_head_displacement - type: Hands # HANDS! + activeHandId: Right + hands: + Right: + location: Right + Left: + location: Left - type: Puller - type: Cuffable # bad dog! - type: BlockWriting # dogs can't write, paws unwieldy; mouth-writing is a myth - type: Stripping - type: ComplexInteraction # Implement custom borgi body type - - type: Body - prototype: SmartCorgi - type: RotationVisuals defaultRotation: 90 horizontalRotation: 180 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml b/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml index ddb7b5f68c2..921f88de368 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/argocyte.yml @@ -1,6 +1,6 @@ - type: entity save: false - parent: [ BaseSimpleMob, MobCombat ] + parent: [ BaseSimpleMob, BaseMobAnimal, MobCombat ] id: BaseMobArgocyte suffix: AI description: A dangerous alien found on the wrong side of planets, known for their propensity for munching on ruins. @@ -38,8 +38,6 @@ damage: types: Slash: 5 - - type: Body - prototype: Animal - type: Flammable fireSpread: true canResistFire: true diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml b/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml index f0a48a65772..894c317d7fd 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml @@ -5,6 +5,7 @@ - MobDamageable - MobAtmosExposed - MobCombat + - BaseMobAnimal abstract: true components: - type: Reactive @@ -12,8 +13,6 @@ Flammable: [Touch] Extinguish: [Touch] Acidic: [Touch, Ingestion] - - type: Body - prototype: Animal - type: Climbing - type: NameIdentifier group: GenericNumber diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml index 1eb22649e7d..a0a6d978fa9 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/carp.yml @@ -206,7 +206,7 @@ - type: entity name: sharkminnow - parent: BaseMobCarp + parent: [ BaseMobBloodsucker, BaseMobCarp ] id: MobShark description: A dangerous shark from the blackness of endless space, who loves to drink blood. components: @@ -243,9 +243,6 @@ Dead: Base: dead BaseUnshaded: dead_mouth - - type: Body - prototype: Bloodsucker - requiredLegs: 1 - type: Butcherable spawned: - id: FoodMeatFish diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/dummy_npcs.yml b/Resources/Prototypes/Entities/Mobs/NPCs/dummy_npcs.yml deleted file mode 100644 index 245d4227fdc..00000000000 --- a/Resources/Prototypes/Entities/Mobs/NPCs/dummy_npcs.yml +++ /dev/null @@ -1,10 +0,0 @@ -- type: entity - save: false - name: pathfinding dummy - parent: BaseMobHuman - id: MobHumanPathDummy - description: A miserable pile of secrets. - suffix: AI - components: - - type: InputMover - - type: MobMover \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/hellspawn.yml b/Resources/Prototypes/Entities/Mobs/NPCs/hellspawn.yml index bcf10eb8f61..2cdbad7924e 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/hellspawn.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/hellspawn.yml @@ -4,6 +4,7 @@ - BaseSimpleMob - MobCombat - MobBloodstream + - BaseMobAnimal id: MobHellspawn description: An unstoppable force of carnage. components: @@ -27,8 +28,6 @@ - type: NpcFactionMember factions: - SimpleHostile - - type: Body - prototype: Animal - type: Damageable damageContainer: BiologicalMetaphysical damageModifierSet: HellSpawn diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/human.yml b/Resources/Prototypes/Entities/Mobs/NPCs/human.yml index ec2ed5070d3..dbd092579fe 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/human.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/human.yml @@ -1,6 +1,6 @@ - type: entity name: civilian - parent: BaseMobHuman + parent: MobHuman id: MobCivilian description: A miserable pile of secrets. components: @@ -14,7 +14,7 @@ - type: entity name: salvager - parent: BaseMobHuman + parent: MobHuman id: MobSalvager components: - type: NpcFactionMember @@ -31,7 +31,7 @@ - type: entity name: spirate - parent: BaseMobHuman + parent: MobHuman id: MobSpirate description: Yarr! components: @@ -49,7 +49,7 @@ - type: entity name: syndicate footsoldier - parent: BaseMobHuman + parent: MobHuman id: MobSyndicateFootsoldier components: - type: NpcFactionMember @@ -70,7 +70,7 @@ id: MobSyndicateFootsoldierPilot - type: entity - parent: BaseMobHuman + parent: MobHuman suffix: Dead save: false # mobs are currently not saveable. id: SalvageHumanCorpse diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml index 3e0edee084b..111500eca55 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/regalrat.yml @@ -1,7 +1,7 @@ - type: entity name: rat king id: MobRatKing - parent: [ SimpleMobBase, MobCombat ] + parent: [ BaseMobRat, SimpleMobBase, MobCombat ] description: He's da rat. He make da roolz. components: - type: CombatMode @@ -59,9 +59,6 @@ types: Slash: 12 Piercing: 8 - - type: Body - prototype: Rat - requiredLegs: 0 # TODO: Make more than 1 leg, set to 0 to avoid sprint speed being reset by the body system - type: Hunger # probably should be prototyped thresholds: Overfed: 200 @@ -168,7 +165,7 @@ - type: entity name: rat servant id: MobRatServant - parent: [ SimpleMobBase, MobCombat ] + parent: [ BaseMobRat, SimpleMobBase, MobCombat ] description: He's da mini rat. He don't make da roolz. categories: [ HideSpawnMenu ] #Must be configured to a King or the AI breaks. components: @@ -251,9 +248,6 @@ types: Slash: 5 Piercing: 3 - - type: Body - prototype: Rat - requiredLegs: 0 # TODO: Make more than 1 leg, set to 0 to avoid sprint speed being reset by the body system - type: Hunger # probably should be prototyped thresholds: Overfed: 200 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml index 7c9f3ca95c5..7c1ad84ca29 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml @@ -105,8 +105,6 @@ - SiliconEmotes - Bot - Unimplantable - - type: Body - prototype: Bot - type: Speech speechVerb: Robotic speechSounds: Pai #couldn't decide if this should be borg or pai sounds so I flipped a coin. @@ -488,8 +486,6 @@ - type: Hands # This probably REALLY needs hand whitelisting, but we NEED hands for hugs, so... - type: ComplexInteraction # Hugging is a complex interaction, apparently. - type: HugBot - - type: Body - prototype: HugBot - type: HTN rootTask: task: HugBotCompound diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml b/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml index 906675045b0..597674af59e 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml @@ -41,6 +41,7 @@ - MobCombat - MobBloodstream - MobFlammable + - BaseMobAnimal id: SimpleSpaceMobBase # Mob without barotrauma, freezing and asphyxiation (for space carps!?) suffix: AI components: @@ -53,8 +54,6 @@ - type: MeleeWeapon angle: 0 animation: WeaponArcBite - - type: Body - prototype: Animal - type: Climbing - type: NameIdentifier group: GenericNumber diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml b/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml index 80269feef37..8d8b4f763e7 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/slimes.yml @@ -1,7 +1,7 @@ - type: entity name: basic slime id: BaseMobAdultSlimes - parent: [ SimpleMobBase, MobCombat ] + parent: [ BaseMobSlimes, SimpleMobBase, MobCombat ] abstract: true description: It looks so much like jelly. I wonder what it tastes like? components: @@ -89,9 +89,6 @@ type: Local messages: [ "slime-hurt-by-water-popup" ] probability: 0.25 - - type: Body - prototype: Slimes - requiredLegs: 1 - type: MeleeWeapon altDisarm: false soundHit: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/space.yml b/Resources/Prototypes/Entities/Mobs/NPCs/space.yml index e57e0d3d97a..1cffe9cb710 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/space.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/space.yml @@ -383,13 +383,13 @@ - type: SalvageMobRestrictions - type: entity - parent: SimpleSpaceMobBase + parent: + - SimpleSpaceMobBase + - BaseMobAnimal id: MobSnail name: snail description: Revolting unless you're french. components: - - type: Body - prototype: Mouse - type: GhostRole makeSentient: true allowSpeech: false @@ -578,12 +578,10 @@ - type: MovementAlwaysTouching - type: entity - parent: MobSnail + parent: [ BaseMobMothroach, MobSnail ] id: MobSnailMoth name: Snoth components: - - type: Body - prototype: Mothroach - type: GhostRole name: ghost-role-information-snoth-name description: ghost-role-information-snoth-description diff --git a/Resources/Prototypes/Entities/Mobs/Player/arachnid.yml b/Resources/Prototypes/Entities/Mobs/Player/arachnid.yml deleted file mode 100644 index d9dea3c18d9..00000000000 --- a/Resources/Prototypes/Entities/Mobs/Player/arachnid.yml +++ /dev/null @@ -1,13 +0,0 @@ -- type: entity - save: false - name: Urist McWeb - parent: BaseMobArachnid - id: MobArachnid - components: - - type: Respirator - damage: - types: - Asphyxiation: 1.5 # This makes space and crit more lethal to arachnids. - damageRecovery: - types: - Asphyxiation: -0.5 diff --git a/Resources/Prototypes/Entities/Mobs/Player/diona.yml b/Resources/Prototypes/Entities/Mobs/Player/diona.yml deleted file mode 100644 index bcb602bbd6f..00000000000 --- a/Resources/Prototypes/Entities/Mobs/Player/diona.yml +++ /dev/null @@ -1,23 +0,0 @@ -- type: entity - save: false - name: Urist McPlants - parent: BaseMobDiona - id: MobDiona - components: - - type: Respirator - damage: - types: - Asphyxiation: 0.5 - damageRecovery: - types: - Asphyxiation: -1.0 - -# Reformed Diona -- type: entity - parent: MobDiona - categories: [ HideSpawnMenu ] - id: MobDionaReformed - name: Reformed Diona - components: - - type: IsDeadIC - - type: RandomHumanoidAppearance \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Player/dwarf.yml b/Resources/Prototypes/Entities/Mobs/Player/dwarf.yml deleted file mode 100644 index d1de65df012..00000000000 --- a/Resources/Prototypes/Entities/Mobs/Player/dwarf.yml +++ /dev/null @@ -1,5 +0,0 @@ -- type: entity - save: false - name: Urist McHands The Dwarf - parent: BaseMobDwarf - id: MobDwarf diff --git a/Resources/Prototypes/Entities/Mobs/Player/gingerbread.yml b/Resources/Prototypes/Entities/Mobs/Player/gingerbread.yml deleted file mode 100644 index e7cbd37ef6e..00000000000 --- a/Resources/Prototypes/Entities/Mobs/Player/gingerbread.yml +++ /dev/null @@ -1,33 +0,0 @@ -- type: entity - save: false - name: Urist McCookie - parent: BaseMobGingerbread - id: MobGingerbread - components: - - type: Respirator - damage: - types: - Asphyxiation: 0.5 - damageRecovery: - types: - Asphyxiation: -1.0 - -- type: entity - name: gingerbread man - id: MobGingerbreadAI - parent: [ MobGingerbread, MobCombat] - components: - - type: GhostRole - name: ghost-role-information-gingerbread-name - description: ghost-role-information-gingerbread-description - rules: ghost-role-information-nonantagonist-rules - - type: GhostTakeoverAvailable - - type: NPCRetaliation - - type: FactionException - - type: NpcFactionMember - factions: - - Passive - - type: HTN - rootTask: - task: SimpleHostileCompound - \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml index 10ef8311ea1..558fe846078 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/guardian.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/guardian.yml @@ -222,8 +222,6 @@ map: [ "enum.DamageStateVisualLayers.BaseUnshaded" ] color: "#8adaff" shader: unshaded - - type: Body - prototype: Primate - type: Tag tags: - CannotSuicide @@ -231,6 +229,10 @@ - type: Inventory templateId: holoclown - type: Hands + activeHandId: Hand + hands: + Hand: + location: Left - type: ComplexInteraction - type: Clumsy gunShootFailDamage: diff --git a/Resources/Prototypes/Entities/Mobs/Player/human.yml b/Resources/Prototypes/Entities/Mobs/Player/human.yml index 8b677c49f70..e99d7b75247 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/human.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/human.yml @@ -1,9 +1,3 @@ -- type: entity - save: false - name: Urist McHands - parent: BaseMobHuman - id: MobHuman - #Syndie - type: entity parent: MobHuman diff --git a/Resources/Prototypes/Entities/Mobs/Player/moth.yml b/Resources/Prototypes/Entities/Mobs/Player/moth.yml deleted file mode 100644 index ea01677626d..00000000000 --- a/Resources/Prototypes/Entities/Mobs/Player/moth.yml +++ /dev/null @@ -1,5 +0,0 @@ -- type: entity - save: false - name: Urist McFluff - parent: BaseMobMoth - id: MobMoth diff --git a/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml b/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml deleted file mode 100644 index b332f573fb5..00000000000 --- a/Resources/Prototypes/Entities/Mobs/Player/reptilian.yml +++ /dev/null @@ -1,8 +0,0 @@ -- type: entity - save: false - name: Urist McScales - suffix: Urisst' Mzhand - parent: BaseMobReptilian - id: MobReptilian - -#Weh diff --git a/Resources/Prototypes/Entities/Mobs/Player/skeleton.yml b/Resources/Prototypes/Entities/Mobs/Player/skeleton.yml index f5b5f6ac197..eac588c26c8 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/skeleton.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/skeleton.yml @@ -1,14 +1,3 @@ -- type: entity - save: false - parent: BaseMobSkeletonPerson - id: MobSkeletonPerson - components: - - type: InteractionPopup - successChance: 1 - interactSuccessString: hugging-success-generic - interactSuccessSound: /Audio/Effects/thudswoosh.ogg - messagePerceivedByOthers: hugging-success-generic-others - - type: entity name: skeleton pirate parent: MobSkeletonPerson diff --git a/Resources/Prototypes/Entities/Mobs/Player/slime.yml b/Resources/Prototypes/Entities/Mobs/Player/slime.yml deleted file mode 100644 index 4e5974b3084..00000000000 --- a/Resources/Prototypes/Entities/Mobs/Player/slime.yml +++ /dev/null @@ -1,4 +0,0 @@ -- type: entity - save: false - parent: BaseMobSlimePerson - id: MobSlimePerson diff --git a/Resources/Prototypes/Entities/Mobs/Player/vox.yml b/Resources/Prototypes/Entities/Mobs/Player/vox.yml deleted file mode 100644 index 28906584cb9..00000000000 --- a/Resources/Prototypes/Entities/Mobs/Player/vox.yml +++ /dev/null @@ -1,5 +0,0 @@ -- type: entity - save: false - name: Uristititi McVox - parent: BaseMobVox - id: MobVox diff --git a/Resources/Prototypes/Entities/Mobs/Player/vulpkanin.yml b/Resources/Prototypes/Entities/Mobs/Player/vulpkanin.yml deleted file mode 100644 index 52a839dd4aa..00000000000 --- a/Resources/Prototypes/Entities/Mobs/Player/vulpkanin.yml +++ /dev/null @@ -1,5 +0,0 @@ -- type: entity - save: false - name: Urist McBark - parent: BaseMobVulpkanin - id: MobVulpkanin diff --git a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml b/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml deleted file mode 100644 index 43c87f89948..00000000000 --- a/Resources/Prototypes/Entities/Mobs/Species/arachnid.yml +++ /dev/null @@ -1,137 +0,0 @@ -- type: entity - save: false - name: Urist McWebs - parent: BaseMobSpeciesOrganic - id: BaseMobArachnid - abstract: true - components: - - type: Body - prototype: Arachnid - requiredLegs: 2 # It would be funny if arachnids could use their little back limbs to move around once they lose their legs, but just something to consider post-woundmed - - type: HumanoidAppearance - species: Arachnid - - type: Hunger - - type: Thirst - - type: Sericulture - productionLength: 2 - entityProduced: MaterialWebSilk1 - hungerCost: 4 # Should total to 25 total silk on full hunger - - type: Tag - tags: - - CanPilot - - FootstepSound - - DoorBumpOpener - - SpiderCraft - - AnomalyHost - - type: Butcherable - butcheringType: Spike - spawned: - - id: FoodMeatSpider - amount: 5 - - type: Reactive - reactions: - - reagents: [Water] - methods: [Touch] - effects: - - !type:SpawnEntityInInventory - slot: head - entity: WaterDropletHat - - reagents: [Water, SpaceCleaner] - methods: [Touch] - effects: - - !type:WashCreamPie - # Damage (Self) - - type: Bloodstream - bloodReferenceSolution: - reagents: - - ReagentId: CopperBlood - Quantity: 300 - # Damage (Others) - - type: MeleeWeapon - animation: WeaponArcBite - soundHit: - path: /Audio/Effects/bite.ogg - damage: - types: - Piercing: 5 - # Visual & Audio - - type: DamageVisuals - damageOverlayGroups: - Brute: - sprite: Mobs/Effects/brute_damage.rsi - color: "#162581" - Burn: - sprite: Mobs/Effects/burn_damage.rsi - - type: Speech - speechVerb: Arachnid - speechSounds: Arachnid - allowedEmotes: ['Click', 'Chitter'] - - type: Vocal - sounds: - Male: UnisexArachnid - Female: UnisexArachnid - Unsexed: UnisexArachnid - - type: TypingIndicator - proto: spider - - type: Sprite # I'd prefer if these maps were better. Insert map pun here. - layers: - - map: [ "enum.HumanoidVisualLayers.Chest" ] - - map: [ "enum.HumanoidVisualLayers.Head" ] - - map: [ "enum.HumanoidVisualLayers.Snout" ] - - map: [ "enum.HumanoidVisualLayers.Eyes" ] - - map: [ "enum.HumanoidVisualLayers.RArm" ] - - map: [ "enum.HumanoidVisualLayers.LArm" ] - - map: [ "enum.HumanoidVisualLayers.RLeg" ] - - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ] - - map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ] - - map: ["jumpsuit"] - - map: ["enum.HumanoidVisualLayers.LFoot"] - - map: ["enum.HumanoidVisualLayers.RFoot"] - - map: ["enum.HumanoidVisualLayers.LHand"] - - map: ["enum.HumanoidVisualLayers.RHand"] - - map: [ "gloves" ] - - map: [ "shoes" ] - - map: [ "belt" ] - - map: [ "id" ] - - map: [ "outerClothing" ] - - map: [ "enum.HumanoidVisualLayers.Tail" ] # Mentioned in moth code: This needs renaming lol. - - map: [ "back" ] - - map: [ "neck" ] - - map: [ "enum.HumanoidVisualLayers.SnoutCover" ] - - map: [ "enum.HumanoidVisualLayers.FacialHair" ] - - map: [ "enum.HumanoidVisualLayers.Hair" ] # Do these need to be here? (arachnid hair arachnid hair) - - map: [ "enum.HumanoidVisualLayers.HeadSide" ] - - map: [ "ears" ] - - map: [ "eyes" ] - - map: [ "enum.HumanoidVisualLayers.HeadTop" ] - - map: [ "mask" ] - - map: [ "head" ] - - map: [ "pocket1" ] - - map: [ "pocket2" ] - - map: ["enum.HumanoidVisualLayers.Handcuffs"] - color: "#ffffff" - sprite: Objects/Misc/handcuffs.rsi - state: body-overlay-2 - visible: false - - map: [ "clownedon" ] # Dynamically generated - sprite: "Effects/creampie.rsi" - state: "creampie_arachnid" - visible: false - - type: Inventory - templateId: arachnid - speciesId: arachnid - - -- type: entity - parent: BaseSpeciesDummy - id: MobArachnidDummy - categories: [ HideSpawnMenu ] - components: - - type: HumanoidAppearance - species: Arachnid - - type: Inventory - speciesId: arachnid - - -#>88w88< diff --git a/Resources/Prototypes/Entities/Mobs/Species/diona.yml b/Resources/Prototypes/Entities/Mobs/Species/diona.yml deleted file mode 100644 index 1e9d7ea6968..00000000000 --- a/Resources/Prototypes/Entities/Mobs/Species/diona.yml +++ /dev/null @@ -1,132 +0,0 @@ -- type: entity - save: false - name: Urist McPlants - parent: BaseMobSpeciesOrganic - id: BaseMobDiona - abstract: true - components: - - type: HumanoidAppearance - species: Diona - - type: Hunger - baseDecayRate: 0.0083 - - type: Thirst - baseDecayRate: 0.0083 - - type: Icon - sprite: Mobs/Species/Diona/parts.rsi - state: full - - type: Body - prototype: Diona - requiredLegs: 2 - - type: Damageable - damageContainer: Biological - damageModifierSet: Diona - - type: DamageVisuals - damageOverlayGroups: - Brute: - sprite: Mobs/Effects/brute_damage.rsi - color: "#cd7314" - Burn: - sprite: Mobs/Effects/burn_damage.rsi - - type: Butcherable - butcheringType: Spike - spawned: - - id: FoodMeatPlant - amount: 5 - - type: Bloodstream - bloodReferenceSolution: - reagents: - - ReagentId: Sap - Quantity: 300 - - type: Reactive - groups: - Flammable: [ Touch ] - Extinguish: [ Touch ] - Acidic: [Touch, Ingestion] - reactions: - - reagents: [Water, SpaceCleaner] - methods: [Touch] - effects: - - !type:WashCreamPie - - reagents: [ PlantBGone ] - methods: [ Touch ] - effects: - - !type:HealthChange - damage: - types: - Blunt: 0.05 - Slash: 0.05 - Piercing: 0.075 - - !type:PopupMessage - type: Local - visualType: Large - messages: [ "diona-hurt-by-herbicide-popup" ] - probability: 0.66 - - reagents: [ WeedKiller ] - methods: [ Touch ] - effects: - - !type:HealthChange - damage: - types: - Poison: 0.125 - - !type:PopupMessage - type: Local - visualType: Large - messages: [ "diona-hurt-by-herbicide-popup" ] - probability: 0.66 - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeCircle - radius: 0.35 - density: 300 #weighs more than humans because wood - restitution: 0.0 - mask: - - MobMask - layer: - - MobLayer - - type: Speech - speechVerb: Plant - allowedEmotes: ['Chirp'] - - type: Vocal - sounds: - Male: UnisexDiona - Female: UnisexDiona - Unsexed: UnisexDiona - - type: TypingIndicator - proto: diona - - type: BodyEmotes - soundsId: DionaBodyEmotes - - type: IgnoreKudzu - - type: IgniteOnHeatDamage - fireStacks: 1 - threshold: 12 - - type: GibAction - actionPrototype: DionaGibAction - allowedStates: - - Dead - - type: Inventory - templateId: diona - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Human/displacement.rsi - state: jumpsuit-female - - type: Rootable - -- type: entity - parent: BaseSpeciesDummy - id: MobDionaDummy - categories: [ HideSpawnMenu ] - components: - - type: HumanoidAppearance - species: Diona - - type: Inventory - templateId: diona - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Human/displacement.rsi - state: jumpsuit-female diff --git a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml b/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml deleted file mode 100644 index 14a43ced63a..00000000000 --- a/Resources/Prototypes/Entities/Mobs/Species/dwarf.yml +++ /dev/null @@ -1,78 +0,0 @@ -- type: entity - save: false - name: Urist McHands The Dwarf - parent: BaseMobSpeciesOrganic - id: BaseMobDwarf - abstract: true - components: - - type: Hunger - - type: Thirst - - type: Icon - sprite: Mobs/Species/Human/parts.rsi - state: full - - type: Respirator - damage: - types: - Asphyxiation: 2 - damageRecovery: - types: - Asphyxiation: -1.0 - - type: ScaleVisuals - scale: 1, 0.8 - - type: Body - prototype: Dwarf - requiredLegs: 2 - - type: Butcherable - butcheringType: Spike - spawned: - - id: FoodMeatHuman - amount: 5 - - type: Fixtures - fixtures: # TODO: This needs a second fixture just for mob collisions. - fix1: - shape: - !type:PhysShapeCircle - radius: 0.35 - # they r smaller - density: 120 - restitution: 0.0 - mask: - - MobMask - layer: - - MobLayer - - type: Vocal - sounds: - Male: UnisexDwarf - Female: FemaleDwarf - Unsexed: UnisexDwarf - - type: ReplacementAccent - accent: dwarf - - type: Speech - speechSounds: Bass - - type: HumanoidAppearance - species: Dwarf - hideLayersOnEquip: - - Hair - - Snout - - type: Inventory - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Human/displacement.rsi - state: jumpsuit-female - -- type: entity - parent: BaseSpeciesDummy - id: MobDwarfDummy - categories: [ HideSpawnMenu ] - components: - - type: ScaleVisuals - scale: 1, 0.8 - - type: Inventory - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Human/displacement.rsi - state: jumpsuit-female diff --git a/Resources/Prototypes/Entities/Mobs/Species/gingerbread.yml b/Resources/Prototypes/Entities/Mobs/Species/gingerbread.yml deleted file mode 100644 index 794317464d3..00000000000 --- a/Resources/Prototypes/Entities/Mobs/Species/gingerbread.yml +++ /dev/null @@ -1,74 +0,0 @@ -- type: entity - save: false - name: Urist McCookie - parent: BaseMobSpeciesOrganic - id: BaseMobGingerbread - abstract: true - components: - - type: HumanoidAppearance - species: Gingerbread - - type: Icon - sprite: Mobs/Species/Gingerbread/parts.rsi - state: full - - type: Body - prototype: Gingerbread - requiredLegs: 2 - - type: Damageable - damageContainer: Biological - damageModifierSet: Gingerbread - - type: DamageVisuals - damageOverlayGroups: - Brute: - sprite: Mobs/Effects/brute_damage.rsi - color: "#896e55" - Burn: - sprite: Mobs/Effects/burn_damage.rsi - - type: Butcherable - butcheringType: Spike - spawned: - - id: FoodBakedCookie #should be replaced with gingerbread sheets or something... provided you're willing to make a full spriteset of those. - amount: 5 - - type: Bloodstream - bloodReferenceSolution: - reagents: - - ReagentId: Sugar - Quantity: 100 - - ReagentId: Butter - Quantity: 200 - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeCircle - radius: 0.35 - density: 100 #fairly light - restitution: 0.0 - mask: - - MobMask - layer: - - MobLayer - - type: TypingIndicator - proto: gingerbread - - type: Inventory - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Human/displacement.rsi - state: jumpsuit-female - - -- type: entity - parent: BaseSpeciesDummy - id: MobGingerbreadDummy - categories: [ HideSpawnMenu ] - components: - - type: HumanoidAppearance - species: Gingerbread - - type: Inventory - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Human/displacement.rsi - state: jumpsuit-female diff --git a/Resources/Prototypes/Entities/Mobs/Species/human.yml b/Resources/Prototypes/Entities/Mobs/Species/human.yml deleted file mode 100644 index bf357e1f102..00000000000 --- a/Resources/Prototypes/Entities/Mobs/Species/human.yml +++ /dev/null @@ -1,43 +0,0 @@ -# Anything human specific (e.g. UI, input) goes under MobHuman -- type: entity - parent: BaseMobSpeciesOrganic - id: BaseMobHuman - name: Urist McHands - abstract: true - components: - - type: Hunger - - type: Icon # It will not have an icon in the adminspawn menu without this. Body parts seem fine for whatever reason. - sprite: Mobs/Species/Human/parts.rsi - state: full - - type: Thirst - - type: Butcherable - butcheringType: Spike - spawned: - - id: FoodMeatHuman - amount: 5 - - type: HumanoidAppearance - species: Human - hideLayersOnEquip: - - Hair - - Snout - - type: Inventory - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Human/displacement.rsi - state: jumpsuit-female - - -- type: entity - parent: BaseSpeciesDummy - id: MobHumanDummy - categories: [ HideSpawnMenu ] - components: - - type: Inventory - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Human/displacement.rsi - state: jumpsuit-female \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Mobs/Species/moth.yml b/Resources/Prototypes/Entities/Mobs/Species/moth.yml deleted file mode 100644 index 6d7ba02f5f0..00000000000 --- a/Resources/Prototypes/Entities/Mobs/Species/moth.yml +++ /dev/null @@ -1,240 +0,0 @@ -- type: entity - save: false - name: Urist McFluff - parent: BaseMobSpeciesOrganic - id: BaseMobMoth - abstract: true - components: - - type: HumanoidAppearance - species: Moth - hideLayersOnEquip: - - HeadTop - - type: Hunger - - type: Thirst - - type: Icon - sprite: Mobs/Species/Moth/parts.rsi - state: full - - type: Body - prototype: Moth - requiredLegs: 2 - - type: Damageable - damageContainer: Biological - damageModifierSet: Moth - - type: ZombieAccentOverride - accent: zombieMoth - - type: Speech - speechVerb: Moth - allowedEmotes: ['Chitter', 'Squeak'] - - type: TypingIndicator - proto: moth - - type: Butcherable - butcheringType: Spike - spawned: - - id: FoodMeat - amount: 5 - - type: Bloodstream - bloodReferenceSolution: - reagents: - - ReagentId: InsectBlood - Quantity: 300 - - type: DamageVisuals - damageOverlayGroups: - Brute: - sprite: Mobs/Effects/brute_damage.rsi - color: "#808A51" - Burn: - sprite: Mobs/Effects/burn_damage.rsi - - type: MothAccent - - type: Vocal - sounds: - Male: UnisexMoth - Female: UnisexMoth - Unsexed: UnisexMoth - - type: MovementSpeedModifier - baseWeightlessAcceleration: 1.5 # Move around more easily in space. - baseWeightlessFriction: 1 - baseWeightlessModifier: 1 - - type: Flammable - damage: - types: - Heat: 2.5 # moths burn more easily - - type: Temperature - currentTemperature: 310.15 - specificHeat: 46 - - type: TemperatureDamage # Moths hate the heat and thrive in the cold. - heatDamageThreshold: 320 - coldDamageThreshold: 230 - coldDamage: - types: - Cold : 0.05 #per second, scales with temperature & other constants - heatDamage: - types: - Heat : 3 #per second, scales with temperature & other constants - - type: TemperatureSpeed - thresholds: - 289: 0.9 - 275: 0.8 - 250: 0.7 - - type: Sprite # sprite again because we want different layer ordering - noRot: true - drawdepth: Mobs - layers: - - map: [ "enum.HumanoidVisualLayers.Chest" ] - - map: [ "enum.HumanoidVisualLayers.Head" ] - - map: [ "enum.HumanoidVisualLayers.Snout" ] - - map: [ "enum.HumanoidVisualLayers.Eyes" ] - - map: [ "enum.HumanoidVisualLayers.RArm" ] - - map: [ "enum.HumanoidVisualLayers.LArm" ] - - map: [ "enum.HumanoidVisualLayers.RLeg" ] - - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ] - - map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ] - - map: [ "jumpsuit" ] - - map: [ "enum.HumanoidVisualLayers.LHand" ] - - map: [ "enum.HumanoidVisualLayers.RHand" ] - - map: [ "enum.HumanoidVisualLayers.LFoot" ] - - map: [ "enum.HumanoidVisualLayers.RFoot" ] - - map: [ "enum.HumanoidVisualLayers.Handcuffs" ] - color: "#ffffff" - sprite: Objects/Misc/handcuffs.rsi - state: body-overlay-2 - visible: false - - map: [ "gloves" ] - - map: [ "shoes" ] - - map: [ "ears" ] - - map: [ "eyes" ] - - map: [ "belt" ] - - map: [ "id" ] - - map: [ "outerClothing" ] - - map: [ "enum.HumanoidVisualLayers.Tail" ] #in the utopian future we should probably have a wings enum inserted here so everyhting doesn't break - - map: [ "back" ] - - map: [ "neck" ] - - map: [ "enum.HumanoidVisualLayers.SnoutCover" ] - - map: [ "enum.HumanoidVisualLayers.FacialHair" ] - - map: [ "enum.HumanoidVisualLayers.Hair" ] - - map: [ "enum.HumanoidVisualLayers.HeadSide" ] - - map: [ "enum.HumanoidVisualLayers.HeadTop" ] - - map: [ "mask" ] - - map: [ "head" ] - - map: [ "pocket1" ] - - map: [ "pocket2" ] - - map: [ "clownedon" ] # Dynamically generated - sprite: "Effects/creampie.rsi" - state: "creampie_moth" - visible: false - - type: Inventory - speciesId: moth - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Moth/displacement.rsi - state: jumpsuit-female - back: - sizeMaps: - 32: - sprite: Mobs/Species/Moth/displacement.rsi - state: back - outerClothing: - sizeMaps: - 32: - sprite: Mobs/Species/Moth/displacement.rsi - state: outerclothing - gloves: - sizeMaps: - 32: - sprite: Mobs/Species/Moth/displacement.rsi - state: hand - shoes: - sizeMaps: - 32: - sprite: Mobs/Species/Moth/displacement.rsi - state: shoes - displacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Moth/displacement.rsi - state: jumpsuit-male - back: - sizeMaps: - 32: - sprite: Mobs/Species/Moth/displacement.rsi - state: back - outerClothing: - sizeMaps: - 32: - sprite: Mobs/Species/Moth/displacement.rsi - state: outerclothing - gloves: - sizeMaps: - 32: - sprite: Mobs/Species/Moth/displacement.rsi - state: hand - shoes: - sizeMaps: - 32: - sprite: Mobs/Species/Moth/displacement.rsi - state: shoes - -- type: entity - parent: BaseSpeciesDummy - id: MobMothDummy - categories: [ HideSpawnMenu ] - components: - - type: HumanoidAppearance - species: Moth - - type: Inventory - speciesId: moth - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Moth/displacement.rsi - state: jumpsuit-female - back: - sizeMaps: - 32: - sprite: Mobs/Species/Moth/displacement.rsi - state: back - outerClothing: - sizeMaps: - 32: - sprite: Mobs/Species/Moth/displacement.rsi - state: outerclothing - gloves: - sizeMaps: - 32: - sprite: Mobs/Species/Moth/displacement.rsi - state: hand - shoes: - sizeMaps: - 32: - sprite: Mobs/Species/Moth/displacement.rsi - state: shoes - displacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Moth/displacement.rsi - state: jumpsuit-male - back: - sizeMaps: - 32: - sprite: Mobs/Species/Moth/displacement.rsi - state: back - outerClothing: - sizeMaps: - 32: - sprite: Mobs/Species/Moth/displacement.rsi - state: outerclothing - gloves: - sizeMaps: - 32: - sprite: Mobs/Species/Moth/displacement.rsi - state: hand - shoes: - sizeMaps: - 32: - sprite: Mobs/Species/Moth/displacement.rsi - state: shoes diff --git a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml b/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml deleted file mode 100644 index 55bb32e3a33..00000000000 --- a/Resources/Prototypes/Entities/Mobs/Species/reptilian.yml +++ /dev/null @@ -1,147 +0,0 @@ -- type: entity - save: false - name: Urisst' Mzhand - parent: BaseMobSpeciesOrganic - id: BaseMobReptilian - abstract: true - components: - - type: HumanoidAppearance - species: Reptilian - hideLayersOnEquip: - - Snout - - HeadTop - - HeadSide - - Tail - undergarmentBottom: UndergarmentBottomBoxersReptilian - - type: Hunger - - type: Puller - needsHands: false - - type: Thirst - - type: Icon - sprite: Mobs/Species/Reptilian/parts.rsi - state: full - - type: Body - prototype: Reptilian - requiredLegs: 2 - - type: Butcherable - butcheringType: Spike - spawned: - - id: FoodMeatLizard - amount: 5 - - type: LizardAccent - - type: Speech - speechSounds: Lizard - speechVerb: Reptilian - allowedEmotes: ['Thump'] - - type: TypingIndicator - proto: lizard - - type: Vocal - sounds: - Male: MaleReptilian - Female: FemaleReptilian - Unsexed: MaleReptilian - - type: BodyEmotes - soundsId: ReptilianBodyEmotes - - type: Damageable - damageContainer: Biological - damageModifierSet: Scale - - type: MeleeWeapon - soundHit: - collection: AlienClaw - angle: 30 - animation: WeaponArcClaw - damage: - types: - Slash: 5 - - type: Temperature - currentTemperature: 310.15 - specificHeat: 42 - - type: TemperatureDamage - heatDamageThreshold: 400 - coldDamageThreshold: 285 - coldDamage: - types: - Cold : 0.1 #per second, scales with temperature & other constants - heatDamage: - types: - Heat : 1.5 #per second, scales with temperature & other constants - - type: TemperatureSpeed - thresholds: - 301: 0.9 - 295: 0.8 - 285: 0.7 - - type: Wagging - - type: Inventory - speciesId: reptilian - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Human/displacement.rsi - state: jumpsuit-female - head: - sizeMaps: - 32: - sprite: Mobs/Species/Reptilian/displacement.rsi - state: head - mask: - sizeMaps: - 32: - sprite: Mobs/Species/Reptilian/displacement.rsi - state: mask - displacements: - head: - sizeMaps: - 32: - sprite: Mobs/Species/Reptilian/displacement.rsi - state: head - mask: - sizeMaps: - 32: - sprite: Mobs/Species/Reptilian/displacement.rsi - state: mask - -- type: entity - parent: BaseSpeciesDummy - id: MobReptilianDummy - categories: [ HideSpawnMenu ] - description: A dummy reptilian meant to be used in character setup. - components: - - type: HumanoidAppearance - species: Reptilian - hideLayersOnEquip: - - Snout - - HeadTop - - HeadSide - undergarmentBottom: UndergarmentBottomBoxersReptilian - - type: Inventory - speciesId: reptilian - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Reptilian/displacement.rsi - state: jumpsuit-female - head: - sizeMaps: - 32: - sprite: Mobs/Species/Reptilian/displacement.rsi - state: head - mask: - sizeMaps: - 32: - sprite: Mobs/Species/Reptilian/displacement.rsi - state: mask - displacements: - head: - sizeMaps: - 32: - sprite: Mobs/Species/Reptilian/displacement.rsi - state: head - mask: - sizeMaps: - 32: - sprite: Mobs/Species/Reptilian/displacement.rsi - state: mask - -#Weh diff --git a/Resources/Prototypes/Entities/Mobs/Species/slime.yml b/Resources/Prototypes/Entities/Mobs/Species/slime.yml deleted file mode 100644 index 6b777f8c3be..00000000000 --- a/Resources/Prototypes/Entities/Mobs/Species/slime.yml +++ /dev/null @@ -1,135 +0,0 @@ -- type: entity - name: Urist McSlime - parent: BaseMobSpeciesOrganic - id: BaseMobSlimePerson - abstract: true - components: - - type: Hunger - - type: Thirst - - type: Icon - sprite: Mobs/Species/Slime/parts.rsi - state: full - - type: Body - prototype: Slime - requiredLegs: 2 - # they like eat it idk lol - - type: Storage - clickInsert: false - grid: - - 0,0,1,2 - maxItemSize: Large - storageInsertSound: - path: /Audio/Voice/Slime/slime_squish.ogg - - type: ContainerContainer - containers: - storagebase: !type:Container - ents: [] - - type: UserInterface - interfaces: - enum.StorageUiKey.Key: - type: StorageBoundUserInterface - enum.HumanoidMarkingModifierKey.Key: - type: HumanoidMarkingModifierBoundUserInterface - enum.StrippingUiKey.Key: - type: StrippableBoundUserInterface - # to prevent bag open/honk spam - - type: UseDelay - delay: 0.5 - - type: HumanoidAppearance - species: SlimePerson - - type: Speech - speechVerb: Slime - speechSounds: Slime - allowedEmotes: ['Squish'] - - type: TypingIndicator - proto: slime - - type: Vocal - sounds: - Male: MaleSlime - Female: FemaleSlime - Unsexed: MaleSlime - - type: Damageable - damageContainer: Biological - damageModifierSet: Slime - - type: PassiveDamage # Around 8 damage a minute healed - allowedStates: - - Alive - damageCap: 65 - damage: - types: - Heat: -0.14 - groups: - Brute: -0.14 - - type: DamageVisuals - damageOverlayGroups: - Brute: - sprite: Mobs/Effects/brute_damage.rsi - color: "#2cf274" - Burn: - sprite: Mobs/Effects/burn_damage.rsi - - type: Bloodstream - bloodReferenceSolution: # TODO Color slime blood based on their slime color or smth - reagents: - - ReagentId: Slime - Quantity: 300 - - type: Barotrauma - damage: - types: - Blunt: 0.50 #per second, scales with pressure and other constants. - Heat: 0.2 # 0.1 more than humans, i feel like low pressure would make slime boil more than blunt stretch them so i decided on this instead. - - type: Reactive - groups: - Flammable: [ Touch ] - Extinguish: [ Touch ] - reactions: - - reagents: [ Water, SpaceCleaner ] - methods: [ Touch ] - effects: - - !type:WashCreamPie - - reagents: [ Water ] - methods: [ Touch ] - effects: - - !type:HealthChange - damage: - types: - Heat: 0.05 - - !type:PopupMessage - type: Local - visualType: Large - messages: [ "slime-hurt-by-water-popup" ] - probability: 0.25 - - type: Butcherable - butcheringType: Spike - spawned: - - id: FoodMeatSlime - amount: 5 - - type: Respirator - damage: - types: - Asphyxiation: 0.2 - damageRecovery: - types: - Asphyxiation: -1.0 - maxSaturation: 15 - - type: Inventory - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Human/displacement.rsi - state: jumpsuit-female - -- type: entity - parent: MobHumanDummy - id: MobSlimePersonDummy - categories: [ HideSpawnMenu ] - components: - - type: HumanoidAppearance - species: SlimePerson - - type: Inventory - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Human/displacement.rsi - state: jumpsuit-female diff --git a/Resources/Prototypes/Entities/Mobs/Species/vulpkanin.yml b/Resources/Prototypes/Entities/Mobs/Species/vulpkanin.yml deleted file mode 100644 index 535d3ba327d..00000000000 --- a/Resources/Prototypes/Entities/Mobs/Species/vulpkanin.yml +++ /dev/null @@ -1,238 +0,0 @@ -- type: entity - abstract: true - save: false - parent: [BaseMobSpeciesOrganic] - id: BaseMobVulpkanin - name: Urist McBark - components: - - type: Hunger - - type: Thirst - - type: MessyDrinker - spillChance: 0.33 - - type: Icon - sprite: Mobs/Species/Vulpkanin/parts.rsi - state: full - - type: Body - prototype: Vulpkanin - - type: Speech - speechSounds: Vulpkanin - speechVerb: Vulpkanin - allowedEmotes: [ 'Bark', 'Snarl', 'Whine', 'Howl', 'Growl' ] - - type: Vocal - sounds: - Male: MaleVulpkanin - Female: FemaleVulpkanin - Unsexed: MaleVulpkanin - - type: Damageable - damageModifierSet: Vulpkanin - - type: MeleeWeapon - soundHit: - path: /Audio/Weapons/pierce.ogg - animation: WeaponArcClaw - damage: - types: - Piercing: 2 - Slash: 3 - - type: Temperature # Same as moth temperatures until below is solved. - specificHeat: 44 - - type: TemperatureDamage - heatDamageThreshold: 320 # TODO: 315 when there is a way to make the temperature alert not blink to the side of the screen and disappear when you "sweat" at 39C. - coldDamageThreshold: 230 # TODO: 220 when the above is solved. - coldDamage: - types: - Cold: 0.05 # Per second, scales with temperature & other constants - heatDamage: - types: - Heat: 2.5 # Per second, scales with temperature & other constants - # - type: Wagging TODO: Add back once we have animated tails again. Were removed due to the sprite rework, causing all of them to not fit anymore. - # action: ActionToggleWaggingVulpkanin - - type: TemperatureProtection - heatingCoefficient: 1.2 - coolingCoefficient: 0.3 - - type: JumpAbility - action: ActionVulpkaninGravityJump - canCollide: true - jumpDistance: 3 - jumpSound: - path: /Audio/Weapons/punchmiss.ogg - params: - pitch: 1.33 - volume: -5 - variation: 0.05 - - type: Sprite # Drawlayers. Top to bottom in order I believe. - netsync: false - layers: - - map: [ "enum.HumanoidVisualLayers.Chest" ] - - map: [ "enum.HumanoidVisualLayers.Head" ] - - map: [ "enum.HumanoidVisualLayers.Snout" ] - - map: [ "enum.HumanoidVisualLayers.Eyes" ] - - map: [ "enum.HumanoidVisualLayers.RArm" ] - - map: [ "enum.HumanoidVisualLayers.LArm" ] - - map: [ "enum.HumanoidVisualLayers.RLeg" ] - - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ] - - map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ] - - map: [ "jumpsuit" ] - - map: [ "enum.HumanoidVisualLayers.LHand" ] - - map: [ "enum.HumanoidVisualLayers.RHand" ] - - map: [ "enum.HumanoidVisualLayers.LFoot" ] - - map: [ "enum.HumanoidVisualLayers.RFoot" ] - - map: [ "enum.HumanoidVisualLayers.Handcuffs" ] - color: "#ffffff" - sprite: Objects/Misc/handcuffs.rsi - state: body-overlay-2 - visible: false - - map: [ "id" ] - - map: [ "gloves" ] - - map: [ "shoes" ] - - map: [ "ears" ] - - map: [ "outerClothing" ] - - map: [ "eyes" ] - - map: [ "belt" ] - - map: [ "neck" ] - - map: [ "back" ] - - map: [ "enum.HumanoidVisualLayers.SnoutCover" ] - - map: [ "enum.HumanoidVisualLayers.FacialHair" ] - - map: [ "enum.HumanoidVisualLayers.Hair" ] - - map: [ "enum.HumanoidVisualLayers.HeadSide" ] - - map: [ "enum.HumanoidVisualLayers.HeadTop" ] - - map: [ "enum.HumanoidVisualLayers.Tail" ] - - map: [ "mask" ] - - map: [ "head" ] - - map: [ "pocket1" ] - - map: [ "pocket2" ] - - map: [ "clownedon" ] - sprite: "Effects/creampie.rsi" - state: "creampie_vulpkanin" - visible: false - - type: HumanoidAppearance - species: Vulpkanin - undergarmentTop: UndergarmentTopTanktopVulpkanin - undergarmentBottom: UndergarmentBottomBoxersVulpkanin - hideLayersOnEquip: - - Snout - - SnoutCover - - HeadTop - - HeadSide - - FacialHair - - Hair - markingsDisplacement: - Hair: - sizeMaps: - 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: hair - - type: Inventory - speciesId: vulpkanin - displacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: jumpsuit - back: - sizeMaps: - 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: back - outerClothing: - sizeMaps: - 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: outerwear - gloves: - sizeMaps: - 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: hand - shoes: - sizeMaps: - 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: shoes - head: - sizeMaps: - 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: head - neck: - sizeMaps: - 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: neck - eyes: - sizeMaps: - 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: eyes - belt: - sizeMaps: - 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: belt - -- type: entity - parent: [BaseSpeciesDummy] - id: MobVulpkaninDummy - categories: [ HideSpawnMenu ] - components: - - type: HumanoidAppearance - species: Vulpkanin - hideLayersOnEquip: - - Snout - - HeadTop - - HeadSide - markingsDisplacement: - Hair: - sizeMaps: - 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: hair - - type: Inventory - speciesId: vulpkanin - displacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: jumpsuit - back: - sizeMaps: - 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: back - outerClothing: - sizeMaps: - 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: outerwear - gloves: - sizeMaps: - 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: hand - shoes: - sizeMaps: - 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: shoes - head: - sizeMaps: - 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: head - neck: - sizeMaps: - 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: neck - eyes: - sizeMaps: - 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: eyes - belt: - sizeMaps: - 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: belt diff --git a/Resources/Prototypes/Entities/Objects/Misc/botparts.yml b/Resources/Prototypes/Entities/Objects/Misc/botparts.yml index fbbdca39091..b12eaa0552a 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/botparts.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/botparts.yml @@ -12,3 +12,111 @@ - ProximitySensor - type: StaticPrice price: 40 + +- type: entity + id: PartSilicon + parent: BaseItem + abstract: true + components: + - type: Sprite + sprite: Objects/Specific/Robotics/cyborg_parts.rsi + - type: StaticPrice + price: 5 + - type: Tag + tags: + - Trash + - type: PhysicalComposition + materialComposition: + Steel: 25 + - type: GuideHelp + guides: + - Cyborgs + - Robotics + +- type: entity + id: LeftArmBorg + parent: PartSilicon + name: cyborg left arm + components: + - type: Sprite + state: borg_l_arm + - type: Tag + tags: + - Trash + - BorgArm + - BorgLArm + - type: Item + heldPrefix: borg-arm + +- type: entity + id: RightArmBorg + parent: PartSilicon + name: cyborg right arm + components: + - type: Sprite + state: borg_r_arm + - type: Tag + tags: + - Trash + - BorgArm + - BorgRArm + - type: Item + heldPrefix: borg-arm + +- type: entity + id: LeftLegBorg + parent: PartSilicon + name: cyborg left leg + components: + - type: Sprite + state: borg_l_leg + - type: Tag + tags: + - Trash + - BorgLeg + - BorgLLeg + - type: Item + heldPrefix: borg-leg + +- type: entity + id: RightLegBorg + parent: PartSilicon + name: cyborg right leg + components: + - type: Sprite + state: borg_r_leg + - type: Tag + tags: + - Trash + - BorgLeg + - BorgRLeg + - type: Item + heldPrefix: borg-leg + +- type: entity + id: LightHeadBorg + parent: PartSilicon + name: cyborg head + components: + - type: Sprite + state: borg_head + - type: Tag + tags: + - Trash + - BorgHead + - type: Item + heldPrefix: borg-head + +- type: entity + id: TorsoBorg + parent: PartSilicon + name: cyborg torso + components: + - type: Sprite + state: borg_chest + - type: Tag + tags: + - Trash + - BorgTorso + - type: Item + heldPrefix: borg-chest diff --git a/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml b/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml index 4bc1e0d6eae..b1293ea1ef7 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml @@ -288,7 +288,7 @@ weight: 0.0008 - id: ClothingOuterDogi weight: 0.00001 - - id: HeadHuman + - id: OrganHumanHead weight: 0.00001 - id: OrganHumanKidneys weight: 0.00001 diff --git a/Resources/Prototypes/Reagents/gases.yml b/Resources/Prototypes/Reagents/gases.yml index 140ca47938d..111d83b5d9c 100644 --- a/Resources/Prototypes/Reagents/gases.yml +++ b/Resources/Prototypes/Reagents/gases.yml @@ -47,7 +47,7 @@ - !type:Oxygenate conditions: - !type:MetabolizerTypeCondition - type: [ Human, Animal, Rat, Plant ] + type: [ Human, Animal, Rat, Plant, Arachnid, Moth ] # Convert Oxygen into CO2. - !type:ModifyLungGas conditions: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/furniture/ritualseat.yml b/Resources/Prototypes/Recipes/Construction/Graphs/furniture/ritualseat.yml index a5ff7128067..c5aedc119cc 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/furniture/ritualseat.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/furniture/ritualseat.yml @@ -42,7 +42,7 @@ - to: chairRitual completed: - !type:SpawnPrototype - prototype: HeadSkeleton + prototype: OrganSkeletonPersonHead amount: 1 steps: - tool: Prying diff --git a/Resources/Prototypes/Species/arachnid.yml b/Resources/Prototypes/Species/arachnid.yml index 7c9a8d12ed0..ad576b8b60b 100644 --- a/Resources/Prototypes/Species/arachnid.yml +++ b/Resources/Prototypes/Species/arachnid.yml @@ -6,7 +6,7 @@ sprites: MobArachnidSprites defaultSkinTone: "#385878" markingLimits: MobArachnidMarkingLimits - dollPrototype: MobArachnidDummy + dollPrototype: AppearanceArachnid skinColoration: Hues maleFirstNames: NamesArachnidFirst femaleFirstNames: NamesArachnidFirst diff --git a/Resources/Prototypes/Species/diona.yml b/Resources/Prototypes/Species/diona.yml index cfb42a460fa..e08d476ee38 100644 --- a/Resources/Prototypes/Species/diona.yml +++ b/Resources/Prototypes/Species/diona.yml @@ -6,7 +6,7 @@ sprites: MobDionaSprites defaultSkinTone: "#cdb369" markingLimits: MobDionaMarkingLimits - dollPrototype: MobDionaDummy + dollPrototype: AppearanceDiona skinColoration: Hues maleFirstNames: NamesDionaFirst femaleFirstNames: NamesDionaFirst diff --git a/Resources/Prototypes/Species/dwarf.yml b/Resources/Prototypes/Species/dwarf.yml index fc800213c19..8d1d41d8921 100644 --- a/Resources/Prototypes/Species/dwarf.yml +++ b/Resources/Prototypes/Species/dwarf.yml @@ -5,5 +5,5 @@ prototype: MobDwarf sprites: MobHumanSprites markingLimits: MobHumanMarkingLimits - dollPrototype: MobDwarfDummy + dollPrototype: AppearanceDwarf skinColoration: HumanToned diff --git a/Resources/Prototypes/Species/gingerbread.yml b/Resources/Prototypes/Species/gingerbread.yml index bcce8d6ca98..e8f9fc07546 100644 --- a/Resources/Prototypes/Species/gingerbread.yml +++ b/Resources/Prototypes/Species/gingerbread.yml @@ -5,7 +5,7 @@ prototype: MobGingerbread sprites: MobGingerbreadSprites markingLimits: MobHumanMarkingLimits - dollPrototype: MobGingerbreadDummy + dollPrototype: AppearanceGingerbread skinColoration: HumanToned defaultSkinTone: "#9a7c5a" diff --git a/Resources/Prototypes/Species/human.yml b/Resources/Prototypes/Species/human.yml index aef1c95fee7..249e5d5a741 100644 --- a/Resources/Prototypes/Species/human.yml +++ b/Resources/Prototypes/Species/human.yml @@ -5,7 +5,7 @@ prototype: MobHuman sprites: MobHumanSprites markingLimits: MobHumanMarkingLimits - dollPrototype: MobHumanDummy + dollPrototype: AppearanceHuman skinColoration: HumanToned # The lack of a layer means that diff --git a/Resources/Prototypes/Species/moth.yml b/Resources/Prototypes/Species/moth.yml index ccb75d22c86..aacb6fe5712 100644 --- a/Resources/Prototypes/Species/moth.yml +++ b/Resources/Prototypes/Species/moth.yml @@ -6,7 +6,7 @@ sprites: MobMothSprites defaultSkinTone: "#ffda93" markingLimits: MobMothMarkingLimits - dollPrototype: MobMothDummy + dollPrototype: AppearanceMoth skinColoration: Hues maleFirstNames: NamesMothFirstMale femaleFirstNames: NamesMothFirstFemale diff --git a/Resources/Prototypes/Species/reptilian.yml b/Resources/Prototypes/Species/reptilian.yml index 737c368320f..cbcc2715a4f 100644 --- a/Resources/Prototypes/Species/reptilian.yml +++ b/Resources/Prototypes/Species/reptilian.yml @@ -6,7 +6,7 @@ sprites: MobReptilianSprites defaultSkinTone: "#34a223" markingLimits: MobReptilianMarkingLimits - dollPrototype: MobReptilianDummy + dollPrototype: AppearanceReptilian skinColoration: Hues maleFirstNames: NamesReptilianMale femaleFirstNames: NamesReptilianFemale diff --git a/Resources/Prototypes/Species/skeleton.yml b/Resources/Prototypes/Species/skeleton.yml index bbe2b6196f8..e04f44da5ec 100644 --- a/Resources/Prototypes/Species/skeleton.yml +++ b/Resources/Prototypes/Species/skeleton.yml @@ -8,7 +8,7 @@ markingLimits: MobHumanMarkingLimits maleFirstNames: NamesSkeletonFirst femaleFirstNames: NamesSkeletonFirst - dollPrototype: MobSkeletonPersonDummy + dollPrototype: AppearanceSkeletonPerson skinColoration: TintedHues - type: speciesBaseSprites diff --git a/Resources/Prototypes/Species/slime.yml b/Resources/Prototypes/Species/slime.yml index 4227efe4f26..50961b619c9 100644 --- a/Resources/Prototypes/Species/slime.yml +++ b/Resources/Prototypes/Species/slime.yml @@ -6,7 +6,7 @@ sprites: MobSlimeSprites defaultSkinTone: "#b8b8b8" markingLimits: MobSlimeMarkingLimits - dollPrototype: MobSlimePersonDummy + dollPrototype: AppearanceSlimePerson skinColoration: Hues - type: speciesBaseSprites diff --git a/Resources/Prototypes/Species/vox.yml b/Resources/Prototypes/Species/vox.yml index b29709b0f25..22ed5c0461e 100644 --- a/Resources/Prototypes/Species/vox.yml +++ b/Resources/Prototypes/Species/vox.yml @@ -5,7 +5,7 @@ prototype: MobVox sprites: MobVoxSprites markingLimits: MobVoxMarkingLimits - dollPrototype: MobVoxDummy + dollPrototype: AppearanceVox skinColoration: VoxFeathers defaultSkinTone: "#6c741d" maleFirstNames: NamesVox diff --git a/Resources/Prototypes/Species/vulpkanin.yml b/Resources/Prototypes/Species/vulpkanin.yml index 6f8acfa73ef..f57278ab5ae 100644 --- a/Resources/Prototypes/Species/vulpkanin.yml +++ b/Resources/Prototypes/Species/vulpkanin.yml @@ -6,7 +6,7 @@ sprites: MobVulpkaninSprites defaultSkinTone: "#5a3f2d" markingLimits: MobVulpkaninMarkingLimits - dollPrototype: MobVulpkaninDummy + dollPrototype: AppearanceVulpkanin skinColoration: VulpkaninColors maleFirstNames: names_vulpkanin_male femaleFirstNames: names_vulpkanin_female diff --git a/Resources/ServerInfo/Guidebook/Mobs/Human.xml b/Resources/ServerInfo/Guidebook/Mobs/Human.xml index 7e0d989e55e..d4b1a99fe83 100644 --- a/Resources/ServerInfo/Guidebook/Mobs/Human.xml +++ b/Resources/ServerInfo/Guidebook/Mobs/Human.xml @@ -2,7 +2,7 @@ # Humans - + Depending on who you ask, humans are either unremarkable or the universal standard to which everything else is compared. diff --git a/Resources/ServerInfo/Guidebook/Mobs/Moth.xml b/Resources/ServerInfo/Guidebook/Mobs/Moth.xml index d407d7abc75..2f136801f4d 100644 --- a/Resources/ServerInfo/Guidebook/Mobs/Moth.xml +++ b/Resources/ServerInfo/Guidebook/Mobs/Moth.xml @@ -2,7 +2,7 @@ # Moth People - + They can eat cotton, fabrics and clothing, but virtually none of the food that others would consider "edible". They prefer a somewhat lower temperature range than humans. diff --git a/Resources/ServerInfo/Guidebook/Mobs/Reptilian.xml b/Resources/ServerInfo/Guidebook/Mobs/Reptilian.xml index 936cd9f5e2d..00680c5106a 100644 --- a/Resources/ServerInfo/Guidebook/Mobs/Reptilian.xml +++ b/Resources/ServerInfo/Guidebook/Mobs/Reptilian.xml @@ -2,7 +2,7 @@ # Reptilians - + They can ONLY eat fruits and meat, but can eat raw meat and drink blood without any ill effects. diff --git a/Resources/ServerInfo/Guidebook/Mobs/Species.xml b/Resources/ServerInfo/Guidebook/Mobs/Species.xml index fc9c5db710c..a10b5fc4af9 100644 --- a/Resources/ServerInfo/Guidebook/Mobs/Species.xml +++ b/Resources/ServerInfo/Guidebook/Mobs/Species.xml @@ -4,19 +4,19 @@ Nanotrasen employs a variety of sapient species. - - - - + + + + - - - - + + + + - + diff --git a/Resources/Textures/Mobs/Species/Slime/organs.rsi/brain-slime.png b/Resources/Textures/Mobs/Species/Slime/organs.rsi/brain.png similarity index 100% rename from Resources/Textures/Mobs/Species/Slime/organs.rsi/brain-slime.png rename to Resources/Textures/Mobs/Species/Slime/organs.rsi/brain.png diff --git a/Resources/Textures/Mobs/Species/Slime/organs.rsi/lung-l-slime.png b/Resources/Textures/Mobs/Species/Slime/organs.rsi/lung-l.png similarity index 100% rename from Resources/Textures/Mobs/Species/Slime/organs.rsi/lung-l-slime.png rename to Resources/Textures/Mobs/Species/Slime/organs.rsi/lung-l.png diff --git a/Resources/Textures/Mobs/Species/Slime/organs.rsi/lung-r-slime.png b/Resources/Textures/Mobs/Species/Slime/organs.rsi/lung-r.png similarity index 100% rename from Resources/Textures/Mobs/Species/Slime/organs.rsi/lung-r-slime.png rename to Resources/Textures/Mobs/Species/Slime/organs.rsi/lung-r.png diff --git a/Resources/Textures/Mobs/Species/Slime/organs.rsi/meta.json b/Resources/Textures/Mobs/Species/Slime/organs.rsi/meta.json index 451ab138dfa..25a0c60180b 100644 --- a/Resources/Textures/Mobs/Species/Slime/organs.rsi/meta.json +++ b/Resources/Textures/Mobs/Species/Slime/organs.rsi/meta.json @@ -8,7 +8,7 @@ }, "states": [ { - "name": "brain-slime" + "name": "brain" }, { "name": "brain-inhand-left", @@ -27,10 +27,10 @@ "directions": 4 }, { - "name": "lung-l-slime" + "name": "lung-l" }, { - "name": "lung-r-slime" + "name": "lung-r" } ] } diff --git a/Resources/migration.yml b/Resources/migration.yml index 08d552452af..daab17ef73b 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -769,3 +769,17 @@ HandheldHealthAnalyzerEmpty: HandheldHealthAnalyzer #2026-01-09 BorgModuleAdvancedChemical: BorgModuleAdvancedTopical + +# 2026-01-14 +HeadHuman: OrganHumanHead +HeadSkeleton: OrganSkeletonPersonHead +LeftArmHuman: OrganHumanArmLeft +LeftArmSkeleton: OrganSkeletonPersonArmLeft +LeftHandSkeleton: OrganSkeletonPersonHandLeft +LeftLegHuman: OrganHumanLegLeft +LeftLegSkeleton: OrganSkeletonPersonLegLeft +RightArmHuman: OrganHumanArmRight +RightHandSkeleton: OrganSkeletonPersonHandRight +RightLegHuman: OrganHumanLegRight +TorsoSkeleton: OrganSkeletonPersonTorso +RightArmSkeleton: OrganSkeletonPersonArmRight From 4e3cc7b7be623326fa8725f8891c6ad8035b3107 Mon Sep 17 00:00:00 2001 From: Kowlin <10947836+Kowlin@users.noreply.github.com> Date: Sat, 17 Jan 2026 21:10:25 +0100 Subject: [PATCH 008/603] Adjust the role timers for certain roles. (#42372) --- .../Prototypes/Roles/Jobs/Engineering/technical_assistant.yml | 2 +- Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml | 2 +- Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml | 2 +- Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml | 2 +- Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml | 2 +- Resources/Prototypes/Roles/Jobs/Security/security_officer.yml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml index afc0182c0fc..ee4431bded1 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml @@ -8,7 +8,7 @@ time: 1h - !type:DepartmentTimeRequirement department: Engineering - time: 5h + time: 10h inverted: true # stop playing intern if you're good at engineering! startingGear: TechnicalAssistantGear icon: "JobIconTechnicalAssistant" diff --git a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml index 0517d318e17..9c1c41da2bc 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml @@ -6,7 +6,7 @@ requirements: - !type:DepartmentTimeRequirement department: Medical - time: 5h + time: 10h inverted: true # stop playing intern if you're good at med! startingGear: MedicalInternGear icon: "JobIconMedicalIntern" diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml b/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml index 96b95c3d581..48059858229 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml @@ -6,7 +6,7 @@ requirements: - !type:DepartmentTimeRequirement department: Science - time: 5h + time: 10h inverted: true # stop playing intern if you're good at science! startingGear: ResearchAssistantGear icon: "JobIconResearchAssistant" diff --git a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml index 2b517a4b7a5..e8fdc6f7383 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml @@ -6,7 +6,7 @@ requirements: - !type:RoleTimeRequirement role: JobWarden - time: 1h + time: 3h - !type:RoleTimeRequirement role: JobDetective time: 1h # knowing how to use the tools is important diff --git a/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml b/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml index a85bce52fa0..47b7472541e 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml @@ -8,7 +8,7 @@ time: 10h - !type:DepartmentTimeRequirement department: Security - time: 5h + time: 10h inverted: true # stop playing intern if you're good at security! startingGear: SecurityCadetGear icon: "JobIconSecurityCadet" diff --git a/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml b/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml index 4ebeb3c30c9..af8a274d77b 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml @@ -6,7 +6,7 @@ requirements: - !type:DepartmentTimeRequirement department: Security - time: 2.5h + time: 4h startingGear: SecurityOfficerGear icon: "JobIconSecurityOfficer" supervisors: job-supervisors-hos From 2ad1d1484f54575fad0b567a15a8f925dce50ce4 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 17 Jan 2026 20:25:52 +0000 Subject: [PATCH 009/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 0240286d566..49125c1f0db 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: FungiFellow - changes: - - message: Sentience Event can no longer target Corgis, Smile or Mothroaches - type: Tweak - id: 8911 - time: '2025-09-03T12:00:07.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39810 - author: TiniestShark changes: - message: Reptilians now have Mask/Helmet displacements. Snoots are no longer smushed. @@ -3916,3 +3909,15 @@ id: 9414 time: '2026-01-16T17:19:48.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42448 +- author: Kowlin + changes: + - message: All intern jobs now lock out after 10 hours, up from 5 hours. + type: Tweak + - message: Security Officer now requires 4 hours of Security Cadet, up from 2.5 + hours. + type: Tweak + - message: Head of Security now requires 3 hours of Warden, up from 1 hour. + type: Tweak + id: 9415 + time: '2026-01-17T20:24:42.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42372 From 362d09e8af13803f1efa0cb7629a49feebd4126e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 18 Jan 2026 01:28:06 -0800 Subject: [PATCH 010/603] Update Credits (#42491) Co-authored-by: PJBot --- Resources/Credits/GitHub.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Credits/GitHub.txt b/Resources/Credits/GitHub.txt index e4b50a2bbd0..75030de7b47 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -0-Anon, 0leshe, 0tito, 0x6273, 12rabbits, 1337dakota, 13spacemen, 154942, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 27alaing, 2DSiggy, 3nderall, 4310v343k, 4dplanner, 5tickman, 612git, 778b, 96flo, aaron, abadaba695, Ablankmann, abregado, Absolute-Potato, Absotively, achookh, Acruid, ActiveMammmoth, actually-reb, ada-please, adamsong, Adeinitas, adm2play, Admiral-Obvious-001, adrian, Adrian16199, Ady4ik, Aearo-Deepwater, Aerocrux, Aeshus, Aexolott, Aexxie, africalimedrop, afrokada, AftrLite, AgentSmithRadio, Agoichi, ahandleman, Ahion, aiden, Aidenkrz, aidenkrz, Aisu9, ajcm, AJCM-git, AjexRose, Alekshhh, alexalexmax, alexkar598, AlexMorgan3817, alexum418, alexumandxgabriel08x, Alice4267, Alithsko, Alkheemist, alliephante, ALMv1, Alpaccalypse, Alpha-Two, AlphaQwerty, Altoids1, amatwiedle, amylizzle, ancientpower, Andre19926, Andrew-Fall, AndrewEyeke, AndrewFenriz, AndreyCamper, anri, Anzarot121, ApolloVector, Appiah, april-gras, ar4ill, Arcane-Waffle, archee1, ArchPigeon, ArchRBX, areitpog, Arendian, areyouconfused, arimah, Arkanic, ArkiveDev, armoks, Arteben, ArthurMousatov, ArtisticRoomba, artur, Artxmisery, ArZarLordOfMango, as334, AshBats, AsikKEsel, AsnDen, asperger-sind, aspiringLich, astriloqua, Atakku, august-sun, AutoOtter, AverageNotDoingAnythingEnjoyer, avghdev, AwareFoxy, Awlod, Axionyxx, azzyisnothere, AzzyIsNotHere, B-Kirill, B3CKDOOR, baa14453, BackeTako, BadaBoomie, Bakke, BananaFlambe, Baptr0b0t, BarryNorfolk, BasedUser, bebr3ght, beck-thompson, beesterman, bellwetherlogic, ben, benbryant0, benev0, benjamin-burges, BGare, bhespiritu, bibbly, BigfootBravo, BIGZi0348, bingojohnson, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, blitzthesquishy, Blobadoodle, bloodrizer, Bloody2372, blueDev2, Boaz1111, BobdaBiscuit, BobTheSleder, boiled-water-tsar, Bokser815, bolantej, Booblesnoot42, Boolean-Buckeye, botanySupremist, brainfood1183, BramvanZijp, Brandon-Huu, breeplayx3, BriBrooo, BRINGit34, brndd, bryce0110, BubblegumBlue, buletsponge, buntobaggins, buunie099, bvelliquette, BWTCK, byondfuckery, c0rigin, c4llv07e, CaasGit, Caconym27, Calecute, Callmore, Camdot, cammusubi, capnsockless, CaptainMaru, captainsqrbeard, Carbonhell, Carolyn3114, Carou02, carteblanche4me, catdotjs, catlord, Catofquestionableethics, CatTheSystem, CawsForConcern, CDWimmer, Centronias, Chaboricks, chairbender, Chaoticaa, Charlese2, charlie, chartman, ChaseFlorom, chavonadelal, Cheackraze, CheddaCheez, cheesePizza2, CheesePlated, Chief-Engineer, chillyconmor, christhirtle, chromiumboy, Chronophylos, Chubbicous, Chubbygummibear, Ciac32, ciaran, citrea, civilCornball, claustro305, Clement-O, cloudyias, clyf, Clyybber, CMDR-Piboy314, cnv41, coco, cohanna, Cohnway, Cojoke-dot, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, Compilatron144, CookieMasterT, coolboy911, CoolioDudio, coolmankid12345, Coolsurf6, cooperwallace, corentt, CormosLemming, CrafterKolyan, CraftyRenter, crazybrain23, Crazydave91920, CrazyPhantom779, creadth, CrigCrag, CroilBird, Crotalus, CrudeWax, cryals, CrzyPotato, cubixthree, cutemoongod, Cyberboss, d34d10cc, DadeKuma, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, dan, dangerrevolution, daniel-cr, DanSAussieITS, Daracke, Darkenson, david, DawBla, Daxxi3, dch-GH, ddeegan, de0rix, Deahaka, dean, DEATHB4DEFEAT, Deatherd, deathride58, debugok, Decappi, Decortex, Deeeeja, deepdarkdepths, DeepwaterCreations, Deerstop, degradka, Delete69, deltanedas, DenisShvalov, DerbyX, derek, dersheppard, Deserty0, Detintinto, DevilishMilk, devinschubert14, dexlerxd, dffdff2423, DieselMohawk, DieselMohawkTheSequel, digitalic, Dimastra, DinnerCalzone, DinoWattz, Disp-Dev, DisposableCrewmember42, dissidentbullet, DjfjdfofdjfjD, doc-michael, docnite, Doctor-Cpu, DogZeroX, dolgovmi, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, DR-DOCTOR-EVIL-EVIL, Dragonjspider, dragonryan06, drakewill-CRL, Drayff, dreamlyjack, DrEnzyme, dribblydrone, DrMelon, drongood12, DrSingh, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, DuckManZach, Duddino, dukevanity, duskyjay, Dutch-VanDerLinde, dvir001, dylanstrategie, dylanwhittingham, Dynexust, Easypoller, echo, EchoOfNothing, eclips_e, eden077, EEASAS, Efruit, efzapa, Ekkosangen, ElectroSR, elsie, elthundercloud, Elysium206, emberwinters, Emisse, emmafornash, EmoGarbage404, Endecc, EnrichedCaramel, Entvari, eoineoineoin, ephememory, eris, erohrs2, erorr404v1, Errant-4, ertanic, esguard, estacaoespacialpirata, eugene, ewokswagger, exincore, exp111, f0x-n3rd, F1restar4, FacePluslll, Fahasor, FairlySadPanda, farrellka-dev, FATFSAAM2, Feluk6174, ficcialfaint, Fiftyllama, Fildrance, fillervk, FinnishPaladin, firenamefn, Firewars763, FirinMaLazors, Fishfish458, fl-oz, Flareguy, flashgnash, FlipBrooke, FluffiestFloof, FluffMe, FluidRock, flymo5678, foboscheshir, FoLoKe, fooberticus, ForestNoises, forgotmyotheraccount, forkeyboards, forthbridge, Fortune117, foxhorn, freeman2651, freeze2222, frobnic8, Froffy025, Fromoriss, froozigiusz, FrostMando, FrostRibbon, Fruitsalad, Funce, FungiFellow, FunkySphere, FunTust, Futuristic-OK, GalacticChimp, gamer3107, Gamewar360, gansulalan, GaussiArson, Gaxeer, gbasood, gcoremans, Geekyhobo, genderGeometries, GeneralGaws, Genkail, Gentleman-Bird, geraeumig, Ghagliiarghii, Git-Nivrak, githubuser508, GitHubUser53123, gituhabu, GlassEclipse, GnarpGnarp, GNF54, godisdeadLOL, goet, GoldenCan, Goldminermac, Golinth, golubgik, GoodWheatley, Gorox221, GR1231, gradientvera, graevy, GraniteSidewalk, GreaseMonk, greenrock64, GreyMario, GrownSamoyedDog, GTRsound, gusxyz, Gyrandola, h3half, hamurlik, Hanzdegloker, HappyRoach, happyrobot33, Hardly3D, harikattar, Hayden, he1acdvv, Hebi, Helix-ctrl, helm4142, Henry, HerCoyote23, Hi-Im-Shot, HighTechPuddle, Hitlinemoss, hiucko, hivehum, Hmeister-fake, Hmeister-real, Hobbitmax, hobnob, HoidC, Holinka4ever, holyssss, HoofedEar, Hoolny, hord-brayden, hoshizora-sayo, Hreno, Hrosts, htmlsystem, Huaqas, hubismal, Hugal31, Hyenh, hyperb1, hyperDelegate, hyphenationc, i-justuser-i, iaada, iacore, IamVelcroboy, Ian321, icekot8, icesickleone, iczero, iglov, IgorAnt028, igorsaux, ike709, illersaver, Illiux, Ilushkins33, Ilya246, IlyaElDunaev, imatsoup, IMCB, impubbi, imrenq, imweax, indeano, Injazz, Insineer, insoPL, IntegerTempest, Interrobang01, Intoxicating-Innocence, IProduceWidgets, itsmethom, Itzbenz, iztokbajcar, Jackal298, Jackrost, JackRyd3r, jacksonzck, JackspajfMain, Jacktastic09, Jackw2As, jacob, jamessimo, janekvap-havok, Jark255, Jarmer123, Jaskanbe, JasperJRoth, jbox144, JCGWE30, JerryImMouse, jerryimmouse, Jessetriesagain, jessicamaybe, JesterX666, Jewelots, Jezithyr, jicksaw, JiimBob, JimGamemaster, jimmy12or, JIPDawg, jjtParadox, jkwookee, jmcb, JohnGinnane, johnjjohn, johnku1, Jophire, Jopogrechkin, joshepvodka, JpegOfAFrog, jproads, JrInventor05, Jrpl, jukereise, juliangiebel, JustArt1m, JustCone14, justdie12, justin, justintether, JustinTrotter, JustinWinningham, justtne, K-Dynamic, k3yw, Kadeo64, Kaga-404, kaiserbirch, KaiShibaa, kalane15, kalanosh, KamTheSythe, Kanashi-Panda, katzenminer, kbailey-git, Keelin, Keer-Sar, KEEYNy, keikiru, Kelrak, kerisargit, keronshb, KIBORG04, KieueCaprie, Kimpes, kin98, KingFroozy, kira-er, kiri-yoshikage, Kirillcas, Kirus59, Kistras, Kit, Kit0vras, KittenColony, Kittygyat, klaypexx, kleinerstation13, Kmc2000, Ko4ergaPunk, kognise, kokoc9n, komunre, KonstantinAngelov, kontakt, korczoczek, kosticia, koteq, kotobdev, Kowlin, KrasnoshchekovPavel, Krosus777, Krunklehorn, Kryyto, Kupie, kxvvv, Kyoth25f, kyupolaris, kzhanik, LaCumbiaDelCoronavirus, lajolico, Lamrr, lanedon, LankLTE, laok233, lapatison, larryrussian, lawdog4817, Lazzi0706, leah, leander-0, leonardo-dabepis, leonidussaks, leonsfriedrich, LeoSantich, lettern, LetterN, Level10Cybermancer, LEVELcat, lever1209, LevitatingTree, Lgibb18, lgruthes, LightVillet, lilazero, liltenhead, linkbro1, linkuyx, Litraxx, little-meow-meow, LittleBuilderJane, LittleNorthStar, LittleNyanCat, lizelive, ljm862, lmsnoise, localcc, lokachop, lolman360, Lomcastar, Lordbrandon12, LordCarve, LordEclipse, lucas, LucasTheDrgn, luckyshotpictures, LudwigVonChesterfield, luegamer, luizwritescode, LukaSlade, luminight, lunarcomets, Lusatia, Luxeator, lvvova1, Lyndomen, lyroth001, lzimann, lzk228, M1tht1c, M3739, M4rchy-S, M87S, mac6na6na, MACMAN2003, Macoron, magicalus, magmodius, magnuscrowe, maland1, malchanceux, MaloTV, manelnavola, ManelNavola, Mangohydra, marboww, Markek1, MarkerWicker, marlyn, matt, Matz05, max, MaxNox7, maylokana, MDuch369, meara1179, meganerobot, MehimoNemo, Mehnix, MeltedPixel, memeproof, MendaxxDev, Menshin, Mephisto72, MerrytheManokit, Mervill, metalgearsloth, MetalSage, MFMessage, mhamsterr, michaelcu, micheel665, mifia, mikeysaurus, MilenVolf, MilonPL, Minemoder5000, Minty642, minus1over12, Mirino97, mirrorcult, misandrie, MishaUnity, MissKay1994, MisterImp, MisterMecky, Mith-randalf, Mixelz, mjarduk, MjrLandWhale, mkanke-real, MLGTASTICa, mnva0, moderatelyaware, modern-nm, mokiros, momo, Moneyl, monotheonist, Moomoobeef, moony, Morb0, MossyGreySlope, mqole, mr-bo-jangles, Mr0maks, MrFippik, MrPersival, mrrobdemo, mtrs163, muburu, MureixloI, murolem, murphyneko, musicmanvr, MWKane, Myakot, Myctai, N3X15, nabegator, nails-n-tape, Nairodian, Naive817, NakataRin, namespace-Memory, Nannek, NazrinNya, neborsh, neutrino-laser, NickPowers43, nikitosych, nikthechampiongr, Nimfar11, ninruB, Nirnael, NIXC, nkokic, NkoKirkto, nmajask, noctyrnal, noelkathegod, noirogen, nok-ko, NonchalantNoob, NoobyLegion, Nopey, NoreUhh, not-gavnaed, notafet, notquitehadouken, notsodana, noudoit, noverd, Nox38, NuclearWinter, Nuggets219, nukashimika, nuke-haus, NULL882, nullarmo, nyeogmi, Nylux, Nyranu, Nyxilath, och-och, OctoRocket, OldDanceJacket, OliverOtter, onesch, OneZerooo0, OnsenCapy, OnyxTheBrave, opl-, Orange-Winds, OrangeMoronage9622, OrbitSystem07, Orsoniks, osjarw, Ostaf, othymer, OttoMaticode, Owai-Seek, packmore, PAFFhassoocks, paige404, paigemaeforrest, pali6, Palladinium, Pangogie, panzer-iv1, partyaddict, patrikturi, PaulRitter, pavlockblaine03, peccneck, Peptide90, peptron1, perryprog, PeterFuto, PetMudstone, pewter-wiz, PGrayCS, pgraycs, Pgriha, phantom-lily, pheenty, philingham, Phill101, Phooooooooooooooooooooooooooooooosphate, phunnyguy, PicklOH, PilgrimViis, Pill-U, pinkbat5, Piras314, Pireax, Pissachu, pissdemon, Pixel8-dev, PixeltheAertistContrib, PixelTheKermit, PJB3005, Plasmaguy, plinyvic, Plykiya, poeMota, pofitlo, pointer-to-null, Pok27, poklj, PolterTzi, PoorMansDreams, PopGamer45, portfiend, potato1234x, PotentiallyTom, PotRoastPiggy, Princess-Cheeseballs, ProfanedBane, PROG-MohamedDwidar, Prole0, ProPandaBear, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykana, psykzz, PuceTint, pumkin69, PuroSlavKing, PursuitInAshes, Putnam3145, py01, Pyrovi, qrtDaniil, qrwas, Quantum-cross, quasr-9, quatre, QueerNB, QuietlyWhisper, qwerltaz, Radezolid, RadioMull, Radosvik, Radrark, Rainbeon, Rainfey, Raitononai, Ramlik, RamZ, randy10122, Rane, Ranger6012, Rapidgame7, ravage123321, rbertoche, RedBookcase, Redfire1331, Redict, RedlineTriad, redmushie, RednoWCirabrab, redspyy, ReeZer2, RemberBM, RemieRichards, RemTim, rene-descartes2021, Renlou, retequizzle, rewafflution, rhailrake, rhsvenson, rich-dunne, RieBi, riggleprime, RIKELOLDABOSS, rinary1, Rinkashikachi, riolume, rlebell33, RobbyTheFish, robinthedragon, Rockdtben, Rohesie, rok-povsic, rokudara-sen, rolfero, RomanNovo, rosieposieeee, Roudenn, router, ruddygreat, rumaks, RumiTiger, Ruzihm, rwrv, S1rFl0, S1ss3l, Saakra, Sadie-silly, saga3152, saintmuntzer, Salex08, sam, samgithubaccount, Samuka-C, SaphireLattice, SapphicOverload, sarahon, sativaleanne, SaveliyM360, sBasalto, ScalyChimp, ScarKy0, ScholarNZL, schrodinger71, scrato, Scribbles0, scrivoy, scruq445, scuffedjays, ScumbagDog, SeamLesss, Segonist, semensponge, sephtasm, ser1-1y, Serkket, sewerpig, SG6732, sh18rw, Shaddap1, ShadeAware, ShadowCommander, shadowtheprotogen546, shaeone, shampunj, shariathotpatrol, SharkSnake98, shibechef, Siginanto, signalsender, SignalWalker, siigiil, silicon14wastaken, Silverfur-underscore, Simyon264, sirdragooon, Sirionaut, SirWarock, Sk1tch, SkaldetSkaeg, Skarletto, skeeka-dev, Skybailey-dev, skye, Skyedra, SlamBamActionman, slarticodefast, Slava0135, sleepyyapril, slimmslamm, Slyfox333, Smugman, SnappingOpossum, snebl, snicket, sniperchance, Snowni, snowsignal, SolidSyn, SolidusSnek, solstar2, SomegnihT, SonarZeBat, SonicHDC, SoulFN, SoulSloth, Soundwavesghost, soupkilove, southbridge-fur, sowelipililimute, Soydium, SpaceLizard24, SpaceLizardSky, SpaceManiac, SpaceRox1244, SpaceyLady, Spangs04, spanky-spanky, Sparlight, spartak, SpartanKadence, spderman3333, SpeltIncorrectyl, Spessmann, SphiraI, SplinterGP, spoogemonster, sporekto, sporkyz, ssdaniel24, stalengd, stanberytrask, Stanislav4ix, StanTheCarpenter, starbuckss14, Stealthbomber16, Steffo99, stellar-novas, stewie523, stomf, Stop-Signs, stopbreaking, stopka-html, StrawberryMoses, Stray-Pyramid, strO0pwafel, Strol20, StStevens, Subversionary, sunbear-dev, SuperGDPWYL, superjj18, Supernorn, SurrealShibe, SweetAplle, SweptWasTaken, SyaoranFox, Sybil, SYNCHRONIC, Szunti, t, Tainakov, takemysoult, taonewt, tap, TaralGit, Taran, taurie, Tayrtahn, tday93, teamaki, TeenSarlacc, TekuNut, telavivgamers, telyonok, temm1ie, TemporalOroboros, tentekal, terezi4real, Terraspark4941, texcruize, Tezzaide, TGODiamond, TGRCdev, tgrkzus, thanosdegraf, ThatGuyUSA, ThatOneGoblin25, thatrandomcanadianguy, TheArturZh, TheBlueYowie, thecopbennet, TheCze, TheDarkElites, thedraccx, TheEmber, theexetron, TheFlyingSentry, thefoty, TheGrimbeeper, TheIntoxicatedCat, thekilk, themias, theomund, TheProNoob678, TherapyGoth, ThereDrD0, TheSecondLord, TheShuEd, thetolbean, thevinter, TheWaffleJesus, thinbug0, ThunderBear2006, timothyteakettle, TimrodDX, timurjavid, tin-man-tim, TiniestShark, Titian3, tk-a369, tkdrg, tmtmtl30, ToastEnjoyer, Toby222, TokenStyle, Tollhouse, Toly65, tom-leys, tomasalves8, Tomeno, Tonydatguy, topy, tornado-technology, TornadoTechnology, tosatur, TotallyLemon, ToxicSonicFan04, Tr1bute, travis-g-reid, treytipton, trixxedbit, TrixxedHeart, tropicalhibi, truepaintgit, Truoizys, Tryded, TsjipTsjip, tuchila-adi-bogdan, Tunguso4ka, TurboTrackerss14, TVK-04, tyashley, Tyler-IN, TytosB, Tyzemol, UbaserB, Uberration, ubis1, UBlueberry, uhbg, UKNOWH, UltimateJester, Unbelievable-Salmon, underscorex5, UnicornOnLSD, Unisol, Unkn0wnGh0st333, unusualcrow, Uriende, UristMcDorf, user424242420, Utmanarn, Vaaankas, valentfingerov, valquaint, Varen, Vasilis, VasilisThePikachu, veliebm, Velken, VelonacepsCalyxEggs, veprolet, VerinSenpai, veritable-calamity, Veritius, Vermidia, vero5123, verslebas, vexerot, vgskye, viceemargo, VigersRay, violet754, Visne, vitopigno, vitusveit, vlad, vlados1408, VMSolidus, vmzd, VoidMeticulous, voidnull000, volotomite, volundr-, Voomra, Vordenburg, vorkathbruh, Vortebo, vulppine, wachte1, wafehling, walksanatora, Warentan, WarMechanic, Watermelon914, weaversam8, wertanchik, whateverusername0, whatston3, widgetbeck, Will-Oliver-Br, Willhelm53, WilliamECrew, willicassi, Winkarst-cpu, wirdal, wixoaGit, WlarusFromDaSpace, Wolfkey-SomeoneElseTookMyUsername, Worldwaker, wrexbe, wtcwr68, xeri7, xkreksx, xprospero, xRiriq, xsainteer, YanehCheck, yathxyz, Ygg01, YotaXP, youarereadingthis, YoungThugSS14, Yousifb26, youtissoum, yunii, YuriyKiss, yuriykiss, zach-hill, Zadeon, Zalycon, zamp, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zero, ZeroDiamond, ZeWaka, zHonys, zionnBE, ZNixian, Zokkie, ZoldorfTheWizard, zonespace27, Zylofan, Zymem, zzylex +0-Anon, 0leshe, 0tito, 0x6273, 12rabbits, 1337dakota, 13spacemen, 154942, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 27alaing, 2DSiggy, 3nderall, 4310v343k, 4dplanner, 5tickman, 612git, 778b, 96flo, aaron, abadaba695, Ablankmann, abregado, Absolute-Potato, Absotively, achookh, Acruid, ActiveMammmoth, actually-reb, ada-please, adamsong, Adeinitas, adm2play, Admiral-Obvious-001, adrian, Adrian16199, Ady4ik, Aearo-Deepwater, Aerocrux, Aeshus, Aexolott, Aexxie, africalimedrop, afrokada, AftrLite, AgentSmithRadio, Agoichi, ahandleman, Ahion, aiden, aidenkrz, Aidenkrz, Aisu9, ajcm, AJCM-git, AjexRose, Alekshhh, alexalexmax, alexkar598, AlexMorgan3817, alexum418, alexumandxgabriel08x, Alice4267, Alithsko, Alkheemist, alliephante, ALMv1, Alpaccalypse, Alpha-Two, AlphaQwerty, Altoids1, amatwiedle, amylizzle, ancientpower, Andre19926, Andrew-Fall, AndrewEyeke, AndrewFenriz, AndreyCamper, anri, Anzarot121, ApolloVector, Appiah, april-gras, ar4ill, Arcane-Waffle, archee1, ArchPigeon, ArchRBX, areitpog, Arendian, areyouconfused, arimah, Arkanic, ArkiveDev, armoks, Arteben, ArthurMousatov, ArtisticRoomba, artur, Artxmisery, ArZarLordOfMango, as334, AshBats, AsikKEsel, AsnDen, asperger-sind, aspiringLich, astriloqua, Atakku, august-sun, AutoOtter, AverageNotDoingAnythingEnjoyer, avghdev, AwareFoxy, Awlod, Axionyxx, AzzyIsNotHere, azzyisnothere, B-Kirill, B3CKDOOR, baa14453, BackeTako, BadaBoomie, Bakke, BananaFlambe, Baptr0b0t, BarryNorfolk, BasedUser, bebr3ght, beck-thompson, beesterman, bellwetherlogic, ben, benbryant0, benev0, benjamin-burges, BGare, bhespiritu, bibbly, BigfootBravo, BIGZi0348, bingojohnson, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, blitzthesquishy, Blobadoodle, bloodrizer, Bloody2372, blueDev2, Boaz1111, BobdaBiscuit, BobTheSleder, boiled-water-tsar, Bokser815, bolantej, Booblesnoot42, Boolean-Buckeye, botanySupremist, brainfood1183, BramvanZijp, Brandon-Huu, breeplayx3, BriBrooo, BRINGit34, brndd, bryce0110, BubblegumBlue, buletsponge, buntobaggins, buunie099, bvelliquette, BWTCK, byondfuckery, c0rigin, c4llv07e, CaasGit, Caconym27, Calecute, Callmore, Camdot, cammusubi, capnsockless, CaptainMaru, captainsqrbeard, Carbonhell, Carolyn3114, Carou02, carteblanche4me, catdotjs, catlord, Catofquestionableethics, CatTheSystem, CawsForConcern, CDWimmer, Centronias, Chaboricks, chairbender, chaisftw, Chaoticaa, Charlese2, charlie, chartman, ChaseFlorom, chavonadelal, Cheackraze, CheddaCheez, cheesePizza2, CheesePlated, Chief-Engineer, chillyconmor, christhirtle, chromiumboy, Chronophylos, Chubbicous, Chubbygummibear, Ciac32, ciaran, citrea, civilCornball, claustro305, Clement-O, cloudyias, clyf, Clyybber, CMDR-Piboy314, cnv41, coco, cohanna, Cohnway, Cojoke-dot, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, Compilatron144, CookieMasterT, coolboy911, CoolioDudio, coolmankid12345, Coolsurf6, cooperwallace, corentt, CormosLemming, CrafterKolyan, CraftyRenter, crazybrain23, Crazydave91920, CrazyPhantom779, creadth, CrigCrag, CroilBird, Crotalus, CrudeWax, cryals, CrzyPotato, cubixthree, cutemoongod, Cyberboss, d34d10cc, DadeKuma, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, dan, dangerrevolution, daniel-cr, DanSAussieITS, Daracke, Darkie, david, DawBla, Daxxi3, dch-GH, ddeegan, de0rix, Deahaka, dean, DEATHB4DEFEAT, Deatherd, deathride58, debugok, Decappi, Decortex, Deeeeja, deepdarkdepths, DeepwaterCreations, Deerstop, degradka, Delete69, deltanedas, DenisShvalov, DerbyX, derek, dersheppard, Deserty0, Detintinto, DevilishMilk, devinschubert14, dexlerxd, dffdff2423, DieselMohawk, DieselMohawkTheSequel, digitalic, Dimastra, DinnerCalzone, DinoWattz, Disp-Dev, DisposableCrewmember42, dissidentbullet, DjfjdfofdjfjD, doc-michael, docnite, Doctor-Cpu, DogZeroX, dolgovmi, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, DR-DOCTOR-EVIL-EVIL, Dragonjspider, dragonryan06, drakewill-CRL, Drayff, dreamlyjack, DrEnzyme, dribblydrone, DrMelon, drongood12, DrSingh, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, DuckManZach, Duddino, dukevanity, duskyjay, Dutch-VanDerLinde, dvir001, dylanstrategie, dylanwhittingham, Dynexust, Easypoller, echo, EchoOfNothing, eclips_e, eden077, EEASAS, Efruit, efzapa, Ekkosangen, ElectroSR, elsie, elthundercloud, Elysium206, emberwinters, Emisse, emmafornash, EmoGarbage404, Endecc, EnrichedCaramel, Entvari, eoineoineoin, ephememory, eris, erohrs2, erorr404v1, Errant-4, ertanic, esguard, estacaoespacialpirata, eternally-confused, eugene, ewokswagger, exincore, exp111, f0x-n3rd, F1restar4, FacePluslll, Fahasor, FairlySadPanda, farrellka-dev, FATFSAAM2, Feluk6174, ficcialfaint, Fiftyllama, Fildrance, fillervk, FinnishPaladin, firenamefn, Firewars763, FirinMaLazors, Fishfish458, fl-oz, Flareguy, flashgnash, FlipBrooke, FluffiestFloof, FluffMe, FluidRock, flymo5678, foboscheshir, FoLoKe, fooberticus, ForestNoises, forgotmyotheraccount, forkeyboards, forthbridge, Fortune117, foxhorn, freeman2651, freeze2222, frobnic8, Froffy025, Fromoriss, froozigiusz, FrostMando, FrostRibbon, Fruitsalad, Funce, FungiFellow, FunkySphere, FunTust, Futuristic-OK, GalacticChimp, gamer3107, Gamewar360, gansulalan, GaussiArson, Gaxeer, gbasood, gcoremans, Geekyhobo, genderGeometries, GeneralGaws, Genkail, Gentleman-Bird, geraeumig, Ghagliiarghii, Git-Nivrak, githubuser508, GitHubUser53123, gituhabu, GlassEclipse, GnarpGnarp, GNF54, godisdeadLOL, goet, GoldenCan, Goldminermac, Golinth, golubgik, GoodWheatley, Gorox221, GR1231, gradientvera, graevy, GraniteSidewalk, GreaseMonk, greenrock64, GreyMario, GrownSamoyedDog, GTRsound, gusxyz, Gyrandola, h3half, hamurlik, Hanzdegloker, HappyRoach, happyrobot33, Hardly3D, harikattar, Hayden, he1acdvv, Hebi, Helix-ctrl, helm4142, Henry, HerCoyote23, Hi-Im-Shot, HighTechPuddle, Hitlinemoss, hiucko, hivehum, Hmeister-fake, Hmeister-real, Hobbitmax, hobnob, HoidC, Holinka4ever, holyssss, HoofedEar, Hoolny, hord-brayden, hoshizora-sayo, Hreno, Hrosts, htmlsystem, Huaqas, hubismal, Hugal31, Hyenh, hyperb1, hyperDelegate, hyphenationc, i-justuser-i, iaada, iacore, IamVelcroboy, Ian321, icekot8, icesickleone, iczero, iglov, IgorAnt028, igorsaux, ike709, illersaver, Illiux, Ilushkins33, Ilya246, IlyaElDunaev, imatsoup, IMCB, impubbi, imrenq, imweax, indeano, Injazz, Insineer, insoPL, IntegerTempest, Interrobang01, Intoxicating-Innocence, IProduceWidgets, itsmethom, Itzbenz, iztokbajcar, Jackal298, Jackrost, JackRyd3r, jacksonzck, JackspajfMain, Jacktastic09, Jackw2As, jacob, jamessimo, janekvap-havok, Jark255, Jarmer123, Jaskanbe, JasperJRoth, jbox144, JCGWE30, jerryimmouse, JerryImMouse, Jessetriesagain, jessicamaybe, JesterX666, Jewelots, Jezithyr, jicksaw, JiimBob, JimGamemaster, jimmy12or, JIPDawg, jjtParadox, jkwookee, jmcb, JohnGinnane, johnjjohn, johnku1, Jophire, Jopogrechkin, joshepvodka, JpegOfAFrog, jproads, JrInventor05, Jrpl, jukereise, juliangiebel, JustArt1m, JustCone14, justdie12, justin, justintether, JustinTrotter, JustinWinningham, justtne, K-Dynamic, k3yw, Kadeo64, Kaga-404, kaiserbirch, KaiShibaa, kalane15, kalanosh, KamTheSythe, Kanashi-Panda, katzenminer, kbailey-git, Keelin, Keer-Sar, KEEYNy, keikiru, Kelrak, kerisargit, keronshb, KIBORG04, KieueCaprie, Kimpes, kin98, KingFroozy, kira-er, kiri-yoshikage, Kirillcas, Kirus59, Kistras, Kit, Kit0vras, KittenColony, Kittygyat, klaypexx, kleinerstation13, Kmc2000, Ko4ergaPunk, kognise, kokoc9n, komunre, KonstantinAngelov, kontakt, korczoczek, kosticia, koteq, kotobdev, Kowlin, KrasnoshchekovPavel, Krosus777, Krunklehorn, Kryyto, Kupie, kxvvv, Kyoth25f, kyupolaris, kzhanik, LaCumbiaDelCoronavirus, lajolico, Lamrr, lanedon, LankLTE, laok233, lapatison, larryrussian, lawdog4817, Lazzi0706, leah, leander-0, leonardo-dabepis, leonidussaks, leonsfriedrich, LeoSantich, lettern, LetterN, Level10Cybermancer, LEVELcat, lever1209, LevitatingTree, Lgibb18, lgruthes, LightVillet, lilazero, liltenhead, linkbro1, linkuyx, Litraxx, little-meow-meow, LittleBuilderJane, LittleNorthStar, LittleNyanCat, lizelive, ljm862, lmsnoise, localcc, lokachop, lolman360, Lomcastar, Lordbrandon12, LordCarve, LordEclipse, lucas, LucasTheDrgn, luckyshotpictures, LudwigVonChesterfield, luegamer, luizwritescode, LukaSlade, luminight, lunarcomets, Lusatia, Luxeator, lvvova1, Lyndomen, lyroth001, lzimann, lzk228, M1tht1c, M3739, M4rchy-S, M87S, mac6na6na, MACMAN2003, Macoron, magicalus, magmodius, magnuscrowe, maland1, malchanceux, MaloTV, ManelNavola, manelnavola, Mangohydra, marboww, Markek1, MarkerWicker, marlyn, matt, Matz05, max, MaxNox7, maylokana, MDuch369, meara1179, meganerobot, MehimoNemo, Mehnix, MeltedPixel, memeproof, MendaxxDev, Menshin, Mephisto72, MerrytheManokit, Mervill, metalgearsloth, MetalSage, MFMessage, mhamsterr, michaelcu, micheel665, mifia, mikeysaurus, MilenVolf, MilonPL, Minemoder5000, Minty642, minus1over12, Mirino97, mirrorcult, misandrie, MishaUnity, MissKay1994, MisterImp, MisterMecky, Mith-randalf, Mixelz, mjarduk, MjrLandWhale, mkanke-real, MLGTASTICa, mnva0, moderatelyaware, modern-nm, mohamedwidar, mokiros, momo, Moneyl, monotheonist, Moomoobeef, moony, Morb0, MossyGreySlope, mqole, mr-bo-jangles, Mr0maks, MrFippik, MrPersival, mrrobdemo, mtrs163, muburu, MureixloI, murolem, murphyneko, musicmanvr, MWKane, Myakot, Myctai, N3X15, nabegator, nails-n-tape, Nairodian, Naive817, NakataRin, namespace-Memory, Nannek, NazrinNya, neborsh, neomoth, neutrino-laser, NickPowers43, nikitosych, nikthechampiongr, Nimfar11, ninruB, Nirnael, NIXC, nkokic, NkoKirkto, nmajask, noctyrnal, noelkathegod, noirogen, nok-ko, NonchalantNoob, NoobyLegion, Nopey, NoreUhh, not-gavnaed, notafet, notquitehadouken, notsodana, noudoit, noverd, Nox38, NuclearWinter, Nuggets219, nukashimika, nuke-haus, NULL882, nullarmo, nyeogmi, Nylux, Nyranu, Nyxilath, och-och, OctoRocket, OldDanceJacket, OliverOtter, onesch, OneZerooo0, OnsenCapy, OnyxTheBrave, opl-, Orange-Winds, OrangeMoronage9622, OrbitSystem07, Orsoniks, osjarw, Ostaf, othymer, OttoMaticode, Owai-Seek, packmore, PAFFhassoocks, paige404, paigemaeforrest, pali6, Palladinium, Pangogie, panzer-iv1, partyaddict, patrikturi, PaulRitter, pavlockblaine03, peccneck, Peptide90, peptron1, perryprog, PeterFuto, PetMudstone, pewter-wiz, PGrayCS, pgraycs, Pgriha, phantom-lily, pheenty, philingham, Phill101, Phooooooooooooooooooooooooooooooosphate, phunnyguy, PicklOH, PilgrimViis, Pill-U, pinkbat5, Piras314, Pireax, Pissachu, pissdemon, Pixel8-dev, PixeltheAertistContrib, PixelTheKermit, PJB3005, Plasmaguy, plinyvic, Plykiya, poeMota, pofitlo, pointer-to-null, Pok27, poklj, PolterTzi, PoorMansDreams, PopGamer45, portfiend, potato1234x, PotentiallyTom, PotRoastPiggy, Princess-Cheeseballs, ProfanedBane, Prole0, ProPandaBear, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykana, psykzz, PuceTint, pumkin69, PuroSlavKing, PursuitInAshes, Putnam3145, py01, Pyrovi, qrtDaniil, qrwas, Quantum-cross, quasr-9, quatre, QueerNB, QuietlyWhisper, qwerltaz, Radezolid, RadioMull, Radosvik, Radrark, Rainbeon, Rainfey, Raitononai, Ramlik, RamZ, randy10122, Rane, Ranger6012, Rapidgame7, ravage123321, rbertoche, RedBookcase, Redfire1331, Redict, RedlineTriad, redmushie, RednoWCirabrab, redspyy, ReeZer2, RemberBM, RemieRichards, RemTim, rene-descartes2021, Renlou, retequizzle, rewafflution, rhailrake, rhsvenson, rich-dunne, RieBi, riggleprime, RIKELOLDABOSS, rinary1, Rinkashikachi, riolume, rlebell33, RobbyTheFish, robinthedragon, Rockdtben, Rohesie, rok-povsic, rokudara-sen, rolfero, RomanNovo, rosieposieeee, Roudenn, router, ruddygreat, rumaks-xyz, RumiTiger, Ruzihm, rwrv, S1rFl0, S1ss3l, Saakra, Sadie-silly, saga3152, saintmuntzer, Salex08, sam, samgithubaccount, Samuka-C, SaphireLattice, SapphicOverload, sarahon, sativaleanne, SaveliyM360, sBasalto, ScalyChimp, ScarKy0, ScholarNZL, schrodinger71, scrato, Scribbles0, scrivoy, scruq445, scuffedjays, ScumbagDog, SeamLesss, Segonist, semensponge, sephtasm, ser1-1y, Serkket, sewerpig, SG6732, sh18rw, Shaddap1, ShadeAware, ShadowCommander, shadowtheprotogen546, shaeone, shampunj, shariathotpatrol, SharkSnake98, shibechef, Siginanto, signalsender, SignalWalker, siigiil, silicon14wastaken, Silverfur-underscore, Simyon264, sirdragooon, Sirionaut, SirWarock, Sk1tch, SkaldetSkaeg, Skarletto, skeeka-dev, skrybl, Skybailey-dev, skye, Skyedra, SlamBamActionman, slarticodefast, Slava0135, sleepyyapril, slimmslamm, Slyfox333, Smugman, SnappingOpossum, snebl, snicket, sniperchance, Snowni, snowsignal, SolidSyn, SolidusSnek, solstar2, SomegnihT, SonarZeBat, SonicHDC, SoulFN, SoulSloth, Soundwavesghost, soupkilove, southbridge-fur, sowelipililimute, Soydium, SpaceLizard24, SpaceLizardSky, SpaceManiac, SpaceRox1244, SpaceyLady, Spangs04, spanky-spanky, Sparlight, spartak, SpartanKadence, spderman3333, SpeltIncorrectyl, Spessmann, SphiraI, SplinterGP, spoogemonster, sporekto, sporkyz, ssdaniel24, stalengd, stanberytrask, Stanislav4ix, StanTheCarpenter, starbuckss14, Stealthbomber16, Steffo99, stellar-novas, stewie523, stomf, Stop-Signs, stopbreaking, stopka-html, StrawberryMoses, Stray-Pyramid, strO0pwafel, Strol20, StStevens, Subversionary, sunbear-dev, SuperGDPWYL, superjj18, Supernorn, SurrealShibe, SweetAplle, SweptWasTaken, SyaoranFox, Sybil, SYNCHRONIC, Szunti, t, Tainakov, takemysoult, taonewt, tap, TaralGit, Taran, taurie, Tayrtahn, tday93, teamaki, TeenSarlacc, TekuNut, telavivgamers, telyonok, temm1ie, TemporalOroboros, tentekal, terezi4real, Terraspark4941, texcruize, Tezzaide, TGODiamond, TGRCdev, tgrkzus, thanosdegraf, ThatGuyUSA, ThatOneGoblin25, thatrandomcanadianguy, TheArturZh, TheBlueYowie, thecopbennet, TheCze, TheDarkElites, thedraccx, TheEmber, theexetron, TheFlyingSentry, thefoty, TheGrimbeeper, TheIntoxicatedCat, thekilk, themias, theomund, TheProNoob678, TherapyGoth, ThereDrD0, TheSecondLord, TheShuEd, thetolbean, thevinter, TheWaffleJesus, thinbug0, ThunderBear2006, timothyteakettle, TimrodDX, timurjavid, tin-man-tim, TiniestShark, Titian3, tk-a369, tkdrg, tmtmtl30, ToastEnjoyer, Toby222, TokenStyle, Tollhouse, Toly65, tom-leys, tomasalves8, Tomeno, Tonydatguy, topy, tornado-technology, TornadoTechnology, tosatur, TotallyLemon, ToxicSonicFan04, Tr1bute, travis-g-reid, treytipton, TriviaSolari, trixxedbit, TrixxedHeart, tropicalhibi, truepaintgit, Truoizys, Tryded, TsjipTsjip, tuchila-adi-bogdan, Tunguso4ka, TurboTrackerss14, TVK-04, tyashley, Tyler-IN, TytosB, Tyzemol, UbaserB, Uberration, ubis1, UBlueberry, uhbg, UKNOWH, UltimateJester, Unbelievable-Salmon, underscorex5, UnicornOnLSD, Unisol, Unkn0wnGh0st333, unusualcrow, Uriende, UristMcDorf, user424242420, Utmanarn, Vaaankas, valentfingerov, valquaint, Varen, Vasilis, VasilisThePikachu, veliebm, Velken, VelonacepsCalyxEggs, veprolet, VerinSenpai, veritable-calamity, Veritius, Vermidia, vero5123, verslebas, vexerot, vgskye, viceemargo, VigersRay, violet754, Visne, vitopigno, vitusveit, vlad, vlados1408, VMSolidus, vmzd, VoidMeticulous, voidnull000, volotomite, volundr-, Voomra, Vordenburg, vorkathbruh, Vortebo, vulppine, wachte1, wafehling, walksanatora, Warentan, WarMechanic, Watermelon914, weaversam8, wertanchik, whateverusername0, whatston3, widgetbeck, Will-Oliver-Br, Willhelm53, WilliamECrew, willicassi, Winkarst-cpu, wirdal, wixoaGit, WlarusFromDaSpace, Wolfkey-SomeoneElseTookMyUsername, Worldwaker, wrexbe, wtcwr68, xeri7, xkreksx, xprospero, xRiriq, xsainteer, YanehCheck, yathxyz, Ygg01, YotaXP, youarereadingthis, YoungThugSS14, Yousifb26, youtissoum, yunii, yuriykiss, YuriyKiss, zach-hill, Zadeon, Zalycon, zamp, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zero, ZeroDiamond, ZeWaka, zHonys, zionnBE, ZNixian, Zokkie, ZoldorfTheWizard, zonespace27, Zylofan, Zymem, zzylex From 983457cfe332f77b473c48c7db6e067753ed1733 Mon Sep 17 00:00:00 2001 From: qwerltaz <69696513+qwerltaz@users.noreply.github.com> Date: Sun, 18 Jan 2026 10:37:12 +0100 Subject: [PATCH 011/603] close pull requests from forks' stable and staging (#42456) * close on master workflow: add stable and staging to blacklist, tweak wording, update commented out text * keep main and develop in blacklist * critical grammar and formatting * argh how even (bring back old version of commented-out section) * thats not the right word * only close when head repo is a fork from github docs: https://docs.github.com/en/webhooks/webhook-events-and-payloads?actionType=opened#pull_request --- .github/workflows/close-master-pr.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/close-master-pr.yml b/.github/workflows/close-master-pr.yml index 42e512d556f..4a1f02c3a72 100644 --- a/.github/workflows/close-master-pr.yml +++ b/.github/workflows/close-master-pr.yml @@ -3,19 +3,20 @@ name: Close PRs on master on: pull_request_target: types: [ opened, ready_for_review ] - + jobs: run: runs-on: ubuntu-latest - if: ${{github.head_ref == 'master' || github.head_ref == 'main' || github.head_ref == 'develop'}} - - steps: + if: ${{(github.head_ref == 'master' || github.head_ref == 'main' || github.head_ref == 'develop' || github.head_ref == 'stable' || github.head_ref == 'staging') + && github.event.pull_request.head.repo.fork}} + + steps: - uses: superbrothers/close-pull-request@v3 with: - comment: "Thank you for your contribution! It appears you created a PR from your master branch, this is [something you should avoid doing](https://jmeridth.com/posts/do-not-issue-pull-requests-from-your-master-branch/), and thus this PR has been automatically closed. \n \n We suggest you follow [our git usage documentation](https://docs.spacestation14.com/en/general-development/setup/git-for-the-ss14-developer.html). \n \n You can move your current work from the master branch to another branch by following [these commands](https://ohshitgit.com/#accidental-commit-master). And then you may recreate your PR using the new branch." + comment: "Thank you for your contribution! It appears you created a pull request from the master branch or another main development branch. This is [something you should avoid doing](https://jmeridth.com/posts/do-not-issue-pull-requests-from-your-master-branch/), and thus this pull request has been automatically closed. \n \n We suggest you follow [our git usage documentation](https://docs.spacestation14.com/en/general-development/setup/git-for-the-ss14-developer.html). \n \n You can move your current work to another branch by following [these commands](https://ohshitgit.com/#accidental-commit-master). Then, you may recreate your pull request using the new branch." + + # If you prefer to just comment on the pr and not close it, uncomment the below and comment the above - # If you prefer to just comment on the pr and not close it, uncomment the bellow and comment the above - # - uses: actions/github-script@v7 # with: # script: | @@ -23,5 +24,4 @@ jobs: # issue_number: ${{ github.event.number }}, # owner: context.repo.owner, # repo: context.repo.repo, - # body: "Thank you for contributing to the Space Station 14 repository. Unfortunately, it looks like you submitted your pull request from the master branch. We suggest you follow [our git usage documentation](https://docs.spacestation14.com/en/general-development/setup/git-for-the-ss14-developer.html) \n\n You can move your current work from the master branch to another branch by doing `git branch Date: Sun, 18 Jan 2026 15:29:17 -0500 Subject: [PATCH 012/603] Let vox eat trash again (#42503) --- Resources/Prototypes/Body/Species/vox.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Prototypes/Body/Species/vox.yml b/Resources/Prototypes/Body/Species/vox.yml index e25d1739559..e58f8c314cb 100644 --- a/Resources/Prototypes/Body/Species/vox.yml +++ b/Resources/Prototypes/Body/Species/vox.yml @@ -295,6 +295,12 @@ - type: entity parent: [ OrganBaseStomach, OrganVoxInternal, OrganVoxMetabolizer ] id: OrganVoxStomach + components: + - type: Stomach + specialDigestible: + tags: + - Trash + isSpecialDigestibleExclusive: false - type: entity parent: [ OrganBaseLiver, OrganSpriteHumanInternal, OrganVoxInternal, OrganVoxMetabolizer ] From 400523d814cce07478af596a0dc4a294732889d1 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 18 Jan 2026 20:46:02 +0000 Subject: [PATCH 013/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 49125c1f0db..01ee5458bad 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: TiniestShark - changes: - - message: Reptilians now have Mask/Helmet displacements. Snoots are no longer smushed. - type: Add - id: 8912 - time: '2025-09-03T16:45:18.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39351 - author: TiniestShark changes: - message: Added unique tail sprites to Hard/Softsuits for reptilians! (Wagging @@ -3921,3 +3914,10 @@ id: 9415 time: '2026-01-17T20:24:42.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42372 +- author: sowelipililimute + changes: + - message: Vox can eat trash again. + type: Fix + id: 9416 + time: '2026-01-18T20:44:50.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42503 From f068cd885b176d1759c93b80b4f6e88e5054ab9a Mon Sep 17 00:00:00 2001 From: pathetic meowmeow Date: Sun, 18 Jan 2026 16:08:15 -0500 Subject: [PATCH 014/603] Fix inventory contents not being dropped on gibbing (#42504) --- Content.Shared/Inventory/InventorySystem.Equip.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Content.Shared/Inventory/InventorySystem.Equip.cs b/Content.Shared/Inventory/InventorySystem.Equip.cs index f12eb8a210d..1541f90e6a5 100644 --- a/Content.Shared/Inventory/InventorySystem.Equip.cs +++ b/Content.Shared/Inventory/InventorySystem.Equip.cs @@ -2,6 +2,7 @@ using Content.Shared.Armor; using Content.Shared.Clothing.Components; using Content.Shared.DoAfter; +using Content.Shared.Gibbing; using Content.Shared.Hands; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; @@ -43,6 +44,8 @@ private void InitializeEquip() SubscribeLocalEvent(OnEntRemoved); SubscribeAllEvent(OnUseSlot); + + SubscribeLocalEvent(OnBeingGibbed); } private void OnEntRemoved(EntityUid uid, InventoryComponent component, EntRemovedFromContainerMessage args) @@ -562,4 +565,12 @@ public void TriggerHandContactInteraction(EntityUid uid) _interactionSystem.DoContactInteraction(uid, item); } } + + private void OnBeingGibbed(Entity ent, ref BeingGibbedEvent args) + { + foreach (var item in GetHandOrInventoryEntities((ent, null, ent))) + { + args.Giblets.Add(item); + } + } } From 0f28c568a188955ffcfa6d6d60e6640b2cbc343c Mon Sep 17 00:00:00 2001 From: pathetic meowmeow Date: Sun, 18 Jan 2026 16:25:34 -0500 Subject: [PATCH 015/603] Make sure simplemobs ghost on movement when dead (#42506) --- Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml b/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml index 597674af59e..d95be361a06 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml @@ -106,3 +106,5 @@ - type: MobPrice price: 150 - type: FloatingVisuals + - type: GhostOnMove + mustBeDead: true From 72fedafef5a85e51004569a11694742c6001cff5 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 18 Jan 2026 21:26:35 +0000 Subject: [PATCH 016/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 01ee5458bad..46ef611980c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: TiniestShark - changes: - - message: Added unique tail sprites to Hard/Softsuits for reptilians! (Wagging - animation not supported) - type: Add - id: 8913 - time: '2025-09-03T16:45:49.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/35842 - author: TrixxedHeart & Flareguy changes: - message: Three new tails for Vox. @@ -3921,3 +3913,10 @@ id: 9416 time: '2026-01-18T20:44:50.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42503 +- author: sowelipililimute + changes: + - message: Gibbing now drops your inventory contents again. + type: Fix + id: 9417 + time: '2026-01-18T21:25:27.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42504 From fa0e98e6e18fc90cd55dfa8f5cc43cb6f22135f5 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 18 Jan 2026 21:43:05 +0000 Subject: [PATCH 017/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 46ef611980c..27245e3dab2 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: TrixxedHeart & Flareguy - changes: - - message: Three new tails for Vox. - type: Add - id: 8914 - time: '2025-09-03T18:05:48.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39083 - author: MissKay1994 changes: - message: Interns will no longer be hired infinitely @@ -3920,3 +3913,11 @@ id: 9417 time: '2026-01-18T21:25:27.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42504 +- author: sowelipililimute + changes: + - message: Vent critters, rat king, etc. now ghost when dead instead of requiring + the player to /ghost. + type: Fix + id: 9418 + time: '2026-01-18T21:41:57.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42506 From d53ec7f6a5d1ace53ae59ca63ea041da87af8305 Mon Sep 17 00:00:00 2001 From: Vasilis The Pikachu Date: Sun, 18 Jan 2026 23:17:32 +0100 Subject: [PATCH 018/603] Error fix --- Resources/Maps/Shuttles/mothership.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/Resources/Maps/Shuttles/mothership.yml b/Resources/Maps/Shuttles/mothership.yml index 9092ffb9e6e..f2b2a652a3b 100644 --- a/Resources/Maps/Shuttles/mothership.yml +++ b/Resources/Maps/Shuttles/mothership.yml @@ -160,8 +160,6 @@ entities: - type: GasTileOverlay - type: RadiationGridResistance - type: ExplosionAirtightGrid - - type: TileHistory - chunkHistory: {} - proto: AirlockGlassShuttleXenoborgLocked entities: - uid: 107 From 9dd31220b70e82b030c8a6af5aad500001f2b808 Mon Sep 17 00:00:00 2001 From: Thinbug <101073555+Thinbug0@users.noreply.github.com> Date: Sun, 18 Jan 2026 20:01:28 -0300 Subject: [PATCH 019/603] Magic 9 Ball (#42189) * hoping i didnt forget anythin * thingiess i forgor * fixies * first half of fixies * other half * sprite changes * more proper outline on the sprites * making the outline a tad more visible again * making it tiny * readding the yaml for the magic 9 ball * sprite update so its less flat and more shapey --- .../predictions/magic-9-ball-answers.ftl | 21 ++++++ .../VendingMachines/Inventories/games.yml | 1 + Resources/Prototypes/Datasets/predictions.yml | 5 ++ .../Entities/Markers/Spawners/Random/toy.yml | 1 + .../Prototypes/Entities/Objects/Fun/orbs.yml | 70 ++++++++++++++++++ .../Objects/Fun/Balls/magic9ball.rsi/icon.png | Bin 0 -> 282 bytes .../Fun/Balls/magic9ball.rsi/inhand-left.png | Bin 0 -> 469 bytes .../Fun/Balls/magic9ball.rsi/inhand-right.png | Bin 0 -> 471 bytes .../Fun/Balls/magic9ball.rsi/meta.json | 22 ++++++ 9 files changed, 120 insertions(+) create mode 100644 Resources/Locale/en-US/predictions/magic-9-ball-answers.ftl create mode 100644 Resources/Prototypes/Datasets/predictions.yml create mode 100644 Resources/Textures/Objects/Fun/Balls/magic9ball.rsi/icon.png create mode 100644 Resources/Textures/Objects/Fun/Balls/magic9ball.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Fun/Balls/magic9ball.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Fun/Balls/magic9ball.rsi/meta.json diff --git a/Resources/Locale/en-US/predictions/magic-9-ball-answers.ftl b/Resources/Locale/en-US/predictions/magic-9-ball-answers.ftl new file mode 100644 index 00000000000..25eee1ac233 --- /dev/null +++ b/Resources/Locale/en-US/predictions/magic-9-ball-answers.ftl @@ -0,0 +1,21 @@ +# Positive +magic-9-ball-1 = Yes +magic-9-ball-2 = YES!!!! +magic-9-ball-3 = Without a doubt +magic-9-ball-4 = It is certain +magic-9-ball-5 = Outlook good +magic-9-ball-6 = Positive +magic-9-ball-7 = Absolutely + +# Negative +magic-9-ball-8 = No +magic-9-ball-9 = NOOO!!!!!! +magic-9-ball-10 = No no no no no no no +magic-9-ball-11 = Nuh uh +magic-9-ball-12 = Nah +magic-9-ball-13 = Negative +magic-9-ball-14 = Absolutely not + +# Neutral +magic-9-ball-15 = Perchance +magic-9-ball-16 = I dunno diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/games.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/games.yml index 0fe813178ff..5dde9bdb4e7 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/games.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/games.yml @@ -16,6 +16,7 @@ PaperCNCSheet: 6 MysteryFigureBox: 2 BooksBag: 3 + Magic9Ball: 2 contrabandInventory: Basketball: 1 FoodSnackBoritos: 3 diff --git a/Resources/Prototypes/Datasets/predictions.yml b/Resources/Prototypes/Datasets/predictions.yml new file mode 100644 index 00000000000..0cef76937e0 --- /dev/null +++ b/Resources/Prototypes/Datasets/predictions.yml @@ -0,0 +1,5 @@ +- type: localizedDataset + id: Magic9Ball + values: + prefix: magic-9-ball- + count: 16 diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/toy.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/toy.yml index 9ec48b32bb2..d852cadfd85 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/toy.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/toy.yml @@ -294,6 +294,7 @@ - id: NukeDiskFake - id: DiceBag - id: SpectralLocator + - id: Magic9Ball - id: BarberScissors - id: SprayFlowerPin - id: ClothingShoesSkates diff --git a/Resources/Prototypes/Entities/Objects/Fun/orbs.yml b/Resources/Prototypes/Entities/Objects/Fun/orbs.yml index d1554531869..86d645ee85a 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/orbs.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/orbs.yml @@ -104,3 +104,73 @@ transmitFrequencyId: SurveillanceCamera - type: WiredNetworkConnection - type: SurveillanceCameraMonitor + +- type: entity + parent: BaseItem + id: Magic9Ball + name: magic 9 ball + description: An endless source of wisdom... Now with a speaker included! + components: + - type: Sprite + sprite: Objects/Fun/Balls/magic9ball.rsi + state: icon + - type: Item + size: Tiny + - type: TriggerOnActivate + - type: TriggerOnSignal + - type: UseDelay + delay: 5 + - type: UseDelayOnTrigger + - type: UseDelayTriggerCondition + - type: SpeakOnTrigger + pack: Magic9Ball + - type: Speech + speechSounds: Pai + - type: DeviceNetwork + deviceNetId: Wireless + receiveFrequencyId: BasicDevice + - type: WirelessNetworkConnection + range: 20 + - type: DeviceLinkSink + ports: + - Trigger + - type: SolutionContainerManager + solutions: + magic9ball: + maxVol: 20 + reagents: + - ReagentId: Ethanol + Quantity: 20 + - type: Damageable + damageContainer: Inorganic + - type: DamageOnLand + damage: + types: + Blunt: 10 + - type: EmitSoundOnLand + sound: + collection: GlassBreak + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 20 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: GlassBreak + params: + volume: -4 + - !type:SpillBehavior + solution: magic9ball + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: PhysicalComposition + materialComposition: + Plastic: 50 diff --git a/Resources/Textures/Objects/Fun/Balls/magic9ball.rsi/icon.png b/Resources/Textures/Objects/Fun/Balls/magic9ball.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4c7d10101cc5218c66f9a15680065535f02079a3 GIT binary patch literal 282 zcmV+#0pPx#)Ja4^R9J=W)3Hv&Fc8M^e=6qE1yH3tMP4sYl`RWP1_lOiNK7bVs0d3VNOfwvkx4pXBkrJ6mTk#u)S8WvPX2+iIF70LF2oD2n8)q~?+oLij$;IsHlV$GaQp zEIaSr)BP47pg+YAkhHl?(Y&X6{&EIO7W2 zlhg`5j{21JdnOTo>pab4&&=i%5&O*O0s;Teb%rf`S@P( zyrt_X@a7%s^!H084z0{@ytn`;!pP9EX8k4`8xuB#O-&ts#>XGnHoQ4}Fe;}#V5ipk z<@^lk`&iXBtKXStzaVV&!l<=O9i>*Mj+wRW-HpG0T5et6dj0iIi#|bD zL7=6}FKb?1?ErNQh^n9e>r>Lsm|ZsK6W6+KzNwRAxoE0;Kz=~n>)Tgv9AVk9yFS=H z*=A3H`SsmXx16`SS8ZLBFonK(q`?av+jT9*!TL! zAvOi3h~4M-Gpx=i|M+x{UFO%C{RtZ*7#N;?wp81k&d{IrwZ2qN(f4w$-vNoolTgTe~ HDWM4fh1-_)p`>TAH{Z0R8_BKh*!37LT3b>XrKmWY5@3BOX*Oe^O$FIN5z36l$ z+jV`P=!Y*sN3MR2)|*w3VzeScUVKWFo*ct0-qyPHtLk^Zvp2{(P<}d1XVd(%@&%yKN{bg}kDmu4cebSkRpfV%ozj2}F(yzSdu34Jpuql<#dnV&ju`sc{ zdZElh+l-hmx;T4T``c{{w0od#X3X4tQC81CFF Date: Sun, 18 Jan 2026 23:17:39 +0000 Subject: [PATCH 020/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 637714974d2..20b109f15c1 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -3896,3 +3896,10 @@ id: 9418 time: '2026-01-18T21:41:57.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42506 +- author: Thinbug0 + changes: + - message: Peek at the future with this new Magic 9 Ball! + type: Add + id: 9419 + time: '2026-01-18T23:16:32.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42189 From 820fdca6efa9ea4c8390a5b9b8bb783b2759791b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=81da?= Date: Sun, 18 Jan 2026 23:05:53 -0600 Subject: [PATCH 021/603] Round-start equipment rebalance: Medical (#42423) * loadouts * lockers * Vending machines * death to chemistry. long live chemistry. * tweaks * actually remove them * chemistry hand label * Revert "death to chemistry. long live chemistry." This reverts commit cd2fe4832267d87e7c4bda9c2b62c7a80f2c33c0. # Conflicts: # Resources/Prototypes/Catalog/Cargo/cargo_vending.yml # Resources/Prototypes/Catalog/Fills/Crates/vending.yml # Resources/Prototypes/Catalog/VendingMachines/Inventories/chemvend.yml # Resources/Prototypes/Entities/Objects/Specific/Service/vending_machine_restock.yml * remove vending machine bottles --------- Co-authored-by: iaada --- .../en-US/preferences/loadout-groups.ftl | 3 - .../Prototypes/Catalog/Fills/Items/belt.yml | 30 ++- .../Catalog/Fills/Lockers/heads.yml | 16 +- .../Catalog/Fills/Lockers/medical.yml | 104 ++++---- .../VendingMachines/Inventories/chemdrobe.yml | 28 +-- .../VendingMachines/Inventories/genedrobe.yml | 8 +- .../VendingMachines/Inventories/medical.yml | 64 +++-- .../VendingMachines/Inventories/medidrobe.yml | 49 ++-- .../Specific/Chemistry/chemistry-bottles.yml | 37 ++- .../Jobs/Medical/chief_medical_officer.yml | 17 +- .../Loadouts/Jobs/Medical/medical_doctor.yml | 61 +---- .../Loadouts/Jobs/Medical/role_timers.yml | 39 +++ .../{ => LoadoutGroups}/loadout_groups.yml | 229 ------------------ .../Loadouts/LoadoutGroups/medical.yml | 220 +++++++++++++++++ .../Loadouts/Miscellaneous/trinkets.yml | 7 +- .../Loadouts/RoleLoadouts/medical.yml | 78 ++++++ .../{ => RoleLoadouts}/role_loadouts.yml | 81 ------- .../Loadouts/loadouts_chameleon.yml | 0 .../Prototypes/Roles/Jobs/Medical/chemist.yml | 6 - .../Jobs/Medical/chief_medical_officer.yml | 1 - .../Roles/Jobs/Medical/medical_doctor.yml | 4 - .../Roles/Jobs/Medical/medical_intern.yml | 4 - .../Roles/Jobs/Medical/paramedic.yml | 4 - 23 files changed, 531 insertions(+), 559 deletions(-) create mode 100644 Resources/Prototypes/Loadouts/Jobs/Medical/role_timers.yml rename Resources/Prototypes/Loadouts/{ => LoadoutGroups}/loadout_groups.yml (85%) create mode 100644 Resources/Prototypes/Loadouts/LoadoutGroups/medical.yml create mode 100644 Resources/Prototypes/Loadouts/RoleLoadouts/medical.yml rename Resources/Prototypes/Loadouts/{ => RoleLoadouts}/role_loadouts.yml (86%) delete mode 100644 Resources/Prototypes/Loadouts/loadouts_chameleon.yml diff --git a/Resources/Locale/en-US/preferences/loadout-groups.ftl b/Resources/Locale/en-US/preferences/loadout-groups.ftl index b91678848cb..e05572082eb 100644 --- a/Resources/Locale/en-US/preferences/loadout-groups.ftl +++ b/Resources/Locale/en-US/preferences/loadout-groups.ftl @@ -175,7 +175,6 @@ loadout-group-security-cadet-jumpsuit = Security cadet jumpsuit loadout-group-security-star = Security Star # Medical -loadout-group-medical-gloves = Medical gloves loadout-group-medical-mask = Medical mask loadout-group-chief-medical-officer-head = Chief Medical Officer head @@ -202,8 +201,6 @@ loadout-group-paramedic-jumpsuit = Paramedic jumpsuit loadout-group-paramedic-outerclothing = Paramedic outer clothing loadout-group-paramedic-shoes = Paramedic shoes -loadout-group-medical-glasses = Medical glasses - # Wildcards loadout-group-reporter-jumpsuit = Reporter jumpsuit diff --git a/Resources/Prototypes/Catalog/Fills/Items/belt.yml b/Resources/Prototypes/Catalog/Fills/Items/belt.yml index 1a06d09f3a6..ebbcd05992b 100644 --- a/Resources/Prototypes/Catalog/Fills/Items/belt.yml +++ b/Resources/Prototypes/Catalog/Fills/Items/belt.yml @@ -96,8 +96,8 @@ - id: WireBrush - type: entity - id: ClothingBeltMedicalFilled parent: ClothingBeltMedical + id: ClothingBeltMedicalFilled suffix: Filled components: - type: EntityTableContainerFill @@ -105,27 +105,37 @@ storagebase: !type:AllSelector children: - id: Brutepack - amount: 2 - id: Ointment - - id: Bloodpack - id: Gauze - - id: EmergencyMedipen #You never know what people are going to latejoin into + # Reagents reflect the bottles in CoreMedicineReagentBottleTable + - id: ChemistryBottleSaline + - id: ChemistryBottleBicaridine + - id: ChemistryBottleDexalin + - id: ChemistryBottleDylovene + - id: ChemistryBottleHyronalin + - id: ChemistryBottleKelotane + - id: ChemistryBottleEpinephrine # A power item for medical players that feels thematic and worth stealing + - id: PillCanisterTricordrazine - type: entity - id: ClothingBeltMedicalEMTFilled parent: ClothingBeltMedicalEMT - suffix: Paramedic,Filled + id: ClothingBeltMedicalEMTFilled + suffix: Paramedic, Filled components: - type: EntityTableContainerFill containers: storagebase: !type:AllSelector children: - - id: Brutepack - - id: Ointment - id: Bloodpack + amount: 2 - id: Gauze - - id: EmergencyMedipen #You never know what people are going to latejoin into - amount: 3 + # Reagents focused on emergency response rather than outright healing + - id: ChemistryBottleInaprovaline + amount: 2 + - id: ChemistryBottleHaloperidol + - id: ChemistryBottleEthylredoxrazine + - id: ChemistryBottleIpecac + - id: ChemistryBottleCharcoal - type: entity id: ClothingBeltPlantFilled diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml index 23ee84bd3c7..7074f657964 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml @@ -203,19 +203,17 @@ id: LockerFillChiefMedicalOfficerNoHardsuit table: !type:AllSelector children: - - id: BoxEncryptionKeyMedical - - id: ClothingBackpackDuffelSurgeryFilled - id: ClothingEyesHudMedical - - id: ClothingHandsGlovesNitrile - - id: ClothingHeadsetAltMedical - - id: ClothingMaskSterile - - id: DoorRemoteMedical + - id: ClothingBeltMedicalFilled - id: HandheldCrewMonitor - id: Hypospray - - id: BoxCMOCircuitboards - - id: MedkitFilled - - id: RubberStampCMO - id: MedTekCartridge + # Standard command gear + - id: RubberStampCMO + - id: ClothingHeadsetAltMedical + - id: DoorRemoteMedical + - id: BoxEncryptionKeyMedical + - id: BoxCMOCircuitboards # Hardsuit table, used for suit storage as well - type: entityTable diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml b/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml index 67eeb837aa1..b38b9009837 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/medical.yml @@ -1,19 +1,20 @@ +# Medical supply lockers + - type: entityTable id: LockerFillMedicine table: !type:AllSelector children: - - id: BoxSyringe - - id: ChemistryBottleEpinephrine - - id: Brutepack - amount: !type:ConstantNumberSelector - value: 2 - - id: Ointment - amount: !type:ConstantNumberSelector - value: 2 - - id: Bloodpack - amount: !type:ConstantNumberSelector - value: 2 - - id: Gauze + - !type:NestedSelector + tableId: CoreMedicineReagentBottleTable + rolls: 2 + - !type:GroupSelector # Basic topicals + rolls: 7 + children: + - id: Brutepack + - id: Ointment + - id: Bloodpack + - id: Gauze + weight: 0.5 - type: entity parent: LockerMedicine @@ -36,35 +37,18 @@ entity_storage: !type:NestedSelector tableId: LockerFillMedicine +# Medical role lockers + - type: entityTable id: LockerFillMedicalDoctor table: !type:AllSelector children: - - id: HandheldHealthAnalyzer - prob: 0.6 - - id: ClothingHeadMirror - prob: 0.1 - - id: ClothingHandsGlovesLatex - - id: ClothingHeadsetMedical - id: ClothingEyesHudMedical - - !type:GroupSelector - children: - - id: ClothingHeadHatSurgcapGreen - weight: 0.1 - - id: ClothingHeadHatSurgcapPurple - weight: 0.05 - - id: ClothingHeadHatSurgcapBlue - weight: 0.90 - - !type:GroupSelector - children: - - id: UniformScrubsColorBlue - weight: 0.5 - - id: UniformScrubsColorGreen - weight: 0.1 - - id: UniformScrubsColorPurple - weight: 0.05 - - id: ClothingMaskSterile + - id: ClothingBeltMedicalFilled - id: JetInjector + - id: HandheldHealthAnalyzer + - id: ChemistryBottleLaughter # Widely recognized as the best medicine :o) + prob: 0.01 - type: entity parent: LockerMedical @@ -91,20 +75,25 @@ id: LockerFillChemistry table: !type:AllSelector children: - - id: BoxSyringe - - id: BoxBeaker - - id: BoxBeaker - prob: 0.3 - - id: BoxPillCanister - - id: BoxBottle - - id: BoxVial - - id: PlasmaChemistryVial + - id: ClothingEyesGlassesChemical - id: ChemBag - - id: ClothingHandsGlovesLatex - - id: ClothingHeadsetMedical - - id: ClothingMaskSterile + - id: Dropper - id: HandLabeler - prob: 0.5 + - id: BarSpoon # Should be replaced by a stirring tool with medical theming, like a glass rod + - id: PlasmaChemistryVial + - !type:AllSelector # The wonderful world of chemical storage + children: + - id: BoxSyringe + - id: BoxBottle + - id: BoxVial + - id: BoxBeaker + - id: BoxPillCanister + - !type:GroupSelector # Remind chemists once in a while of alternate storage options + prob: 0.2 + children: + - id: SprayBottle + - id: Bucket + - id: DrinkCartonMilk - type: entity parent: LockerChemistry @@ -120,20 +109,17 @@ id: LockerFillParamedic table: !type:AllSelector children: - - id: ClothingOuterHardsuitVoidParamed - - id: ClothingOuterCoatParamedicWB - - id: ClothingHeadHatParamedicsoft - - id: ClothingOuterWinterPara - - id: ClothingUniformJumpsuitParamedic - - id: ClothingUniformJumpskirtParamedic - id: ClothingEyesHudMedical - - id: ClothingHandsGlovesLatex - - id: ClothingHeadsetMedical - - id: ClothingMaskSterile - - id: HandheldGPSBasic - - id: MedkitFilled - prob: 0.3 + - id: ClothingOuterHardsuitVoidParamed + - id: ClothingBeltMedicalEMTFilled - id: JetInjector + - id: HandheldHealthAnalyzer + - id: BoxBodyBag + - !type:GroupSelector + children: + - id: RollerBedSpawnFolded + - id: CheapRollerBedSpawnFolded + - id: EmergencyRollerBedSpawnFolded - type: entity parent: LockerParamedic diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/chemdrobe.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/chemdrobe.yml index 43e60a3a865..af49193a0f1 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/chemdrobe.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/chemdrobe.yml @@ -1,19 +1,19 @@ - type: vendingMachineInventory id: ChemDrobeInventory startingInventory: - ClothingUniformJumpsuitChemistry: 2 - ClothingUniformJumpskirtChemistry: 2 - ClothingOuterCoatLabChem: 2 - ClothingShoesColorWhite: 2 - ClothingBackpackChemistry: 2 - ClothingBackpackSatchelChemistry: 2 - ClothingBackpackDuffelChemistry: 2 - ChemBag: 2 - HandLabeler: 3 - ClothingBeltMedical: 2 - ClothingHandsGlovesLatex: 2 - ClothingHeadsetMedical: 2 - ClothingOuterWinterChem: 2 - ClothingEyesGlassesChemical: 2 + # Essential + ClothingEyesGlassesChemical: 1 + # Optional + ClothingHeadsetMedical: 1 + ClothingBackpackChemistry: 1 + ClothingBackpackSatchelChemistry: 1 + ClothingBackpackDuffelChemistry: 1 + ChemBag: 1 + ClothingUniformJumpsuitChemistry: 1 + ClothingUniformJumpskirtChemistry: 1 + ClothingOuterCoatLabChem: 1 + ClothingOuterWinterChem: 1 + ClothingHandsGlovesLatex: 1 + ClothingShoesColorWhite: 1 contrabandInventory: ToyFigurineChemist: 1 diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/genedrobe.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/genedrobe.yml index 84a5f9a79b2..1d50f7feecc 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/genedrobe.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/genedrobe.yml @@ -1,11 +1,11 @@ - type: vendingMachineInventory id: GeneDrobeInventory startingInventory: + ClothingBackpackGenetics: 2 + ClothingBackpackSatchelGenetics: 2 + ClothingBackpackDuffelGenetics: 2 ClothingUniformJumpsuitGenetics: 2 ClothingUniformJumpskirtGenetics: 2 - ClothingShoesColorWhite: 2 ClothingOuterCoatLabGene: 2 ClothingOuterWinterGen: 2 - ClothingBackpackGenetics: 2 - ClothingBackpackSatchelGenetics: 2 - ClothingBackpackDuffelGenetics: 2 + ClothingShoesColorWhite: 2 diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/medical.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/medical.yml index 639bc55f87c..34830b9dc14 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/medical.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/medical.yml @@ -11,67 +11,65 @@ PillCanisterTricordrazine: 2 contrabandInventory: PillCanisterRandom: 1 - PowerCellSmall: 2 +# All access version. Should reflect the stock of NanoMedInventory, but less powerful - type: vendingMachineInventory id: NanoMedCivilianWallInventory startingInventory: HandheldHealthAnalyzer: 1 - AloeCream: 2 - Gauze: 3 + Tourniquet: 3 Brutepack: 3 - Ointment: 2 + AloeCream: 3 # Currently just a reskin of Ointment but it's something Bloodpack: 3 - ChemistryBottleEpinephrine: 3 + ChemistryBottleInaprovaline: 3 Syringe: 3 - PillCanisterTricordrazine: 2 + PillTricordrazine: 10 contrabandInventory: PillCanisterRandom: 1 - PowerCellSmall: 2 +# Core medical supply vendor - type: vendingMachineInventory id: NanoMedPlusInventory startingInventory: + # Medical Essential Gear + ClothingBeltMedicalFilled: 2 + # Shared Essential HandheldHealthAnalyzer: 3 - Gauze: 5 - Brutepack: 5 - Ointment: 5 - Bloodpack: 5 - Tourniquet: 2 - ChemistryBottleEpinephrine: 3 - ChemistryBottleBicaridine: 1 - Syringe: 5 - JetInjector: 2 + JetInjector: 3 + # Paramed Essential Gear + ClothingBeltMedicalEMTFilled: 1 + EmergencyRollerBedSpawnFolded: 1 + BoxBodyBag: 1 + # Extra Expendable Gear + Gauze: 4 + Brutepack: 4 + Ointment: 4 + Bloodpack: 4 + # Optional / Situational Gear BoxBottle: 3 - PillCanisterTricordrazine: 3 - PillCanisterIron: 1 - PillCanisterCopper: 1 - PillCanisterPotassiumIodide: 1 - SyringeIpecac: 1 - ClothingEyesHudMedical: 2 - ClothingEyesEyepatchHudMedical: 2 + Defibrillator: 2 # Easily shared between several people + Syringe: 4 + PillCanisterTricordrazine: 4 + ClothingOuterHospitalGown: 2 # Not a popular item, so less stock contrabandInventory: PillCanisterRandom: 3 PillSpaceDrugs: 3 FoodApple: 1 +# All access version. Should reflect NanoMedCivilianWallInventory, but with more stock - type: vendingMachineInventory id: NanoMedCivilianInventory startingInventory: HandheldHealthAnalyzer: 3 - AloeCream: 3 - Gauze: 5 + Tourniquet: 5 Brutepack: 5 - Ointment: 4 + AloeCream: 5 Bloodpack: 5 - Tourniquet: 1 - ChemistryBottleEpinephrine: 3 + ChemistryBottleInaprovaline: 5 Syringe: 5 - BoxBottle: 3 - PillCanisterTricordrazine: 2 - PillCanisterIron: 1 - PillCanisterCopper: 1 - PillCanisterPotassiumIodide: 1 + PillTricordrazine: 10 + PillIron: 5 + PillCopper: 5 contrabandInventory: PillCanisterRandom: 1 PillSpaceDrugs: 3 diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/medidrobe.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/medidrobe.yml index 03655aece43..f4c83e028e5 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/medidrobe.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/medidrobe.yml @@ -1,27 +1,36 @@ - type: vendingMachineInventory id: MediDrobeInventory startingInventory: - ClothingBackpackDuffelMedical: 4 - ClothingBackpackMedical: 4 - ClothingBackpackSatchelMedical: 4 - ClothingUniformJumpsuitMedicalDoctor: 4 - ClothingUniformJumpskirtMedicalDoctor: 4 - ClothingBeltMedical: 4 - ClothingHeadHatBeretMedic: 4 - ClothingHeadNurseHat: 4 - ClothingOuterCoatLab: 4 - ClothingShoesColorWhite: 4 - ClothingHandsGlovesLatex: 4 - ClothingHandsGlovesNitrile: 2 - ClothingHeadsetMedical: 4 + # Essential Medical Clothing + ClothingEyesHudMedical: 2 + ClothingEyesEyepatchHudMedical: 2 + # Optional Clothing + ClothingHeadHatBeretMedic: 2 + ClothingHeadNurseHat: 2 + ClothingHeadHatParamedicsoft: 1 + ClothingHeadHatSurgcapGreen: 2 + ClothingHeadHatSurgcapBlue: 2 + ClothingHeadHatSurgcapPurple: 2 + ClothingMaskSterile: 2 + ClothingHeadsetMedical: 2 + ClothingBackpackMedical: 2 + ClothingBackpackDuffelMedical: 2 + ClothingBackpackSatchelMedical: 2 + ClothingUniformJumpsuitMedicalDoctor: 2 + ClothingUniformJumpskirtMedicalDoctor: 2 + UniformScrubsColorGreen: 2 + UniformScrubsColorBlue: 2 + UniformScrubsColorPurple: 2 + ClothingUniformJumpsuitParamedic: 1 + ClothingUniformJumpskirtParamedic: 1 + ClothingOuterCoatLab: 2 ClothingOuterWinterMed: 2 - ClothingOuterHospitalGown: 5 - UniformScrubsColorGreen: 4 - UniformScrubsColorBlue: 4 - UniformScrubsColorPurple: 4 - ClothingHeadHatSurgcapGreen: 4 - ClothingHeadHatSurgcapBlue: 4 - ClothingHeadHatSurgcapPurple: 4 + ClothingOuterCoatParamedicWB: 1 + ClothingOuterWinterPara: 1 + ClothingHandsGlovesLatex: 2 + ClothingHandsGlovesNitrile: 2 + ClothingShoesColorBlue: 2 + ClothingShoesColorWhite: 2 ClothingShoesBootsWinterMed: 2 contrabandInventory: ClothingUniformJumpskirtOfLife: 1 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml index 4831cfc22f5..1f302e0afff 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml @@ -904,6 +904,21 @@ - ReagentId: Ultravasculine Quantity: 30 +- type: entity + parent: BaseChemistryBottleFilled + id: ChemistryBottleCharcoal + suffix: charcoal + components: + - type: Label + currentLabel: reagent-name-charcoal + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: Charcoal + Quantity: 30 + # Other bottles - type: entity @@ -1056,6 +1071,21 @@ - ReagentId: Toxin Quantity: 30 +- type: entity + parent: BaseChemistryBottleFilled + id: ChemistryBottleLaughter + suffix: laughter + components: + - type: Label + currentLabel: reagent-name-laughter + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: Laughter + Quantity: 30 + # Base reagent bottles - type: entity id: ChemistryBottleAluminium @@ -1389,13 +1419,12 @@ children: - id: ChemistryBottleBicaridine - id: ChemistryBottleKelotane - - id: ChemistryBottleDermaline - id: ChemistryBottleDylovene - id: ChemistryBottleInaprovaline - id: ChemistryBottleDexalin - - id: ChemistryBottleDexalinPlus - id: ChemistryBottleSaline - id: ChemistryBottleTricordrazine + - id: ChemistryBottleHyronalin - type: entityTable id: SpecialtyMedicineReagentBottleTable @@ -1409,6 +1438,8 @@ - id: ChemistryBottleTricordrazine - id: ChemistryBottleTranexamicAcid - id: ChemistryBottleOculine + - id: ChemistryBottleCharcoal + - id: ChemistryBottleLaughter - type: entityTable id: AllMedicineReagentBottlesTable @@ -1464,3 +1495,5 @@ - id: ChemistryBottleTranexamicAcid - id: ChemistryBottleTricordrazine - id: ChemistryBottleUltravasculine + - id: ChemistryBottleCharcoal + - id: ChemistryBottleLaughter diff --git a/Resources/Prototypes/Loadouts/Jobs/Medical/chief_medical_officer.yml b/Resources/Prototypes/Loadouts/Jobs/Medical/chief_medical_officer.yml index 14442470835..5679a5d67b0 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Medical/chief_medical_officer.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Medical/chief_medical_officer.yml @@ -1,13 +1,3 @@ -# For mantles -- type: loadoutEffectGroup - id: MasterCMO - effects: - - !type:JobRequirementLoadoutEffect - requirement: - !type:RoleTimeRequirement - role: JobChiefMedicalOfficer - time: 20h - # Jumpsuit - type: loadout id: ChiefMedicalOfficerJumpsuit @@ -52,12 +42,7 @@ neck: ClothingNeckMantleCMO effects: - !type:GroupLoadoutEffect - proto: MasterCMO - -- type: startingGear - id: ChiefMedicalOfficerMantle - equipment: - neck: ClothingNeckMantleCMO + proto: CMOJourneymanTimer # Outer clothing - type: loadout diff --git a/Resources/Prototypes/Loadouts/Jobs/Medical/medical_doctor.yml b/Resources/Prototypes/Loadouts/Jobs/Medical/medical_doctor.yml index b5e5cc10e80..16b8ce2796b 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Medical/medical_doctor.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Medical/medical_doctor.yml @@ -1,41 +1,9 @@ -# Senior Time -- type: loadoutEffectGroup - id: SeniorPhysician - effects: - - !type:JobRequirementLoadoutEffect - requirement: - !type:RoleTimeRequirement - role: JobChemist - time: 6h - - !type:JobRequirementLoadoutEffect - requirement: - !type:RoleTimeRequirement - role: JobMedicalDoctor - time: 6h - - !type:JobRequirementLoadoutEffect - requirement: - !type:DepartmentTimeRequirement - department: Medical - time: 60h - -# Other Timers - -- type: loadoutEffectGroup - id: MedicalHeadMirrorTimer - effects: - - !type:JobRequirementLoadoutEffect - requirement: - !type:RoleTimeRequirement - role: JobMedicalDoctor - time: 30h - # Head - - type: loadout id: SeniorPhysicianBeret effects: - !type:GroupLoadoutEffect - proto: SeniorPhysician + proto: MedicalExpertTimer equipment: head: ClothingHeadHatBeretSeniorPhysician @@ -43,7 +11,7 @@ id: MedicalHeadMirror effects: - !type:GroupLoadoutEffect - proto: MedicalHeadMirrorTimer + proto: MedicalJourneymanTimer equipment: head: ClothingHeadMirror @@ -87,7 +55,7 @@ id: SeniorPhysicianJumpsuit effects: - !type:GroupLoadoutEffect - proto: SeniorPhysician + proto: MedicalExpertTimer equipment: jumpsuit: ClothingUniformJumpsuitSeniorPhysician @@ -95,7 +63,7 @@ id: SeniorPhysicianJumpskirt effects: - !type:GroupLoadoutEffect - proto: SeniorPhysician + proto: MedicalExpertTimer equipment: jumpsuit: ClothingUniformJumpskirtSeniorPhysician @@ -140,7 +108,7 @@ id: SeniorPhysicianLabCoat effects: - !type:GroupLoadoutEffect - proto: SeniorPhysician + proto: MedicalExpertTimer equipment: outerClothing: ClothingOuterCoatLabSeniorPhysician @@ -160,29 +128,12 @@ id: SeniorPhysicianPDA effects: - !type:GroupLoadoutEffect - proto: SeniorPhysician + proto: MedicalExpertTimer equipment: id: SeniorPhysicianPDA -# Gloves -- type: loadout - id: NitrileGloves - equipment: - gloves: ClothingHandsGlovesNitrile - #Masks - type: loadout id: SterileMask equipment: mask: ClothingMaskSterile - -#Eyewear -- type: loadout - id: MedicalHud - equipment: - eyes: ClothingEyesHudMedical - -- type: loadout - id: MedicalEyePatchHud - equipment: - eyes: ClothingEyesEyepatchHudMedical diff --git a/Resources/Prototypes/Loadouts/Jobs/Medical/role_timers.yml b/Resources/Prototypes/Loadouts/Jobs/Medical/role_timers.yml new file mode 100644 index 00000000000..29af74b2132 --- /dev/null +++ b/Resources/Prototypes/Loadouts/Jobs/Medical/role_timers.yml @@ -0,0 +1,39 @@ +# Top level timer for master medical players +- type: loadoutEffectGroup + id: MedicalExpertTimer + effects: + - !type:JobRequirementLoadoutEffect + requirement: + !type:RoleTimeRequirement + role: JobChemist + time: 6h + - !type:JobRequirementLoadoutEffect + requirement: + !type:RoleTimeRequirement + role: JobMedicalDoctor + time: 6h + - !type:JobRequirementLoadoutEffect + requirement: + !type:DepartmentTimeRequirement + department: Medical + time: 60h + +# Mid-level timer for players who have a solid amount of experience +- type: loadoutEffectGroup + id: MedicalJourneymanTimer + effects: + - !type:JobRequirementLoadoutEffect + requirement: + !type:RoleTimeRequirement + role: JobMedicalDoctor + time: 20h + +# Mid-level timer for CMO +- type: loadoutEffectGroup + id: CMOJourneymanTimer + effects: + - !type:JobRequirementLoadoutEffect + requirement: + !type:RoleTimeRequirement + role: JobChiefMedicalOfficer + time: 20h diff --git a/Resources/Prototypes/Loadouts/loadout_groups.yml b/Resources/Prototypes/Loadouts/LoadoutGroups/loadout_groups.yml similarity index 85% rename from Resources/Prototypes/Loadouts/loadout_groups.yml rename to Resources/Prototypes/Loadouts/LoadoutGroups/loadout_groups.yml index ed25ef08297..f4d262242c6 100644 --- a/Resources/Prototypes/Loadouts/loadout_groups.yml +++ b/Resources/Prototypes/Loadouts/LoadoutGroups/loadout_groups.yml @@ -1342,235 +1342,6 @@ - EmergencyOxygenSecurity - LoadoutSpeciesVoxNitrogen -# Medical -- type: loadoutGroup - id: ChiefMedicalOfficerHead - name: loadout-group-chief-medical-officer-head - minLimit: 0 - loadouts: - - ChiefMedicalOfficerBeret - - CMOMedicalHeadMirror - -- type: loadoutGroup - id: ChiefMedicalOfficerJumpsuit - name: loadout-group-chief-medical-officer-jumpsuit - loadouts: - - ChiefMedicalOfficerJumpsuit - - ChiefMedicalOfficerJumpskirt - - ChiefMedicalOfficerTurtleneckJumpsuit - - ChiefMedicalOfficerTurtleneckJumpskirt - -- type: loadoutGroup - id: ChiefMedicalOfficerOuterClothing - name: loadout-group-chief-medical-officer-outerclothing - minLimit: 0 - loadouts: - - ChiefMedicalOfficerLabCoat - - ChiefMedicalOfficerWintercoat - -- type: loadoutGroup - id: ChiefMedicalOfficerNeck - name: loadout-group-chief-medical-officer-neck - minLimit: 0 - loadouts: - - ChiefMedicalOfficerCloak - - ChiefMedicalOfficerMantle - -- type: loadoutGroup - id: ChiefMedicalOfficerShoes - name: loadout-group-chief-medical-officer-shoes - loadouts: - - BrownShoes - - MedicalWinterBoots - -- type: loadoutGroup - id: ChiefMedicalOfficerJobTrinkets - name: loadout-group-jobtrinkets - minLimit: 0 - loadouts: - - LizardPlushieChiefMedicalOfficer - -- type: loadoutGroup - id: MedicalDoctorHead - name: loadout-group-medical-doctor-head - minLimit: 0 - loadouts: - - MedicalBeret - - SeniorPhysicianBeret - - MedicalHeadMirror - - BlueSurgeryCap - - GreenSurgeryCap - - PurpleSurgeryCap - - NurseHat - -- type: loadoutGroup - id: MedicalDoctorJumpsuit - name: loadout-group-medical-doctor-jumpsuit - loadouts: - - MedicalDoctorJumpsuit - - MedicalDoctorJumpskirt - - SeniorPhysicianJumpsuit - - SeniorPhysicianJumpskirt - - MedicalBlueScrubs - - MedicalGreenScrubs - - MedicalPurpleScrubs - -- type: loadoutGroup - id: MedicalDoctorOuterClothing - name: loadout-group-medical-doctor-outerclothing - minLimit: 0 - loadouts: - - RegularLabCoat - - MedicalDoctorWintercoat - - SeniorPhysicianLabCoat - -- type: loadoutGroup - id: MedicalBackpack - name: loadout-group-medical-doctor-backpack - loadouts: - - MedicalDoctorBackpack - - MedicalDoctorSatchel - - MedicalDoctorDuffel - -- type: loadoutGroup - id: MedicalShoes - name: loadout-group-medical-doctor-shoes - loadouts: - - WhiteShoes - - MedicalWinterBoots - -- type: loadoutGroup - id: MedicalDoctorPDA - name: loadout-group-medical-doctor-id - loadouts: - - MedicalDoctorPDA - - SeniorPhysicianPDA - -- type: loadoutGroup - id: MedicalGloves - name: loadout-group-medical-gloves - minLimit: 0 - loadouts: - - LatexGloves - - NitrileGloves - -- type: loadoutGroup - id: MedicalMask - name: loadout-group-medical-mask - minLimit: 0 - loadouts: - - SterileMask - -- type: loadoutGroup - id: MedicalDoctorJobTrinkets - name: loadout-group-jobtrinkets - minLimit: 0 - loadouts: - - LizardPlushieMedicalDoctor - -- type: loadoutGroup - id: MedicalInternJumpsuit - name: loadout-group-medical-intern-jumpsuit - loadouts: - - WhiteJumpsuit - - WhiteJumpskirt - -- type: loadoutGroup - id: MedicalInternJobTrinkets - name: loadout-group-jobtrinkets - minLimit: 0 - loadouts: - - LizardPlushieMedicalIntern - -- type: loadoutGroup - id: ChemistJumpsuit - name: loadout-group-chemist-jumpsuit - loadouts: - - ChemistJumpsuit - - ChemistJumpskirt - -- type: loadoutGroup - id: ChemistOuterClothing - name: loadout-group-chemist-outerclothing - minLimit: 0 - loadouts: - - RegularLabCoat - - ChemistLabCoat - - ChemistWintercoat - -- type: loadoutGroup - id: ChemistBackpack - name: loadout-group-chemist-backpack - loadouts: - - ChemistBackpack - - ChemistSatchel - - ChemistDuffel - -- type: loadoutGroup - id: ChemistJobTrinkets - name: loadout-group-jobtrinkets - minLimit: 0 - loadouts: - - LizardPlushieChemist - -- type: loadoutGroup - id: ParamedicHead - name: loadout-group-paramedic-head - minLimit: 0 - loadouts: - - ParamedicHead - -- type: loadoutGroup - id: ParamedicJumpsuit - name: loadout-group-paramedic-jumpsuit - loadouts: - - ParamedicJumpsuit - - ParamedicJumpskirt - -- type: loadoutGroup - id: ParamedicOuterClothing - name: loadout-group-paramedic-outerclothing - minLimit: 0 - loadouts: - - ParamedicWindbreaker - - ParamedicWintercoat - -- type: loadoutGroup - id: ParamedicShoes - name: loadout-group-paramedic-shoes - loadouts: - - BlueShoes - - WhiteShoes - - MedicalWinterBoots - -- type: loadoutGroup - id: ParamedicJobTrinkets - name: loadout-group-jobtrinkets - minLimit: 0 - loadouts: - - LizardPlushieParamedic - -- type: loadoutGroup - id: MedicalEyewear - name: loadout-group-medical-glasses - minLimit: 0 - loadouts: - - MedicalHud - - MedicalEyePatchHud - - Glasses - - GlassesJamjar - - GlassesJensen - -- type: loadoutGroup - id: SurvivalMedical - name: loadout-group-survival-medical - minLimit: 2 - hidden: true - loadouts: - - EmergencyNitrogenMedical - - EmergencyOxygenMedical - - LoadoutSpeciesVoxNitrogen - # Wildcards - type: loadoutGroup id: ReporterJumpsuit diff --git a/Resources/Prototypes/Loadouts/LoadoutGroups/medical.yml b/Resources/Prototypes/Loadouts/LoadoutGroups/medical.yml new file mode 100644 index 00000000000..5cb77dce1e8 --- /dev/null +++ b/Resources/Prototypes/Loadouts/LoadoutGroups/medical.yml @@ -0,0 +1,220 @@ +# Generic + +- type: loadoutGroup + id: MedicalMask + name: loadout-group-medical-mask + minLimit: 0 + loadouts: + - SterileMask + +- type: loadoutGroup + id: MedicalBackpack + name: loadout-group-medical-doctor-backpack + loadouts: + - MedicalDoctorBackpack + - MedicalDoctorSatchel + - MedicalDoctorDuffel + +- type: loadoutGroup + id: MedicalShoes + name: loadout-group-medical-doctor-shoes + loadouts: + - WhiteShoes + - MedicalWinterBoots + +- type: loadoutGroup + id: SurvivalMedical + name: loadout-group-survival-medical + minLimit: 2 + hidden: true + loadouts: + - EmergencyNitrogenMedical + - EmergencyOxygenMedical + - LoadoutSpeciesVoxNitrogen + +# Chief Medical Officer + +- type: loadoutGroup + id: ChiefMedicalOfficerHead + name: loadout-group-chief-medical-officer-head + minLimit: 0 + loadouts: + - ChiefMedicalOfficerBeret + - CMOMedicalHeadMirror + +- type: loadoutGroup + id: ChiefMedicalOfficerJumpsuit + name: loadout-group-chief-medical-officer-jumpsuit + loadouts: + - ChiefMedicalOfficerJumpsuit + - ChiefMedicalOfficerJumpskirt + - ChiefMedicalOfficerTurtleneckJumpsuit + - ChiefMedicalOfficerTurtleneckJumpskirt + +- type: loadoutGroup + id: ChiefMedicalOfficerOuterClothing + name: loadout-group-chief-medical-officer-outerclothing + minLimit: 0 + loadouts: + - ChiefMedicalOfficerLabCoat + - ChiefMedicalOfficerWintercoat + +- type: loadoutGroup + id: ChiefMedicalOfficerNeck + name: loadout-group-chief-medical-officer-neck + minLimit: 0 + loadouts: + - ChiefMedicalOfficerCloak + - ChiefMedicalOfficerMantle + +- type: loadoutGroup + id: ChiefMedicalOfficerShoes + name: loadout-group-chief-medical-officer-shoes + loadouts: + - BrownShoes + - MedicalWinterBoots + +- type: loadoutGroup + id: ChiefMedicalOfficerJobTrinkets + name: loadout-group-jobtrinkets + minLimit: 0 + loadouts: + - LizardPlushieChiefMedicalOfficer + +# Medical Doctor + +- type: loadoutGroup + id: MedicalDoctorHead + name: loadout-group-medical-doctor-head + minLimit: 0 + loadouts: + - MedicalBeret + - SeniorPhysicianBeret + - MedicalHeadMirror + - BlueSurgeryCap + - GreenSurgeryCap + - PurpleSurgeryCap + - NurseHat + +- type: loadoutGroup + id: MedicalDoctorJumpsuit + name: loadout-group-medical-doctor-jumpsuit + loadouts: + - MedicalDoctorJumpsuit + - MedicalDoctorJumpskirt + - SeniorPhysicianJumpsuit + - SeniorPhysicianJumpskirt + - MedicalBlueScrubs + - MedicalGreenScrubs + - MedicalPurpleScrubs + +- type: loadoutGroup + id: MedicalDoctorOuterClothing + name: loadout-group-medical-doctor-outerclothing + minLimit: 0 + loadouts: + - RegularLabCoat + - MedicalDoctorWintercoat + - SeniorPhysicianLabCoat + +- type: loadoutGroup + id: MedicalDoctorPDA + name: loadout-group-medical-doctor-id + loadouts: + - MedicalDoctorPDA + - SeniorPhysicianPDA + +- type: loadoutGroup + id: MedicalDoctorJobTrinkets + name: loadout-group-jobtrinkets + minLimit: 0 + loadouts: + - LizardPlushieMedicalDoctor + +# Medical Intern + +- type: loadoutGroup + id: MedicalInternJumpsuit + name: loadout-group-medical-intern-jumpsuit + loadouts: + - WhiteJumpsuit + - WhiteJumpskirt + +- type: loadoutGroup + id: MedicalInternJobTrinkets + name: loadout-group-jobtrinkets + minLimit: 0 + loadouts: + - LizardPlushieMedicalIntern + +# Chemist + +- type: loadoutGroup + id: ChemistJumpsuit + name: loadout-group-chemist-jumpsuit + loadouts: + - ChemistJumpsuit + - ChemistJumpskirt + +- type: loadoutGroup + id: ChemistOuterClothing + name: loadout-group-chemist-outerclothing + minLimit: 0 + loadouts: + - RegularLabCoat + - ChemistLabCoat + - ChemistWintercoat + +- type: loadoutGroup + id: ChemistBackpack + name: loadout-group-chemist-backpack + loadouts: + - ChemistBackpack + - ChemistSatchel + - ChemistDuffel + +- type: loadoutGroup + id: ChemistJobTrinkets + name: loadout-group-jobtrinkets + minLimit: 0 + loadouts: + - LizardPlushieChemist + +# Paramedic + +- type: loadoutGroup + id: ParamedicHead + name: loadout-group-paramedic-head + minLimit: 0 + loadouts: + - ParamedicHead + +- type: loadoutGroup + id: ParamedicJumpsuit + name: loadout-group-paramedic-jumpsuit + loadouts: + - ParamedicJumpsuit + - ParamedicJumpskirt + +- type: loadoutGroup + id: ParamedicOuterClothing + name: loadout-group-paramedic-outerclothing + minLimit: 0 + loadouts: + - ParamedicWindbreaker + - ParamedicWintercoat + +- type: loadoutGroup + id: ParamedicShoes + name: loadout-group-paramedic-shoes + loadouts: + - BlueShoes + - WhiteShoes + - MedicalWinterBoots + +- type: loadoutGroup + id: ParamedicJobTrinkets + name: loadout-group-jobtrinkets + minLimit: 0 + loadouts: + - LizardPlushieParamedic diff --git a/Resources/Prototypes/Loadouts/Miscellaneous/trinkets.yml b/Resources/Prototypes/Loadouts/Miscellaneous/trinkets.yml index 3642300ba7b..4e03b12c82c 100644 --- a/Resources/Prototypes/Loadouts/Miscellaneous/trinkets.yml +++ b/Resources/Prototypes/Loadouts/Miscellaneous/trinkets.yml @@ -441,11 +441,8 @@ - type: loadout id: TowelColorLightBlue effects: - - !type:JobRequirementLoadoutEffect - requirement: - !type:DepartmentTimeRequirement - department: Medical - time: 100h + - !type:GroupLoadoutEffect + proto: MedicalExpertTimer storage: back: - TowelColorLightBlue diff --git a/Resources/Prototypes/Loadouts/RoleLoadouts/medical.yml b/Resources/Prototypes/Loadouts/RoleLoadouts/medical.yml new file mode 100644 index 00000000000..1cac8b94b90 --- /dev/null +++ b/Resources/Prototypes/Loadouts/RoleLoadouts/medical.yml @@ -0,0 +1,78 @@ +## Role Loadouts + +- type: roleLoadout + id: JobChiefMedicalOfficer + groups: + - GroupTankHarness + - ChiefMedicalOfficerHead + - MedicalMask + - ChiefMedicalOfficerJumpsuit + - MedicalBackpack + - ChiefMedicalOfficerOuterClothing + - ChiefMedicalOfficerNeck + - ChiefMedicalOfficerShoes + - Glasses + - SurvivalMedical + - Trinkets + - ChiefMedicalOfficerJobTrinkets + - GroupSpeciesBreathToolMedical + +- type: roleLoadout + id: JobMedicalDoctor + groups: + - GroupTankHarness + - MedicalDoctorHead + - MedicalMask + - MedicalDoctorJumpsuit + - MedicalBackpack + - MedicalDoctorOuterClothing + - MedicalShoes + - MedicalDoctorPDA + - Glasses + - SurvivalMedical + - Trinkets + - MedicalDoctorJobTrinkets + - GroupSpeciesBreathToolMedical + +- type: roleLoadout + id: JobMedicalIntern + groups: + - GroupTankHarness + - MedicalInternJumpsuit + - MedicalBackpack + - Glasses + - SurvivalMedical + - Trinkets + - MedicalInternJobTrinkets + - GroupSpeciesBreathToolMedical + +- type: roleLoadout + id: JobChemist + groups: + - GroupTankHarness + - MedicalMask + - ChemistJumpsuit + - ChemistBackpack + - ChemistOuterClothing + - MedicalShoes + - Glasses + - SurvivalMedical + - Trinkets + - ChemistJobTrinkets + - GroupSpeciesBreathToolMedical + +- type: roleLoadout + id: JobParamedic + groups: + - GroupTankHarness + - ParamedicHead + - MedicalMask + - ParamedicJumpsuit + - MedicalBackpack + - ParamedicOuterClothing + - ParamedicShoes + - Glasses + - SurvivalMedical + - Trinkets + - ParamedicJobTrinkets + - GroupSpeciesBreathToolMedical diff --git a/Resources/Prototypes/Loadouts/role_loadouts.yml b/Resources/Prototypes/Loadouts/RoleLoadouts/role_loadouts.yml similarity index 86% rename from Resources/Prototypes/Loadouts/role_loadouts.yml rename to Resources/Prototypes/Loadouts/RoleLoadouts/role_loadouts.yml index 98bc279cbbd..026cadfa463 100644 --- a/Resources/Prototypes/Loadouts/role_loadouts.yml +++ b/Resources/Prototypes/Loadouts/RoleLoadouts/role_loadouts.yml @@ -432,87 +432,6 @@ - SecurityCadetJobTrinkets - GroupSpeciesBreathToolSecurity -# Medical -- type: roleLoadout - id: JobChiefMedicalOfficer - groups: - - GroupTankHarness - - ChiefMedicalOfficerHead - - MedicalMask - - ChiefMedicalOfficerJumpsuit - - MedicalGloves - - MedicalBackpack - - ChiefMedicalOfficerOuterClothing - - ChiefMedicalOfficerNeck - - ChiefMedicalOfficerShoes - - MedicalEyewear - - SurvivalMedical - - Trinkets - - ChiefMedicalOfficerJobTrinkets - - GroupSpeciesBreathToolMedical - -- type: roleLoadout - id: JobMedicalDoctor - groups: - - GroupTankHarness - - MedicalDoctorHead - - MedicalMask - - MedicalDoctorJumpsuit - - MedicalGloves - - MedicalBackpack - - MedicalDoctorOuterClothing - - MedicalShoes - - MedicalDoctorPDA - - MedicalEyewear - - SurvivalMedical - - Trinkets - - MedicalDoctorJobTrinkets - - GroupSpeciesBreathToolMedical - -- type: roleLoadout - id: JobMedicalIntern - groups: - - GroupTankHarness - - MedicalInternJumpsuit - - MedicalBackpack - - MedicalEyewear - - SurvivalMedical - - Trinkets - - MedicalInternJobTrinkets - - GroupSpeciesBreathToolMedical - -- type: roleLoadout - id: JobChemist - groups: - - GroupTankHarness - - MedicalMask - - ChemistJumpsuit - - MedicalGloves - - ChemistBackpack - - ChemistOuterClothing - - MedicalShoes - - SurvivalMedical - - Trinkets - - ChemistJobTrinkets - - GroupSpeciesBreathToolMedical - -- type: roleLoadout - id: JobParamedic - groups: - - GroupTankHarness - - ParamedicHead - - MedicalMask - - ParamedicJumpsuit - - MedicalGloves - - MedicalBackpack - - ParamedicOuterClothing - - ParamedicShoes - - MedicalEyewear - - SurvivalMedical - - Trinkets - - ParamedicJobTrinkets - - GroupSpeciesBreathToolMedical - # Wildcards - type: roleLoadout id: JobReporter diff --git a/Resources/Prototypes/Loadouts/loadouts_chameleon.yml b/Resources/Prototypes/Loadouts/loadouts_chameleon.yml deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml b/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml index 784ba814033..6f861790152 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml @@ -20,12 +20,6 @@ equipment: id: ChemistryPDA ears: ClothingHeadsetMedical - belt: ChemBag - pocket1: HandLabeler - eyes: ClothingEyesGlassesChemical - #storage: - #back: - #- Stuff - type: chameleonOutfit id: ChemistChameleonOutfit diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml index f67041a713b..5abd370503f 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml @@ -40,7 +40,6 @@ equipment: id: CMOPDA ears: ClothingHeadsetCMO - belt: ClothingBeltMedicalFilled storage: back: - Flash diff --git a/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml b/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml index a41e95d400d..f012f251972 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml @@ -24,10 +24,6 @@ id: DoctorGear equipment: ears: ClothingHeadsetMedical - belt: ClothingBeltMedicalFilled - #storage: - #back: - #- Stuff - type: chameleonOutfit id: MedicalDoctorChameleonOutfit diff --git a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml index 9c1c41da2bc..cc96b6bee22 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml @@ -22,11 +22,7 @@ shoes: ClothingShoesColorWhite id: MedicalInternPDA ears: ClothingHeadsetMedical - belt: ClothingBeltMedicalFilled pocket2: BookMedicalReferenceBook - #storage: - #back: - #- Stuff - type: chameleonOutfit id: MedicalInternChameleonOutfit diff --git a/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml b/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml index da71ac0367f..4ef5f08e4d0 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml @@ -21,10 +21,6 @@ equipment: id: ParamedicPDA ears: ClothingHeadsetMedical - belt: ClothingBeltMedicalEMTFilled - storage: - back: - - EmergencyRollerBedSpawnFolded - type: chameleonOutfit id: ParamedicChameleonOutfit From 1e573a87198461d406c7a912ef022a6e0ba586b4 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 19 Jan 2026 05:22:57 +0000 Subject: [PATCH 022/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 20b109f15c1..a6889386eb4 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -3903,3 +3903,12 @@ id: 9419 time: '2026-01-18T23:16:32.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42189 +- author: aada + changes: + - message: Items given to the medical department round start have been significantly + rebalanced. In particular, players no longer spawn with their tools and must + get them from a locker or vending machine. + type: Tweak + id: 9420 + time: '2026-01-19T05:21:50.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42423 From 76c09a6b1a53eeb216af6dd1678239b693c25558 Mon Sep 17 00:00:00 2001 From: DDDragoni <38265528+DDeegan@users.noreply.github.com> Date: Mon, 19 Jan 2026 01:02:22 -0800 Subject: [PATCH 023/603] Thieving beacons automatically set coordinates when unfolded. (#42520) Thieving beacons set coordinates when unfolded --- Content.Shared/Thief/Systems/ThiefBeaconSystem.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Content.Shared/Thief/Systems/ThiefBeaconSystem.cs b/Content.Shared/Thief/Systems/ThiefBeaconSystem.cs index bff33cb7811..9cf68148737 100644 --- a/Content.Shared/Thief/Systems/ThiefBeaconSystem.cs +++ b/Content.Shared/Thief/Systems/ThiefBeaconSystem.cs @@ -57,6 +57,15 @@ private void OnFolded(Entity beacon, ref FoldedEvent args) { if (args.IsFolded) ClearCoordinate(beacon, args.User); + + if (!args.IsFolded) // Set the beacon's coordinates automatically when its unfolded + { + if (args.User == null) + return; + var mind = _mind.GetMind(args.User.Value); + if (mind != null) + SetCoordinate(beacon, mind.Value, args.User); + } } private void OnExamined(Entity beacon, ref ExaminedEvent args) From 27c803aeb2de89e1ddffa2753190541ef1789b00 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 19 Jan 2026 09:19:22 +0000 Subject: [PATCH 024/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index a6889386eb4..2c0f04710ae 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -3912,3 +3912,10 @@ id: 9420 time: '2026-01-19T05:21:50.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42423 +- author: DDeegan + changes: + - message: Thieving Beacons set their coordinates automatically when unfolded. + type: Tweak + id: 9421 + time: '2026-01-19T09:18:14.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42520 From 966f244048751fa69a92fefa54231fc50448db22 Mon Sep 17 00:00:00 2001 From: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> Date: Mon, 19 Jan 2026 13:54:12 -0800 Subject: [PATCH 025/603] Adjust various traitor explosives (#42477) * adj explosions * yuuup * next release * cleanup and EMP changes * minibomb revert, wait until gib experiment --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- Content.Shared/Emp/SharedEmpSystem.cs | 8 ++- .../Trigger/Systems/EmpOnTriggerSystem.cs | 2 +- .../Trigger/Systems/TriggerOnLandSystem.cs | 2 +- .../Trigger/Systems/TriggerSystem.cs | 5 +- Content.Shared/Trigger/TriggerEvent.cs | 3 +- .../Prototypes/Catalog/uplink_catalog.yml | 43 ++------------ .../Objects/Weapons/Bombs/pipebomb.yml | 2 +- .../Weapons/Throwable/base_grenades.yml | 56 +++++++++++++------ .../Weapons/Throwable/canister_grenades.yml | 4 +- .../Objects/Weapons/Throwable/grenades.yml | 30 +++++----- .../Entities/Structures/Machines/bombs.yml | 4 +- 11 files changed, 77 insertions(+), 82 deletions(-) diff --git a/Content.Shared/Emp/SharedEmpSystem.cs b/Content.Shared/Emp/SharedEmpSystem.cs index cc1895b20ff..e1ef05c8cec 100644 --- a/Content.Shared/Emp/SharedEmpSystem.cs +++ b/Content.Shared/Emp/SharedEmpSystem.cs @@ -68,7 +68,8 @@ public void EmpPulse(MapCoordinates mapCoordinates, float range, float energyCon /// The amount of energy consumed by the EMP pulse. /// The duration of the EMP effects. /// The player that caused the effect. Used for predicted audio. - public void EmpPulse(EntityCoordinates coordinates, float range, float energyConsumption, TimeSpan duration, EntityUid? user = null) + /// Whether this pulse is being replicated on the client. + public void EmpPulse(EntityCoordinates coordinates, float range, float energyConsumption, TimeSpan duration, EntityUid? user = null, bool predicted = true) { _entSet.Clear(); _lookup.GetEntitiesInRange(coordinates, range, _entSet); @@ -80,7 +81,10 @@ public void EmpPulse(EntityCoordinates coordinates, float range, float energyCon if (_net.IsServer) Spawn(EmpPulseEffectPrototype, coordinates); - _audio.PlayPredicted(EmpSound, coordinates, user); + if (predicted) + _audio.PlayPredicted(EmpSound, coordinates, user); + else + _audio.PlayPvs(EmpSound, coordinates); } /// diff --git a/Content.Shared/Trigger/Systems/EmpOnTriggerSystem.cs b/Content.Shared/Trigger/Systems/EmpOnTriggerSystem.cs index 6cefafcadcf..a77cddd7388 100644 --- a/Content.Shared/Trigger/Systems/EmpOnTriggerSystem.cs +++ b/Content.Shared/Trigger/Systems/EmpOnTriggerSystem.cs @@ -9,7 +9,7 @@ public sealed class EmpOnTriggerSystem : XOnTriggerSystem protected override void OnTrigger(Entity ent, EntityUid target, ref TriggerEvent args) { - _emp.EmpPulse(Transform(target).Coordinates, ent.Comp.Range, ent.Comp.EnergyConsumption, ent.Comp.DisableDuration, args.User); + _emp.EmpPulse(Transform(target).Coordinates, ent.Comp.Range, ent.Comp.EnergyConsumption, ent.Comp.DisableDuration, args.User, predicted: args.Predicted); args.Handled = true; } } diff --git a/Content.Shared/Trigger/Systems/TriggerOnLandSystem.cs b/Content.Shared/Trigger/Systems/TriggerOnLandSystem.cs index 64e2e5a5c10..3852e09efc0 100644 --- a/Content.Shared/Trigger/Systems/TriggerOnLandSystem.cs +++ b/Content.Shared/Trigger/Systems/TriggerOnLandSystem.cs @@ -14,6 +14,6 @@ public override void Initialize() private void OnLand(Entity ent, ref LandEvent args) { - Trigger.Trigger(ent.Owner, args.User, ent.Comp.KeyOut); + Trigger.Trigger(ent.Owner, args.User, ent.Comp.KeyOut, predicted: false); } } diff --git a/Content.Shared/Trigger/Systems/TriggerSystem.cs b/Content.Shared/Trigger/Systems/TriggerSystem.cs index a5fb509eed6..1e7261043f4 100644 --- a/Content.Shared/Trigger/Systems/TriggerSystem.cs +++ b/Content.Shared/Trigger/Systems/TriggerSystem.cs @@ -67,15 +67,16 @@ public override void Initialize() /// The entity that has the components that should be triggered. /// The user of the trigger. Some effects may target the user instead of the trigger entity. /// A key string to allow multiple, independent triggers on the same entity. If null then all triggers will activate. + /// Whether or not this trigger is being predicted /// Whether or not the trigger has sucessfully activated an effect. - public bool Trigger(EntityUid trigger, EntityUid? user = null, string? key = null) + public bool Trigger(EntityUid trigger, EntityUid? user = null, string? key = null, bool predicted = true) { var attemptTriggerEvent = new AttemptTriggerEvent(user, key); RaiseLocalEvent(trigger, ref attemptTriggerEvent); if (attemptTriggerEvent.Cancelled) return false; - var triggerEvent = new TriggerEvent(user, key); + var triggerEvent = new TriggerEvent(user, key, predicted); RaiseLocalEvent(trigger, ref triggerEvent, true); return triggerEvent.Handled; } diff --git a/Content.Shared/Trigger/TriggerEvent.cs b/Content.Shared/Trigger/TriggerEvent.cs index e65e3b48a87..9217a4907b1 100644 --- a/Content.Shared/Trigger/TriggerEvent.cs +++ b/Content.Shared/Trigger/TriggerEvent.cs @@ -9,8 +9,9 @@ namespace Content.Shared.Trigger; /// Setting this to null will activate all triggers. /// /// Marks the event as handled if at least one trigger effect was activated. +/// Marks that this trigger is being replicated on the client. [ByRefEvent] -public record struct TriggerEvent(EntityUid? User = null, string? Key = null, bool Handled = false); +public record struct TriggerEvent(EntityUid? User = null, string? Key = null, bool Predicted = true, bool Handled = false); /// /// Raised before a trigger is activated. diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index 2636b80d429..2e9510b3375 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -286,16 +286,11 @@ Telecrystal: 4 categories: - UplinkExplosives - -- type: listing - id: UplinkExplosiveGrenadeFlash - name: uplink-flash-grenade-name - description: uplink-flash-grenade-desc - productEntity: GrenadeFlashBang - cost: - Telecrystal: 1 - categories: - - UplinkExplosives + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink - type: listing id: UplinkSmokeGrenade @@ -355,7 +350,7 @@ discountDownTo: Telecrystal: 3 cost: - Telecrystal: 5 + Telecrystal: 4 categories: - UplinkExplosives conditions: @@ -466,19 +461,6 @@ tags: - NukeOpsUplink -- type: listing - id: UplinkClusterGrenade - name: uplink-cluster-grenade-name - description: uplink-cluster-grenade-desc - productEntity: ClusterGrenade - discountCategory: usualDiscounts - discountDownTo: - Telecrystal: 5 - cost: - Telecrystal: 8 - categories: - - UplinkExplosives - - type: listing id: UplinkGrenadeShrapnel name: uplink-shrapnel-grenade-name @@ -505,19 +487,6 @@ categories: - UplinkExplosives -- type: listing - id: UplinkEmpKit - name: uplink-emp-kit-name - description: uplink-emp-kit-desc - productEntity: ElectricalDisruptionKit - discountCategory: veryRareDiscounts - discountDownTo: - Telecrystal: 4 - cost: - Telecrystal: 6 - categories: - - UplinkExplosives - # Ammo - type: listing diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/pipebomb.yml b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/pipebomb.yml index a661224f318..45edf927592 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/pipebomb.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/pipebomb.yml @@ -1,5 +1,5 @@ - type: entity - parent: [ GrenadeBase, BaseMinorContraband ] + parent: [ TimerGrenadeBase, BaseMinorContraband ] id: PipeBomb name: pipe bomb description: An improvised explosive made from pipes and wire. diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/base_grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/base_grenades.yml index 8f2f7547c0f..b681bdbd0bf 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/base_grenades.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/base_grenades.yml @@ -14,26 +14,10 @@ quickEquip: false slots: - Belt - - type: TriggerOnUse - - type: TimerTrigger - delay: 3 - type: Damageable damageContainer: Inorganic - - type: Destructible - thresholds: - - trigger: # Start fuse - !type:DamageTrigger - damage: 10 - behaviors: - - !type:TimerStartBehavior - type: Appearance - type: AnimationPlayer - - type: GenericVisualizer - visuals: - enum.Trigger.TriggerVisuals.VisualState: - enum.ConstructionVisuals.Layer: - Primed: { state: primed } - Unprimed: { state: icon } - type: Tag tags: - HandGrenade @@ -48,6 +32,46 @@ restitution: 0.3 friction: 0.2 +- type: entity # Starts fuse after taking 10 damage. + parent: GrenadeBase + abstract: true + id: TimerGrenadeBase + components: + - type: TriggerOnUse + - type: TimerTrigger + delay: 3 + - type: Destructible + thresholds: + - trigger: # Start fuse + !type:DamageTrigger + damage: 10 + behaviors: + - !type:TimerStartBehavior + - type: GenericVisualizer + visuals: + enum.Trigger.TriggerVisuals.VisualState: + enum.ConstructionVisuals.Layer: + Primed: { state: primed } + Unprimed: { state: icon } + +- type: entity # Starts fuse after taking 10 damage. + parent: GrenadeBase + abstract: true + id: ImpactGrenadeBase + components: + - type: TriggerOnLand + - type: LandAtCursor + - type: Destructible + thresholds: + - trigger: # immediately explode + !type:DamageTrigger + damage: 45 + behaviors: + - !type:TriggerBehavior + keyOut: timer + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: entity # Starts fuse after taking 10 damage, instantly detonates/activates after taking 45 damage. abstract: true id: VolatileGrenadeBase diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/canister_grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/canister_grenades.yml index 31cb00f1640..255bb884c31 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/canister_grenades.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/canister_grenades.yml @@ -1,5 +1,5 @@ - type: entity - parent: [VolatileGrenadeBase, GrenadeBase, BaseSecurityContraband ] + parent: [VolatileGrenadeBase, TimerGrenadeBase, BaseSecurityContraband ] id: SmokeGrenade name: smoke grenade description: A tactical grenade that releases a large, long-lasting cloud of smoke when used. @@ -81,7 +81,7 @@ price: 350 - type: entity - parent: [ BaseEngineeringContraband, VolatileGrenadeBase, GrenadeBase ] # Prevent inheriting DeleteOnTrigger from SmokeGrenade + parent: [ BaseEngineeringContraband, VolatileGrenadeBase, TimerGrenadeBase ] # Prevent inheriting DeleteOnTrigger from SmokeGrenade id: AirGrenade name: air grenade description: A special solid state chemical grenade used for quickly releasing standard air into a spaced area. Fills up to 30 tiles! diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml index 7cce1d49caf..bdb3e01f24c 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml @@ -1,7 +1,7 @@ - type: entity name: explosive grenade description: Grenade that creates a small but devastating explosion. - parent: [VolatileGrenadeBase, GrenadeBase, BaseSyndicateContraband] + parent: [VolatileGrenadeBase, TimerGrenadeBase, BaseSyndicateContraband] id: ExGrenade components: - type: ExplodeOnTrigger @@ -24,7 +24,7 @@ - type: entity name: flashbang description: Eeeeeeeeeeeeeeeeeeeeee. - parent: [ FragileGrenadeBase, GrenadeBase, BaseSecurityContraband ] + parent: [ FragileGrenadeBase, TimerGrenadeBase, BaseSecurityContraband ] id: GrenadeFlashBang components: - type: Sprite @@ -74,12 +74,12 @@ - type: TimedDespawn lifetime: 0.5 -#The explosive values for these are pretty god damn mediocre, but SS14's explosion system is hard to understand - this is a good enough approximation of how it was in SS13. -#Ideally, there should be a weak radius around the bomb outside of its gibbing / spacing range capable of dealing fair damage to players / structures. +# Tuned to be a general bomb that deals equipment damage without explicitly gibbing, however it will still gladly instakill anyone that mishandles it. +# One of the few syndie bombs that should punch holes in space. - type: entity name: syndicate minibomb description: A syndicate-manufactured explosive used to stow destruction and cause chaos. - parent: [VolatileGrenadeBase, GrenadeBase, BaseSyndicateContraband] + parent: [VolatileGrenadeBase, TimerGrenadeBase, BaseSyndicateContraband] id: SyndieMiniBomb components: - type: Sprite @@ -108,7 +108,7 @@ - type: entity name: self destruct description: Go out on your own terms! - parent: GrenadeBase + parent: TimerGrenadeBase id: SelfDestructSeq categories: [ HideSpawnMenu ] components: @@ -134,7 +134,7 @@ - type: entity - parent: [ FragileGrenadeBase, GrenadeBase, BaseSyndicateContraband ] + parent: [ FragileGrenadeBase, TimerGrenadeBase, BaseSyndicateContraband ] id: SingularityGrenade name: singularity grenade description: Grenade that simulates the power of a singularity, pulling things in a heap. @@ -267,7 +267,7 @@ - type: entity name: the nuclear option description: Please don't throw it, think of the children. - parent: GrenadeBase + parent: TimerGrenadeBase id: NuclearGrenade components: - type: Sprite @@ -348,30 +348,26 @@ - type: entity name: EMP grenade description: A grenade designed to wreak havoc on electronic systems. - parent: [FragileGrenadeBase, GrenadeBase, BaseSyndicateContraband] + parent: [ImpactGrenadeBase, BaseSyndicateContraband] id: EmpGrenade components: - type: Sprite sprite: Objects/Weapons/Grenades/empgrenade.rsi - type: EmpOnTrigger keysIn: - - timer + - trigger range: 5.5 energyConsumption: 50000 - type: DeleteOnTrigger keysIn: - - timer - - type: Appearance - - type: TimerTriggerVisuals - primingSound: - path: /Audio/Effects/countdown.ogg + - trigger - type: StaticPrice price: 666 # 2000 for 3, I love fractions - type: entity name: holy hand grenade description: O Lord, bless this thy hand grenade, that with it thou mayst blow thine enemies to tiny bits, in thy mercy. - parent: [GrenadeBase, BaseSyndicateContraband] + parent: [TimerGrenadeBase, BaseSyndicateContraband] id: HolyHandGrenade components: - type: Sprite @@ -402,7 +398,7 @@ - type: entity name: trick grenade description: All the grenade without any of the boom. - parent: GrenadeBase + parent: TimerGrenadeBase id: GrenadeDummy components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Structures/Machines/bombs.yml b/Resources/Prototypes/Entities/Structures/Machines/bombs.yml index dc3aa359f44..3790aba5812 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/bombs.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/bombs.yml @@ -126,8 +126,8 @@ - type: Explosive explosionType: HardBomb totalIntensity: 4000.0 - intensitySlope: 3 - maxIntensity: 400 + intensitySlope: 10 + maxIntensity: 75 - type: StaticPrice price: 10000 # Good luck! From d75fc29a84bad9b1508c5d775c91879436b0b702 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 19 Jan 2026 22:11:13 +0000 Subject: [PATCH 026/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 2c0f04710ae..8dd1e8cd68f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: MissKay1994 - changes: - - message: Interns will no longer be hired infinitely - type: Tweak - id: 8915 - time: '2025-09-03T20:16:07.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40001 - author: Hitlinemoss changes: - message: Added the senior courier PDA for Cargo Technicians with a significant @@ -3919,3 +3912,18 @@ id: 9421 time: '2026-01-19T09:18:14.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42520 +- author: ArtisticRoomba + changes: + - message: The flashbang, explosive grenade, electrical disruptor kit, and cluster + grenade have been removed from the traitor uplink. + type: Remove + - message: The grenade penguin has been lowered in price to 4 TC. + type: Tweak + - message: The syndicate bomb has had its explosive power tweaked. It is now a more + concentrated explosion over a smaller area. + type: Tweak + - message: The EMP Grenade now detonates on impact. + type: Tweak + id: 9422 + time: '2026-01-19T22:10:03.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42477 From fa9173c0ec788b940524ead08181e5bcbc44ccc6 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Mon, 19 Jan 2026 14:17:10 -0800 Subject: [PATCH 027/603] Traitor Chemicals Rebalance (#42484) very small list of changes overall Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- .../ElectrocuteEntityEffectSystem.cs | 29 ++++++++++++++----- .../guidebook/entity-effects/effects.ftl | 10 +++++-- .../Catalog/Fills/Boxes/syndicate.yml | 2 +- .../Prototypes/Catalog/uplink_catalog.yml | 4 +-- .../Prototypes/Entities/Objects/Fun/darts.yml | 6 ++-- Resources/Prototypes/Reagents/fun.yml | 4 ++- Resources/Prototypes/Reagents/narcotics.yml | 6 ++-- Resources/Prototypes/Reagents/toxins.yml | 4 ++- 8 files changed, 45 insertions(+), 20 deletions(-) diff --git a/Content.Shared/EntityEffects/Effects/StatusEffects/ElectrocuteEntityEffectSystem.cs b/Content.Shared/EntityEffects/Effects/StatusEffects/ElectrocuteEntityEffectSystem.cs index b5a208f2c7c..a5259257829 100644 --- a/Content.Shared/EntityEffects/Effects/StatusEffects/ElectrocuteEntityEffectSystem.cs +++ b/Content.Shared/EntityEffects/Effects/StatusEffects/ElectrocuteEntityEffectSystem.cs @@ -4,7 +4,6 @@ namespace Content.Shared.EntityEffects.Effects.StatusEffects; -// TODO: When Electrocution is moved to new Status, make this use StatusEffectsContainerComponent. /// /// Electrocutes this entity for a given amount of damage and time. /// The shock damage applied by this effect is modified by scale. @@ -19,7 +18,13 @@ protected override void Effect(Entity entity, ref Entity { var effect = args.Effect; - _electrocution.TryDoElectrocution(entity, null, (int)(args.Scale * effect.ShockDamage), effect.ElectrocuteTime, effect.Refresh, ignoreInsulation: effect.BypassInsulation); + _electrocution.TryDoElectrocution(entity, + null, + (int)(args.Scale * effect.ShockDamage), + effect.ElectrocuteTime, + effect.Refresh, + siemensCoefficient: effect.SiemensCoefficient, + ignoreInsulation: effect.BypassInsulation); } } @@ -29,23 +34,33 @@ public sealed partial class Electrocute : EntityEffectBase /// /// Time we electrocute this entity /// - [DataField] public TimeSpan ElectrocuteTime = TimeSpan.FromSeconds(2); + [DataField] + public TimeSpan ElectrocuteTime = TimeSpan.FromSeconds(2); /// /// Shock damage we apply to the entity. /// - [DataField] public int ShockDamage = 5; + [DataField] + public int ShockDamage = 5; /// /// Do we refresh the duration? Or add more duration if it already exists. /// - [DataField] public bool Refresh = true; + [DataField] + public bool Refresh = true; /// /// Should we by bypassing insulation? /// - [DataField] public bool BypassInsulation = true; + [DataField] + public bool BypassInsulation = true; + + /// + /// How much electricity is being passed through the body basically. Lower means less oomph. + /// + [DataField] + public float SiemensCoefficient = 1f; public override string EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) - => Loc.GetString("entity-effect-guidebook-electrocute", ("chance", Probability), ("time", ElectrocuteTime.TotalSeconds)); + => Loc.GetString("entity-effect-guidebook-electrocute", ("chance", Probability), ("time", ElectrocuteTime.TotalSeconds), ("stuns", SiemensCoefficient > 0.5f)); } diff --git a/Resources/Locale/en-US/guidebook/entity-effects/effects.ftl b/Resources/Locale/en-US/guidebook/entity-effects/effects.ftl index fccc6291a8f..3a453b3404b 100644 --- a/Resources/Locale/en-US/guidebook/entity-effects/effects.ftl +++ b/Resources/Locale/en-US/guidebook/entity-effects/effects.ftl @@ -335,8 +335,14 @@ entity-effect-guidebook-drunk = entity-effect-guidebook-electrocute = { $chance -> - [1] Electrocutes - *[other] electrocute + [1] { $stuns -> + [true] Electrocutes + *[false] Shocks + } + *[other] { $stuns -> + [true] electrocute + *[false] shock + } } the metabolizer for {NATURALFIXED($time, 3)} {MANY("second", $time)} entity-effect-guidebook-emote = diff --git a/Resources/Prototypes/Catalog/Fills/Boxes/syndicate.yml b/Resources/Prototypes/Catalog/Fills/Boxes/syndicate.yml index 96d06ed30bf..998a0cde429 100644 --- a/Resources/Prototypes/Catalog/Fills/Boxes/syndicate.yml +++ b/Resources/Prototypes/Catalog/Fills/Boxes/syndicate.yml @@ -30,7 +30,7 @@ - id: Dropper # It would be cool to have special "syndicate" chemical analysis goggles - id: ClothingEyesGlassesChemical - - id: SyringeStimulants + - id: Syringe - id: VestineChemistryVial amount: 2 - id: ChemistryEmptyVial diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index 2e9510b3375..dee58741b25 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -697,7 +697,7 @@ discountDownTo: Telecrystal: 2 cost: - Telecrystal: 5 + Telecrystal: 3 categories: - UplinkChemicals @@ -710,7 +710,7 @@ discountDownTo: Telecrystal: 2 cost: - Telecrystal: 4 + Telecrystal: 3 categories: - UplinkChemicals diff --git a/Resources/Prototypes/Entities/Objects/Fun/darts.yml b/Resources/Prototypes/Entities/Objects/Fun/darts.yml index 0890fcffd5b..538cfaffa08 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/darts.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/darts.yml @@ -121,13 +121,13 @@ - type: SolutionContainerManager solutions: melee: - maxVol: 7 + maxVol: 10 - type: SolutionInjectOnEmbed - transferAmount: 7 + transferAmount: 10 blockSlots: NONE solution: melee - type: SolutionTransfer - maxTransferAmount: 7 + maxTransferAmount: 10 - type: entity name: dartboard diff --git a/Resources/Prototypes/Reagents/fun.yml b/Resources/Prototypes/Reagents/fun.yml index 2c6a0e0ffcc..b4cb53747fc 100644 --- a/Resources/Prototypes/Reagents/fun.yml +++ b/Resources/Prototypes/Reagents/fun.yml @@ -164,9 +164,11 @@ color: "#FDD023" metabolisms: Poison: + metabolismRate : 2.0 effects: - !type:Electrocute - probability: 0.35 + siemensCoefficient: 0.5 + probability: 0.5 - type: reagent id: Razorium diff --git a/Resources/Prototypes/Reagents/narcotics.yml b/Resources/Prototypes/Reagents/narcotics.yml index 7ad463bfcc4..df81a8db13e 100644 --- a/Resources/Prototypes/Reagents/narcotics.yml +++ b/Resources/Prototypes/Reagents/narcotics.yml @@ -169,10 +169,10 @@ conditions: - !type:ReagentCondition reagent: Stimulants - min: 50 + min: 45 damage: types: - Poison: 1 + Poison: 3 # Interactions - !type:ModifyStatusEffect conditions: @@ -333,7 +333,7 @@ reagent: Nocturine min: 8 effectProto: StatusEffectForcedSleeping - time: 6 + time: 9 delay: 5 - type: reagent diff --git a/Resources/Prototypes/Reagents/toxins.yml b/Resources/Prototypes/Reagents/toxins.yml index 6fb5d3aa7ac..22aca1a7c1d 100644 --- a/Resources/Prototypes/Reagents/toxins.yml +++ b/Resources/Prototypes/Reagents/toxins.yml @@ -674,9 +674,11 @@ color: "#FDD023" metabolisms: Poison: + metabolismRate : 2.0 effects: - !type:Electrocute - probability: 0.8 + electrocuteTime: 1 + probability: 0.5 - type: reagent id: Lipolicide From bae02728886d4c7e7e19908310be27582c56a311 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 19 Jan 2026 22:34:17 +0000 Subject: [PATCH 028/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 8dd1e8cd68f..155e4ecc74b 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Hitlinemoss - changes: - - message: Added the senior courier PDA for Cargo Technicians with a significant - amount of playtime. - type: Add - id: 8916 - time: '2025-09-03T20:22:28.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/37661 - author: breeplayx3 changes: - message: Berry delight now requires blueberry cake as a precursor @@ -3927,3 +3919,19 @@ id: 9422 time: '2026-01-19T22:10:03.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42477 +- author: Princess-Cheeseballs + changes: + - message: Tazinide and Licoxide now are less effective at shocking and don't last + as long. + type: Tweak + - message: Nocturine now lasts 9 seconds instead of 6 seconds. + type: Tweak + - message: Hyperzine overdose can no longer be negated completely with Omnizine. + type: Tweak + - message: Hypodarts now have an increased chemical capacity of 10u up from 7u + type: Tweak + - message: Combat Medkit and Combat Medipen have had their prices reduced to 3 TC + type: Tweak + id: 9423 + time: '2026-01-19T22:33:08.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42484 From b0ddb0e64df2e0a2993b1c9391ad55e7e6ce1393 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Mon, 19 Jan 2026 14:28:40 -0800 Subject: [PATCH 029/603] Syndicate Wearables Category Rebalances (#42482) * wearables * oopdate * sdasadsads * the great reparenting * fucked it up a little bit * try this * probably smarter to do this tbqh. * better-er * ok should work for real now * slightly less woke idea * just need to stack cleaner and faster * this should resolve the test fails I think --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- .../Locale/en-US/store/uplink-catalog.ftl | 2 +- Resources/Locale/en-US/thief/backpack.ftl | 4 +-- .../Catalog/Fills/Backpacks/duffelbag.yml | 21 +++++++++++ .../Catalog/Fills/Items/briefcases.yml | 7 ++-- .../Prototypes/Catalog/thief_toolbox_sets.yml | 3 +- .../Prototypes/Catalog/uplink_catalog.yml | 36 ++++++------------- .../Entities/Clothing/Eyes/specific.yml | 3 +- .../Entities/Clothing/OuterClothing/armor.yml | 14 ++------ .../OuterClothing/base_clothingouter.yml | 9 ++++- .../Entities/Clothing/OuterClothing/coats.yml | 26 ++++++++------ .../Clothing/OuterClothing/specific.yml | 2 +- .../Clothing/OuterClothing/wintercoats.yml | 10 ++++++ .../Entities/Objects/Devices/pda.yml | 8 +++++ .../Entities/Structures/Furniture/dresser.yml | 4 +-- 14 files changed, 87 insertions(+), 62 deletions(-) diff --git a/Resources/Locale/en-US/store/uplink-catalog.ftl b/Resources/Locale/en-US/store/uplink-catalog.ftl index e8fdbf4ff24..0c8bce1600d 100644 --- a/Resources/Locale/en-US/store/uplink-catalog.ftl +++ b/Resources/Locale/en-US/store/uplink-catalog.ftl @@ -337,7 +337,7 @@ uplink-saw-advanced-desc = A bleeding-edge surgical implement designed to cut th # Armor uplink-chameleon-name = Chameleon Kit -uplink-chameleon-desc = A backpack full of items that contain chameleon technology allowing you to disguise as pretty much anything on the station, and more! +uplink-chameleon-desc = A backpack full of items that contain chameleon technology allowing you to disguise as pretty much anyone on the station, and more! Comes with a free Agent ID card! uplink-clothing-no-slips-shoes-name = No-slip Shoes uplink-clothing-no-slips-shoes-desc = Chameleon shoes that protect you from slips. diff --git a/Resources/Locale/en-US/thief/backpack.ftl b/Resources/Locale/en-US/thief/backpack.ftl index c3e579110dd..99494285c44 100644 --- a/Resources/Locale/en-US/thief/backpack.ftl +++ b/Resources/Locale/en-US/thief/backpack.ftl @@ -18,8 +18,8 @@ thief-backpack-button-deselect = Select [X] thief-backpack-category-chameleon-name = Chameleon Kit thief-backpack-category-chameleon-description = You are everyone and no one; you are a master of disguise. - Includes: A full set of chameleon clothing, - a chameleon projector, and an Agent ID. + Includes: A full set of chameleon clothing with Agent ID, + a chameleon projector, and a fake mindshield implant. Disguise as anyone and anything. thief-backpack-category-tools-name = Breacher Kit diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml index a39576eafee..1dd4e27f758 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml @@ -274,6 +274,27 @@ - id: ClothingShoesChameleon - id: ChameleonControllerImplanter +- type: entity + parent: ClothingBackpackChameleon + id: ClothingBackpackChameleonFillAgent + suffix: Fill, Chameleon, Syndie + components: + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + children: + - id: ChameleonAgentPDA + - id: ClothingUniformJumpsuitChameleon + - id: ClothingOuterChameleon + - id: ClothingNeckChameleon + - id: ClothingMaskGasChameleon + - id: ClothingHeadHatChameleon + - id: ClothingHandsChameleon + - id: ClothingEyesChameleon + - id: ClothingHeadsetChameleon + - id: ClothingShoesChameleon + - id: ChameleonControllerImplanter + - type: entity parent: ClothingBackpackDuffelSyndicateBundle id: ClothingBackpackDuffelSyndicateEVABundle diff --git a/Resources/Prototypes/Catalog/Fills/Items/briefcases.yml b/Resources/Prototypes/Catalog/Fills/Items/briefcases.yml index 9da3f0b5194..baa3c4802d6 100644 --- a/Resources/Prototypes/Catalog/Fills/Items/briefcases.yml +++ b/Resources/Prototypes/Catalog/Fills/Items/briefcases.yml @@ -40,16 +40,15 @@ containers: storagebase: !type:AllSelector children: + - id: ClothingOuterCoatJensenSyndie + - id: ClothingUniformJumpsuitTacticool - id: ClothingEyesGlassesSunglasses - id: SpaceCash30000 - id: EncryptionKeySyndie - id: RubberStampTrader - id: PhoneInstrumentSyndicate - - id: ClothingUniformJumpsuitTacticool - - id: ClothingOuterCoatJensen - id: ClothingHandsGlovesCombat - id: ClothingMaskNeckGaiter - - id: SyndieHandyFlag - type: entity id: BriefcaseThiefBribingBundleFilled @@ -60,7 +59,7 @@ containers: storagebase: !type:AllSelector children: + - id: ClothingOuterCoatJensen - id: ClothingEyesGlassesSunglasses - id: SpaceCash20000 - - id: ClothingOuterCoatJensen - id: ClothingHandsGlovesColorBlack diff --git a/Resources/Prototypes/Catalog/thief_toolbox_sets.yml b/Resources/Prototypes/Catalog/thief_toolbox_sets.yml index 81e3d10972e..c0f791ef76a 100644 --- a/Resources/Prototypes/Catalog/thief_toolbox_sets.yml +++ b/Resources/Prototypes/Catalog/thief_toolbox_sets.yml @@ -6,10 +6,9 @@ sprite: Objects/Devices/chameleon_projector.rsi state: icon content: - - ClothingBackpackChameleonFill + - ClothingBackpackChameleonFillAgent - ChameleonProjector - FakeMindShieldImplanter - - AgentIDCard - type: thiefBackpackSet id: ToolsSet diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index dee58741b25..c179b3e1d2e 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -1595,19 +1595,6 @@ name: uplink-black-jetpack-name description: uplink-black-jetpack-desc productEntity: JetpackBlackFilled - discountCategory: veryRareDiscounts - discountDownTo: - Telecrystal: 1 - cost: - Telecrystal: 2 - categories: - - UplinkWearables - -- type: listing - id: UplinkHolster - name: uplink-holster-name - description: uplink-holster-desc - productEntity: ClothingBeltSyndieHolster cost: Telecrystal: 1 categories: @@ -1627,7 +1614,7 @@ id: UplinkChameleon name: uplink-chameleon-name description: uplink-chameleon-desc - productEntity: ClothingBackpackChameleonFill + productEntity: ClothingBackpackChameleonFillAgent icon: { sprite: /Textures/Clothing/Uniforms/Jumpsuit/rainbow.rsi, state: icon } discountCategory: usualDiscounts discountDownTo: @@ -1657,9 +1644,9 @@ productEntity: ClothingOuterVestWeb discountCategory: usualDiscounts discountDownTo: - Telecrystal: 1 - cost: Telecrystal: 3 + cost: + Telecrystal: 5 categories: - UplinkWearables @@ -1683,9 +1670,9 @@ productEntity: ClothingShoesBootsMagSyndie discountCategory: usualDiscounts discountDownTo: - Telecrystal: 2 + Telecrystal: 1 cost: - Telecrystal: 4 + Telecrystal: 2 categories: - UplinkWearables @@ -1695,11 +1682,8 @@ description: uplink-eva-syndie-desc icon: { sprite: /Textures/Clothing/OuterClothing/Suits/eva_syndicate.rsi, state: icon } productEntity: ClothingBackpackDuffelSyndicateEVABundle - discountCategory: rareDiscounts - discountDownTo: - Telecrystal: 1 cost: - Telecrystal: 2 + Telecrystal: 1 categories: - UplinkWearables @@ -1713,7 +1697,7 @@ discountDownTo: Telecrystal: 2 cost: - Telecrystal: 4 + Telecrystal: 3 categories: - UplinkWearables @@ -1727,7 +1711,7 @@ discountDownTo: Telecrystal: 4 cost: - Telecrystal: 8 + Telecrystal: 7 categories: - UplinkWearables @@ -1800,9 +1784,9 @@ description: uplink-clothing-conducting-gloves-desc productEntity: ClothingHandsGlovesConducting cost: - Telecrystal: 2 + Telecrystal: 1 categories: - - UplinkWearables + - UplinkPointless - type: listing id: UplinkBackpackSyndicate diff --git a/Resources/Prototypes/Entities/Clothing/Eyes/specific.yml b/Resources/Prototypes/Entities/Clothing/Eyes/specific.yml index b62773fe50e..0abe003d5a0 100644 --- a/Resources/Prototypes/Entities/Clothing/Eyes/specific.yml +++ b/Resources/Prototypes/Entities/Clothing/Eyes/specific.yml @@ -1,10 +1,11 @@ - type: entity parent: [ClothingEyesBase, BaseChameleon] - id: ClothingEyesChameleon # no flash immunity, sorry + id: ClothingEyesChameleon name: sun glasses description: Useful both for security and cargonia. suffix: Chameleon components: + - type: FlashImmunity - type: Tag tags: # intentionally no WhitelistChameleon tag - PetWearable diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml index 341404af2b2..fbd515475bf 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml @@ -103,7 +103,7 @@ sprite: Clothing/OuterClothing/Vests/detvest.rsi - type: entity - parent: [ClothingOuterBaseLarge, AllowSuitStorageClothing] + parent: [ ClothingOuterBaseMedium, AllowSuitStorageClothing ] id: ClothingOuterArmorBaseCarapace abstract: true components: @@ -117,10 +117,6 @@ Caustic: 0.9 - type: ExplosionResistance damageCoefficient: 0.65 - - type: ClothingSpeedModifier - walkModifier: 1.0 - sprintModifier: 1.0 - - type: HeldSpeedModifier - type: GroupExamine - type: entity @@ -151,7 +147,7 @@ #Web vest - type: entity - parent: [ClothingOuterStorageBase, AllowSuitStorageClothing, BaseSyndicateContraband] + parent: [ClothingOuterArmorBase, ClothingOuterStorageBase, BaseSyndicateContraband] id: ClothingOuterVestWeb name: web vest description: A synthetic armor vest. This one has added webbing and ballistic plates. @@ -167,14 +163,12 @@ Slash: 0.6 Piercing: 0.3 Heat: 0.9 - - type: ExplosionResistance - damageCoefficient: 0.9 - type: StaticPrice price: 1500 #Elite web vest - type: entity - parent: [ClothingOuterStorageBase, AllowSuitStorageClothing, BaseSyndicateContraband] + parent: [ClothingOuterArmorBase, AllowSuitStorageClothing, BaseSyndicateContraband] id: ClothingOuterVestWebElite name: elite web vest description: A synthetic armor vest. This one has added webbing and heat resistant fibers. @@ -220,8 +214,6 @@ Slash: 0.7 Piercing: 0.5 Heat: 0.9 - - type: ExplosionResistance - damageCoefficient: 0.9 # Armor covering multiple body parts including limbs diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml index 1de646a363a..b6cf2e4e6ae 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/base_clothingouter.yml @@ -29,9 +29,14 @@ parent: ClothingOuterBase id: ClothingOuterStorageBase components: + - type: Item + size: Normal + shape: + - 0,0,1,2 - type: Storage grid: - 0,0,2,1 + maxItemSize: Small - type: ContainerContainer containers: storagebase: !type:Container @@ -202,4 +207,6 @@ id: ClothingOuterBaseMedium components: - type: Item - size: Huge + size: Large + shape: + - 0,0,2,3 diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml index 265b9e23746..fd5981074b5 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml @@ -10,7 +10,7 @@ sprite: Clothing/OuterClothing/Coats/bomber.rsi - type: entity - parent: [ClothingOuterStorageBase, AllowSuitStorageClothing, ClothingOuterArmorBase] + parent: [ ClothingOuterBaseMedium, ClothingOuterStorageBase, AllowSuitStorageClothing, BaseSecurityContraband ] id: ClothingOuterCoatDetective name: detective trenchcoat description: An 18th-century multi-purpose trenchcoat. Someone who wears this means serious business. @@ -25,8 +25,6 @@ children: - id: SmokingPipeFilledTobacco - id: FlippoEngravedLighter - - type: ExplosionResistance - damageCoefficient: 1 #its a coat. it doesnt do shit - type: entity parent: [ClothingOuterCoatDetectiveLoadout] @@ -64,7 +62,7 @@ - type: entity abstract: true - parent: AllowSuitStorageClothing + parent: [ ClothingOuterArmorBase, ClothingOuterStorageBase ] id: ClothingOuterArmorHoS components: - type: Armor @@ -75,12 +73,10 @@ Piercing: 0.6 Heat: 0.7 Caustic: 0.75 # not the full 90% from ss13 because of the head - - type: ExplosionResistance - damageCoefficient: 0.9 - type: entity abstract: true - parent: AllowSuitStorageClothing + parent: [ ClothingOuterArmorBase, ClothingOuterStorageBase ] id: ClothingOuterArmorWarden components: - type: Armor @@ -91,11 +87,9 @@ Piercing: 0.7 Heat: 0.7 Caustic: 0.9 - - type: ExplosionResistance - damageCoefficient: 0.9 - type: entity - parent: [ClothingOuterArmorHoS, ClothingOuterStorageBase, BaseSecurityCommandContraband] + parent: [BaseSecurityCommandContraband, ClothingOuterArmorHoS] id: ClothingOuterCoatHoSTrench name: head of security's armored trenchcoat description: A greatcoat enhanced with a special alloy for some extra protection and style for those with a commanding presence. @@ -118,6 +112,16 @@ - type: ToggleableClothing clothingPrototype: ClothingHeadHatHoodChaplainHood +- type: entity + parent: ClothingOuterCoatJensen + id: ClothingOuterCoatJensenSyndie + suffix: Syndie + components: + - type: EntityTableContainerFill + containers: + storagebase: + id: SyndieHandyFlag + - type: entity parent: ClothingOuterStorageBase id: ClothingOuterCoatTrench @@ -320,7 +324,7 @@ sprite: Clothing/OuterClothing/Coats/pirate.rsi - type: entity - parent: [ClothingOuterArmorWarden, ClothingOuterStorageBase, BaseSecurityContraband] + parent: [ClothingOuterArmorWarden, BaseSecurityContraband] id: ClothingOuterCoatWarden name: warden's armored jacket description: A sturdy, utilitarian jacket designed to protect a warden from any brig-bound threats. diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/specific.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/specific.yml index 8b2116f0ca6..56508af4869 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/specific.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/specific.yml @@ -1,5 +1,5 @@ - type: entity - parent: [ClothingOuterBase, BaseChameleon] + parent: [ClothingOuterBase, AllowSuitStorageClothingGasTanks, BaseChameleon] id: ClothingOuterChameleon name: vest description: A thick vest with a rubbery, water-resistant shell. diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml index 86df3c6ec1a..8c78b462777 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml @@ -373,6 +373,11 @@ sprite: Clothing/OuterClothing/WinterCoats/coathosarmored.rsi - type: ToggleableClothing clothingPrototype: ClothingHeadHatHoodWinterHOS + - type: ContainerContainer + containers: + toggleable-clothing: !type:ContainerSlot { } + storagebase: !type:Container + ents: [ ] ########################################################## - type: entity @@ -732,6 +737,11 @@ sprite: Clothing/OuterClothing/WinterCoats/coatwardenarmored.rsi - type: ToggleableClothing clothingPrototype: ClothingHeadHatHoodWinterWarden + - type: ContainerContainer + containers: + toggleable-clothing: !type:ContainerSlot { } + storagebase: !type:Container + ents: [ ] ################################################################ - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Devices/pda.yml b/Resources/Prototypes/Entities/Objects/Devices/pda.yml index b1bbe6bb2dc..60016de4c3b 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/pda.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/pda.yml @@ -1563,6 +1563,14 @@ enum.ChameleonUiKey.Key: type: ChameleonBoundUserInterface +- type: entity + parent: ChameleonPDA + id: ChameleonAgentPDA + suffix: Chameleon, Agent ID + components: + - type: Pda + id: AgentIDCard + - type: entity parent: BaseWidePDA id: WizardPDA diff --git a/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml b/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml index b1293ea1ef7..2bbe6b004ea 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml @@ -31,8 +31,8 @@ acts: [ "Destruction" ] - type: Storage grid: - - 0,0,6,3 - maxItemSize: Normal + - 0,0,7,4 + maxItemSize: Large - type: ContainerContainer containers: storagebase: !type:Container From 0174e1f47d8658fafd478fcbf6b604e83b3cfc3d Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 19 Jan 2026 22:49:56 +0000 Subject: [PATCH 030/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 155e4ecc74b..71e6f3a1a3c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: breeplayx3 - changes: - - message: Berry delight now requires blueberry cake as a precursor - type: Tweak - id: 8917 - time: '2025-09-03T21:06:05.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40085 - author: ArtisticRoomba changes: - message: Added atmospherics delta-pressure structure damage. Objects like windows, @@ -3935,3 +3928,21 @@ id: 9423 time: '2026-01-19T22:33:08.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42484 +- author: Princess-Cheeseballs + changes: + - message: Web Vests are now 5 TC and Bloodred Hardsuits are now 7 TC. + type: Tweak + - message: All outer clothes with pockets are now 2x3, all armored outerwear are + now 3x4. + type: Tweak + - message: Chameleon Kit now comes with an Agent ID card for free. Chameleon sunglasses + now offer flash protection. Chameleon Vests can now wear oxygen tanks. + type: Tweak + - message: Several items such as the Carp Hardsuit, Syndicate EVA Suit, Blood-Red + Magboots, and Syndicate Jetpack have had their costs reduced. + type: Tweak + - message: Syndicate Shoulder Holster has been removed. + type: Remove + id: 9424 + time: '2026-01-19T22:48:48.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42482 From 159b0646a695c0c114de4977757b1b1660b48c5f Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Mon, 19 Jan 2026 14:51:14 -0800 Subject: [PATCH 031/603] Syndicate Weapons/Ammo rebalances + Weapons Case (#42468) * working commit * final batch of changes * reviw Co-authored-by: SnappingOpossum * lower china lake projectile speed * hnnnnnnnnnnnnnng * omelette joke back at popular request. --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> Co-authored-by: SnappingOpossum --- .../Locale/en-US/store/uplink-catalog.ftl | 24 ++- .../Catalog/Fills/Items/briefcases.yml | 63 +++++++- .../Prototypes/Catalog/uplink_catalog.yml | 145 +++++++++++++----- .../Entities/Objects/Misc/briefcases.yml | 45 ++++++ .../Weapons/Guns/Launchers/launchers.yml | 28 ++-- .../Objects/Weapons/Guns/SMGs/smgs.yml | 4 + .../Briefcases/weapon_case.rsi/icon-open.png | Bin 0 -> 7146 bytes .../Briefcases/weapon_case.rsi/icon.png | Bin 0 -> 6870 bytes .../weapon_case.rsi/inhand-left.png | Bin 0 -> 15028 bytes .../weapon_case.rsi/inhand-right.png | Bin 0 -> 14897 bytes .../Briefcases/weapon_case.rsi/locked.png | Bin 0 -> 5747 bytes .../Briefcases/weapon_case.rsi/meta.json | 31 ++++ .../Briefcases/weapon_case.rsi/unlocked.png | Bin 0 -> 5790 bytes .../weapon_case_large.rsi/icon-open.png | Bin 0 -> 7309 bytes .../Briefcases/weapon_case_large.rsi/icon.png | Bin 0 -> 7053 bytes .../weapon_case_large.rsi/inhand-left.png | Bin 0 -> 15671 bytes .../weapon_case_large.rsi/inhand-right.png | Bin 0 -> 16126 bytes .../weapon_case_large.rsi/locked.png | Bin 0 -> 5792 bytes .../weapon_case_large.rsi/meta.json | 31 ++++ .../weapon_case_large.rsi/unlocked.png | Bin 0 -> 5816 bytes .../Tools/Toolboxes/toolbox_syn.rsi/meta.json | 2 +- 21 files changed, 303 insertions(+), 70 deletions(-) create mode 100644 Resources/Textures/Objects/Storage/Briefcases/weapon_case.rsi/icon-open.png create mode 100644 Resources/Textures/Objects/Storage/Briefcases/weapon_case.rsi/icon.png create mode 100644 Resources/Textures/Objects/Storage/Briefcases/weapon_case.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Storage/Briefcases/weapon_case.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Storage/Briefcases/weapon_case.rsi/locked.png create mode 100644 Resources/Textures/Objects/Storage/Briefcases/weapon_case.rsi/meta.json create mode 100644 Resources/Textures/Objects/Storage/Briefcases/weapon_case.rsi/unlocked.png create mode 100644 Resources/Textures/Objects/Storage/Briefcases/weapon_case_large.rsi/icon-open.png create mode 100644 Resources/Textures/Objects/Storage/Briefcases/weapon_case_large.rsi/icon.png create mode 100644 Resources/Textures/Objects/Storage/Briefcases/weapon_case_large.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Storage/Briefcases/weapon_case_large.rsi/inhand-right.png create mode 100644 Resources/Textures/Objects/Storage/Briefcases/weapon_case_large.rsi/locked.png create mode 100644 Resources/Textures/Objects/Storage/Briefcases/weapon_case_large.rsi/meta.json create mode 100644 Resources/Textures/Objects/Storage/Briefcases/weapon_case_large.rsi/unlocked.png diff --git a/Resources/Locale/en-US/store/uplink-catalog.ftl b/Resources/Locale/en-US/store/uplink-catalog.ftl index 0c8bce1600d..2e001e6369d 100644 --- a/Resources/Locale/en-US/store/uplink-catalog.ftl +++ b/Resources/Locale/en-US/store/uplink-catalog.ftl @@ -2,9 +2,6 @@ uplink-pistol-viper-name = Viper uplink-pistol-viper-desc = A small, easily concealable, but somewhat underpowered gun. Retrofitted with a fully automatic receiver. Uses pistol magazines (.35 auto). -uplink-estoc-bundle-name = Estoc DMR bundle -uplink-estoc-bundle-desc = A designated marksman rifle, fitted with a mid-range optic for longer-range combat. Bundled with two rifle magazines (.20 rifle). - uplink-revolver-python-name = Python uplink-revolver-python-desc = A brutally simple, effective, and loud Syndicate revolver. Comes loaded with armor-piercing rounds. Uses .45 magnum. @@ -36,7 +33,19 @@ uplink-gloves-knuckleduster-name = Syndicate Knuckle Dusters uplink-gloves-knuckleduster-desc = A pair of plastitanium knuckle dusters that let you punch hard enough to break the captains jaw into pieces. uplink-hushpup-name = Hushpup -uplink-hushpup-desc = A powerful silenced shotgun with a low magazine capacity. Comes with a spare box of buckshot. Uses .50 shotgun ammo. +uplink-hushpup-desc = A powerful silenced shotgun with a low magazine capacity. Uses .50 shotgun ammo. + +uplink-c20r-name = C-20r +uplink-c20r-desc = Old faithful: The classic C-20r Submachine Gun. + +uplink-bulldog-name = Bulldog +uplink-bulldog-desc = Lean and mean: Contains the popular Bulldog Shotgun. + +uplink-estoc-name = Estoc DMR +uplink-estoc-desc = A designated marksman rifle, fitted with a mid-range optic for longer-range combat. + +uplink-grenade-launcher-name = China-Lake +uplink-grenade-launcher-desc = An old China-Lake grenade launcher bundled with 5 rounds of anti-personnel ammo. # Explosives uplink-explosive-grenade-name = Explosive Grenade @@ -258,8 +267,11 @@ uplink-sniper-bundle-desc = An inconspicuous briefcase that contains a Hristov, uplink-c20r-bundle-name = C-20r Bundle uplink-c20r-bundle-desc = Old faithful: The classic C-20r Submachine Gun, bundled with three magazines. -uplink-buldog-bundle-name = Bulldog Bundle -uplink-buldog-bundle-desc = Lean and mean: Contains the popular Bulldog Shotgun, a 12g slug drum, and four 12g buckshot drums. +uplink-bulldog-bundle-name = Bulldog Bundle +uplink-bulldog-bundle-desc = Lean and mean: Contains the popular Bulldog Shotgun, a 12g slug drum, and four 12g buckshot drums. + +uplink-estoc-bundle-name = Estoc DMR bundle +uplink-estoc-bundle-desc = A designated marksman rifle, fitted with a mid-range optic for longer-range combat. Bundled with two rifle magazines (.20 rifle). uplink-grenade-launcher-bundle-name = China-Lake Bundle uplink-grenade-launcher-bundle-desc = An old China-Lake grenade launcher bundled with 11 rounds of varying destructive capability. diff --git a/Resources/Prototypes/Catalog/Fills/Items/briefcases.yml b/Resources/Prototypes/Catalog/Fills/Items/briefcases.yml index baa3c4802d6..442af8f447a 100644 --- a/Resources/Prototypes/Catalog/Fills/Items/briefcases.yml +++ b/Resources/Prototypes/Catalog/Fills/Items/briefcases.yml @@ -11,15 +11,9 @@ - type: entity id: BriefcaseSyndieSniperBundleFilled - parent: BriefcaseSyndie + parent: BriefcaseBrown suffix: Syndicate, Sniper Bundle components: - - type: Item - size: Ginormous - - type: Storage - maxItemSize: Huge - grid: - - 0,0,6,3 - type: EntityTableContainerFill containers: storagebase: !type:AllSelector @@ -63,3 +57,58 @@ - id: ClothingEyesGlassesSunglasses - id: SpaceCash20000 - id: ClothingHandsGlovesColorBlack + +- type: entity + id: BriefcaseWeaponHushpupFilled + parent: BriefcaseWeaponSmall + name: secure hushpup case + components: + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + children: + - id: WeaponShotgunHushpup + - id: TreasureCoinIron + +- type: entity + id: BriefcaseWeaponC20Filled + parent: BriefcaseWeaponSmall + name: secure C-20r case + components: + - type: EntityTableContainerFill + containers: + storagebase: + id: WeaponSubMachineGunC20r + +- type: entity + id: BriefcaseWeaponBulldogFilled + parent: BriefcaseWeaponSmall + name: secure bulldog case + components: + - type: EntityTableContainerFill + containers: + storagebase: + id: WeaponShotgunBulldog + +- type: entity + id: BriefcaseWeaponDMRFilled + parent: BriefcaseWeapon + name: secure estoc case + components: + - type: EntityTableContainerFill + containers: + storagebase: + id: WeaponRifleEstoc + +- type: entity + id: BriefcaseWeaponChinaLakeFilled + parent: BriefcaseWeapon + name: secure china lake case + components: + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + children: + - id: WeaponLauncherChinaLake + - id: GrenadeFrag + amount: 2 diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index c179b3e1d2e..f9d559afbb9 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -14,19 +14,6 @@ categories: - UplinkWeaponry -- type: listing - id: UplinkRevolverPython - name: uplink-revolver-python-name - description: uplink-revolver-python-desc - productEntity: WeaponRevolverPythonAP - discountCategory: rareDiscounts - discountDownTo: - Telecrystal: 2 - cost: - Telecrystal: 4 # Originally was 13 and then 8 TC but was not used due to high cost - categories: - - UplinkWeaponry - # Inbuilt suppressor so it's sneaky + more expensive. - type: listing id: UplinkPistolCobra @@ -131,9 +118,9 @@ productEntity: ClothingHandsKnuckleDustersSyndicate discountCategory: veryRareDiscounts discountDownTo: - Telecrystal: 3 + Telecrystal: 2 cost: - Telecrystal: 6 + Telecrystal: 4 categories: - UplinkWeaponry @@ -184,7 +171,7 @@ discountDownTo: Telecrystal: 6 cost: - Telecrystal: 12 + Telecrystal: 10 categories: - UplinkWeaponry @@ -193,7 +180,7 @@ name: uplink-hushpup-name description: uplink-hushpup-desc icon: { sprite: /Textures/Objects/Weapons/Guns/Shotguns/hushpup.rsi, state: icon } - productEntity: ClothingBackpackDuffelSyndicateFilledHushpup + productEntity: BriefcaseWeaponHushpupFilled discountCategory: rareDiscounts discountDownTo: Telecrystal: 8 @@ -202,6 +189,25 @@ categories: - UplinkWeaponry +- type: listing + id: UplinkC20R + name: uplink-c20r-name + description: uplink-c20r-desc + icon: { sprite: /Textures/Objects/Weapons/Guns/SMGs/c20r.rsi, state: icon } + productEntity: BriefcaseWeaponC20Filled + discountCategory: veryRareDiscounts + discountDownTo: + Telecrystal: 10 + cost: + Telecrystal: 14 + categories: + - UplinkWeaponry + conditions: + - !type:StoreWhitelistCondition + blacklist: + tags: + - NukeOpsUplink + - type: listing id: UplinkC20RBundle name: uplink-c20r-bundle-name @@ -215,6 +221,68 @@ Telecrystal: 17 categories: - UplinkWeaponry + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkBulldog + name: uplink-bulldog-name + description: uplink-bulldog-desc + icon: { sprite: /Textures/Objects/Weapons/Guns/Shotguns/bulldog.rsi, state: icon } + productEntity: BriefcaseWeaponBulldogFilled + discountCategory: veryRareDiscounts + discountDownTo: + Telecrystal: 10 + cost: + Telecrystal: 14 + categories: + - UplinkWeaponry + conditions: + - !type:StoreWhitelistCondition + blacklist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkBulldogBundle + name: uplink-bulldog-bundle-name + description: uplink-bulldog-bundle-desc + icon: { sprite: /Textures/Objects/Weapons/Guns/Shotguns/bulldog.rsi, state: icon } + productEntity: ClothingBackpackDuffelSyndicateFilledShotgun + discountCategory: veryRareDiscounts + discountDownTo: + Telecrystal: 12 + cost: + Telecrystal: 20 + categories: + - UplinkWeaponry + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink + +- type: listing + id: UplinkEstoc + name: uplink-estoc-name + description: uplink-estoc-desc + icon: { sprite: /Textures/Objects/Weapons/Guns/Rifles/estoc.rsi, state: icon } + productEntity: BriefcaseWeaponDMRFilled + discountCategory: veryRareDiscounts + discountDownTo: + Telecrystal: 10 + cost: + Telecrystal: 14 + categories: + - UplinkWeaponry + conditions: + - !type:StoreWhitelistCondition + blacklist: + tags: + - NukeOpsUplink - type: listing id: UplinkEstocBundle @@ -229,20 +297,27 @@ Telecrystal: 18 categories: - UplinkWeaponry + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink - type: listing - id: UplinkBulldogBundle - name: uplink-buldog-bundle-name - description: uplink-buldog-bundle-desc - icon: { sprite: /Textures/Objects/Weapons/Guns/Shotguns/bulldog.rsi, state: icon } - productEntity: ClothingBackpackDuffelSyndicateFilledShotgun - discountCategory: veryRareDiscounts - discountDownTo: - Telecrystal: 12 + id: UplinkGrenadeLauncher + name: uplink-grenade-launcher-name + description: uplink-grenade-launcher-desc + icon: { sprite: /Textures/Objects/Weapons/Guns/Launchers/china_lake.rsi, state: icon } + productEntity: BriefcaseWeaponChinaLakeFilled cost: Telecrystal: 20 categories: - UplinkWeaponry + conditions: + - !type:StoreWhitelistCondition + blacklist: + tags: + - NukeOpsUplink - type: listing id: UplinkGrenadeLauncherBundle @@ -257,6 +332,11 @@ Telecrystal: 25 categories: - UplinkWeaponry + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink - type: listing id: UplinkL6SawBundle @@ -531,7 +611,7 @@ icon: { sprite: /Textures/Objects/Weapons/Guns/Ammunition/Magazine/Shotgun/m12.rsi, state: slug } productEntity: MagazineShotgunSlug cost: - Telecrystal: 3 + Telecrystal: 2 categories: - UplinkAmmo @@ -547,18 +627,6 @@ categories: - UplinkAmmo -# For the Python -- type: listing - id: UplinkSpeedLoaderMagnumAP - name: uplink-speedloader-magnum-name - description: uplink-speedloader-magnu-desc - icon: { sprite: /Textures/Objects/Weapons/Guns/Ammunition/SpeedLoaders/Magnum/magnum_speed_loader.rsi, state: icon } - productEntity: SpeedLoaderMagnumAP - cost: - Telecrystal: 3 - categories: - - UplinkAmmo - # For the mosin - type: listing id: UplinkMosinAmmo @@ -1196,7 +1264,6 @@ components: - SurplusBundle - - type: listing id: UplinkSingarityBeacon name: uplink-singularity-beacon-name diff --git a/Resources/Prototypes/Entities/Objects/Misc/briefcases.yml b/Resources/Prototypes/Entities/Objects/Misc/briefcases.yml index 55d4bb33ce8..acb253219f4 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/briefcases.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/briefcases.yml @@ -32,3 +32,48 @@ components: - type: Item size: Huge + +- type: entity + parent: [BriefcaseBase, BaseSyndicateContraband] + id: BriefcaseWeapon + name: secure weapon case + suffix: Gun, Empty + description: Useful for aspiring mercenaries, whether you're fighting for a company, a nation or anyone else. Or just making a really big omelette. + components: + - type: Appearance + - type: Sprite + sprite: Objects/Storage/Briefcases/weapon_case_large.rsi + layers: + - state: icon + map: [ base ] + - state: locked + map: [ "enum.LockVisualLayers.Lock" ] + shader: unshaded + - state: unlocked + map: [ light ] + shader: unshaded + - type: Lock + - type: LockVisuals + - type: GenericVisualizer + visuals: + enum.StorageVisuals.Open: + base: + True: { state: icon-open } + False: { state: icon } + light: + True: { visible: true } + False: { visible: false } + +- type: entity + parent: BriefcaseWeapon + id: BriefcaseWeaponSmall + suffix: Gun, Small, Empty + components: + - type: Sprite + sprite: Objects/Storage/Briefcases/weapon_case.rsi + - type: Item + size: Large + - type: Storage + maxItemSize: Large + grid: + - 0,0,3,1 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml index 030966930b7..f5fffa393f3 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml @@ -1,6 +1,6 @@ - type: entity name: BaseWeaponLauncher - parent: BaseItem + parent: [ BaseItem, BaseGunWieldable ] id: BaseWeaponLauncher description: A rooty tooty point and shooty. abstract: true @@ -19,10 +19,18 @@ containers: ballistic-ammo: !type:Container ents: [] + - type: Gun + fireRate: 1 + projectileSpeed: 25 # Slower than a bullet, same speed as our old projectile limit. + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/grenade_launcher.ogg - type: entity name: china lake - parent: [BaseWeaponLauncher, BaseGunWieldable, BaseSyndicateContraband] + parent: [BaseWeaponLauncher, BaseSyndicateContraband] id: WeaponLauncherChinaLake description: PLOOP. components: @@ -41,13 +49,6 @@ shape: - 0,0,4,2 - type: AmmoCounter - - type: Gun - fireRate: 1 - selectedMode: SemiAuto - availableModes: - - SemiAuto - soundGunshot: - path: /Audio/Weapons/Guns/Gunshots/grenade_launcher.ogg - type: BallisticAmmoProvider whitelist: tags: @@ -61,7 +62,7 @@ price: 10000 - type: entity - parent: [ BaseWeaponLauncher, BaseGunWieldable, BaseMajorContraband ] + parent: [ BaseWeaponLauncher, BaseMajorContraband ] id: WeaponLauncherHydra name: hydra description: PLOOP... FSSSSSS... @@ -79,13 +80,6 @@ - type: Item size: Huge - type: AmmoCounter - - type: Gun - fireRate: 1 - selectedMode: SemiAuto - availableModes: - - SemiAuto - soundGunshot: - path: /Audio/Weapons/Guns/Gunshots/grenade_launcher.ogg - type: GunRequiresWield - type: ContainerContainer containers: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml index 21dc8b7f31b..f71a39c48a4 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml @@ -321,3 +321,7 @@ - type: Appearance - type: StaticPrice price: 5000 + - type: MeleeWeapon + damage: + types: + Blunt: 8 diff --git a/Resources/Textures/Objects/Storage/Briefcases/weapon_case.rsi/icon-open.png b/Resources/Textures/Objects/Storage/Briefcases/weapon_case.rsi/icon-open.png new file mode 100644 index 0000000000000000000000000000000000000000..8e6d00afdbd901ee1c72197a5edfae62880e73f1 GIT binary patch literal 7146 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 Sw}XX(P;8v7&#d0G_5T1e>4E$J literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Storage/Briefcases/weapon_case.rsi/inhand-left.png b/Resources/Textures/Objects/Storage/Briefcases/weapon_case.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..8e888f2d7fa0e312482eb547966b1bb6f89e4630 GIT binary patch literal 15028 zcmeI3eQXnD9LJx|;YNjlj3DAmn&KNscQ0+X_0o3Wif+c@GOF7k0=Mh4?Oc0TdNWxGK$K)A3L_CGMrDFTXAGc1WI{wuP<*cK+NWK|gT_CfChh(9 zJm2r{_uS`s+5K~mH!QksvU!#n05G|}&ew>p^NnxmrRaCFyz*OgnHZ^S(Ezxt-1wTn zi!aRtp!zyF(5yH6?+_$4Tp1X|sTG%1i^+e&~o<#wvr&DqTtun}`Jt8nnEEcPX*(=m&JHxqLE{5e9p0^=|P3u;4F>X_|*{LL> zd3;clqH;u+RmEcD6aEK|r7lro-3S2UCy zT2NwO2!^4eYskkH^hG*UUDZ0&aY|;o$1RNJ#P844E;!zBxL|2bU$_b(NFy!i)B@cR z$TUJt?TSip;VN`1vkTq5F1KYTCnuB9Gw#@7Tpq_}^rURbrI4B-H@a7$HVQ>ujRsUT z*`zZ#U=x<_+V+E~uURRwrna8?UWJDvkm=I22BCn)OTMPS{D0l0nHsZ?NquKj zMkk#Z!ZgO{|80o^X~vYQlQpzHyRmhPR&VkwTMSp`wvKj$~%dc_m{*z@VGSY0VBR<4oJ+|2l!G{Fr_G8nF(jTxdh3QYBU6C(+b4 zJtjusf_AhfE@rQ%vgX?I)4Lht^bg6o6On4oouAPaJ9a+Z#-S#lwSdMYCg*^2Gh^Da zl~ej=V@^X|NqrU1q7TCvziBJpoo{Wquodslw`QGpDYEY6)7A2tF_&@jrjCWh=pg}m zE1gce)6L{J=Q|qYI1DxWWVC-ZV^vl<(w_W|g2tBdj95q7n3^i=-+6K-Q?2M>0X?TM znFp2JNzQD9|2fFs(f^znPe+U3G>9?9MMQ)PC@!1^F{ZePh;RYLh0`F$6c-T@E}*z@ z8pN35A|k>C6cL`1lN z;=*YVV~UH22p3RXI1OSdu|1w$XxGR5QrZ>d6-kSvC~UN`gbbJ=I+^lW%Vt0 zuDfd2(t%0ef$~Y$@T)GX+E?FGyn6rCIcs-@PA$FHw|+x$$?bu^`{q5k?Bw#1ZNn{( zmmWJZ-Bdas6irQlVhhL(6TkF6`+m<;+}_xP#O4!1$BN@C!K><9OOI8~NK6r?&p*|? zcV^%&=e+sT7yA1<+4^<+l${?PdwbycH#MN4yRXF5+n6TCuXo0Z(kBj_GEXU)YCdz^wD;bPfz_oW7I6Rm`^2oWimgi18X9QbbzjVT58|t%;RVu(7@NmByAYqsDus^$QpIw%)Shp??4o C?}04< literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Storage/Briefcases/weapon_case.rsi/inhand-right.png b/Resources/Textures/Objects/Storage/Briefcases/weapon_case.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..97d0e35f3c16b24de92c72b7101b3d6cfc24b52f GIT binary patch literal 14897 zcmeI3eQXnD9LJx*GR6#Kipq;GISS$yZ0~w)*Y(ntjdif8g=H_YO^CbQ-L`Y>UFqFu zHzE`;5(JT82!Z zB%^tJk|u=ZkS?nVW#r}C)gIkrG8qG)b*Grn(6BeZERq$5kd!x0Sv)VYT zeLiF57zRm_P-f-utD@Y|JDQ`+%vjA>P0ah`i3Vu4cp)Uuj&eqUpRMNVPsMY_Q0( z$hlaSu?Y^F*=4hd<__LoZZ5a;g4xQKv#hP7-05@*afp6DY9Eu@rwTpBZb_yV?=UrD zACr1%ScWGZA3!w5?C*4l9BIZ3RU>O~efA>j7Ovj-S=Jz}%xoR)2*~j>Da400$=Goo z)998<9b&07%J9T@F2@VTY33D-4IzncI-@l`t&}rqlmBl46ZsMQ_+v!6B;{5cDv>I# z8b67qcIXj4ELC>GHE}z8J&`rjmYv>B8>fFj&MZWtHM2gWD|T!>-NvED!LJh9o^-`XgV?oN&_1cTv$Y?fZ#%DU}J&{iwG4ETqq4}OmJZl zp#p*nrGbqJE-WHcKyaZnura}fMT80nE|dl~Cb+POPyxY((!j<97ZwpJAh=K(*qGqL zB0>cO7fJ&g6I@tCsDR)?X<%c53yTO95L_q?Y)o)r5upNt3#EaL2`(%mR6uZ{G_Wzj zg++u42riTcHYT{Rh)@B+h0?&r1Q!+&Dj>K}8rYcN!XiQi1Q$vJ8xveuM5ut^LTO-Q zf(wfX6%bq~4QxzsVG*GMf(xaAjc$6BJjn&(i4&0@TEXXsHyh@(DxVs zu?+xRy9uwq0MNq#@M{|Y-0J{LSGPa+*&+b)HrDzo8>8p1oIj*&V2TTdE&<=-CJ`*p4V9dP18!N%yMkrzsusMc<=XVZ;&3!9pZ z{PXOU-NA2`ub0;!@84Tic_}y%e5>x+ZOL0PcyM^+#NV;q!q&~jnbXLgTz7uWcJZHs z6*sT+uU29|d{A1uea*Q`{jUxD+b-CIEue0NckO}GO?i6`e{yZ`*oKC)t;bid{mXOU zaCC&<@*!RE%uW!iI(mJ2Y~Z`4uMF?#z3|1FY2Qz8J9=$#{*0ghe19?Z?!f%m?}cAZ zWdiG+vrg~vpK0BEGdUWuzaAldWrA7g>CEq E17|)#yZ`_I literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Storage/Briefcases/weapon_case.rsi/locked.png b/Resources/Textures/Objects/Storage/Briefcases/weapon_case.rsi/locked.png new file mode 100644 index 0000000000000000000000000000000000000000..c34a8689fde2483c734a2aa9307d422cb839b6d5 GIT binary patch literal 5747 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 AIRF3v literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Storage/Briefcases/weapon_case.rsi/meta.json b/Resources/Textures/Objects/Storage/Briefcases/weapon_case.rsi/meta.json new file mode 100644 index 00000000000..ab2d50b59c0 --- /dev/null +++ b/Resources/Textures/Objects/Storage/Briefcases/weapon_case.rsi/meta.json @@ -0,0 +1,31 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by SlamBamActionMan (github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "icon" + }, + { + "name": "locked" + }, + { + "name": "unlocked" + }, + { + "name": "icon-open" + } + ] +} diff --git a/Resources/Textures/Objects/Storage/Briefcases/weapon_case.rsi/unlocked.png b/Resources/Textures/Objects/Storage/Briefcases/weapon_case.rsi/unlocked.png new file mode 100644 index 0000000000000000000000000000000000000000..e61d3b113fe0d7c27da36b0739c8b246fc18e7ad GIT binary patch literal 5790 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Storage/Briefcases/weapon_case_large.rsi/inhand-left.png b/Resources/Textures/Objects/Storage/Briefcases/weapon_case_large.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..cb1372c97f3eceb49735a077f61df20a48915deb GIT binary patch literal 15671 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Storage/Briefcases/weapon_case_large.rsi/locked.png b/Resources/Textures/Objects/Storage/Briefcases/weapon_case_large.rsi/locked.png new file mode 100644 index 0000000000000000000000000000000000000000..4a1404f2007a56d320da15ed6e2470b8fa2bd5aa GIT binary patch literal 5792 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Storage/Briefcases/weapon_case_large.rsi/meta.json b/Resources/Textures/Objects/Storage/Briefcases/weapon_case_large.rsi/meta.json new file mode 100644 index 00000000000..ab2d50b59c0 --- /dev/null +++ b/Resources/Textures/Objects/Storage/Briefcases/weapon_case_large.rsi/meta.json @@ -0,0 +1,31 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by SlamBamActionMan (github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "icon" + }, + { + "name": "locked" + }, + { + "name": "unlocked" + }, + { + "name": "icon-open" + } + ] +} diff --git a/Resources/Textures/Objects/Storage/Briefcases/weapon_case_large.rsi/unlocked.png b/Resources/Textures/Objects/Storage/Briefcases/weapon_case_large.rsi/unlocked.png new file mode 100644 index 0000000000000000000000000000000000000000..34d574abcec81fce243511e1c3f51ceb34ec134c GIT binary patch literal 5816 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_syn.rsi/meta.json b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_syn.rsi/meta.json index ebc7858be97..f4c473b8cad 100644 --- a/Resources/Textures/Objects/Tools/Toolboxes/toolbox_syn.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/Toolboxes/toolbox_syn.rsi/meta.json @@ -22,4 +22,4 @@ "name": "icon-open" } ] -} \ No newline at end of file +} From e62c785bf1430f941a2e4b389e77f5907df29805 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 19 Jan 2026 23:07:54 +0000 Subject: [PATCH 032/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 71e6f3a1a3c..187cd72ab13 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,13 +1,4 @@ Entries: -- author: ArtisticRoomba - changes: - - message: Added atmospherics delta-pressure structure damage. Objects like windows, - thindows, windoors, etc. will have damage done to them depending on the pressure - difference across the sides of the object. - type: Add - id: 8918 - time: '2025-09-03T23:58:48.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39238 - author: ArtisticRoomba changes: - message: Inflatable walls and airlocks now actually take Delta-Pressure damage. @@ -3946,3 +3937,18 @@ id: 9424 time: '2026-01-19T22:48:48.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42482 +- author: Princess-Cheeseballs + changes: + - message: Longarms in the uplink are cheaper but don't come with extra ammo. + type: Tweak + - message: Syndicate knuckle dusters are now 2 TC + type: Tweak + - message: Shotgun slugs in the uplink are now 2 TC + type: Tweak + - message: China Lake's grenades now fly slower in the air + type: Tweak + - message: Python has been removed from the uplink + type: Remove + id: 9425 + time: '2026-01-19T23:06:47.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42468 From daccef7b43f24687feb7aa780f4bd9b0f162fd39 Mon Sep 17 00:00:00 2001 From: eoineoineoin Date: Mon, 19 Jan 2026 23:27:42 +0000 Subject: [PATCH 033/603] Rename "Inset" style, implement in sheetlets (#41975) * Rename "Inset" style, implement in sheetlets * Remove from StyleNano --- .../Anomaly/Ui/AnomalyGeneratorWindow.xaml | 4 ++-- Content.Client/Atmos/Monitor/UI/AirAlarmWindow.xaml | 2 +- .../CloningConsole/UI/CloningConsoleWindow.xaml | 4 ++-- Content.Client/Power/APC/UI/ApcMenu.xaml | 4 ++-- Content.Client/Power/Battery/BatteryMenu.xaml | 12 ++++++------ Content.Client/Power/Generator/GeneratorWindow.xaml | 4 ++-- .../Power/PowerCharge/PowerChargeWindow.xaml | 4 ++-- .../Stylesheets/Sheetlets/PanelSheetlet.cs | 4 ++++ Content.Client/Stylesheets/StyleClass.cs | 1 + Content.Client/Stylesheets/StyleNano.cs | 12 ------------ 10 files changed, 22 insertions(+), 29 deletions(-) diff --git a/Content.Client/Anomaly/Ui/AnomalyGeneratorWindow.xaml b/Content.Client/Anomaly/Ui/AnomalyGeneratorWindow.xaml index 88df194ecb1..269b44f62c4 100644 --- a/Content.Client/Anomaly/Ui/AnomalyGeneratorWindow.xaml +++ b/Content.Client/Anomaly/Ui/AnomalyGeneratorWindow.xaml @@ -1,4 +1,4 @@ - - + diff --git a/Content.Client/CloningConsole/UI/CloningConsoleWindow.xaml b/Content.Client/CloningConsole/UI/CloningConsoleWindow.xaml index f08b94c7ac4..f4447fce0bf 100644 --- a/Content.Client/CloningConsole/UI/CloningConsoleWindow.xaml +++ b/Content.Client/CloningConsole/UI/CloningConsoleWindow.xaml @@ -8,7 +8,7 @@ VerticalExpand="True" HorizontalExpand="True" MinSize="100 150"> - + - + + [ByRefEvent] public record struct SexChangedEvent(Sex OldSex, Sex NewSex); } From 6c2ca3ce7360f9ec370c16eaf570afe41da98ba6 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 20 Jan 2026 19:31:01 +0000 Subject: [PATCH 051/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 9264b412fef..e2d5eb825a8 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: whatston3 - changes: - - message: Lathe UIs are now way smoother when printing mass amounts of fast-printing - items. - type: Fix - id: 8925 - time: '2025-09-04T19:37:15.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39886 - author: Princess-Cheeseballs changes: - message: You can no longer crawl under counters, or tables without space underneath. @@ -3956,3 +3948,10 @@ id: 9431 time: '2026-01-20T16:02:53.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42444 +- author: sowelipililimute + changes: + - message: Voice emotes are now correct for your character's sex + type: Fix + id: 9432 + time: '2026-01-20T19:29:53.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42550 From c9bb2ddf7cd7bb49bf969ab29853be35329bfbe8 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Tue, 20 Jan 2026 11:19:40 -0800 Subject: [PATCH 052/603] Fix Changelog (#42552) whoops Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- Resources/Changelog/Changelog.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index e2d5eb825a8..1b821e4ff18 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -3888,7 +3888,7 @@ changes: - message: Longarms in the uplink are cheaper but don't come with extra ammo. type: Tweak - - message: Syndicate knuckle dusters are now 2 TC + - message: Syndicate knuckle dusters are now 4 TC type: Tweak - message: Shotgun slugs in the uplink are now 2 TC type: Tweak From 59e10d2854116888f3b0e60b105aeb3e47f77eb3 Mon Sep 17 00:00:00 2001 From: Velken <8467292+Velken@users.noreply.github.com> Date: Tue, 20 Jan 2026 17:35:47 -0300 Subject: [PATCH 053/603] Tile Stacking - attempt 2 (#42543) * WORK IN PROGRESS 1 * ITS ALIVE, ALIVE!!!! * clean up * WIP 1 * fix small oversight * big diff of doom * added CVAR to tile history stack size * component time * filescoped namespaces + remove redundant nametag * fix silly little mistakes * typo * TileStacksTest * bweeeeeeh :P * nuke cvar * :3 * WIP2025 * Fix submodule * It's beginning to look a lot like Christmas * It's the Most Wonderful Time of the Year * tiny fix * fixed extra spacing on yaml * slightly improve tilestacking test * Part 1 out of 2 (part 2 tomorrow) * Part 2 * add a simple tile construction test for tilestacking * guh * address reviews (no documentation yet) * documentation be upon ye * remove extra spaces * prediction fix * dirt * oops :p * attempt to make this suck less * am never doing a PR that touches explosion system ever again * small fix * maybe a bit better now? * more cleanup * one last cleanup for me --------- Co-authored-by: Killerqu00 Co-authored-by: Killerqu00 <47712032+Killerqu00@users.noreply.github.com> Co-authored-by: ScarKy0 Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- .../Tests/Construction/RCDTest.cs | 2 +- .../Interaction/InteractionTest.Constants.cs | 1 + .../Tests/Tiles/TileConstructionTests.cs | 21 + .../Tests/Tiles/TileStackRecursionTest.cs | 66 ++ .../ExplosionSystem.Processing.cs | 100 ++- .../EntitySystems/ExplosionSystem.cs | 8 +- Content.Server/Maps/TileGridSplitSystem.cs | 74 ++ Content.Shared/CCVar/CCVars.Game.cs | 9 + Content.Shared/Maps/ContentTileDefinition.cs | 9 +- Content.Shared/Maps/TileHistoryComponent.cs | 125 ++++ Content.Shared/Maps/TileSystem.cs | 195 ++++- Content.Shared/RCD/Systems/RCDSystem.cs | 8 +- Content.Shared/Tiles/FloorTileSystem.cs | 29 +- Resources/Prototypes/Tiles/floors.yml | 675 ++++-------------- Resources/Prototypes/Tiles/planet.yml | 53 +- Resources/Prototypes/Tiles/plating.yml | 56 +- 16 files changed, 791 insertions(+), 640 deletions(-) create mode 100644 Content.IntegrationTests/Tests/Tiles/TileStackRecursionTest.cs create mode 100644 Content.Server/Maps/TileGridSplitSystem.cs create mode 100644 Content.Shared/Maps/TileHistoryComponent.cs diff --git a/Content.IntegrationTests/Tests/Construction/RCDTest.cs b/Content.IntegrationTests/Tests/Construction/RCDTest.cs index 814f7e89aa8..f20a0cb434c 100644 --- a/Content.IntegrationTests/Tests/Construction/RCDTest.cs +++ b/Content.IntegrationTests/Tests/Construction/RCDTest.cs @@ -194,7 +194,7 @@ await AssertEntityLookup( // Deconstruct the steel tile. await Interact(null, pEast); await RunSeconds(settingDeconstructTile.Delay + 1); // wait for the deconstruction to finish - await AssertTile(Lattice, FromServer(pEast)); + await AssertTile(Plating, FromServer(pEast)); // Check that the cost of the deconstruction was subtracted from the current charges. newCharges = sCharges.GetCurrentCharges(ToServer(rcd)); diff --git a/Content.IntegrationTests/Tests/Interaction/InteractionTest.Constants.cs b/Content.IntegrationTests/Tests/Interaction/InteractionTest.Constants.cs index 8917ba7ead5..3cfb5a5dbaf 100644 --- a/Content.IntegrationTests/Tests/Interaction/InteractionTest.Constants.cs +++ b/Content.IntegrationTests/Tests/Interaction/InteractionTest.Constants.cs @@ -12,6 +12,7 @@ public abstract partial class InteractionTest protected const string FloorItem = "FloorTileItemSteel"; protected const string Plating = "Plating"; protected const string Lattice = "Lattice"; + protected const string PlatingBrass = "PlatingBrass"; // Structures protected const string Airlock = "Airlock"; diff --git a/Content.IntegrationTests/Tests/Tiles/TileConstructionTests.cs b/Content.IntegrationTests/Tests/Tiles/TileConstructionTests.cs index 0827e11b705..64c4c291feb 100644 --- a/Content.IntegrationTests/Tests/Tiles/TileConstructionTests.cs +++ b/Content.IntegrationTests/Tests/Tiles/TileConstructionTests.cs @@ -100,4 +100,25 @@ public async Task FloorConstructDeconstruct() await AssertEntityLookup((FloorItem, 1)); } + + /// + /// Test brassPlating -> floor -> brassPlating using tilestacking + /// + [Test] + public async Task BrassPlatingPlace() + { + await SetTile(PlatingBrass); + + // Brass Plating -> Tile + await InteractUsing(FloorItem); + Assert.That(HandSys.GetActiveItem((SEntMan.GetEntity(Player), Hands)), Is.Null); + await AssertTile(Floor); + AssertGridCount(1); + + // Tile -> Brass Plating + await InteractUsing(Pry); + await AssertTile(PlatingBrass); + AssertGridCount(1); + await AssertEntityLookup((FloorItem, 1)); + } } diff --git a/Content.IntegrationTests/Tests/Tiles/TileStackRecursionTest.cs b/Content.IntegrationTests/Tests/Tiles/TileStackRecursionTest.cs new file mode 100644 index 00000000000..52c5b032656 --- /dev/null +++ b/Content.IntegrationTests/Tests/Tiles/TileStackRecursionTest.cs @@ -0,0 +1,66 @@ +using System.Collections.Generic; +using System.Linq; +using Content.Shared.CCVar; +using Content.Shared.Maps; +using Robust.Shared.Configuration; +using Robust.Shared.Prototypes; + +namespace Content.IntegrationTests.Tests.Tiles; + +public sealed class TileStackRecursionTest +{ + [Test] + public async Task TestBaseTurfRecursion() + { + await using var pair = await PoolManager.GetServerClient(); + var protoMan = pair.Server.ResolveDependency(); + var cfg = pair.Server.ResolveDependency(); + var maxTileHistoryLength = cfg.GetCVar(CCVars.TileStackLimit); + Assert.That(protoMan.TryGetInstances(out var tiles)); + Assert.That(tiles, Is.Not.EqualTo(null)); + //store the distance from the root node to the given tile node + var nodes = new List<(ProtoId, int)>(); + //each element of list is a connection from BaseTurf tile to tile that goes on it + var edges = new List<(ProtoId, ProtoId)>(); + foreach (var ctdef in tiles!.Values) + { + //at first, each node is unexplored and has infinite distance to root. + //we use space node as root - everything is supposed to start at space, and it's hardcoded into the game anyway. + if (ctdef.ID == ContentTileDefinition.SpaceID) + { + nodes.Insert(0, (ctdef.ID, 0)); //space is the first element + continue; + } + Assert.That(ctdef.BaseTurf != ctdef.ID); + nodes.Add((ctdef.ID, int.MaxValue)); + if (ctdef.BaseTurf != null) + edges.Add((ctdef.BaseTurf.Value, ctdef.ID)); + Assert.That(ctdef.BaseWhitelist, Does.Not.Contain(ctdef.ID)); + edges.AddRange(ctdef.BaseWhitelist.Select(possibleTurf => + (possibleTurf, new ProtoId(ctdef.ID)))); + } + Bfs(nodes, edges, maxTileHistoryLength); + await pair.CleanReturnAsync(); + } + + private void Bfs(List<(ProtoId, int)> nodes, List<(ProtoId, ProtoId)> edges, int depthLimit) + { + var root = nodes[0]; + var queue = new Queue<(ProtoId, int)>(); + queue.Enqueue(root); + while (queue.Count != 0) + { + var u = queue.Dequeue(); + //get a list of tiles that can be put on this tile + var adj = edges.Where(n => n.Item1 == u.Item1).Select(n => n.Item2); + var adjNodes = nodes.Where(n => adj.Contains(n.Item1)).ToList(); + foreach (var node in adjNodes) + { + var adjNode = node; + adjNode.Item2 = u.Item2 + 1; + Assert.That(adjNode.Item2, Is.LessThanOrEqualTo(depthLimit)); //we can doomstack tiles on top of each other. Bad! + queue.Enqueue(adjNode); + } + } + } +} diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs index 2cec8d707aa..5f83288009d 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs @@ -17,6 +17,8 @@ using Robust.Shared.Timing; using Robust.Shared.Utility; using System.Numerics; +using Content.Shared.Damage.Systems; +using Robust.Shared.Prototypes; using TimedDespawnComponent = Robust.Shared.Spawners.TimedDespawnComponent; namespace Content.Server.Explosion.EntitySystems; @@ -506,10 +508,11 @@ public void DamageFloorTile(TileRef tileRef, int maxTileBreak, bool canCreateVacuum, List<(Vector2i GridIndices, Tile Tile)> damagedTiles, - ExplosionPrototype type) + ExplosionPrototype type, + TileHistoryComponent? history, + ref (TileHistoryChunk? Chunk, Vector2i Indices)? chunk) { - if (_tileDefinitionManager[tileRef.Tile.TypeId] is not ContentTileDefinition tileDef - || tileDef.Indestructible) + if (_tileDefinitionManager[tileRef.Tile.TypeId] is not ContentTileDefinition tileDef || tileDef.Indestructible) return; if (!CanCreateVacuum) @@ -517,18 +520,17 @@ public void DamageFloorTile(TileRef tileRef, else if (tileDef.MapAtmosphere) canCreateVacuum = true; // is already a vacuum. + // break the tile into its underlying parts int tileBreakages = 0; while (maxTileBreak > tileBreakages && _robustRandom.Prob(type.TileBreakChance(effectiveIntensity))) { tileBreakages++; effectiveIntensity -= type.TileBreakRerollReduction; - // does this have a base-turf that we can break it down to? - if (string.IsNullOrEmpty(tileDef.BaseTurf)) + if (GetNextTile((tileDef, tileRef.GridIndices), history, ref chunk) is not { } newId) break; - if (_tileDefinitionManager[tileDef.BaseTurf] is not ContentTileDefinition newDef) - break; + var newDef = (ContentTileDefinition) _tileDefinitionManager[newId]; if (newDef.MapAtmosphere && !canCreateVacuum) break; @@ -541,6 +543,44 @@ public void DamageFloorTile(TileRef tileRef, damagedTiles.Add((tileRef.GridIndices, new Tile(tileDef.TileId))); } + + private ProtoId? GetNextTile((ContentTileDefinition tileDef, Vector2i gridIndices) tile, + TileHistoryComponent? history, + ref (TileHistoryChunk? Chunk, Vector2i Indices)? chunk) + { + if (chunk?.Chunk == null || !chunk.Value.Chunk.History.TryGetValue(tile.gridIndices, out var stack)) + return tile.tileDef.BaseTurf; // No tile stack means we return BaseTurf if it exists! + + // last entry in the stack + if (stack.Count > 1) + { + var newId = stack[^1]; + stack.RemoveAt(stack.Count - 1); + chunk.Value.Chunk.LastModified = _timing.CurTick; + return newId; + } + + chunk.Value.Chunk.History.Remove(tile.gridIndices); + if (chunk.Value.Chunk.History.Count == 0) + { + history?.ChunkHistory.Remove(chunk.Value.Indices); + chunk = null; + } + else + { + chunk.Value.Chunk.LastModified = _timing.CurTick; + } + + return stack[0]; // If the stack is somehow empty, this will throw, but we will have at least removed it from dict first! + } + + public void DirtyHistory(EntityUid grid) + { + if (!_tileHistoryQuery.TryComp(grid, out var history)) + return; + + Dirty(grid, history); + } } /// @@ -573,11 +613,14 @@ struct ExplosionData /// /// The actual grid that this corresponds to. If null, this implies space. /// - public Entity? MapGrid; + public Entity? MapGrid; } private readonly List _explosionData = new(); + private Entity? _currentGrid; + private (TileHistoryChunk? Chunk, Vector2i Indices)? _currentChunk; + /// /// The explosion intensity associated with each tile iteration. /// @@ -625,7 +668,6 @@ struct ExplosionData private DamageSpecifier? _expectedDamage; #endif private Entity _currentLookup = default!; - private Entity? _currentGrid; private float _currentIntensity; private float _currentThrowForce; private List.Enumerator _currentEnumerator; @@ -691,7 +733,8 @@ public Explosion(ExplosionSystem system, EntityUid visualEnt, EntityUid? cause, SharedMapSystem mapSystem, - Shared.Damage.Systems.DamageableSystem damageable) + DamageableSystem damageable, + EntityQuery historyQuery) { VisualEnt = visualEnt; Cause = cause; @@ -722,7 +765,7 @@ public Explosion(ExplosionSystem system, { TileLists = spaceData.TileLists, Lookup = (mapUid, entMan.GetComponent(mapUid)), - MapGrid = null + MapGrid = null, }); _spaceMatrix = spaceMatrix; @@ -731,11 +774,12 @@ public Explosion(ExplosionSystem system, foreach (var grid in gridData) { + var history = historyQuery.CompOrNull(grid.Grid); _explosionData.Add(new ExplosionData { TileLists = grid.TileLists, Lookup = (grid.Grid, entMan.GetComponent(grid.Grid)), - MapGrid = grid.Grid, + MapGrid = (grid.Grid, entMan.GetComponent(grid.Grid), history), }); } @@ -784,10 +828,11 @@ private bool TryGetNextTileEnumerator() _currentEnumerator = tileList.GetEnumerator(); _currentLookup = _explosionData[_currentDataIndex].Lookup; _currentGrid = _explosionData[_currentDataIndex].MapGrid; + _currentChunk = null; _currentDataIndex++; // sanity checks, in case something changed while the explosion was being processed over several ticks. - if (_currentLookup.Comp.Deleted || _currentGrid != null && !_entMan.EntityExists(_currentGrid.Value)) + if (_currentLookup.Comp.Deleted || (_currentGrid is { } grid && !_entMan.EntityExists(grid.Owner))) continue; return true; @@ -843,19 +888,19 @@ public int Process(int processingTarget) // Is the current tile on a grid (instead of in space)? if (_currentGrid is { } currentGrid && - _mapSystem.TryGetTileRef(currentGrid, currentGrid.Comp, _currentEnumerator.Current, out var tileRef) && + _mapSystem.TryGetTileRef(currentGrid.Owner, currentGrid.Comp1, _currentEnumerator.Current, out var tileRef) && !tileRef.Tile.IsEmpty) { - if (!_tileUpdateDict.TryGetValue(currentGrid, out var tileUpdateList)) + if (!_tileUpdateDict.TryGetValue((currentGrid.Owner, currentGrid.Comp1), out var tileUpdateList)) { tileUpdateList = new(); - _tileUpdateDict[currentGrid] = tileUpdateList; + _tileUpdateDict[(currentGrid.Owner, currentGrid.Comp1)] = tileUpdateList; } // damage entities on the tile. Also figures out whether there are any solid entities blocking the floor // from being destroyed. var canDamageFloor = _system.ExplodeTile(_currentLookup, - currentGrid, + (currentGrid.Owner, currentGrid.Comp1), _currentEnumerator.Current, _currentThrowForce, _currentDamage, @@ -869,7 +914,24 @@ public int Process(int processingTarget) // If the floor is not blocked by some dense object, damage the floor tiles. if (canDamageFloor) - _system.DamageFloorTile(tileRef, _currentIntensity * _tileBreakScale, _maxTileBreak, _canCreateVacuum, tileUpdateList, ExplosionType); + { + var tileIndices = _currentEnumerator.Current; + var chunkIndices = SharedMapSystem.GetChunkIndices(tileIndices, TileSystem.ChunkSize); + if (_currentChunk?.Indices != chunkIndices) + { + var chunk = currentGrid.Comp2?.ChunkHistory.GetValueOrDefault(chunkIndices); + _currentChunk = (chunk, chunkIndices); + } + + _system.DamageFloorTile(tileRef, + _currentIntensity * _tileBreakScale, + _maxTileBreak, + _canCreateVacuum, + tileUpdateList, + ExplosionType, + currentGrid.Comp2, + ref _currentChunk); + } } else { @@ -909,6 +971,8 @@ private void SetTiles() if (list.Count > 0 && _entMan.EntityExists(grid.Owner)) { _mapSystem.SetTiles(grid.Owner, grid, list); + + _system.DirtyHistory(grid.Owner); } } _tileUpdateDict.Clear(); diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs index 4824810dae5..400f555db47 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs @@ -17,6 +17,7 @@ using Content.Shared.Explosion.EntitySystems; using Content.Shared.GameTicking; using Content.Shared.Inventory; +using Content.Shared.Maps; using Content.Shared.Projectiles; using Content.Shared.Throwing; using Robust.Server.GameStates; @@ -28,6 +29,7 @@ using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; +using Robust.Shared.Timing; using Robust.Shared.Utility; namespace Content.Server.Explosion.EntitySystems; @@ -41,6 +43,7 @@ public sealed partial class ExplosionSystem : SharedExplosionSystem [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IAdminLogManager _adminLogger = default!; + [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly DamageableSystem _damageableSystem = default!; @@ -63,6 +66,7 @@ public sealed partial class ExplosionSystem : SharedExplosionSystem private EntityQuery _destructibleQuery; private EntityQuery _damageableQuery; private EntityQuery _airtightQuery; + private EntityQuery _tileHistoryQuery; /// /// "Tile-size" for space when there are no nearby grids to use as a reference. @@ -105,6 +109,7 @@ public override void Initialize() _destructibleQuery = GetEntityQuery(); _damageableQuery = GetEntityQuery(); _airtightQuery = GetEntityQuery(); + _tileHistoryQuery = GetEntityQuery(); _prototypeManager.PrototypesReloaded += ReloadExplosionPrototypes; } @@ -397,7 +402,8 @@ public void QueueExplosion(MapCoordinates epicenter, visualEnt, queued.Cause, _map, - _damageableSystem); + _damageableSystem, + _tileHistoryQuery); } private void CameraShake(float range, MapCoordinates epicenter, float totalIntensity) diff --git a/Content.Server/Maps/TileGridSplitSystem.cs b/Content.Server/Maps/TileGridSplitSystem.cs new file mode 100644 index 00000000000..fef0efed2b2 --- /dev/null +++ b/Content.Server/Maps/TileGridSplitSystem.cs @@ -0,0 +1,74 @@ +using System.Numerics; +using Content.Shared.Maps; +using Robust.Shared.Map; +using Robust.Shared.Map.Components; +using Robust.Shared.Prototypes; +using Robust.Shared.Timing; + +namespace Content.Server.Maps; + +/// +/// This system handles transferring data when a grid is split. +/// +public sealed class TileGridSplitSystem : EntitySystem +{ + [Dependency] private readonly SharedMapSystem _maps = default!; + [Dependency] private readonly IGameTiming _timing = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnGridSplit); + } + + /// + /// Transfer tile history from the old grid to the new grids. + /// + private void OnGridSplit(ref GridSplitEvent ev) + { + if (!TryComp(ev.Grid, out var oldHistory)) + return; + + var oldGrid = Comp(ev.Grid); + + foreach (var gridUid in ev.NewGrids) + { + // ensure the new grid has a history component and get its grid component + var newHistory = EnsureComp(gridUid); + var newGrid = Comp(gridUid); + + foreach (var tile in _maps.GetAllTiles(gridUid, newGrid)) + { + // calculate where this tile was on the old grid + var oldIndices = _maps.LocalToTile(ev.Grid, oldGrid, new EntityCoordinates(gridUid, new Vector2(tile.GridIndices.X + 0.5f, tile.GridIndices.Y + 0.5f))); + + var chunkIndices = SharedMapSystem.GetChunkIndices(oldIndices, TileSystem.ChunkSize); + if (oldHistory.ChunkHistory.TryGetValue(chunkIndices, out var oldChunk) && + oldChunk.History.TryGetValue(oldIndices, out var history)) + { + // now we move the history from the old grid to the new grid + var newChunkIndices = SharedMapSystem.GetChunkIndices(tile.GridIndices, TileSystem.ChunkSize); + if (!newHistory.ChunkHistory.TryGetValue(newChunkIndices, out var newChunk)) + { + newChunk = new TileHistoryChunk(); + newHistory.ChunkHistory[newChunkIndices] = newChunk; + } + + newChunk.History[tile.GridIndices] = new List>(history); + newChunk.LastModified = _timing.CurTick; + + // clean up the old history + oldChunk.History.Remove(oldIndices); + if (oldChunk.History.Count == 0) + oldHistory.ChunkHistory.Remove(chunkIndices); + else + oldChunk.LastModified = _timing.CurTick; + } + } + + Dirty(gridUid, newHistory); + } + + Dirty(ev.Grid, oldHistory); + } +} diff --git a/Content.Shared/CCVar/CCVars.Game.cs b/Content.Shared/CCVar/CCVars.Game.cs index 68342733f8e..03cf6a673ae 100644 --- a/Content.Shared/CCVar/CCVars.Game.cs +++ b/Content.Shared/CCVar/CCVars.Game.cs @@ -409,4 +409,13 @@ public static readonly CVarDef /// public static readonly CVarDef GameHostnameInTitlebar = CVarDef.Create("game.hostname_in_titlebar", true, CVar.SERVER | CVar.REPLICATED); + + /// + /// The maximum amount of tiles you can stack on top of each other. 0 is unlimited. + /// + /// + /// Having it too high can result in "doomstacking" tiles - this messes with efficiency of explosions, deconstruction of tiles, and might result in memory problems. + /// + public static readonly CVarDef TileStackLimit = + CVarDef.Create("game.tile_stack_limit", 5, CVar.SERVER | CVar.REPLICATED); } diff --git a/Content.Shared/Maps/ContentTileDefinition.cs b/Content.Shared/Maps/ContentTileDefinition.cs index 46ce7a212ec..672eb95911f 100644 --- a/Content.Shared/Maps/ContentTileDefinition.cs +++ b/Content.Shared/Maps/ContentTileDefinition.cs @@ -8,6 +8,7 @@ using Robust.Shared.Serialization; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; using Robust.Shared.Utility; namespace Content.Shared.Maps @@ -41,7 +42,13 @@ public sealed partial class ContentTileDefinition : IPrototype, IInheritingProto [DataField("isSubfloor")] public bool IsSubFloor { get; private set; } [DataField("baseTurf")] - public string BaseTurf { get; private set; } = string.Empty; + public ProtoId? BaseTurf { get; private set; } + + /// + /// On what tiles this tile can be placed on. BaseTurf is already included. + /// + [DataField] + public List> BaseWhitelist { get; private set; } = new(); [DataField] public PrototypeFlags DeconstructTools { get; set; } = new(); diff --git a/Content.Shared/Maps/TileHistoryComponent.cs b/Content.Shared/Maps/TileHistoryComponent.cs new file mode 100644 index 00000000000..0e02d609845 --- /dev/null +++ b/Content.Shared/Maps/TileHistoryComponent.cs @@ -0,0 +1,125 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; +using Robust.Shared.Timing; + +namespace Content.Shared.Maps; + +[RegisterComponent, NetworkedComponent] +public sealed partial class TileHistoryComponent : Component +{ + // History of tiles for each grid chunk. + [DataField] + public Dictionary ChunkHistory = new(); + + /// + /// Tick at which PVS was last toggled. Ensures that all players receive a full update when toggling PVS. + /// + public GameTick ForceTick { get; set; } +} + +[Serializable, NetSerializable] +public sealed class TileHistoryState : ComponentState +{ + public Dictionary ChunkHistory; + + public TileHistoryState(Dictionary chunkHistory) + { + ChunkHistory = chunkHistory; + } +} + +[Serializable, NetSerializable] +public sealed class TileHistoryDeltaState : ComponentState, IComponentDeltaState +{ + public Dictionary ChunkHistory; + public HashSet AllHistoryChunks; + + public TileHistoryDeltaState(Dictionary chunkHistory, HashSet allHistoryChunks) + { + ChunkHistory = chunkHistory; + AllHistoryChunks = allHistoryChunks; + } + + public void ApplyToFullState(TileHistoryState state) + { + var toRemove = new List(); + foreach (var key in state.ChunkHistory.Keys) + { + if (!AllHistoryChunks.Contains(key)) + toRemove.Add(key); + } + + foreach (var key in toRemove) + { + state.ChunkHistory.Remove(key); + } + + foreach (var (indices, chunk) in ChunkHistory) + { + state.ChunkHistory[indices] = new TileHistoryChunk(chunk); + } + } + + public void ApplyToComponent(TileHistoryComponent component) + { + var toRemove = new List(); + foreach (var key in component.ChunkHistory.Keys) + { + if (!AllHistoryChunks.Contains(key)) + toRemove.Add(key); + } + + foreach (var key in toRemove) + { + component.ChunkHistory.Remove(key); + } + + foreach (var (indices, chunk) in ChunkHistory) + { + component.ChunkHistory[indices] = new TileHistoryChunk(chunk); + } + } + + public TileHistoryState CreateNewFullState(TileHistoryState state) + { + var chunks = new Dictionary(state.ChunkHistory.Count); + + foreach (var (indices, chunk) in ChunkHistory) + { + chunks[indices] = new TileHistoryChunk(chunk); + } + + foreach (var (indices, chunk) in state.ChunkHistory) + { + if (AllHistoryChunks.Contains(indices)) + chunks.TryAdd(indices, new TileHistoryChunk(chunk)); + } + + return new TileHistoryState(chunks); + } +} + +[DataDefinition, Serializable, NetSerializable] +public sealed partial class TileHistoryChunk +{ + [DataField] + public Dictionary>> History = new(); + + [ViewVariables] + public GameTick LastModified; + + public TileHistoryChunk() + { + } + + public TileHistoryChunk(TileHistoryChunk other) + { + History = new Dictionary>>(other.History.Count); + foreach (var (key, value) in other.History) + { + History[key] = new List>(value); + } + LastModified = other.LastModified; + } +} diff --git a/Content.Shared/Maps/TileSystem.cs b/Content.Shared/Maps/TileSystem.cs index d87b3ca50d5..908507e54dd 100644 --- a/Content.Shared/Maps/TileSystem.cs +++ b/Content.Shared/Maps/TileSystem.cs @@ -1,10 +1,16 @@ using System.Linq; using System.Numerics; +using Content.Shared.CCVar; using Content.Shared.Coordinates.Helpers; using Content.Shared.Decals; +using Content.Shared.Tiles; +using Robust.Shared.Configuration; +using Robust.Shared.GameStates; using Robust.Shared.Map; using Robust.Shared.Map.Components; +using Robust.Shared.Prototypes; using Robust.Shared.Random; +using Robust.Shared.Timing; using Robust.Shared.Utility; namespace Content.Shared.Maps; @@ -14,12 +20,85 @@ namespace Content.Shared.Maps; /// public sealed class TileSystem : EntitySystem { + [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly IRobustRandom _robustRandom = default!; [Dependency] private readonly ITileDefinitionManager _tileDefinitionManager = default!; [Dependency] private readonly SharedDecalSystem _decal = default!; [Dependency] private readonly SharedMapSystem _maps = default!; [Dependency] private readonly TurfSystem _turf = default!; + [Dependency] private readonly IGameTiming _timing = default!; + + public const int ChunkSize = 16; + + private int _tileStackLimit; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnGridStartup); + SubscribeLocalEvent(OnGetState); + SubscribeLocalEvent(OnHandleState); + SubscribeLocalEvent(OnFloorTileAttempt); + + _cfg.OnValueChanged(CCVars.TileStackLimit, t => _tileStackLimit = t, true); + } + + private void OnHandleState(EntityUid uid, TileHistoryComponent component, ref ComponentHandleState args) + { + if (args.Current is not TileHistoryState state && args.Current is not TileHistoryDeltaState) + return; + + if (args.Current is TileHistoryState fullState) + { + component.ChunkHistory.Clear(); + foreach (var (key, value) in fullState.ChunkHistory) + { + component.ChunkHistory[key] = new TileHistoryChunk(value); + } + + return; + } + + if (args.Current is TileHistoryDeltaState deltaState) + { + deltaState.ApplyToComponent(component); + } + } + + private void OnGetState(EntityUid uid, TileHistoryComponent component, ref ComponentGetState args) + { + if (args.FromTick <= component.CreationTick || args.FromTick <= component.ForceTick) + { + var fullHistory = new Dictionary(component.ChunkHistory.Count); + foreach (var (key, value) in component.ChunkHistory) + { + fullHistory[key] = new TileHistoryChunk(value); + } + args.State = new TileHistoryState(fullHistory); + return; + } + + var data = new Dictionary(); + foreach (var (index, chunk) in component.ChunkHistory) + { + if (chunk.LastModified >= args.FromTick) + data[index] = new TileHistoryChunk(chunk); + } + + args.State = new TileHistoryDeltaState(data, new(component.ChunkHistory.Keys)); + } + + /// + /// On grid startup, ensure that we have Tile History. + /// + private void OnGridStartup(GridInitializeEvent ev) + { + if (HasComp(ev.EntityUid)) + return; + + EnsureComp(ev.EntityUid); + } /// /// Returns a weighted pick of a tile variant. @@ -85,7 +164,7 @@ public bool PryTile(Vector2i indices, EntityUid gridId) return PryTile(tileRef); } - public bool PryTile(TileRef tileRef) + public bool PryTile(TileRef tileRef) { return PryTile(tileRef, false); } @@ -97,7 +176,7 @@ public bool PryTile(TileRef tileRef, bool pryPlating) if (tile.IsEmpty) return false; - var tileDef = (ContentTileDefinition) _tileDefinitionManager[tile.TypeId]; + var tileDef = (ContentTileDefinition)_tileDefinitionManager[tile.TypeId]; if (!tileDef.CanCrowbar) return false; @@ -112,33 +191,73 @@ public bool ReplaceTile(TileRef tileref, ContentTileDefinition replacementTile) return ReplaceTile(tileref, replacementTile, tileref.GridUid, grid); } - public bool ReplaceTile(TileRef tileref, ContentTileDefinition replacementTile, EntityUid grid, MapGridComponent? component = null) + public bool ReplaceTile(TileRef tileref, ContentTileDefinition replacementTile, EntityUid grid, MapGridComponent? component = null, byte? variant = null) { DebugTools.Assert(tileref.GridUid == grid); if (!Resolve(grid, ref component)) return false; + var key = tileref.GridIndices; + var currentTileDef = (ContentTileDefinition) _tileDefinitionManager[tileref.Tile.TypeId]; + + // If the tile we're placing has a baseTurf that matches the tile we're replacing, we don't need to create a history + // unless the tile already has a history. + var history = EnsureComp(grid); + var chunkIndices = SharedMapSystem.GetChunkIndices(key, ChunkSize); + history.ChunkHistory.TryGetValue(chunkIndices, out var chunk); + var historyExists = chunk != null && chunk.History.ContainsKey(key); + + if (replacementTile.BaseTurf != currentTileDef.ID || historyExists) + { + if (chunk == null) + { + chunk = new TileHistoryChunk(); + history.ChunkHistory[chunkIndices] = chunk; + } + + chunk.LastModified = _timing.CurTick; + Dirty(grid, history); + + //Create stack if needed + if (!chunk.History.TryGetValue(key, out var stack)) + { + stack = new List>(); + chunk.History[key] = stack; + } + + //Prevent the doomstack + if (stack.Count >= _tileStackLimit && _tileStackLimit != 0) + return false; + + //Push current tile to the stack, if not empty + if (!tileref.Tile.IsEmpty) + { + stack.Add(currentTileDef.ID); + } + } - var variant = PickVariant(replacementTile); + variant ??= PickVariant(replacementTile); var decals = _decal.GetDecalsInRange(tileref.GridUid, _turf.GetTileCenter(tileref).Position, 0.5f); foreach (var (id, _) in decals) { _decal.RemoveDecal(tileref.GridUid, id); } - _maps.SetTile(grid, component, tileref.GridIndices, new Tile(replacementTile.TileId, 0, variant)); + _maps.SetTile(grid, component, tileref.GridIndices, new Tile(replacementTile.TileId, 0, variant.Value)); return true; } - public bool DeconstructTile(TileRef tileRef) + + public bool DeconstructTile(TileRef tileRef, bool spawnItem = true) { if (tileRef.Tile.IsEmpty) return false; - var tileDef = (ContentTileDefinition) _tileDefinitionManager[tileRef.Tile.TypeId]; + var tileDef = (ContentTileDefinition)_tileDefinitionManager[tileRef.Tile.TypeId]; - if (string.IsNullOrEmpty(tileDef.BaseTurf)) + //Can't deconstruct anything that doesn't have a base turf. + if (tileDef.BaseTurf == null) return false; var gridUid = tileRef.GridUid; @@ -152,20 +271,68 @@ public bool DeconstructTile(TileRef tileRef) (_robustRandom.NextFloat() - 0.5f) * bounds, (_robustRandom.NextFloat() - 0.5f) * bounds)); - //Actually spawn the relevant tile item at the right position and give it some random offset. - var tileItem = Spawn(tileDef.ItemDropPrototypeName, coordinates); - Transform(tileItem).LocalRotation = _robustRandom.NextDouble() * Math.Tau; + var historyComp = EnsureComp(gridUid); + ProtoId previousTileId; - // Destroy any decals on the tile + var chunkIndices = SharedMapSystem.GetChunkIndices(indices, ChunkSize); + + //Pop from stack if we have history + if (historyComp.ChunkHistory.TryGetValue(chunkIndices, out var chunk) && + chunk.History.TryGetValue(indices, out var stack) && stack.Count > 0) + { + chunk.LastModified = _timing.CurTick; + Dirty(gridUid, historyComp); + + previousTileId = stack.Last(); + stack.RemoveAt(stack.Count - 1); + + //Clean up empty stacks to avoid memory buildup + if (stack.Count == 0) + { + chunk.History.Remove(indices); + } + + // Clean up empty chunks + if (chunk.History.Count == 0) + { + historyComp.ChunkHistory.Remove(chunkIndices); + } + } + else + { + //No stack? Assume BaseTurf was the layer below + previousTileId = tileDef.BaseTurf.Value; + } + + if (spawnItem) + { + //Actually spawn the relevant tile item at the right position and give it some random offset. + var tileItem = Spawn(tileDef.ItemDropPrototypeName, coordinates); + Transform(tileItem).LocalRotation = _robustRandom.NextDouble() * Math.Tau; + } + + //Destroy any decals on the tile var decals = _decal.GetDecalsInRange(gridUid, coordinates.SnapToGrid(EntityManager, _mapManager).Position, 0.5f); foreach (var (id, _) in decals) { _decal.RemoveDecal(tileRef.GridUid, id); } - var plating = _tileDefinitionManager[tileDef.BaseTurf]; - _maps.SetTile(gridUid, mapGrid, tileRef.GridIndices, new Tile(plating.TileId)); + //Replace tile with the one it was placed on + var previousDef = (ContentTileDefinition)_tileDefinitionManager[previousTileId]; + _maps.SetTile(gridUid, mapGrid, indices, new Tile(previousDef.TileId)); return true; } + + private void OnFloorTileAttempt(Entity ent, ref FloorTileAttemptEvent args) + { + if (_tileStackLimit == 0) + return; + var chunkIndices = SharedMapSystem.GetChunkIndices(args.GridIndices, ChunkSize); + if (!ent.Comp.ChunkHistory.TryGetValue(chunkIndices, out var chunk) || + !chunk.History.TryGetValue(args.GridIndices, out var stack)) + return; + args.Cancelled = stack.Count >= _tileStackLimit; // greater or equals because the attempt itself counts as a tile we're trying to place + } } diff --git a/Content.Shared/RCD/Systems/RCDSystem.cs b/Content.Shared/RCD/Systems/RCDSystem.cs index 504576216ac..8b3ae16a1f5 100644 --- a/Content.Shared/RCD/Systems/RCDSystem.cs +++ b/Content.Shared/RCD/Systems/RCDSystem.cs @@ -38,6 +38,7 @@ public sealed class RCDSystem : EntitySystem [Dependency] private readonly SharedInteractionSystem _interaction = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly TurfSystem _turf = default!; + [Dependency] private readonly TileSystem _tile = default!; [Dependency] private readonly EntityLookupSystem _lookup = default!; [Dependency] private readonly IPrototypeManager _protoManager = default!; [Dependency] private readonly SharedMapSystem _mapSystem = default!; @@ -560,10 +561,9 @@ private void FinalizeRCDOperation(EntityUid uid, RCDComponent component, EntityU if (target == null) { - // Deconstruct tile (either converts the tile to lattice, or removes lattice) - var tileDef = (_turf.GetContentTileDefinition(tile).ID != "Lattice") ? new Tile(_tileDefMan["Lattice"].TileId) : Tile.Empty; - _mapSystem.SetTile(gridUid, mapGrid, position, tileDef); - _adminLogger.Add(LogType.RCD, LogImpact.High, $"{ToPrettyString(user):user} used RCD to set grid: {gridUid} tile: {position} open to space"); + // Deconstruct tile, don't drop tile as item + if (_tile.DeconstructTile(tile, spawnItem: false)) + _adminLogger.Add(LogType.RCD, LogImpact.High, $"{ToPrettyString(user):user} used RCD to set grid: {gridUid} tile: {position} open to space"); } else { diff --git a/Content.Shared/Tiles/FloorTileSystem.cs b/Content.Shared/Tiles/FloorTileSystem.cs index 2c6df5ce89b..a2743ca6caa 100644 --- a/Content.Shared/Tiles/FloorTileSystem.cs +++ b/Content.Shared/Tiles/FloorTileSystem.cs @@ -16,6 +16,7 @@ using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; +using Robust.Shared.Prototypes; using Robust.Shared.Timing; namespace Content.Shared.Tiles; @@ -142,7 +143,7 @@ private void OnAfterInteract(EntityUid uid, FloorTileComponent component, AfterI var baseTurf = (ContentTileDefinition) _tileDefinitionManager[tile.Tile.TypeId]; - if (HasBaseTurf(currentTileDefinition, baseTurf.ID)) + if (CanPlaceOn(currentTileDefinition, baseTurf.ID)) { if (!_stackSystem.TryUse((uid, stack), 1)) continue; @@ -152,7 +153,7 @@ private void OnAfterInteract(EntityUid uid, FloorTileComponent component, AfterI return; } } - else if (HasBaseTurf(currentTileDefinition, ContentTileDefinition.SpaceID)) + else if (HasBaseTurf(currentTileDefinition, new ProtoId(ContentTileDefinition.SpaceID))) { if (!_stackSystem.TryUse((uid, stack), 1)) continue; @@ -171,19 +172,35 @@ private void OnAfterInteract(EntityUid uid, FloorTileComponent component, AfterI } } - public bool HasBaseTurf(ContentTileDefinition tileDef, string baseTurf) + public bool HasBaseTurf(ContentTileDefinition tileDef, ProtoId baseTurf) { return tileDef.BaseTurf == baseTurf; } + private bool CanPlaceOn(ContentTileDefinition tileDef, ProtoId currentTurfId) + { + //Check exact BaseTurf match + if (tileDef.BaseTurf == currentTurfId) + return true; + + // Check whitelist match + if (tileDef.BaseWhitelist.Count > 0 && tileDef.BaseWhitelist.Contains(currentTurfId)) + return true; + + return false; + } + private void PlaceAt(EntityUid user, EntityUid gridUid, MapGridComponent mapGrid, EntityCoordinates location, ushort tileId, SoundSpecifier placeSound, float offset = 0) { _adminLogger.Add(LogType.Tile, LogImpact.Low, $"{ToPrettyString(user):actor} placed tile {_tileDefinitionManager[tileId].Name} at {ToPrettyString(gridUid)} {location}"); - var random = new System.Random((int) _timing.CurTick.Value); - var variant = _tile.PickVariant((ContentTileDefinition) _tileDefinitionManager[tileId], random); - _map.SetTile(gridUid, mapGrid,location.Offset(new Vector2(offset, offset)), new Tile(tileId, 0, variant)); + var tileDef = (ContentTileDefinition) _tileDefinitionManager[tileId]; + var random = new System.Random((int)_timing.CurTick.Value); + var variant = _tile.PickVariant(tileDef, random); + + var tileRef = _map.GetTileRef(gridUid, mapGrid, location.Offset(new Vector2(offset, offset))); + _tile.ReplaceTile(tileRef, tileDef, gridUid, mapGrid, variant: variant); _audio.PlayPredicted(placeSound, location, user); } diff --git a/Resources/Prototypes/Tiles/floors.yml b/Resources/Prototypes/Tiles/floors.yml index de0f0dd9b46..52657990d1f 100644 --- a/Resources/Prototypes/Tiles/floors.yml +++ b/Resources/Prototypes/Tiles/floors.yml @@ -1,5 +1,31 @@ +- type: tile + id: BaseStationTile + abstract: true + isSubfloor: false + deconstructTools: [ Prying ] + footstepSounds: + collection: FootstepFloor + heatCapacity: 10000 + baseTurf: Plating + baseWhitelist: + - PlatingBrass + - FloorAsteroidIronsand + - FloorAsteroidSand + - FloorAsteroidSandBorderless + - FloorAsteroidIronsandBorderless + - FloorAsteroidSandRedBorderless + - PlatingAsteroid + - PlatingSnow + - FloorPlanetDirt + - FloorDesert + - FloorLowDesert + - FloorPlanetGrass + - FloorSnow + - FloorDirt + - type: tile id: FloorSteel + parent: BaseStationTile name: tiles-steel-floor sprite: /Textures/Tiles/steel.png variants: 4 @@ -8,16 +34,11 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemSteel - heatCapacity: 10000 - type: tile id: FloorSteelCheckerLight + parent: BaseStationTile name: tiles-steel-floor-checker-light sprite: /Textures/Tiles/cafeteria.png variants: 4 @@ -26,16 +47,11 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemSteelCheckerLight - heatCapacity: 10000 - type: tile id: FloorSteelCheckerDark + parent: BaseStationTile name: tiles-steel-floor-checker-dark sprite: /Textures/Tiles/checker_dark.png variants: 4 @@ -44,16 +60,11 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemSteelCheckerDark - heatCapacity: 10000 - type: tile id: FloorSteelMini + parent: BaseStationTile name: tiles-steel-floor-mini sprite: /Textures/Tiles/steel_mini.png variants: 4 @@ -62,16 +73,11 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemSteelMini - heatCapacity: 10000 - type: tile id: FloorSteelPavement + parent: BaseStationTile name: tiles-steel-floor-pavement sprite: /Textures/Tiles/steel_pavement.png variants: 4 @@ -80,16 +86,11 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemSteelPavement - heatCapacity: 10000 - type: tile id: FloorSteelDiagonal + parent: BaseStationTile name: tiles-steel-floor-diagonal sprite: /Textures/Tiles/steel_diagonal.png variants: 4 @@ -98,28 +99,18 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemSteelDiagonal - heatCapacity: 10000 - type: tile id: FloorSteelOffset + parent: BaseStationTile name: tiles-steel-floor-offset sprite: /Textures/Tiles/steel_offset.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemSteelOffset - heatCapacity: 10000 - type: tile id: FloorSteelMono + parent: BaseStationTile name: tiles-steel-floor-mono sprite: /Textures/Tiles/steel_mono.png variants: 4 @@ -128,16 +119,11 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepTile itemDrop: FloorTileItemSteelMono - heatCapacity: 10000 - type: tile id: FloorSteelPavementVertical + parent: BaseStationTile name: tiles-steel-floor-pavement-vertical sprite: /Textures/Tiles/steel_pavement_vertical.png variants: 4 @@ -146,16 +132,11 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepTile itemDrop: FloorTileItemSteelPavementVertical - heatCapacity: 10000 - type: tile id: FloorSteelHerringbone + parent: BaseStationTile name: tiles-steel-floor-herringbone sprite: /Textures/Tiles/steel_herringbone.png variants: 4 @@ -164,16 +145,11 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepTile itemDrop: FloorTileItemSteelHerringbone - heatCapacity: 10000 - type: tile id: FloorSteelDiagonalMini + parent: BaseStationTile name: tiles-steel-floor-diagonal-mini sprite: /Textures/Tiles/steel_diagonal_mini.png variants: 4 @@ -182,40 +158,29 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepTile itemDrop: FloorTileItemSteelDiagonalMini - heatCapacity: 10000 - type: tile id: FloorBrassFilled + parent: BaseStationTile name: tiles-brass-floor-filled sprite: /Textures/Tiles/Misc/clockwork/clockwork_floor_filled.png - baseTurf: PlatingBrass - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemBrassFilled - heatCapacity: 10000 - type: tile id: FloorBrassReebe + parent: BaseStationTile name: tiles-brass-floor-reebe sprite: /Textures/Tiles/Misc/clockwork/reebe.png - baseTurf: PlatingBrass - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemBrassReebe - heatCapacity: 10000 - type: tile id: FloorPlastic + parent: BaseStationTile name: tiles-plastic-floor sprite: /Textures/Tiles/plastic.png variants: 4 @@ -224,16 +189,11 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemSteel - heatCapacity: 10000 - type: tile id: FloorWood + parent: BaseStationTile name: tiles-wood sprite: /Textures/Tiles/wood.png variants: 4 @@ -242,18 +202,15 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepWood barestepSounds: collection: BarestepWood itemDrop: FloorTileItemWood - heatCapacity: 10000 - type: tile id: FloorWhite + parent: BaseStationTile name: tiles-white-floor sprite: /Textures/Tiles/white.png variants: 4 @@ -262,16 +219,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhite - heatCapacity: 10000 - type: tile id: FloorWhiteMini + parent: BaseStationTile name: tiles-white-floor-mini sprite: /Textures/Tiles/white_mini.png variants: 4 @@ -280,16 +234,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhiteMini - heatCapacity: 10000 - type: tile id: FloorWhitePavement + parent: BaseStationTile name: tiles-white-floor-pavement sprite: /Textures/Tiles/white_pavement.png variants: 4 @@ -298,16 +249,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhitePavement - heatCapacity: 10000 - type: tile id: FloorWhiteDiagonal + parent: BaseStationTile name: tiles-white-floor-diagonal sprite: /Textures/Tiles/white_diagonal.png variants: 4 @@ -316,28 +264,22 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhiteDiagonal - heatCapacity: 10000 - type: tile id: FloorWhiteOffset + parent: BaseStationTile name: tiles-white-floor-offset sprite: /Textures/Tiles/white_offset.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhiteOffset - heatCapacity: 10000 - type: tile id: FloorWhiteMono + parent: BaseStationTile name: tiles-white-floor-mono sprite: /Textures/Tiles/white_mono.png variants: 4 @@ -346,16 +288,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhiteMono - heatCapacity: 10000 - type: tile id: FloorWhitePavementVertical + parent: BaseStationTile name: tiles-white-floor-pavement-vertical sprite: /Textures/Tiles/white_pavement_vertical.png variants: 4 @@ -364,16 +303,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhitePavementVertical - heatCapacity: 10000 - type: tile id: FloorWhiteHerringbone + parent: BaseStationTile name: tiles-white-floor-herringbone sprite: /Textures/Tiles/white_herringbone.png variants: 4 @@ -382,16 +318,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhiteHerringbone - heatCapacity: 10000 - type: tile id: FloorWhiteDiagonalMini + parent: BaseStationTile name: tiles-white-floor-diagonal-mini sprite: /Textures/Tiles/white_diagonal_mini.png variants: 4 @@ -400,16 +333,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhiteDiagonalMini - heatCapacity: 10000 - type: tile id: FloorWhitePlastic + parent: BaseStationTile name: tiles-plastic-white-floor sprite: /Textures/Tiles/white_plastic.png variants: 4 @@ -418,16 +348,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemWhite - heatCapacity: 10000 - type: tile id: FloorDark + parent: BaseStationTile name: tiles-dark-floor sprite: /Textures/Tiles/dark.png variants: 4 @@ -436,16 +363,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDark - heatCapacity: 10000 - type: tile id: FloorDarkMini + parent: BaseStationTile name: tiles-dark-floor-mini sprite: /Textures/Tiles/dark_mini.png variants: 4 @@ -454,16 +378,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkMini - heatCapacity: 10000 - type: tile id: FloorDarkPavement + parent: BaseStationTile name: tiles-dark-floor-pavement sprite: /Textures/Tiles/dark_pavement.png variants: 4 @@ -472,16 +393,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkPavement - heatCapacity: 10000 - type: tile id: FloorDarkDiagonal + parent: BaseStationTile name: tiles-dark-floor-diagonal sprite: /Textures/Tiles/dark_diagonal.png variants: 4 @@ -490,28 +408,22 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkDiagonal - heatCapacity: 10000 - type: tile id: FloorDarkOffset + parent: BaseStationTile name: tiles-dark-floor-offset sprite: /Textures/Tiles/dark_offset.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkOffset - heatCapacity: 10000 - type: tile id: FloorDarkMono + parent: BaseStationTile name: tiles-dark-floor-mono sprite: /Textures/Tiles/dark_mono.png variants: 4 @@ -520,16 +432,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkMono - heatCapacity: 10000 - type: tile id: FloorDarkPavementVertical + parent: BaseStationTile name: tiles-dark-floor-pavement-vertical sprite: /Textures/Tiles/dark_pavement_vertical.png variants: 4 @@ -538,16 +447,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkPavementVertical - heatCapacity: 10000 - type: tile id: FloorDarkHerringbone + parent: BaseStationTile name: tiles-dark-floor-herringbone sprite: /Textures/Tiles/dark_herringbone.png variants: 4 @@ -556,16 +462,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkHerringbone - heatCapacity: 10000 - type: tile id: FloorDarkDiagonalMini + parent: BaseStationTile name: tiles-dark-floor-diagonal-mini sprite: /Textures/Tiles/dark_diagonal_mini.png variants: 4 @@ -574,16 +477,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDarkDiagonalMini - heatCapacity: 10000 - type: tile id: FloorDarkPlastic + parent: BaseStationTile name: tiles-plastic-dark-floor sprite: /Textures/Tiles/dark_plastic.png variants: 4 @@ -592,76 +492,58 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemDark - heatCapacity: 10000 - type: tile id: FloorTechMaint + parent: BaseStationTile name: tiles-techmaint-floor sprite: /Textures/Tiles/tech_maint.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemTechmaint - heatCapacity: 10000 - type: tile id: FloorTechMaintDark + parent: BaseStationTile name: tiles-techmaint-floor-dark sprite: /Textures/Tiles/tech_maint_dark.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemTechmaintDark - heatCapacity: 10000 - type: tile id: FloorReinforced + parent: BaseStationTile name: tiles-reinforced-floor sprite: /Textures/Tiles/reinforced.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: PartRodMetal1 - heatCapacity: 10000 - type: tile id: FloorMono + parent: BaseStationTile name: tiles-mono-floor sprite: /Textures/Tiles/mono.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemMono - heatCapacity: 10000 - type: tile id: FloorLino + parent: BaseStationTile name: tiles-linoleum-floor sprite: /Textures/Tiles/lino.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemLino - heatCapacity: 10000 - type: tile id: FloorSteelDirty + parent: BaseStationTile name: tiles-dirty-steel-floor sprite: /Textures/Tiles/steel_dirty.png variants: 4 @@ -670,64 +552,49 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepPlating itemDrop: FloorTileItemDirty - heatCapacity: 10000 - type: tile id: FloorElevatorShaft + parent: BaseStationTile name: tiles-elevator-shaft sprite: /Textures/Tiles/elevator_shaft.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemElevatorShaft - heatCapacity: 10000 - type: tile id: FloorMetalDiamond + parent: BaseStationTile name: tiles-diamond-plate-floor sprite: /Textures/Tiles/metaldiamond.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemMetalDiamond - heatCapacity: 10000 - type: tile id: FloorRockVault + parent: BaseStationTile name: tiles-rock-floor sprite: /Textures/Tiles/rock_vault.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepAsteroid itemDrop: FloorTileItemRockVault - heatCapacity: 10000 - type: tile id: FloorBlue + parent: BaseStationTile name: tiles-blue-tile sprite: /Textures/Tiles/blue.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemBlue - heatCapacity: 10000 - type: tile id: FloorSteelLime + parent: BaseStationTile name: tiles-lime-floor sprite: /Textures/Tiles/lime.png variants: 4 @@ -736,89 +603,62 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemLime - heatCapacity: 10000 - type: tile id: FloorMining + parent: BaseStationTile name: tiles-mining-tile sprite: /Textures/Tiles/mining_floor.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemMining - heatCapacity: 10000 - type: tile id: FloorMiningDark + parent: BaseStationTile name: tiles-mining-dark-tile sprite: /Textures/Tiles/mining_floor_dark.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemMiningDark - heatCapacity: 10000 - type: tile id: FloorMiningLight + parent: BaseStationTile name: tiles-mining-light-tile sprite: /Textures/Tiles/mining_floor_light.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemMiningLight - heatCapacity: 10000 # Departmental - type: tile id: FloorFreezer + parent: BaseStationTile name: tiles-freezer sprite: /Textures/Tiles/freezer.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemFreezer - heatCapacity: 10000 - type: tile id: FloorShowroom + parent: BaseStationTile name: tiles-showroom-floor sprite: /Textures/Tiles/showroom.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemShowroom - heatCapacity: 10000 - type: tile id: FloorHydro + parent: BaseStationTile name: tiles-hydro-floor sprite: /Textures/Tiles/hydro.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemHydro - heatCapacity: 10000 - type: tile id: FloorBar + parent: BaseStationTile name: tiles-bar-floor sprite: /Textures/Tiles/bar.png variants: 4 @@ -827,64 +667,43 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemBar - heatCapacity: 10000 - type: tile id: FloorClown + parent: BaseStationTile name: tiles-clown-floor sprite: /Textures/Tiles/clown.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemClown - heatCapacity: 10000 - type: tile id: FloorMime + parent: BaseStationTile name: tiles-mime-floor sprite: /Textures/Tiles/mime.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemMime - heatCapacity: 10000 - type: tile id: FloorKitchen + parent: BaseStationTile name: tiles-kitchen-floor - sprite: /Textures/Tiles/kitchen.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] + sprite: /Textures/Tiles/kitchen.png footstepSounds: collection: FootstepTile itemDrop: FloorTileItemKitchen - heatCapacity: 10000 - type: tile id: FloorLaundry + parent: BaseStationTile name: tiles-laundry-floor sprite: /Textures/Tiles/laundry.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemLaundry - heatCapacity: 10000 - type: tile id: FloorSteelDamaged + parent: BaseStationTile name: tiles-steel-floor sprite: /Textures/Tiles/steel_damaged.png variants: 5 @@ -894,17 +713,12 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemSteel #This should probably be made null when it becomes possible to make it such, in SS13 prying destroyed tiles wouldn't give you anything. - heatCapacity: 10000 # Concrete - type: tile id: FloorConcrete + parent: BaseStationTile name: tiles-concrete-tile sprite: /Textures/Tiles/Planet/Concrete/concrete.png variants: 4 @@ -913,16 +727,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemConcrete - heatCapacity: 10000 - type: tile id: FloorConcreteMono + parent: BaseStationTile name: tiles-concrete-slab sprite: /Textures/Tiles/Planet/Concrete/concrete_mono.png variants: 4 @@ -931,16 +742,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemConcreteMono - heatCapacity: 10000 - type: tile id: FloorConcreteSmooth + parent: BaseStationTile name: tiles-concrete-smooth sprite: /Textures/Tiles/Planet/Concrete/concrete_smooth.png variants: 4 @@ -949,16 +757,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemConcreteSmooth - heatCapacity: 10000 - type: tile id: FloorGrayConcrete + parent: BaseStationTile name: tiles-gray-concrete-tile sprite: /Textures/Tiles/Planet/Concrete/grayconcrete.png variants: 4 @@ -967,16 +772,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemGrayConcrete - heatCapacity: 10000 - type: tile id: FloorGrayConcreteMono + parent: BaseStationTile name: tiles-gray-concrete-slab sprite: /Textures/Tiles/Planet/Concrete/grayconcrete_mono.png variants: 4 @@ -985,16 +787,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemGrayConcreteMono - heatCapacity: 10000 - type: tile id: FloorGrayConcreteSmooth + parent: BaseStationTile name: tiles-gray-concrete-smooth sprite: /Textures/Tiles/Planet/Concrete/grayconcrete_smooth.png variants: 4 @@ -1003,16 +802,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemGrayConcreteSmooth - heatCapacity: 10000 - type: tile id: FloorOldConcrete + parent: BaseStationTile name: tiles-old-concrete-tile sprite: /Textures/Tiles/Planet/Concrete/oldconcrete.png variants: 4 @@ -1021,16 +817,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemOldConcrete - heatCapacity: 10000 - type: tile id: FloorOldConcreteMono + parent: BaseStationTile name: tiles-old-concrete-slab sprite: /Textures/Tiles/Planet/Concrete/oldconcrete_mono.png variants: 4 @@ -1039,16 +832,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemOldConcreteMono - heatCapacity: 10000 - type: tile id: FloorOldConcreteSmooth + parent: BaseStationTile name: tiles-old-concrete-smooth sprite: /Textures/Tiles/Planet/Concrete/oldconcrete_smooth.png variants: 4 @@ -1057,107 +847,86 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemOldConcreteSmooth - heatCapacity: 10000 # Carpets (non smoothing) - type: tile id: FloorArcadeBlue + parent: BaseStationTile name: tiles-blue-arcade-floor sprite: /Textures/Tiles/arcadeblue.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepCarpet barestepSounds: collection: BarestepCarpet friction: 1.25 itemDrop: FloorTileItemArcadeBlue - heatCapacity: 10000 - type: tile id: FloorArcadeBlue2 + parent: BaseStationTile name: tiles-blue-arcade-floor sprite: /Textures/Tiles/arcadeblue2.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepCarpet barestepSounds: collection: BarestepCarpet friction: 1.25 itemDrop: FloorTileItemArcadeBlue2 - heatCapacity: 10000 - type: tile id: FloorArcadeRed + parent: BaseStationTile name: tiles-red-arcade-floor sprite: /Textures/Tiles/arcadered.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepCarpet barestepSounds: collection: BarestepCarpet friction: 1.25 itemDrop: FloorTileItemArcadeRed - heatCapacity: 10000 - type: tile id: FloorEighties + parent: BaseStationTile name: tiles-eighties-floor sprite: /Textures/Tiles/eighties.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepCarpet barestepSounds: collection: BarestepCarpet friction: 1.25 itemDrop: FloorTileItemEighties - heatCapacity: 10000 - type: tile id: FloorCarpetClown + parent: BaseStationTile name: tiles-clown-carpet-floor sprite: /Textures/Tiles/carpetclown.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepCarpet barestepSounds: collection: BarestepCarpet friction: 1.25 itemDrop: FloorTileItemCarpetClown - heatCapacity: 10000 - type: tile id: FloorCarpetOffice + parent: BaseStationTile name: tiles-office-carpet-floor sprite: /Textures/Tiles/carpetoffice.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepCarpet barestepSounds: collection: BarestepCarpet friction: 1.25 itemDrop: FloorTileItemCarpetOffice - heatCapacity: 10000 - type: tile id: FloorBoxing + parent: BaseStationTile name: tiles-boxing-ring-floor sprite: /Textures/Tiles/boxing.png variants: 4 @@ -1166,17 +935,12 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor friction: 1.25 itemDrop: FloorTileItemBoxing - heatCapacity: 10000 - type: tile id: FloorGym + parent: BaseStationTile name: tiles-gym-floor sprite: /Textures/Tiles/gym.png variants: 4 @@ -1185,18 +949,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor friction: 1.25 itemDrop: FloorTileItemGym - heatCapacity: 10000 # Shuttle - type: tile id: FloorShuttleWhite + parent: BaseStationTile name: tiles-white-shuttle-floor sprite: /Textures/Tiles/shuttlewhite.png variants: 4 @@ -1205,16 +964,11 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemShuttleWhite - heatCapacity: 10000 - type: tile id: FloorShuttleGrey + parent: BaseStationTile name: tiles-grey-shuttle-floor sprite: /Textures/Tiles/shuttlegrey.png variants: 4 @@ -1223,16 +977,11 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemShuttleGrey - heatCapacity: 10000 - type: tile id: FloorShuttleBlack + parent: BaseStationTile name: tiles-black-shuttle-floor sprite: /Textures/Tiles/shuttleblack.png variants: 4 @@ -1241,16 +990,11 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemShuttleBlack - heatCapacity: 10000 - type: tile id: FloorShuttleBlue + parent: BaseStationTile name: tiles-blue-shuttle-floor sprite: /Textures/Tiles/shuttleblue.png variants: 4 @@ -1259,16 +1003,11 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemShuttleBlue - heatCapacity: 10000 - type: tile id: FloorShuttleOrange + parent: BaseStationTile name: tiles-orange-shuttle-floor sprite: /Textures/Tiles/shuttleorange.png variants: 4 @@ -1277,16 +1016,11 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemShuttleOrange - heatCapacity: 10000 - type: tile id: FloorShuttlePurple + parent: BaseStationTile name: tiles-purple-shuttle-floor sprite: /Textures/Tiles/shuttlepurple.png variants: 4 @@ -1295,16 +1029,11 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemShuttlePurple - heatCapacity: 10000 - type: tile id: FloorShuttleRed + parent: BaseStationTile name: tiles-red-shuttle-floor sprite: /Textures/Tiles/shuttlered.png variants: 4 @@ -1313,42 +1042,31 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemShuttleRed - heatCapacity: 10000 # Materials - type: tile id: FloorGold + parent: BaseStationTile name: tiles-gold-tile sprite: /Textures/Tiles/gold.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemGold - heatCapacity: 10000 - type: tile id: FloorSilver + parent: BaseStationTile name: tiles-silver-tile sprite: /Textures/Tiles/silver.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemSilver - heatCapacity: 10000 - type: tile id: FloorGlass + parent: BaseStationTile name: tiles-glass-floor sprite: /Textures/Tiles/glass.png variants: 4 @@ -1357,16 +1075,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: SheetGlass1 - heatCapacity: 10000 - type: tile id: FloorRGlass + parent: BaseStationTile name: tiles-reinforced-glass-floor sprite: /Textures/Tiles/rglass.png variants: 4 @@ -1375,65 +1090,49 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: SheetRGlass1 - heatCapacity: 10000 - type: tile id: FloorMetalFoam + parent: BaseStationTile name: tiles-metal-foam sprite: /Textures/Tiles/foammetal.png variants: 1 placementVariants: - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: SheetSteel1 - heatCapacity: 10000 # Circuits - type: tile id: FloorGreenCircuit + parent: BaseStationTile name: tiles-green-circuit-floor sprite: /Textures/Tiles/green_circuit.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemGCircuit - heatCapacity: 10000 - type: tile id: FloorBlueCircuit + parent: BaseStationTile name: tiles-blue-circuit-floor sprite: /Textures/Tiles/blue_circuit.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemBCircuit - heatCapacity: 10000 - type: tile id: FloorRedCircuit + parent: BaseStationTile name: tiles-red-circuit-floor sprite: /Textures/Tiles/red_circuit.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemRCircuit - heatCapacity: 10000 # Terrain - type: tile @@ -1542,19 +1241,19 @@ sprite: /Textures/Tiles/Asteroid/asteroid.png variants: 13 placementVariants: - - 0.8 - - 0.0166 #Should be roughly 20%.... I think??? I don't know dude, I'm just a YAML monkey. - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0166 - - 0.0116 - - 0.0116 + - 0.8 + - 0.0166 #Should be roughly 20%.... I think??? I don't know dude, I'm just a YAML monkey. + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0166 + - 0.0116 + - 0.0116 baseTurf: Space isSubfloor: true footstepSounds: @@ -1793,6 +1492,7 @@ - type: tile id: FloorFlesh + parent: BaseStationTile name: tiles-flesh-floor sprite: /Textures/Tiles/meat.png variants: 4 @@ -1801,29 +1501,23 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepBlood itemDrop: FloorTileItemFlesh friction: 0.25 #slippy - heatCapacity: 10000 - type: tile id: FloorTechMaint2 + parent: BaseStationTile name: tiles-techmaint2-floor sprite: /Textures/Tiles/steel_maint.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemSteelMaint - heatCapacity: 10000 - type: tile id: FloorTechMaint3 + parent: BaseStationTile name: tiles-techmaint3-floor sprite: /Textures/Tiles/grating_maint.png variants: 4 @@ -1832,16 +1526,13 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemGratingMaint - heatCapacity: 10000 - type: tile id: FloorWoodTile + parent: BaseStationTile name: tiles-wood2 sprite: /Textures/Tiles/wood_tile.png variants: 4 @@ -1850,18 +1541,15 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepWood barestepSounds: collection: BarestepWood itemDrop: FloorTileItemWoodPattern - heatCapacity: 10000 - type: tile id: FloorBrokenWood + parent: BaseStationTile name: tiles-wood3 sprite: /Textures/Tiles/wood_broken.png variants: 7 @@ -1873,29 +1561,22 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepWood barestepSounds: collection: BarestepWood itemDrop: MaterialWoodPlank1 - heatCapacity: 10000 - type: tile id: FloorWebTile + parent: BaseStationTile name: tiles-web sprite: /Textures/Tiles/Misc/Web/web_tile.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepCarpet barestepSounds: collection: BarestepCarpet itemDrop: FloorTileItemWeb - heatCapacity: 10000 - type: tile id: FloorChromite @@ -1919,21 +1600,18 @@ #Hull tiles - type: tile id: FloorHull + parent: BaseStationTile name: tiles-hull sprite: /Textures/Tiles/hull.png - baseTurf: Plating - isSubfloor: false footstepSounds: collection: FootstepHull itemDrop: FloorTileItemSteel #probably should not be normally obtainable, but the game shits itself and dies when you try to put null here - heatCapacity: 10000 - type: tile id: FloorHullReinforced + parent: BaseStationTile name: tiles-hull-reinforced sprite: /Textures/Tiles/hull_reinforced.png - baseTurf: Plating - isSubfloor: false footstepSounds: collection: FootstepHull itemDrop: FloorTileItemSteel @@ -1942,10 +1620,9 @@ - type: tile id: FloorReinforcedHardened + parent: BaseStationTile name: tiles-super-reinforced-floor sprite: /Textures/Tiles/super_reinforced.png - baseTurf: Plating - isSubfloor: false footstepSounds: collection: FootstepHull itemDrop: PartRodMetal1 #same case as FloorHull @@ -1955,6 +1632,7 @@ # Grass - type: tile id: FloorAstroGrass + parent: BaseStationTile name: tiles-astro-grass sprite: /Textures/Tiles/Planet/Grass/grass.png variants: 4 @@ -1973,28 +1651,23 @@ East: /Textures/Tiles/Planet/Grass/double_edge.png North: /Textures/Tiles/Planet/Grass/double_edge.png West: /Textures/Tiles/Planet/Grass/double_edge.png - baseTurf: Plating - isSubfloor: false deconstructTools: [ Cutting ] footstepSounds: collection: FootstepGrass itemDrop: FloorTileItemAstroGrass - heatCapacity: 10000 - type: tile id: FloorMowedAstroGrass + parent: [ BaseStationTile, FloorGrass ] name: tiles-mowed-astro-grass - parent: FloorGrass - baseTurf: Plating isSubfloor: false deconstructTools: [ Cutting ] itemDrop: FloorTileItemMowedAstroGrass - type: tile id: FloorJungleAstroGrass + parent: [ BaseStationTile, FloorGrassJungle ] name: tiles-jungle-astro-grass - parent: FloorGrassJungle - baseTurf: Plating isSubfloor: false deconstructTools: [ Cutting ] itemDrop: FloorTileItemJungleAstroGrass @@ -2020,22 +1693,18 @@ # Ice - type: tile id: FloorAstroIce + parent: BaseStationTile name: tiles-astro-ice sprite: /Textures/Tiles/Planet/Snow/ice.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] friction: 0.05 - heatCapacity: 10000 mobFriction: 0.05 mobAcceleration: 0.1 itemDrop: FloorTileItemAstroIce - type: tile id: FloorAstroSnow + parent: [ BaseStationTile, FloorSnow ] name: tiles-astro-snow - parent: FloorSnow - baseTurf: Plating isSubfloor: false deconstructTools: [ Prying ] itemDrop: FloorTileItemAstroSnow @@ -2043,9 +1712,8 @@ # Asteroid Sand - type: tile id: FloorAstroAsteroidSand + parent: [ BaseStationTile, FloorAsteroidSand ] name: tiles-astro-asteroid-sand - parent: FloorAsteroidSand - baseTurf: Plating isSubfloor: false deconstructTools: [ Prying ] itemDrop: FloorTileItemAstroAsteroidSand @@ -2053,9 +1721,8 @@ - type: tile id: FloorAstroAsteroidSandBorderless + parent: [ BaseStationTile, FloorAsteroidSandBorderless ] name: tiles-astro-asteroid-sand-borderless - parent: FloorAsteroidSandBorderless - baseTurf: Plating isSubfloor: false deconstructTools: [ Prying ] itemDrop: FloorTileItemAstroAsteroidSand @@ -2093,6 +1760,7 @@ - type: tile id: FloorWoodLarge + parent: BaseStationTile name: tiles-wood-large sprite: /Textures/Tiles/wood_large.png variants: 4 @@ -2101,15 +1769,11 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepWood barestepSounds: collection: BarestepWood itemDrop: FloorTileItemWoodLarge - heatCapacity: 10000 - type: tile id: FloorXenoborg @@ -2125,44 +1789,36 @@ - type: tile id: FloorXeno + parent: BaseStationTile name: tiles-xeno-floor sprite: /Textures/Tiles/xeno_flooring.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepBlood itemDrop: FloorTileItemXeno - heatCapacity: 10000 - type: tile id: FloorXenoSteel + parent: BaseStationTile name: tiles-xeno-steel sprite: /Textures/Tiles/xeno_steel.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemXenoSteel - heatCapacity: 10000 allowRotationMirror: true - type: tile id: FloorXenoSteelCorner + parent: BaseStationTile name: tiles-xeno-steel-corner sprite: /Textures/Tiles/xeno_steel_corner.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile itemDrop: FloorTileItemXenoSteelCorner - heatCapacity: 10000 allowRotationMirror: true - type: tile id: FloorDarkSquiggly + parent: BaseStationTile name: tiles-dark-squiggly sprite: /Textures/Tiles/dark_squiggly.png variants: 4 @@ -2171,29 +1827,21 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] - footstepSounds: - collection: FootstepFloor itemDrop: FloorTileItemDarkSquiggly - heatCapacity: 10000 allowRotationMirror: true - type: tile id: FloorXenoMaint + parent: BaseStationTile name: tiles-xeno-maint sprite: /Textures/Tiles/xeno_maint.png - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepHull itemDrop: FloorTileItemXenoMaint - heatCapacity: 10000 - type: tile id: FloorWhiteMarble + parent: BaseStationTile name: tiles-white-marble sprite: /Textures/Tiles/white_marble.png variants: 8 @@ -2206,17 +1854,14 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile friction: 0.8 itemDrop: FloorTileItemWhiteMarble - heatCapacity: 10000 - type: tile id: FloorDarkMarble + parent: BaseStationTile name: tiles-dark-marble sprite: /Textures/Tiles/dark_marble.png variants: 8 @@ -2229,17 +1874,14 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile friction: 0.8 itemDrop: FloorTileItemDarkMarble - heatCapacity: 10000 - type: tile id: FloorPlasmaMarble + parent: BaseStationTile name: tiles-plasma-marble sprite: /Textures/Tiles/plasmarble.png variants: 8 @@ -2252,17 +1894,14 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile friction: 0.8 itemDrop: FloorTileItemPlasmaMarble - heatCapacity: 10000 - type: tile id: FloorUraniumMarble + parent: BaseStationTile name: tiles-uranium-marble sprite: /Textures/Tiles/uranium_marble.png variants: 8 @@ -2275,11 +1914,7 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Plating - isSubfloor: false - deconstructTools: [ Prying ] footstepSounds: collection: FootstepTile friction: 0.8 itemDrop: FloorTileItemUraniumMarble - heatCapacity: 10000 diff --git a/Resources/Prototypes/Tiles/planet.yml b/Resources/Prototypes/Tiles/planet.yml index f0ef0f13463..15134868b5f 100644 --- a/Resources/Prototypes/Tiles/planet.yml +++ b/Resources/Prototypes/Tiles/planet.yml @@ -1,5 +1,16 @@ +- type: tile + id: BaseFloorPlanet + abstract: true + heatCapacity: 10000 + isSubfloor: true + footstepSounds: + collection: FootstepAsteroid + weather: true + indestructible: true + - type: tile id: FloorPlanetDirt + parent: BaseFloorPlanet name: tiles-dirt-planet-floor sprite: /Textures/Tiles/Planet/dirt.rsi/dirt.png variants: 4 @@ -8,16 +19,11 @@ - 1.0 - 1.0 - 1.0 - isSubfloor: true - footstepSounds: - collection: FootstepAsteroid - heatCapacity: 10000 - weather: true - indestructible: true # Desert - type: tile id: FloorDesert + parent: BaseFloorPlanet name: tiles-desert-floor sprite: /Textures/Tiles/Planet/Desert/desert.png variants: 6 @@ -28,12 +34,6 @@ - 1.0 - 1.0 - 1.0 - isSubfloor: true - footstepSounds: - collection: FootstepAsteroid - heatCapacity: 10000 - weather: true - indestructible: true - type: tile id: FloorLowDesert @@ -47,16 +47,11 @@ - 1.0 - 1.0 - 1.0 - isSubfloor: true - footstepSounds: - collection: FootstepAsteroid - heatCapacity: 10000 - weather: true - indestructible: true # Grass - type: tile id: FloorPlanetGrass + parent: BaseFloorPlanet name: tiles-grass-planet-floor sprite: /Textures/Tiles/Planet/Grass/grass.png variants: 4 @@ -76,29 +71,20 @@ North: /Textures/Tiles/Planet/Grass/double_edge.png West: /Textures/Tiles/Planet/Grass/double_edge.png baseTurf: FloorPlanetDirt - isSubfloor: true footstepSounds: collection: FootstepGrass - itemDrop: FloorTileItemGrass - heatCapacity: 10000 - weather: true - indestructible: true # Lava - type: tile id: FloorBasalt name: tiles-basalt-floor + parent: BaseFloorPlanet sprite: /Textures/Tiles/Planet/basalt.png - isSubfloor: true - footstepSounds: - collection: FootstepAsteroid - heatCapacity: 10000 - weather: true - indestructible: true # Snow - type: tile id: FloorSnow + parent: BaseFloorPlanet name: tiles-snow sprite: /Textures/Tiles/Planet/Snow/snow.png variants: 13 @@ -122,12 +108,8 @@ East: /Textures/Tiles/Planet/Snow/snow_double_edge_east.png North: /Textures/Tiles/Planet/Snow/snow_double_edge_north.png West: /Textures/Tiles/Planet/Snow/snow_double_edge_west.png - isSubfloor: true footstepSounds: collection: FootstepSnow - heatCapacity: 10000 - weather: true - indestructible: true # Ice - type: tile @@ -144,6 +126,7 @@ # Dug snow - type: tile id: FloorSnowDug + parent: BaseFloorPlanet name: tiles-snow-dug sprite: /Textures/Tiles/Planet/Snow/snow_dug.png edgeSpritePriority: 1 @@ -152,11 +135,7 @@ East: /Textures/Tiles/Planet/Snow/snow_dug_double_edge_east.png North: /Textures/Tiles/Planet/Snow/snow_dug_double_edge_north.png West: /Textures/Tiles/Planet/Snow/snow_dug_double_edge_west.png - isSubfloor: true footstepSounds: collection: FootstepSnow - heatCapacity: 10000 - weather: true - indestructible: true # Wasteland diff --git a/Resources/Prototypes/Tiles/plating.yml b/Resources/Prototypes/Tiles/plating.yml index 2a85222c3ab..910f941bee2 100644 --- a/Resources/Prototypes/Tiles/plating.yml +++ b/Resources/Prototypes/Tiles/plating.yml @@ -1,16 +1,24 @@ - type: tile - id: Plating - name: tiles-plating - sprite: /Textures/Tiles/plating.png - baseTurf: Lattice + id: BasePlating + abstract: true + friction: 1.5 + heatCapacity: 10000 isSubfloor: true footstepSounds: collection: FootstepPlating - friction: 1.5 - heatCapacity: 10000 + baseTurf: Lattice + baseWhitelist: + - TrainLattice + +- type: tile + id: Plating + parent: BasePlating + name: tiles-plating + sprite: /Textures/Tiles/plating.png - type: tile id: PlatingDamaged + parent: BasePlating name: tiles-plating sprite: /Textures/Tiles/plating_damaged.png variants: 3 @@ -18,45 +26,25 @@ - 1.0 - 1.0 - 1.0 - baseTurf: Lattice - isSubfloor: true - footstepSounds: - collection: FootstepPlating - friction: 1.5 - heatCapacity: 10000 - type: tile id: PlatingAsteroid + parent: BasePlating name: tiles-asteroid-plating sprite: /Textures/Tiles/Asteroid/asteroid_plating.png - baseTurf: Lattice - isSubfloor: true - footstepSounds: - collection: FootstepPlating - friction: 1.5 - heatCapacity: 10000 - type: tile id: PlatingBrass + parent: BasePlating name: tiles-brass-plating sprite: /Textures/Tiles/Misc/clockwork/clockwork_floor.png - baseTurf: Lattice - isSubfloor: true - footstepSounds: - collection: FootstepPlating - friction: 1.5 - heatCapacity: 10000 - type: tile id: PlatingSnow name: tiles-snow-plating + parent: BasePlating sprite: /Textures/Tiles/snow_plating.png #Not in the snow planet RSI because it doesn't have any metadata. Should probably be moved to its own folder later. - baseTurf: Lattice - isSubfloor: true - footstepSounds: - collection: FootstepPlating friction: 0.75 #a little less then actual snow - heatCapacity: 10000 - type: tile id: PlatingIronsand @@ -87,16 +75,8 @@ - type: tile id: TrainLattice + parent: Lattice name: tiles-lattice-train sprite: /Textures/Tiles/latticeTrain.png - baseTurf: Space - isSubfloor: true - deconstructTools: [ Cutting ] - weather: true footstepSounds: collection: FootstepPlating - friction: 1.5 - isSpace: true - itemDrop: PartRodMetal1 - heatCapacity: 10000 - mass: 200 From 0673809762ee1cf769d5ec4eb18fe2e5892b8f06 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 20 Jan 2026 20:52:23 +0000 Subject: [PATCH 054/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 1b821e4ff18..75e920b08c2 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Princess-Cheeseballs - changes: - - message: You can no longer crawl under counters, or tables without space underneath. - type: Tweak - id: 8926 - time: '2025-09-04T21:03:10.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40099 - author: CawsForConcern changes: - message: Iced Coffee now contains Theobromine @@ -3955,3 +3948,11 @@ id: 9432 time: '2026-01-20T19:29:53.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42550 +- author: Velken, Murphyneko + changes: + - message: Station tiles and floors can now be placed on planets, asteroids and + different platings. + type: Tweak + id: 9433 + time: '2026-01-20T20:51:15.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42543 From 892209db0184e5dfc09c0672cb5823fa58fb5cc4 Mon Sep 17 00:00:00 2001 From: osjarw <62134478+osjarw@users.noreply.github.com> Date: Tue, 20 Jan 2026 22:37:51 +0200 Subject: [PATCH 055/603] Medibot doAfter and some other improvements (#32932) * Medibot doAfter and some other improvements * Clean-up * Review fixes * the army of medibots chasing someone is really funny * misc cleanup --------- Co-authored-by: SlamBamActionman Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> --- .../TargetInRangePrecondition.cs | 6 +- .../PrimitiveTasks/Operators/SpeakOperator.cs | 23 +++++ .../Specific/EnsureComponentOperator.cs | 29 ++++++ .../Specific/PickNearbyInjectableOperator.cs | 34 ++++--- .../Operators/UtilityOperator.cs | 50 +++++++--- .../NPC/Systems/NPCUtilitySystem.cs | 8 ++ Content.Shared/Silicons/Bots/MedibotSystem.cs | 1 - Resources/Prototypes/NPCs/medibot.yml | 92 +++++++++++-------- Resources/Prototypes/NPCs/utility_queries.yml | 23 +++++ 9 files changed, 202 insertions(+), 64 deletions(-) create mode 100644 Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/EnsureComponentOperator.cs diff --git a/Content.Server/NPC/HTN/Preconditions/TargetInRangePrecondition.cs b/Content.Server/NPC/HTN/Preconditions/TargetInRangePrecondition.cs index 921b5ffa226..b88d17b13d9 100644 --- a/Content.Server/NPC/HTN/Preconditions/TargetInRangePrecondition.cs +++ b/Content.Server/NPC/HTN/Preconditions/TargetInRangePrecondition.cs @@ -20,6 +20,9 @@ public override void Initialize(IEntitySystemManager sysManager) _transformSystem = sysManager.GetEntitySystem(); } + [DataField] + public bool Invert; + public override bool IsMet(NPCBlackboard blackboard) { if (!blackboard.TryGetValue(NPCBlackboard.OwnerCoordinates, out var coordinates, _entManager)) @@ -29,7 +32,6 @@ public override bool IsMet(NPCBlackboard blackboard) !_entManager.TryGetComponent(target, out var targetXform)) return false; - var transformSystem = _entManager.System; - return _transformSystem.InRange(coordinates, targetXform.Coordinates, blackboard.GetValueOrDefault(RangeKey, _entManager)); + return _transformSystem.InRange(coordinates, targetXform.Coordinates, blackboard.GetValueOrDefault(RangeKey, _entManager)) ^ Invert; } } diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/SpeakOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/SpeakOperator.cs index f3b977518b8..98c63dd912c 100644 --- a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/SpeakOperator.cs +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/SpeakOperator.cs @@ -1,4 +1,5 @@ using Content.Server.Chat.Systems; +using Robust.Shared.Timing; using Content.Shared.Chat; using Content.Shared.Dataset; using Content.Shared.Random.Helpers; @@ -11,6 +12,8 @@ namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators; public sealed partial class SpeakOperator : HTNOperator { + [Dependency] private readonly IEntityManager _entMan = default!; + [Dependency] private readonly IGameTiming _gameTiming = default!; private ChatSystem _chat = default!; [Dependency] private readonly IPrototypeManager _proto = default!; [Dependency] private readonly IRobustRandom _random = default!; @@ -24,6 +27,18 @@ public sealed partial class SpeakOperator : HTNOperator [DataField] public bool Hidden; + /// + /// Skip speaking for `cooldown` seconds, intended to stop spam + /// + [DataField] + public TimeSpan Cooldown = TimeSpan.Zero; + + /// + /// Define what key is used for storing the cooldown + /// + [DataField] + public string CooldownID = string.Empty; + public override void Initialize(IEntitySystemManager sysManager) { base.Initialize(sysManager); @@ -32,6 +47,14 @@ public override void Initialize(IEntitySystemManager sysManager) public override HTNOperatorStatus Update(NPCBlackboard blackboard, float frameTime) { + if (Cooldown != TimeSpan.Zero && CooldownID != string.Empty) + { + if (blackboard.TryGetValue(CooldownID, out var nextSpeechTime, _entMan) && _gameTiming.CurTime < nextSpeechTime) + return base.Update(blackboard, frameTime); + + blackboard.SetValue(CooldownID, _gameTiming.CurTime + Cooldown); + } + LocId speechLocId; switch (Speech) { diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/EnsureComponentOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/EnsureComponentOperator.cs new file mode 100644 index 00000000000..317b7aacf2e --- /dev/null +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/EnsureComponentOperator.cs @@ -0,0 +1,29 @@ +using Robust.Shared.Prototypes; + +namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators.Specific; + +public sealed partial class EnsureComponentOperator : HTNOperator +{ + [Dependency] private readonly IEntityManager _entMan = default!; + + /// + /// Target entity to inject. + /// + [DataField(required: true)] + public string TargetKey = string.Empty; + + /// + /// Components to be added + /// + [DataField] + public ComponentRegistry Components = new(); + + public override HTNOperatorStatus Update(NPCBlackboard blackboard, float frameTime) + { + if (!blackboard.TryGetValue(TargetKey, out var target, _entMan)) + return HTNOperatorStatus.Failed; + + _entMan.AddComponents(target, Components); + return HTNOperatorStatus.Finished; + } +} diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/PickNearbyInjectableOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/PickNearbyInjectableOperator.cs index 67a8198c385..6f656b0e291 100644 --- a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/PickNearbyInjectableOperator.cs +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/PickNearbyInjectableOperator.cs @@ -14,10 +14,15 @@ namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators.Specific; public sealed partial class PickNearbyInjectableOperator : HTNOperator { [Dependency] private readonly IEntityManager _entManager = default!; - private EntityLookupSystem _lookup = default!; private MedibotSystem _medibot = default!; private PathfindingSystem _pathfinding = default!; + private EntityQuery _damageQuery = default!; + private EntityQuery _injectQuery = default!; + private EntityQuery _recentlyInjected = default!; + private EntityQuery _mobState = default!; + private EntityQuery _emaggedQuery = default!; + [DataField("rangeKey")] public string RangeKey = NPCBlackboard.MedibotInjectRange; /// @@ -35,9 +40,14 @@ public sealed partial class PickNearbyInjectableOperator : HTNOperator public override void Initialize(IEntitySystemManager sysManager) { base.Initialize(sysManager); - _lookup = sysManager.GetEntitySystem(); _medibot = sysManager.GetEntitySystem(); _pathfinding = sysManager.GetEntitySystem(); + + _damageQuery = _entManager.GetEntityQuery(); + _injectQuery = _entManager.GetEntityQuery(); + _recentlyInjected = _entManager.GetEntityQuery(); + _mobState = _entManager.GetEntityQuery(); + _emaggedQuery = _entManager.GetEntityQuery(); } public override async Task<(bool Valid, Dictionary? Effects)> Plan(NPCBlackboard blackboard, @@ -51,18 +61,16 @@ public override void Initialize(IEntitySystemManager sysManager) if (!_entManager.TryGetComponent(owner, out var medibot)) return (false, null); - var damageQuery = _entManager.GetEntityQuery(); - var injectQuery = _entManager.GetEntityQuery(); - var recentlyInjected = _entManager.GetEntityQuery(); - var mobState = _entManager.GetEntityQuery(); - var emaggedQuery = _entManager.GetEntityQuery(); - foreach (var entity in _lookup.GetEntitiesInRange(owner, range)) + if (!blackboard.TryGetValue>>("TargetList", out var patients, _entManager)) + return (false, null); + + foreach (var (entity, _) in patients) { - if (mobState.TryGetComponent(entity, out var state) && - injectQuery.HasComponent(entity) && - damageQuery.TryGetComponent(entity, out var damage) && - !recentlyInjected.HasComponent(entity)) + if (_mobState.TryGetComponent(entity, out var state) && + _injectQuery.HasComponent(entity) && + _damageQuery.TryGetComponent(entity, out var damage) && + !_recentlyInjected.HasComponent(entity)) { // no treating dead bodies if (!_medibot.TryGetTreatment(medibot, state.CurrentState, out var treatment)) @@ -71,7 +79,7 @@ public override void Initialize(IEntitySystemManager sysManager) // Only go towards a target if the bot can actually help them or if the medibot is emagged // note: this and the actual injecting don't check for specific damage types so for example, // radiation damage will trigger injection but the tricordrazine won't heal it. - if (!emaggedQuery.HasComponent(entity) && !treatment.IsValid(damage.TotalDamage)) + if (!_emaggedQuery.HasComponent(entity) && !treatment.IsValid(damage.TotalDamage)) continue; //Needed to make sure it doesn't sometimes stop right outside it's interaction range diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/UtilityOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/UtilityOperator.cs index 2bf9b09b106..16f18ae59a7 100644 --- a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/UtilityOperator.cs +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/UtilityOperator.cs @@ -1,3 +1,4 @@ +using System.Linq; using System.Numerics; using System.Threading; using System.Threading.Tasks; @@ -15,7 +16,9 @@ public sealed partial class UtilityOperator : HTNOperator { [Dependency] private readonly IEntityManager _entManager = default!; - [DataField("key")] public string Key = "Target"; + [DataField] public string Key = "Target"; + + [DataField] public ReturnTypeResult ReturnType = ReturnTypeResult.Highest; /// /// The EntityCoordinates of the specified target. @@ -30,19 +33,44 @@ public sealed partial class UtilityOperator : HTNOperator CancellationToken cancelToken) { var result = _entManager.System().GetEntities(blackboard, Prototype); - var target = result.GetHighest(); + Dictionary effects; - if (!target.IsValid()) + switch (ReturnType) { - return (false, new Dictionary()); - } + case ReturnTypeResult.Highest: + var target = result.GetHighest(); - var effects = new Dictionary() - { - {Key, target}, - {KeyCoordinates, new EntityCoordinates(target, Vector2.Zero)} - }; + if (!target.IsValid()) + { + return (false, new Dictionary()); + } + + effects = new Dictionary() + { + {Key, target}, + {KeyCoordinates, new EntityCoordinates(target, Vector2.Zero)}, + }; + + return (true, effects); + + case ReturnTypeResult.EnumerableDescending: + var targetList = result.GetEnumerable(); - return (true, effects); + effects = new Dictionary() + { + {"TargetList", targetList}, + }; + + return (true, effects); + + default: + throw new NotImplementedException(); + } + } + + public enum ReturnTypeResult + { + Highest, + EnumerableDescending } } diff --git a/Content.Server/NPC/Systems/NPCUtilitySystem.cs b/Content.Server/NPC/Systems/NPCUtilitySystem.cs index 9605b628474..9b791ae2f05 100644 --- a/Content.Server/NPC/Systems/NPCUtilitySystem.cs +++ b/Content.Server/NPC/Systems/NPCUtilitySystem.cs @@ -602,4 +602,12 @@ public EntityUid GetLowest() return Entities.MinBy(x => x.Value).Key; } + + /// + /// Returns a GetEnumerable sorted in descending score. + /// + public IEnumerable> GetEnumerable() + { + return Entities.OrderByDescending(x => x.Value); + } } diff --git a/Content.Shared/Silicons/Bots/MedibotSystem.cs b/Content.Shared/Silicons/Bots/MedibotSystem.cs index 2e832da456c..b960e190682 100644 --- a/Content.Shared/Silicons/Bots/MedibotSystem.cs +++ b/Content.Shared/Silicons/Bots/MedibotSystem.cs @@ -132,7 +132,6 @@ public bool TryInject(Entity medibot, EntityUid target) if (!TryGetTreatment(medibot.Comp, mobState.CurrentState, out var treatment)) return false; if (!_solutionContainer.TryGetInjectableSolution(target, out var injectable, out _)) return false; - EnsureComp(target); _solutionContainer.TryAddReagent(injectable.Value, treatment.Reagent, treatment.Quantity, out _); _popup.PopupEntity(Loc.GetString("injector-component-feel-prick-message"), target, target); diff --git a/Resources/Prototypes/NPCs/medibot.yml b/Resources/Prototypes/NPCs/medibot.yml index 1cd6352e168..cd15904ff64 100644 --- a/Resources/Prototypes/NPCs/medibot.yml +++ b/Resources/Prototypes/NPCs/medibot.yml @@ -1,46 +1,64 @@ - type: htnCompound id: MedibotCompound branches: - - tasks: - - !type:HTNCompoundTask - task: InjectNearbyCompound - - tasks: - - !type:HTNCompoundTask - task: IdleCompound + # Observe for targets + - tasks: + - !type:HTNPrimitiveTask + operator: !type:UtilityOperator + proto: MedibotInjectable + returnType: EnumerableDescending + - !type:HTNPrimitiveTask + operator: !type:PickNearbyInjectableOperator + targetKey: Target + targetMoveKey: TargetCoordinates -- type: htnCompound - id: InjectNearbyCompound - branches: - - tasks: - # TODO: Kill this shit - - !type:HTNPrimitiveTask - operator: !type:PickNearbyInjectableOperator - targetKey: InjectTarget - targetMoveKey: TargetCoordinates + - !type:HTNCompoundTask + task: MedibotGetInRange + - !type:HTNCompoundTask + task: MedibotInject - - !type:HTNPrimitiveTask - operator: !type:SpeakOperator - speech: !type:SingleSpeakOperatorSpeech - line: medibot-start-inject - hidden: true + # Idle when targets not found + - tasks: + - !type:HTNCompoundTask + task: IdleCompound - - !type:HTNPrimitiveTask - operator: !type:MoveToOperator - pathfindInPlanning: false +- type: htnCompound + id: MedibotGetInRange + branches: + # Move to target if out of range + - preconditions: + - !type:TargetInRangePrecondition + invert: true + targetKey: Target + rangeKey: InteractRange + tasks: + - !type:HTNPrimitiveTask + operator: !type:SpeakOperator + speech: !type:SingleSpeakOperatorSpeech + line: medibot-start-inject + hidden: true + cooldownID: medibot-start-inject + cooldown: 5 + - !type:HTNPrimitiveTask + operator: !type:MoveToOperator + pathfindInPlanning: false - - !type:HTNPrimitiveTask - operator: !type:SetFloatOperator - targetKey: IdleTime - amount: 3 + - tasks: + - !type:HTNPrimitiveTask + operator: !type:NoOperator - - !type:HTNPrimitiveTask - operator: !type:WaitOperator - key: IdleTime - preconditions: - - !type:KeyExistsPrecondition - key: IdleTime +# Should be called only when in range +- type: htnCompound + id: MedibotInject + branches: + - tasks: + - !type:HTNPrimitiveTask + operator: !type:InteractWithOperator + expectDoAfter: true + targetKey: Target + - !type:HTNPrimitiveTask + operator: !type:EnsureComponentOperator + targetKey: Target + components: + - type: NPCRecentlyInjected - # TODO: Kill this - - !type:HTNPrimitiveTask - operator: !type:MedibotInjectOperator - targetKey: InjectTarget diff --git a/Resources/Prototypes/NPCs/utility_queries.yml b/Resources/Prototypes/NPCs/utility_queries.yml index 3274bdf9774..49b085b29ab 100644 --- a/Resources/Prototypes/NPCs/utility_queries.yml +++ b/Resources/Prototypes/NPCs/utility_queries.yml @@ -202,6 +202,29 @@ - !type:TargetInLOSOrCurrentCon curve: !type:BoolCurve +- type: utilityQuery + id: MedibotInjectable + query: + - !type:ComponentQuery + components: + - type: InjectableSolution + - type: Damageable + - type: MobState + - !type:ComponentFilter + components: + - type: NPCRecentlyInjected + retainWithComp: false + considerations: + - !type:TargetIsCritCon + curve: !type:QuadraticCurve + slope: 1 + exponent: 1 + yOffset: 0.1 + xOffset: 0 + - !type:TargetDistanceCon + curve: !type:PresetCurve + preset: TargetDistance + - type: utilityQuery id: NearbyGunTargets query: From a913216675d8a474ed6276636af26ceb737722e7 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 20 Jan 2026 21:08:46 +0000 Subject: [PATCH 056/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 75e920b08c2..84f1052e58d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: CawsForConcern - changes: - - message: Iced Coffee now contains Theobromine - type: Fix - id: 8927 - time: '2025-09-04T22:46:44.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40063 - author: ArtisticRoomba changes: - message: Fixed Atmospherics Delta-Pressure damage not capping damage beyond a @@ -3956,3 +3949,10 @@ id: 9433 time: '2026-01-20T20:51:15.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42543 +- author: osjarw + changes: + - message: Now the Medibot has a DoAfter bar, displaying injection progress. + type: Add + id: 9434 + time: '2026-01-20T21:07:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32932 From 4216e29fdb2097d8a5459d2445d8639172da62c9 Mon Sep 17 00:00:00 2001 From: pathetic meowmeow Date: Tue, 20 Jan 2026 15:58:44 -0500 Subject: [PATCH 057/603] Fix sexed organs (#42554) --- Content.Shared/Body/SharedVisualBodySystem.cs | 6 ++++ Content.Shared/Body/VisualOrganComponent.cs | 6 ++++ Resources/Prototypes/Body/Species/human.yml | 4 +-- Resources/Prototypes/Body/Species/moth.yml | 2 +- .../Prototypes/Body/Species/reptilian.yml | 4 +-- .../Prototypes/Body/Species/skeleton.yml | 2 +- Resources/Prototypes/Body/Species/slime.yml | 2 +- .../Prototypes/Body/Species/vulpkanin.yml | 2 +- Resources/Prototypes/Body/base_organs.yml | 34 +++++++++++++++--- Resources/Prototypes/Species/diona.yml | 2 ++ .../parts.rsi/{head_f.png => head.png} | Bin .../Species/Arachnid/parts.rsi/head_m.png | Bin 423 -> 0 bytes .../Mobs/Species/Arachnid/parts.rsi/meta.json | 12 ++----- .../parts.rsi/{torso_f.png => torso.png} | Bin .../Species/Arachnid/parts.rsi/torso_m.png | Bin 761 -> 0 bytes .../Diona/parts.rsi/{head_f.png => head.png} | Bin .../Mobs/Species/Diona/parts.rsi/head_m.png | Bin 787 -> 0 bytes .../Mobs/Species/Diona/parts.rsi/meta.json | 12 ++----- .../parts.rsi/{torso_f.png => torso.png} | Bin .../Mobs/Species/Diona/parts.rsi/torso_m.png | Bin 1681 -> 0 bytes .../parts.rsi/{head_f.png => head.png} | Bin .../Species/Gingerbread/parts.rsi/head_m.png | Bin 350 -> 0 bytes .../Species/Gingerbread/parts.rsi/meta.json | 12 ++----- .../parts.rsi/{torso_f.png => torso.png} | Bin .../Species/Gingerbread/parts.rsi/torso_m.png | Bin 479 -> 0 bytes .../Moth/parts.rsi/{head_f.png => head.png} | Bin .../Mobs/Species/Moth/parts.rsi/head_m.png | Bin 324 -> 0 bytes .../Mobs/Species/Moth/parts.rsi/meta.json | 6 +--- .../parts.rsi/{head_f.png => head.png} | Bin .../Species/Skeleton/parts.rsi/head_m.png | Bin 957 -> 0 bytes .../Mobs/Species/Skeleton/parts.rsi/meta.json | 6 +--- .../Slime/parts.rsi/{head_f.png => head.png} | Bin .../Mobs/Species/Slime/parts.rsi/head_m.png | Bin 339 -> 0 bytes .../Mobs/Species/Slime/parts.rsi/meta.json | 6 +--- .../parts.rsi/{head_f.png => head.png} | Bin .../Species/Vulpkanin/parts.rsi/head_m.png | Bin 598 -> 0 bytes .../Species/Vulpkanin/parts.rsi/meta.json | 6 +--- 37 files changed, 62 insertions(+), 62 deletions(-) rename Resources/Textures/Mobs/Species/Arachnid/parts.rsi/{head_f.png => head.png} (100%) delete mode 100644 Resources/Textures/Mobs/Species/Arachnid/parts.rsi/head_m.png rename Resources/Textures/Mobs/Species/Arachnid/parts.rsi/{torso_f.png => torso.png} (100%) delete mode 100644 Resources/Textures/Mobs/Species/Arachnid/parts.rsi/torso_m.png rename Resources/Textures/Mobs/Species/Diona/parts.rsi/{head_f.png => head.png} (100%) delete mode 100644 Resources/Textures/Mobs/Species/Diona/parts.rsi/head_m.png rename Resources/Textures/Mobs/Species/Diona/parts.rsi/{torso_f.png => torso.png} (100%) delete mode 100644 Resources/Textures/Mobs/Species/Diona/parts.rsi/torso_m.png rename Resources/Textures/Mobs/Species/Gingerbread/parts.rsi/{head_f.png => head.png} (100%) delete mode 100644 Resources/Textures/Mobs/Species/Gingerbread/parts.rsi/head_m.png rename Resources/Textures/Mobs/Species/Gingerbread/parts.rsi/{torso_f.png => torso.png} (100%) delete mode 100644 Resources/Textures/Mobs/Species/Gingerbread/parts.rsi/torso_m.png rename Resources/Textures/Mobs/Species/Moth/parts.rsi/{head_f.png => head.png} (100%) delete mode 100644 Resources/Textures/Mobs/Species/Moth/parts.rsi/head_m.png rename Resources/Textures/Mobs/Species/Skeleton/parts.rsi/{head_f.png => head.png} (100%) delete mode 100644 Resources/Textures/Mobs/Species/Skeleton/parts.rsi/head_m.png rename Resources/Textures/Mobs/Species/Slime/parts.rsi/{head_f.png => head.png} (100%) delete mode 100644 Resources/Textures/Mobs/Species/Slime/parts.rsi/head_m.png rename Resources/Textures/Mobs/Species/Vulpkanin/parts.rsi/{head_f.png => head.png} (100%) delete mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/parts.rsi/head_m.png diff --git a/Content.Shared/Body/SharedVisualBodySystem.cs b/Content.Shared/Body/SharedVisualBodySystem.cs index 52f5bbfd5db..677d4f46dd0 100644 --- a/Content.Shared/Body/SharedVisualBodySystem.cs +++ b/Content.Shared/Body/SharedVisualBodySystem.cs @@ -138,6 +138,12 @@ private void OnVisualOrganApplyProfile(Entity ent, ref Bod SetOrganColor(ent, ent.Comp.Profile.EyeColor); else SetOrganColor(ent, ent.Comp.Profile.SkinColor); + + if (ent.Comp.SexStateOverrides is { } overrides && overrides.TryGetValue(data.Sex, out var state)) + { + ent.Comp.Data.State = state; + SetOrganAppearance(ent, ent.Comp.Data); + } } private void OnMarkingsOrganApplyMarkings(Entity ent, ref BodyRelayedEvent args) diff --git a/Content.Shared/Body/VisualOrganComponent.cs b/Content.Shared/Body/VisualOrganComponent.cs index 10214f9f2a7..9ca2c363746 100644 --- a/Content.Shared/Body/VisualOrganComponent.cs +++ b/Content.Shared/Body/VisualOrganComponent.cs @@ -20,6 +20,12 @@ public sealed partial class VisualOrganComponent : Component [DataField(required: true), AutoNetworkedField, AlwaysPushInheritance] public PrototypeLayerData Data; + /// + /// When applying a profile, if the sex is present in this dictionary, overrides the state of the data. + /// + [DataField] + public Dictionary? SexStateOverrides; + [DataField, AutoNetworkedField] public OrganProfileData Profile = new(); } diff --git a/Resources/Prototypes/Body/Species/human.yml b/Resources/Prototypes/Body/Species/human.yml index aa67c15ec78..7c0ee31f329 100644 --- a/Resources/Prototypes/Body/Species/human.yml +++ b/Resources/Prototypes/Body/Species/human.yml @@ -124,11 +124,11 @@ group: Human - type: entity - parent: [ OrganBaseTorso, OrganHumanExternal ] + parent: [ OrganBaseTorsoSexed, OrganBaseTorso, OrganHumanExternal ] id: OrganHumanTorso - type: entity - parent: [ OrganBaseHead, OrganHumanExternal ] + parent: [ OrganBaseHeadSexed, OrganBaseHead, OrganHumanExternal ] id: OrganHumanHead - type: entity diff --git a/Resources/Prototypes/Body/Species/moth.yml b/Resources/Prototypes/Body/Species/moth.yml index 22c08d540fb..a5a1874169f 100644 --- a/Resources/Prototypes/Body/Species/moth.yml +++ b/Resources/Prototypes/Body/Species/moth.yml @@ -233,7 +233,7 @@ sprite: Mobs/Species/Moth/parts.rsi - type: entity - parent: [ OrganBaseTorso, OrganMothExternal ] + parent: [ OrganBaseTorsoSexed, OrganBaseTorso, OrganMothExternal ] id: OrganMothTorso - type: entity diff --git a/Resources/Prototypes/Body/Species/reptilian.yml b/Resources/Prototypes/Body/Species/reptilian.yml index 2c0d18056b1..3dd25cf4680 100644 --- a/Resources/Prototypes/Body/Species/reptilian.yml +++ b/Resources/Prototypes/Body/Species/reptilian.yml @@ -203,11 +203,11 @@ group: Reptilian - type: entity - parent: [ OrganBaseTorso, OrganReptilianExternal ] + parent: [ OrganBaseTorsoSexed, OrganBaseTorso, OrganReptilianExternal ] id: OrganReptilianTorso - type: entity - parent: [ OrganBaseHead, OrganReptilianExternal ] + parent: [ OrganBaseHeadSexed, OrganBaseHead, OrganReptilianExternal ] id: OrganReptilianHead - type: entity diff --git a/Resources/Prototypes/Body/Species/skeleton.yml b/Resources/Prototypes/Body/Species/skeleton.yml index dd2004aebaf..ebe5bb6e28a 100644 --- a/Resources/Prototypes/Body/Species/skeleton.yml +++ b/Resources/Prototypes/Body/Species/skeleton.yml @@ -204,7 +204,7 @@ group: Skeleton - type: entity - parent: [ OrganBaseTorso, OrganSkeletonPersonExternal ] + parent: [ OrganBaseTorsoSexed, OrganBaseTorso, OrganSkeletonPersonExternal ] id: OrganSkeletonPersonTorso - type: entity diff --git a/Resources/Prototypes/Body/Species/slime.yml b/Resources/Prototypes/Body/Species/slime.yml index fd238c55250..a72a949b772 100644 --- a/Resources/Prototypes/Body/Species/slime.yml +++ b/Resources/Prototypes/Body/Species/slime.yml @@ -210,7 +210,7 @@ group: Slime - type: entity - parent: [ OrganBaseTorso, OrganSlimePersonExternal ] + parent: [ OrganBaseTorsoSexed, OrganBaseTorso, OrganSlimePersonExternal ] id: OrganSlimePersonTorso - type: entity diff --git a/Resources/Prototypes/Body/Species/vulpkanin.yml b/Resources/Prototypes/Body/Species/vulpkanin.yml index 2e3557c8d7e..9209e4c8b73 100644 --- a/Resources/Prototypes/Body/Species/vulpkanin.yml +++ b/Resources/Prototypes/Body/Species/vulpkanin.yml @@ -234,7 +234,7 @@ sprite: Mobs/Species/Vulpkanin/parts.rsi - type: entity - parent: [ OrganBaseTorso, OrganVulpkaninExternal ] + parent: [ OrganBaseTorsoSexed, OrganBaseTorso, OrganVulpkaninExternal ] id: OrganVulpkaninTorso - type: entity diff --git a/Resources/Prototypes/Body/base_organs.yml b/Resources/Prototypes/Body/base_organs.yml index 1dca7f2a0ec..0a5607acefa 100644 --- a/Resources/Prototypes/Body/base_organs.yml +++ b/Resources/Prototypes/Body/base_organs.yml @@ -31,11 +31,11 @@ - type: Organ category: Torso - type: Sprite - state: torso_m + state: torso - type: VisualOrgan layer: enum.HumanoidVisualLayers.Chest data: - state: torso_m + state: torso - type: VisualOrganMarkings markingData: layers: @@ -54,11 +54,11 @@ - type: Organ category: Head - type: Sprite - state: head_m + state: head - type: VisualOrgan layer: enum.HumanoidVisualLayers.Head data: - state: head_m + state: head - type: VisualOrganMarkings markingData: layers: @@ -435,3 +435,29 @@ components: - type: Sprite sprite: Mobs/Species/Human/organs.rsi + +- type: entity + id: OrganBaseHeadSexed + abstract: true + components: + - type: Sprite + state: head_m + - type: VisualOrgan + data: + state: head_m + sexStateOverrides: + Male: head_m + Female: head_f + +- type: entity + id: OrganBaseTorsoSexed + abstract: true + components: + - type: Sprite + state: torso_m + - type: VisualOrgan + data: + state: torso_m + sexStateOverrides: + Male: torso_m + Female: torso_f diff --git a/Resources/Prototypes/Species/diona.yml b/Resources/Prototypes/Species/diona.yml index 6dfd3587206..880cdfdf84e 100644 --- a/Resources/Prototypes/Species/diona.yml +++ b/Resources/Prototypes/Species/diona.yml @@ -10,3 +10,5 @@ femaleFirstNames: NamesDionaFirst lastNames: NamesDionaLast naming: TheFirstofLast + sexes: + - Unsexed diff --git a/Resources/Textures/Mobs/Species/Arachnid/parts.rsi/head_f.png b/Resources/Textures/Mobs/Species/Arachnid/parts.rsi/head.png similarity index 100% rename from Resources/Textures/Mobs/Species/Arachnid/parts.rsi/head_f.png rename to Resources/Textures/Mobs/Species/Arachnid/parts.rsi/head.png diff --git a/Resources/Textures/Mobs/Species/Arachnid/parts.rsi/head_m.png b/Resources/Textures/Mobs/Species/Arachnid/parts.rsi/head_m.png deleted file mode 100644 index 505fd68dfff1d43de919b97b28c82a9917c10531..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 423 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEV9fJ$aSW-L^Y)fuU$cP#>xD$= zsP0M1KX~>{wU$31yZsT5Ws~=5Q6bUjUe_C{i98kMTmO4%3Mu{H*z9Sj#$<6eYWJV3 zdzPuxNVFZZoZkK6UiWd!?Ahl_J&$W@-Lc#*k^Jd*q0DN%LsNgst3Hg%?lKe-4D6Y> z<=Rj2o!QnOcD(a`EbP;@ED_-uJ|Nd%{QO4ezUiyh3OH$v?#o^c)m4 z)UVrO`SWt*(YsS}1-Duohd=GU^;qUqY*d|O^1O9ZMU>8(AG@%t?NZIhRcn72Wyf9* zwbVE``T1wYHCx;@>=ZVpM_-t`?u^zgrfS_+QQvMocKM{M5XG=>@01|R3EVT5c^X~O zyli5t>%^g$fAaSBhVT14H80wn-^ro3;+Q?-^UqD|vkyu#!W_fEQ1MoH`Fz<;`M~_=oqsD&~+W!w(S)^in?d&qL$K!DW0A*Q12+>P>Aq2{@?5+DWu|5&s?Ogrj z8bE0XJZHcfkk0TioU1=O1BkLL;l1x=fcL(4XO@IAFec8xRI)OlEX!WyrJ$@qtP>Z& zT>az#5G0&hb>D?DfSxwq`%n~fyd-Y{5(UsRu{KI67-Qc4;gwvmwbu7BQDe-a{{x2l z#u#*6ho7IH5R5hS8HQmPhG7_nVHk#C80O1Ko)2i6W}~&f3n8GCf^!bn>lH;&toBY$ zYkj}nZrEAPCfTjooes;PGxg9#&Xtl4E%8{eB-BB)i=XbzLL%;(?3| zsO!4dj|UztvdiVN%9~kwD_m98)4YJSHhDlJt1n=!4dT>{7|skV32Bjb>?f7k0T@ed z>d)tjzk{{5*BXnvLMhvDb^wNHH5^V@GYE0^#e))4USE;51*Rr6*5p$jvH~y^9=5C3 z;8Py5YQQk+zm)-FUVw#bz*yAR-UegZv4_QLKy2iPx%%}GQ-RCt{2+A&KbK^O+$cWo~q6RugrG}~UXm4&bbu1k?Xu#Wf-=B(!jOzll$ zbB*W^IM5)b9+Fuv3di?!Np|P^c6KIPybBOQ>Jma& zA%u0G4-R+jYsdd9t`6tix<2ZT75JVYgs@V|fOBr+IL6P(ceGo50DzRzdpuv9bE}jJ zo?i6y<^t_jzgGPXpM!-EHc1i)A#AVLLpuF|cB>D@7@{b8)16p_n{?O5^yUJ$iwU~% ze(f>6CO}FVjK^c#E+)vb3}3ePP?lxw;&sgDb3{>ue${c4@WIk&$zeqr-r2XP!D z3`1mDw)X!3xAd>CuVIWqS(a!t8i=9@TI;I*!QrkwIl5e_ms%@edwaXO_&m>%W!c)d z!eG>~Ns?eZ9s_t>@=B?oEX!(J2qElX)LHrBftoAeBXG`bqtO6k?8TCIzrDv(=tFVN zt$X$pLI@#*5JCtcgb+dqAs^tqBJp+AUO7nkTii4lb*ziVf%l2Wf#vrBrZ*QjKf7A0 z>l2N6H9Qz~Y&YJAF{aAoqbRDfL16up;4VH%5)?%Nt##E4V+?72`eH&}L(I3rXQ7%%< R;nDyA002ovPDHLkV1gnzZ%hCH diff --git a/Resources/Textures/Mobs/Species/Diona/parts.rsi/meta.json b/Resources/Textures/Mobs/Species/Diona/parts.rsi/meta.json index bc90b509a1d..1c6e521c5fd 100644 --- a/Resources/Textures/Mobs/Species/Diona/parts.rsi/meta.json +++ b/Resources/Textures/Mobs/Species/Diona/parts.rsi/meta.json @@ -11,11 +11,7 @@ "name": "full" }, { - "name": "head_f", - "directions": 4 - }, - { - "name": "head_m", + "name": "head", "directions": 4 }, { @@ -51,11 +47,7 @@ "directions": 4 }, { - "name": "torso_f", - "directions": 4 - }, - { - "name": "torso_m", + "name": "torso", "directions": 4 } ] diff --git a/Resources/Textures/Mobs/Species/Diona/parts.rsi/torso_f.png b/Resources/Textures/Mobs/Species/Diona/parts.rsi/torso.png similarity index 100% rename from Resources/Textures/Mobs/Species/Diona/parts.rsi/torso_f.png rename to Resources/Textures/Mobs/Species/Diona/parts.rsi/torso.png diff --git a/Resources/Textures/Mobs/Species/Diona/parts.rsi/torso_m.png b/Resources/Textures/Mobs/Species/Diona/parts.rsi/torso_m.png deleted file mode 100644 index 6aaf688a4a2a9660c8cde04371c1f4854bb82647..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1681 zcmV;C25$L@P)Px*OG!jQRCt{2nm=gVRv5s4cXaYSF!%5xi~>PpVr$A^5W!xG2r-l_f#Bfbx@1wj z1cD$_;Rtj|Z^?8+Xb5x(g_uKhaVP>0o@B?P2v`^`LBb$sj5?@Kl^w@Expz$i`YlE} z`F(%%-uphi?}LVhhK7cQhK6qd*LCyiwc|MXS z02x#T38${S$88 zy45la1Jg9QDwp}~kDu5(*u=6dEXyK_A_jv&E!pQTfglJNjYhfe`y91*c=2qzB znx;t@hTJso1I5%-#Bu!D^OIsQ7_=P6$#q@l+O=yufAyFjRvzN}K3SHP(|$M{)=t32 zR#qiL$_Wa~vWVlDUa!|u%Vio)fFd6-41*vDIBM@OKeK|mR=LPT_kb!do^7{Q*N$@$ z3M|Vi@B6-AhDVhJ)={7?YStwmj+wtw+!I1v%6O>Z0Dy%nw>kW{1z2U=S4oNEIQg`V zuc9(dP18;+#k!28@ao!PzHsF>hGCq@_n}CXbX^CE-FjNnU*WoLuA)zxrdXE6{{B9X z9zB|_^Hq9z`U?#H`63(+hk4yx{A+VzCRk-O8s%!YKh563=0p_wuNiyVtgbEQSLHIm znVZe}#!`NB;m6vaqYVuW4Gj$q4Gj$q4Gj(75b6-*YwMv(^OybqTHo%~GlBQX+p;K9 zJs()#SSqW@ljii;>NxJt;8&`8)hWx@IuyMsm$7Y|IF1pa;N9VCuIqPD)#D^dNYfP9 zt~2b|%+IXw^Urs3DJ4M=pzAvC4qtQfyb@q{>@jN{i2-G8&@c>UKixn|3Gknu1Swfk zN@hRZD2@Npaou^;ngI%RB(Azbf}p5bNh$xH0nf4!QtDG83jjd$)zF&5%8HRynSqLGh)1Wo>COAK{ zQkJ2V$5mfI9LFR{Qnadw+sKX1M00^RFLzt(8%w!ryh@S;DP>utRgOrK1k180-pP2O zxKk44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`031o(uwrutdUs)^b$E#v9ar=GU@oq3_VcI^U6>a)ej11XM@Aiv=M5WsM+ zd2b|8jI+QavY3H^?=T269?xHq0uEaj?;r@2oM!q8k9L|a=XaE2IICGV=BIDem z)4V&JTV>*=oLu&E@jpI?DZ=6R&mHMCW-_e4-*co%UoByO<)P|V%;E<9|IWlk-)GYM zaov(Z-9_b2J;%B2{I4to-sjhHTLdt2Ezojc3}Mx1IK?>Ozh=?bw;mk(rwMSpw7YZa z^Zup3BONdNd%&r!&>4RAn#h8Wy$duZ!mbe`njxgN@xNAVXKAa diff --git a/Resources/Textures/Mobs/Species/Gingerbread/parts.rsi/meta.json b/Resources/Textures/Mobs/Species/Gingerbread/parts.rsi/meta.json index fec31a494d2..8ddf28a359f 100644 --- a/Resources/Textures/Mobs/Species/Gingerbread/parts.rsi/meta.json +++ b/Resources/Textures/Mobs/Species/Gingerbread/parts.rsi/meta.json @@ -11,11 +11,7 @@ "name": "full" }, { - "name": "head_f", - "directions": 4 - }, - { - "name": "head_m", + "name": "head", "directions": 4 }, { @@ -51,11 +47,7 @@ "directions": 4 }, { - "name": "torso_f", - "directions": 4 - }, - { - "name": "torso_m", + "name": "torso", "directions": 4 } ] diff --git a/Resources/Textures/Mobs/Species/Gingerbread/parts.rsi/torso_f.png b/Resources/Textures/Mobs/Species/Gingerbread/parts.rsi/torso.png similarity index 100% rename from Resources/Textures/Mobs/Species/Gingerbread/parts.rsi/torso_f.png rename to Resources/Textures/Mobs/Species/Gingerbread/parts.rsi/torso.png diff --git a/Resources/Textures/Mobs/Species/Gingerbread/parts.rsi/torso_m.png b/Resources/Textures/Mobs/Species/Gingerbread/parts.rsi/torso_m.png deleted file mode 100644 index bde0508ffdad7ff047dd9ec790f7880328fd6a8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`032l#}z?%K60)z7LkFLYK-)YGR=cTCHuigWd})d$MI(l}WKq&Q20{DS{O z0Yk8Vg%C)vz$3Dlfr0NZ2s0kfUy%Z|%)-;fF(ktM?X8qcJK|!UZ}s@e3GkDhhm7@4j+hD7;+Hd@G;JL2|j|9Ht0|L%|M`o9Awpx)saTIb&wfjDsiMG3Yuk zx+(U+cqL=brwz&s_gd6s_lmszzD+EF(S>^h!y1&s&Fiw_<7$s>N;Q2A_SW z-k;y5Y~heu*2lPBY;g?3BU_Jl##qLA=>?(90u$ab-BH@x{VKMhRDxk$wgA%;TL*3d z<|Ul3`=0M(^T}Cmr8-01)PW^%#(@h5+pXpQ&ppRCx#oQ)<35H08GGl+<#VizJ8ggg O%i!ti=d#Wzp$P!}^TR#> diff --git a/Resources/Textures/Mobs/Species/Moth/parts.rsi/head_f.png b/Resources/Textures/Mobs/Species/Moth/parts.rsi/head.png similarity index 100% rename from Resources/Textures/Mobs/Species/Moth/parts.rsi/head_f.png rename to Resources/Textures/Mobs/Species/Moth/parts.rsi/head.png diff --git a/Resources/Textures/Mobs/Species/Moth/parts.rsi/head_m.png b/Resources/Textures/Mobs/Species/Moth/parts.rsi/head_m.png deleted file mode 100644 index 6788ca0c00ec97aef9640dce281da510f9fb3282..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 324 zcmV-K0lWT*P)zEu?lsuwx3ENf3Z5Yl9#z<~4#K4)+77m;v$6 zoUD(j0$j{9f2dD&t6SY_yT+qm>sr?x{mWQBk%7#Fr-f8!AOf?gAFLbpEJFwhlnL?8nmf7hL1yTfJAJAQlqh;pZaO!*d693@ch8+10X z5D63t=flO%6bgaJVxBYefmbq~fTrtP%oAA*y}5yR;N}h}E~hKE`z=BUA%qY@JTV`B WRC5fOPpIDj0000EX>4Tx04R}tkv&MmKpe$i(~2S$hjvhL$WWauh)QvkDi*;)X)CnqU~=gfG-*gu zTpR`0f`cE6RRdDMv7M|nl9zMR_MR}I@xj)B%QZO0d6N%@TZdk+{#Ia3F z=e$oGW@SksJ|~_q=z_$LT$f#b<6LrB;F)0~o1P~Q6N{xTmb;jh4V8F?IHIT;NklE# zOz{RF`qIAne$g1?`tf$V^`7TL#y7^ex~^T!cc09sk8g}|)>>z+bzRrp#$zRM zzxe(ctq6T^Ypsjp*wuCI;y8BJ+EJ1)#{9AHzaO9YKYS8VN``REX$sQAb46V7C0V{n9XK5olXdX0Q>#^;hRyGWzUnz-CDdt}&fXaXz21+wHvKdnIg)aawB#A<(uh(li})CpN~oD2i_Hd7i(^Nkl|ML_|bH zL_|bHMD(Hjm-_+0_&xe}jo-J(M{iHx#lLTnzok7t@d>WA2JpKhETu#gMgRONkI?r8 z`;Ks*gVx$B{@?=igb=rJS(eE2+;^(M@;pabmapbAly?Ezw!Mv&Qt1B`W6)YdDfMbD zLk+$l@oTejT5CutaX1`sxm>&x@KF>6ilRUmhFGuHZ)(wd-4N-EP!t7Ls}-b_D9aL6 zRryRe*mAjqQVLDeAW0HbRposOcom=*h9O>FUTzB?<0$HjpQb71^EtvWd~`@6A|fIp fA|fIpqR-aWvmCDf39RRA=v-l!M7(7ysQqTBh=QB4c5qOGEuz!(U0~D!2cha_K|) zKdbr|N9TN&OV;_eC-=71W{!D3Px%5J^NqRCt{2+Rw|PKo|$`uRCjpDDaeLc_ZqN=uh|5)%y%thzAdLvG50siO-%C zZEIh&9}BzB2L^PK`94kq9%cZ>{%gjNhl!}YJ{%4-ola2{1(wU@!*L8_P{bcIyOdIG z{(8M`L!Qn1wiqHp5CoKE84(d>Sw=w+Q1jbudsSw)d7ejFYpUy-wASQ#9=$5>+hT$s zpsK2ymBT5JEs}4FJ$uLkI!ew&A+&TmJ&rb;+_U zn5Nn5H%$|kWxYKgLF9HBtco0 zz5cQ+ktE6B@G+7kK^(`pUaxJ7<9KxbsIS2Bc%<2E*7j#vhOe)$yJNlME3n(`Xti3k z_xt@G+wInPMIK{}F~%5Uj4{R-V~jDz*gtFZ`2eL90l;Rn`KwzoQc42Qo)P%S`2Z;; zRaHe*RZ$d0B&8g+G5Jg#Qc8-VsIB88H8c|th9Tv7-a8-Q`~Jsf!1w*$8HGI0DGbB+ z?+!OEmkR)(C<+us0U-n&#~Cx!D30Sm2+`(uYZ_|Q1OPyqroDS1#Mq$*yUn_-Wr&~8 z6q2SX=JPpt<807*qoM6N<$f@$Orl>h($ diff --git a/Resources/Textures/Mobs/Species/Vulpkanin/parts.rsi/meta.json b/Resources/Textures/Mobs/Species/Vulpkanin/parts.rsi/meta.json index fb445e85a19..c2eb0e3b268 100644 --- a/Resources/Textures/Mobs/Species/Vulpkanin/parts.rsi/meta.json +++ b/Resources/Textures/Mobs/Species/Vulpkanin/parts.rsi/meta.json @@ -14,11 +14,7 @@ "name": "icon" }, { - "name": "head_f", - "directions": 4 - }, - { - "name": "head_m", + "name": "head", "directions": 4 }, { From 2cd832b67e0022cf6e58336460c2704ed017d3ca Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 20 Jan 2026 21:25:14 +0000 Subject: [PATCH 058/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 84f1052e58d..097f1ab66f5 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: ArtisticRoomba - changes: - - message: Fixed Atmospherics Delta-Pressure damage not capping damage beyond a - certain pressure for applicable structures. - type: Fix - id: 8928 - time: '2025-09-05T07:09:54.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40125 - author: ArtisticRoomba changes: - message: Shutters of all types (regular, windowed, radiation) now take Delta-Pressure @@ -3956,3 +3948,10 @@ id: 9434 time: '2026-01-20T21:07:38.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/32932 +- author: sowelipililimute + changes: + - message: Species now properly render their sex-specific sprites + type: Fix + id: 9435 + time: '2026-01-20T21:24:06.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42554 From cf19062414953efdbacf0dbfaf0184b22df3669b Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Tue, 20 Jan 2026 22:11:40 +0100 Subject: [PATCH 059/603] Fix handheld grinder and reaction mixer audio stacking (#42498) * yeah * AAAAAAAAAAAAAAAAAAAAAAA --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- .../Chemistry/Reaction/ReactionMixerSystem.cs | 13 +++++-------- .../EntitySystems/HandheldGrinderSystem.cs | 6 ++---- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/Content.Shared/Chemistry/Reaction/ReactionMixerSystem.cs b/Content.Shared/Chemistry/Reaction/ReactionMixerSystem.cs index 030c8b890cc..bd5b481517f 100644 --- a/Content.Shared/Chemistry/Reaction/ReactionMixerSystem.cs +++ b/Content.Shared/Chemistry/Reaction/ReactionMixerSystem.cs @@ -42,9 +42,6 @@ private void OnUseInHand(Entity ent, ref UseInHandEvent if (!CanMix(ent.AsNullable(), ent)) return; - if (_net.IsServer) // Cannot cancel predicted audio. - ent.Comp.AudioStream = _audio.PlayPvs(ent.Comp.MixingSound, ent)?.Entity; - var doAfterArgs = new DoAfterArgs(EntityManager, args.User, ent.Comp.TimeToMix, @@ -60,7 +57,8 @@ private void OnUseInHand(Entity ent, ref UseInHandEvent BreakOnMove = true }; - _doAfter.TryStartDoAfter(doAfterArgs); + if (_doAfter.TryStartDoAfter(doAfterArgs)) + ent.Comp.AudioStream = _audio.PlayPredicted(ent.Comp.MixingSound, ent, args.User)?.Entity ?? ent.Comp.AudioStream; } private void OnAfterInteract(Entity ent, ref AfterInteractEvent args) @@ -71,12 +69,11 @@ private void OnAfterInteract(Entity ent, ref AfterIntera if (!CanMix(ent.AsNullable(), args.Target.Value)) return; - if (_net.IsServer) // Cannot cancel predicted audio. - ent.Comp.AudioStream = _audio.PlayPvs(ent.Comp.MixingSound, ent)?.Entity; - var doAfterArgs = new DoAfterArgs(EntityManager, args.User, ent.Comp.TimeToMix, new ReactionMixDoAfterEvent(), ent, args.Target.Value, ent); - _doAfter.TryStartDoAfter(doAfterArgs); + if (_doAfter.TryStartDoAfter(doAfterArgs)) + ent.Comp.AudioStream = _audio.PlayPredicted(ent.Comp.MixingSound, ent, args.User)?.Entity ?? ent.Comp.AudioStream; + args.Handled = true; } diff --git a/Content.Shared/Kitchen/Components/EntitySystems/HandheldGrinderSystem.cs b/Content.Shared/Kitchen/Components/EntitySystems/HandheldGrinderSystem.cs index 30e61c85016..26130d6d30c 100644 --- a/Content.Shared/Kitchen/Components/EntitySystems/HandheldGrinderSystem.cs +++ b/Content.Shared/Kitchen/Components/EntitySystems/HandheldGrinderSystem.cs @@ -67,9 +67,6 @@ private void OnInteractUsing(Entity ent, ref InteractU if (!_solution.ResolveSolution(ent.Owner, ent.Comp.SolutionName, ref ent.Comp.GrinderSolution)) return; - if (_net.IsServer) // Cannot cancel predicted audio. - ent.Comp.AudioStream = _audio.PlayPvs(ent.Comp.Sound, ent)?.Entity; - var doAfter = new DoAfterArgs(EntityManager, args.User, ent.Comp.DoAfterDuration, new HandheldGrinderDoAfterEvent(), ent, ent, item) { NeedHand = true, @@ -79,7 +76,8 @@ private void OnInteractUsing(Entity ent, ref InteractU BreakOnMove = true }; - _doAfter.TryStartDoAfter(doAfter); + if (_doAfter.TryStartDoAfter(doAfter)) + ent.Comp.AudioStream = _audio.PlayPredicted(ent.Comp.Sound, ent, args.User)?.Entity ?? ent.Comp.AudioStream; } private void OnHandheldDoAfter(Entity ent, ref HandheldGrinderDoAfterEvent args) From 423accb9a243bfcb40c843bdddd8e6ea181c3d67 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 20 Jan 2026 21:41:49 +0000 Subject: [PATCH 060/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 097f1ab66f5..dac8bdd0c3d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: ArtisticRoomba - changes: - - message: Shutters of all types (regular, windowed, radiation) now take Delta-Pressure - damage. Blast doors still don't take Delta-Pressure damage. - type: Fix - id: 8929 - time: '2025-09-05T07:47:31.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40126 - author: ScarKy0, FairlySadPanda, TiniestShark, MilonPL, beck-thompson changes: - message: The vulpkanin species can now be selected as a roundstart species. @@ -3955,3 +3947,11 @@ id: 9435 time: '2026-01-20T21:24:06.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42554 +- author: ScarKy0 + changes: + - message: Audio for mortars, juicers and the paperfuge can no longer be stacked + infinitely. + type: Fix + id: 9436 + time: '2026-01-20T21:40:41.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42498 From bd40b85d7408459804f19d5feab2c7b9f13a1368 Mon Sep 17 00:00:00 2001 From: Pok <113675512+Pok27@users.noreply.github.com> Date: Tue, 20 Jan 2026 23:18:36 +0200 Subject: [PATCH 061/603] Towel migration (#42555) Update migration.yml --- Resources/migration.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Resources/migration.yml b/Resources/migration.yml index 53ec5f9717d..71959fec08d 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -785,4 +785,22 @@ TorsoSkeleton: OrganSkeletonPersonTorso RightArmSkeleton: OrganSkeletonPersonArmRight # 2026-01-19 +TowelColorPurple: null +TowelColorRed: null +TowelColorBlue: null +TowelColorDarkBlue: null +TowelColorLightBlue: null +TowelColorTeal: null +TowelColorBrown: null +TowelColorLightBrown: null +TowelColorGray: null +TowelColorGreen: null +TowelColorDarkGreen: null +TowelColorGold: null TowelColorOrange: null +TowelColorBlack: null +TowelColorPink: null +TowelColorYellow: null +TowelColorMaroon: null +TowelColorSilver: null +TowelColorMime: null From fb82cadc9f42cb5b119fe0150b2b6481669391e9 Mon Sep 17 00:00:00 2001 From: Velken <8467292+Velken@users.noreply.github.com> Date: Tue, 20 Jan 2026 18:48:30 -0300 Subject: [PATCH 062/603] "Fix RCD light spam, bypass of indestructible tiles and some plating fixes" - Tile Stacking got merged, time to bring back the RCD fix (#42556) * No more light spam, and some plating fixes * fixed test --- .../Tests/Construction/RCDTest.cs | 8 +-- .../Interaction/InteractionTest.Constants.cs | 1 + Content.Shared/RCD/RCDPrototype.cs | 6 ++ Content.Shared/RCD/Systems/RCDSystem.cs | 60 ++++++++++++++++--- .../en-US/rcd/components/rcd-component.ftl | 1 + Resources/Prototypes/RCD/rcd.yml | 6 +- Resources/Prototypes/Tiles/floors.yml | 13 +--- Resources/Prototypes/Tiles/plating.yml | 28 +++++++++ 8 files changed, 100 insertions(+), 23 deletions(-) diff --git a/Content.IntegrationTests/Tests/Construction/RCDTest.cs b/Content.IntegrationTests/Tests/Construction/RCDTest.cs index f20a0cb434c..770f004517d 100644 --- a/Content.IntegrationTests/Tests/Construction/RCDTest.cs +++ b/Content.IntegrationTests/Tests/Construction/RCDTest.cs @@ -38,9 +38,9 @@ public async Task RCDConstructionDeconstructionTest() pEast = Transform.WithEntityId(pEast, MapData.Grid); pWest = Transform.WithEntityId(pWest, MapData.Grid); - await SetTile(Plating, SEntMan.GetNetCoordinates(pNorth), MapData.Grid); - await SetTile(Plating, SEntMan.GetNetCoordinates(pSouth), MapData.Grid); - await SetTile(Plating, SEntMan.GetNetCoordinates(pEast), MapData.Grid); + await SetTile(PlatingRCD, SEntMan.GetNetCoordinates(pNorth), MapData.Grid); + await SetTile(PlatingRCD, SEntMan.GetNetCoordinates(pSouth), MapData.Grid); + await SetTile(PlatingRCD, SEntMan.GetNetCoordinates(pEast), MapData.Grid); await SetTile(Lattice, SEntMan.GetNetCoordinates(pWest), MapData.Grid); Assert.That(ProtoMan.TryIndex(RCDSettingWall, out var settingWall), $"RCDPrototype not found: {RCDSettingWall}."); @@ -194,7 +194,7 @@ await AssertEntityLookup( // Deconstruct the steel tile. await Interact(null, pEast); await RunSeconds(settingDeconstructTile.Delay + 1); // wait for the deconstruction to finish - await AssertTile(Plating, FromServer(pEast)); + await AssertTile(PlatingRCD, FromServer(pEast)); // Check that the cost of the deconstruction was subtracted from the current charges. newCharges = sCharges.GetCurrentCharges(ToServer(rcd)); diff --git a/Content.IntegrationTests/Tests/Interaction/InteractionTest.Constants.cs b/Content.IntegrationTests/Tests/Interaction/InteractionTest.Constants.cs index 3cfb5a5dbaf..1aac18f3a4f 100644 --- a/Content.IntegrationTests/Tests/Interaction/InteractionTest.Constants.cs +++ b/Content.IntegrationTests/Tests/Interaction/InteractionTest.Constants.cs @@ -11,6 +11,7 @@ public abstract partial class InteractionTest protected const string Floor = "FloorSteel"; protected const string FloorItem = "FloorTileItemSteel"; protected const string Plating = "Plating"; + protected const string PlatingRCD = "PlatingRCD"; protected const string Lattice = "Lattice"; protected const string PlatingBrass = "PlatingBrass"; diff --git a/Content.Shared/RCD/RCDPrototype.cs b/Content.Shared/RCD/RCDPrototype.cs index 2be5e1c7767..c4ac7148f7a 100644 --- a/Content.Shared/RCD/RCDPrototype.cs +++ b/Content.Shared/RCD/RCDPrototype.cs @@ -44,6 +44,12 @@ public sealed partial class RCDPrototype : IPrototype [DataField, ViewVariables(VVAccess.ReadOnly)] public string? Prototype { get; private set; } + /// + /// If true, allows placing the entity once per direction (North, West, South and East) + /// + [DataField, ViewVariables(VVAccess.ReadOnly)] + public bool AllowMultiDirection { get; private set; } + /// /// Number of charges consumed when the operation is completed /// diff --git a/Content.Shared/RCD/Systems/RCDSystem.cs b/Content.Shared/RCD/Systems/RCDSystem.cs index 8b3ae16a1f5..2f1f058a1b7 100644 --- a/Content.Shared/RCD/Systems/RCDSystem.cs +++ b/Content.Shared/RCD/Systems/RCDSystem.cs @@ -146,7 +146,7 @@ private void OnAfterInteract(EntityUid uid, RCDComponent component, AfterInterac var tile = _mapSystem.GetTileRef(gridUid.Value, mapGrid, location); var position = _mapSystem.TileIndicesFor(gridUid.Value, mapGrid, location); - if (!IsRCDOperationStillValid(uid, component, gridUid.Value, mapGrid, tile, position, args.Target, args.User)) + if (!IsRCDOperationStillValid(uid, component, gridUid.Value, mapGrid, tile, position, component.ConstructionDirection, args.Target, args.User)) return; if (!_net.IsServer) @@ -254,7 +254,7 @@ private void OnDoAfterAttempt(EntityUid uid, RCDComponent component, DoAfterAtte var tile = _mapSystem.GetTileRef(gridUid.Value, mapGrid, location); var position = _mapSystem.TileIndicesFor(gridUid.Value, mapGrid, location); - if (!IsRCDOperationStillValid(uid, component, gridUid.Value, mapGrid, tile, position, args.Event.Target, args.Event.User)) + if (!IsRCDOperationStillValid(uid, component, gridUid.Value, mapGrid, tile, position, args.Event.Direction, args.Event.Target, args.Event.User)) args.Cancel(); } @@ -284,7 +284,7 @@ private void OnDoAfter(EntityUid uid, RCDComponent component, RCDDoAfterEvent ar var position = _mapSystem.TileIndicesFor(gridUid.Value, mapGrid, location); // Ensure the RCD operation is still valid - if (!IsRCDOperationStillValid(uid, component, gridUid.Value, mapGrid, tile, position, args.Target, args.User)) + if (!IsRCDOperationStillValid(uid, component, gridUid.Value, mapGrid, tile, position, args.Direction, args.Target, args.User)) return; // Finalize the operation (this should handle prediction properly) @@ -319,6 +319,11 @@ private void OnRCDconstructionGhostRotationEvent(RCDConstructionGhostRotationEve #region Entity construction/deconstruction rule checks public bool IsRCDOperationStillValid(EntityUid uid, RCDComponent component, EntityUid gridUid, MapGridComponent mapGrid, TileRef tile, Vector2i position, EntityUid? target, EntityUid user, bool popMsgs = true) + { + return IsRCDOperationStillValid(uid, component, gridUid, mapGrid, tile, position, component.ConstructionDirection, target, user, popMsgs); + } + + public bool IsRCDOperationStillValid(EntityUid uid, RCDComponent component, EntityUid gridUid, MapGridComponent mapGrid, TileRef tile, Vector2i position, Direction direction, EntityUid? target, EntityUid user, bool popMsgs = true) { var prototype = _protoManager.Index(component.ProtoId); @@ -355,7 +360,7 @@ public bool IsRCDOperationStillValid(EntityUid uid, RCDComponent component, Enti { case RcdMode.ConstructTile: case RcdMode.ConstructObject: - return IsConstructionLocationValid(uid, component, gridUid, mapGrid, tile, position, user, popMsgs); + return IsConstructionLocationValid(uid, component, gridUid, mapGrid, tile, position, direction, user, popMsgs); case RcdMode.Deconstruct: return IsDeconstructionStillValid(uid, tile, target, user, popMsgs); } @@ -363,7 +368,7 @@ public bool IsRCDOperationStillValid(EntityUid uid, RCDComponent component, Enti return false; } - private bool IsConstructionLocationValid(EntityUid uid, RCDComponent component, EntityUid gridUid, MapGridComponent mapGrid, TileRef tile, Vector2i position, EntityUid user, bool popMsgs = true) + private bool IsConstructionLocationValid(EntityUid uid, RCDComponent component, EntityUid gridUid, MapGridComponent mapGrid, TileRef tile, Vector2i position, Direction direction, EntityUid user, bool popMsgs = true) { var prototype = _protoManager.Index(component.ProtoId); @@ -406,8 +411,24 @@ private bool IsConstructionLocationValid(EntityUid uid, RCDComponent component, return false; } + var tileDef = _turf.GetContentTileDefinition(tile); + + // Check rule: Respect baseTurf and baseWhitelist + if (prototype.Prototype != null && _tileDefMan.TryGetDefinition(prototype.Prototype, out var replacementDef)) + { + var replacementContentDef = (ContentTileDefinition) replacementDef; + + if (replacementContentDef.BaseTurf != tileDef.ID && !replacementContentDef.BaseWhitelist.Contains(tileDef.ID)) + { + if (popMsgs) + _popup.PopupClient(Loc.GetString("rcd-component-cannot-build-on-empty-tile-message"), uid, user); + + return false; + } + } + // Check rule: Tiles can't be identical - if (_turf.GetContentTileDefinition(tile).ID == prototype.Prototype) + if (tileDef.ID == prototype.Prototype) { if (popMsgs) _popup.PopupClient(Loc.GetString("rcd-component-cannot-build-identical-tile"), uid, user); @@ -430,6 +451,28 @@ private bool IsConstructionLocationValid(EntityUid uid, RCDComponent component, foreach (var ent in _intersectingEntities) { + // If the entity is the exact same prototype as what we are trying to build, then block it. + // This is to prevent spamming objects on the same tile (e.g. lights) + if (prototype.Prototype != null && MetaData(ent).EntityPrototype?.ID == prototype.Prototype) + { + var isIdentical = true; + + if (prototype.AllowMultiDirection) + { + var entDirection = Transform(ent).LocalRotation.GetCardinalDir(); + if (entDirection != direction) + isIdentical = false; + } + + if (isIdentical) + { + if (popMsgs) + _popup.PopupClient(Loc.GetString("rcd-component-cannot-build-identical-entity"), uid, user); + + return false; + } + } + if (isWindow && HasComp(ent)) continue; @@ -534,7 +577,10 @@ private void FinalizeRCDOperation(EntityUid uid, RCDComponent component, EntityU switch (prototype.Mode) { case RcdMode.ConstructTile: - _mapSystem.SetTile(gridUid, mapGrid, position, new Tile(_tileDefMan[prototype.Prototype].TileId)); + if (!_tileDefMan.TryGetDefinition(prototype.Prototype, out var tileDef)) + return; + + _tile.ReplaceTile(tile, (ContentTileDefinition) tileDef, gridUid, mapGrid); _adminLogger.Add(LogType.RCD, LogImpact.High, $"{ToPrettyString(user):user} used RCD to set grid: {gridUid} {position} to {prototype.Prototype}"); break; diff --git a/Resources/Locale/en-US/rcd/components/rcd-component.ftl b/Resources/Locale/en-US/rcd/components/rcd-component.ftl index 9741bde388c..17fda9111e4 100644 --- a/Resources/Locale/en-US/rcd/components/rcd-component.ftl +++ b/Resources/Locale/en-US/rcd/components/rcd-component.ftl @@ -29,6 +29,7 @@ rcd-component-must-build-on-subfloor-message = You can only build that on expose rcd-component-cannot-build-on-subfloor-message = You can't build that on exposed subfloor! rcd-component-cannot-build-on-occupied-tile-message = You can't build here, the space is already occupied! rcd-component-cannot-build-identical-tile = That tile already exists there! +rcd-component-cannot-build-identical-entity = That already exists there! ### Category names diff --git a/Resources/Prototypes/RCD/rcd.yml b/Resources/Prototypes/RCD/rcd.yml index 5fb5356f91d..b173fa41571 100644 --- a/Resources/Prototypes/RCD/rcd.yml +++ b/Resources/Prototypes/RCD/rcd.yml @@ -37,7 +37,7 @@ category: WallsAndFlooring sprite: /Textures/Interface/Radial/RCD/plating.png mode: ConstructTile - prototype: Plating + prototype: PlatingRCD cost: 1 delay: 1 collisionMask: InteractImpassable @@ -128,6 +128,7 @@ - IsWindow rotation: User fx: EffectRCDConstruct1 + allowMultiDirection: true - type: rcd id: ReinforcedWindow @@ -157,6 +158,7 @@ - IsWindow rotation: User fx: EffectRCDConstruct2 + allowMultiDirection: true # Airlocks - type: rcd @@ -208,6 +210,7 @@ collisionBounds: "-0.23,-0.49,0.23,-0.36" rotation: User fx: EffectRCDConstruct1 + allowMultiDirection: true - type: rcd id: BulbLight @@ -221,6 +224,7 @@ collisionBounds: "-0.23,-0.49,0.23,-0.36" rotation: User fx: EffectRCDConstruct1 + allowMultiDirection: true # Electrical - type: rcd diff --git a/Resources/Prototypes/Tiles/floors.yml b/Resources/Prototypes/Tiles/floors.yml index 52657990d1f..2d2a9ff3ea9 100644 --- a/Resources/Prototypes/Tiles/floors.yml +++ b/Resources/Prototypes/Tiles/floors.yml @@ -22,6 +22,8 @@ - FloorPlanetGrass - FloorSnow - FloorDirt + - PlatingRCD + - FloorHullReinforced - type: tile id: FloorSteel @@ -1607,17 +1609,6 @@ collection: FootstepHull itemDrop: FloorTileItemSteel #probably should not be normally obtainable, but the game shits itself and dies when you try to put null here -- type: tile - id: FloorHullReinforced - parent: BaseStationTile - name: tiles-hull-reinforced - sprite: /Textures/Tiles/hull_reinforced.png - footstepSounds: - collection: FootstepHull - itemDrop: FloorTileItemSteel - heatCapacity: 100000 #/tg/ has this set as "INFINITY." I don't know if that exists here so I've just added an extra 0 - indestructible: true - - type: tile id: FloorReinforcedHardened parent: BaseStationTile diff --git a/Resources/Prototypes/Tiles/plating.yml b/Resources/Prototypes/Tiles/plating.yml index 910f941bee2..a6f150959d9 100644 --- a/Resources/Prototypes/Tiles/plating.yml +++ b/Resources/Prototypes/Tiles/plating.yml @@ -16,6 +16,34 @@ name: tiles-plating sprite: /Textures/Tiles/plating.png +- type: tile + id: PlatingRCD + parent: Plating + baseWhitelist: + - TrainLattice + - FloorPlanetDirt + - FloorDesert + - FloorLowDesert + - FloorPlanetGrass + - FloorSnow + - FloorDirt + - FloorAsteroidIronsand + - FloorAsteroidSand + - FloorAsteroidSandBorderless + - FloorAsteroidIronsandBorderless + - FloorAsteroidSandRedBorderless + +- type: tile + id: FloorHullReinforced + parent: BasePlating + name: tiles-hull-reinforced + sprite: /Textures/Tiles/hull_reinforced.png + footstepSounds: + collection: FootstepHull + itemDrop: FloorTileItemSteel + heatCapacity: 100000 #/tg/ has this set as "INFINITY." I don't know if that exists here so I've just added an extra 0 + indestructible: true + - type: tile id: PlatingDamaged parent: BasePlating From 3618b611243e886e91c94dac2ba26dc3e542ef09 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 20 Jan 2026 22:08:48 +0000 Subject: [PATCH 063/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index dac8bdd0c3d..b3459a29730 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: ScarKy0, FairlySadPanda, TiniestShark, MilonPL, beck-thompson - changes: - - message: The vulpkanin species can now be selected as a roundstart species. - type: Add - id: 8930 - time: '2025-09-05T10:43:17.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/37539 - author: IProduceWidgets changes: - message: Pride pins can now chameleon to any other pride pin! @@ -3955,3 +3948,12 @@ id: 9436 time: '2026-01-20T21:40:41.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42498 +- author: Velken + changes: + - message: RCD can no longer spam lights in the same spot. + type: Fix + - message: RCD can no longer be used to destroy indestructible tiles. + type: Fix + id: 9437 + time: '2026-01-20T22:04:09.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42556 From acb685f3f93ce90719adaa86efbbc7830f82b0f9 Mon Sep 17 00:00:00 2001 From: Kip <32859367+kipdotnet@users.noreply.github.com> Date: Wed, 21 Jan 2026 09:24:06 +1100 Subject: [PATCH 064/603] Remove "Fuck Lizards" and "Lizard Power" decals from crayondecals.rsi (#42541) * remove antilizard.png, replace prolizard.png * forgot the meta.json --- .../Effects/crayondecals.rsi/antilizard.png | Bin 309 -> 0 bytes .../Textures/Effects/crayondecals.rsi/meta.json | 6 +----- .../Effects/crayondecals.rsi/prolizard.png | Bin 491 -> 428 bytes 3 files changed, 1 insertion(+), 5 deletions(-) delete mode 100644 Resources/Textures/Effects/crayondecals.rsi/antilizard.png diff --git a/Resources/Textures/Effects/crayondecals.rsi/antilizard.png b/Resources/Textures/Effects/crayondecals.rsi/antilizard.png deleted file mode 100644 index 459f673aa2b667768c2d9c73a66bef2fefe93fc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmV-50m}Y~P)V9cF4Gr)+FSJNxZ%F4sUOXBlIu-xk2kxqXJ914em<+_Ud!%s^hS^4Uo} zqzck2sQ!&khsbBPa1KO*ve~ewn`JB1-j!DT<2w+k;@x;xK}4Zu1n8oLv>GA9h9koz7=;Z%j}1ynI;M_zxZOqbTip)sw(_ zs1omL*QHIj;(SX0l`CKw3-1FN(iBJ4&}-e>!Pc?gLNyCd@a0>V*3RZy00000NkvXX Hu0mjfnbV4b diff --git a/Resources/Textures/Effects/crayondecals.rsi/meta.json b/Resources/Textures/Effects/crayondecals.rsi/meta.json index b76fec05bfa..7da987bece1 100644 --- a/Resources/Textures/Effects/crayondecals.rsi/meta.json +++ b/Resources/Textures/Effects/crayondecals.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "From https://github.com/tgstation/tgstation/blob/master/icons/effects/crayondecal.dmi at c6803492ab2a5e523aae7b9b1a9e847ba155f1cf", + "copyright": "From https://github.com/tgstation/tgstation/blob/master/icons/effects/crayondecal.dmi at c6803492ab2a5e523aae7b9b1a9e847ba155f1cf, prolizard.png resprited by kipdotnet (github)", "states": [ { "name": "0" @@ -133,10 +133,6 @@ { "name": "amyjon" - }, - { - "name": "antilizard" - }, { "name": "arrow" diff --git a/Resources/Textures/Effects/crayondecals.rsi/prolizard.png b/Resources/Textures/Effects/crayondecals.rsi/prolizard.png index f2d5b497572991138b2b9047d739b39ede7dc7b9..dc04c5442d1f88b6a674990ca24117becc6a817c 100644 GIT binary patch delta 403 zcmV;E0c`&31FQp(BYyw^b5ch_0Itp)=>Px$W=TXrR9J=0R$I1%FbE``?k@Xu1#w}z z0s2#VIU^vbZSVZ#35>iVkpeR_C4l$zI;%r4X@S;Sic35%|0nhEX<(Vey5sbVV zBKm?WL@C)%Ok<~dyP-2vRl8);dsb(|im*s#^5ua7)^pl>r`B4-d(6zTk8)*?Ssl!) z0IwpnaqTrs*nh)Nc=>>dWxbRUK_uiFzoTZOl1+8QPhw}|o5oH2()jcXqyLHk(S=q! z&+|KUdS1aqs*6P=th04pY1=kpW|sMB=;nc-z)RjckVVrA%Z0u7y^wkrL`Lq(nSLiO xK{{I0D=e?wUe=LuO|tx3o`t8h{O1FB0vU0#0rr3QD+~Yt002ovPDHLkV1k;dyHWrE delta 466 zcmV;@0WJQl1M35jBYy$1NklbU-I@0Zv2E2o)ev z03r?K9>-eFvR>?jdz^Ihie|mLU8a&IHu#P!p-~)^QdmTyx&iE7nwGJ#AVWEq|yLw{~DnrX+^(r8SjB zN^A0%Jb$g3X3{3NuSJc>#RV`~GKY9MHy<$0VnH)M%0{}SZ z;JrtTvH2ov77$~c_WM1K$0Lp7n0V(Lw%cv9h?ifocT3H^_W%IC%h#fL0*}W7`OX;{ zSA%BL}ftI+vgjI#4;g$&d2Ah$q35}=>C;$Ke07*qo IM6N<$g2_|kRsaA1 From 0ec9975e4fe9d9be6b83673bdbb6c041a091aa4b Mon Sep 17 00:00:00 2001 From: pathetic meowmeow Date: Tue, 20 Jan 2026 17:24:09 -0500 Subject: [PATCH 065/603] Fix hideable humanoid layers (#42553) * Fix hideable humanoid layers * test maintenance coin * clean return * voxes can no longer have human beards * voxes fixes * voxing out --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- Content.Client/Body/VisualBodySystem.cs | 5 +- .../Humanoid/HideableHumanoidLayersSystem.cs | 4 +- .../Humanoid/HideableHumanoidLayersTest.cs | 88 +++++++++++++++++++ .../Humanoid/HideablePrototypeValidation.cs | 80 +++++++++++++++++ .../Body/VisualOrganMarkingsComponent.cs | 12 +++ .../EntitySystems/HideLayerClothingSystem.cs | 9 +- .../HideableHumanoidLayersComponent.cs | 6 -- .../SharedHideableHumanoidLayersSystem.cs | 10 +-- Resources/Prototypes/Body/Species/human.yml | 5 ++ Resources/Prototypes/Body/Species/moth.yml | 4 + .../Prototypes/Body/Species/reptilian.yml | 10 +++ Resources/Prototypes/Body/Species/vox.yml | 35 ++++---- .../Prototypes/Body/Species/vulpkanin.yml | 11 +++ Resources/Prototypes/Body/base_organs.yml | 2 + .../Prototypes/Body/species_appearance.yml | 7 -- .../Customization/Markings/vox_tattoos.yml | 6 +- 16 files changed, 245 insertions(+), 49 deletions(-) create mode 100644 Content.IntegrationTests/Tests/Humanoid/HideableHumanoidLayersTest.cs create mode 100644 Content.IntegrationTests/Tests/Humanoid/HideablePrototypeValidation.cs diff --git a/Content.Client/Body/VisualBodySystem.cs b/Content.Client/Body/VisualBodySystem.cs index 724dd220173..fba936ee58a 100644 --- a/Content.Client/Body/VisualBodySystem.cs +++ b/Content.Client/Body/VisualBodySystem.cs @@ -232,6 +232,9 @@ private void RemoveMarkings(Entity ent, EntityUid private void OnMarkingsChangedVisibility(Entity ent, ref BodyRelayedEvent args) { + if (!ent.Comp.HideableLayers.Contains(args.Args.Layer)) + return; + foreach (var markings in ent.Comp.Markings.Values) { foreach (var marking in markings) @@ -239,7 +242,7 @@ private void OnMarkingsChangedVisibility(Entity en if (!_marking.TryGetMarking(marking, out var proto)) continue; - if (proto.BodyPart != args.Args.Layer) + if (proto.BodyPart != args.Args.Layer && !(ent.Comp.DependentHidingLayers.TryGetValue(args.Args.Layer, out var dependent) && dependent.Contains(proto.BodyPart))) continue; foreach (var sprite in proto.Sprites) diff --git a/Content.Client/Humanoid/HideableHumanoidLayersSystem.cs b/Content.Client/Humanoid/HideableHumanoidLayersSystem.cs index 4feb48cbdaf..9d034a7a639 100644 --- a/Content.Client/Humanoid/HideableHumanoidLayersSystem.cs +++ b/Content.Client/Humanoid/HideableHumanoidLayersSystem.cs @@ -26,13 +26,13 @@ private void OnHandleState(Entity ent, ref Afte UpdateSprite(ent); } - public override void SetLayerVisibility( + public override void SetLayerOcclusion( Entity ent, HumanoidVisualLayers layer, bool visible, SlotFlags source) { - base.SetLayerVisibility(ent, layer, visible, source); + base.SetLayerOcclusion(ent, layer, visible, source); if (Resolve(ent, ref ent.Comp)) UpdateSprite((ent, ent.Comp)); diff --git a/Content.IntegrationTests/Tests/Humanoid/HideableHumanoidLayersTest.cs b/Content.IntegrationTests/Tests/Humanoid/HideableHumanoidLayersTest.cs new file mode 100644 index 00000000000..24d8da479c6 --- /dev/null +++ b/Content.IntegrationTests/Tests/Humanoid/HideableHumanoidLayersTest.cs @@ -0,0 +1,88 @@ +using System.Collections.Generic; +using Content.IntegrationTests.Tests.Interaction; +using Content.Shared.Body; +using Content.Shared.Humanoid; +using Content.Shared.Humanoid.Markings; +using Content.Shared.Inventory; +using Robust.Client.GameObjects; + +namespace Content.IntegrationTests.Tests.Humanoid; + +[TestOf(typeof(SharedHideableHumanoidLayersSystem))] +public sealed class HideableHumanoidLayersTest : InteractionTest +{ + protected override string PlayerPrototype => "MobVulpkanin"; + + [Test] + public async Task BasicHiding() + { + await SpawnTarget("ClothingMaskGas"); + await Pickup(); // equip mask + await UseInHand(); + + await Server.WaitAssertion(() => + { + var hideableHumanoidLayers = SEntMan.GetComponent(SPlayer); + Assert.That(hideableHumanoidLayers.HiddenLayers, Does.ContainKey(HumanoidVisualLayers.Snout).WithValue(SlotFlags.MASK)); + }); + + await Server.WaitAssertion(() => + { + SEntMan.DeleteEntity(STarget); // de-equip mask + + var hideableHumanoidLayers = SEntMan.GetComponent(SPlayer); + Assert.That(hideableHumanoidLayers.HiddenLayers, Does.Not.ContainKey(HumanoidVisualLayers.Snout)); + }); + } + + [Test] + public async Task DependentHiding() + { + await Server.WaitAssertion(() => + { + var visualBody = SEntMan.System(); + visualBody.ApplyMarkings(SPlayer, new() + { + ["Head"] = new() + { + [HumanoidVisualLayers.SnoutCover] = new List() { new("VulpSnoutNose", 1) }, + }, + }); + }); + + await SpawnTarget("ClothingMaskGas"); + await Pickup(); // equip mask + await UseInHand(); + + await RunTicks(20); + + await Client.WaitAssertion(() => + { + var spriteSystem = CEntMan.System(); + var snoutIndex = spriteSystem.LayerMapGet(CPlayer, "VulpSnout-snout"); + var snoutCoverIndex = spriteSystem.LayerMapGet(CPlayer, "VulpSnoutNose-snout-nose"); + var spriteComp = CEntMan.GetComponent(CPlayer); + + Assert.That(spriteComp[snoutIndex].Visible, Is.False); + Assert.That(spriteComp[snoutCoverIndex].Visible, Is.False); + }); + + await Server.WaitAssertion(() => + { + SEntMan.DeleteEntity(STarget); // de-equip mask + }); + + await RunTicks(20); + + await Client.WaitAssertion(() => + { + var spriteSystem = CEntMan.System(); + var snoutIndex = spriteSystem.LayerMapGet(CPlayer, "VulpSnout-snout"); + var snoutCoverIndex = spriteSystem.LayerMapGet(CPlayer, "VulpSnoutNose-snout-nose"); + var spriteComp = CEntMan.GetComponent(CPlayer); + + Assert.That(spriteComp[snoutIndex].Visible, Is.True); + Assert.That(spriteComp[snoutCoverIndex].Visible, Is.True); + }); + } +} diff --git a/Content.IntegrationTests/Tests/Humanoid/HideablePrototypeValidation.cs b/Content.IntegrationTests/Tests/Humanoid/HideablePrototypeValidation.cs new file mode 100644 index 00000000000..d95992bda2f --- /dev/null +++ b/Content.IntegrationTests/Tests/Humanoid/HideablePrototypeValidation.cs @@ -0,0 +1,80 @@ +using System.Collections.Generic; +using System.Linq; +using Content.Shared.Body; +using Content.Shared.Clothing.Components; +using Content.Shared.Humanoid; +using Robust.Shared.Prototypes; + +namespace Content.IntegrationTests.Tests.Humanoid; + +[TestFixture] +public sealed class HideablePrototypeValidation +{ + [Test] + public async Task NoOrgansWithoutClothing() + { + await using var pair = await PoolManager.GetServerClient(); + + var requirements = new Dictionary>(); + foreach (var (proto, component) in pair.GetPrototypesWithComponent()) + { + foreach (var layer in component.HideableLayers) + { + requirements[layer] = requirements.GetValueOrDefault(layer) ?? []; + requirements[layer].Add(proto.ID); + } + } + + var provided = new HashSet(); + foreach (var (_, component) in pair.GetPrototypesWithComponent()) + { +#pragma warning disable CS0618 // Type or member is obsolete + if (component.Slots is { } slots) + { + provided.UnionWith(slots); + } + provided.UnionWith(component.Layers.Keys); +#pragma warning restore CS0618 // Type or member is obsolete + } + + using var scope = Assert.EnterMultipleScope(); + foreach (var (key, requirement) in requirements) + { + Assert.That(provided, Does.Contain(key), $"No clothing will hide {key} that can be hidden on {string.Join(", ", requirement.Select(it => it.Id))}"); + } + + await pair.CleanReturnAsync(); + } + + [Test] + public async Task NoClothingWithoutOrgans() + { + await using var pair = await PoolManager.GetServerClient(); + + var requirements = new Dictionary>(); + foreach (var (proto, component) in pair.GetPrototypesWithComponent()) + { +#pragma warning disable CS0618 // Type or member is obsolete + foreach (var layer in component.Layers.Keys.Concat(component.Slots ?? [])) +#pragma warning restore CS0618 // Type or member is obsolete + { + requirements[layer] = requirements.GetValueOrDefault(layer) ?? []; + requirements[layer].Add(proto.ID); + } + } + + var provided = new HashSet(); + foreach (var (_, component) in pair.GetPrototypesWithComponent()) + { + provided.UnionWith(component.HideableLayers); + } + + using var scope = Assert.EnterMultipleScope(); + foreach (var (key, requirement) in requirements) + { + Assert.That(provided, Does.Contain(key), $"No organ will hide {key} that can be hidden by {string.Join(", ", requirement.Select(it => it.Id))}"); + } + + await pair.CleanReturnAsync(); + } +} diff --git a/Content.Shared/Body/VisualOrganMarkingsComponent.cs b/Content.Shared/Body/VisualOrganMarkingsComponent.cs index e0ec567cf41..a0af5a6a16e 100644 --- a/Content.Shared/Body/VisualOrganMarkingsComponent.cs +++ b/Content.Shared/Body/VisualOrganMarkingsComponent.cs @@ -22,6 +22,18 @@ public sealed partial class VisualOrganMarkingsComponent : Component [DataField, AutoNetworkedField] public Dictionary> Markings = new(); + /// + /// Layers that are eligible for hiding based on e.g. clothing + /// + [DataField, AutoNetworkedField] + public HashSet HideableLayers = new(); + + /// + /// A dictionary of layers to other layers that visually depend on them for hiding, e.g. SnoutCover depends on Snout + /// + [DataField, AutoNetworkedField] + public Dictionary> DependentHidingLayers = new(); + /// /// Client only - the last markings applied by this component /// diff --git a/Content.Shared/Clothing/EntitySystems/HideLayerClothingSystem.cs b/Content.Shared/Clothing/EntitySystems/HideLayerClothingSystem.cs index 1d58e7071c1..ee0f3932d6c 100644 --- a/Content.Shared/Clothing/EntitySystems/HideLayerClothingSystem.cs +++ b/Content.Shared/Clothing/EntitySystems/HideLayerClothingSystem.cs @@ -51,7 +51,6 @@ private void SetLayerVisibility( hideLayers &= IsEnabled(clothing!); - var hideable = user.Comp.HideLayersOnEquip; var inSlot = clothing.Comp2.InSlotFlag ?? SlotFlags.NONE; // This method should only be getting called while the clothing is equipped (though possibly currently in @@ -64,12 +63,9 @@ private void SetLayerVisibility( // the clothing is (or was)equipped in a matching slot. foreach (var (layer, validSlots) in clothing.Comp1.Layers) { - if (!hideable.Contains(layer)) - continue; - // Only update this layer if we are currently equipped to the relevant slot. if (validSlots.HasFlag(inSlot)) - _hideableHumanoidLayers.SetLayerVisibility(user, layer, !hideLayers, inSlot); + _hideableHumanoidLayers.SetLayerOcclusion(user, layer, hideLayers, inSlot); } // Fallback for obsolete field: assume we want to hide **all** layers, as long as we are equipped to any @@ -80,8 +76,7 @@ private void SetLayerVisibility( { foreach (var layer in slots) { - if (hideable.Contains(layer)) - _hideableHumanoidLayers.SetLayerVisibility(user, layer, !hideLayers, inSlot); + _hideableHumanoidLayers.SetLayerOcclusion(user, layer, hideLayers, inSlot); } } } diff --git a/Content.Shared/Humanoid/HideableHumanoidLayersComponent.cs b/Content.Shared/Humanoid/HideableHumanoidLayersComponent.cs index 8fa0998ab51..75abeb43160 100644 --- a/Content.Shared/Humanoid/HideableHumanoidLayersComponent.cs +++ b/Content.Shared/Humanoid/HideableHumanoidLayersComponent.cs @@ -15,12 +15,6 @@ public sealed partial class HideableHumanoidLayersComponent : Component [DataField, AutoNetworkedField] public Dictionary HiddenLayers = new(); - /// - /// Which layers of this humanoid that should be hidden on equipping a corresponding item.. - /// - [DataField] - public HashSet HideLayersOnEquip = [HumanoidVisualLayers.Hair]; - /// /// Client only - which layers were last hidden /// diff --git a/Content.Shared/Humanoid/SharedHideableHumanoidLayersSystem.cs b/Content.Shared/Humanoid/SharedHideableHumanoidLayersSystem.cs index 6e308cc4bb5..0baea47892d 100644 --- a/Content.Shared/Humanoid/SharedHideableHumanoidLayersSystem.cs +++ b/Content.Shared/Humanoid/SharedHideableHumanoidLayersSystem.cs @@ -11,12 +11,12 @@ public abstract partial class SharedHideableHumanoidLayersSystem : EntitySystem /// /// Humanoid entity /// Layer to toggle visibility for - /// Whether to hide or show the layer. If more than once piece of clothing is hiding the layer, it may remain hidden. + /// Whether to hide (true) or show (false) the layer. If more than once piece of clothing is hiding the layer, it may remain hidden. /// Equipment slot that has the clothing that is (or was) hiding the layer. - public virtual void SetLayerVisibility( + public virtual void SetLayerOcclusion( Entity ent, HumanoidVisualLayers layer, - bool visible, + bool hidden, SlotFlags slot) { if (!Resolve(ent, ref ent.Comp)) @@ -30,7 +30,7 @@ public virtual void SetLayerVisibility( #endif var dirty = false; - if (visible) + if (hidden) { var oldSlots = ent.Comp.HiddenLayers.GetValueOrDefault(layer); ent.Comp.HiddenLayers[layer] = slot | oldSlots; @@ -52,7 +52,7 @@ public virtual void SetLayerVisibility( Dirty(ent); - var evt = new HumanoidLayerVisibilityChangedEvent(layer, visible); + var evt = new HumanoidLayerVisibilityChangedEvent(layer, ent.Comp.HiddenLayers.ContainsKey(layer)); RaiseLocalEvent(ent, ref evt); } } diff --git a/Resources/Prototypes/Body/Species/human.yml b/Resources/Prototypes/Body/Species/human.yml index 7c0ee31f329..fd9dd1fbbea 100644 --- a/Resources/Prototypes/Body/Species/human.yml +++ b/Resources/Prototypes/Body/Species/human.yml @@ -130,6 +130,11 @@ - type: entity parent: [ OrganBaseHeadSexed, OrganBaseHead, OrganHumanExternal ] id: OrganHumanHead + components: + - type: VisualOrganMarkings + hideableLayers: + - enum.HumanoidVisualLayers.Hair + - enum.HumanoidVisualLayers.Snout - type: entity parent: [ OrganBaseArmLeft, OrganHumanExternal ] diff --git a/Resources/Prototypes/Body/Species/moth.yml b/Resources/Prototypes/Body/Species/moth.yml index a5a1874169f..a1a10ff8d90 100644 --- a/Resources/Prototypes/Body/Species/moth.yml +++ b/Resources/Prototypes/Body/Species/moth.yml @@ -239,6 +239,10 @@ - type: entity parent: [ OrganBaseHead, OrganMothExternal ] id: OrganMothHead + components: + - type: VisualOrganMarkings + hideableLayers: + - enum.HumanoidVisualLayers.HeadTop - type: entity parent: [ OrganBaseArmLeft, OrganMothExternal ] diff --git a/Resources/Prototypes/Body/Species/reptilian.yml b/Resources/Prototypes/Body/Species/reptilian.yml index 3dd25cf4680..8083d8593c1 100644 --- a/Resources/Prototypes/Body/Species/reptilian.yml +++ b/Resources/Prototypes/Body/Species/reptilian.yml @@ -205,10 +205,20 @@ - type: entity parent: [ OrganBaseTorsoSexed, OrganBaseTorso, OrganReptilianExternal ] id: OrganReptilianTorso + components: + - type: VisualOrganMarkings + hideableLayers: + - enum.HumanoidVisualLayers.Tail - type: entity parent: [ OrganBaseHeadSexed, OrganBaseHead, OrganReptilianExternal ] id: OrganReptilianHead + components: + - type: VisualOrganMarkings + hideableLayers: + - enum.HumanoidVisualLayers.Snout + - enum.HumanoidVisualLayers.HeadTop + - enum.HumanoidVisualLayers.HeadSide - type: entity parent: [ OrganBaseArmLeft, OrganReptilianExternal ] diff --git a/Resources/Prototypes/Body/Species/vox.yml b/Resources/Prototypes/Body/Species/vox.yml index 15190165e07..08a1b88dc19 100644 --- a/Resources/Prototypes/Body/Species/vox.yml +++ b/Resources/Prototypes/Body/Species/vox.yml @@ -4,13 +4,15 @@ limits: enum.HumanoidVisualLayers.Hair: limit: 1 + onlyGroupWhitelisted: true required: false enum.HumanoidVisualLayers.FacialHair: limit: 1 + onlyGroupWhitelisted: true required: false enum.HumanoidVisualLayers.Head: limit: 4 - required: true + required: false enum.HumanoidVisualLayers.Snout: limit: 1 required: true @@ -19,12 +21,12 @@ limit: 1 required: false enum.HumanoidVisualLayers.LArm: - limit: 1 - required: true + limit: 2 + required: false default: [ VoxLArmScales ] enum.HumanoidVisualLayers.RArm: - limit: 1 - required: true + limit: 2 + required: false default: [ VoxRArmScales ] enum.HumanoidVisualLayers.LHand: limit: 1 @@ -36,11 +38,11 @@ default: [ VoxRHandScales ] enum.HumanoidVisualLayers.LLeg: limit: 1 - required: true + required: false default: [ VoxLLegScales ] enum.HumanoidVisualLayers.RLeg: limit: 1 - required: true + required: false default: [ VoxRLegScales ] enum.HumanoidVisualLayers.LFoot: limit: 1 @@ -290,22 +292,19 @@ - type: entity parent: [ OrganBaseTorso, OrganVoxExternal ] id: OrganVoxTorso - components: - - type: Sprite - state: torso - - type: VisualOrgan - data: - state: torso - type: entity parent: [ OrganBaseHead, OrganVoxExternal ] id: OrganVoxHead components: - - type: Sprite - state: head - - type: VisualOrgan - data: - state: head + - type: VisualOrganMarkings + hideableLayers: + - enum.HumanoidVisualLayers.Snout + - enum.HumanoidVisualLayers.Hair + - enum.HumanoidVisualLayers.FacialHair + dependentHidingLayers: + enum.HumanoidVisualLayers.Snout: + - enum.HumanoidVisualLayers.SnoutCover - type: entity parent: [ OrganBaseArmLeft, OrganVoxExternal ] diff --git a/Resources/Prototypes/Body/Species/vulpkanin.yml b/Resources/Prototypes/Body/Species/vulpkanin.yml index 9209e4c8b73..d2d094e31b4 100644 --- a/Resources/Prototypes/Body/Species/vulpkanin.yml +++ b/Resources/Prototypes/Body/Species/vulpkanin.yml @@ -240,6 +240,17 @@ - type: entity parent: [ OrganBaseHead, OrganVulpkaninExternal ] id: OrganVulpkaninHead + components: + - type: VisualOrganMarkings + hideableLayers: + - enum.HumanoidVisualLayers.Snout + - enum.HumanoidVisualLayers.HeadTop + - enum.HumanoidVisualLayers.HeadSide + - enum.HumanoidVisualLayers.Hair + - enum.HumanoidVisualLayers.FacialHair + dependentHidingLayers: + enum.HumanoidVisualLayers.Snout: + - enum.HumanoidVisualLayers.SnoutCover - type: entity parent: [ OrganBaseArmLeft, OrganVulpkaninExternal ] diff --git a/Resources/Prototypes/Body/base_organs.yml b/Resources/Prototypes/Body/base_organs.yml index 0a5607acefa..5c16184a786 100644 --- a/Resources/Prototypes/Body/base_organs.yml +++ b/Resources/Prototypes/Body/base_organs.yml @@ -60,6 +60,8 @@ data: state: head - type: VisualOrganMarkings + hideableLayers: + - enum.HumanoidVisualLayers.Hair markingData: layers: - Head diff --git a/Resources/Prototypes/Body/species_appearance.yml b/Resources/Prototypes/Body/species_appearance.yml index ab5f83dd7c7..aa584a5e0c7 100644 --- a/Resources/Prototypes/Body/species_appearance.yml +++ b/Resources/Prototypes/Body/species_appearance.yml @@ -84,13 +84,6 @@ - type: ContainerContainer - type: Appearance - type: HideableHumanoidLayers - hideLayersOnEquip: - - Snout - - SnoutCover - - HeadTop - - HeadSide - - FacialHair - - Hair - type: UserInterface interfaces: enum.HumanoidMarkingModifierKey.Key: diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_tattoos.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_tattoos.yml index c10880d281a..c1112ebaea6 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_tattoos.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_tattoos.yml @@ -162,7 +162,7 @@ sprites: - sprite: Mobs/Customization/vox_tattoos.rsi state: eyeshadow_large - + - type: marking id: VoxTattooEyeliner bodyPart: Eyes @@ -173,7 +173,7 @@ - type: marking id: VoxBeakCoverStripe - bodyPart: Snout + bodyPart: SnoutCover coloring: default: type: @@ -186,7 +186,7 @@ - type: marking id: VoxBeakCoverTip - bodyPart: Snout + bodyPart: SnoutCover coloring: default: type: From 833f567fdb4c2627acccef4bbb0ce64cfb99cb4d Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 20 Jan 2026 22:41:02 +0000 Subject: [PATCH 066/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index b3459a29730..55f6fa9327d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,18 +1,4 @@ Entries: -- author: IProduceWidgets - changes: - - message: Pride pins can now chameleon to any other pride pin! - type: Tweak - id: 8931 - time: '2025-09-05T15:55:54.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/36894 -- author: MidZik - changes: - - message: Midround wizard player count requirement increased from 10 to 30. - type: Tweak - id: 8932 - time: '2025-09-05T16:23:06.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/38424 - author: IProduceWidgets changes: - message: You can drink out of the toilets. @@ -3957,3 +3943,18 @@ id: 9437 time: '2026-01-20T22:04:09.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42556 +- author: sowelipililimute + changes: + - message: Clothing now hides your body when it should, and doesn't show your body + when it shouldn't. + type: Fix + id: 9438 + time: '2026-01-20T22:39:51.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42553 +- author: kipdotnet + changes: + - message: The "Lizard Power" graffiti decal has been replaced. + type: Tweak + id: 9439 + time: '2026-01-20T22:39:51.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42541 From eb5b0c558e7c3c4722aa3fc36c59337316fcbdbb Mon Sep 17 00:00:00 2001 From: Velken <8467292+Velken@users.noreply.github.com> Date: Tue, 20 Jan 2026 20:48:02 -0300 Subject: [PATCH 067/603] FIX: Give RCD plating unique name (#42560) * sorry mappers, i had forgor * rename instead of abstract --- Resources/Locale/en-US/tiles/tiles.ftl | 1 + Resources/Prototypes/Tiles/plating.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/Resources/Locale/en-US/tiles/tiles.ftl b/Resources/Locale/en-US/tiles/tiles.ftl index 77cbce4d891..c4b30f57a27 100644 --- a/Resources/Locale/en-US/tiles/tiles.ftl +++ b/Resources/Locale/en-US/tiles/tiles.ftl @@ -1,5 +1,6 @@ tiles-space = space tiles-plating = plating +tiles-rcd-plating = RCD plating tiles-lattice = lattice tiles-lattice-train = train lattice tiles-steel-floor = steel tile diff --git a/Resources/Prototypes/Tiles/plating.yml b/Resources/Prototypes/Tiles/plating.yml index a6f150959d9..e6b9a251111 100644 --- a/Resources/Prototypes/Tiles/plating.yml +++ b/Resources/Prototypes/Tiles/plating.yml @@ -19,6 +19,7 @@ - type: tile id: PlatingRCD parent: Plating + name: tiles-rcd-plating baseWhitelist: - TrainLattice - FloorPlanetDirt From 1b1cb64d24e244b804a8c908256f1f06c7ff4056 Mon Sep 17 00:00:00 2001 From: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> Date: Tue, 20 Jan 2026 20:05:44 -0800 Subject: [PATCH 068/603] Power Consumers Rebalance: Simple Dynamic Power Loading (#41961) * initial commit * misc additions and fixes * final tests and additions * cleanup 1 * fix tests and add a test * fix tests AGAIN * abject horror and misery * cleanup * cleanup 2 * address some issues --- .../Power/EntitySystems/PowerStateSystem.cs | 6 ++ .../Tests/Power/PowerStatePrototypeTest.cs | 59 +++++++++++++++++++ .../Tests/Power/PowerStateTest.cs | 6 +- Content.Server/Holopad/HolopadSystem.cs | 6 ++ .../Kitchen/EntitySystems/MicrowaveSystem.cs | 4 ++ .../EntitySystems/ReagentGrinderSystem.cs | 6 ++ Content.Server/Lathe/LatheProducingSystem.cs | 34 +++++++++++ .../Power/EntitySystems/PowerStateSystem.cs | 21 +++++++ .../SharedSolutionContainerMixerSystem.cs | 4 ++ .../Power/EntitySystems/PowerStateSystem.cs | 27 ++++++--- .../Power/EntitySystems/UIPowerStateSystem.cs | 2 +- Resources/Maps/Misc/terminal.yml | 4 ++ .../Structures/Machines/Computers/arcades.yml | 2 - .../Computers/base_structurecomputers.yml | 6 +- .../Machines/Computers/computers.yml | 35 +++++++---- .../Machines/Medical/chemistry_machines.yml | 10 ++++ .../Entities/Structures/Machines/holopad.yml | 5 +- .../Entities/Structures/Machines/lathe.yml | 5 ++ .../Structures/Machines/microwave.yml | 5 +- .../Structures/Machines/reagent_grinder.yml | 5 +- .../WallmountMachines/station_map.yml | 6 +- 21 files changed, 229 insertions(+), 29 deletions(-) create mode 100644 Content.Client/Power/EntitySystems/PowerStateSystem.cs create mode 100644 Content.IntegrationTests/Tests/Power/PowerStatePrototypeTest.cs create mode 100644 Content.Server/Lathe/LatheProducingSystem.cs create mode 100644 Content.Server/Power/EntitySystems/PowerStateSystem.cs diff --git a/Content.Client/Power/EntitySystems/PowerStateSystem.cs b/Content.Client/Power/EntitySystems/PowerStateSystem.cs new file mode 100644 index 00000000000..b17f1746c2e --- /dev/null +++ b/Content.Client/Power/EntitySystems/PowerStateSystem.cs @@ -0,0 +1,6 @@ +using Content.Shared.Power.EntitySystems; + +namespace Content.Client.Power.EntitySystems; + +/// +public sealed class PowerStateSystem : SharedPowerStateSystem; diff --git a/Content.IntegrationTests/Tests/Power/PowerStatePrototypeTest.cs b/Content.IntegrationTests/Tests/Power/PowerStatePrototypeTest.cs new file mode 100644 index 00000000000..288e976e9b6 --- /dev/null +++ b/Content.IntegrationTests/Tests/Power/PowerStatePrototypeTest.cs @@ -0,0 +1,59 @@ +using System.Linq; +using Content.Server.Power.Components; +using Content.Shared.Power.Components; +using Content.Shared.Power.EntitySystems; +using Robust.Shared.GameObjects; +using Robust.Shared.Prototypes; + +namespace Content.IntegrationTests.Tests.Power; + +[TestFixture, TestOf(typeof(SharedPowerStateSystem))] +public sealed class PowerStatePrototypeTest +{ + /// + /// Asserts that the 's load is the same + /// as the idle or working power draw from , + /// depending on the current power state. + /// + [Test] + public async Task AssertApcPowerMatchesPowerState() + { + await using var pair = await PoolManager.GetServerClient(); + var server = pair.Server; + + var protoMan = server.ResolveDependency(); + var entMan = server.ResolveDependency(); + + await server.WaitAssertion(() => + { + Assert.Multiple(delegate + { + foreach (var prototype in protoMan.EnumeratePrototypes() + .Where(p => !p.Abstract) + .Where(p => !pair.IsTestPrototype(p))) + { + if (!prototype.TryGetComponent(out var powerStateComp, entMan.ComponentFactory)) + continue; + + // LESSON LEARNED: + // ENSURE THAT THE COMPONENT YOU ARE TRYING TO GET IS THE SERVER-SIDE VARIANT + if (!prototype.TryGetComponent(out var powerReceiverComp, entMan.ComponentFactory)) + { + Assert.Fail( + $"Entity prototype '{prototype.ID}' has a PowerStateComponent but is missing the required ApcPowerReceiverComponent."); + } + + var expectedLoad = powerStateComp.IsWorking + ? powerStateComp.WorkingPowerDraw + : powerStateComp.IdlePowerDraw; + + Assert.That(powerReceiverComp.Load, + Is.EqualTo(expectedLoad), + $"Entity prototype '{prototype.ID}' has mismatched power draw between PowerStateComponent and SharedApcPowerReceiverComponent."); + } + }); + }); + + await pair.CleanReturnAsync(); + } +} diff --git a/Content.IntegrationTests/Tests/Power/PowerStateTest.cs b/Content.IntegrationTests/Tests/Power/PowerStateTest.cs index dec398212d1..edec6f3d211 100644 --- a/Content.IntegrationTests/Tests/Power/PowerStateTest.cs +++ b/Content.IntegrationTests/Tests/Power/PowerStateTest.cs @@ -56,7 +56,7 @@ await server.WaitAssertion(() => Assert.That(receiver.Load, Is.EqualTo(powerState.IdlePowerDraw).Within(0.01f)); }); - var system = entManager.System(); + var system = entManager.System(); system.SetWorkingState((ent, powerState), true); Assert.Multiple(() => @@ -93,7 +93,7 @@ await server.WaitAssertion(() => var receiver = entManager.GetComponent(ent); var powerState = entManager.GetComponent(ent); - var system = entManager.System(); + var system = entManager.System(); Entity newEnt = (ent, powerState); Assert.Multiple(() => @@ -146,7 +146,7 @@ await server.WaitAssertion(() => var receiver = entManager.GetComponent(ent); var powerState = entManager.GetComponent(ent); - var system = entManager.System(); + var system = entManager.System(); Entity valueTuple = (ent, powerState); Assert.Multiple(() => diff --git a/Content.Server/Holopad/HolopadSystem.cs b/Content.Server/Holopad/HolopadSystem.cs index c634d14f2f8..c2aaf827dae 100644 --- a/Content.Server/Holopad/HolopadSystem.cs +++ b/Content.Server/Holopad/HolopadSystem.cs @@ -23,6 +23,7 @@ using Robust.Shared.Timing; using Robust.Shared.Utility; using System.Linq; +using Content.Shared.Power.EntitySystems; namespace Content.Server.Holopad; @@ -40,6 +41,7 @@ public sealed class HolopadSystem : SharedHolopadSystem [Dependency] private readonly PopupSystem _popupSystem = default!; [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly PvsOverrideSystem _pvs = default!; + [Dependency] private readonly SharedPowerStateSystem _powerState = default!; private float _updateTimer = 1.0f; private const float UpdateTime = 1.0f; @@ -548,10 +550,14 @@ private void GenerateHologram(Entity entity) { _telephoneSystem.SetSpeakerForTelephone((entity, entityTelephone), (hologramUid, hologramSpeech)); } + + _powerState.SetWorkingState(entity.Owner, true); } private void DeleteHologram(Entity hologram, Entity attachedHolopad) { + _powerState.SetWorkingState(attachedHolopad.Owner, false); + attachedHolopad.Comp.Hologram = null; QueueDel(hologram); diff --git a/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs b/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs index 6f3d3932090..d1df5177d1e 100644 --- a/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/MicrowaveSystem.cs @@ -37,6 +37,7 @@ using Content.Server.Construction.Components; using Content.Shared.Chat; using Content.Shared.Damage.Components; +using Content.Shared.Power.EntitySystems; using Content.Shared.Temperature.Components; namespace Content.Server.Kitchen.EntitySystems @@ -64,6 +65,7 @@ public sealed class MicrowaveSystem : EntitySystem [Dependency] private readonly IPrototypeManager _prototype = default!; [Dependency] private readonly IAdminLogManager _adminLogger = default!; [Dependency] private readonly SharedSuicideSystem _suicide = default!; + [Dependency] private readonly SharedPowerStateSystem _powerState = default!; private static readonly EntProtoId MalfunctionSpark = "Spark"; @@ -112,6 +114,7 @@ private void OnCookStart(Entity ent, ref ComponentStar microwaveComponent.PlayingStream = _audio.PlayPvs(microwaveComponent.LoopingSound, ent, AudioParams.Default.WithLoop(true).WithMaxDistance(5))?.Entity; + _powerState.SetWorkingState(ent.Owner, true); } private void OnCookStop(Entity ent, ref ComponentShutdown args) @@ -121,6 +124,7 @@ private void OnCookStop(Entity ent, ref ComponentShutd SetAppearance(ent.Owner, MicrowaveVisualState.Idle, microwaveComponent); microwaveComponent.PlayingStream = _audio.Stop(microwaveComponent.PlayingStream); + _powerState.SetWorkingState(ent.Owner, false); } private void OnActiveMicrowaveInsert(Entity ent, ref EntInsertedIntoContainerMessage args) diff --git a/Content.Server/Kitchen/EntitySystems/ReagentGrinderSystem.cs b/Content.Server/Kitchen/EntitySystems/ReagentGrinderSystem.cs index a709f4b8d98..bf9e4e1434d 100644 --- a/Content.Server/Kitchen/EntitySystems/ReagentGrinderSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/ReagentGrinderSystem.cs @@ -22,6 +22,7 @@ using Content.Shared.Jittering; using Content.Shared.Kitchen.EntitySystems; using Content.Shared.Power; +using Content.Shared.Power.EntitySystems; namespace Content.Server.Kitchen.EntitySystems { @@ -40,6 +41,7 @@ internal sealed class ReagentGrinderSystem : SharedReagentGrinderSystem [Dependency] private readonly SharedDestructibleSystem _destructible = default!; [Dependency] private readonly RandomHelperSystem _randomHelper = default!; [Dependency] private readonly JitteringSystem _jitter = default!; + [Dependency] private readonly SharedPowerStateSystem _powerState = default!; public override void Initialize() { @@ -136,11 +138,15 @@ public override void Update(float frameTime) private void OnActiveGrinderStart(Entity ent, ref ComponentStartup args) { _jitter.AddJitter(ent, -10, 100); + + // Not all grinders need power. + _powerState.TrySetWorkingState(ent.Owner, true); } private void OnActiveGrinderRemove(Entity ent, ref ComponentRemove args) { RemComp(ent); + _powerState.TrySetWorkingState(ent.Owner, false); } private void OnEntRemoveAttempt(Entity entity, ref ContainerIsRemovingAttemptEvent args) diff --git a/Content.Server/Lathe/LatheProducingSystem.cs b/Content.Server/Lathe/LatheProducingSystem.cs new file mode 100644 index 00000000000..ce81ed66e04 --- /dev/null +++ b/Content.Server/Lathe/LatheProducingSystem.cs @@ -0,0 +1,34 @@ +using Content.Server.Lathe.Components; +using Content.Shared.Power.EntitySystems; + +namespace Content.Server.Lathe; + +/// +/// System for handling lathes that are actively producing items. +/// The component is used more so as a marker for EntityQueryEnumerator, +/// however it's also used to set the power state of the lathe when producing. +/// +public sealed class LatheProducingSystem : EntitySystem +{ + [Dependency] private readonly SharedPowerStateSystem _powerState = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnComponentStartup); + SubscribeLocalEvent(OnComponentShutdown); + } + + private void OnComponentShutdown(Entity ent, ref ComponentShutdown args) + { + // use the Try variant of this here + // or else you get trolled by AllComponentsOneToOneDeleteTest + _powerState.TrySetWorkingState(ent.Owner, false); + } + + private void OnComponentStartup(Entity ent, ref ComponentStartup args) + { + _powerState.TrySetWorkingState(ent.Owner, true); + } +} diff --git a/Content.Server/Power/EntitySystems/PowerStateSystem.cs b/Content.Server/Power/EntitySystems/PowerStateSystem.cs new file mode 100644 index 00000000000..92c103bf8ae --- /dev/null +++ b/Content.Server/Power/EntitySystems/PowerStateSystem.cs @@ -0,0 +1,21 @@ +using Content.Server.Power.Components; +using Content.Shared.Power.Components; +using Content.Shared.Power.EntitySystems; + +namespace Content.Server.Power.EntitySystems; + +public sealed class PowerStateSystem : SharedPowerStateSystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnComponentStartup); + } + + private void OnComponentStartup(Entity ent, ref ComponentStartup args) + { + EnsureComp(ent); + SetWorkingState(ent.Owner, ent.Comp.IsWorking); + } +} diff --git a/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerMixerSystem.cs b/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerMixerSystem.cs index c8e8e89ce53..3128623fc34 100644 --- a/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerMixerSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerMixerSystem.cs @@ -2,6 +2,7 @@ using Content.Shared.Chemistry.Reaction; using Content.Shared.Interaction; using Content.Shared.Popups; +using Content.Shared.Power.EntitySystems; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using Robust.Shared.Network; @@ -21,6 +22,7 @@ public abstract class SharedSolutionContainerMixerSystem : EntitySystem [Dependency] private readonly SharedContainerSystem _container = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedSolutionContainerSystem _solution = default!; + [Dependency] private readonly SharedPowerStateSystem _powerState = default!; /// public override void Initialize() @@ -74,6 +76,7 @@ public void TryStartMix(Entity entity, EntityUi comp.MixingSoundEntity = _audio.PlayPvs(comp.MixingSound, entity, comp.MixingSound?.Params.WithLoop(true)); comp.MixTimeEnd = _timing.CurTime + comp.MixDuration; _appearance.SetData(entity, SolutionContainerMixerVisuals.Mixing, true); + _powerState.SetWorkingState(entity.Owner, true); Dirty(uid, comp); } @@ -86,6 +89,7 @@ public void StopMix(Entity entity) _appearance.SetData(entity, SolutionContainerMixerVisuals.Mixing, false); comp.Mixing = false; comp.MixingSoundEntity = null; + _powerState.SetWorkingState(entity.Owner, false); Dirty(uid, comp); } diff --git a/Content.Shared/Power/EntitySystems/PowerStateSystem.cs b/Content.Shared/Power/EntitySystems/PowerStateSystem.cs index dd47708d2d3..aba41e2432a 100644 --- a/Content.Shared/Power/EntitySystems/PowerStateSystem.cs +++ b/Content.Shared/Power/EntitySystems/PowerStateSystem.cs @@ -7,7 +7,7 @@ namespace Content.Shared.Power.EntitySystems; /// Generic system that handles entities with . /// Used for simple machines that only need to switch between "idle" and "working" power states. /// -public sealed class PowerStateSystem : EntitySystem +public abstract class SharedPowerStateSystem : EntitySystem { [Dependency] private readonly SharedPowerReceiverSystem _powerReceiverSystem = default!; @@ -17,16 +17,9 @@ public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnComponentStartup); - _powerStateQuery = GetEntityQuery(); } - private void OnComponentStartup(Entity ent, ref ComponentStartup args) - { - SetWorkingState(ent.Owner, ent.Comp.IsWorking); - } - /// /// Sets the working state of the entity, adjusting its power draw accordingly. /// @@ -41,4 +34,22 @@ public void SetWorkingState(Entity ent, bool working) _powerReceiverSystem.SetLoad(ent.Owner, working ? ent.Comp.WorkingPowerDraw : ent.Comp.IdlePowerDraw); ent.Comp.IsWorking = working; } + + /// + /// Tries to set the working state of the entity, adjusting its power draw accordingly. + /// Use this for if you're not sure if the entity has a . + /// + /// The entity to set the working state for. + /// Whether the entity should be in the working state. + [PublicAPI] + public void TrySetWorkingState(Entity ent, bool working) + { + // Sometimes systems calling this API handle generic objects that can or can't consume power, + // so to reduce boilerplate we don't log an error. Any entity that *should* have an ApcPowerRecieverComponent + // will log an error in tests if someone tries to add an entity that doesn't have one. + if (!_powerStateQuery.Resolve(ent, ref ent.Comp, false)) + return; + + SetWorkingState(ent, working); + } } diff --git a/Content.Shared/Power/EntitySystems/UIPowerStateSystem.cs b/Content.Shared/Power/EntitySystems/UIPowerStateSystem.cs index bf2d08adbf4..6bd5af591ed 100644 --- a/Content.Shared/Power/EntitySystems/UIPowerStateSystem.cs +++ b/Content.Shared/Power/EntitySystems/UIPowerStateSystem.cs @@ -10,7 +10,7 @@ namespace Content.Shared.Power.EntitySystems; public sealed class UIPowerStateSystem : EntitySystem { [Dependency] private readonly SharedUserInterfaceSystem _ui = default!; - [Dependency] private readonly PowerStateSystem _powerState = default!; + [Dependency] private readonly SharedPowerStateSystem _powerState = default!; public override void Initialize() { diff --git a/Resources/Maps/Misc/terminal.yml b/Resources/Maps/Misc/terminal.yml index bb0491e9cec..1a736bac269 100644 --- a/Resources/Maps/Misc/terminal.yml +++ b/Resources/Maps/Misc/terminal.yml @@ -1583,6 +1583,7 @@ entities: - type: Godmode missingComponents: - ApcPowerReceiver + - PowerState - Anchorable - Construction - Destructible @@ -1595,6 +1596,7 @@ entities: - type: Godmode missingComponents: - ApcPowerReceiver + - PowerState - Anchorable - Construction - Destructible @@ -7904,6 +7906,7 @@ entities: - type: Godmode missingComponents: - ApcPowerReceiver + - PowerState - Anchorable - Construction - Destructible @@ -7916,6 +7919,7 @@ entities: - type: Godmode missingComponents: - ApcPowerReceiver + - PowerState - Anchorable - Construction - Destructible diff --git a/Resources/Prototypes/Entities/Structures/Machines/Computers/arcades.yml b/Resources/Prototypes/Entities/Structures/Machines/Computers/arcades.yml index 8c7872c23f6..8e852273ef8 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Computers/arcades.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Computers/arcades.yml @@ -5,8 +5,6 @@ name: arcade parent: BaseComputer components: - - type: ApcPowerReceiver - powerLoad: 350 - type: ExtensionCableReceiver - type: PointLight radius: 1.8 diff --git a/Resources/Prototypes/Entities/Structures/Machines/Computers/base_structurecomputers.yml b/Resources/Prototypes/Entities/Structures/Machines/Computers/base_structurecomputers.yml index bbd6ea8302c..e4c8293fcb3 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Computers/base_structurecomputers.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Computers/base_structurecomputers.yml @@ -17,7 +17,11 @@ - board - type: Computer - type: ApcPowerReceiver - powerLoad: 200 + powerLoad: 50 + - type: PowerState + idlePowerDraw: 50 + workingPowerDraw: 500 + - type: UIPowerState - type: ExtensionCableReceiver - type: ActivatableUIRequiresPower - type: Sprite diff --git a/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml b/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml index 396452fdb14..96e30a5aa76 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml @@ -500,7 +500,10 @@ enum.WiresUiKey.Key: type: WiresBoundUserInterface - type: ApcPowerReceiver - powerLoad: 1000 + powerLoad: 50 + - type: PowerState + idlePowerDraw: 50 + workingPowerDraw: 1000 - type: Computer board: ResearchComputerCircuitboard - type: AccessReader @@ -551,7 +554,10 @@ enum.WiresUiKey.Key: type: WiresBoundUserInterface - type: ApcPowerReceiver - powerLoad: 1000 + powerLoad: 50 + - type: PowerState + idlePowerDraw: 50 + workingPowerDraw: 1000 - type: Computer board: AnalysisComputerCircuitboard - type: PointLight @@ -631,8 +637,6 @@ name: body scanner computer description: A body scanner. components: - - type: ApcPowerReceiver - powerLoad: 500 - type: Computer board: BodyScannerComputerCircuitboard - type: PointLight @@ -1172,8 +1176,6 @@ state: generic_keys - map: [ "enum.WiresVisualLayers.MaintenancePanel" ] state: generic_panel_open - - type: ApcPowerReceiver - powerLoad: 3100 #We want this to fail first so I transferred most of the scanner and pod's power here. (3500 in total) - type: Computer board: CloningConsoleComputerCircuitboard - type: PointLight @@ -1543,7 +1545,11 @@ enum.WiresUiKey.Key: type: WiresBoundUserInterface - type: ApcPowerReceiver - powerLoad: 1000 + powerLoad: 5 + - type: PowerState + idlePowerDraw: 5 + workingPowerDraw: 1000 + - type: UIPowerState - type: DeviceNetwork deviceNetId: Wireless receiveFrequencyId: RoboticsConsole @@ -1588,7 +1594,10 @@ channels: - Xenoborg - type: ApcPowerReceiver - powerLoad: 1000 + powerLoad: 50 + - type: PowerState + idlePowerDraw: 50 + workingPowerDraw: 1000 - type: DeviceNetwork deviceNetId: Wireless receiveFrequencyId: Mothership @@ -1615,7 +1624,10 @@ - map: [ "enum.WiresVisualLayers.MaintenancePanel" ] state: generic_panel_open - type: ApcPowerReceiver - powerLoad: 1000 + powerLoad: 50 + - type: PowerState + idlePowerDraw: 50 + workingPowerDraw: 1000 - type: Computer board: StationAiUploadCircuitboard - type: AccessReader @@ -1691,7 +1703,10 @@ True: { visible: false } False: { visible: true } - type: ApcPowerReceiver - powerLoad: 1000 + powerLoad: 50 + - type: PowerState + idlePowerDraw: 50 + workingPowerDraw: 1000 - type: Computer board: StationAiFixerCircuitboard - type: AccessReader diff --git a/Resources/Prototypes/Entities/Structures/Machines/Medical/chemistry_machines.yml b/Resources/Prototypes/Entities/Structures/Machines/Medical/chemistry_machines.yml index 65a84c86aa6..c88c2482329 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Medical/chemistry_machines.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Medical/chemistry_machines.yml @@ -76,6 +76,11 @@ False: { visible: False } - type: Machine board: ElectrolysisUnitMachineCircuitboard + - type: ApcPowerReceiver + powerLoad: 0 + - type: PowerState + idlePowerDraw: 0 + workingPowerDraw: 1000 # for a lab-grade machine # TODO centrifuge should spill the vial if the lid is off - type: entity @@ -124,3 +129,8 @@ - CentrifugeCompatible - type: Machine board: CentrifugeMachineCircuitboard + - type: ApcPowerReceiver + powerLoad: 0 + - type: PowerState + idlePowerDraw: 0 + workingPowerDraw: 500 diff --git a/Resources/Prototypes/Entities/Structures/Machines/holopad.yml b/Resources/Prototypes/Entities/Structures/Machines/holopad.yml index 8c68710d76e..5c9c5c21b67 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/holopad.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/holopad.yml @@ -15,7 +15,10 @@ mask: - Impassable - type: ApcPowerReceiver - powerLoad: 300 + powerLoad: 5 + - type: PowerState + idlePowerDraw: 5 + workingPowerDraw: 300 - type: StationAiVision range: 1 needsAnchoring: true diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index 412126af5f1..e59e2d86e77 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -49,6 +49,11 @@ price: 800 - type: ResearchClient - type: TechnologyDatabase + - type: ApcPowerReceiver + powerLoad: 150 + - type: PowerState + idlePowerDraw: 150 + workingPowerDraw: 1000 # a lathe that can be sped up with space lube / slowed down with glue - type: entity diff --git a/Resources/Prototypes/Entities/Structures/Machines/microwave.yml b/Resources/Prototypes/Entities/Structures/Machines/microwave.yml index b7c5b194efb..edc367a934e 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/microwave.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/microwave.yml @@ -98,7 +98,10 @@ canCreateVacuum: false deleteAfterExplosion: false - type: ApcPowerReceiver - powerLoad: 400 + powerLoad: 5 + - type: PowerState + idlePowerDraw: 5 + workingPowerDraw: 1000 - type: Machine board: MicrowaveMachineCircuitboard - type: ContainerContainer diff --git a/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml b/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml index d423a47ae95..cd3d8dab835 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml @@ -39,7 +39,10 @@ - map: [ "grinder" ] state: "grinder_empty" - type: ApcPowerReceiver - powerLoad: 300 + powerLoad: 0 + - type: PowerState + idlePowerDraw: 0 + workingPowerDraw: 750 # medium power blender - type: ItemSlots slots: beakerSlot: diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/station_map.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/station_map.yml index 39643fb8502..889cbb30038 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/station_map.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/station_map.yml @@ -49,7 +49,11 @@ containers: board: !type:Container - type: ApcPowerReceiver - powerLoad: 200 + powerLoad: 50 + - type: PowerState + idlePowerDraw: 50 + workingPowerDraw: 200 + - type: UIPowerState - type: Construction graph: StationMap node: station_map From f7ae0b0617481472e857632a6b856be6752c7fab Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 21 Jan 2026 04:22:47 +0000 Subject: [PATCH 069/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 55f6fa9327d..63b90459eb0 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: IProduceWidgets - changes: - - message: You can drink out of the toilets. - type: Add - id: 8933 - time: '2025-09-05T20:03:10.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40133 - author: ArtisticRoomba changes: - message: Resin windows (exo windows) now inherit Delta-Pressure damage values @@ -3958,3 +3951,13 @@ id: 9439 time: '2026-01-20T22:39:51.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42541 +- author: ArtisticRoomba + changes: + - message: Powernet consumers like lathes, computers, blenders, centrifuges, electrolyzers, + grinders, holopads, microwaves, etc. now have simple dynamic power consumption + behavior. When not in use, they will consume either little or no power, and + while in use, they will consume a sane amount of power. + type: Add + id: 9440 + time: '2026-01-21T04:21:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/41961 From 6f3b4f723e3e4b452b96fffd3011baba6536ad87 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Wed, 21 Jan 2026 13:30:05 +0700 Subject: [PATCH 070/603] the first stage of repair after the upstream... --- .github/workflows/close-master-pr.yml | 2 +- Resources/Prototypes/Body/Species/diona.yml | 1 + .../Prototypes/Body/Species/reptilian.yml | 21 +++++- .../Prototypes/Body/Species/vulpkanin.yml | 65 +++++++++++++++---- .../Loadouts/Jobs/Medical/role_timers.yml | 4 +- .../Loadouts/RoleLoadouts/medical.yml | 5 ++ Resources/Prototypes/Species/vulpkanin.yml | 20 +++--- .../ServerInfo/Guidebook/Mobs/Species.xml | 18 ++--- 8 files changed, 103 insertions(+), 33 deletions(-) diff --git a/.github/workflows/close-master-pr.yml b/.github/workflows/close-master-pr.yml index 350927baebd..0abd9bf86a0 100644 --- a/.github/workflows/close-master-pr.yml +++ b/.github/workflows/close-master-pr.yml @@ -13,7 +13,7 @@ jobs: steps: - uses: superbrothers/close-pull-request@v3 with: - comment: "Благодарим вас за вклад в репозиторий Space Station 14. К сожалению, похоже, что вы отправили свой PR из master-ветки. Мы предлагаем вам следовать [нашей документации по использованию git](https://docs.spacestation14.com/en/general-development/setup/git-for-the-ss14-developer.html) \n\n Вы можете переместить текущую работу из master-ветки в другую ветку, выполнив команду `git branch <название_ветки>` и сбросив измененив в master-ветке." + comment: "Спасибо за ваш вклад! Похоже, вы создали запрос на удаление из основной ветки или другой основной ветки разработки. Это [то, чего вам следует избегать] (https://jmeridth.com/posts/do-not-issue-pull-requests-from-your-master-branch/), и, таким образом, этот запрос на удаление был автоматически закрыт. \n \n Мы рекомендуем вам следовать [нашему использованию git documentation](https://docs.spacestation14.com/en/general-development/setup/git-for-the-ss14-developer.html). \n \n Вы можете перенести свою текущую работу в другую ветку, выполнив [эти команды](https://ohshitgit.com/#accidental-commit-master). Затем вы можете повторно создать свой запрос на извлечение, используя новую ветку." # If you prefer to just comment on the pr and not close it, uncomment the below and comment the above diff --git a/Resources/Prototypes/Body/Species/diona.yml b/Resources/Prototypes/Body/Species/diona.yml index 630fd73b995..1e65c33b4b4 100644 --- a/Resources/Prototypes/Body/Species/diona.yml +++ b/Resources/Prototypes/Body/Species/diona.yml @@ -3,6 +3,7 @@ id: AppearanceDiona name: diona appearance components: + - type: Pacified # Corvax-DionaPacifist - type: Inventory templateId: diona femaleDisplacements: diff --git a/Resources/Prototypes/Body/Species/reptilian.yml b/Resources/Prototypes/Body/Species/reptilian.yml index 4a7a4f23f7c..ca14a510456 100644 --- a/Resources/Prototypes/Body/Species/reptilian.yml +++ b/Resources/Prototypes/Body/Species/reptilian.yml @@ -9,7 +9,7 @@ jumpsuit: sizeMaps: 32: - sprite: Mobs/Species/Human/displacement.rsi + sprite: Corvax/Mobs/Species/displacement.rsi # Corvax-Digitigrade Mobs/Species/Human/displacement.rsi state: jumpsuit-female head: sizeMaps: @@ -21,6 +21,13 @@ 32: sprite: Mobs/Species/Reptilian/displacement.rsi state: mask + # Corvax-Digitigrade-Start + shoes: + sizeMaps: + 32: + sprite: Corvax/Mobs/Species/displacement.rsi + state: shoes + # Corvax-Displacements-End displacements: head: sizeMaps: @@ -32,6 +39,18 @@ 32: sprite: Mobs/Species/Reptilian/displacement.rsi state: mask + # Corvax-Digitigrade-Start + jumpsuit: + sizeMaps: + 32: + sprite: Corvax/Mobs/Species/displacement.rsi + state: jumpsuit + shoes: + sizeMaps: + 32: + sprite: Corvax/Mobs/Species/displacement.rsi + state: shoes + # Corvax-Displacements-End - type: EntityTableContainerFill containers: body_organs: !type:AllSelector diff --git a/Resources/Prototypes/Body/Species/vulpkanin.yml b/Resources/Prototypes/Body/Species/vulpkanin.yml index 6a3b657bfb5..4ca74a471d4 100644 --- a/Resources/Prototypes/Body/Species/vulpkanin.yml +++ b/Resources/Prototypes/Body/Species/vulpkanin.yml @@ -44,34 +44,77 @@ 32: sprite: Mobs/Species/Vulpkanin/displacement.rsi state: hair + #Corvax-Vulp_Port start + - type: ContentEye + targetZoom: "1.0, 1.0" + maxZoom: "1.0, 1.0" + - type: GrowlingAccent + - type: Wagging + - type: Respirator + damage: + types: + Asphyxiation: 2.0 + damageRecovery: + types: + Asphyxiation: -2.0 +#Corvax-Vulp_Port end - type: Inventory speciesId: vulpkanin +#Corvax-Vulp_Port start + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Corvax/Mobs/Species/displacement.rsi + state: jumpsuit-female + shoes: + sizeMaps: + 32: + sprite: Corvax/Mobs/Species/displacement.rsi + state: shoes + ######### displacements: jumpsuit: sizeMaps: 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi + sprite: Corvax/Mobs/Species/displacement.rsi state: jumpsuit - back: + shoes: sizeMaps: 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: back + sprite: Corvax/Mobs/Species/displacement.rsi + state: shoes outerClothing: sizeMaps: 32: - sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: outerwear - gloves: + sprite: Corvax/Mobs/Species/displacement.rsi + state: outerclothing + # jumpsuit: + # sizeMaps: + # 32: + # sprite: Mobs/Species/Vulpkanin/displacement.rsi + # state: jumpsuit + back: sizeMaps: 32: sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: hand - shoes: + state: back + #outerClothing: + # sizeMaps: + # 32: + # sprite: Mobs/Species/Vulpkanin/displacement.rsi + # state: outerwear + gloves: sizeMaps: 32: sprite: Mobs/Species/Vulpkanin/displacement.rsi - state: shoes + state: hand + #shoes: + # sizeMaps: + # 32: + # sprite: Mobs/Species/Vulpkanin/displacement.rsi + # state: shoes +#Corvax-Vulp_Port end head: sizeMaps: 32: @@ -175,7 +218,7 @@ abstract: true components: - type: Sprite - sprite: Mobs/Species/Vulpkanin/parts.rsi + sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi #Mobs/Species/Vulpkanin/parts.rsi #Corvax-Vulp_Port - type: entity parent: [ OrganBaseTorso, OrganVulpkaninExternal ] diff --git a/Resources/Prototypes/Loadouts/Jobs/Medical/role_timers.yml b/Resources/Prototypes/Loadouts/Jobs/Medical/role_timers.yml index f023cfc227b..7eeab8ea8e3 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Medical/role_timers.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Medical/role_timers.yml @@ -6,12 +6,12 @@ requirement: !type:RoleTimeRequirement role: JobChemist - time: 6h + time: 20h # Corvax-RoleTime - !type:JobRequirementLoadoutEffect requirement: !type:RoleTimeRequirement role: JobMedicalDoctor - time: 6h + time: 20h # Corvax-RoleTime - !type:JobRequirementLoadoutEffect requirement: !type:DepartmentTimeRequirement diff --git a/Resources/Prototypes/Loadouts/RoleLoadouts/medical.yml b/Resources/Prototypes/Loadouts/RoleLoadouts/medical.yml index 1cac8b94b90..fb774539c7f 100644 --- a/Resources/Prototypes/Loadouts/RoleLoadouts/medical.yml +++ b/Resources/Prototypes/Loadouts/RoleLoadouts/medical.yml @@ -3,6 +3,7 @@ - type: roleLoadout id: JobChiefMedicalOfficer groups: + - Inventory # Corvax-Loadouts - GroupTankHarness - ChiefMedicalOfficerHead - MedicalMask @@ -20,6 +21,7 @@ - type: roleLoadout id: JobMedicalDoctor groups: + - Inventory # Corvax-Loadouts - GroupTankHarness - MedicalDoctorHead - MedicalMask @@ -37,6 +39,7 @@ - type: roleLoadout id: JobMedicalIntern groups: + - Inventory # Corvax-Loadouts - GroupTankHarness - MedicalInternJumpsuit - MedicalBackpack @@ -49,6 +52,7 @@ - type: roleLoadout id: JobChemist groups: + - Inventory # Corvax-Loadouts - GroupTankHarness - MedicalMask - ChemistJumpsuit @@ -64,6 +68,7 @@ - type: roleLoadout id: JobParamedic groups: + - Inventory # Corvax-Loadouts - GroupTankHarness - ParamedicHead - MedicalMask diff --git a/Resources/Prototypes/Species/vulpkanin.yml b/Resources/Prototypes/Species/vulpkanin.yml index f8cd7311311..5cb180770b9 100644 --- a/Resources/Prototypes/Species/vulpkanin.yml +++ b/Resources/Prototypes/Species/vulpkanin.yml @@ -3,14 +3,16 @@ name: species-name-vulpkanin roundStart: True prototype: MobVulpkanin - sprites: MobCorvaxVulpkaninSprites #MobVulpkaninSprites # Corvax-CorvaxVulp_Port - defaultSkinTone: "#eb943d" # "#5a3f2d" Corvax-CorvaxVulp_Port ибо нефиг + sprites: MobCorvaxVulpkaninSprites #Corvax-Vulp_Port MobVulpkaninSprites + defaultSkinTone: "#eb943d" #Corvax-Vulp_Port "#5a3f2d" markingLimits: MobVulpkaninMarkingLimits dollPrototype: AppearanceVulpkanin - skinColoration: VulpkaninColors - maleFirstNames: names_vulpkanin_male - femaleFirstNames: names_vulpkanin_female - lastNames: names_vulpkanin_last + skinColoration: Hues #Corvax-Vulp_Port VulpkaninColors + maleFirstNames: NamesVulpFirstMale #Corvax-Vulp_Port names_vulpkanin_male + femaleFirstNames: NamesVulpFirstFemale #Corvax-Vulp_Port names_vulpkanin_female + maleLastNames: NamesVulpLast # Corvax-LastnameGender + femaleLastNames: NamesVulpLast # Corvax-LastnameGender + #lastNames: names_vulpkanin_last - type: speciesBaseSprites id: MobVulpkaninSprites @@ -49,21 +51,21 @@ Snout: points: 1 required: true - defaultMarkings: [ FoxSnout ] # VulpSnout Corvax-CorvaxVulp_Port + defaultMarkings: [ FoxSnout ] #Corvax-Vulp_Port VulpSnout SnoutCover: points: 3 required: false Tail: points: 1 required: true - defaultMarkings: [ FoxTail ] # VulpTailVulp Corvax-CorvaxVulp_Port + defaultMarkings: [ FoxTail ] #Corvax-Vulp_Port VulpTailVulp Head: points: 3 required: false HeadTop: points: 1 required: true - defaultMarkings: [ FoxEar ] # VulpEar Corvax-CorvaxVulp_Port + defaultMarkings: [ FoxEar ] #Corvax-Vulp_Port VulpEar UndergarmentTop: points: 1 required: false diff --git a/Resources/ServerInfo/Guidebook/Mobs/Species.xml b/Resources/ServerInfo/Guidebook/Mobs/Species.xml index fec3706a894..891b265fce6 100644 --- a/Resources/ServerInfo/Guidebook/Mobs/Species.xml +++ b/Resources/ServerInfo/Guidebook/Mobs/Species.xml @@ -4,19 +4,19 @@ Нанотразен нанимает разнообразные разумные виды. - - - - + + + + - - - - + + + + - + From dbc21f6ec7c104f65df4d97bb81017796b6206e9 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Wed, 21 Jan 2026 18:29:58 +0700 Subject: [PATCH 071/603] the first rework of races --- .../Prototypes/Corvax/Body/Organs/ipc.yml | 34 -- .../Prototypes/Corvax/Body/Organs/tajaran.yml | 15 - .../Corvax/Body/Organs/vulpkanin.yml | 15 - .../Prototypes/Corvax/Body/Parts/Tajaran.yml | 125 ------ .../Prototypes/Corvax/Body/Parts/ipc.yml | 107 ----- .../Corvax/Body/Parts/vulpkanin.yml | 125 ------ .../Prototypes/Corvax/Body/Prototypes/ipc.yml | 44 -- .../Corvax/Body/Prototypes/tajaran.yml | 49 --- .../Corvax/Body/Prototypes/vulpkanin.yml | 49 --- .../Prototypes/Corvax/Body/Species/ipc.yml | 325 ++++++++++++++ .../Corvax/Body/Species/tajaran.yml | 291 +++++++++++++ .../Corvax/Entities/Mobs/NPCs/human.yml | 4 +- .../Corvax/Entities/Mobs/Player/vulpkanin.yml | 5 - .../Corvax/Entities/Mobs/Species/ipc.yml | 403 ------------------ .../Corvax/Entities/Mobs/Species/tajaran.yml | 117 ----- .../Entities/Mobs/Species/vulpkanin.yml | 143 ------- Resources/Prototypes/Corvax/Species/ipc.yml | 2 +- .../Prototypes/Corvax/Species/tajaran.yml | 2 +- 18 files changed, 620 insertions(+), 1235 deletions(-) delete mode 100644 Resources/Prototypes/Corvax/Body/Organs/ipc.yml delete mode 100644 Resources/Prototypes/Corvax/Body/Organs/tajaran.yml delete mode 100644 Resources/Prototypes/Corvax/Body/Organs/vulpkanin.yml delete mode 100644 Resources/Prototypes/Corvax/Body/Parts/Tajaran.yml delete mode 100644 Resources/Prototypes/Corvax/Body/Parts/ipc.yml delete mode 100644 Resources/Prototypes/Corvax/Body/Parts/vulpkanin.yml delete mode 100644 Resources/Prototypes/Corvax/Body/Prototypes/ipc.yml delete mode 100644 Resources/Prototypes/Corvax/Body/Prototypes/tajaran.yml delete mode 100644 Resources/Prototypes/Corvax/Body/Prototypes/vulpkanin.yml create mode 100644 Resources/Prototypes/Corvax/Body/Species/ipc.yml create mode 100644 Resources/Prototypes/Corvax/Body/Species/tajaran.yml delete mode 100644 Resources/Prototypes/Corvax/Entities/Mobs/Player/vulpkanin.yml delete mode 100644 Resources/Prototypes/Corvax/Entities/Mobs/Species/ipc.yml delete mode 100644 Resources/Prototypes/Corvax/Entities/Mobs/Species/tajaran.yml delete mode 100644 Resources/Prototypes/Corvax/Entities/Mobs/Species/vulpkanin.yml diff --git a/Resources/Prototypes/Corvax/Body/Organs/ipc.yml b/Resources/Prototypes/Corvax/Body/Organs/ipc.yml deleted file mode 100644 index dc9b45994fc..00000000000 --- a/Resources/Prototypes/Corvax/Body/Organs/ipc.yml +++ /dev/null @@ -1,34 +0,0 @@ -- type: entity - id: OrganIPCBrain - parent: BaseHumanOrgan - name: brain IPC - description: "The source of incredible, unending intelligence. Honk." - components: - - type: Sprite - sprite: Objects/Specific/Robotics/mmi.rsi - layers: - - state: posibrain - map: ["base"] - - type: Organ - - type: Input - context: "ghost" - - type: Brain - - type: InputMover - - type: Examiner - - type: BlockMovement - - type: Item - size: Small - heldPrefix: brain - -- type: entity - id: OrganIpcEyes - parent: BaseHumanOrgan - name: IPC eyes - description: "I see you!" - components: - - type: Sprite - sprite: Objects/Misc/proximity_sensor.rsi - state: icon - - type: Item - size: Small - heldPrefix: eyeballs diff --git a/Resources/Prototypes/Corvax/Body/Organs/tajaran.yml b/Resources/Prototypes/Corvax/Body/Organs/tajaran.yml deleted file mode 100644 index 1bf62fb2f5d..00000000000 --- a/Resources/Prototypes/Corvax/Body/Organs/tajaran.yml +++ /dev/null @@ -1,15 +0,0 @@ -- type: entity - id: OrganTajaranStomach - parent: OrganAnimalStomach - categories: [ HideSpawnMenu ] - components: - - type: Stomach - - type: SolutionContainerManager - solutions: - stomach: - maxVol: 50.0 - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 diff --git a/Resources/Prototypes/Corvax/Body/Organs/vulpkanin.yml b/Resources/Prototypes/Corvax/Body/Organs/vulpkanin.yml deleted file mode 100644 index f5a837d97b9..00000000000 --- a/Resources/Prototypes/Corvax/Body/Organs/vulpkanin.yml +++ /dev/null @@ -1,15 +0,0 @@ -- type: entity - id: OrganCorvaxVulpkaninStomach - parent: OrganAnimalStomach - categories: [ HideSpawnMenu ] - components: - - type: Stomach - - type: SolutionContainerManager - solutions: - stomach: - maxVol: 50.0 - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 diff --git a/Resources/Prototypes/Corvax/Body/Parts/Tajaran.yml b/Resources/Prototypes/Corvax/Body/Parts/Tajaran.yml deleted file mode 100644 index 56bca895352..00000000000 --- a/Resources/Prototypes/Corvax/Body/Parts/Tajaran.yml +++ /dev/null @@ -1,125 +0,0 @@ -# TODO: Add descriptions (many) -# TODO BODY: Part damage -- type: entity - id: PartTajaran - parent: [BaseItem, BasePart] - name: "tajaran body part" - abstract: true - components: - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 3 - - ReagentId: Blood - Quantity: 10 - -- type: entity - id: TorsoTajaran - name: "tajaran torso" - parent: [PartTajaran, BaseTorso] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: "torso_m" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 10 - - ReagentId: Blood - Quantity: 20 - -- type: entity - id: HeadTajaran - name: "tajaran head" - parent: [PartTajaran, BaseHead] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: "head_m" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 5 - - ReagentId: Blood - Quantity: 10 - -- type: entity - id: LeftArmTajaran - name: "left tajaran arm" - parent: [PartTajaran, BaseLeftArm] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: "l_arm" - -- type: entity - id: RightArmTajaran - name: "right tajaran arm" - parent: [PartTajaran, BaseRightArm] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: "r_arm" - -- type: entity - id: LeftHandTajaran - name: "left tajaran hand" - parent: [PartTajaran, BaseLeftHand] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: "l_hand" - -- type: entity - id: RightHandTajaran - name: "right tajaran hand" - parent: [PartTajaran, BaseRightHand] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: "r_hand" - -- type: entity - id: LeftLegTajaran - name: "left tajaran leg" - parent: [PartTajaran, BaseLeftLeg] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: "l_leg" - - type: MovementBodyPart - walkSpeed : 2.7 - sprintSpeed : 4.5 - -- type: entity - id: RightLegTajaran - name: "right tajaran leg" - parent: [PartTajaran, BaseRightLeg] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: "r_leg" - - type: MovementBodyPart - walkSpeed : 2.7 - sprintSpeed : 4.5 - -- type: entity - id: LeftFootTajaran - name: "left tajaran foot" - parent: [PartTajaran, BaseLeftFoot] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: "l_foot" - -- type: entity - id: RightFootTajaran - name: "right tajaran foot" - parent: [PartTajaran, BaseRightFoot] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: "r_foot" diff --git a/Resources/Prototypes/Corvax/Body/Parts/ipc.yml b/Resources/Prototypes/Corvax/Body/Parts/ipc.yml deleted file mode 100644 index 3d2bd83df70..00000000000 --- a/Resources/Prototypes/Corvax/Body/Parts/ipc.yml +++ /dev/null @@ -1,107 +0,0 @@ -# TODO: Add descriptions (many) -# TODO BODY: Part damage -- type: entity - id: PartIpc - parent: [BaseItem, BasePart] - name: "Ipc body part" - abstract: true - - - -- type: entity - id: TorsoIpc - name: "Ipc torso" - parent: [PartIpc, BaseTorso] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: "torso_m" - -- type: entity - id: HeadIpc - name: "Ipc head" - parent: [PartIpc, BaseHead] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: "head_m" - - -- type: entity - id: LeftArmIpc - name: "left Ipc arm" - parent: [PartIpc, BaseLeftArm] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: "l_arm" - -- type: entity - id: RightArmIpc - name: "right Ipc arm" - parent: [PartIpc, BaseRightArm] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: "r_arm" - -- type: entity - id: LeftHandIpc - name: "left Ipc hand" - parent: [PartIpc, BaseLeftHand] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: "l_hand" - -- type: entity - id: RightHandIpc - name: "right Ipc hand" - parent: [PartIpc, BaseRightHand] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: "r_hand" - -- type: entity - id: LeftLegIpc - name: "left Ipc leg" - parent: [PartIpc, BaseLeftLeg] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: "l_leg" - - type: MovementBodyPart - walkSpeed : 2.7 - sprintSpeed : 4.5 - -- type: entity - id: RightLegIpc - name: "right Ipc leg" - parent: [PartIpc, BaseRightLeg] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: "r_leg" - - type: MovementBodyPart - walkSpeed : 2.7 - sprintSpeed : 4.5 - -- type: entity - id: LeftFootIpc - name: "left Ipc foot" - parent: [PartIpc, BaseLeftFoot] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: "l_foot" - -- type: entity - id: RightFootIpc - name: "right Ipc foot" - parent: [PartIpc, BaseRightFoot] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: "r_foot" - diff --git a/Resources/Prototypes/Corvax/Body/Parts/vulpkanin.yml b/Resources/Prototypes/Corvax/Body/Parts/vulpkanin.yml deleted file mode 100644 index f54e6811826..00000000000 --- a/Resources/Prototypes/Corvax/Body/Parts/vulpkanin.yml +++ /dev/null @@ -1,125 +0,0 @@ -# TODO: Add descriptions (many) -# TODO BODY: Part damage -- type: entity - id: PartCorvaxVulpkanin - parent: [BaseItem, BasePart] - name: "vulpkanin body part" - abstract: true - components: - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 3 - - ReagentId: Blood - Quantity: 10 - -- type: entity - id: TorsoCorvaxVulpkanin - name: "vulpkanin torso" - parent: [PartCorvaxVulpkanin, BaseTorso] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: "torso_m" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 10 - - ReagentId: Blood - Quantity: 20 - -- type: entity - id: HeadCorvaxVulpkanin - name: "vulpkanin head" - parent: [PartCorvaxVulpkanin, BaseHead] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: "head_m" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 5 - - ReagentId: Blood - Quantity: 10 - -- type: entity - id: LeftArmCorvaxVulpkanin - name: "left vulpkanin arm" - parent: [PartCorvaxVulpkanin, BaseLeftArm] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: "l_arm" - -- type: entity - id: RightArmCorvaxVulpkanin - name: "right vulpkanin arm" - parent: [PartCorvaxVulpkanin, BaseRightArm] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: "r_arm" - -- type: entity - id: LeftHandCorvaxVulpkanin - name: "left vulpkanin hand" - parent: [PartCorvaxVulpkanin, BaseLeftHand] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: "l_hand" - -- type: entity - id: RightHandCorvaxVulpkanin - name: "right vulpkanin hand" - parent: [PartCorvaxVulpkanin, BaseRightHand] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: "r_hand" - -- type: entity - id: LeftLegCorvaxVulpkanin - name: "left vulpkanin leg" - parent: [PartCorvaxVulpkanin, BaseLeftLeg] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: "l_leg" - - type: MovementBodyPart - walkSpeed : 2.7 - sprintSpeed : 4.5 - -- type: entity - id: RightLegCorvaxVulpkanin - name: "right vulpkanin leg" - parent: [PartCorvaxVulpkanin, BaseRightLeg] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: "r_leg" - - type: MovementBodyPart - walkSpeed : 2.7 - sprintSpeed : 4.5 - -- type: entity - id: LeftFootCorvaxVulpkanin - name: "left vulpkanin foot" - parent: [PartCorvaxVulpkanin, BaseLeftFoot] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: "l_foot" - -- type: entity - id: RightFootCorvaxVulpkanin - name: "right vulpkanin foot" - parent: [PartCorvaxVulpkanin, BaseRightFoot] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: "r_foot" diff --git a/Resources/Prototypes/Corvax/Body/Prototypes/ipc.yml b/Resources/Prototypes/Corvax/Body/Prototypes/ipc.yml deleted file mode 100644 index d4e389e732d..00000000000 --- a/Resources/Prototypes/Corvax/Body/Prototypes/ipc.yml +++ /dev/null @@ -1,44 +0,0 @@ -- type: body - name: "Ipc" - id: Ipc - root: torso - slots: - head: - part: HeadIpc - connections: - - torso - organs: - eyes: OrganIpcEyes - torso: - part: TorsoIpc - connections: - - right_arm - - left_arm - - right_leg - - left_leg - organs: - brain: OrganIPCBrain - right_arm: - part: RightArmIpc - connections: - - right_hand - left_arm: - part: LeftArmIpc - connections: - - left_hand - right_hand: - part: RightHandIpc - left_hand: - part: LeftHandIpc - right_leg: - part: RightLegIpc - connections: - - right_foot - left_leg: - part: LeftLegIpc - connections: - - left_foot - right_foot: - part: RightFootIpc - left_foot: - part: LeftFootIpc diff --git a/Resources/Prototypes/Corvax/Body/Prototypes/tajaran.yml b/Resources/Prototypes/Corvax/Body/Prototypes/tajaran.yml deleted file mode 100644 index fd000f86e2d..00000000000 --- a/Resources/Prototypes/Corvax/Body/Prototypes/tajaran.yml +++ /dev/null @@ -1,49 +0,0 @@ -- type: body - name: "tajaran" - id: Tajaran - root: torso - slots: - head: - part: HeadTajaran - connections: - - torso - organs: - brain: OrganHumanBrain - eyes: OrganHumanEyes - torso: - part: TorsoTajaran - organs: - heart: OrganAnimalHeart - lungs: OrganHumanLungs - stomach: OrganTajaranStomach - liver: OrganAnimalLiver - kidneys: OrganHumanKidneys - connections: - - right_arm - - left_arm - - right_leg - - left_leg - right_arm: - part: RightArmTajaran - connections: - - right_hand - left_arm: - part: LeftArmTajaran - connections: - - left_hand - right_hand: - part: RightHandTajaran - left_hand: - part: LeftHandTajaran - right_leg: - part: RightLegTajaran - connections: - - right_foot - left_leg: - part: LeftLegTajaran - connections: - - left_foot - right_foot: - part: RightFootTajaran - left_foot: - part: LeftFootTajaran diff --git a/Resources/Prototypes/Corvax/Body/Prototypes/vulpkanin.yml b/Resources/Prototypes/Corvax/Body/Prototypes/vulpkanin.yml deleted file mode 100644 index ae406ed0242..00000000000 --- a/Resources/Prototypes/Corvax/Body/Prototypes/vulpkanin.yml +++ /dev/null @@ -1,49 +0,0 @@ -- type: body - name: "vulpkanin" - id: CorvaxVulpkanin - root: torso - slots: - head: - part: HeadCorvaxVulpkanin - connections: - - torso - organs: - brain: OrganHumanBrain - eyes: OrganHumanEyes - torso: - part: TorsoCorvaxVulpkanin - organs: - heart: OrganAnimalHeart - lungs: OrganHumanLungs - stomach: OrganCorvaxVulpkaninStomach - liver: OrganAnimalLiver - kidneys: OrganHumanKidneys - connections: - - right_arm - - left_arm - - right_leg - - left_leg - right_arm: - part: RightArmCorvaxVulpkanin - connections: - - right_hand - left_arm: - part: LeftArmCorvaxVulpkanin - connections: - - left_hand - right_hand: - part: RightHandCorvaxVulpkanin - left_hand: - part: LeftHandCorvaxVulpkanin - right_leg: - part: RightLegCorvaxVulpkanin - connections: - - right_foot - left_leg: - part: LeftLegCorvaxVulpkanin - connections: - - left_foot - right_foot: - part: RightFootCorvaxVulpkanin - left_foot: - part: LeftFootCorvaxVulpkanin diff --git a/Resources/Prototypes/Corvax/Body/Species/ipc.yml b/Resources/Prototypes/Corvax/Body/Species/ipc.yml new file mode 100644 index 00000000000..824be909c72 --- /dev/null +++ b/Resources/Prototypes/Corvax/Body/Species/ipc.yml @@ -0,0 +1,325 @@ +- type: entity + parent: BaseSpeciesAppearance + id: AppearanceIPC + name: IPC appearance + components: + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganIPCTorso + - id: OrganIPCHead + - id: OrganIPCArmLeft + - id: OrganIPCArmRight + - id: OrganIPCHandRight + - id: OrganIPCHandLeft + - id: OrganIPCLegLeft + - id: OrganIPCLegRight + - id: OrganIPCFootLeft + - id: OrganIPCFootRight + - id: OrganIPCBrain + - id: OrganIPCEyes + - id: OrganIPCTongue + - id: OrganIPCAppendix + - id: OrganIPCEars + - id: OrganIPCLungs + - id: OrganIPCHeart + - id: OrganIPCStomach + - id: OrganIPCLiver + - id: OrganIPCKidneys + - type: HumanoidAppearance + species: Ipc + - type: Inventory + templateId: Ipc + alternateState: Standing + +- type: entity + save: false + name: Urist McIPC + parent: + - AppearanceIPC + - BaseSpeciesMobOrganic #BaseMobSpeciesNotOrganic + id: BaseMobIpc + abstract: true + components: + - type: Crawler + - type: Body + prototype: Ipc + requiredLegs: 2 + - type: ContentEye + - type: Speech + - type: BodyEmotes + soundsId: IpcEmotes + - type: Vocal + sounds: + Male: MaleIpc + Female: FemaleIpc + Unsexed: MaleIpc + - type: MeleeWeapon + soundHit: + collection: AlienClaw + damage: + types: + Slash: 5 + - type: Damageable + damageContainer: SiliconIpc + damageModifierSet: Ipc + - type: ItemTogglePointLight + - type: ToggleableVisuals + spriteLayer: light + - type: PointLight + enabled: false + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + radius: 4 + netsync: false + - type: HandheldLight + toggleOnInteract: false + wattage: 0.2 + blinkingBehaviourId: blinking + radiatingBehaviourId: radiating + - type: LightBehaviour + behaviours: + - !type:FadeBehaviour + id: radiating + maxDuration: 2.0 + startValue: 3.0 + endValue: 2.0 + isLooped: true + reverseWhenFinished: true + - !type:PulseBehaviour + id: blinking + interpolate: Nearest + maxDuration: 1.0 + startValue: 0.1 + endValue: 2.0 + isLooped: true + - type: TypingIndicator + proto: robot + - type: PowerCellSlot + cellSlotId: cell_slot + fitsInCharger: true + - type: PowerCellDraw + drawRate: 0.8 + # no ToggleCellDraw since dont want to lose access when power is gone + - type: AccessReader + access: [ ["Ipc"] ] + - type: Access + enabled: true + tags: + - Ipc + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMedium + - type: Lock + unlockOnClick: false + - type: ItemSlotsLock + slots: + - cell_slot + - type: ContainerContainer + containers: + cell_slot: !type:ContainerSlot { } + - type: Ipc + - type: ZombieImmune + - type: Repairable + fuelCost: 30 + doAfterDelay: 20 + selfRepairPenalty: 2 + - type: DamagedSiliconAccent + - type: Reflect + reflectProb: 0.05 + - type: SleepEmitSound + snore: /Audio/Machines/buzz-two.ogg + interval: 30 + popUp: sleep-ipc + - type: Butcherable + butcheringType: Spike + spawned: + - id: HeadIpc + amount: 1 + - type: MobThresholds + thresholds: + 0: Alive + 100: Critical + 200: Dead + stateAlertDict: + Alive: BorgHealth + Critical: BorgCrit + Dead: BorgDead + - type: Barotrauma + damage: + types: + Blunt: 0 #per second, scales with pressure and other constants. + Heat: 0 + - type: DamageVisuals + damageOverlayGroups: + Brute: + sprite: Mobs/Effects/brute_damage.rsi + color: "#cd7314" + Burn: + sprite: Mobs/Effects/burn_damage.rsi + - type: ProtectedFromStepTriggers + - type: EyeProtection + +- type: entity + parent: OrganBase + id: OrganIPC + abstract: true + suffix: IPC + +- type: entity + id: OrganIPCMetabolizer + abstract: true + components: + - type: Metabolizer + metabolizerTypes: [ Human ] + +- type: entity + parent: OrganIPC + id: OrganIPCInternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Human/organs.rsi + +- type: entity + parent: OrganIPC + id: OrganIPCExternal + abstract: true + components: + - type: Sprite + sprite: Corvax/Mobs/Species/IPC/parts.rsi + +- type: entity + parent: [ OrganBaseTorso, OrganIPCExternal ] + id: OrganIPCTorso + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Ipc/parts.rsi + state: "torso_m" + +- type: entity + parent: [ OrganBaseHead, OrganIPCExternal ] + id: OrganIPCHead + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Ipc/parts.rsi + state: "head_m" + +- type: entity + parent: [ OrganBaseArmLeft, OrganIPCExternal ] + id: OrganIPCArmLeft + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Ipc/parts.rsi + state: "l_arm" + +- type: entity + parent: [ OrganBaseArmRight, OrganIPCExternal ] + id: OrganIPCArmRight + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Ipc/parts.rsi + state: "r_arm" + +- type: entity + parent: [ OrganBaseHandLeft, OrganIPCExternal ] + id: OrganIPCHandLeft + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Ipc/parts.rsi + state: "l_hand" + +- type: entity + parent: [ OrganBaseHandRight, OrganIPCExternal ] + id: OrganIPCHandRight + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Ipc/parts.rsi + state: "r_hand" + +- type: entity + parent: [ OrganBaseLegLeft, OrganIPCExternal ] + id: OrganIPCLegLeft + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Ipc/parts.rsi + state: "l_leg" + - type: MovementBodyPart + walkSpeed : 2.7 + sprintSpeed : 4.5 + +- type: entity + parent: [ OrganBaseLegRight, OrganIPCExternal ] + id: OrganIPCLegRight + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Ipc/parts.rsi + state: "r_leg" + - type: MovementBodyPart + walkSpeed : 2.7 + sprintSpeed : 4.5 + +- type: entity + parent: [ OrganBaseFootLeft, OrganIPCExternal ] + id: OrganIPCFootLeft + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Ipc/parts.rsi + state: "l_foot" + +- type: entity + parent: [ OrganBaseFootRight, OrganIPCExternal ] + id: OrganIPCFootRight + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Ipc/parts.rsi + state: "r_foot" + +- type: entity + parent: [ OrganBaseBrain, OrganSpriteHumanInternal, OrganIPCInternal ] + id: OrganIPCBrain + components: + - type: Sprite + sprite: Objects/Specific/Robotics/mmi.rsi + layers: + - state: posibrain + map: ["base"] + +- type: entity + parent: [ OrganBaseEyes, OrganIPCInternal ] + id: OrganIPCEyes + +- type: entity + parent: [ OrganBaseTongue, OrganIPCInternal ] + id: OrganIPCTongue + +- type: entity + parent: [ OrganBaseAppendix, OrganSpriteHumanInternal, OrganIPCInternal ] + id: OrganIPCAppendix + +- type: entity + parent: [ OrganBaseEars, OrganSpriteHumanInternal, OrganIPCInternal ] + id: OrganIPCEars + +- type: entity + parent: [ OrganBaseLungs, OrganIPCInternal, OrganIPCMetabolizer ] + id: OrganIPCLungs + +- type: entity + parent: [ OrganBaseHeart, OrganIPCInternal, OrganIPCMetabolizer ] + id: OrganIPCHeart + +- type: entity + parent: [ OrganBaseStomach, OrganIPCInternal, OrganIPCMetabolizer ] + id: OrganIPCStomach + +- type: entity + parent: [ OrganBaseLiver, OrganSpriteHumanInternal, OrganIPCInternal, OrganIPCMetabolizer ] + id: OrganIPCLiver + +- type: entity + parent: [ OrganBaseKidneys, OrganSpriteHumanInternal, OrganIPCInternal, OrganIPCMetabolizer ] + id: OrganIPCKidneys diff --git a/Resources/Prototypes/Corvax/Body/Species/tajaran.yml b/Resources/Prototypes/Corvax/Body/Species/tajaran.yml new file mode 100644 index 00000000000..ddd52efb58d --- /dev/null +++ b/Resources/Prototypes/Corvax/Body/Species/tajaran.yml @@ -0,0 +1,291 @@ +- type: entity + parent: BaseSpeciesAppearance + id: AppearanceTajaran + name: Tajaran appearance + components: + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganTajaranTorso + - id: OrganTajaranHead + - id: OrganTajaranArmLeft + - id: OrganTajaranArmRight + - id: OrganTajaranHandRight + - id: OrganTajaranHandLeft + - id: OrganTajaranLegLeft + - id: OrganTajaranLegRight + - id: OrganTajaranFootLeft + - id: OrganTajaranFootRight + - id: OrganTajaranBrain + - id: OrganTajaranEyes + - id: OrganTajaranTongue + - id: OrganTajaranAppendix + - id: OrganTajaranEars + - id: OrganTajaranLungs + - id: OrganTajaranHeart + - id: OrganTajaranStomach + - id: OrganTajaranLiver + - id: OrganTajaranKidneys + - type: HumanoidAppearance + species: Tajaran + - type: Inventory + speciesId: corvaxtajaran + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Corvax/Mobs/Species/displacement.rsi + state: jumpsuit-female + shoes: + sizeMaps: + 32: + sprite: Corvax/Mobs/Species/displacement.rsi + state: shoes + displacements: + jumpsuit: + sizeMaps: + 32: + sprite: Corvax/Mobs/Species/displacement.rsi + state: jumpsuit + shoes: + sizeMaps: + 32: + sprite: Corvax/Mobs/Species/displacement.rsi + state: shoes + outerClothing: + sizeMaps: + 32: + sprite: Corvax/Mobs/Species/displacement.rsi + state: outerclothing + +- type: entity + save: false + name: Urist McTajar + parent: + - AppearanceTajaran + - BaseSpeciesMobOrganic + id: BaseMobTajaran + components: + - type: Hunger + baseDecayRate: 0.02 + - type: Thirst + baseDecayRate: 0.15 + - type: Body + prototype: Tajaran + requiredLegs: 2 + - type: ContentEye + - type: Speech + allowedEmotes: ['Purr'] + - type: Vocal + sounds: + Male: MaleTajaran + Female: FemaleTajaran + Unsexed: MaleTajaran + - type: GrowlingAccent + - type: MeleeWeapon + animation: WeaponArcClaw + soundHit: + collection: AlienClaw + damage: + types: + Slash: 7 + - type: Damageable + damageContainer: Biological + damageModifierSet: Tajaran + - type: Respirator + damage: + types: + Asphyxiation: 2.0 + damageRecovery: + types: + Asphyxiation: -2.0 + - type: Wagging + +- type: entity + parent: OrganBase + id: OrganTajaran + abstract: true + suffix: tajaran + components: + - type: Extractable + juiceSolution: + reagents: + - ReagentId: Fat + Quantity: 3 + - ReagentId: Blood + Quantity: 10 + +- type: entity + id: OrganTajaranMetabolizer + abstract: true + components: + - type: Metabolizer + metabolizerTypes: [ Animal ] + +- type: entity + parent: OrganTajaran + id: OrganTajaranInternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Human/organs.rsi + +- type: entity + parent: OrganTajaran + id: OrganTajaranExternal + abstract: true + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + +- type: entity + parent: [ OrganBaseTorso, OrganTajaranExternal ] + id: OrganTajaranTorso + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + state: "torso_m" + - type: Extractable + juiceSolution: + reagents: + - ReagentId: Fat + Quantity: 10 + - ReagentId: Blood + Quantity: 20 + +- type: entity + parent: [ OrganBaseHead, OrganTajaranExternal ] + id: OrganTajaranHead + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + state: "head_m" + - type: Extractable + juiceSolution: + reagents: + - ReagentId: Fat + Quantity: 5 + - ReagentId: Blood + Quantity: 10 + +- type: entity + parent: [ OrganBaseArmLeft, OrganTajaranExternal ] + id: OrganTajaranArmLeft + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + state: "l_arm" + +- type: entity + parent: [ OrganBaseArmRight, OrganTajaranExternal ] + id: OrganTajaranArmRight + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + state: "r_arm" + +- type: entity + parent: [ OrganBaseHandLeft, OrganTajaranExternal ] + id: OrganTajaranHandLeft + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + state: "l_hand" + +- type: entity + parent: [ OrganBaseHandRight, OrganTajaranExternal ] + id: OrganTajaranHandRight + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + state: "r_hand" + +- type: entity + parent: [ OrganBaseLegLeft, OrganTajaranExternal ] + id: OrganTajaranLegLeft + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + state: "l_leg" + - type: MovementBodyPart + walkSpeed : 2.7 + sprintSpeed : 4.5 + +- type: entity + parent: [ OrganBaseLegRight, OrganTajaranExternal ] + id: OrganTajaranLegRight + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + state: "r_leg" + - type: MovementBodyPart + walkSpeed : 2.7 + sprintSpeed : 4.5 + +- type: entity + parent: [ OrganBaseFootLeft, OrganTajaranExternal ] + id: OrganTajaranFootLeft + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + state: "l_foot" + +- type: entity + parent: [ OrganBaseFootRight, OrganTajaranExternal ] + id: OrganTajaranFootRight + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + state: "r_foot" + +- type: entity + parent: [ OrganBaseBrain, OrganSpriteHumanInternal, OrganTajaranInternal ] + id: OrganTajaranBrain + +- type: entity + parent: [ OrganBaseEyes, OrganTajaranInternal ] + id: OrganTajaranEyes + +- type: entity + parent: [ OrganBaseTongue, OrganTajaranInternal ] + id: OrganTajaranTongue + +- type: entity + parent: [ OrganBaseAppendix, OrganSpriteHumanInternal, OrganTajaranInternal ] + id: OrganTajaranAppendix + +- type: entity + parent: [ OrganBaseEars, OrganSpriteHumanInternal, OrganTajaranInternal ] + id: OrganTajaranEars + +- type: entity + parent: [ OrganBaseLungs, OrganTajaranInternal, OrganTajaranMetabolizer ] + id: OrganTajaranLungs + +- type: entity + parent: [ OrganBaseHeart, OrganTajaranInternal, OrganTajaranMetabolizer ] + id: OrganTajaranHeart + +- type: entity + parent: [ OrganBaseStomach, OrganTajaranInternal, OrganTajaranMetabolizer ] + id: OrganTajaranStomach + components: + - type: Stomach + - type: SolutionContainerManager + solutions: + stomach: + maxVol: 50.0 + food: + maxVol: 5 + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 5 + +- type: entity + parent: [ OrganBaseLiver, OrganSpriteHumanInternal, OrganTajaranInternal, OrganTajaranMetabolizer ] + id: OrganTajaranLiver + +- type: entity + parent: [ OrganBaseKidneys, OrganSpriteHumanInternal, OrganTajaranInternal, OrganTajaranMetabolizer ] + id: OrganTajaranKidneys diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/NPCs/human.yml b/Resources/Prototypes/Corvax/Entities/Mobs/NPCs/human.yml index 06eac90d7a6..3a1fb7629bb 100644 --- a/Resources/Prototypes/Corvax/Entities/Mobs/NPCs/human.yml +++ b/Resources/Prototypes/Corvax/Entities/Mobs/NPCs/human.yml @@ -1,6 +1,6 @@ - type: entity name: syndicate smuggler - parent: BaseMobHuman + parent: MobHuman id: MobSyndicateSmuggler components: - type: NpcFactionMember @@ -32,4 +32,4 @@ description: ghost-role-information-syndicate-smuggler-description rules: ghost-role-information-freeagent-rules raffle: - settings: default \ No newline at end of file + settings: default diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Player/vulpkanin.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Player/vulpkanin.yml deleted file mode 100644 index 1eae041c296..00000000000 --- a/Resources/Prototypes/Corvax/Entities/Mobs/Player/vulpkanin.yml +++ /dev/null @@ -1,5 +0,0 @@ -- type: entity - save: false - name: Urist McVulp - parent: [BaseMobCorvaxVulpkanin, BaseMob] - id: MobCorvaxVulpkanin diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Species/ipc.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Species/ipc.yml deleted file mode 100644 index c729e70e274..00000000000 --- a/Resources/Prototypes/Corvax/Entities/Mobs/Species/ipc.yml +++ /dev/null @@ -1,403 +0,0 @@ -- type: entity - save: false - name: Urist McIPC - parent: BaseMobSpeciesNotOrganic - id: BaseMobIpc - abstract: true - components: - - type: Crawler - - type: HumanoidAppearance - species: Ipc - - type: Icon - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: full - - type: Body - prototype: Ipc - requiredLegs: 2 - - type: Inventory - templateId: Ipc - - type: ContentEye - - type: Speech - - type: BodyEmotes - soundsId: IpcEmotes - - type: Vocal - sounds: - Male: MaleIpc - Female: FemaleIpc - Unsexed: MaleIpc - - type: MeleeWeapon - soundHit: - collection: AlienClaw - damage: - types: - Slash: 5 - - type: Damageable - damageContainer: SiliconIpc - damageModifierSet: Ipc - - type: ItemTogglePointLight - - type: ToggleableVisuals - spriteLayer: light - - type: PointLight - enabled: false - mask: /Textures/Effects/LightMasks/cone.png - autoRot: true - radius: 4 - netsync: false - - type: HandheldLight - toggleOnInteract: false - wattage: 0.2 - blinkingBehaviourId: blinking - radiatingBehaviourId: radiating - - type: LightBehaviour - behaviours: - - !type:FadeBehaviour - id: radiating - maxDuration: 2.0 - startValue: 3.0 - endValue: 2.0 - isLooped: true - reverseWhenFinished: true - - !type:PulseBehaviour - id: blinking - interpolate: Nearest - maxDuration: 1.0 - startValue: 0.1 - endValue: 2.0 - isLooped: true - - type: TypingIndicator - proto: robot - - type: PowerCellSlot - cellSlotId: cell_slot - fitsInCharger: true - - type: PowerCellDraw - drawRate: 0.8 - # no ToggleCellDraw since dont want to lose access when power is gone - - type: AccessReader - access: [ ["Ipc"] ] - - type: Access - enabled: true - tags: - - Ipc - - type: ItemSlots - slots: - cell_slot: - name: power-cell-slot-component-slot-name-default - startingItem: PowerCellMedium - - type: Lock - unlockOnClick: false - - type: ItemSlotsLock - slots: - - cell_slot - - type: ContainerContainer - containers: - cell_slot: !type:ContainerSlot { } - - type: Ipc - - type: ZombieImmune - - type: Repairable - fuelCost: 30 - doAfterDelay: 20 - selfRepairPenalty: 2 - - type: DamagedSiliconAccent - - type: Reflect - reflectProb: 0.05 - - type: SleepEmitSound - snore: /Audio/Machines/buzz-two.ogg - interval: 30 - popUp: sleep-ipc - - type: Butcherable - butcheringType: Spike - spawned: - - id: HeadIpc - amount: 1 - - type: MobThresholds - thresholds: - 0: Alive - 100: Critical - 200: Dead - stateAlertDict: - Alive: BorgHealth - Critical: BorgCrit - Dead: BorgDead - - type: Barotrauma - damage: - types: - Blunt: 0 #per second, scales with pressure and other constants. - Heat: 0 - - type: DamageVisuals - damageOverlayGroups: - Brute: - sprite: Mobs/Effects/brute_damage.rsi - color: "#cd7314" - Burn: - sprite: Mobs/Effects/burn_damage.rsi - - type: ProtectedFromStepTriggers - - type: EyeProtection - -- type: entity - save: false - parent: - - MobFlammable - - BaseMob - - MobDamageable - - MobPolymorphable - - MobCombat - - StripableInventoryBase - - MobAtmosExposed - id: BaseMobSpeciesNotOrganic - abstract: true - components: - - type: Barotrauma - damage: - types: - Blunt: 0 #per second, scales with pressure and other constants. - Heat: 0 - - type: Fingerprint - - type: Blindable - # Other - - type: Butcherable - butcheringType: Spike # TODO human. - spawned: - - id: FoodMeat - amount: 5 - - type: FireVisuals - alternateState: Standing - - type: Sprite - layers: - - map: [ "enum.HumanoidVisualLayers.Chest" ] - - map: [ "enum.HumanoidVisualLayers.Head" ] - - map: [ "enum.HumanoidVisualLayers.Snout" ] - - map: [ "enum.HumanoidVisualLayers.Eyes" ] - - map: [ "enum.HumanoidVisualLayers.RArm" ] - - map: [ "enum.HumanoidVisualLayers.LArm" ] - - map: [ "enum.HumanoidVisualLayers.RLeg" ] - - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ] - - map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ] - - map: ["jumpsuit"] - - map: ["enum.HumanoidVisualLayers.LFoot"] - - map: ["enum.HumanoidVisualLayers.RFoot"] - - map: ["enum.HumanoidVisualLayers.LHand"] - - map: ["enum.HumanoidVisualLayers.RHand"] - - map: [ "gloves" ] - - map: [ "shoes" ] - - map: [ "ears" ] - - map: [ "eyes" ] - - map: [ "belt" ] - - map: [ "id" ] - - map: [ "outerClothing" ] - - map: [ "back" ] - - map: [ "neck" ] - - map: [ "enum.HumanoidVisualLayers.FacialHair" ] - - map: [ "enum.HumanoidVisualLayers.Hair" ] - - map: [ "enum.HumanoidVisualLayers.HeadSide" ] - - map: [ "enum.HumanoidVisualLayers.HeadTop" ] - - map: [ "enum.HumanoidVisualLayers.Tail" ] - - map: [ "mask" ] - - map: [ "head" ] - - map: [ "pocket1" ] - - map: [ "pocket2" ] - - map: ["enum.HumanoidVisualLayers.Handcuffs"] - color: "#ffffff" - sprite: Objects/Misc/handcuffs.rsi - state: body-overlay-2 - visible: false - - map: [ "clownedon" ] # Dynamically generated - sprite: "Effects/creampie.rsi" - state: "creampie_human" - visible: false - - type: DamageVisuals - thresholds: [ 10, 20, 30, 50, 70, 100 ] - targetLayers: - - "enum.HumanoidVisualLayers.Chest" - - "enum.HumanoidVisualLayers.Head" - - "enum.HumanoidVisualLayers.LArm" - - "enum.HumanoidVisualLayers.LLeg" - - "enum.HumanoidVisualLayers.RArm" - - "enum.HumanoidVisualLayers.RLeg" - damageOverlayGroups: - Brute: - sprite: Mobs/Effects/brute_damage.rsi - color: "#FF0000" - Burn: - sprite: Mobs/Effects/burn_damage.rsi - - type: GenericVisualizer - visuals: - enum.CreamPiedVisuals.Creamed: - clownedon: # Not 'creampied' bc I can already see Skyrat complaining about conflicts. - True: {visible: true} - False: {visible: false} - - type: StatusIcon - bounds: -0.5,-0.5,0.5,0.5 - - type: RotationVisuals - defaultRotation: 90 - horizontalRotation: 90 - - type: HumanoidAppearance - species: Human - - type: SlowOnDamage - speedModifierThresholds: - 60: 0.7 - 80: 0.5 - - type: Fixtures - fixtures: # TODO: This needs a second fixture just for mob collisions. - fix1: - shape: - !type:PhysShapeCircle - radius: 0.35 - density: 185 - restitution: 0.0 - mask: - - MobMask - layer: - - MobLayer - - type: FloorOcclusion - - type: RangedDamageSound - soundGroups: - Brute: - collection: - MeatBulletImpact - soundTypes: - Heat: - collection: - MeatLaserImpact - - type: Reactive - groups: - Flammable: [ Touch ] - Extinguish: [ Touch ] - Acidic: [Touch, Ingestion] - reactions: - - reagents: [Water, SpaceCleaner] - methods: [Touch] - effects: - - !type:WashCreamPie - - type: StatusEffects - allowed: - - Stun - - KnockedDown - - SlowedDown - - Stutter - - SeeingRainbows - - Electrocution - - Drunk - - SlurredSpeech - - RatvarianLanguage - - PressureImmunity - - Muted - - ForcedSleep - - TemporaryBlindness - - Pacified - - StaminaModifier - - Flashed - - RadiationProtection - - Drowsiness - - Adrenaline - - type: Body - prototype: Human - requiredLegs: 2 - - type: Identity - - type: IdExaminable - - type: Hands - - type: ComplexInteraction - - type: FloatingVisuals - - type: Climbing - - type: Cuffable - - type: Ensnareable - sprite: Objects/Misc/ensnare.rsi - state: icon - - type: AnimationPlayer - - type: Buckle - - type: CombatMode - canDisarm: true - - type: MeleeWeapon - soundHit: - collection: Punch - angle: 30 - animation: WeaponArcFist - attackRate: 1 - damage: - types: - Blunt: 5 - - type: SleepEmitSound - - type: SSDIndicator - - type: StandingState - - type: Dna - - type: MindContainer - - type: MindExaminable - - type: CanEnterCryostorage - - type: InteractionPopup - successChance: 1 - interactSuccessString: hugging-success-generic - interactSuccessSound: /Audio/Effects/thudswoosh.ogg - messagePerceivedByOthers: hugging-success-generic-others - - type: CanHostGuardian - - type: NpcFactionMember - factions: - - NanoTrasen - - type: CreamPied - - type: Stripping - - type: UserInterface - interfaces: - enum.HumanoidMarkingModifierKey.Key: - type: HumanoidMarkingModifierBoundUserInterface - enum.StrippingUiKey.Key: - type: StrippableBoundUserInterface - enum.IpcFaceUiKey.Face: - type: IpcFaceUserInterface - - type: Puller - - type: Speech - speechSounds: Alto - - type: DamageForceSay - - type: Vocal - sounds: - Male: MaleHuman - Female: FemaleHuman - Unsexed: MaleHuman - - type: Emoting - - type: Grammar - attributes: - proper: true - - type: MobPrice - price: 1500 # Kidnapping a living person and selling them for cred is a good move. - deathPenalty: 0.01 # However they really ought to be living and intact, otherwise they're worth 100x less. - - type: Tag - tags: - - CanPilot - - FootstepSound - - DoorBumpOpener - - AnomalyHost - - Ipc - - type: Temperature - currentTemperature: 310.15 - specificHeat: 42 - - type: TemperatureDamage - heatDamageThreshold: 325 - coldDamageThreshold: 260 - coldDamage: - types: - Cold: 0 #per second, scales with temperature & other constants - heatDamage: - types: - Heat: 1.5 #per second, scales with temperature & other constants - - type: TemperatureSpeed - thresholds: - 293: 0.8 - - type: ThermalRegulator - metabolismHeat: 800 - radiatedHeat: 100 - implicitHeatRegulation: 500 - sweatHeatRegulation: 2000 - shiveringHeatRegulation: 2000 - normalBodyTemperature: 310.15 - thermalRegulationTemperatureThreshold: 2 - -- type: entity - save: false - name: Urist McHands - parent: MobHumanDummy - id: MobIpcDummy - categories: [ HideSpawnMenu ] - description: A dummy Ipc meant to be used in character setup. - components: - - type: HumanoidAppearance - species: Ipc - - type: Inventory - templateId: Ipc diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Species/tajaran.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Species/tajaran.yml deleted file mode 100644 index 18463813afb..00000000000 --- a/Resources/Prototypes/Corvax/Entities/Mobs/Species/tajaran.yml +++ /dev/null @@ -1,117 +0,0 @@ -- type: entity - save: false - name: Urist McTajar - parent: BaseMobSpeciesOrganic - id: BaseMobTajaran - abstract: true - components: - - type: HumanoidAppearance - species: Tajaran - - type: Hunger - baseDecayRate: 0.02 - - type: Thirst - baseDecayRate: 0.15 - - type: Icon - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: full - - type: Body - prototype: Tajaran - requiredLegs: 2 - - type: Inventory - speciesId: corvaxtajaran - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: jumpsuit-female - shoes: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: shoes - displacements: - jumpsuit: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: jumpsuit - shoes: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: shoes - outerClothing: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: outerclothing - - - type: ContentEye - - type: Speech - allowedEmotes: ['Purr'] - - type: Vocal - sounds: - Male: MaleTajaran - Female: FemaleTajaran - Unsexed: MaleTajaran - - type: GrowlingAccent - - type: MeleeWeapon - animation: WeaponArcClaw - soundHit: - collection: AlienClaw - damage: - types: - Slash: 7 - - type: Damageable - damageContainer: Biological - damageModifierSet: Tajaran - - type: Respirator - damage: - types: - Asphyxiation: 2.0 - damageRecovery: - types: - Asphyxiation: -2.0 - - type: Wagging - -- type: entity - save: false - name: Urist McHands - parent: MobHumanDummy - id: MobTajaranDummy - categories: [ HideSpawnMenu ] - description: A dummy tajaran meant to be used in character setup. - components: - - type: HumanoidAppearance - species: Tajaran - - type: Inventory - speciesId: corvaxtajaran - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: jumpsuit-female - shoes: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: shoes - displacements: - jumpsuit: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: jumpsuit - shoes: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: shoes - outerClothing: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: outerclothing - diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Species/vulpkanin.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Species/vulpkanin.yml deleted file mode 100644 index 85df9de1621..00000000000 --- a/Resources/Prototypes/Corvax/Entities/Mobs/Species/vulpkanin.yml +++ /dev/null @@ -1,143 +0,0 @@ -- type: entity - save: false - name: Urist McVulp - parent: BaseMobSpeciesOrganic - id: BaseMobCorvaxVulpkanin - abstract: true - components: - - type: HumanoidAppearance - species: CorvaxVulpkanin - - type: Hunger # on 1.5x more - thresholds: - Overfed: 250 - Okay: 200 - Peckish: 150 - Starving: 100 - Dead: 0 - baseDecayRate: 0.02 - - type: Thirst # on 1.5x more - thresholds: - OverHydrated: 650 - Okay: 500 - Thirsty: 350 - Parched: 200 - Dead: 0 - baseDecayRate: 0.15 - - type: Icon - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: full - - type: Body - prototype: CorvaxVulpkanin - requiredLegs: 2 - - type: Inventory - speciesId: corvaxvulpkanin - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: jumpsuit-female - shoes: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: shoes - displacements: - jumpsuit: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: jumpsuit - shoes: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: shoes - outerClothing: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: outerclothing - - - type: ContentEye - targetZoom: "1.0, 1.0" - maxZoom: "1.0, 1.0" - - type: Speech - allowedEmotes: ['Howl', 'Growl'] - - type: Vocal - sounds: - Male: MaleCorvaxVulpkanin - Female: FemaleCorvaxVulpkanin - Unsexed: MaleCorvaxVulpkanin - - type: GrowlingAccent - - type: MeleeWeapon - animation: WeaponArcClaw - soundHit: - collection: AlienClaw - damage: - types: - Slash: 5 - - type: Damageable - damageContainer: Biological - damageModifierSet: CorvaxVulpkanin - - type: Respirator - damage: - types: - Asphyxiation: 2.0 - damageRecovery: - types: - Asphyxiation: -2.0 - - type: Wagging - - type: PassiveDamage - allowedStates: - - Alive - - Critical - damageCap: 199 - damage: - types: - Poison: -0.15 - Bloodloss: -0.15 - groups: - Brute: -0.15 - Burn: -0.15 - Airloss: -0.15 - -- type: entity - save: false - name: Urist McHands - parent: MobHumanDummy - id: MobCorvaxVulpkaninDummy - categories: [ HideSpawnMenu ] - description: A dummy vulpkanin meant to be used in character setup. - components: - - type: HumanoidAppearance - species: CorvaxVulpkanin - - type: Inventory - speciesId: corvaxvulpkanin - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: jumpsuit-female - shoes: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: shoes - displacements: - jumpsuit: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: jumpsuit - shoes: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: shoes - outerClothing: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: outerclothing diff --git a/Resources/Prototypes/Corvax/Species/ipc.yml b/Resources/Prototypes/Corvax/Species/ipc.yml index 98577cee19a..8db8e010488 100644 --- a/Resources/Prototypes/Corvax/Species/ipc.yml +++ b/Resources/Prototypes/Corvax/Species/ipc.yml @@ -7,7 +7,7 @@ sprites: MobIpcSprites defaultSkinTone: "#eb943d" markingLimits: MobIpcMarkingLimits - dollPrototype: MobIpcDummy + dollPrototype: AppearanceIPC skinColoration: Hues maleFirstNames: NamesIpcFirstMale femaleFirstNames: NamesIpcFirstFemale diff --git a/Resources/Prototypes/Corvax/Species/tajaran.yml b/Resources/Prototypes/Corvax/Species/tajaran.yml index 793fc0d8396..c8ff77240db 100644 --- a/Resources/Prototypes/Corvax/Species/tajaran.yml +++ b/Resources/Prototypes/Corvax/Species/tajaran.yml @@ -7,7 +7,7 @@ sprites: MobTajaranSprites defaultSkinTone: "#eb943d" markingLimits: MobTajaranMarkingLimits - dollPrototype: MobTajaranDummy + dollPrototype: AppearanceTajaran skinColoration: Hues maleFirstNames: NamesTajaranFirstMale femaleFirstNames: NamesTajaranFirstFemale From 7090e9eaa998250b0119e46f9e0e5349269ffabd Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Wed, 21 Jan 2026 18:29:58 +0700 Subject: [PATCH 072/603] the rework of races --- .../Prototypes/Corvax/Body/Organs/ipc.yml | 34 -- .../Prototypes/Corvax/Body/Organs/tajaran.yml | 15 - .../Corvax/Body/Organs/vulpkanin.yml | 15 - .../Prototypes/Corvax/Body/Parts/Tajaran.yml | 125 ------ .../Prototypes/Corvax/Body/Parts/ipc.yml | 107 ----- .../Corvax/Body/Parts/vulpkanin.yml | 125 ------ .../Prototypes/Corvax/Body/Prototypes/ipc.yml | 44 -- .../Corvax/Body/Prototypes/tajaran.yml | 49 --- .../Corvax/Body/Prototypes/vulpkanin.yml | 49 --- .../Prototypes/Corvax/Body/Species/ipc.yml | 325 ++++++++++++++ .../Corvax/Body/Species/tajaran.yml | 291 +++++++++++++ .../Corvax/Entities/Mobs/NPCs/human.yml | 4 +- .../Corvax/Entities/Mobs/Player/vulpkanin.yml | 5 - .../Corvax/Entities/Mobs/Species/ipc.yml | 403 ------------------ .../Corvax/Entities/Mobs/Species/tajaran.yml | 117 ----- .../Entities/Mobs/Species/vulpkanin.yml | 143 ------- Resources/Prototypes/Corvax/Species/ipc.yml | 2 +- .../Prototypes/Corvax/Species/tajaran.yml | 2 +- 18 files changed, 620 insertions(+), 1235 deletions(-) delete mode 100644 Resources/Prototypes/Corvax/Body/Organs/ipc.yml delete mode 100644 Resources/Prototypes/Corvax/Body/Organs/tajaran.yml delete mode 100644 Resources/Prototypes/Corvax/Body/Organs/vulpkanin.yml delete mode 100644 Resources/Prototypes/Corvax/Body/Parts/Tajaran.yml delete mode 100644 Resources/Prototypes/Corvax/Body/Parts/ipc.yml delete mode 100644 Resources/Prototypes/Corvax/Body/Parts/vulpkanin.yml delete mode 100644 Resources/Prototypes/Corvax/Body/Prototypes/ipc.yml delete mode 100644 Resources/Prototypes/Corvax/Body/Prototypes/tajaran.yml delete mode 100644 Resources/Prototypes/Corvax/Body/Prototypes/vulpkanin.yml create mode 100644 Resources/Prototypes/Corvax/Body/Species/ipc.yml create mode 100644 Resources/Prototypes/Corvax/Body/Species/tajaran.yml delete mode 100644 Resources/Prototypes/Corvax/Entities/Mobs/Player/vulpkanin.yml delete mode 100644 Resources/Prototypes/Corvax/Entities/Mobs/Species/ipc.yml delete mode 100644 Resources/Prototypes/Corvax/Entities/Mobs/Species/tajaran.yml delete mode 100644 Resources/Prototypes/Corvax/Entities/Mobs/Species/vulpkanin.yml diff --git a/Resources/Prototypes/Corvax/Body/Organs/ipc.yml b/Resources/Prototypes/Corvax/Body/Organs/ipc.yml deleted file mode 100644 index dc9b45994fc..00000000000 --- a/Resources/Prototypes/Corvax/Body/Organs/ipc.yml +++ /dev/null @@ -1,34 +0,0 @@ -- type: entity - id: OrganIPCBrain - parent: BaseHumanOrgan - name: brain IPC - description: "The source of incredible, unending intelligence. Honk." - components: - - type: Sprite - sprite: Objects/Specific/Robotics/mmi.rsi - layers: - - state: posibrain - map: ["base"] - - type: Organ - - type: Input - context: "ghost" - - type: Brain - - type: InputMover - - type: Examiner - - type: BlockMovement - - type: Item - size: Small - heldPrefix: brain - -- type: entity - id: OrganIpcEyes - parent: BaseHumanOrgan - name: IPC eyes - description: "I see you!" - components: - - type: Sprite - sprite: Objects/Misc/proximity_sensor.rsi - state: icon - - type: Item - size: Small - heldPrefix: eyeballs diff --git a/Resources/Prototypes/Corvax/Body/Organs/tajaran.yml b/Resources/Prototypes/Corvax/Body/Organs/tajaran.yml deleted file mode 100644 index 1bf62fb2f5d..00000000000 --- a/Resources/Prototypes/Corvax/Body/Organs/tajaran.yml +++ /dev/null @@ -1,15 +0,0 @@ -- type: entity - id: OrganTajaranStomach - parent: OrganAnimalStomach - categories: [ HideSpawnMenu ] - components: - - type: Stomach - - type: SolutionContainerManager - solutions: - stomach: - maxVol: 50.0 - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 diff --git a/Resources/Prototypes/Corvax/Body/Organs/vulpkanin.yml b/Resources/Prototypes/Corvax/Body/Organs/vulpkanin.yml deleted file mode 100644 index f5a837d97b9..00000000000 --- a/Resources/Prototypes/Corvax/Body/Organs/vulpkanin.yml +++ /dev/null @@ -1,15 +0,0 @@ -- type: entity - id: OrganCorvaxVulpkaninStomach - parent: OrganAnimalStomach - categories: [ HideSpawnMenu ] - components: - - type: Stomach - - type: SolutionContainerManager - solutions: - stomach: - maxVol: 50.0 - food: - maxVol: 5 - reagents: - - ReagentId: UncookedAnimalProteins - Quantity: 5 diff --git a/Resources/Prototypes/Corvax/Body/Parts/Tajaran.yml b/Resources/Prototypes/Corvax/Body/Parts/Tajaran.yml deleted file mode 100644 index 56bca895352..00000000000 --- a/Resources/Prototypes/Corvax/Body/Parts/Tajaran.yml +++ /dev/null @@ -1,125 +0,0 @@ -# TODO: Add descriptions (many) -# TODO BODY: Part damage -- type: entity - id: PartTajaran - parent: [BaseItem, BasePart] - name: "tajaran body part" - abstract: true - components: - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 3 - - ReagentId: Blood - Quantity: 10 - -- type: entity - id: TorsoTajaran - name: "tajaran torso" - parent: [PartTajaran, BaseTorso] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: "torso_m" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 10 - - ReagentId: Blood - Quantity: 20 - -- type: entity - id: HeadTajaran - name: "tajaran head" - parent: [PartTajaran, BaseHead] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: "head_m" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 5 - - ReagentId: Blood - Quantity: 10 - -- type: entity - id: LeftArmTajaran - name: "left tajaran arm" - parent: [PartTajaran, BaseLeftArm] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: "l_arm" - -- type: entity - id: RightArmTajaran - name: "right tajaran arm" - parent: [PartTajaran, BaseRightArm] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: "r_arm" - -- type: entity - id: LeftHandTajaran - name: "left tajaran hand" - parent: [PartTajaran, BaseLeftHand] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: "l_hand" - -- type: entity - id: RightHandTajaran - name: "right tajaran hand" - parent: [PartTajaran, BaseRightHand] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: "r_hand" - -- type: entity - id: LeftLegTajaran - name: "left tajaran leg" - parent: [PartTajaran, BaseLeftLeg] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: "l_leg" - - type: MovementBodyPart - walkSpeed : 2.7 - sprintSpeed : 4.5 - -- type: entity - id: RightLegTajaran - name: "right tajaran leg" - parent: [PartTajaran, BaseRightLeg] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: "r_leg" - - type: MovementBodyPart - walkSpeed : 2.7 - sprintSpeed : 4.5 - -- type: entity - id: LeftFootTajaran - name: "left tajaran foot" - parent: [PartTajaran, BaseLeftFoot] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: "l_foot" - -- type: entity - id: RightFootTajaran - name: "right tajaran foot" - parent: [PartTajaran, BaseRightFoot] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: "r_foot" diff --git a/Resources/Prototypes/Corvax/Body/Parts/ipc.yml b/Resources/Prototypes/Corvax/Body/Parts/ipc.yml deleted file mode 100644 index 3d2bd83df70..00000000000 --- a/Resources/Prototypes/Corvax/Body/Parts/ipc.yml +++ /dev/null @@ -1,107 +0,0 @@ -# TODO: Add descriptions (many) -# TODO BODY: Part damage -- type: entity - id: PartIpc - parent: [BaseItem, BasePart] - name: "Ipc body part" - abstract: true - - - -- type: entity - id: TorsoIpc - name: "Ipc torso" - parent: [PartIpc, BaseTorso] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: "torso_m" - -- type: entity - id: HeadIpc - name: "Ipc head" - parent: [PartIpc, BaseHead] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: "head_m" - - -- type: entity - id: LeftArmIpc - name: "left Ipc arm" - parent: [PartIpc, BaseLeftArm] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: "l_arm" - -- type: entity - id: RightArmIpc - name: "right Ipc arm" - parent: [PartIpc, BaseRightArm] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: "r_arm" - -- type: entity - id: LeftHandIpc - name: "left Ipc hand" - parent: [PartIpc, BaseLeftHand] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: "l_hand" - -- type: entity - id: RightHandIpc - name: "right Ipc hand" - parent: [PartIpc, BaseRightHand] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: "r_hand" - -- type: entity - id: LeftLegIpc - name: "left Ipc leg" - parent: [PartIpc, BaseLeftLeg] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: "l_leg" - - type: MovementBodyPart - walkSpeed : 2.7 - sprintSpeed : 4.5 - -- type: entity - id: RightLegIpc - name: "right Ipc leg" - parent: [PartIpc, BaseRightLeg] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: "r_leg" - - type: MovementBodyPart - walkSpeed : 2.7 - sprintSpeed : 4.5 - -- type: entity - id: LeftFootIpc - name: "left Ipc foot" - parent: [PartIpc, BaseLeftFoot] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: "l_foot" - -- type: entity - id: RightFootIpc - name: "right Ipc foot" - parent: [PartIpc, BaseRightFoot] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: "r_foot" - diff --git a/Resources/Prototypes/Corvax/Body/Parts/vulpkanin.yml b/Resources/Prototypes/Corvax/Body/Parts/vulpkanin.yml deleted file mode 100644 index f54e6811826..00000000000 --- a/Resources/Prototypes/Corvax/Body/Parts/vulpkanin.yml +++ /dev/null @@ -1,125 +0,0 @@ -# TODO: Add descriptions (many) -# TODO BODY: Part damage -- type: entity - id: PartCorvaxVulpkanin - parent: [BaseItem, BasePart] - name: "vulpkanin body part" - abstract: true - components: - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 3 - - ReagentId: Blood - Quantity: 10 - -- type: entity - id: TorsoCorvaxVulpkanin - name: "vulpkanin torso" - parent: [PartCorvaxVulpkanin, BaseTorso] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: "torso_m" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 10 - - ReagentId: Blood - Quantity: 20 - -- type: entity - id: HeadCorvaxVulpkanin - name: "vulpkanin head" - parent: [PartCorvaxVulpkanin, BaseHead] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: "head_m" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: Fat - Quantity: 5 - - ReagentId: Blood - Quantity: 10 - -- type: entity - id: LeftArmCorvaxVulpkanin - name: "left vulpkanin arm" - parent: [PartCorvaxVulpkanin, BaseLeftArm] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: "l_arm" - -- type: entity - id: RightArmCorvaxVulpkanin - name: "right vulpkanin arm" - parent: [PartCorvaxVulpkanin, BaseRightArm] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: "r_arm" - -- type: entity - id: LeftHandCorvaxVulpkanin - name: "left vulpkanin hand" - parent: [PartCorvaxVulpkanin, BaseLeftHand] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: "l_hand" - -- type: entity - id: RightHandCorvaxVulpkanin - name: "right vulpkanin hand" - parent: [PartCorvaxVulpkanin, BaseRightHand] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: "r_hand" - -- type: entity - id: LeftLegCorvaxVulpkanin - name: "left vulpkanin leg" - parent: [PartCorvaxVulpkanin, BaseLeftLeg] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: "l_leg" - - type: MovementBodyPart - walkSpeed : 2.7 - sprintSpeed : 4.5 - -- type: entity - id: RightLegCorvaxVulpkanin - name: "right vulpkanin leg" - parent: [PartCorvaxVulpkanin, BaseRightLeg] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: "r_leg" - - type: MovementBodyPart - walkSpeed : 2.7 - sprintSpeed : 4.5 - -- type: entity - id: LeftFootCorvaxVulpkanin - name: "left vulpkanin foot" - parent: [PartCorvaxVulpkanin, BaseLeftFoot] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: "l_foot" - -- type: entity - id: RightFootCorvaxVulpkanin - name: "right vulpkanin foot" - parent: [PartCorvaxVulpkanin, BaseRightFoot] - components: - - type: Sprite - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: "r_foot" diff --git a/Resources/Prototypes/Corvax/Body/Prototypes/ipc.yml b/Resources/Prototypes/Corvax/Body/Prototypes/ipc.yml deleted file mode 100644 index d4e389e732d..00000000000 --- a/Resources/Prototypes/Corvax/Body/Prototypes/ipc.yml +++ /dev/null @@ -1,44 +0,0 @@ -- type: body - name: "Ipc" - id: Ipc - root: torso - slots: - head: - part: HeadIpc - connections: - - torso - organs: - eyes: OrganIpcEyes - torso: - part: TorsoIpc - connections: - - right_arm - - left_arm - - right_leg - - left_leg - organs: - brain: OrganIPCBrain - right_arm: - part: RightArmIpc - connections: - - right_hand - left_arm: - part: LeftArmIpc - connections: - - left_hand - right_hand: - part: RightHandIpc - left_hand: - part: LeftHandIpc - right_leg: - part: RightLegIpc - connections: - - right_foot - left_leg: - part: LeftLegIpc - connections: - - left_foot - right_foot: - part: RightFootIpc - left_foot: - part: LeftFootIpc diff --git a/Resources/Prototypes/Corvax/Body/Prototypes/tajaran.yml b/Resources/Prototypes/Corvax/Body/Prototypes/tajaran.yml deleted file mode 100644 index fd000f86e2d..00000000000 --- a/Resources/Prototypes/Corvax/Body/Prototypes/tajaran.yml +++ /dev/null @@ -1,49 +0,0 @@ -- type: body - name: "tajaran" - id: Tajaran - root: torso - slots: - head: - part: HeadTajaran - connections: - - torso - organs: - brain: OrganHumanBrain - eyes: OrganHumanEyes - torso: - part: TorsoTajaran - organs: - heart: OrganAnimalHeart - lungs: OrganHumanLungs - stomach: OrganTajaranStomach - liver: OrganAnimalLiver - kidneys: OrganHumanKidneys - connections: - - right_arm - - left_arm - - right_leg - - left_leg - right_arm: - part: RightArmTajaran - connections: - - right_hand - left_arm: - part: LeftArmTajaran - connections: - - left_hand - right_hand: - part: RightHandTajaran - left_hand: - part: LeftHandTajaran - right_leg: - part: RightLegTajaran - connections: - - right_foot - left_leg: - part: LeftLegTajaran - connections: - - left_foot - right_foot: - part: RightFootTajaran - left_foot: - part: LeftFootTajaran diff --git a/Resources/Prototypes/Corvax/Body/Prototypes/vulpkanin.yml b/Resources/Prototypes/Corvax/Body/Prototypes/vulpkanin.yml deleted file mode 100644 index ae406ed0242..00000000000 --- a/Resources/Prototypes/Corvax/Body/Prototypes/vulpkanin.yml +++ /dev/null @@ -1,49 +0,0 @@ -- type: body - name: "vulpkanin" - id: CorvaxVulpkanin - root: torso - slots: - head: - part: HeadCorvaxVulpkanin - connections: - - torso - organs: - brain: OrganHumanBrain - eyes: OrganHumanEyes - torso: - part: TorsoCorvaxVulpkanin - organs: - heart: OrganAnimalHeart - lungs: OrganHumanLungs - stomach: OrganCorvaxVulpkaninStomach - liver: OrganAnimalLiver - kidneys: OrganHumanKidneys - connections: - - right_arm - - left_arm - - right_leg - - left_leg - right_arm: - part: RightArmCorvaxVulpkanin - connections: - - right_hand - left_arm: - part: LeftArmCorvaxVulpkanin - connections: - - left_hand - right_hand: - part: RightHandCorvaxVulpkanin - left_hand: - part: LeftHandCorvaxVulpkanin - right_leg: - part: RightLegCorvaxVulpkanin - connections: - - right_foot - left_leg: - part: LeftLegCorvaxVulpkanin - connections: - - left_foot - right_foot: - part: RightFootCorvaxVulpkanin - left_foot: - part: LeftFootCorvaxVulpkanin diff --git a/Resources/Prototypes/Corvax/Body/Species/ipc.yml b/Resources/Prototypes/Corvax/Body/Species/ipc.yml new file mode 100644 index 00000000000..824be909c72 --- /dev/null +++ b/Resources/Prototypes/Corvax/Body/Species/ipc.yml @@ -0,0 +1,325 @@ +- type: entity + parent: BaseSpeciesAppearance + id: AppearanceIPC + name: IPC appearance + components: + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganIPCTorso + - id: OrganIPCHead + - id: OrganIPCArmLeft + - id: OrganIPCArmRight + - id: OrganIPCHandRight + - id: OrganIPCHandLeft + - id: OrganIPCLegLeft + - id: OrganIPCLegRight + - id: OrganIPCFootLeft + - id: OrganIPCFootRight + - id: OrganIPCBrain + - id: OrganIPCEyes + - id: OrganIPCTongue + - id: OrganIPCAppendix + - id: OrganIPCEars + - id: OrganIPCLungs + - id: OrganIPCHeart + - id: OrganIPCStomach + - id: OrganIPCLiver + - id: OrganIPCKidneys + - type: HumanoidAppearance + species: Ipc + - type: Inventory + templateId: Ipc + alternateState: Standing + +- type: entity + save: false + name: Urist McIPC + parent: + - AppearanceIPC + - BaseSpeciesMobOrganic #BaseMobSpeciesNotOrganic + id: BaseMobIpc + abstract: true + components: + - type: Crawler + - type: Body + prototype: Ipc + requiredLegs: 2 + - type: ContentEye + - type: Speech + - type: BodyEmotes + soundsId: IpcEmotes + - type: Vocal + sounds: + Male: MaleIpc + Female: FemaleIpc + Unsexed: MaleIpc + - type: MeleeWeapon + soundHit: + collection: AlienClaw + damage: + types: + Slash: 5 + - type: Damageable + damageContainer: SiliconIpc + damageModifierSet: Ipc + - type: ItemTogglePointLight + - type: ToggleableVisuals + spriteLayer: light + - type: PointLight + enabled: false + mask: /Textures/Effects/LightMasks/cone.png + autoRot: true + radius: 4 + netsync: false + - type: HandheldLight + toggleOnInteract: false + wattage: 0.2 + blinkingBehaviourId: blinking + radiatingBehaviourId: radiating + - type: LightBehaviour + behaviours: + - !type:FadeBehaviour + id: radiating + maxDuration: 2.0 + startValue: 3.0 + endValue: 2.0 + isLooped: true + reverseWhenFinished: true + - !type:PulseBehaviour + id: blinking + interpolate: Nearest + maxDuration: 1.0 + startValue: 0.1 + endValue: 2.0 + isLooped: true + - type: TypingIndicator + proto: robot + - type: PowerCellSlot + cellSlotId: cell_slot + fitsInCharger: true + - type: PowerCellDraw + drawRate: 0.8 + # no ToggleCellDraw since dont want to lose access when power is gone + - type: AccessReader + access: [ ["Ipc"] ] + - type: Access + enabled: true + tags: + - Ipc + - type: ItemSlots + slots: + cell_slot: + name: power-cell-slot-component-slot-name-default + startingItem: PowerCellMedium + - type: Lock + unlockOnClick: false + - type: ItemSlotsLock + slots: + - cell_slot + - type: ContainerContainer + containers: + cell_slot: !type:ContainerSlot { } + - type: Ipc + - type: ZombieImmune + - type: Repairable + fuelCost: 30 + doAfterDelay: 20 + selfRepairPenalty: 2 + - type: DamagedSiliconAccent + - type: Reflect + reflectProb: 0.05 + - type: SleepEmitSound + snore: /Audio/Machines/buzz-two.ogg + interval: 30 + popUp: sleep-ipc + - type: Butcherable + butcheringType: Spike + spawned: + - id: HeadIpc + amount: 1 + - type: MobThresholds + thresholds: + 0: Alive + 100: Critical + 200: Dead + stateAlertDict: + Alive: BorgHealth + Critical: BorgCrit + Dead: BorgDead + - type: Barotrauma + damage: + types: + Blunt: 0 #per second, scales with pressure and other constants. + Heat: 0 + - type: DamageVisuals + damageOverlayGroups: + Brute: + sprite: Mobs/Effects/brute_damage.rsi + color: "#cd7314" + Burn: + sprite: Mobs/Effects/burn_damage.rsi + - type: ProtectedFromStepTriggers + - type: EyeProtection + +- type: entity + parent: OrganBase + id: OrganIPC + abstract: true + suffix: IPC + +- type: entity + id: OrganIPCMetabolizer + abstract: true + components: + - type: Metabolizer + metabolizerTypes: [ Human ] + +- type: entity + parent: OrganIPC + id: OrganIPCInternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Human/organs.rsi + +- type: entity + parent: OrganIPC + id: OrganIPCExternal + abstract: true + components: + - type: Sprite + sprite: Corvax/Mobs/Species/IPC/parts.rsi + +- type: entity + parent: [ OrganBaseTorso, OrganIPCExternal ] + id: OrganIPCTorso + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Ipc/parts.rsi + state: "torso_m" + +- type: entity + parent: [ OrganBaseHead, OrganIPCExternal ] + id: OrganIPCHead + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Ipc/parts.rsi + state: "head_m" + +- type: entity + parent: [ OrganBaseArmLeft, OrganIPCExternal ] + id: OrganIPCArmLeft + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Ipc/parts.rsi + state: "l_arm" + +- type: entity + parent: [ OrganBaseArmRight, OrganIPCExternal ] + id: OrganIPCArmRight + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Ipc/parts.rsi + state: "r_arm" + +- type: entity + parent: [ OrganBaseHandLeft, OrganIPCExternal ] + id: OrganIPCHandLeft + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Ipc/parts.rsi + state: "l_hand" + +- type: entity + parent: [ OrganBaseHandRight, OrganIPCExternal ] + id: OrganIPCHandRight + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Ipc/parts.rsi + state: "r_hand" + +- type: entity + parent: [ OrganBaseLegLeft, OrganIPCExternal ] + id: OrganIPCLegLeft + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Ipc/parts.rsi + state: "l_leg" + - type: MovementBodyPart + walkSpeed : 2.7 + sprintSpeed : 4.5 + +- type: entity + parent: [ OrganBaseLegRight, OrganIPCExternal ] + id: OrganIPCLegRight + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Ipc/parts.rsi + state: "r_leg" + - type: MovementBodyPart + walkSpeed : 2.7 + sprintSpeed : 4.5 + +- type: entity + parent: [ OrganBaseFootLeft, OrganIPCExternal ] + id: OrganIPCFootLeft + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Ipc/parts.rsi + state: "l_foot" + +- type: entity + parent: [ OrganBaseFootRight, OrganIPCExternal ] + id: OrganIPCFootRight + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Ipc/parts.rsi + state: "r_foot" + +- type: entity + parent: [ OrganBaseBrain, OrganSpriteHumanInternal, OrganIPCInternal ] + id: OrganIPCBrain + components: + - type: Sprite + sprite: Objects/Specific/Robotics/mmi.rsi + layers: + - state: posibrain + map: ["base"] + +- type: entity + parent: [ OrganBaseEyes, OrganIPCInternal ] + id: OrganIPCEyes + +- type: entity + parent: [ OrganBaseTongue, OrganIPCInternal ] + id: OrganIPCTongue + +- type: entity + parent: [ OrganBaseAppendix, OrganSpriteHumanInternal, OrganIPCInternal ] + id: OrganIPCAppendix + +- type: entity + parent: [ OrganBaseEars, OrganSpriteHumanInternal, OrganIPCInternal ] + id: OrganIPCEars + +- type: entity + parent: [ OrganBaseLungs, OrganIPCInternal, OrganIPCMetabolizer ] + id: OrganIPCLungs + +- type: entity + parent: [ OrganBaseHeart, OrganIPCInternal, OrganIPCMetabolizer ] + id: OrganIPCHeart + +- type: entity + parent: [ OrganBaseStomach, OrganIPCInternal, OrganIPCMetabolizer ] + id: OrganIPCStomach + +- type: entity + parent: [ OrganBaseLiver, OrganSpriteHumanInternal, OrganIPCInternal, OrganIPCMetabolizer ] + id: OrganIPCLiver + +- type: entity + parent: [ OrganBaseKidneys, OrganSpriteHumanInternal, OrganIPCInternal, OrganIPCMetabolizer ] + id: OrganIPCKidneys diff --git a/Resources/Prototypes/Corvax/Body/Species/tajaran.yml b/Resources/Prototypes/Corvax/Body/Species/tajaran.yml new file mode 100644 index 00000000000..ddd52efb58d --- /dev/null +++ b/Resources/Prototypes/Corvax/Body/Species/tajaran.yml @@ -0,0 +1,291 @@ +- type: entity + parent: BaseSpeciesAppearance + id: AppearanceTajaran + name: Tajaran appearance + components: + - type: EntityTableContainerFill + containers: + body_organs: !type:AllSelector + children: + - id: OrganTajaranTorso + - id: OrganTajaranHead + - id: OrganTajaranArmLeft + - id: OrganTajaranArmRight + - id: OrganTajaranHandRight + - id: OrganTajaranHandLeft + - id: OrganTajaranLegLeft + - id: OrganTajaranLegRight + - id: OrganTajaranFootLeft + - id: OrganTajaranFootRight + - id: OrganTajaranBrain + - id: OrganTajaranEyes + - id: OrganTajaranTongue + - id: OrganTajaranAppendix + - id: OrganTajaranEars + - id: OrganTajaranLungs + - id: OrganTajaranHeart + - id: OrganTajaranStomach + - id: OrganTajaranLiver + - id: OrganTajaranKidneys + - type: HumanoidAppearance + species: Tajaran + - type: Inventory + speciesId: corvaxtajaran + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Corvax/Mobs/Species/displacement.rsi + state: jumpsuit-female + shoes: + sizeMaps: + 32: + sprite: Corvax/Mobs/Species/displacement.rsi + state: shoes + displacements: + jumpsuit: + sizeMaps: + 32: + sprite: Corvax/Mobs/Species/displacement.rsi + state: jumpsuit + shoes: + sizeMaps: + 32: + sprite: Corvax/Mobs/Species/displacement.rsi + state: shoes + outerClothing: + sizeMaps: + 32: + sprite: Corvax/Mobs/Species/displacement.rsi + state: outerclothing + +- type: entity + save: false + name: Urist McTajar + parent: + - AppearanceTajaran + - BaseSpeciesMobOrganic + id: BaseMobTajaran + components: + - type: Hunger + baseDecayRate: 0.02 + - type: Thirst + baseDecayRate: 0.15 + - type: Body + prototype: Tajaran + requiredLegs: 2 + - type: ContentEye + - type: Speech + allowedEmotes: ['Purr'] + - type: Vocal + sounds: + Male: MaleTajaran + Female: FemaleTajaran + Unsexed: MaleTajaran + - type: GrowlingAccent + - type: MeleeWeapon + animation: WeaponArcClaw + soundHit: + collection: AlienClaw + damage: + types: + Slash: 7 + - type: Damageable + damageContainer: Biological + damageModifierSet: Tajaran + - type: Respirator + damage: + types: + Asphyxiation: 2.0 + damageRecovery: + types: + Asphyxiation: -2.0 + - type: Wagging + +- type: entity + parent: OrganBase + id: OrganTajaran + abstract: true + suffix: tajaran + components: + - type: Extractable + juiceSolution: + reagents: + - ReagentId: Fat + Quantity: 3 + - ReagentId: Blood + Quantity: 10 + +- type: entity + id: OrganTajaranMetabolizer + abstract: true + components: + - type: Metabolizer + metabolizerTypes: [ Animal ] + +- type: entity + parent: OrganTajaran + id: OrganTajaranInternal + abstract: true + components: + - type: Sprite + sprite: Mobs/Species/Human/organs.rsi + +- type: entity + parent: OrganTajaran + id: OrganTajaranExternal + abstract: true + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + +- type: entity + parent: [ OrganBaseTorso, OrganTajaranExternal ] + id: OrganTajaranTorso + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + state: "torso_m" + - type: Extractable + juiceSolution: + reagents: + - ReagentId: Fat + Quantity: 10 + - ReagentId: Blood + Quantity: 20 + +- type: entity + parent: [ OrganBaseHead, OrganTajaranExternal ] + id: OrganTajaranHead + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + state: "head_m" + - type: Extractable + juiceSolution: + reagents: + - ReagentId: Fat + Quantity: 5 + - ReagentId: Blood + Quantity: 10 + +- type: entity + parent: [ OrganBaseArmLeft, OrganTajaranExternal ] + id: OrganTajaranArmLeft + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + state: "l_arm" + +- type: entity + parent: [ OrganBaseArmRight, OrganTajaranExternal ] + id: OrganTajaranArmRight + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + state: "r_arm" + +- type: entity + parent: [ OrganBaseHandLeft, OrganTajaranExternal ] + id: OrganTajaranHandLeft + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + state: "l_hand" + +- type: entity + parent: [ OrganBaseHandRight, OrganTajaranExternal ] + id: OrganTajaranHandRight + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + state: "r_hand" + +- type: entity + parent: [ OrganBaseLegLeft, OrganTajaranExternal ] + id: OrganTajaranLegLeft + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + state: "l_leg" + - type: MovementBodyPart + walkSpeed : 2.7 + sprintSpeed : 4.5 + +- type: entity + parent: [ OrganBaseLegRight, OrganTajaranExternal ] + id: OrganTajaranLegRight + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + state: "r_leg" + - type: MovementBodyPart + walkSpeed : 2.7 + sprintSpeed : 4.5 + +- type: entity + parent: [ OrganBaseFootLeft, OrganTajaranExternal ] + id: OrganTajaranFootLeft + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + state: "l_foot" + +- type: entity + parent: [ OrganBaseFootRight, OrganTajaranExternal ] + id: OrganTajaranFootRight + components: + - type: Sprite + sprite: Corvax/Mobs/Species/Tajaran/parts.rsi + state: "r_foot" + +- type: entity + parent: [ OrganBaseBrain, OrganSpriteHumanInternal, OrganTajaranInternal ] + id: OrganTajaranBrain + +- type: entity + parent: [ OrganBaseEyes, OrganTajaranInternal ] + id: OrganTajaranEyes + +- type: entity + parent: [ OrganBaseTongue, OrganTajaranInternal ] + id: OrganTajaranTongue + +- type: entity + parent: [ OrganBaseAppendix, OrganSpriteHumanInternal, OrganTajaranInternal ] + id: OrganTajaranAppendix + +- type: entity + parent: [ OrganBaseEars, OrganSpriteHumanInternal, OrganTajaranInternal ] + id: OrganTajaranEars + +- type: entity + parent: [ OrganBaseLungs, OrganTajaranInternal, OrganTajaranMetabolizer ] + id: OrganTajaranLungs + +- type: entity + parent: [ OrganBaseHeart, OrganTajaranInternal, OrganTajaranMetabolizer ] + id: OrganTajaranHeart + +- type: entity + parent: [ OrganBaseStomach, OrganTajaranInternal, OrganTajaranMetabolizer ] + id: OrganTajaranStomach + components: + - type: Stomach + - type: SolutionContainerManager + solutions: + stomach: + maxVol: 50.0 + food: + maxVol: 5 + reagents: + - ReagentId: UncookedAnimalProteins + Quantity: 5 + +- type: entity + parent: [ OrganBaseLiver, OrganSpriteHumanInternal, OrganTajaranInternal, OrganTajaranMetabolizer ] + id: OrganTajaranLiver + +- type: entity + parent: [ OrganBaseKidneys, OrganSpriteHumanInternal, OrganTajaranInternal, OrganTajaranMetabolizer ] + id: OrganTajaranKidneys diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/NPCs/human.yml b/Resources/Prototypes/Corvax/Entities/Mobs/NPCs/human.yml index 06eac90d7a6..3a1fb7629bb 100644 --- a/Resources/Prototypes/Corvax/Entities/Mobs/NPCs/human.yml +++ b/Resources/Prototypes/Corvax/Entities/Mobs/NPCs/human.yml @@ -1,6 +1,6 @@ - type: entity name: syndicate smuggler - parent: BaseMobHuman + parent: MobHuman id: MobSyndicateSmuggler components: - type: NpcFactionMember @@ -32,4 +32,4 @@ description: ghost-role-information-syndicate-smuggler-description rules: ghost-role-information-freeagent-rules raffle: - settings: default \ No newline at end of file + settings: default diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Player/vulpkanin.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Player/vulpkanin.yml deleted file mode 100644 index 1eae041c296..00000000000 --- a/Resources/Prototypes/Corvax/Entities/Mobs/Player/vulpkanin.yml +++ /dev/null @@ -1,5 +0,0 @@ -- type: entity - save: false - name: Urist McVulp - parent: [BaseMobCorvaxVulpkanin, BaseMob] - id: MobCorvaxVulpkanin diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Species/ipc.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Species/ipc.yml deleted file mode 100644 index c729e70e274..00000000000 --- a/Resources/Prototypes/Corvax/Entities/Mobs/Species/ipc.yml +++ /dev/null @@ -1,403 +0,0 @@ -- type: entity - save: false - name: Urist McIPC - parent: BaseMobSpeciesNotOrganic - id: BaseMobIpc - abstract: true - components: - - type: Crawler - - type: HumanoidAppearance - species: Ipc - - type: Icon - sprite: Corvax/Mobs/Species/Ipc/parts.rsi - state: full - - type: Body - prototype: Ipc - requiredLegs: 2 - - type: Inventory - templateId: Ipc - - type: ContentEye - - type: Speech - - type: BodyEmotes - soundsId: IpcEmotes - - type: Vocal - sounds: - Male: MaleIpc - Female: FemaleIpc - Unsexed: MaleIpc - - type: MeleeWeapon - soundHit: - collection: AlienClaw - damage: - types: - Slash: 5 - - type: Damageable - damageContainer: SiliconIpc - damageModifierSet: Ipc - - type: ItemTogglePointLight - - type: ToggleableVisuals - spriteLayer: light - - type: PointLight - enabled: false - mask: /Textures/Effects/LightMasks/cone.png - autoRot: true - radius: 4 - netsync: false - - type: HandheldLight - toggleOnInteract: false - wattage: 0.2 - blinkingBehaviourId: blinking - radiatingBehaviourId: radiating - - type: LightBehaviour - behaviours: - - !type:FadeBehaviour - id: radiating - maxDuration: 2.0 - startValue: 3.0 - endValue: 2.0 - isLooped: true - reverseWhenFinished: true - - !type:PulseBehaviour - id: blinking - interpolate: Nearest - maxDuration: 1.0 - startValue: 0.1 - endValue: 2.0 - isLooped: true - - type: TypingIndicator - proto: robot - - type: PowerCellSlot - cellSlotId: cell_slot - fitsInCharger: true - - type: PowerCellDraw - drawRate: 0.8 - # no ToggleCellDraw since dont want to lose access when power is gone - - type: AccessReader - access: [ ["Ipc"] ] - - type: Access - enabled: true - tags: - - Ipc - - type: ItemSlots - slots: - cell_slot: - name: power-cell-slot-component-slot-name-default - startingItem: PowerCellMedium - - type: Lock - unlockOnClick: false - - type: ItemSlotsLock - slots: - - cell_slot - - type: ContainerContainer - containers: - cell_slot: !type:ContainerSlot { } - - type: Ipc - - type: ZombieImmune - - type: Repairable - fuelCost: 30 - doAfterDelay: 20 - selfRepairPenalty: 2 - - type: DamagedSiliconAccent - - type: Reflect - reflectProb: 0.05 - - type: SleepEmitSound - snore: /Audio/Machines/buzz-two.ogg - interval: 30 - popUp: sleep-ipc - - type: Butcherable - butcheringType: Spike - spawned: - - id: HeadIpc - amount: 1 - - type: MobThresholds - thresholds: - 0: Alive - 100: Critical - 200: Dead - stateAlertDict: - Alive: BorgHealth - Critical: BorgCrit - Dead: BorgDead - - type: Barotrauma - damage: - types: - Blunt: 0 #per second, scales with pressure and other constants. - Heat: 0 - - type: DamageVisuals - damageOverlayGroups: - Brute: - sprite: Mobs/Effects/brute_damage.rsi - color: "#cd7314" - Burn: - sprite: Mobs/Effects/burn_damage.rsi - - type: ProtectedFromStepTriggers - - type: EyeProtection - -- type: entity - save: false - parent: - - MobFlammable - - BaseMob - - MobDamageable - - MobPolymorphable - - MobCombat - - StripableInventoryBase - - MobAtmosExposed - id: BaseMobSpeciesNotOrganic - abstract: true - components: - - type: Barotrauma - damage: - types: - Blunt: 0 #per second, scales with pressure and other constants. - Heat: 0 - - type: Fingerprint - - type: Blindable - # Other - - type: Butcherable - butcheringType: Spike # TODO human. - spawned: - - id: FoodMeat - amount: 5 - - type: FireVisuals - alternateState: Standing - - type: Sprite - layers: - - map: [ "enum.HumanoidVisualLayers.Chest" ] - - map: [ "enum.HumanoidVisualLayers.Head" ] - - map: [ "enum.HumanoidVisualLayers.Snout" ] - - map: [ "enum.HumanoidVisualLayers.Eyes" ] - - map: [ "enum.HumanoidVisualLayers.RArm" ] - - map: [ "enum.HumanoidVisualLayers.LArm" ] - - map: [ "enum.HumanoidVisualLayers.RLeg" ] - - map: [ "enum.HumanoidVisualLayers.LLeg" ] - - map: [ "enum.HumanoidVisualLayers.UndergarmentBottom" ] - - map: [ "enum.HumanoidVisualLayers.UndergarmentTop" ] - - map: ["jumpsuit"] - - map: ["enum.HumanoidVisualLayers.LFoot"] - - map: ["enum.HumanoidVisualLayers.RFoot"] - - map: ["enum.HumanoidVisualLayers.LHand"] - - map: ["enum.HumanoidVisualLayers.RHand"] - - map: [ "gloves" ] - - map: [ "shoes" ] - - map: [ "ears" ] - - map: [ "eyes" ] - - map: [ "belt" ] - - map: [ "id" ] - - map: [ "outerClothing" ] - - map: [ "back" ] - - map: [ "neck" ] - - map: [ "enum.HumanoidVisualLayers.FacialHair" ] - - map: [ "enum.HumanoidVisualLayers.Hair" ] - - map: [ "enum.HumanoidVisualLayers.HeadSide" ] - - map: [ "enum.HumanoidVisualLayers.HeadTop" ] - - map: [ "enum.HumanoidVisualLayers.Tail" ] - - map: [ "mask" ] - - map: [ "head" ] - - map: [ "pocket1" ] - - map: [ "pocket2" ] - - map: ["enum.HumanoidVisualLayers.Handcuffs"] - color: "#ffffff" - sprite: Objects/Misc/handcuffs.rsi - state: body-overlay-2 - visible: false - - map: [ "clownedon" ] # Dynamically generated - sprite: "Effects/creampie.rsi" - state: "creampie_human" - visible: false - - type: DamageVisuals - thresholds: [ 10, 20, 30, 50, 70, 100 ] - targetLayers: - - "enum.HumanoidVisualLayers.Chest" - - "enum.HumanoidVisualLayers.Head" - - "enum.HumanoidVisualLayers.LArm" - - "enum.HumanoidVisualLayers.LLeg" - - "enum.HumanoidVisualLayers.RArm" - - "enum.HumanoidVisualLayers.RLeg" - damageOverlayGroups: - Brute: - sprite: Mobs/Effects/brute_damage.rsi - color: "#FF0000" - Burn: - sprite: Mobs/Effects/burn_damage.rsi - - type: GenericVisualizer - visuals: - enum.CreamPiedVisuals.Creamed: - clownedon: # Not 'creampied' bc I can already see Skyrat complaining about conflicts. - True: {visible: true} - False: {visible: false} - - type: StatusIcon - bounds: -0.5,-0.5,0.5,0.5 - - type: RotationVisuals - defaultRotation: 90 - horizontalRotation: 90 - - type: HumanoidAppearance - species: Human - - type: SlowOnDamage - speedModifierThresholds: - 60: 0.7 - 80: 0.5 - - type: Fixtures - fixtures: # TODO: This needs a second fixture just for mob collisions. - fix1: - shape: - !type:PhysShapeCircle - radius: 0.35 - density: 185 - restitution: 0.0 - mask: - - MobMask - layer: - - MobLayer - - type: FloorOcclusion - - type: RangedDamageSound - soundGroups: - Brute: - collection: - MeatBulletImpact - soundTypes: - Heat: - collection: - MeatLaserImpact - - type: Reactive - groups: - Flammable: [ Touch ] - Extinguish: [ Touch ] - Acidic: [Touch, Ingestion] - reactions: - - reagents: [Water, SpaceCleaner] - methods: [Touch] - effects: - - !type:WashCreamPie - - type: StatusEffects - allowed: - - Stun - - KnockedDown - - SlowedDown - - Stutter - - SeeingRainbows - - Electrocution - - Drunk - - SlurredSpeech - - RatvarianLanguage - - PressureImmunity - - Muted - - ForcedSleep - - TemporaryBlindness - - Pacified - - StaminaModifier - - Flashed - - RadiationProtection - - Drowsiness - - Adrenaline - - type: Body - prototype: Human - requiredLegs: 2 - - type: Identity - - type: IdExaminable - - type: Hands - - type: ComplexInteraction - - type: FloatingVisuals - - type: Climbing - - type: Cuffable - - type: Ensnareable - sprite: Objects/Misc/ensnare.rsi - state: icon - - type: AnimationPlayer - - type: Buckle - - type: CombatMode - canDisarm: true - - type: MeleeWeapon - soundHit: - collection: Punch - angle: 30 - animation: WeaponArcFist - attackRate: 1 - damage: - types: - Blunt: 5 - - type: SleepEmitSound - - type: SSDIndicator - - type: StandingState - - type: Dna - - type: MindContainer - - type: MindExaminable - - type: CanEnterCryostorage - - type: InteractionPopup - successChance: 1 - interactSuccessString: hugging-success-generic - interactSuccessSound: /Audio/Effects/thudswoosh.ogg - messagePerceivedByOthers: hugging-success-generic-others - - type: CanHostGuardian - - type: NpcFactionMember - factions: - - NanoTrasen - - type: CreamPied - - type: Stripping - - type: UserInterface - interfaces: - enum.HumanoidMarkingModifierKey.Key: - type: HumanoidMarkingModifierBoundUserInterface - enum.StrippingUiKey.Key: - type: StrippableBoundUserInterface - enum.IpcFaceUiKey.Face: - type: IpcFaceUserInterface - - type: Puller - - type: Speech - speechSounds: Alto - - type: DamageForceSay - - type: Vocal - sounds: - Male: MaleHuman - Female: FemaleHuman - Unsexed: MaleHuman - - type: Emoting - - type: Grammar - attributes: - proper: true - - type: MobPrice - price: 1500 # Kidnapping a living person and selling them for cred is a good move. - deathPenalty: 0.01 # However they really ought to be living and intact, otherwise they're worth 100x less. - - type: Tag - tags: - - CanPilot - - FootstepSound - - DoorBumpOpener - - AnomalyHost - - Ipc - - type: Temperature - currentTemperature: 310.15 - specificHeat: 42 - - type: TemperatureDamage - heatDamageThreshold: 325 - coldDamageThreshold: 260 - coldDamage: - types: - Cold: 0 #per second, scales with temperature & other constants - heatDamage: - types: - Heat: 1.5 #per second, scales with temperature & other constants - - type: TemperatureSpeed - thresholds: - 293: 0.8 - - type: ThermalRegulator - metabolismHeat: 800 - radiatedHeat: 100 - implicitHeatRegulation: 500 - sweatHeatRegulation: 2000 - shiveringHeatRegulation: 2000 - normalBodyTemperature: 310.15 - thermalRegulationTemperatureThreshold: 2 - -- type: entity - save: false - name: Urist McHands - parent: MobHumanDummy - id: MobIpcDummy - categories: [ HideSpawnMenu ] - description: A dummy Ipc meant to be used in character setup. - components: - - type: HumanoidAppearance - species: Ipc - - type: Inventory - templateId: Ipc diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Species/tajaran.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Species/tajaran.yml deleted file mode 100644 index 18463813afb..00000000000 --- a/Resources/Prototypes/Corvax/Entities/Mobs/Species/tajaran.yml +++ /dev/null @@ -1,117 +0,0 @@ -- type: entity - save: false - name: Urist McTajar - parent: BaseMobSpeciesOrganic - id: BaseMobTajaran - abstract: true - components: - - type: HumanoidAppearance - species: Tajaran - - type: Hunger - baseDecayRate: 0.02 - - type: Thirst - baseDecayRate: 0.15 - - type: Icon - sprite: Corvax/Mobs/Species/Tajaran/parts.rsi - state: full - - type: Body - prototype: Tajaran - requiredLegs: 2 - - type: Inventory - speciesId: corvaxtajaran - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: jumpsuit-female - shoes: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: shoes - displacements: - jumpsuit: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: jumpsuit - shoes: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: shoes - outerClothing: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: outerclothing - - - type: ContentEye - - type: Speech - allowedEmotes: ['Purr'] - - type: Vocal - sounds: - Male: MaleTajaran - Female: FemaleTajaran - Unsexed: MaleTajaran - - type: GrowlingAccent - - type: MeleeWeapon - animation: WeaponArcClaw - soundHit: - collection: AlienClaw - damage: - types: - Slash: 7 - - type: Damageable - damageContainer: Biological - damageModifierSet: Tajaran - - type: Respirator - damage: - types: - Asphyxiation: 2.0 - damageRecovery: - types: - Asphyxiation: -2.0 - - type: Wagging - -- type: entity - save: false - name: Urist McHands - parent: MobHumanDummy - id: MobTajaranDummy - categories: [ HideSpawnMenu ] - description: A dummy tajaran meant to be used in character setup. - components: - - type: HumanoidAppearance - species: Tajaran - - type: Inventory - speciesId: corvaxtajaran - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: jumpsuit-female - shoes: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: shoes - displacements: - jumpsuit: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: jumpsuit - shoes: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: shoes - outerClothing: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: outerclothing - diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Species/vulpkanin.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Species/vulpkanin.yml deleted file mode 100644 index 85df9de1621..00000000000 --- a/Resources/Prototypes/Corvax/Entities/Mobs/Species/vulpkanin.yml +++ /dev/null @@ -1,143 +0,0 @@ -- type: entity - save: false - name: Urist McVulp - parent: BaseMobSpeciesOrganic - id: BaseMobCorvaxVulpkanin - abstract: true - components: - - type: HumanoidAppearance - species: CorvaxVulpkanin - - type: Hunger # on 1.5x more - thresholds: - Overfed: 250 - Okay: 200 - Peckish: 150 - Starving: 100 - Dead: 0 - baseDecayRate: 0.02 - - type: Thirst # on 1.5x more - thresholds: - OverHydrated: 650 - Okay: 500 - Thirsty: 350 - Parched: 200 - Dead: 0 - baseDecayRate: 0.15 - - type: Icon - sprite: Corvax/Mobs/Species/Vulpkanin/parts.rsi - state: full - - type: Body - prototype: CorvaxVulpkanin - requiredLegs: 2 - - type: Inventory - speciesId: corvaxvulpkanin - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: jumpsuit-female - shoes: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: shoes - displacements: - jumpsuit: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: jumpsuit - shoes: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: shoes - outerClothing: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: outerclothing - - - type: ContentEye - targetZoom: "1.0, 1.0" - maxZoom: "1.0, 1.0" - - type: Speech - allowedEmotes: ['Howl', 'Growl'] - - type: Vocal - sounds: - Male: MaleCorvaxVulpkanin - Female: FemaleCorvaxVulpkanin - Unsexed: MaleCorvaxVulpkanin - - type: GrowlingAccent - - type: MeleeWeapon - animation: WeaponArcClaw - soundHit: - collection: AlienClaw - damage: - types: - Slash: 5 - - type: Damageable - damageContainer: Biological - damageModifierSet: CorvaxVulpkanin - - type: Respirator - damage: - types: - Asphyxiation: 2.0 - damageRecovery: - types: - Asphyxiation: -2.0 - - type: Wagging - - type: PassiveDamage - allowedStates: - - Alive - - Critical - damageCap: 199 - damage: - types: - Poison: -0.15 - Bloodloss: -0.15 - groups: - Brute: -0.15 - Burn: -0.15 - Airloss: -0.15 - -- type: entity - save: false - name: Urist McHands - parent: MobHumanDummy - id: MobCorvaxVulpkaninDummy - categories: [ HideSpawnMenu ] - description: A dummy vulpkanin meant to be used in character setup. - components: - - type: HumanoidAppearance - species: CorvaxVulpkanin - - type: Inventory - speciesId: corvaxvulpkanin - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: jumpsuit-female - shoes: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: shoes - displacements: - jumpsuit: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: jumpsuit - shoes: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: shoes - outerClothing: - sizeMaps: - 32: - sprite: Corvax/Mobs/Species/displacement.rsi - state: outerclothing diff --git a/Resources/Prototypes/Corvax/Species/ipc.yml b/Resources/Prototypes/Corvax/Species/ipc.yml index 98577cee19a..8db8e010488 100644 --- a/Resources/Prototypes/Corvax/Species/ipc.yml +++ b/Resources/Prototypes/Corvax/Species/ipc.yml @@ -7,7 +7,7 @@ sprites: MobIpcSprites defaultSkinTone: "#eb943d" markingLimits: MobIpcMarkingLimits - dollPrototype: MobIpcDummy + dollPrototype: AppearanceIPC skinColoration: Hues maleFirstNames: NamesIpcFirstMale femaleFirstNames: NamesIpcFirstFemale diff --git a/Resources/Prototypes/Corvax/Species/tajaran.yml b/Resources/Prototypes/Corvax/Species/tajaran.yml index 793fc0d8396..c8ff77240db 100644 --- a/Resources/Prototypes/Corvax/Species/tajaran.yml +++ b/Resources/Prototypes/Corvax/Species/tajaran.yml @@ -7,7 +7,7 @@ sprites: MobTajaranSprites defaultSkinTone: "#eb943d" markingLimits: MobTajaranMarkingLimits - dollPrototype: MobTajaranDummy + dollPrototype: AppearanceTajaran skinColoration: Hues maleFirstNames: NamesTajaranFirstMale femaleFirstNames: NamesTajaranFirstFemale From 3c48696b16b32aa1213b88a8b451937f1e275fee Mon Sep 17 00:00:00 2001 From: Steel Date: Thu, 22 Jan 2026 05:36:05 +0400 Subject: [PATCH 073/603] Add aloe cream storage sprite (#42453) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Initial commit * Rotate sprite * Update Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml Use existing sprite Co-authored-by: āda * Remove cream-storage sprite --------- Co-authored-by: āda --- .../Entities/Objects/Specific/Medical/healing.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml index 74b9caaf63b..7893dfd646a 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml @@ -347,6 +347,12 @@ - type: Stack stackType: AloeCream count: 10 + - type: Item + storedRotation: 90 + storedOffset: 4, 0 + storedSprite: + state: cream + sprite: Objects/Specific/Hydroponics/aloe.rsi - type: entity parent: BaseHealingItem From 6cfedfa34ff827677988d0c6af5ef8b8705a54e6 Mon Sep 17 00:00:00 2001 From: pathetic meowmeow Date: Wed, 21 Jan 2026 21:27:56 -0500 Subject: [PATCH 074/603] Ensure cat ears & tails cannot be selected by players (#42579) Ensure cat ears & tails cannot be selected. --- Content.Client/Humanoid/MarkingsViewModel.cs | 2 +- Resources/Locale/en-US/preferences/ui/markings-picker.ftl | 6 ++++-- Resources/Prototypes/Body/Species/human.yml | 6 ++++++ Resources/Prototypes/Body/base_organs.yml | 1 + 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Content.Client/Humanoid/MarkingsViewModel.cs b/Content.Client/Humanoid/MarkingsViewModel.cs index 8fe9208afd9..86ad3195627 100644 --- a/Content.Client/Humanoid/MarkingsViewModel.cs +++ b/Content.Client/Humanoid/MarkingsViewModel.cs @@ -325,7 +325,7 @@ public void ValidateMarkings() public void GetMarkingCounts(ProtoId organ, HumanoidVisualLayers layer, out bool isRequired, out int count, out int selected) { isRequired = false; - count = 0; + count = -1; selected = 0; if (!_organData.TryGetValue(organ, out var organData)) diff --git a/Resources/Locale/en-US/preferences/ui/markings-picker.ftl b/Resources/Locale/en-US/preferences/ui/markings-picker.ftl index 8982988be4c..676c17a908c 100644 --- a/Resources/Locale/en-US/preferences/ui/markings-picker.ftl +++ b/Resources/Locale/en-US/preferences/ui/markings-picker.ftl @@ -6,12 +6,14 @@ markings-search = Search } markings-limits = { $required -> [true] { $count -> - [0] Select at least one marking. + [-1] Select at least one marking. + [0] You cannot select any markings, but somehow, you have to? This is a bug. [one] Select one marking. *[other] Select at least one marking and up to {$count} markings. { -markings-selection(selectable: $selectable) } } *[false] { $count -> - [0] Select any number of markings. + [-1] Select any number of markings. + [0] You cannot select any markings. [one] Select up to one marking. *[other] Select up to {$count} markings. { -markings-selection(selectable: $selectable) } } diff --git a/Resources/Prototypes/Body/Species/human.yml b/Resources/Prototypes/Body/Species/human.yml index fd9dd1fbbea..b569527a610 100644 --- a/Resources/Prototypes/Body/Species/human.yml +++ b/Resources/Prototypes/Body/Species/human.yml @@ -38,6 +38,12 @@ enum.HumanoidVisualLayers.RFoot: limit: 1 required: false + enum.HumanoidVisualLayers.Tail: + limit: 0 + required: false + enum.HumanoidVisualLayers.Special: + limit: 0 + required: false - type: entity parent: BaseSpeciesAppearance diff --git a/Resources/Prototypes/Body/base_organs.yml b/Resources/Prototypes/Body/base_organs.yml index 5c16184a786..5205297eca9 100644 --- a/Resources/Prototypes/Body/base_organs.yml +++ b/Resources/Prototypes/Body/base_organs.yml @@ -44,6 +44,7 @@ - Overlay - UndergarmentTop - UndergarmentBottom + - Special - type: entity parent: OrganBase From 5fd2b84a7d9a6cbdb5f04d71cbf1e50cbbb8c265 Mon Sep 17 00:00:00 2001 From: PJBot Date: Thu, 22 Jan 2026 02:44:57 +0000 Subject: [PATCH 075/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 63b90459eb0..cb0993a6f11 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: ArtisticRoomba - changes: - - message: Resin windows (exo windows) now inherit Delta-Pressure damage values - and pressure thresholds from reinforced windows. - type: Fix - id: 8934 - time: '2025-09-06T08:02:47.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40151 - author: ScarKy0 changes: - message: The size of the antique laser pistol and appraisal tool have been reverted @@ -3961,3 +3953,10 @@ id: 9440 time: '2026-01-21T04:21:38.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/41961 +- author: sowelipililimute + changes: + - message: Cat tails are no longer accessible to humans. + type: Fix + id: 9441 + time: '2026-01-22T02:43:47.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42579 From 3a23bf5e055d4b8da82c2c1d95e2955239e02d42 Mon Sep 17 00:00:00 2001 From: Emisse <99158783+Emisse@users.noreply.github.com> Date: Wed, 21 Jan 2026 20:05:59 -0700 Subject: [PATCH 076/603] bagel update (#42558) * bagel update * invalid lmao * im toing im toing im toing * resave fuck this aghost bullshit * why got --- Resources/Maps/bagel.yml | 1718 ++++++++++++++------------------------ 1 file changed, 606 insertions(+), 1112 deletions(-) diff --git a/Resources/Maps/bagel.yml b/Resources/Maps/bagel.yml index 18e71b4ccca..993f230a50b 100644 --- a/Resources/Maps/bagel.yml +++ b/Resources/Maps/bagel.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 268.0.0 + engineVersion: 271.1.0 forkId: "" forkVersion: "" - time: 12/08/2025 08:17:25 - entityCount: 25476 + time: 01/22/2026 02:05:58 + entityCount: 25402 maps: - 943 grids: @@ -27,6 +27,7 @@ tilemap: 36: FloorDarkMono 38: FloorDarkPavement 40: FloorDarkPlastic + 15: FloorDesertAstroSand 46: FloorFreezer 47: FloorGlass 48: FloorGold @@ -45,6 +46,7 @@ tilemap: 66: FloorMetalDiamond 67: FloorMime 71: FloorMono + 13: FloorMowedAstroGrass 77: FloorPlastic 78: FloorRGlass 79: FloorReinforced @@ -91,99 +93,99 @@ entities: chunks: 0,-1: ind: 0,-1 - tiles: XQAAAAADAF0AAAAAAQB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAwB+AAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAMAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAABAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAQBdAAAAAAAAXQAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAADAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAMAXQAAAAABAF0AAAAAAABdAAAAAAIAXQAAAAADAF0AAAAAAwBdAAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAABAF0AAAAAAgBdAAAAAAIAfgAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAADAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAADAH4AAAAAAABdAAAAAAIAXQAAAAAAAF0AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAE0AAAAAAwAfAAAAAAMAHwAAAAABAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAIAHwAAAAABAB8AAAAAAwAfAAAAAAEATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAACAB8AAAAAAwAfAAAAAAEAfgAAAAAAAE8AAAAAAAARAAAAAAAATwAAAAAAAE8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAwAfAAAAAAAAHwAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAAAHwAAAAADAB8AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAgAfAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAADAB8AAAAAAQAfAAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAgAfAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAIAHwAAAAADAB8AAAAAAgAfAAAAAAEAHwAAAAACAB8AAAAAAgB+AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAADAA== + tiles: XQAAAAABAF0AAAAAAwB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAACAF0AAAAAAQB+AAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAEAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAADAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAACAH4AAAAAAAB+AAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAgB+AAAAAAAACgAAAAAAAAoAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAACgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAE0AAAAAAwAfAAAAAAMAHwAAAAABAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAEAHwAAAAACAB8AAAAAAQAfAAAAAAIATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAAAAB8AAAAAAAAfAAAAAAIAfgAAAAAAAE8AAAAAAAARAAAAAAAATwAAAAAAAE8AAAAAAAB+AAAAAAAACgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwAfAAAAAAEAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAoAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAHwAAAAAAAB8AAAAAAQB+AAAAAAAAfgAAAAAAAGwAAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAACAB8AAAAAAgAfAAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwAfAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAHwAAAAAAAB8AAAAAAAAfAAAAAAIAHwAAAAADAB8AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAABAA== version: 7 -1,-1: ind: -1,-1 - tiles: XQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAA4AAAAAAAAOAAAAAAAADgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAAuAAAAAAAAfgAAAAAAAF0AAAAAAgAOAAAAAAAADgAAAAAAAA4AAAAAAABsAAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB0AAAAAAAAdAAAAAACAH4AAAAAAABdAAAAAAIADgAAAAAAAA4AAAAAAAAOAAAAAAAAbAAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAdAAAAAADAHMAAAAAAQB+AAAAAAAAXQAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABwAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAABAH4AAAAAAAAfAAAAAAEAfgAAAAAAAH4AAAAAAABsAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAEAegAAAAACADMAAAAAAAB6AAAAAAIAegAAAAADAHoAAAAAAwB+AAAAAAAAHwAAAAACAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB6AAAAAAMAegAAAAABAHoAAAAAAAAzAAAAAAAAegAAAAADAHoAAAAAAQB6AAAAAAMAfgAAAAAAAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAegAAAAACAHoAAAAAAgB6AAAAAAIAJAAAAAADAHoAAAAAAgB6AAAAAAAAegAAAAAAAH4AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAACAH4AAAAAAAB6AAAAAAMAegAAAAACAHoAAAAAAgB+AAAAAAAAHwAAAAAAAGwAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAACAB8AAAAAAQB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAEAfgAAAAAAAB8AAAAAAgBsAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAMAHwAAAAABAA== + tiles: XQAAAAADAF0AAAAAAQBdAAAAAAAAXQAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAABAF0AAAAAAwBdAAAAAAAAegAAAAACAHoAAAAAAwB6AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAIAXQAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAADAHoAAAAAAAB6AAAAAAEAegAAAAADAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAAAAF0AAAAAAQBdAAAAAAMAXQAAAAABAF0AAAAAAAB6AAAAAAEAegAAAAAAAHoAAAAAAQB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAA4AAAAAAAAOAAAAAAMADgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAAuAAAAAAAAfgAAAAAAAF0AAAAAAQAOAAAAAAMADgAAAAACAA4AAAAAAABsAAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB0AAAAAAMAdAAAAAAAAH4AAAAAAABdAAAAAAAADgAAAAABAA4AAAAAAgAOAAAAAAMAbAAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAdAAAAAADAHMAAAAAAgB+AAAAAAAAXQAAAAADAA4AAAAAAwAOAAAAAAEADgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABwAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAEAegAAAAABAH4AAAAAAAAfAAAAAAIAfgAAAAAAAH4AAAAAAABsAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAA0AAAAAAAB6AAAAAAEAegAAAAABAHoAAAAAAwB+AAAAAAAAHwAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB6AAAAAAIAegAAAAACAHoAAAAAAwANAAAAAAAAegAAAAADAHoAAAAAAAB6AAAAAAEAfgAAAAAAAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAegAAAAACAHoAAAAAAQB6AAAAAAMAJAAAAAAAAHoAAAAAAwB6AAAAAAAAegAAAAAAAH4AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAHoAAAAAAgB6AAAAAAMAegAAAAABAH4AAAAAAAB6AAAAAAIAegAAAAABAHoAAAAAAgB+AAAAAAAAHwAAAAADAGwAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAACAB8AAAAAAwB+AAAAAAAAHwAAAAADAB8AAAAAAgAfAAAAAAIAfgAAAAAAAB8AAAAAAgBsAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAgAfAAAAAAAAHwAAAAADAA== version: 7 0,0: ind: 0,0 - tiles: HwAAAAADAB8AAAAAAgAfAAAAAAEAHwAAAAACAB8AAAAAAwB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAACAB8AAAAAAQAfAAAAAAMAHwAAAAACAB8AAAAAAgAfAAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAvAAAAAAEALwAAAAABAC8AAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAQAfAAAAAAAAHwAAAAAAAB8AAAAAAQAfAAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAvAAAAAAEADAAAAAAAAAwAAAAAAAAMAAAAAAIALwAAAAACAH4AAAAAAABdAAAAAAAAHwAAAAACAB8AAAAAAAAfAAAAAAEAHwAAAAADAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAvAAAAAAIADAAAAAADAAwAAAAAAgAMAAAAAAEADAAAAAADAAwAAAAAAAAvAAAAAAAAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAALwAAAAACAAwAAAAAAgAMAAAAAAIADAAAAAABAAwAAAAAAAAMAAAAAAAALwAAAAADAF0AAAAAAwB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAC8AAAAAAgAfAAAAAAAADAAAAAAAAAwAAAAAAQAMAAAAAAIAHwAAAAAAAC8AAAAAAQBdAAAAAAIAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAALwAAAAACAC8AAAAAAwBOAAAAAAIALwAAAAACAC8AAAAAAAB+AAAAAAAATQAAAAABAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAgBdAAAAAAIATQAAAAAAAF0AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAMAXQAAAAACAF0AAAAAAgBdAAAAAAMAXQAAAAADAF0AAAAAAwBdAAAAAAIAXQAAAAACAE0AAAAAAwBdAAAAAAIAXQAAAAACAF0AAAAAAwBdAAAAAAMAXQAAAAADAF0AAAAAAgBdAAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAMAXQAAAAADAF0AAAAAAwBNAAAAAAMAXQAAAAABAF0AAAAAAQBdAAAAAAIAXQAAAAABAF0AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAE0AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAABdAAAAAAIAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAwBdAAAAAAEAXQAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAwB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAwB+AAAAAAAAXQAAAAACAF0AAAAAAQBdAAAAAAEAfgAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAACAF0AAAAAAABdAAAAAAEAfgAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAABAF0AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAEAXQAAAAADAF0AAAAAAABdAAAAAAAAXQAAAAADAF0AAAAAAgBdAAAAAAAAXQAAAAACAH4AAAAAAABdAAAAAAMAXQAAAAADAF0AAAAAAgB+AAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAgB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAQB+AAAAAAAAXQAAAAABAA== + tiles: HwAAAAABAB8AAAAAAAAfAAAAAAIAHwAAAAACAB8AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAADAB8AAAAAAwAfAAAAAAMAHwAAAAAAAB8AAAAAAQAfAAAAAAIAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAvAAAAAAIALwAAAAADAC8AAAAAAQB9AAAAAAAAfgAAAAAAAF0AAAAAAgAfAAAAAAEAHwAAAAAAAB8AAAAAAQAfAAAAAAIAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAvAAAAAAEADAAAAAABAAwAAAAAAgAMAAAAAAEALwAAAAAAAH4AAAAAAABdAAAAAAMAHwAAAAABAB8AAAAAAAAfAAAAAAIAHwAAAAADAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAvAAAAAAIADAAAAAAAAAwAAAAAAgAMAAAAAAMADAAAAAABAAwAAAAAAQAvAAAAAAIAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAALwAAAAABAAwAAAAAAQAMAAAAAAMADAAAAAABAAwAAAAAAAAMAAAAAAAALwAAAAAAAF0AAAAAAgB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAC8AAAAAAAAfAAAAAAAADAAAAAABAAwAAAAAAgAMAAAAAAMAHwAAAAAAAC8AAAAAAABdAAAAAAEAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAALwAAAAAAAC8AAAAAAgBOAAAAAAAALwAAAAADAC8AAAAAAQB+AAAAAAAATQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAIAXQAAAAACAF0AAAAAAgBdAAAAAAMATQAAAAACAF0AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAACAF0AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAAAAE0AAAAAAgBdAAAAAAIAXQAAAAABAF0AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAwBdAAAAAAEAXQAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAAAAF0AAAAAAQBNAAAAAAEAXQAAAAACAF0AAAAAAgBdAAAAAAIAXQAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAACAF0AAAAAAQBdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAE0AAAAAAwBdAAAAAAEAXQAAAAABAF0AAAAAAQBdAAAAAAAAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAABdAAAAAAEAXQAAAAADAH4AAAAAAABdAAAAAAEAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAwB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAACAF0AAAAAAQB+AAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAIAfgAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAACAF0AAAAAAgBdAAAAAAIAfgAAAAAAAF0AAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAQBdAAAAAAIAXQAAAAABAF0AAAAAAQBdAAAAAAEAXQAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAAAAF0AAAAAAwBdAAAAAAMAXQAAAAADAF0AAAAAAgBdAAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAAAXQAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAgB+AAAAAAAAXQAAAAADAF0AAAAAAgBdAAAAAAEAXQAAAAADAF0AAAAAAwB+AAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAwB+AAAAAAAAXQAAAAACAA== version: 7 -1,0: ind: -1,0 - tiles: fgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAHwAAAAACAB8AAAAAAgAfAAAAAAAAHwAAAAABAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfgAAAAAAAB8AAAAAAwAfAAAAAAMAHwAAAAADAB8AAAAAAABsAAAAAAAAbQAAAAAAAH4AAAAAAABtAAAAAAAAbQAAAAAAAB8AAAAAAwAfAAAAAAAAHwAAAAABAB8AAAAAAwB+AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAgAfAAAAAAMAfgAAAAAAAG0AAAAAAABsAAAAAAAAbQAAAAAAAG0AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAAfAAAAAAMAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAB8AAAAAAgAfAAAAAAEAHwAAAAACAH4AAAAAAABtAAAAAAAAfgAAAAAAAG0AAAAAAABtAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAHwAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAA4AAAAAAAAOAAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAB8AAAAAAgB+AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAABdAAAAAAAATQAAAAACAF0AAAAAAwBdAAAAAAEAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAABdAAAAAAAAXQAAAAADAE0AAAAAAgBdAAAAAAEAXQAAAAACAF0AAAAAAQBdAAAAAAIAXQAAAAABAF0AAAAAAQBdAAAAAAIAXQAAAAABAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAQBNAAAAAAEAXQAAAAABAF0AAAAAAQBdAAAAAAMAXQAAAAABAF0AAAAAAwBdAAAAAAMAXQAAAAACAF0AAAAAAQBdAAAAAAAAXQAAAAACAF0AAAAAAQBdAAAAAAMAXQAAAAAAAE0AAAAAAwBNAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAAAAF0AAAAAAwBdAAAAAAMAXQAAAAACAF0AAAAAAgBdAAAAAAAAXQAAAAACAB8AAAAAAQB+AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAIAegAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAABAF0AAAAAAgAfAAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAQB6AAAAAAAAegAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAEAHwAAAAADAH4AAAAAAAB6AAAAAAMAegAAAAACAHoAAAAAAAB6AAAAAAAAegAAAAADAHoAAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAIAfgAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAADAH4AAAAAAAB+AAAAAAAAegAAAAACAHoAAAAAAgB6AAAAAAAAegAAAAABAHoAAAAAAAB6AAAAAAEAfgAAAAAAAB8AAAAAAgAfAAAAAAAAHwAAAAAAAF0AAAAAAQBdAAAAAAIAXQAAAAACAF0AAAAAAQB+AAAAAAAAegAAAAAAAHoAAAAAAQBAAAAAAAAAQAAAAAAAAEAAAAAAAAB6AAAAAAEAegAAAAABAH4AAAAAAAAfAAAAAAIAHwAAAAABAB8AAAAAAAB+AAAAAAAAXQAAAAABAA== + tiles: fgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAHwAAAAADAB8AAAAAAgAfAAAAAAAAHwAAAAADAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAEAHwAAAAADAB8AAAAAAQBsAAAAAAAAbQAAAAAAAH4AAAAAAABtAAAAAAAAbQAAAAAAAB8AAAAAAQAfAAAAAAEAHwAAAAADAB8AAAAAAQB+AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAIAfgAAAAAAAG0AAAAAAABsAAAAAAAAbQAAAAAAAG0AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAAfAAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAMAHwAAAAACAH4AAAAAAABtAAAAAAAAfgAAAAAAAG0AAAAAAABtAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAHwAAAAABAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAA4AAAAAAAAOAAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAB8AAAAAAQB+AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAABdAAAAAAEATQAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAABdAAAAAAEAXQAAAAAAAE0AAAAAAQBdAAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAMAXQAAAAADAF0AAAAAAwBdAAAAAAMAXQAAAAADAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAABNAAAAAAMAXQAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAABAF0AAAAAAwBdAAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAIAXQAAAAADAF0AAAAAAgBdAAAAAAMAXQAAAAACAE0AAAAAAABNAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAwB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAMAXQAAAAACAF0AAAAAAgBdAAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAAAXQAAAAADAB8AAAAAAQB+AAAAAAAAegAAAAABAHoAAAAAAwB6AAAAAAAAegAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAABAF0AAAAAAABdAAAAAAAAXQAAAAACAF0AAAAAAAAfAAAAAAAAfgAAAAAAAHoAAAAAAwB6AAAAAAIAegAAAAACAHoAAAAAAwB6AAAAAAIAegAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAMAHwAAAAAAAH4AAAAAAAB6AAAAAAEAegAAAAABAHoAAAAAAwB6AAAAAAEAegAAAAABAHoAAAAAAgB+AAAAAAAAHwAAAAACAB8AAAAAAgAfAAAAAAMAfgAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAADAH4AAAAAAAB+AAAAAAAAegAAAAACAHoAAAAAAgB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAfgAAAAAAAB8AAAAAAQAfAAAAAAAAHwAAAAABAF0AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAgB+AAAAAAAAegAAAAACAHoAAAAAAQBAAAAAAAAAQAAAAAAAAEAAAAAAAAB6AAAAAAIAegAAAAADAH4AAAAAAAAfAAAAAAMAHwAAAAABAB8AAAAAAQB+AAAAAAAAXQAAAAACAA== version: 7 0,-2: ind: 0,-2 - tiles: XQAAAAAAAF0AAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAAAegAAAAABAHoAAAAAAgB6AAAAAAEAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAegAAAAAAAF0AAAAAAQBdAAAAAAMAfgAAAAAAAB8AAAAAAgAfAAAAAAMAHwAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAACAB8AAAAAAQAfAAAAAAMAHwAAAAABAB8AAAAAAQAfAAAAAAAAHwAAAAAAAB8AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAABOAAAAAAIAegAAAAAAAHoAAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAQAfAAAAAAAAHwAAAAADAB8AAAAAAQAfAAAAAAEAfgAAAAAAAA4AAAAAAgB6AAAAAAIAegAAAAACAHoAAAAAAAB6AAAAAAEAegAAAAABAF0AAAAAAABdAAAAAAIAfgAAAAAAAB8AAAAAAgAfAAAAAAEAHwAAAAADAB8AAAAAAAAfAAAAAAIAHwAAAAAAAH4AAAAAAAAOAAAAAAEAegAAAAADAHoAAAAAAwB6AAAAAAIAegAAAAAAAHoAAAAAAQBdAAAAAAAAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAADgAAAAADAA4AAAAAAQAOAAAAAAIADgAAAAABAA4AAAAAAwAOAAAAAAEAXQAAAAADAF0AAAAAAwB+AAAAAAAATQAAAAACAE0AAAAAAwBNAAAAAAAATQAAAAABAE0AAAAAAgBNAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAAATQAAAAABAF0AAAAAAQBdAAAAAAMAXQAAAAABAF0AAAAAAQBdAAAAAAMAXQAAAAACAF0AAAAAAQBdAAAAAAMAXQAAAAABAF0AAAAAAABdAAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAEAXQAAAAAAAE0AAAAAAQBdAAAAAAIAXQAAAAACAF0AAAAAAQBdAAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAIAXQAAAAAAAF0AAAAAAQBdAAAAAAMAXQAAAAAAAF0AAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAgBNAAAAAAIAXQAAAAABAF0AAAAAAgBdAAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAADAF0AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAEAXQAAAAACAF0AAAAAAwBdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAIAXQAAAAABAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAE0AAAAAAgBdAAAAAAEAXQAAAAACAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAABdAAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAAAAF0AAAAAAQB+AAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAEAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAABAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAADAH4AAAAAAABdAAAAAAMAXQAAAAACAF0AAAAAAgB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAwBdAAAAAAAAXQAAAAABAA== + tiles: XQAAAAAAAF0AAAAAAwB+AAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAEAegAAAAADAHoAAAAAAgB6AAAAAAEAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAegAAAAAAAF0AAAAAAABdAAAAAAIAfgAAAAAAAB8AAAAAAAAfAAAAAAEAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAAAAB8AAAAAAAAfAAAAAAEAHwAAAAACAB8AAAAAAQAfAAAAAAMAHwAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABOAAAAAAIAegAAAAADAHoAAAAAAgB+AAAAAAAAXQAAAAADAF0AAAAAAgB+AAAAAAAAHwAAAAADAB8AAAAAAAAfAAAAAAEAHwAAAAAAAB8AAAAAAwAfAAAAAAAAfgAAAAAAAA4AAAAAAgB6AAAAAAAAegAAAAACAHoAAAAAAgB6AAAAAAEAegAAAAAAAF0AAAAAAwBdAAAAAAIAfgAAAAAAAB8AAAAAAwAfAAAAAAIAHwAAAAABAB8AAAAAAQAfAAAAAAIAHwAAAAABAH4AAAAAAAAOAAAAAAAAegAAAAACAHoAAAAAAAB6AAAAAAMAegAAAAADAHoAAAAAAABdAAAAAAIAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAADgAAAAAAAA4AAAAAAwAOAAAAAAIADgAAAAADAA4AAAAAAwAOAAAAAAEAXQAAAAACAF0AAAAAAQB+AAAAAAAATQAAAAABAE0AAAAAAABNAAAAAAEATQAAAAABAE0AAAAAAQBNAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAEATQAAAAABAF0AAAAAAgBdAAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAIAXQAAAAADAF0AAAAAAQBdAAAAAAEAXQAAAAADAF0AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAQBdAAAAAAAAXQAAAAABAE0AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAIAXQAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAAAAF0AAAAAAwBNAAAAAAIAXQAAAAACAF0AAAAAAwBdAAAAAAEAXQAAAAACAF0AAAAAAwBdAAAAAAIAXQAAAAADAF0AAAAAAQBdAAAAAAEAXQAAAAACAF0AAAAAAgBdAAAAAAIAXQAAAAABAF0AAAAAAgBdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAE0AAAAAAwBdAAAAAAAAXQAAAAADAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAwBdAAAAAAIAbQAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAQB+AAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAAAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAIAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAADAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAMAXQAAAAACAH4AAAAAAABdAAAAAAEAXQAAAAABAF0AAAAAAwB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAMAXQAAAAACAF0AAAAAAgBdAAAAAAIAXQAAAAADAA== version: 7 -1,-2: ind: -1,-2 - tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAF0AAAAAAgB6AAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAfAAAAAAMAHwAAAAACAB8AAAAAAgAfAAAAAAEAHwAAAAABAB8AAAAAAwB+AAAAAAAAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAHwAAAAACAB8AAAAAAgAfAAAAAAMAHwAAAAAAAB8AAAAAAgAfAAAAAAIAfgAAAAAAAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAB8AAAAAAAAfAAAAAAIAHwAAAAACAB8AAAAAAwAfAAAAAAIAHwAAAAADAH4AAAAAAABdAAAAAAMAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAADAB8AAAAAAQB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAQBdAAAAAAMAXQAAAAACAF0AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAwBdAAAAAAEAXQAAAAAAAF0AAAAAAQBdAAAAAAMATQAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAADAF0AAAAAAwBdAAAAAAEAXQAAAAAAAF0AAAAAAQBdAAAAAAMAXQAAAAACAF0AAAAAAgBdAAAAAAMAXQAAAAABAF0AAAAAAwBdAAAAAAIAXQAAAAACAE0AAAAAAwBdAAAAAAIAXQAAAAAAAF0AAAAAAwBdAAAAAAMAXQAAAAADAF0AAAAAAwBdAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAMAXQAAAAABAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAwBNAAAAAAIAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAfgAAAAAAAHQAAAAAAAB0AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAAXQAAAAAAAGwAAAAAAAB0AAAAAAAAdAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAADAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAQAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAABdAAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAEADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAAXQAAAAAAAGwAAAAAAAB6AAAAAAAAegAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAAAAA== + tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAF0AAAAAAgB6AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAfAAAAAAMAHwAAAAAAAB8AAAAAAgAfAAAAAAMAHwAAAAADAB8AAAAAAQB+AAAAAAAAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAHwAAAAADAB8AAAAAAQAfAAAAAAMAHwAAAAAAAB8AAAAAAwAfAAAAAAAAfgAAAAAAAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAABAB8AAAAAAAAfAAAAAAMAHwAAAAAAAH4AAAAAAABdAAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAACAB8AAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAABdAAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAIAXQAAAAACAF0AAAAAAwBdAAAAAAIAXQAAAAABAF0AAAAAAQBdAAAAAAMAXQAAAAAAAF0AAAAAAwBdAAAAAAMATQAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAAAAF0AAAAAAQBdAAAAAAIAXQAAAAADAF0AAAAAAABdAAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAIAXQAAAAAAAE0AAAAAAwBdAAAAAAEAXQAAAAABAF0AAAAAAwBdAAAAAAMAXQAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAAAXQAAAAACAF0AAAAAAgBNAAAAAAIAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAACAF0AAAAAAwBdAAAAAAMAXQAAAAACAF0AAAAAAwBdAAAAAAMAfgAAAAAAAHQAAAAAAgB0AAAAAAMAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAMADgAAAAACAA4AAAAAAwAOAAAAAAIADgAAAAABAA4AAAAAAwAOAAAAAAEAXQAAAAACAGwAAAAAAAB0AAAAAAAAdAAAAAADAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAABAA4AAAAAAQAOAAAAAAIADgAAAAAAAA4AAAAAAwAOAAAAAAAADgAAAAACAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAgAOAAAAAAMADgAAAAACAA4AAAAAAAAOAAAAAAEADgAAAAABAA4AAAAAAABdAAAAAAAAfgAAAAAAAHoAAAAAAwB6AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAEADgAAAAACAA4AAAAAAQAOAAAAAAIADgAAAAABAA4AAAAAAwAOAAAAAAMAXQAAAAAAAGwAAAAAAAB6AAAAAAIAegAAAAADAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAACAA== version: 7 0,-3: ind: 0,-3 - tiles: XQAAAAACAF0AAAAAAwBdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAABAH4AAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAAAAGQAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAAAfAAAAAAMAHwAAAAADAB8AAAAAAgAfAAAAAAEAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAABkAAAAAAAAXQAAAAAAAF0AAAAAAQBdAAAAAAIAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABkAAAAAAAAZAAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAgBtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAACAH4AAAAAAAAfAAAAAAEAHwAAAAABAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAwB+AAAAAAAAHwAAAAAAAB8AAAAAAQAfAAAAAAIAfgAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAEAHwAAAAADAB8AAAAAAAAfAAAAAAEAHwAAAAABAB8AAAAAAgAfAAAAAAAAfgAAAAAAAB8AAAAAAQAfAAAAAAAAHwAAAAACAH4AAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAACAB8AAAAAAQAfAAAAAAMAHwAAAAADAH4AAAAAAAB6AAAAAAMAegAAAAAAAHoAAAAAAgB+AAAAAAAAQAAAAAAAAEAAAAAAAAB6AAAAAAAAXQAAAAACAF0AAAAAAgB+AAAAAAAAHwAAAAACAB8AAAAAAgAfAAAAAAMAHwAAAAACAB8AAAAAAwB+AAAAAAAAegAAAAACAHoAAAAAAAB6AAAAAAIAfgAAAAAAAEAAAAAAAABAAAAAAAAAegAAAAAAAF0AAAAAAABdAAAAAAEAfgAAAAAAAB8AAAAAAQAfAAAAAAAAHwAAAAABAB8AAAAAAgAfAAAAAAIAfgAAAAAAAHoAAAAAAgB6AAAAAAEAegAAAAADAH4AAAAAAABAAAAAAAAAQAAAAAAAAHoAAAAAAABdAAAAAAMAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAegAAAAADAH4AAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAAB6AAAAAAAAXQAAAAADAF0AAAAAAQB+AAAAAAAAHwAAAAABAB8AAAAAAAAfAAAAAAIAfgAAAAAAAHoAAAAAAAB6AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAegAAAAAAAA== + tiles: XQAAAAADAF0AAAAAAgBdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAADAH4AAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAABAGQAAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAAAAF0AAAAAAQAfAAAAAAIAHwAAAAADAB8AAAAAAAAfAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAwBkAAAAAAEAXQAAAAADAF0AAAAAAwBdAAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAQB+AAAAAAAAfgAAAAAAAGQAAAAAAQB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABkAAAAAAIAZAAAAAABAH4AAAAAAAB+AAAAAAAAZAAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAABAH4AAAAAAAAfAAAAAAMAHwAAAAADAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAIAfgAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAMAHwAAAAACAB8AAAAAAgAfAAAAAAMAHwAAAAABAB8AAAAAAwAfAAAAAAMAfgAAAAAAAB8AAAAAAgAfAAAAAAEAHwAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAADAH4AAAAAAAAfAAAAAAIAHwAAAAADAB8AAAAAAQAfAAAAAAMAHwAAAAAAAH4AAAAAAAB6AAAAAAIAegAAAAAAAHoAAAAAAQB+AAAAAAAAQAAAAAAAAEAAAAAAAAB6AAAAAAIAXQAAAAAAAF0AAAAAAQB+AAAAAAAAHwAAAAADAB8AAAAAAQAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAegAAAAAAAHoAAAAAAQB6AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAegAAAAACAF0AAAAAAABdAAAAAAEAfgAAAAAAAB8AAAAAAgAfAAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAIAfgAAAAAAAHoAAAAAAgB6AAAAAAIAegAAAAADAH4AAAAAAABAAAAAAAAAQAAAAAAAAHoAAAAAAABdAAAAAAAAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAegAAAAABAH4AAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAAB6AAAAAAEAXQAAAAADAF0AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAMAfgAAAAAAAHoAAAAAAwB6AAAAAAEAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAegAAAAAAAA== version: 7 -1,-3: ind: -1,-3 - tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAADAGQAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAAAAG0AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAFAAAAAAIAXQAAAAADAF0AAAAAAgBkAAAAAAAAZAAAAAAAAGQAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAABQAAAAABAF0AAAAAAwBdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAABdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAQB+AAAAAAAAbAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAACAA== + tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAABAGQAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAACAG0AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAFAAAAAAAAXQAAAAAAAF0AAAAAAABkAAAAAAIAZAAAAAABAGQAAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAABQAAAAADAF0AAAAAAQBdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAABdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAQB+AAAAAAAAbAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAADAA== version: 7 1,-2: ind: 1,-2 - tiles: egAAAAADAHoAAAAAAAB6AAAAAAIAegAAAAAAAHoAAAAAAQB6AAAAAAIAegAAAAAAAAQAAAAAAwAEAAAAAAEABAAAAAAAAAQAAAAAAwAfAAAAAAAAHwAAAAABAF0AAAAAAABdAAAAAAIAXQAAAAAAAHoAAAAAAwB6AAAAAAMAegAAAAACAHoAAAAAAwB6AAAAAAIAegAAAAAAAHoAAAAAAAAEAAAAAAEABAAAAAACAAQAAAAAAwAEAAAAAAAAHwAAAAAAAB8AAAAAAgBdAAAAAAMAXQAAAAAAAF0AAAAAAAB6AAAAAAEAegAAAAAAAHoAAAAAAgB6AAAAAAMAegAAAAAAAHoAAAAAAQB+AAAAAAAAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAEAegAAAAAAAHoAAAAAAAB6AAAAAAMAegAAAAAAAHoAAAAAAgB6AAAAAAEAfgAAAAAAAC4AAAAAAAAuAAAAAAAALgAAAAAAAC4AAAAAAAB+AAAAAAAAHwAAAAADAF0AAAAAAgBdAAAAAAAAXQAAAAABAHoAAAAAAgB6AAAAAAIAegAAAAADAHoAAAAAAQB6AAAAAAAAegAAAAADAH4AAAAAAAAuAAAAAAAALgAAAAAAAC4AAAAAAAAuAAAAAAAAfgAAAAAAAB8AAAAAAQBdAAAAAAMAXQAAAAAAAF0AAAAAAwAOAAAAAAMADgAAAAADAA4AAAAAAwAOAAAAAAIADgAAAAACAA4AAAAAAQB+AAAAAAAALgAAAAAAAC4AAAAAAAAuAAAAAAAALgAAAAAAAH4AAAAAAAAfAAAAAAMAHwAAAAADAB8AAAAAAQAfAAAAAAAADgAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAwB+AAAAAAAAPAAAAAAAAF0AAAAAAABdAAAAAAIATQAAAAABAF0AAAAAAgBdAAAAAAIAXQAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAACAF0AAAAAAgBdAAAAAAEAXQAAAAADAF0AAAAAAQBdAAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAIAXQAAAAADAE0AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAgBdAAAAAAIAXQAAAAABAF0AAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAgBdAAAAAAIAXQAAAAACAF0AAAAAAABNAAAAAAMAXQAAAAACAF0AAAAAAwBdAAAAAAIAXQAAAAABAF0AAAAAAwBdAAAAAAMAXQAAAAACAF0AAAAAAgBdAAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAIAXQAAAAACAE0AAAAAAgBNAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAACAHAAAAAAAwB+AAAAAAAAXQAAAAAAAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHAAAAAAAQBwAAAAAAIAcAAAAAADAF0AAAAAAgBdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAcAAAAAADAHAAAAAAAQBwAAAAAAEAXQAAAAACAF0AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHAAAAAAAwBwAAAAAAMAfgAAAAAAAA== + tiles: egAAAAABAHoAAAAAAgB6AAAAAAEAegAAAAABAHoAAAAAAAB6AAAAAAMAegAAAAAAAAQAAAAAAwAEAAAAAAMABAAAAAAAAAQAAAAAAQAfAAAAAAIAHwAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAABAHoAAAAAAAB6AAAAAAMAegAAAAADAHoAAAAAAQB6AAAAAAAAegAAAAAAAHoAAAAAAgAEAAAAAAEABAAAAAABAAQAAAAAAAAEAAAAAAEAHwAAAAACAB8AAAAAAwBdAAAAAAIAXQAAAAABAF0AAAAAAgB6AAAAAAAAegAAAAADAHoAAAAAAQB6AAAAAAEAegAAAAABAHoAAAAAAAB+AAAAAAAAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAEAegAAAAACAHoAAAAAAQB6AAAAAAIAegAAAAACAHoAAAAAAQB6AAAAAAAAfgAAAAAAAC4AAAAAAAAuAAAAAAAALgAAAAAAAC4AAAAAAAB+AAAAAAAAHwAAAAADAF0AAAAAAQBdAAAAAAIAXQAAAAACAHoAAAAAAAB6AAAAAAIAegAAAAAAAHoAAAAAAwB6AAAAAAIAegAAAAABAH4AAAAAAAAuAAAAAAAALgAAAAAAAC4AAAAAAAAuAAAAAAAAfgAAAAAAAB8AAAAAAgBdAAAAAAAAXQAAAAACAF0AAAAAAAAOAAAAAAEADgAAAAAAAA4AAAAAAwAOAAAAAAIADgAAAAADAA4AAAAAAgB+AAAAAAAALgAAAAAAAC4AAAAAAAAuAAAAAAAALgAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAABAB8AAAAAAQAfAAAAAAAADgAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAwB+AAAAAAAAPAAAAAAAAF0AAAAAAwBdAAAAAAEATQAAAAACAF0AAAAAAABdAAAAAAAAXQAAAAACAF0AAAAAAQBdAAAAAAAAXQAAAAADAF0AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAgBdAAAAAAIAXQAAAAABAE0AAAAAAwBdAAAAAAEAXQAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAABAF0AAAAAAQBdAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAAAXQAAAAAAAF0AAAAAAwBdAAAAAAMAXQAAAAAAAF0AAAAAAgBNAAAAAAAAXQAAAAACAF0AAAAAAQBdAAAAAAIAXQAAAAADAF0AAAAAAQBdAAAAAAAAXQAAAAACAF0AAAAAAwBdAAAAAAIAXQAAAAACAF0AAAAAAgBdAAAAAAAAXQAAAAADAE0AAAAAAwBNAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAHAAAAAAAQB+AAAAAAAAXQAAAAAAAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHAAAAAAAQBwAAAAAAAAcAAAAAABAF0AAAAAAwBdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAcAAAAAADAHAAAAAAAQBwAAAAAAAAXQAAAAAAAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHAAAAAAAwBwAAAAAAEAfgAAAAAAAA== version: 7 1,-1: ind: 1,-1 - tiles: XQAAAAADAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAEAegAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAACAH4AAAAAAAAfAAAAAAIAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAEMAAAAAAABDAAAAAAAAQwAAAAAAAB8AAAAAAgB+AAAAAAAAegAAAAABAHoAAAAAAAAfAAAAAAAAXQAAAAABAF0AAAAAAAB+AAAAAAAAHwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAABDAAAAAAAAQwAAAAAAAEMAAAAAAAAfAAAAAAMAfgAAAAAAAHoAAAAAAgB6AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAMAfgAAAAAAAB8AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAQwAAAAAAAEMAAAAAAABDAAAAAAAAHwAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAwBtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAE0AAAAAAgBNAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAACAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAHwAAAAAAAH4AAAAAAAAfAAAAAAMAHwAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAQB+AAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAB8AAAAAAwAfAAAAAAMAHwAAAAABAB8AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAIAfgAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAAfAAAAAAEAHwAAAAACAB8AAAAAAwB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAADAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAHwAAAAADAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAABsAAAAAAAAXQAAAAABAF0AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAIAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAH4AAAAAAABdAAAAAAIAXQAAAAABAH4AAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAABAH4AAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAAAfAAAAAAMAHwAAAAABABEAAAAAAAAfAAAAAAEAHwAAAAAAAH4AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAA== + tiles: XQAAAAABAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAABAH4AAAAAAABdAAAAAAAAXQAAAAACAH4AAAAAAAAfAAAAAAIAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAEMAAAAAAABDAAAAAAAAQwAAAAAAAB8AAAAAAgB+AAAAAAAAegAAAAAAAHoAAAAAAAAfAAAAAAIAXQAAAAADAF0AAAAAAwB+AAAAAAAAHwAAAAACABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAABDAAAAAAAAQwAAAAAAAEMAAAAAAAAfAAAAAAAAfgAAAAAAAHoAAAAAAgB6AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAIAfgAAAAAAAB8AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAQwAAAAAAAEMAAAAAAABDAAAAAAAAHwAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAgBtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAE0AAAAAAABNAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAAAAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAHwAAAAACAH4AAAAAAAAfAAAAAAAAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAgB+AAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAB8AAAAAAQAfAAAAAAEAHwAAAAABAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAEAfgAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAAfAAAAAAIAHwAAAAACAB8AAAAAAQB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAABAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAHwAAAAABAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAABsAAAAAAAAXQAAAAABAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAMAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAH4AAAAAAABdAAAAAAMAXQAAAAACAH4AAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAABAH4AAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAAAABEAAAAAAAAfAAAAAAMAHwAAAAADAH4AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAA== version: 7 1,0: ind: 1,0 - tiles: XQAAAAACAF0AAAAAAgB+AAAAAAAAAAAAAAAAAH4AAAAAAAA4AAAAAAAAXQAAAAABABEAAAAAAAAfAAAAAAMAOAAAAAAAAH4AAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAIAfgAAAAAAAAAAAAAAAAB+AAAAAAAAOAAAAAAAADgAAAAAAAARAAAAAAAAOAAAAAAAADgAAAAAAAB+AAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAMAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAAAAH4AAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAAAEQAAAAAAAF0AAAAAAgBdAAAAAAEAfgAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAgB+AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAMAfgAAAAAAAF0AAAAAAABdAAAAAAMAfgAAAAAAAAAAAAAAAAB+AAAAAAAAHwAAAAADAEAAAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAACAF0AAAAAAQBdAAAAAAIAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAADAB8AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAQB+AAAAAAAATQAAAAADAE0AAAAAAwB+AAAAAAAAXQAAAAADAF0AAAAAAwB+AAAAAAAAfgAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAADAF0AAAAAAABdAAAAAAAAXQAAAAADAF0AAAAAAgBdAAAAAAIAXQAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAgBdAAAAAAMAXQAAAAADAF0AAAAAAgBdAAAAAAEAXQAAAAADAF0AAAAAAgBdAAAAAAEAXQAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAADAF0AAAAAAwBdAAAAAAEAXQAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAABAF0AAAAAAQBdAAAAAAIAXQAAAAABAF0AAAAAAQBdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAEAXQAAAAABAE0AAAAAAQBNAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAACAH4AAAAAAAB0AAAAAAAAdAAAAAADAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAABwAAAAAAEAdAAAAAACAHQAAAAAAwB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAF0AAAAAAQBdAAAAAAMAfgAAAAAAAHQAAAAAAwB0AAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAADAH4AAAAAAAB0AAAAAAMAVgAAAAABAH4AAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAA== + tiles: XQAAAAADAF0AAAAAAAB+AAAAAAAAAAAAAAAAAH4AAAAAAAA4AAAAAAAAXQAAAAACABEAAAAAAAAfAAAAAAEAOAAAAAAAAH4AAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAIAfgAAAAAAAAAAAAAAAAB+AAAAAAAAOAAAAAAAADgAAAAAAAARAAAAAAAAOAAAAAAAADgAAAAAAAB+AAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAACAH4AAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAIAEQAAAAAAAF0AAAAAAwBdAAAAAAEAfgAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAABAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAwB+AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAEAfgAAAAAAAF0AAAAAAgBdAAAAAAEAfgAAAAAAAAAAAAAAAAB+AAAAAAAAHwAAAAADAEAAAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAwBdAAAAAAMAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAADAB8AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAAB+AAAAAAAATQAAAAACAE0AAAAAAQB+AAAAAAAAXQAAAAACAF0AAAAAAgB+AAAAAAAAfgAAAAAAAB8AAAAAAQB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAABAF0AAAAAAgBdAAAAAAIAXQAAAAACAF0AAAAAAQBdAAAAAAIAXQAAAAABAF0AAAAAAABdAAAAAAMAXQAAAAADAF0AAAAAAQBdAAAAAAAAXQAAAAADAF0AAAAAAgBdAAAAAAMAXQAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAADAF0AAAAAAgBdAAAAAAIAXQAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAIAXQAAAAADAF0AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAwBdAAAAAAMAXQAAAAACAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAACAF0AAAAAAQBdAAAAAAEAXQAAAAADAF0AAAAAAgBdAAAAAAEAXQAAAAADAE0AAAAAAQBNAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAAAAH4AAAAAAAB0AAAAAAAAdAAAAAACAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAwBwAAAAAAMAdAAAAAACAHQAAAAAAwB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAF0AAAAAAQBdAAAAAAMAfgAAAAAAAHQAAAAAAAB0AAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAADAH4AAAAAAAB0AAAAAAIAVgAAAAABAH4AAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAA== version: 7 -2,-2: ind: -2,-2 - tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAMAegAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAHoAAAAAAgB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAFsAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB6AAAAAAEAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABbAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAegAAAAABAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAMAfgAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAHoAAAAAAwB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAHoAAAAAAgB6AAAAAAIAegAAAAAAAHoAAAAAAgB8AAAAAAIAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAADAF0AAAAAAQBdAAAAAAEAXQAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAADAF0AAAAAAwBdAAAAAAAAXQAAAAACAF0AAAAAAwBdAAAAAAIAXQAAAAADAF0AAAAAAgBdAAAAAAIAXQAAAAACAF0AAAAAAgBdAAAAAAEAXQAAAAACAE0AAAAAAQBdAAAAAAMAXQAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAABAF0AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAIAXQAAAAABAF0AAAAAAQBdAAAAAAIAXQAAAAABAF0AAAAAAgBNAAAAAAMAXQAAAAADAF0AAAAAAABdAAAAAAMAXQAAAAACAF0AAAAAAABdAAAAAAEAXQAAAAABAF0AAAAAAwBdAAAAAAEAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAfgAAAAAAAAwAAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAHwAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAH4AAAAAAAAMAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAB8AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAGwAAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAAB+AAAAAAAADAAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABsAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAABsAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAfgAAAAAAAAwAAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAbAAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAA== + tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAEAegAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAHoAAAAAAQB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAFsAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB6AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABbAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAegAAAAABAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAMAfgAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAHoAAAAAAgB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAHoAAAAAAgB6AAAAAAAAegAAAAABAHoAAAAAAwB8AAAAAAEAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAMAXQAAAAACAF0AAAAAAwBdAAAAAAEAXQAAAAACAF0AAAAAAwBdAAAAAAEAXQAAAAABAF0AAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAQBdAAAAAAAAXQAAAAAAAE0AAAAAAwBdAAAAAAEAXQAAAAABAF0AAAAAAgBdAAAAAAAAXQAAAAACAF0AAAAAAQBdAAAAAAEAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAEAXQAAAAABAF0AAAAAAABNAAAAAAMAXQAAAAABAF0AAAAAAQBdAAAAAAAAXQAAAAAAAF0AAAAAAwBdAAAAAAMAXQAAAAAAAF0AAAAAAQBdAAAAAAMAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAADAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAfgAAAAAAAB8AAAAAAwAfAAAAAAEAHwAAAAABAB8AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAAAfgAAAAAAAAwAAAAAAQBdAAAAAAAAXQAAAAADAF0AAAAAAABdAAAAAAMAHwAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAAAAB8AAAAAAQAfAAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAAAAH4AAAAAAAAMAAAAAAIAXQAAAAABAF0AAAAAAQBdAAAAAAEAXQAAAAACAB8AAAAAAQB+AAAAAAAAHwAAAAABAB8AAAAAAAAfAAAAAAEAHwAAAAABAGwAAAAAAABdAAAAAAAAXQAAAAADAF0AAAAAAgB+AAAAAAAADAAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAAAAF0AAAAAAQBsAAAAAAAAfgAAAAAAAB8AAAAAAQAfAAAAAAEAHwAAAAACAB8AAAAAAQBsAAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAMAfgAAAAAAAAwAAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAgBdAAAAAAMAXQAAAAACAH4AAAAAAAAfAAAAAAEAHwAAAAABAB8AAAAAAAAfAAAAAAMAbAAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAA== version: 7 -2,-1: ind: -2,-1 - tiles: XQAAAAAAAGwAAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAfgAAAAAAAF0AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABsAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAAAAGwAAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABsAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAGwAAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAAAbAAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAGwAAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAF0AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAfgAAAAAAAGwAAAAAAABdAAAAAAAAbAAAAAAAAH4AAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAA/AAAAAAAAfgAAAAAAAGwAAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAPwAAAAAAAD8AAAAAAAA/AAAAAAAAPwAAAAAAAH4AAAAAAABsAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAAB+AAAAAAAALgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAbAAAAAAAAC4AAAAAAAAuAAAAAAAALgAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAH4AAAAAAAAuAAAAAAAALgAAAAAAAC4AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAABsAAAAAAAAHwAAAAAAAC4AAAAAAAAuAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAbAAAAAAAAB8AAAAAAAAuAAAAAAAALgAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAA== + tiles: XQAAAAADAGwAAAAAAAAfAAAAAAMAHwAAAAAAAB8AAAAAAgAfAAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAACAH4AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAMAfgAAAAAAAF0AAAAAAQB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAABsAAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAAAXQAAAAADAH4AAAAAAABdAAAAAAAAXQAAAAABAGwAAAAAAABdAAAAAAIAXQAAAAADAF0AAAAAAgBsAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAMAfgAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAADAF0AAAAAAgB+AAAAAAAAXQAAAAADAF0AAAAAAwB+AAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAEAfgAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAADAGwAAAAAAABdAAAAAAEAXQAAAAAAAF0AAAAAAwBdAAAAAAMAfgAAAAAAAF0AAAAAAgBdAAAAAAEAbAAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAADAGwAAAAAAABdAAAAAAEAXQAAAAADAF0AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAMAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAF0AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAfgAAAAAAAGwAAAAAAABdAAAAAAIAbAAAAAAAAH4AAAAAAABwAAAAAAAAcAAAAAACAHAAAAAAAQA/AAAAAAAAfgAAAAAAAGwAAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAPwAAAAAAAD8AAAAAAAA/AAAAAAAAPwAAAAAAAH4AAAAAAABsAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAgBdAAAAAAAAXQAAAAAAAF0AAAAAAwB+AAAAAAAALgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAwBdAAAAAAEAXQAAAAADAF0AAAAAAgBdAAAAAAAAbAAAAAAAAC4AAAAAAAAuAAAAAAAALgAAAAAAAB8AAAAAAwB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAEAXQAAAAAAAH4AAAAAAAAuAAAAAAAALgAAAAAAAC4AAAAAAAAfAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAABsAAAAAAAAHwAAAAADAC4AAAAAAAAuAAAAAAAAHwAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAwAfAAAAAAAAHwAAAAADAB8AAAAAAwB+AAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAAAbAAAAAAAAB8AAAAAAAAuAAAAAAAALgAAAAAAAB8AAAAAAwB+AAAAAAAAfgAAAAAAAA== version: 7 -2,0: ind: -2,0 - tiles: fgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAB8AAAAAAAAuAAAAAAAALgAAAAAAAC4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAAfAAAAAAAALgAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAAKAAAAAAAAfgAAAAAAAH4AAAAAAAAKAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAACgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAIAXQAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAABAF0AAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAgBdAAAAAAMATQAAAAACAF0AAAAAAgBdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAADAE0AAAAAAgBdAAAAAAEAXQAAAAABAF0AAAAAAwBdAAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAABAF0AAAAAAwBNAAAAAAIAXQAAAAACAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAE0AAAAAAQBdAAAAAAAAHwAAAAABAH4AAAAAAAAfAAAAAAEAegAAAAABAHoAAAAAAgB6AAAAAAEAegAAAAACAHoAAAAAAAAfAAAAAAIAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAEAEQAAAAAAAB8AAAAAAQB+AAAAAAAAHwAAAAADAHoAAAAAAgB6AAAAAAMAegAAAAABAHoAAAAAAQB6AAAAAAIAHwAAAAADAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAACABEAAAAAAABdAAAAAAIAfgAAAAAAAB8AAAAAAAB6AAAAAAIAegAAAAACAHoAAAAAAQB6AAAAAAIAegAAAAADAB8AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAgARAAAAAAAAHwAAAAACAH4AAAAAAAAfAAAAAAMAegAAAAABAHoAAAAAAgB6AAAAAAAAegAAAAABAHoAAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAACAB8AAAAAAwB+AAAAAAAAHwAAAAABAHoAAAAAAQB6AAAAAAAAegAAAAACAHoAAAAAAgB6AAAAAAAAHwAAAAABAH4AAAAAAAAfAAAAAAEAHwAAAAABAB8AAAAAAgB+AAAAAAAAXQAAAAAAAA== + tiles: fgAAAAAAAHoAAAAAAQB6AAAAAAEAegAAAAACAHoAAAAAAwB+AAAAAAAAHwAAAAABAB8AAAAAAAAfAAAAAAIAfgAAAAAAAB8AAAAAAAAuAAAAAAAALgAAAAAAAC4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAIAegAAAAAAAHoAAAAAAAB6AAAAAAMAfgAAAAAAAB8AAAAAAQAfAAAAAAAAHwAAAAADAH4AAAAAAAAfAAAAAAIALgAAAAAAAB8AAAAAAQAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAgAfAAAAAAMAHwAAAAACAH4AAAAAAAAfAAAAAAMAHwAAAAAAAB8AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAACAB8AAAAAAgAfAAAAAAAAfgAAAAAAAH4AAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAAKAAAAAAAAfgAAAAAAAH4AAAAAAAAKAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAACgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAACAF0AAAAAAwBdAAAAAAIAXQAAAAAAAF0AAAAAAQBdAAAAAAMAXQAAAAABAF0AAAAAAwBdAAAAAAMAXQAAAAABAF0AAAAAAgBdAAAAAAIATQAAAAABAF0AAAAAAgBdAAAAAAEAXQAAAAADAF0AAAAAAgBdAAAAAAIAXQAAAAABAF0AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAwBdAAAAAAEAXQAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAAAAE0AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAEAXQAAAAACAF0AAAAAAgBdAAAAAAIAXQAAAAABAF0AAAAAAQBNAAAAAAIAXQAAAAACAB8AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAE0AAAAAAgBdAAAAAAAAHwAAAAABAH4AAAAAAAAfAAAAAAMAegAAAAACAHoAAAAAAgB6AAAAAAIAegAAAAABAHoAAAAAAAAfAAAAAAIAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAMAEQAAAAAAAB8AAAAAAwB+AAAAAAAAHwAAAAACAHoAAAAAAAB6AAAAAAMAegAAAAABAHoAAAAAAQB6AAAAAAEAHwAAAAABAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAAAABEAAAAAAABdAAAAAAIAfgAAAAAAAB8AAAAAAAB6AAAAAAMAegAAAAADAHoAAAAAAQB6AAAAAAAAegAAAAABAB8AAAAAAQB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAwARAAAAAAAAHwAAAAABAH4AAAAAAAAfAAAAAAAAegAAAAADAHoAAAAAAwB6AAAAAAIAegAAAAABAHoAAAAAAAAfAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAABAB8AAAAAAwB+AAAAAAAAHwAAAAAAAHoAAAAAAgB6AAAAAAEAegAAAAACAHoAAAAAAAB6AAAAAAEAHwAAAAACAH4AAAAAAAAfAAAAAAAAHwAAAAACAB8AAAAAAQB+AAAAAAAAXQAAAAADAA== version: 7 1,-3: ind: 1,-3 - tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAAAH4AAAAAAABkAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAHwAAAAABAB8AAAAAAgAfAAAAAAIAHwAAAAADAB8AAAAAAwAfAAAAAAIAfgAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAwAEAAAAAAMAfgAAAAAAAB8AAAAAAQAfAAAAAAMAfgAAAAAAAB8AAAAAAAAfAAAAAAMAHwAAAAADAB8AAAAAAAAfAAAAAAEAHwAAAAACAH4AAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAAAEAAAAAAMABAAAAAACAH4AAAAAAAAMAAAAAAIADAAAAAABAH4AAAAAAAB6AAAAAAEAegAAAAABAHoAAAAAAAB6AAAAAAMAegAAAAAAAHoAAAAAAAAfAAAAAAEABAAAAAABAAQAAAAAAAAEAAAAAAEABAAAAAADAAQAAAAAAQAfAAAAAAIADAAAAAADAAwAAAAAAQB+AAAAAAAAegAAAAABAHoAAAAAAQB6AAAAAAIAegAAAAAAAHoAAAAAAAB6AAAAAAAAfgAAAAAAAAQAAAAAAQAEAAAAAAAABAAAAAABAAQAAAAAAAAEAAAAAAIAfgAAAAAAAAwAAAAAAAAMAAAAAAIAfgAAAAAAAHoAAAAAAQB6AAAAAAEAegAAAAABAHoAAAAAAAB6AAAAAAMAegAAAAABAHoAAAAAAAAEAAAAAAEABAAAAAAAAAQAAAAAAAAEAAAAAAIAfgAAAAAAAH4AAAAAAAAMAAAAAAIADAAAAAACAH4AAAAAAAB6AAAAAAMAegAAAAADAHoAAAAAAgB6AAAAAAAAegAAAAACAHoAAAAAAwB6AAAAAAAABAAAAAADAAQAAAAAAwAEAAAAAAEABAAAAAADAB8AAAAAAAAfAAAAAAMAHwAAAAAAAB8AAAAAAgAfAAAAAAIAegAAAAAAAHoAAAAAAwB6AAAAAAIAegAAAAAAAHoAAAAAAwB6AAAAAAAAegAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAACAAQAAAAAAAAfAAAAAAAAHwAAAAABAF0AAAAAAQBdAAAAAAAAXQAAAAABAA== + tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAABAH4AAAAAAABkAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAHwAAAAADAB8AAAAAAQAfAAAAAAEAHwAAAAACAB8AAAAAAgAfAAAAAAIAfgAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAADAAQAAAAAAAAEAAAAAAMAfgAAAAAAAB8AAAAAAAAfAAAAAAIAfgAAAAAAAB8AAAAAAwAfAAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAMAHwAAAAACAH4AAAAAAAAEAAAAAAAABAAAAAABAAQAAAAAAAAEAAAAAAMABAAAAAAAAH4AAAAAAAAMAAAAAAAADAAAAAAAAH4AAAAAAAB6AAAAAAMAegAAAAAAAHoAAAAAAgB6AAAAAAIAegAAAAACAHoAAAAAAQAfAAAAAAMABAAAAAABAAQAAAAAAQAEAAAAAAMABAAAAAABAAQAAAAAAwAfAAAAAAAADAAAAAADAAwAAAAAAAB+AAAAAAAAegAAAAABAHoAAAAAAwB6AAAAAAAAegAAAAADAHoAAAAAAAB6AAAAAAIAfgAAAAAAAAQAAAAAAgAEAAAAAAEABAAAAAAAAAQAAAAAAQAEAAAAAAIAfgAAAAAAAAwAAAAAAQAMAAAAAAEAfgAAAAAAAHoAAAAAAgB6AAAAAAEAegAAAAABAHoAAAAAAwB6AAAAAAIAegAAAAABAHoAAAAAAgAEAAAAAAIABAAAAAADAAQAAAAAAAAEAAAAAAEAfgAAAAAAAH4AAAAAAAAMAAAAAAIADAAAAAABAH4AAAAAAAB6AAAAAAIAegAAAAADAHoAAAAAAgB6AAAAAAAAegAAAAADAHoAAAAAAwB6AAAAAAIABAAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAABAB8AAAAAAwAfAAAAAAAAHwAAAAADAB8AAAAAAwAfAAAAAAMAegAAAAAAAHoAAAAAAQB6AAAAAAEAegAAAAAAAHoAAAAAAwB6AAAAAAAAegAAAAADAAQAAAAAAwAEAAAAAAEABAAAAAACAAQAAAAAAgAfAAAAAAIAHwAAAAABAF0AAAAAAgBdAAAAAAIAXQAAAAABAA== version: 7 -3,0: ind: -3,0 - tiles: HwAAAAACAB8AAAAAAQAfAAAAAAAAHwAAAAABAH4AAAAAAAB5AAAAAAAAeQAAAAAAAH4AAAAAAABNAAAAAAMAXQAAAAADAF0AAAAAAwBdAAAAAAMAbAAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAB8AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAAAAH4AAAAAAAAfAAAAAAMAHwAAAAACAB8AAAAAAAAfAAAAAAIAHwAAAAABAH4AAAAAAABdAAAAAAEAXQAAAAADAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABuAAAAAAAAHwAAAAABAB8AAAAAAgAfAAAAAAIAHwAAAAACAB8AAAAAAgAfAAAAAAAAHwAAAAACAB8AAAAAAQB+AAAAAAAAXQAAAAADAF0AAAAAAgBdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbgAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAB8AAAAAAgAfAAAAAAAAHwAAAAACAB8AAAAAAAAfAAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAAyAAAAAAMAMgAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAADAB8AAAAAAwAfAAAAAAAAHwAAAAACAH4AAAAAAABdAAAAAAAAXQAAAAADAF0AAAAAAwBsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAwBdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAB8AAAAAAQB6AAAAAAMAegAAAAAAAH4AAAAAAAB6AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAABAE0AAAAAAwBdAAAAAAEAXQAAAAADAF0AAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAAfAAAAAAAAegAAAAAAAHoAAAAAAgAfAAAAAAAAegAAAAADAH4AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAgBNAAAAAAIAXQAAAAACAF0AAAAAAgBdAAAAAAMAfQAAAAAAAAAAAAAAAAB+AAAAAAAAHwAAAAADAHoAAAAAAwB6AAAAAAMAfgAAAAAAAHoAAAAAAgB+AAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAAATQAAAAADAF0AAAAAAwBdAAAAAAMAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAFIAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAAAHwAAAAADAB8AAAAAAwAfAAAAAAIAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAACAB8AAAAAAgBwAAAAAAMAcAAAAAACAHAAAAAAAwB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAEAKAAAAAAAAB8AAAAAAQAfAAAAAAMAHwAAAAABAH4AAAAAAAAfAAAAAAIAHwAAAAADAB8AAAAAAgAfAAAAAAAAcAAAAAABAHAAAAAAAgBwAAAAAAIAfgAAAAAAAF0AAAAAAgARAAAAAAAAXQAAAAACACgAAAAAAQAfAAAAAAAAHwAAAAACAB8AAAAAAgAfAAAAAAIAcAAAAAABAHAAAAAAAABwAAAAAAAAcAAAAAABAHAAAAAAAgBwAAAAAAMAcAAAAAABAB8AAAAAAQBdAAAAAAEAEQAAAAAAABEAAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAMAfgAAAAAAAHAAAAAAAgBwAAAAAAIAcAAAAAADAHAAAAAAAgBwAAAAAAIAcAAAAAADAHAAAAAAAAB+AAAAAAAAXQAAAAAAABEAAAAAAABdAAAAAAAAaAAAAAACAF0AAAAAAQBdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAAAAA== + tiles: HwAAAAAAAB8AAAAAAQAfAAAAAAAAHwAAAAAAAH4AAAAAAAB5AAAAAAMAeQAAAAABAH4AAAAAAABNAAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAIAbAAAAAAAAF0AAAAAAQBdAAAAAAMAXQAAAAABAB8AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAACAH4AAAAAAAAfAAAAAAIAHwAAAAADAB8AAAAAAAAfAAAAAAIAHwAAAAADAH4AAAAAAABdAAAAAAIAXQAAAAAAAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABuAAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAIAHwAAAAADAB8AAAAAAwAfAAAAAAMAHwAAAAADAB8AAAAAAwB+AAAAAAAAXQAAAAAAAF0AAAAAAQBdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbgAAAAADAB8AAAAAAwAfAAAAAAIAfgAAAAAAAB8AAAAAAwAfAAAAAAEAHwAAAAAAAB8AAAAAAgAfAAAAAAIAfgAAAAAAAF0AAAAAAwBdAAAAAAMAXQAAAAABAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAAyAAAAAAIAMgAAAAACAH4AAAAAAAAfAAAAAAIAHwAAAAABAB8AAAAAAgAfAAAAAAMAHwAAAAADAH4AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAQBsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAQBdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAB8AAAAAAAB6AAAAAAEAegAAAAABAH4AAAAAAAB6AAAAAAIAfgAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAACAE0AAAAAAQBdAAAAAAMAXQAAAAADAF0AAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAAfAAAAAAAAegAAAAACAHoAAAAAAQAfAAAAAAIAegAAAAABAH4AAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAwBNAAAAAAMAXQAAAAAAAF0AAAAAAQBdAAAAAAAAfQAAAAAAAAAAAAAAAAB+AAAAAAAAHwAAAAACAHoAAAAAAAB6AAAAAAAAfgAAAAAAAHoAAAAAAwB+AAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAEATQAAAAADAF0AAAAAAgBdAAAAAAIAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAFIAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAgAfAAAAAAMAHwAAAAAAAB8AAAAAAAAfAAAAAAIAfgAAAAAAAB8AAAAAAAAfAAAAAAEAHwAAAAABAB8AAAAAAQBwAAAAAAEAcAAAAAAAAHAAAAAAAgB+AAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAEAKAAAAAABAB8AAAAAAgAfAAAAAAMAHwAAAAACAH4AAAAAAAAfAAAAAAAAHwAAAAADAB8AAAAAAAAfAAAAAAMAcAAAAAADAHAAAAAAAgBwAAAAAAAAfgAAAAAAAF0AAAAAAAARAAAAAAAAXQAAAAACACgAAAAAAQAfAAAAAAEAHwAAAAABAB8AAAAAAgAfAAAAAAIAcAAAAAADAHAAAAAAAQBwAAAAAAEAcAAAAAABAHAAAAAAAwBwAAAAAAIAcAAAAAACAB8AAAAAAABdAAAAAAIAEQAAAAAAABEAAAAAAAAfAAAAAAMAHwAAAAACAB8AAAAAAgAfAAAAAAIAfgAAAAAAAHAAAAAAAgBwAAAAAAEAcAAAAAACAHAAAAAAAQBwAAAAAAAAcAAAAAABAHAAAAAAAwB+AAAAAAAAXQAAAAAAABEAAAAAAABdAAAAAAEAaAAAAAADAF0AAAAAAQBdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAAAAA== version: 7 -3,-2: ind: -3,-2 - tiles: ZAAAAAAAAH4AAAAAAABkAAAAAAAAZAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABkAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAAAAGQAAAAAAABkAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAACAF0AAAAAAABdAAAAAAEAXQAAAAAAAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAABdAAAAAAEAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAEAXQAAAAADAF0AAAAAAgBdAAAAAAAAXQAAAAABAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAIAHwAAAAADAB8AAAAAAgAfAAAAAAMAfgAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAACAB8AAAAAAgAfAAAAAAMAHwAAAAACAB8AAAAAAgAfAAAAAAEAHwAAAAAAAB8AAAAAAgBdAAAAAAEAXQAAAAADAF0AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAB8AAAAAAQAfAAAAAAIAHwAAAAAAAB8AAAAAAQAfAAAAAAIAHwAAAAABAB8AAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAEAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAACAHoAAAAAAAB6AAAAAAIAegAAAAABAHoAAAAAAgB6AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAABAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAB+AAAAAAAAegAAAAACAHoAAAAAAQB6AAAAAAAAegAAAAACAHoAAAAAAQB6AAAAAAIAegAAAAAAAH4AAAAAAABNAAAAAAIATQAAAAABAE0AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAHwAAAAABAHoAAAAAAAB6AAAAAAMAegAAAAACAHoAAAAAAAB6AAAAAAEAegAAAAADAHoAAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAEAfgAAAAAAAEAAAAAAAABAAAAAAAAAfgAAAAAAAA== + tiles: ZAAAAAAAAH4AAAAAAABkAAAAAAIAZAAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABkAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAABAGQAAAAAAgBkAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAADAF0AAAAAAgBdAAAAAAIAXQAAAAADAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAABdAAAAAAAAXQAAAAADAF0AAAAAAgBdAAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAAAXQAAAAACAH4AAAAAAAAfAAAAAAAAHwAAAAACAB8AAAAAAwAfAAAAAAMAHwAAAAAAAB8AAAAAAwAfAAAAAAIAfgAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAADAB8AAAAAAwAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAMAHwAAAAABAB8AAAAAAwBdAAAAAAAAXQAAAAACAF0AAAAAAAB+AAAAAAAAHwAAAAADAB8AAAAAAwAfAAAAAAEAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAABAB8AAAAAAAAfAAAAAAEAHwAAAAABAB8AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAIAfgAAAAAAAB8AAAAAAAAfAAAAAAIAHwAAAAADAH4AAAAAAAB6AAAAAAEAegAAAAADAHoAAAAAAwB6AAAAAAMAegAAAAACAHoAAAAAAAB6AAAAAAMAfgAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAABAH4AAAAAAAAfAAAAAAIAHwAAAAADAB8AAAAAAwB+AAAAAAAAegAAAAAAAHoAAAAAAwB6AAAAAAIAegAAAAAAAHoAAAAAAQB6AAAAAAIAegAAAAABAH4AAAAAAABNAAAAAAEATQAAAAAAAE0AAAAAAwB+AAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAHwAAAAAAAHoAAAAAAQB6AAAAAAIAegAAAAADAHoAAAAAAAB6AAAAAAEAegAAAAABAHoAAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAfgAAAAAAAA== version: 7 -3,-1: ind: -3,-1 - tiles: fgAAAAAAAHwAAAAAAwB8AAAAAAMAegAAAAAAAHoAAAAAAwB6AAAAAAIAfAAAAAADAHwAAAAAAgB+AAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAMAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAACAH4AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAACAF0AAAAAAQB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAMAfgAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABsAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAABAH4AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAMAHwAAAAADAB8AAAAAAQBdAAAAAAAAXQAAAAADAF0AAAAAAwB+AAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAEAfgAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAB8AAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAEAHwAAAAACAB8AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAADAH4AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAAAfAAAAAAMAfgAAAAAAAB8AAAAAAgAfAAAAAAMAHwAAAAABAB8AAAAAAgAfAAAAAAMAfgAAAAAAAF0AAAAAAQBdAAAAAAMAXQAAAAABAF0AAAAAAwB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAHwAAAAABAH4AAAAAAAAfAAAAAAAAHwAAAAABAB8AAAAAAAAfAAAAAAIAHwAAAAACAH4AAAAAAABdAAAAAAEAXQAAAAABAF0AAAAAAgBdAAAAAAEAfgAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAB8AAAAAAgAfAAAAAAMAHwAAAAADAB8AAAAAAAAfAAAAAAEAHwAAAAAAAB8AAAAAAwB+AAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAIAXQAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAAAfAAAAAAEAfgAAAAAAAB8AAAAAAQAfAAAAAAMAHwAAAAADAB8AAAAAAAAfAAAAAAAAHwAAAAACAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAwB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAHwAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAADAB8AAAAAAwAfAAAAAAEAHwAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAADAF0AAAAAAABdAAAAAAMAbAAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAB8AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAADAH4AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAAAfAAAAAAMAHwAAAAADAB8AAAAAAAAfAAAAAAEAfgAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAE0AAAAAAABdAAAAAAIAXQAAAAADAF0AAAAAAQBsAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAHwAAAAACAB8AAAAAAgAfAAAAAAEAHwAAAAACAB8AAAAAAwAoAAAAAAIAKAAAAAABAB8AAAAAAwBNAAAAAAEAXQAAAAACAF0AAAAAAQBdAAAAAAAAbAAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAA== + tiles: fgAAAAAAAHwAAAAAAAB8AAAAAAIAegAAAAAAAHoAAAAAAQB6AAAAAAAAfAAAAAACAHwAAAAAAgB+AAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAMAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAMAXQAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAACAF0AAAAAAQB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAQB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAACAF0AAAAAAwBdAAAAAAMAfgAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAABAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAMAXQAAAAACAH4AAAAAAABdAAAAAAEAXQAAAAABAF0AAAAAAwBsAAAAAAAAfgAAAAAAAB8AAAAAAQAfAAAAAAEAHwAAAAAAAF0AAAAAAABdAAAAAAIAXQAAAAACAH4AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAMAfgAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAADAB8AAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAgB+AAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAIAfgAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAADAB8AAAAAAgB+AAAAAAAAHwAAAAAAAB8AAAAAAQAfAAAAAAIAHwAAAAACAB8AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAAAAF0AAAAAAgAfAAAAAAEAfgAAAAAAAB8AAAAAAgAfAAAAAAAAHwAAAAACAB8AAAAAAAAfAAAAAAMAfgAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAACAF0AAAAAAwB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAIAHwAAAAABAH4AAAAAAAAfAAAAAAEAHwAAAAADAB8AAAAAAQAfAAAAAAEAHwAAAAADAH4AAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAABdAAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAADAB8AAAAAAgAfAAAAAAAAHwAAAAACAB8AAAAAAAAfAAAAAAAAHwAAAAACAB8AAAAAAgB+AAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAAAXQAAAAACAH4AAAAAAABdAAAAAAEAXQAAAAAAAF0AAAAAAAAfAAAAAAMAfgAAAAAAAB8AAAAAAQAfAAAAAAMAHwAAAAAAAB8AAAAAAQAfAAAAAAMAHwAAAAACAF0AAAAAAgBdAAAAAAMAXQAAAAADAF0AAAAAAwB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAIAHwAAAAAAAH4AAAAAAAAfAAAAAAMAHwAAAAAAAB8AAAAAAQAfAAAAAAEAHwAAAAACAH4AAAAAAABdAAAAAAIAXQAAAAAAAF0AAAAAAQBdAAAAAAIAbAAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAAAAB8AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAADAH4AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAgAfAAAAAAMAHwAAAAAAAB8AAAAAAgAfAAAAAAIAfgAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAE0AAAAAAwBdAAAAAAAAXQAAAAACAF0AAAAAAwBsAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAEAHwAAAAACAB8AAAAAAQAfAAAAAAEAHwAAAAABAB8AAAAAAAAoAAAAAAEAKAAAAAABAB8AAAAAAQBNAAAAAAEAXQAAAAABAF0AAAAAAwBdAAAAAAEAbAAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAABAA== version: 7 2,-3: ind: 2,-3 - tiles: fgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAEAegAAAAABAHoAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHoAAAAAAwB6AAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAABAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAGQAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABNAAAAAAAATQAAAAACAH4AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAADAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAABNAAAAAAIATQAAAAADAE0AAAAAAQB+AAAAAAAAcAAAAAADAHAAAAAAAABwAAAAAAEAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHAAAAAAAAB5AAAAAAAAcAAAAAABAH4AAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAAAHwAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAADAB8AAAAAAgAfAAAAAAMAHwAAAAACAH4AAAAAAABwAAAAAAIAeQAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAABAA== + tiles: fgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAMAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAMAegAAAAABAHoAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHoAAAAAAwB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAHoAAAAAAQB6AAAAAAEAegAAAAABAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAACADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAGQAAAAAAQA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABNAAAAAAEATQAAAAACAH4AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAADAH4AAAAAAAB+AAAAAAAAHwAAAAACAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAABNAAAAAAAATQAAAAACAE0AAAAAAwB+AAAAAAAAcAAAAAACAHAAAAAAAABwAAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAABAB8AAAAAAgAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHAAAAAAAAB5AAAAAAMAcAAAAAADAH4AAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAEAHwAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAACAB8AAAAAAQAfAAAAAAEAHwAAAAACAH4AAAAAAABwAAAAAAEAeQAAAAACAHAAAAAAAwBwAAAAAAIAcAAAAAADAA== version: 7 2,-2: ind: 2,-2 - tiles: XQAAAAABAF0AAAAAAwBdAAAAAAMAHwAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAABAB8AAAAAAwAfAAAAAAAAHwAAAAAAAHAAAAAAAABwAAAAAAIAeQAAAAACAHAAAAAAAgB+AAAAAAAAcAAAAAAAAF0AAAAAAQBdAAAAAAMAXQAAAAACAB8AAAAAAAB+AAAAAAAAHwAAAAACAB8AAAAAAQAfAAAAAAAAHwAAAAADAB8AAAAAAQB+AAAAAAAAcAAAAAAAAHkAAAAAAwBwAAAAAAEAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAwAfAAAAAAAAXQAAAAACAB8AAAAAAQAfAAAAAAEAHwAAAAACAB8AAAAAAQAfAAAAAAAAfgAAAAAAAHAAAAAAAwB5AAAAAAMAcAAAAAABAH4AAAAAAAB1AAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAEAHwAAAAADAH4AAAAAAAAfAAAAAAAAHwAAAAADAB8AAAAAAgAfAAAAAAIAHwAAAAAAAH4AAAAAAABwAAAAAAAAeQAAAAADAHAAAAAAAwB+AAAAAAAAdQAAAAAAAF0AAAAAAABdAAAAAAIAXQAAAAACAB8AAAAAAQB+AAAAAAAAHwAAAAADAB8AAAAAAwAfAAAAAAMAHwAAAAAAAB8AAAAAAgBwAAAAAAEAcAAAAAABAHkAAAAAAwBwAAAAAAEAfgAAAAAAAHUAAAAAAgAfAAAAAAAAHwAAAAACAB8AAAAAAQAfAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAEAHwAAAAADAB8AAAAAAQAfAAAAAAAAfgAAAAAAAHAAAAAAAABwAAAAAAMAcAAAAAADAH4AAAAAAABwAAAAAAEAPAAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAACAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAcAAAAAADAH4AAAAAAAB+AAAAAAAAcAAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAADAF0AAAAAAwB+AAAAAAAAcAAAAAADAHAAAAAAAABwAAAAAAEAcAAAAAAAAHAAAAAAAAB+AAAAAAAAcAAAAAABAHAAAAAAAwBwAAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAMAcAAAAAAAAHAAAAAAAwB5AAAAAAIAeQAAAAABAHkAAAAAAwBwAAAAAAAAcAAAAAACAHAAAAAAAgB5AAAAAAIAcAAAAAABAH4AAAAAAAAoAAAAAAEAXQAAAAACAF0AAAAAAABdAAAAAAEAXQAAAAABAH4AAAAAAABwAAAAAAEAcAAAAAAAAHAAAAAAAwBwAAAAAAEAcAAAAAACAH4AAAAAAABwAAAAAAAAeQAAAAABAHAAAAAAAgB+AAAAAAAAHwAAAAADAH4AAAAAAABwAAAAAAAAcAAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAcAAAAAADAHkAAAAAAgBwAAAAAAEAcAAAAAACAB8AAAAAAwBwAAAAAAEAcAAAAAAAAHAAAAAAAwBwAAAAAAIAcAAAAAADAHAAAAAAAQBwAAAAAAEAcAAAAAAAAHAAAAAAAQBwAAAAAAIAfgAAAAAAAHAAAAAAAQB5AAAAAAIAcAAAAAADAH4AAAAAAABdAAAAAAMAcAAAAAAAAHkAAAAAAQB5AAAAAAMAeQAAAAABAHkAAAAAAQB5AAAAAAMAeQAAAAAAAHkAAAAAAQB5AAAAAAMAcAAAAAADAH4AAAAAAABwAAAAAAIAeQAAAAACAHAAAAAAAgB+AAAAAAAAfgAAAAAAAHAAAAAAAgB5AAAAAAEAcAAAAAABAHAAAAAAAgBwAAAAAAMAcAAAAAACAHAAAAAAAQBwAAAAAAEAeQAAAAACAHkAAAAAAwBwAAAAAAEAcAAAAAAAAHkAAAAAAABwAAAAAAMAcAAAAAABAHAAAAAAAQBwAAAAAAIAeQAAAAADAHkAAAAAAAB5AAAAAAMAeQAAAAACAHkAAAAAAAB5AAAAAAAAeQAAAAAAAHkAAAAAAwBwAAAAAAIAfgAAAAAAAHAAAAAAAQB5AAAAAAAAcAAAAAABAHAAAAAAAwBwAAAAAAIAcAAAAAADAHAAAAAAAQBwAAAAAAIAcAAAAAADAHAAAAAAAgBwAAAAAAMAcAAAAAABAHAAAAAAAABwAAAAAAIAcAAAAAACAH4AAAAAAABwAAAAAAIAcAAAAAABAHAAAAAAAgBwAAAAAAEAcAAAAAAAAA== + tiles: XQAAAAAAAF0AAAAAAABdAAAAAAEAHwAAAAACAH4AAAAAAAAfAAAAAAMAHwAAAAADAB8AAAAAAAAfAAAAAAAAHwAAAAADAHAAAAAAAgBwAAAAAAAAeQAAAAADAHAAAAAAAgB+AAAAAAAAcAAAAAADAF0AAAAAAwBdAAAAAAAAXQAAAAABAB8AAAAAAQB+AAAAAAAAHwAAAAACAB8AAAAAAAAfAAAAAAEAHwAAAAAAAB8AAAAAAAB+AAAAAAAAcAAAAAADAHkAAAAAAQBwAAAAAAIAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAQAfAAAAAAMAXQAAAAACAB8AAAAAAAAfAAAAAAIAHwAAAAADAB8AAAAAAgAfAAAAAAAAfgAAAAAAAHAAAAAAAQB5AAAAAAAAcAAAAAABAH4AAAAAAAB1AAAAAAIAXQAAAAADAF0AAAAAAgBdAAAAAAEAHwAAAAADAH4AAAAAAAAfAAAAAAIAHwAAAAABAB8AAAAAAwAfAAAAAAEAHwAAAAAAAH4AAAAAAABwAAAAAAEAeQAAAAAAAHAAAAAAAAB+AAAAAAAAdQAAAAADAF0AAAAAAwBdAAAAAAEAXQAAAAAAAB8AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAIAHwAAAAAAAB8AAAAAAABwAAAAAAMAcAAAAAAAAHkAAAAAAwBwAAAAAAAAfgAAAAAAAHUAAAAAAgAfAAAAAAIAHwAAAAADAB8AAAAAAAAfAAAAAAEAfgAAAAAAAB8AAAAAAQAfAAAAAAMAHwAAAAABAB8AAAAAAQAfAAAAAAIAfgAAAAAAAHAAAAAAAgBwAAAAAAIAcAAAAAABAH4AAAAAAABwAAAAAAIAPAAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAcAAAAAACAH4AAAAAAAB+AAAAAAAAcAAAAAACAF0AAAAAAQBdAAAAAAMAXQAAAAAAAF0AAAAAAAB+AAAAAAAAcAAAAAAAAHAAAAAAAwBwAAAAAAAAcAAAAAAAAHAAAAAAAgB+AAAAAAAAcAAAAAABAHAAAAAAAABwAAAAAAMAfgAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAACAF0AAAAAAQBdAAAAAAIAcAAAAAADAHAAAAAAAwB5AAAAAAAAeQAAAAABAHkAAAAAAgBwAAAAAAMAcAAAAAABAHAAAAAAAQB5AAAAAAIAcAAAAAACAH4AAAAAAAAoAAAAAAEAXQAAAAABAF0AAAAAAwBdAAAAAAMAXQAAAAACAH4AAAAAAABwAAAAAAIAcAAAAAACAHAAAAAAAQBwAAAAAAIAcAAAAAAAAH4AAAAAAABwAAAAAAEAeQAAAAABAHAAAAAAAwB+AAAAAAAAHwAAAAACAH4AAAAAAABwAAAAAAIAcAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAcAAAAAABAHkAAAAAAgBwAAAAAAAAcAAAAAABAB8AAAAAAABwAAAAAAMAcAAAAAAAAHAAAAAAAQBwAAAAAAEAcAAAAAAAAHAAAAAAAgBwAAAAAAIAcAAAAAABAHAAAAAAAgBwAAAAAAMAfgAAAAAAAHAAAAAAAAB5AAAAAAMAcAAAAAACAH4AAAAAAABdAAAAAAEAcAAAAAABAHkAAAAAAAB5AAAAAAEAeQAAAAABAHkAAAAAAwB5AAAAAAIAeQAAAAADAHkAAAAAAQB5AAAAAAEAcAAAAAACAH4AAAAAAABwAAAAAAMAeQAAAAACAHAAAAAAAAB+AAAAAAAAfgAAAAAAAHAAAAAAAQB5AAAAAAMAcAAAAAAAAHAAAAAAAwBwAAAAAAMAcAAAAAACAHAAAAAAAQBwAAAAAAIAeQAAAAABAHkAAAAAAABwAAAAAAAAcAAAAAADAHkAAAAAAgBwAAAAAAMAcAAAAAADAHAAAAAAAQBwAAAAAAMAeQAAAAAAAHkAAAAAAgB5AAAAAAIAeQAAAAADAHkAAAAAAQB5AAAAAAAAeQAAAAACAHkAAAAAAgBwAAAAAAIAfgAAAAAAAHAAAAAAAgB5AAAAAAIAcAAAAAAAAHAAAAAAAQBwAAAAAAMAcAAAAAACAHAAAAAAAwBwAAAAAAAAcAAAAAADAHAAAAAAAQBwAAAAAAEAcAAAAAACAHAAAAAAAABwAAAAAAMAcAAAAAAAAH4AAAAAAABwAAAAAAEAcAAAAAADAHAAAAAAAgBwAAAAAAEAcAAAAAADAA== version: 7 3,-3: ind: 3,-3 - tiles: fgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAABAHoAAAAAAAB6AAAAAAAAfgAAAAAAAHoAAAAAAgB+AAAAAAAAZAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAHoAAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAEAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABkAAAAAAAAZAAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB6AAAAAAIAfgAAAAAAAH4AAAAAAAB6AAAAAAEAegAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB+AAAAAAAAZAAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAegAAAAAAAH4AAAAAAAB6AAAAAAIAegAAAAADAHoAAAAAAwB+AAAAAAAAQAAAAAAAAEAAAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAF0AAAAAAABkAAAAAAAAfgAAAAAAAF0AAAAAAABkAAAAAAAAZAAAAAAAAGQAAAAAAABkAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAGQAAAAAAABkAAAAAAAAXQAAAAABAH4AAAAAAABdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAABkAAAAAAAAXQAAAAACAGQAAAAAAABkAAAAAAAAXQAAAAABAGQAAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAH4AAAAAAAB+AAAAAAAAZAAAAAAAAF0AAAAAAABkAAAAAAAAZAAAAAAAAH4AAAAAAABkAAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAAAAGQAAAAAAABkAAAAAAAAXQAAAAADAH4AAAAAAAB+AAAAAAAAZAAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAcAAAAAADAHAAAAAAAABwAAAAAAIAcAAAAAACAHAAAAAAAQB+AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAA== + tiles: fgAAAAAAAHoAAAAAAQB6AAAAAAEAegAAAAABAHoAAAAAAgB6AAAAAAEAfgAAAAAAAHoAAAAAAgB+AAAAAAAAZAAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAHoAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAEAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABkAAAAAAEAZAAAAAABAH4AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB6AAAAAAMAfgAAAAAAAH4AAAAAAAB6AAAAAAEAegAAAAABAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB+AAAAAAAAZAAAAAADAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAegAAAAADAH4AAAAAAAB6AAAAAAEAegAAAAADAHoAAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAQB+AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAF0AAAAAAwBkAAAAAAAAfgAAAAAAAF0AAAAAAgBkAAAAAAIAZAAAAAAAAGQAAAAAAABkAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAGQAAAAAAABkAAAAAAEAXQAAAAABAH4AAAAAAABdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAwBkAAAAAAAAXQAAAAADAGQAAAAAAQBkAAAAAAIAXQAAAAAAAGQAAAAAAgB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAH4AAAAAAAB+AAAAAAAAZAAAAAAAAF0AAAAAAwBkAAAAAAEAZAAAAAADAH4AAAAAAABkAAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAAAAGQAAAAAAQBkAAAAAAEAXQAAAAADAH4AAAAAAAB+AAAAAAAAZAAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAcAAAAAADAHAAAAAAAQBwAAAAAAEAcAAAAAADAHAAAAAAAgB+AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAA== version: 7 3,-2: ind: 3,-2 - tiles: cAAAAAADAH4AAAAAAABwAAAAAAMAeQAAAAACAHAAAAAAAgB+AAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAcAAAAAABAHkAAAAAAABwAAAAAAIAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAHoAAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB1AAAAAAAAdQAAAAADAHAAAAAAAQB5AAAAAAAAcAAAAAABAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAegAAAAABAH4AAAAAAAB9AAAAAAAAdQAAAAACAHUAAAAAAABwAAAAAAAAeQAAAAABAHAAAAAAAQB+AAAAAAAAfQAAAAAAAAAAAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAHUAAAAAAwB1AAAAAAAAcAAAAAABAHkAAAAAAQBwAAAAAAEAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAABwAAAAAAMAcAAAAAACAHAAAAAAAgB5AAAAAAEAcAAAAAACAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAMAfgAAAAAAAH4AAAAAAAB9AAAAAAAAcAAAAAAAAHAAAAAAAwBwAAAAAAIAcAAAAAAAAHAAAAAAAgB+AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAegAAAAAAAHoAAAAAAwB+AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAoAAAAAAMAKAAAAAABACgAAAAAAgAoAAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAKAAAAAABACgAAAAAAAAoAAAAAAAAKAAAAAADAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAACgAAAAAAAAoAAAAAAMAKAAAAAACACgAAAAAAgB+AAAAAAAAbAAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH0AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAABdAAAAAAIATQAAAAADAF0AAAAAAgBdAAAAAAIAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAHAAAAAAAwBwAAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB5AAAAAAMAcAAAAAADAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAcAAAAAACAHAAAAAAAQB+AAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAA== + tiles: cAAAAAACAH4AAAAAAABwAAAAAAAAeQAAAAADAHAAAAAAAQB+AAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAcAAAAAAAAHkAAAAAAwBwAAAAAAMAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAHoAAAAAAwB+AAAAAAAAfgAAAAAAAH0AAAAAAAB1AAAAAAEAdQAAAAACAHAAAAAAAwB5AAAAAAAAcAAAAAABAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAegAAAAAAAH4AAAAAAAB9AAAAAAAAdQAAAAABAHUAAAAAAQBwAAAAAAMAeQAAAAAAAHAAAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAHUAAAAAAAB1AAAAAAAAcAAAAAAAAHkAAAAAAQBwAAAAAAEAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAABwAAAAAAIAcAAAAAABAHAAAAAAAwB5AAAAAAMAcAAAAAADAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAcAAAAAADAHAAAAAAAgBwAAAAAAIAcAAAAAABAHAAAAAAAgB+AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAegAAAAAAAHoAAAAAAwB+AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAoAAAAAAEAKAAAAAAAACgAAAAAAwAoAAAAAAMAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAKAAAAAADACgAAAAAAQAoAAAAAAAAKAAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAACgAAAAAAwAoAAAAAAEAKAAAAAABACgAAAAAAgB+AAAAAAAAbAAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH0AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAABdAAAAAAAATQAAAAABAF0AAAAAAwBdAAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAHAAAAAAAABwAAAAAAEAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB5AAAAAAAAcAAAAAABAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAcAAAAAACAHAAAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAA== version: 7 2,-1: ind: 2,-1 - tiles: fgAAAAAAAHAAAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB5AAAAAAIAeQAAAAAAAHkAAAAAAgB+AAAAAAAAfgAAAAAAAHAAAAAAAgBwAAAAAAMAcAAAAAACAHAAAAAAAQBwAAAAAAAAfgAAAAAAAB8AAAAAAQAfAAAAAAMAHwAAAAACAB8AAAAAAgB+AAAAAAAAcAAAAAABAHAAAAAAAQBwAAAAAAMAfgAAAAAAAF0AAAAAAwBwAAAAAAMAcAAAAAAAAHAAAAAAAQBwAAAAAAAAcAAAAAAAAH4AAAAAAABSAAAAAAAAUgAAAAAAAFIAAAAAAAAfAAAAAAEAHwAAAAADAHAAAAAAAgB5AAAAAAMAcAAAAAACAH4AAAAAAABdAAAAAAAAcAAAAAABAHAAAAAAAwBwAAAAAAAAcAAAAAADAHAAAAAAAAB+AAAAAAAAUgAAAAAAAFIAAAAAAABSAAAAAAAAHwAAAAABAH4AAAAAAABwAAAAAAEAeQAAAAABAHAAAAAAAwB+AAAAAAAAXQAAAAAAAH4AAAAAAAAfAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAcAAAAAABAHkAAAAAAABwAAAAAAIAfgAAAAAAAF0AAAAAAwAfAAAAAAIAHwAAAAACAB8AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAAAHwAAAAABAB8AAAAAAwAfAAAAAAEAfgAAAAAAAHAAAAAAAQB5AAAAAAEAcAAAAAACAH4AAAAAAABwAAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAEAfgAAAAAAAB8AAAAAAQAfAAAAAAEAHwAAAAABAB8AAAAAAQAfAAAAAAMAHwAAAAABAB8AAAAAAQBwAAAAAAAAeQAAAAAAAHAAAAAAAQBwAAAAAAEAcAAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAAAAB8AAAAAAwAfAAAAAAAAHwAAAAACAB8AAAAAAQB+AAAAAAAAcAAAAAABAHAAAAAAAgBwAAAAAAIAfgAAAAAAAF0AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAACAB8AAAAAAwAfAAAAAAIAHwAAAAACAB8AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAbQAAAAAAAB8AAAAAAQAfAAAAAAEAHwAAAAACAB8AAAAAAQAfAAAAAAEAHwAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAACAB8AAAAAAQAfAAAAAAAAHwAAAAACAB8AAAAAAgB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAEAfgAAAAAAAB8AAAAAAgAfAAAAAAIAHwAAAAABAB8AAAAAAgAfAAAAAAMAHwAAAAADAB8AAAAAAQAfAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAQBdAAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAADAF0AAAAAAwBdAAAAAAMAXQAAAAAAAA== + tiles: fgAAAAAAAHAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB5AAAAAAAAeQAAAAABAHkAAAAAAwB+AAAAAAAAfgAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAABAHAAAAAAAgBwAAAAAAIAfgAAAAAAAB8AAAAAAQAfAAAAAAIAHwAAAAAAAB8AAAAAAgB+AAAAAAAAcAAAAAABAHAAAAAAAABwAAAAAAIAfgAAAAAAAF0AAAAAAQBwAAAAAAIAcAAAAAADAHAAAAAAAQBwAAAAAAIAcAAAAAADAH4AAAAAAABSAAAAAAAAUgAAAAAAAFIAAAAAAAAfAAAAAAMAHwAAAAACAHAAAAAAAgB5AAAAAAEAcAAAAAAAAH4AAAAAAABdAAAAAAAAcAAAAAABAHAAAAAAAgBwAAAAAAEAcAAAAAACAHAAAAAAAAB+AAAAAAAAUgAAAAAAAFIAAAAAAABSAAAAAAAAHwAAAAAAAH4AAAAAAABwAAAAAAAAeQAAAAACAHAAAAAAAAB+AAAAAAAAXQAAAAADAH4AAAAAAAAfAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAcAAAAAAAAHkAAAAAAwBwAAAAAAIAfgAAAAAAAF0AAAAAAgAfAAAAAAIAHwAAAAAAAB8AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAIAHwAAAAACAB8AAAAAAgAfAAAAAAEAfgAAAAAAAHAAAAAAAgB5AAAAAAIAcAAAAAACAH4AAAAAAABwAAAAAAIAHwAAAAADAB8AAAAAAAAfAAAAAAMAfgAAAAAAAB8AAAAAAQAfAAAAAAEAHwAAAAABAB8AAAAAAAAfAAAAAAMAHwAAAAAAAB8AAAAAAQBwAAAAAAEAeQAAAAABAHAAAAAAAABwAAAAAAMAcAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAACAB8AAAAAAwAfAAAAAAAAHwAAAAADAB8AAAAAAwB+AAAAAAAAcAAAAAABAHAAAAAAAABwAAAAAAIAfgAAAAAAAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAMAHwAAAAADAB8AAAAAAAAfAAAAAAMAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAbQAAAAAAAB8AAAAAAAAfAAAAAAIAHwAAAAABAB8AAAAAAwAfAAAAAAAAHwAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAABAB8AAAAAAwAfAAAAAAIAHwAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAQBdAAAAAAMAfgAAAAAAAB8AAAAAAwAfAAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAMAHwAAAAADAB8AAAAAAAAfAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAQBdAAAAAAIAXQAAAAADAF0AAAAAAwBdAAAAAAIAXQAAAAABAF0AAAAAAgBdAAAAAAEAXQAAAAABAF0AAAAAAwBdAAAAAAMAXQAAAAABAA== version: 7 3,-1: ind: 3,-1 - tiles: cAAAAAACAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAABkAAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAHAAAAAAAgBwAAAAAAEAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAABwAAAAAAAAcAAAAAADAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAcAAAAAADAHAAAAAAAwB+AAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAHAAAAAAAQBwAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAABwAAAAAAMAcAAAAAACAF0AAAAAAQB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAcAAAAAABAHAAAAAAAABdAAAAAAIAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAABAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAABkAAAAAAAAZAAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAAAAGQAAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABkAAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABkAAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAIAHwAAAAAAAB8AAAAAAQAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAIAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: cAAAAAABAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAABkAAAAAAIAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAHAAAAAAAwBwAAAAAAIAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAACAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAABwAAAAAAMAcAAAAAABAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAACAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAcAAAAAACAHAAAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAHAAAAAAAgBwAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAABwAAAAAAIAcAAAAAACAF0AAAAAAQB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAcAAAAAACAHAAAAAAAgBdAAAAAAMAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAACAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAABkAAAAAAAAZAAAAAABAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAAAAGQAAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABkAAAAAAIAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABkAAAAAAMAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAMAHwAAAAACAB8AAAAAAgAfAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAAF0AAAAAAQBdAAAAAAIAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 1,-4: ind: 1,-4 @@ -211,11 +213,11 @@ entities: version: 7 -4,-1: ind: -4,-1 - tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAwAfAAAAAAAAHwAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbgAAAAADAG4AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAG4AAAAAAQB+AAAAAAAAbgAAAAACAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAHwAAAAADAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAwAfAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAACAB8AAAAAAAAfAAAAAAIAHwAAAAABAH4AAAAAAAAfAAAAAAEALwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAQAfAAAAAAAAHwAAAAACAB8AAAAAAQB+AAAAAAAAHwAAAAAAAB8AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAACAB8AAAAAAQAfAAAAAAIAfgAAAAAAAB8AAAAAAAAvAAAAAAIAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAMAHwAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAMAHwAAAAADAB8AAAAAAgAfAAAAAAIAHwAAAAADAB8AAAAAAwB+AAAAAAAAHwAAAAAAAC8AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAADAB8AAAAAAwAfAAAAAAMAHwAAAAACAB8AAAAAAAAfAAAAAAEAfgAAAAAAAB8AAAAAAwAfAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAHwAAAAACAB8AAAAAAwAfAAAAAAIAHwAAAAACAB8AAAAAAwAfAAAAAAAAHwAAAAABAH4AAAAAAAAfAAAAAAIALwAAAAAAAA== + tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAIAHwAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbgAAAAABAG4AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAG4AAAAAAwB+AAAAAAAAbgAAAAADAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAwAfAAAAAAEAHwAAAAABAH4AAAAAAAAfAAAAAAEALwAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAgAfAAAAAAIAHwAAAAACAB8AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAADAB8AAAAAAgAfAAAAAAIAfgAAAAAAAB8AAAAAAwAvAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAAAHwAAAAACAH4AAAAAAAAfAAAAAAMAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAEAHwAAAAABAB8AAAAAAAB+AAAAAAAAHwAAAAABAC8AAAAAAQBsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAAfAAAAAAMAHwAAAAAAAB8AAAAAAAAfAAAAAAIAHwAAAAACAB8AAAAAAwAfAAAAAAMAfgAAAAAAAB8AAAAAAgAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAHwAAAAADAB8AAAAAAQAfAAAAAAEAHwAAAAADAB8AAAAAAAAfAAAAAAEAHwAAAAAAAH4AAAAAAAAfAAAAAAMALwAAAAADAA== version: 7 -4,-2: ind: -4,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABkAAAAAAAAfgAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAZAAAAAAAAGQAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAZAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgB+AAAAAAAAfgAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAAAAF0AAAAAAgB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABkAAAAAAEAfgAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAZAAAAAAAAGQAAAAAAgB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAZAAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQB+AAAAAAAAfgAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAQB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAIAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAA== version: 7 -6,-1: ind: -6,-1 @@ -227,23 +229,23 @@ entities: version: 7 -4,0: ind: -4,0 - tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAACAH4AAAAAAAAfAAAAAAMAfgAAAAAAAH4AAAAAAAAfAAAAAAMAfgAAAAAAAH4AAAAAAAAfAAAAAAMAHwAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAMAHwAAAAACAB8AAAAAAQB+AAAAAAAAHwAAAAADAH4AAAAAAAAfAAAAAAIAHwAAAAAAAB8AAAAAAgB+AAAAAAAAHwAAAAAAAB8AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAAAfAAAAAAIAfgAAAAAAAB8AAAAAAQAfAAAAAAIAHwAAAAADAB8AAAAAAwAfAAAAAAMAHwAAAAAAAB8AAAAAAgAfAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABtAAAAAAAAbAAAAAAAAH4AAAAAAAAfAAAAAAEALwAAAAAAAB8AAAAAAwAvAAAAAAIAHwAAAAACAC8AAAAAAAAfAAAAAAAALwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAbQAAAAAAAG0AAAAAAAB+AAAAAAAAHwAAAAACAB8AAAAAAQAfAAAAAAEAHwAAAAAAAB8AAAAAAgAfAAAAAAIAHwAAAAADAB8AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAG0AAAAAAABsAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAACAB8AAAAAAwB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABNAAAAAAIATQAAAAABAF0AAAAAAwB+AAAAAAAAfgAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAADAF0AAAAAAwBdAAAAAAMAfgAAAAAAADgAAAAAAAAfAAAAAAEAEQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAcAAAAAABAHAAAAAAAABwAAAAAAIAcAAAAAABAH4AAAAAAAA4AAAAAAAAHwAAAAAAABEAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHAAAAAAAgBwAAAAAAIAcAAAAAABAHAAAAAAAgB+AAAAAAAAOAAAAAAAAB8AAAAAAwARAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAIAfgAAAAAAAH4AAAAAAABdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAADAB8AAAAAAgAfAAAAAAMAHwAAAAAAAB8AAAAAAAAfAAAAAAIAHwAAAAADAB8AAAAAAQAfAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAMAHwAAAAABAB8AAAAAAQAoAAAAAAAAHwAAAAACAH4AAAAAAAB+AAAAAAAAbQAAAAAAAF0AAAAAAQB+AAAAAAAAfgAAAAAAAG0AAAAAAAAfAAAAAAIAHwAAAAABAB8AAAAAAAAfAAAAAAMAHwAAAAAAAB8AAAAAAwAoAAAAAAAAKAAAAAAAACgAAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAADAB8AAAAAAAAfAAAAAAMAHwAAAAACAB8AAAAAAgAfAAAAAAMAHwAAAAACAB8AAAAAAAAfAAAAAAMAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAACgAAAAAAQB+AAAAAAAAfgAAAAAAAA== + tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAADAH4AAAAAAAAfAAAAAAEAfgAAAAAAAH4AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAMAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAMAHwAAAAABAB8AAAAAAgB+AAAAAAAAHwAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAADAB8AAAAAAwB+AAAAAAAAHwAAAAADAB8AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAADAB8AAAAAAQAfAAAAAAMAfgAAAAAAAB8AAAAAAwAfAAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAMAHwAAAAABAB8AAAAAAgAfAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABtAAAAAAAAbAAAAAAAAH4AAAAAAAAfAAAAAAAALwAAAAAAAB8AAAAAAgAvAAAAAAIAHwAAAAACAC8AAAAAAAAfAAAAAAEALwAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAbQAAAAAAAG0AAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAMAHwAAAAADAB8AAAAAAQAfAAAAAAEAHwAAAAABAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAG0AAAAAAABsAAAAAAAAfgAAAAAAAB8AAAAAAwAfAAAAAAEAfgAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAAAAB8AAAAAAgB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABNAAAAAAAATQAAAAADAF0AAAAAAQB+AAAAAAAAfgAAAAAAAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAAAAF0AAAAAAwBdAAAAAAMAfgAAAAAAADgAAAAAAAAfAAAAAAAAEQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAcAAAAAAAAHAAAAAAAgBwAAAAAAIAcAAAAAACAH4AAAAAAAA4AAAAAAAAHwAAAAADABEAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHAAAAAAAwBwAAAAAAMAcAAAAAADAHAAAAAAAAB+AAAAAAAAOAAAAAAAAB8AAAAAAAARAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAIAfgAAAAAAAH4AAAAAAABdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAMAHwAAAAAAAB8AAAAAAgAfAAAAAAMAHwAAAAADAB8AAAAAAQAfAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAwAfAAAAAAMAHwAAAAABAB8AAAAAAQAfAAAAAAMAHwAAAAADAB8AAAAAAQAoAAAAAAMAHwAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAF0AAAAAAgB+AAAAAAAAfgAAAAAAAG0AAAAAAAAfAAAAAAMAHwAAAAAAAB8AAAAAAwAfAAAAAAAAHwAAAAADAB8AAAAAAQAoAAAAAAMAKAAAAAACACgAAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAwAfAAAAAAIAHwAAAAABAB8AAAAAAwAfAAAAAAMAHwAAAAACAB8AAAAAAgAfAAAAAAIAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAACgAAAAAAQB+AAAAAAAAfgAAAAAAAA== version: 7 -4,-3: ind: -4,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAGQAAAAAAABkAAAAAAAAfgAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABkAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAABkAAAAAAAAfgAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAGQAAAAAAABkAAAAAAAAfgAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABkAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAQBkAAAAAAIAfgAAAAAAAA== version: 7 0,-4: ind: 0,-4 - tiles: XQAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAABAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAgBdAAAAAAIAbQAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAIAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAABdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAIAXQAAAAADAF0AAAAAAABdAAAAAAIAbQAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAADAF0AAAAAAABdAAAAAAEAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAAAAF0AAAAAAgB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAABdAAAAAAEAXQAAAAADAF0AAAAAAQBdAAAAAAEAXQAAAAABAF0AAAAAAQBdAAAAAAIAXQAAAAACAF0AAAAAAQBdAAAAAAEAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAIAXQAAAAACAF0AAAAAAQBdAAAAAAMAXQAAAAADAF0AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAABdAAAAAAAAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAEAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAADAF0AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAA== + tiles: XQAAAAADAF0AAAAAAwBdAAAAAAIAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAABAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAgBdAAAAAAMAbQAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAwBdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAQBdAAAAAAMAbQAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAAF0AAAAAAwBdAAAAAAMAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAABAF0AAAAAAQB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAABdAAAAAAEAXQAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAIAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAMAXQAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAADAF0AAAAAAQBdAAAAAAIAXQAAAAABAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAMAXQAAAAAAAF0AAAAAAgBdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAABdAAAAAAAAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAXQAAAAADAF0AAAAAAgBdAAAAAAIAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAIAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAABdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAA== version: 7 -1,-4: ind: -1,-4 - tiles: fQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAMAXQAAAAADAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAADAF0AAAAAAgB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAIAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAIAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAADAF0AAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAgBdAAAAAAEAXQAAAAACAF0AAAAAAgBdAAAAAAIAXQAAAAABAF0AAAAAAQBdAAAAAAEAXQAAAAABAF0AAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAgBdAAAAAAAAXQAAAAADAF0AAAAAAgBdAAAAAAIAXQAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAIAXQAAAAABAF0AAAAAAwBdAAAAAAMAXQAAAAAAAF0AAAAAAQBdAAAAAAIAXQAAAAACAF0AAAAAAwBdAAAAAAEAXQAAAAABAF0AAAAAAQBdAAAAAAMAXQAAAAABAF0AAAAAAgBdAAAAAAIAXQAAAAABAF0AAAAAAwBdAAAAAAEAXQAAAAACAF0AAAAAAwB+AAAAAAAAJAAAAAAAAB8AAAAAAgAfAAAAAAAAHwAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAfgAAAAAAAHoAAAAAAgB6AAAAAAEAegAAAAADAHoAAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAAAAH4AAAAAAAB6AAAAAAMAegAAAAADAHoAAAAAAgB6AAAAAAMAfgAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAACAA== + tiles: fQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAMAXQAAAAADAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAwB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAIAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAABAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAIAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAwBdAAAAAAEAXQAAAAABAF0AAAAAAQBdAAAAAAEAXQAAAAABAF0AAAAAAABdAAAAAAEAXQAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAACAF0AAAAAAQBdAAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAMAXQAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAMAXQAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAACAF0AAAAAAgBdAAAAAAMAXQAAAAABAF0AAAAAAwBdAAAAAAAAXQAAAAADAF0AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAQBdAAAAAAIAXQAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAACAF0AAAAAAQBdAAAAAAEAXQAAAAACAF0AAAAAAAB+AAAAAAAAJAAAAAABAB8AAAAAAwAfAAAAAAAAHwAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAfgAAAAAAAHoAAAAAAQB6AAAAAAMAegAAAAACAHoAAAAAAwB+AAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAACAH4AAAAAAAB6AAAAAAMAegAAAAABAHoAAAAAAwB6AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAIAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAACAA== version: 7 -2,-4: ind: -2,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAwBdAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAABAF0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAwBdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAMAXQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAADAF0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAA== version: 7 -1,-6: ind: -1,-6 @@ -251,23 +253,23 @@ entities: version: 7 0,-5: ind: 0,-5 - tiles: fgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAADAF0AAAAAAgB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAADAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAMAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAAAXQAAAAADAH4AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAACAF0AAAAAAgB+AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAIAXQAAAAAAAF0AAAAAAwBdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAEAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAgAMAAAAAAAAXQAAAAADAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAMADAAAAAACAF0AAAAAAQBdAAAAAAAAXQAAAAACAAcAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAgBdAAAAAAAAXQAAAAABAF0AAAAAAAAHAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAgAMAAAAAAIAXQAAAAADAF0AAAAAAQBdAAAAAAEABwAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAIADAAAAAACAF0AAAAAAQBdAAAAAAAAXQAAAAACAAcAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAACAAwAAAAAAABdAAAAAAEAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: fgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAADAF0AAAAAAwB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAEAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAEAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAACAF0AAAAAAwBdAAAAAAEAXQAAAAABAH4AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAABdAAAAAAIAXQAAAAADAF0AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAABdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAAXQAAAAACAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAACAA8AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAABdAAAAAAEAXQAAAAABAF0AAAAAAgAPAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAAXQAAAAACAF0AAAAAAQBdAAAAAAAADwAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAABAA8AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAABdAAAAAAIAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -3,-3: ind: -3,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB6AAAAAAMAegAAAAADAH4AAAAAAAB+AAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAIAfgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAAB+AAAAAAAAfgAAAAAAAHoAAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAABkAAAAAAAAZAAAAAAAAGQAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB6AAAAAAIAegAAAAADAH4AAAAAAAB+AAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAIAfgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAgB+AAAAAAAAfgAAAAAAAHoAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAgBkAAAAAAEAZAAAAAABAGQAAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAA== version: 7 -1,1: ind: -1,1 - tiles: XQAAAAACAF0AAAAAAAAfAAAAAAAAegAAAAABAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAegAAAAACAH4AAAAAAAAfAAAAAAMAHwAAAAADAB8AAAAAAQB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAEAfgAAAAAAAHoAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAHoAAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAABAH4AAAAAAAB6AAAAAAMAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB6AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAABAF0AAAAAAwBdAAAAAAAAXQAAAAACAF0AAAAAAAB+AAAAAAAAegAAAAABAHoAAAAAAwBAAAAAAAAAQAAAAAAAAEAAAAAAAAB6AAAAAAMAegAAAAACAH4AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAABdAAAAAAMAXQAAAAACAF0AAAAAAQBdAAAAAAMAfgAAAAAAAHoAAAAAAgB6AAAAAAEAegAAAAADAHoAAAAAAgAfAAAAAAIAHwAAAAAAAB8AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAgBdAAAAAAEAXQAAAAAAAH4AAAAAAAB6AAAAAAIAegAAAAACAHoAAAAAAAB6AAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAEAfgAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAAAAF0AAAAAAwBdAAAAAAIATQAAAAABAE0AAAAAAwB+AAAAAAAAegAAAAACAHoAAAAAAgB6AAAAAAMAegAAAAADAB8AAAAAAwAfAAAAAAIAHwAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAKAAAAAABAH4AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAwBdAAAAAAEAHwAAAAAAAH4AAAAAAABOAAAAAAIAXQAAAAAAAG0AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAMAXQAAAAAAAF0AAAAAAwB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAAAfAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAMAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAADAH4AAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAQBdAAAAAAIAXQAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAADAF0AAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAgBdAAAAAAIAXQAAAAADAF0AAAAAAQBdAAAAAAAAXQAAAAADAF0AAAAAAgBdAAAAAAIAXQAAAAADAF0AAAAAAgBdAAAAAAEAXQAAAAACAF0AAAAAAgBdAAAAAAEAXQAAAAABAF0AAAAAAQBdAAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAEAfgAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAAAAB8AAAAAAQAfAAAAAAEAHwAAAAADAB8AAAAAAwAfAAAAAAEAHwAAAAACAB8AAAAAAAAfAAAAAAIAHwAAAAAAAB8AAAAAAwBdAAAAAAAAXQAAAAACAH4AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAQBdAAAAAAAAfgAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAH4AAAAAAAAfAAAAAAIAXQAAAAACAA== + tiles: XQAAAAACAF0AAAAAAAAfAAAAAAIAegAAAAADAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAegAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAADAB8AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAEAfgAAAAAAAHoAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAHoAAAAAAwB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAABdAAAAAAAAXQAAAAADAH4AAAAAAAB6AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB6AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAADAF0AAAAAAABdAAAAAAIAXQAAAAAAAF0AAAAAAwB+AAAAAAAAegAAAAADAHoAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB6AAAAAAAAegAAAAACAH4AAAAAAABdAAAAAAMAXQAAAAADAF0AAAAAAQBdAAAAAAIAXQAAAAADAF0AAAAAAABdAAAAAAIAfgAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAACAHoAAAAAAAAfAAAAAAEAHwAAAAADAB8AAAAAAwB+AAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAH4AAAAAAAB6AAAAAAEAegAAAAACAHoAAAAAAAB6AAAAAAEAHwAAAAADAB8AAAAAAQAfAAAAAAEAfgAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAEATQAAAAAAAE0AAAAAAQB+AAAAAAAAegAAAAACAHoAAAAAAQB6AAAAAAAAegAAAAABAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAKAAAAAACAH4AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAwBdAAAAAAEAHwAAAAACAH4AAAAAAABOAAAAAAAAXQAAAAAAAG0AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAAAAF0AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAMAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAABAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAEAXQAAAAADAF0AAAAAAgBdAAAAAAIAXQAAAAABAF0AAAAAAwBdAAAAAAEAXQAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAACAF0AAAAAAwBdAAAAAAIAXQAAAAADAF0AAAAAAQBdAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAMAfgAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAAAAB8AAAAAAgAfAAAAAAAAHwAAAAABAB8AAAAAAwAfAAAAAAIAHwAAAAAAAB8AAAAAAQAfAAAAAAEAHwAAAAACAB8AAAAAAwBdAAAAAAMAXQAAAAABAH4AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAQBdAAAAAAAAfgAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAH4AAAAAAAAfAAAAAAEAXQAAAAABAA== version: 7 3,0: ind: 3,0 - tiles: XQAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAADAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAQBdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAADAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAEAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAADAF0AAAAAAQBdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAABAF0AAAAAAwBdAAAAAAAAXQAAAAACAF0AAAAAAQBdAAAAAAEAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAABAF0AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAABdAAAAAAMAXQAAAAACAF0AAAAAAwBdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAwBdAAAAAAMAXQAAAAADAF0AAAAAAgBdAAAAAAEAXQAAAAADAF0AAAAAAwBdAAAAAAEAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAIAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAEAXQAAAAABAF0AAAAAAwBdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAADAF0AAAAAAgBdAAAAAAMAXQAAAAACAF0AAAAAAgBdAAAAAAEAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAEAXQAAAAADAF0AAAAAAwBdAAAAAAEAXQAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAACAF0AAAAAAQBdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: XQAAAAADAF0AAAAAAABdAAAAAAEAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAADAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAgBdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAABAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAIAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAEAXQAAAAABAF0AAAAAAABdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAADAF0AAAAAAwBdAAAAAAEAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAABdAAAAAAEAXQAAAAABAF0AAAAAAgBdAAAAAAIAXQAAAAACAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAADAF0AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAADAF0AAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAwBdAAAAAAIAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAAAAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAEAXQAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAQBdAAAAAAEAXQAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAAAXQAAAAACAF0AAAAAAQBdAAAAAAMAXQAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAADAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAgBdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 0,1: ind: 0,1 - tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAIAXQAAAAADAF0AAAAAAwB+AAAAAAAAHwAAAAABAB8AAAAAAAAfAAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAADAF0AAAAAAgBdAAAAAAEAXQAAAAAAAF0AAAAAAgBdAAAAAAMAfgAAAAAAAB8AAAAAAAAfAAAAAAEAHwAAAAABAH4AAAAAAAB6AAAAAAMAegAAAAACAH4AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAIAXQAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAABAB8AAAAAAAAfAAAAAAIAHwAAAAACAB8AAAAAAgAfAAAAAAMAegAAAAACAHoAAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAMAXQAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAAAfgAAAAAAAB8AAAAAAwAfAAAAAAMAfgAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAADAF0AAAAAAgBdAAAAAAEAXQAAAAAAAF0AAAAAAQBdAAAAAAEAfgAAAAAAAB8AAAAAAQAfAAAAAAIAHwAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAATQAAAAACAH4AAAAAAAB+AAAAAAAAHwAAAAABAH4AAAAAAAAfAAAAAAAAHwAAAAABAB8AAAAAAgAfAAAAAAMAHwAAAAADAB8AAAAAAgAfAAAAAAIAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAwAfAAAAAAAAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAADAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAfgAAAAAAAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAQB+AAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAMAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAE0AAAAAAABdAAAAAAAAXQAAAAAAAB8AAAAAAwB+AAAAAAAAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAACAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAwAfAAAAAAIAfgAAAAAAAB8AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAAAAB8AAAAAAQAfAAAAAAIAHwAAAAAAAH4AAAAAAAAfAAAAAAMAHwAAAAABAB8AAAAAAwAfAAAAAAEAHwAAAAAAAB8AAAAAAwAfAAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAgAfAAAAAAMAfgAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAA== + tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAIAXQAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAADAF0AAAAAAwB+AAAAAAAAHwAAAAABAB8AAAAAAAAfAAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAIAfgAAAAAAAF0AAAAAAABdAAAAAAIAXQAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAADAF0AAAAAAwBdAAAAAAEAfgAAAAAAAB8AAAAAAgAfAAAAAAIAHwAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAADAH4AAAAAAABdAAAAAAEAXQAAAAADAF0AAAAAAwBdAAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAEAXQAAAAADAB8AAAAAAgAfAAAAAAMAHwAAAAACAB8AAAAAAAAfAAAAAAIAegAAAAABAHoAAAAAAQB+AAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAMAXQAAAAACAF0AAAAAAABdAAAAAAEAXQAAAAAAAF0AAAAAAAB+AAAAAAAAHwAAAAADAB8AAAAAAAAfAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAABAF0AAAAAAQBdAAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAAAfgAAAAAAAB8AAAAAAQAfAAAAAAEAHwAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAATQAAAAABAH4AAAAAAAB+AAAAAAAAHwAAAAACAH4AAAAAAAAfAAAAAAMAHwAAAAADAB8AAAAAAQAfAAAAAAIAHwAAAAACAB8AAAAAAQAfAAAAAAMAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAADAF0AAAAAAQAfAAAAAAEAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAADAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAEAfgAAAAAAAH4AAAAAAAAfAAAAAAIAfgAAAAAAAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAwB+AAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAEAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAE0AAAAAAABdAAAAAAMAXQAAAAACAB8AAAAAAwB+AAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAACAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAADAF0AAAAAAQAfAAAAAAIAfgAAAAAAAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAwB+AAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAABAB8AAAAAAAAfAAAAAAEAHwAAAAACAH4AAAAAAAAfAAAAAAMAHwAAAAABAB8AAAAAAwAfAAAAAAMAHwAAAAAAAB8AAAAAAgAfAAAAAAEAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAwAfAAAAAAMAfgAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAA== version: 7 0,-6: ind: 0,-6 @@ -275,15 +277,15 @@ entities: version: 7 -1,-5: ind: -1,-5 - tiles: fQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAMAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAADAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAgB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAABAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAIAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAABAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAAAAAwAAAAAAgB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAcAAAAACwBdAAAAAAEAXQAAAAACAF0AAAAAAgAMAAAAAAEAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAAHAAAAAAQAXQAAAAAAAF0AAAAAAABdAAAAAAEADAAAAAABAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAABwAAAAABAF0AAAAAAABdAAAAAAMAXQAAAAADAAwAAAAAAQB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAcAAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAwAMAAAAAAIAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAIADAAAAAABAA== + tiles: fQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAEAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAABAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAADAF0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAADAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAADAA0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAA8AAAAAAABdAAAAAAAAXQAAAAACAF0AAAAAAQANAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAAPAAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAIADQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAADwAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAACAA0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAA8AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAQANAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAMADQAAAAAAAA== version: 7 1,1: ind: 1,1 - tiles: XQAAAAACAF0AAAAAAwB+AAAAAAAATQAAAAADAE0AAAAAAAB+AAAAAAAAfgAAAAAAACgAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAMAfgAAAAAAAB8AAAAAAQAfAAAAAAMAHwAAAAABAB8AAAAAAQAfAAAAAAMAHwAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAADAB8AAAAAAQAfAAAAAAIAHwAAAAAAAB8AAAAAAwAfAAAAAAMAHwAAAAACAB8AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAXQAAAAABAF0AAAAAAgB+AAAAAAAAHwAAAAABAB8AAAAAAwAfAAAAAAIAHwAAAAAAAB8AAAAAAwAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAAAfgAAAAAAAB8AAAAAAQAfAAAAAAAAHwAAAAAAAB8AAAAAAQAfAAAAAAAAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAACAH4AAAAAAAAfAAAAAAIAHwAAAAACAB8AAAAAAAAfAAAAAAIAHwAAAAAAAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAATQAAAAADAE0AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAMAXQAAAAABAF0AAAAAAABdAAAAAAAAXQAAAAACAF0AAAAAAQBdAAAAAAIAXQAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAABAF0AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAAAAF0AAAAAAABdAAAAAAIAXQAAAAADAF0AAAAAAgBdAAAAAAIAXQAAAAADAF0AAAAAAABdAAAAAAEAXQAAAAABAF0AAAAAAwBdAAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAACAF0AAAAAAwBdAAAAAAEAXQAAAAABAF0AAAAAAwBdAAAAAAAAXQAAAAACAF0AAAAAAwBdAAAAAAEAXQAAAAABAE0AAAAAAgBNAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAADAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAXQAAAAACAF0AAAAAAQB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAA== + tiles: XQAAAAAAAF0AAAAAAAB+AAAAAAAATQAAAAABAE0AAAAAAAB+AAAAAAAAfgAAAAAAACgAAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAMAfgAAAAAAAB8AAAAAAQAfAAAAAAEAHwAAAAABAB8AAAAAAgAfAAAAAAMAHwAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAAAAB8AAAAAAgAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAIAHwAAAAABAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAXQAAAAACAF0AAAAAAgB+AAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAIAHwAAAAAAAB8AAAAAAAAfAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAEAfgAAAAAAAB8AAAAAAwAfAAAAAAEAHwAAAAADAB8AAAAAAwAfAAAAAAEAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAACAH4AAAAAAAAfAAAAAAIAHwAAAAADAB8AAAAAAQAfAAAAAAIAHwAAAAAAAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAATQAAAAACAE0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAABAF0AAAAAAABdAAAAAAEAXQAAAAABAF0AAAAAAQBdAAAAAAEAXQAAAAACAF0AAAAAAwBdAAAAAAMAXQAAAAADAF0AAAAAAQBdAAAAAAEAXQAAAAABAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAEAXQAAAAABAF0AAAAAAQBdAAAAAAIAXQAAAAACAF0AAAAAAgBdAAAAAAIAXQAAAAABAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAAAAF0AAAAAAABdAAAAAAIAXQAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAIAXQAAAAACAF0AAAAAAgBdAAAAAAIAXQAAAAADAE0AAAAAAABNAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAACAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAXQAAAAAAAF0AAAAAAwB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAA== version: 7 2,1: ind: 2,1 - tiles: fgAAAAAAAH4AAAAAAAAmAAAAAAIAJgAAAAAAACYAAAAAAAAmAAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAADAH4AAAAAAAB6AAAAAAEAegAAAAABAHoAAAAAAAB+AAAAAAAAXQAAAAACAGwAAAAAAAB+AAAAAAAAJgAAAAAAAC8AAAAAAQAvAAAAAAEALwAAAAADAH4AAAAAAABdAAAAAAAAXQAAAAADAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQB+AAAAAAAAfgAAAAAAACYAAAAAAAAvAAAAAAMALwAAAAADAC8AAAAAAQB+AAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAIAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAEAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAIAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAEAXQAAAAADAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAACAF0AAAAAAwBdAAAAAAIAXQAAAAABAF0AAAAAAQBdAAAAAAAAXQAAAAADAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAAAAH4AAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAAAXQAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAAAAE0AAAAAAQBdAAAAAAIAXQAAAAACAF0AAAAAAwBdAAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAMAXQAAAAADAF0AAAAAAwBdAAAAAAAAXQAAAAAAAF0AAAAAAQBNAAAAAAMAXQAAAAADAF0AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAACAF0AAAAAAwBdAAAAAAEAXQAAAAADAF0AAAAAAQBdAAAAAAIATQAAAAADAF0AAAAAAwBdAAAAAAMAXQAAAAABAF0AAAAAAQBdAAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAEAXQAAAAABAH4AAAAAAABdAAAAAAIAXQAAAAADAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAMAfgAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAACAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAEAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAIAXQAAAAADAF0AAAAAAQBdAAAAAAMAXQAAAAADAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAAAXQAAAAABAF0AAAAAAgB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: fgAAAAAAAH4AAAAAAAAmAAAAAAIAJgAAAAAAACYAAAAAAAAmAAAAAAEAfgAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAACAH4AAAAAAAB6AAAAAAEAegAAAAADAHoAAAAAAwB+AAAAAAAAXQAAAAACAGwAAAAAAAB+AAAAAAAAJgAAAAACAC8AAAAAAQAvAAAAAAAALwAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAACAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgB+AAAAAAAAfgAAAAAAACYAAAAAAwAvAAAAAAEALwAAAAACAC8AAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAEAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAIAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAMAXQAAAAADAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAACAF0AAAAAAQBdAAAAAAMAXQAAAAADAF0AAAAAAgBdAAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAAAXQAAAAABAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAMAXQAAAAACAH4AAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAgBdAAAAAAMAXQAAAAADAF0AAAAAAQBdAAAAAAEAXQAAAAAAAE0AAAAAAgBdAAAAAAEAXQAAAAACAF0AAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAQBdAAAAAAEAXQAAAAACAF0AAAAAAQBdAAAAAAMAXQAAAAADAF0AAAAAAQBdAAAAAAEAXQAAAAAAAF0AAAAAAgBNAAAAAAEAXQAAAAAAAF0AAAAAAQBdAAAAAAMAXQAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAAAAF0AAAAAAQBdAAAAAAMAXQAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAAATQAAAAABAF0AAAAAAwBdAAAAAAMAXQAAAAABAF0AAAAAAgBdAAAAAAEAXQAAAAAAAF0AAAAAAQBdAAAAAAMAXQAAAAADAH4AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAwBdAAAAAAIAfgAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAIAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAADAF0AAAAAAABdAAAAAAEAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAMAXQAAAAADAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAADAF0AAAAAAABdAAAAAAAAXQAAAAACAF0AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 4,-2: ind: 4,-2 @@ -299,27 +301,27 @@ entities: version: 7 2,0: ind: 2,0 - tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAQBdAAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAMAXQAAAAACAF0AAAAAAwBdAAAAAAAAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAIAXQAAAAABAF0AAAAAAgB+AAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAACAF0AAAAAAQBdAAAAAAMAXQAAAAABAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAQBdAAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAABAF0AAAAAAQBdAAAAAAMAXQAAAAABAF0AAAAAAQBdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAAAAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAACAF0AAAAAAQBdAAAAAAEAXQAAAAABAF0AAAAAAgBdAAAAAAMAfgAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAABAF0AAAAAAwBdAAAAAAMAXQAAAAABAF0AAAAAAwBdAAAAAAIAfgAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAABAF0AAAAAAgBdAAAAAAIAXQAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAABAF0AAAAAAQBdAAAAAAEAXQAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAACAF0AAAAAAQBdAAAAAAEAXQAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAAAAF0AAAAAAwBdAAAAAAMAXQAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAABAF0AAAAAAwBdAAAAAAIAXQAAAAABAF0AAAAAAwBdAAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAAAXQAAAAADAF0AAAAAAgBdAAAAAAEAXQAAAAABAF0AAAAAAgBdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAQBdAAAAAAEAXQAAAAAAAF0AAAAAAgB+AAAAAAAAHwAAAAABAB8AAAAAAwAfAAAAAAMAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAADAF0AAAAAAABdAAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAADAH4AAAAAAAAfAAAAAAIAHwAAAAAAAB8AAAAAAgB+AAAAAAAAXQAAAAACAH4AAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAgB+AAAAAAAAegAAAAADAHoAAAAAAgB6AAAAAAIAXQAAAAACAF0AAAAAAgB+AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAfAAAAAAMAXQAAAAACAF0AAAAAAABdAAAAAAIAfgAAAAAAAHoAAAAAAQB6AAAAAAAAegAAAAACAH4AAAAAAABdAAAAAAEAfgAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAABAH4AAAAAAAB6AAAAAAIAegAAAAAAAHoAAAAAAgB+AAAAAAAAfgAAAAAAAA== + tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAgBdAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAEAXQAAAAADAF0AAAAAAwBdAAAAAAMAXQAAAAACAF0AAAAAAgBdAAAAAAAAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAMAXQAAAAACAF0AAAAAAwB+AAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAIAXQAAAAACAF0AAAAAAQBdAAAAAAIAXQAAAAABAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAAAAF0AAAAAAwBdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAADAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAMAXQAAAAAAAF0AAAAAAQBdAAAAAAIAfgAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAMAXQAAAAADAF0AAAAAAwBdAAAAAAEAXQAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAABAF0AAAAAAABdAAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAMAXQAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAADAF0AAAAAAABdAAAAAAIAXQAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAADAF0AAAAAAABdAAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAIAXQAAAAABAF0AAAAAAABdAAAAAAMAXQAAAAACAF0AAAAAAQBdAAAAAAMAXQAAAAADAF0AAAAAAQBdAAAAAAIAXQAAAAAAAF0AAAAAAwBdAAAAAAMAXQAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAACAF0AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAQBdAAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAMAXQAAAAACAF0AAAAAAgBdAAAAAAAAXQAAAAADAF0AAAAAAABdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAADAF0AAAAAAQB+AAAAAAAAHwAAAAABAB8AAAAAAAAfAAAAAAEAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAIAXQAAAAAAAF0AAAAAAABdAAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAADAH4AAAAAAAAfAAAAAAEAHwAAAAADAB8AAAAAAgB+AAAAAAAAXQAAAAACAH4AAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAAB+AAAAAAAAegAAAAACAHoAAAAAAAB6AAAAAAAAXQAAAAAAAF0AAAAAAwB+AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAfAAAAAAIAXQAAAAACAF0AAAAAAABdAAAAAAMAfgAAAAAAAHoAAAAAAgB6AAAAAAMAegAAAAACAH4AAAAAAABdAAAAAAMAfgAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAMAXQAAAAACAH4AAAAAAAB6AAAAAAIAegAAAAABAHoAAAAAAwB+AAAAAAAAfgAAAAAAAA== version: 7 3,1: ind: 3,1 - tiles: XQAAAAABAF0AAAAAAgBdAAAAAAAAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAACAF0AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAMAXQAAAAACAF0AAAAAAwBdAAAAAAMAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAACAF0AAAAAAQBdAAAAAAMAXQAAAAADAF0AAAAAAgBdAAAAAAIAXQAAAAAAAF0AAAAAAQB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAIAXQAAAAADAF0AAAAAAABdAAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAAAXQAAAAADAF0AAAAAAgBdAAAAAAMAXQAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAIAXQAAAAABAF0AAAAAAgB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAACAF0AAAAAAABdAAAAAAEAXQAAAAABAF0AAAAAAwBdAAAAAAIAXQAAAAACAF0AAAAAAwBdAAAAAAMAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAIAXQAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAACAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAAAAF0AAAAAAQBdAAAAAAIAXQAAAAACAF0AAAAAAgBdAAAAAAIAXQAAAAACAF0AAAAAAgBdAAAAAAEAXQAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAACAH4AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAACAF0AAAAAAwBdAAAAAAIAXQAAAAADAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAAAXQAAAAAAAF0AAAAAAwB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAgBdAAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: XQAAAAACAF0AAAAAAABdAAAAAAMAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAABdAAAAAAIAXQAAAAAAAF0AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAAAXQAAAAADAF0AAAAAAABdAAAAAAMAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAABdAAAAAAIAXQAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAADAF0AAAAAAQB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAMAXQAAAAADAF0AAAAAAQBdAAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAAAXQAAAAACAF0AAAAAAwBdAAAAAAMAXQAAAAABAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAAAXQAAAAAAAF0AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAABdAAAAAAIAXQAAAAAAAF0AAAAAAQBdAAAAAAIAXQAAAAABAF0AAAAAAwBdAAAAAAIAXQAAAAABAF0AAAAAAABdAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAQBdAAAAAAEAXQAAAAABAF0AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAABAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAMAXQAAAAACAF0AAAAAAwBdAAAAAAEAXQAAAAADAF0AAAAAAQBdAAAAAAIAXQAAAAABAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAADAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAgBdAAAAAAIAXQAAAAADAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAABAF0AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAADAF0AAAAAAABdAAAAAAIAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -3,1: ind: -3,1 - tiles: aAAAAAABAF0AAAAAAABdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAGgAAAAAAQBoAAAAAAEAaAAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAegAAAAADAHoAAAAAAgB6AAAAAAEAfgAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAADAH4AAAAAAAA/AAAAAAAAPwAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB+AAAAAAAAfgAAAAAAAHoAAAAAAQB6AAAAAAAAegAAAAABAB8AAAAAAwBdAAAAAAIAXQAAAAABAF0AAAAAAgB+AAAAAAAAPwAAAAAAAD8AAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAAAegAAAAABAHoAAAAAAgB+AAAAAAAAXQAAAAACAF0AAAAAAwBdAAAAAAIAfgAAAAAAAD8AAAAAAAA/AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAADAH4AAAAAAAB+AAAAAAAAPwAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHoAAAAAAQB6AAAAAAIAegAAAAADAH4AAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAwBdAAAAAAEAXQAAAAADAF0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAACAF0AAAAAAQB6AAAAAAIAegAAAAACAHoAAAAAAgBdAAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAAAXQAAAAABAE4AAAAAAwBdAAAAAAMATgAAAAADAF0AAAAAAwBOAAAAAAMAXQAAAAABAE4AAAAAAwBdAAAAAAAAegAAAAACAHoAAAAAAgB6AAAAAAEAfgAAAAAAAF0AAAAAAQBdAAAAAAMAXQAAAAADAF0AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAABdAAAAAAEAXQAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAIAHwAAAAAAAB8AAAAAAQAfAAAAAAAAHwAAAAACAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAA== + tiles: aAAAAAADAF0AAAAAAQBdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAGgAAAAAAQBoAAAAAAEAaAAAAAADAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAegAAAAADAHoAAAAAAgB6AAAAAAEAfgAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAAAAH4AAAAAAAA/AAAAAAAAPwAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB+AAAAAAAAfgAAAAAAAHoAAAAAAAB6AAAAAAIAegAAAAAAAB8AAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAAB+AAAAAAAAPwAAAAAAAD8AAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAfgAAAAAAAH4AAAAAAAB6AAAAAAMAegAAAAADAHoAAAAAAwB+AAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAEAfgAAAAAAAD8AAAAAAAA/AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAABAH4AAAAAAAB+AAAAAAAAPwAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAHoAAAAAAwB6AAAAAAEAegAAAAADAH4AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAADAF0AAAAAAQBdAAAAAAEAXQAAAAADAF0AAAAAAgBdAAAAAAEAXQAAAAACAF0AAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAwBdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAIAXQAAAAAAAE4AAAAAAwBdAAAAAAAATgAAAAADAF0AAAAAAQBOAAAAAAEAXQAAAAACAE4AAAAAAwBdAAAAAAAAegAAAAACAHoAAAAAAwB6AAAAAAMAfgAAAAAAAF0AAAAAAQBdAAAAAAMAXQAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAwBdAAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAAAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAgAfAAAAAAEAHwAAAAABAB8AAAAAAgAfAAAAAAEAHwAAAAADAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAA== version: 7 -4,1: ind: -4,1 - tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAAB+AAAAAAAAXQAAAAACAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAB+AAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAfgAAAAAAAB8AAAAAAQAfAAAAAAIAHwAAAAACAB8AAAAAAgBdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAATwAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAAAAH4AAAAAAAB+AAAAAAAAegAAAAAAAHoAAAAAAgB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAIAegAAAAADAHoAAAAAAAB6AAAAAAIAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB+AAAAAAAAfgAAAAAAAE4AAAAAAQBdAAAAAAAAfgAAAAAAAHoAAAAAAQB6AAAAAAMAegAAAAADAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAEAZAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABdAAAAAAIATgAAAAABAH4AAAAAAAB+AAAAAAAAegAAAAADAHoAAAAAAQB6AAAAAAMAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB+AAAAAAAAZAAAAAAAAF0AAAAAAAB+AAAAAAAAXQAAAAACAHoAAAAAAwB6AAAAAAMAegAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAACAH4AAAAAAAB6AAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAA== + tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGQAAAAAAAB+AAAAAAAAXQAAAAADAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAB+AAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAfgAAAAAAAB8AAAAAAQAfAAAAAAAAHwAAAAABAB8AAAAAAgBdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAATwAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAZAAAAAAAAH4AAAAAAAB+AAAAAAAAegAAAAABAHoAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAABdAAAAAAEAegAAAAACAHoAAAAAAQB6AAAAAAEAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB+AAAAAAAAfgAAAAAAAE4AAAAAAwBdAAAAAAIAfgAAAAAAAHoAAAAAAgB6AAAAAAAAegAAAAACAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAIAZAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABdAAAAAAIATgAAAAACAH4AAAAAAAB+AAAAAAAAegAAAAADAHoAAAAAAAB6AAAAAAMAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAB+AAAAAAAAZAAAAAACAF0AAAAAAQB+AAAAAAAAXQAAAAACAHoAAAAAAwB6AAAAAAAAegAAAAADAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAADAH4AAAAAAAB6AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAA== version: 7 -2,1: ind: -2,1 - tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAADAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAHwAAAAABAH4AAAAAAAAfAAAAAAAAHwAAAAACAB8AAAAAAgB+AAAAAAAAXQAAAAACAH4AAAAAAAB+AAAAAAAAbQAAAAAAAB8AAAAAAAB6AAAAAAIAegAAAAACAHoAAAAAAwB6AAAAAAIAegAAAAABAB8AAAAAAAAfAAAAAAIAQAAAAAAAAEAAAAAAAABAAAAAAAAAHwAAAAADAF0AAAAAAwB+AAAAAAAAbAAAAAAAAH4AAAAAAAAfAAAAAAMAegAAAAACAHoAAAAAAgB6AAAAAAIAegAAAAABAHoAAAAAAgAfAAAAAAMAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAABdAAAAAAEAfgAAAAAAAGwAAAAAAAB+AAAAAAAAHwAAAAABAHoAAAAAAAB6AAAAAAEAegAAAAAAAHoAAAAAAgB6AAAAAAMAHwAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAB+AAAAAAAAXQAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAB8AAAAAAQB6AAAAAAAAegAAAAADAHoAAAAAAAB6AAAAAAMAegAAAAADAB8AAAAAAgAfAAAAAAIAIwAAAAABAB8AAAAAAwAjAAAAAAEAfgAAAAAAAF0AAAAAAwB+AAAAAAAAbAAAAAAAAH4AAAAAAAAfAAAAAAEAegAAAAABAHoAAAAAAwB6AAAAAAIAegAAAAADAHoAAAAAAgAfAAAAAAIAfgAAAAAAACMAAAAAAAAfAAAAAAMAIwAAAAAAAH4AAAAAAABdAAAAAAMAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAATQAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAIAXQAAAAABAF0AAAAAAgBdAAAAAAIAXQAAAAACAF0AAAAAAwBdAAAAAAIAXQAAAAADAF0AAAAAAwBdAAAAAAAAXQAAAAAAAE4AAAAAAABdAAAAAAIATgAAAAADAF0AAAAAAQBOAAAAAAMAXQAAAAADAE4AAAAAAgBdAAAAAAAATgAAAAADAF0AAAAAAABOAAAAAAMAXQAAAAADAE4AAAAAAwBdAAAAAAAAXQAAAAACAF0AAAAAAwBdAAAAAAAAXQAAAAADAF0AAAAAAgBdAAAAAAIAXQAAAAACAF0AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAACAF0AAAAAAQBdAAAAAAIAXQAAAAADAB8AAAAAAwAfAAAAAAIAHwAAAAACAB8AAAAAAgAfAAAAAAAAHwAAAAADAB8AAAAAAQAfAAAAAAEAfgAAAAAAAE0AAAAAAABNAAAAAAEATQAAAAABAH4AAAAAAAB+AAAAAAAAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAQBdAAAAAAIAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAABAF0AAAAAAwBdAAAAAAIAXQAAAAABAF0AAAAAAQBdAAAAAAIAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAADAF0AAAAAAQBdAAAAAAMAXQAAAAABAF0AAAAAAQBdAAAAAAEAXQAAAAABAF0AAAAAAwBdAAAAAAEAXQAAAAABAF0AAAAAAwBdAAAAAAEAXQAAAAABAF0AAAAAAQBdAAAAAAIAXQAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAMAXQAAAAACAF0AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAwBdAAAAAAMAXQAAAAABAF0AAAAAAgBdAAAAAAMAXQAAAAABAF0AAAAAAwBdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAA== + tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAHoAAAAAAwB6AAAAAAEAegAAAAABAHoAAAAAAwB6AAAAAAMAHwAAAAABAH4AAAAAAAAfAAAAAAEAHwAAAAAAAB8AAAAAAQB+AAAAAAAAXQAAAAACAH4AAAAAAAB+AAAAAAAAbQAAAAAAAB8AAAAAAwB6AAAAAAMAegAAAAAAAHoAAAAAAwB6AAAAAAIAegAAAAABAB8AAAAAAQAfAAAAAAEAQAAAAAAAAEAAAAAAAABAAAAAAAAAHwAAAAABAF0AAAAAAwB+AAAAAAAAbAAAAAAAAH4AAAAAAAAfAAAAAAEAegAAAAACAHoAAAAAAAB6AAAAAAIAegAAAAADAHoAAAAAAQAfAAAAAAEAfgAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAH4AAAAAAABdAAAAAAMAfgAAAAAAAGwAAAAAAAB+AAAAAAAAHwAAAAABAHoAAAAAAgB6AAAAAAEAegAAAAADAHoAAAAAAgB6AAAAAAEAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAQB+AAAAAAAAXQAAAAADAH4AAAAAAABsAAAAAAAAfgAAAAAAAB8AAAAAAQB6AAAAAAEAegAAAAABAHoAAAAAAAB6AAAAAAAAegAAAAACAB8AAAAAAwAfAAAAAAAAIwAAAAABAB8AAAAAAgAjAAAAAAEAfgAAAAAAAF0AAAAAAgB+AAAAAAAAbAAAAAAAAH4AAAAAAAAfAAAAAAAAegAAAAACAHoAAAAAAAB6AAAAAAIAegAAAAAAAHoAAAAAAAAfAAAAAAIAfgAAAAAAACMAAAAAAgAfAAAAAAMAIwAAAAACAH4AAAAAAABdAAAAAAEAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAABAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAATQAAAAADAF0AAAAAAQBdAAAAAAIAXQAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAADAF0AAAAAAQBdAAAAAAMAXQAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAABAF0AAAAAAgBdAAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAIAXQAAAAAAAE4AAAAAAABdAAAAAAAATgAAAAADAF0AAAAAAgBOAAAAAAAAXQAAAAACAE4AAAAAAwBdAAAAAAIATgAAAAACAF0AAAAAAgBOAAAAAAIAXQAAAAAAAE4AAAAAAwBdAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAIAXQAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAADAF0AAAAAAwBdAAAAAAMAXQAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAABAF0AAAAAAABdAAAAAAEAXQAAAAADAB8AAAAAAAAfAAAAAAAAHwAAAAADAB8AAAAAAQAfAAAAAAAAHwAAAAADAB8AAAAAAAAfAAAAAAEAfgAAAAAAAE0AAAAAAwBNAAAAAAEATQAAAAABAH4AAAAAAAB+AAAAAAAAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAADAH4AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAMAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAIAXQAAAAAAAF0AAAAAAQBdAAAAAAIAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAABAF0AAAAAAwBdAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAEAXQAAAAABAF0AAAAAAgBdAAAAAAAAXQAAAAADAF0AAAAAAgBdAAAAAAIAXQAAAAACAF0AAAAAAgBdAAAAAAEAXQAAAAABAF0AAAAAAwBdAAAAAAEAXQAAAAAAAF0AAAAAAQBdAAAAAAIAXQAAAAAAAF0AAAAAAABdAAAAAAIAXQAAAAADAF0AAAAAAABdAAAAAAEAXQAAAAACAF0AAAAAAwBdAAAAAAMAXQAAAAABAF0AAAAAAABdAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAA== version: 7 -2,2: ind: -2,2 - tiles: fgAAAAAAAF0AAAAAAQBdAAAAAAIAXQAAAAADAF0AAAAAAQBdAAAAAAEAXQAAAAACAF0AAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAMAfgAAAAAAAF0AAAAAAQBPAAAAAAAATwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEATwAAAAAAAAUAAAAAAAB+AAAAAAAATwAAAAAAAB8AAAAAAwAfAAAAAAEAHwAAAAACAB8AAAAAAAAfAAAAAAEAHwAAAAABAB8AAAAAAABdAAAAAAMAXQAAAAADAF0AAAAAAQB+AAAAAAAAXQAAAAADAE8AAAAAAABPAAAAAAAAfgAAAAAAAE8AAAAAAAAfAAAAAAEATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAAfAAAAAAMAXQAAAAACAF0AAAAAAgBdAAAAAAMAfgAAAAAAAF0AAAAAAQBdAAAAAAMAXQAAAAABAH4AAAAAAAAfAAAAAAMAHwAAAAABAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAHwAAAAABAB8AAAAAAAAfAAAAAAAAHwAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgB+AAAAAAAAHwAAAAACAB8AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAA== + tiles: fgAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAwBdAAAAAAIAXQAAAAAAAF0AAAAAAQB+AAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAAAfgAAAAAAAF0AAAAAAQBPAAAAAAAATwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAfgAAAAAAAH4AAAAAAABdAAAAAAIATwAAAAAAAAUAAAAAAAB+AAAAAAAATwAAAAAAAB8AAAAAAgAfAAAAAAMAHwAAAAABAB8AAAAAAwAfAAAAAAIAHwAAAAACAB8AAAAAAABdAAAAAAEAXQAAAAADAF0AAAAAAgB+AAAAAAAAXQAAAAADAE8AAAAAAABPAAAAAAAAfgAAAAAAAE8AAAAAAAAfAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAAfAAAAAAIAXQAAAAACAF0AAAAAAABdAAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAADAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAHwAAAAABAB8AAAAAAgAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAwB+AAAAAAAAHwAAAAACAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAA== version: 7 -1,3: ind: -1,3 @@ -327,7 +329,7 @@ entities: version: 7 -1,2: ind: -1,2 - tiles: TwAAAAAAAF0AAAAAAQB+AAAAAAAAXQAAAAAAAF0AAAAAAQBdAAAAAAIAfgAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAH4AAAAAAAAfAAAAAAMAXQAAAAADAE8AAAAAAABdAAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAfgAAAAAAAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAB+AAAAAAAAHwAAAAAAAF0AAAAAAgBPAAAAAAAAXQAAAAACAH4AAAAAAABdAAAAAAIAXQAAAAADAF0AAAAAAAB+AAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAMAfgAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAH4AAAAAAAAfAAAAAAMAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAgAfAAAAAAAAHwAAAAABAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAB+AAAAAAAAHwAAAAADAB8AAAAAAQBsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAG0AAAAAAABtAAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAQAfAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAABtAAAAAAAAbQAAAAAAAG0AAAAAAABtAAAAAAAAbQAAAAAAAG0AAAAAAAAfAAAAAAAAHwAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAbQAAAAAAAG0AAAAAAABtAAAAAAAAbQAAAAAAAG0AAAAAAABtAAAAAAAAHwAAAAACAB8AAAAAAwBsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAG0AAAAAAABtAAAAAAAAbQAAAAAAAB8AAAAAAQAfAAAAAAIAHwAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAbQAAAAAAAG0AAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAA== + tiles: TwAAAAAAAF0AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAAAfgAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAH4AAAAAAAAfAAAAAAMAXQAAAAABAE8AAAAAAABdAAAAAAEAfgAAAAAAAH4AAAAAAABdAAAAAAIAfgAAAAAAAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAB+AAAAAAAAHwAAAAABAF0AAAAAAQBPAAAAAAAAXQAAAAABAH4AAAAAAABdAAAAAAIAXQAAAAADAF0AAAAAAwB+AAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAwB+AAAAAAAAXQAAAAADAF0AAAAAAABdAAAAAAAAfgAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAwAfAAAAAAIAHwAAAAADAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAB+AAAAAAAAHwAAAAADAB8AAAAAAwBsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAG0AAAAAAABtAAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAwAfAAAAAAEAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAABtAAAAAAAAbQAAAAAAAG0AAAAAAABtAAAAAAAAbQAAAAAAAG0AAAAAAAAfAAAAAAAAHwAAAAABAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAbQAAAAAAAG0AAAAAAABtAAAAAAAAbQAAAAAAAG0AAAAAAABtAAAAAAAAHwAAAAADAB8AAAAAAgBsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAG0AAAAAAABtAAAAAAAAbQAAAAAAAB8AAAAAAgAfAAAAAAIAHwAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAbQAAAAAAAG0AAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAA== version: 7 -3,2: ind: -3,2 @@ -347,23 +349,23 @@ entities: version: 7 0,2: ind: 0,2 - tiles: XQAAAAAAAF0AAAAAAQAfAAAAAAAAbQAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAF0AAAAAAwBdAAAAAAIAHwAAAAABAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAABAB8AAAAAAAAfAAAAAAIAfgAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAB8AAAAAAgAfAAAAAAAAHwAAAAAAAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAB8AAAAAAgB+AAAAAAAAfgAAAAAAAG0AAAAAAABtAAAAAAAAbQAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAAAfAAAAAAIAHwAAAAAAAG0AAAAAAABtAAAAAAAAbQAAAAAAAG0AAAAAAABtAAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAGwAAAAAAABsAAAAAAAAHwAAAAADAB8AAAAAAgBtAAAAAAAAbQAAAAAAAG0AAAAAAABtAAAAAAAAbQAAAAAAAG0AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAABsAAAAAAAAbAAAAAAAAB8AAAAAAAAfAAAAAAIAbQAAAAAAAG0AAAAAAABtAAAAAAAAbQAAAAAAAG0AAAAAAABtAAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAIAHwAAAAADAG0AAAAAAABtAAAAAAAAbQAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAAAfAAAAAAIAHwAAAAABAH4AAAAAAABtAAAAAAAAbQAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAA== + tiles: XQAAAAADAF0AAAAAAwAfAAAAAAEAbQAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAF0AAAAAAABdAAAAAAAAHwAAAAACAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAIAfgAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAB8AAAAAAgAfAAAAAAMAHwAAAAAAAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAABsAAAAAAAAbAAAAAAAAB8AAAAAAwB+AAAAAAAAfgAAAAAAAG0AAAAAAABtAAAAAAAAbQAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAbAAAAAAAAGwAAAAAAAAfAAAAAAIAHwAAAAACAG0AAAAAAABtAAAAAAAAbQAAAAAAAG0AAAAAAABtAAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAGwAAAAAAABsAAAAAAAAHwAAAAACAB8AAAAAAwBtAAAAAAAAbQAAAAAAAG0AAAAAAABtAAAAAAAAbQAAAAAAAG0AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAABsAAAAAAAAbAAAAAAAAB8AAAAAAQAfAAAAAAAAbQAAAAAAAG0AAAAAAABtAAAAAAAAbQAAAAAAAG0AAAAAAABtAAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAHwAAAAACAB8AAAAAAAAfAAAAAAEAHwAAAAACAG0AAAAAAABtAAAAAAAAbQAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAQAfAAAAAAIAHwAAAAAAAH4AAAAAAABtAAAAAAAAbQAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAbAAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAA== version: 7 -4,2: ind: -4,2 - tiles: AAAAAAAAAAAAAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAfAAAAAAIAHwAAAAABAB8AAAAAAgAfAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAACAB8AAAAAAwAfAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAB+AAAAAAAAfQAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAfAAAAAAAAHwAAAAABAB8AAAAAAgAfAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAABAB8AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAB+AAAAAAAAfQAAAAAAAA== version: 7 -4,3: ind: -4,3 - tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB+AAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAfgAAAAAAAH0AAAAAAABdAAAAAAEAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAXQAAAAADAB8AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAB+AAAAAAAAfQAAAAAAAF0AAAAAAgAfAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB+AAAAAAAAHwAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB+AAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAfgAAAAAAAH0AAAAAAABdAAAAAAEAHwAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAXQAAAAAAAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAAB+AAAAAAAAfQAAAAAAAF0AAAAAAQAfAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB+AAAAAAAAHwAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -5,1: ind: -5,1 - tiles: HwAAAAABAB8AAAAAAwAfAAAAAAMAHwAAAAAAAB8AAAAAAwAfAAAAAAIAHwAAAAADAB8AAAAAAwAfAAAAAAAAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAE4AAAAAAwBOAAAAAAIATgAAAAABAE4AAAAAAgAfAAAAAAIAHwAAAAAAAB8AAAAAAgAfAAAAAAAAHwAAAAABAB8AAAAAAgAfAAAAAAEAHwAAAAADAB8AAAAAAQAfAAAAAAEAHwAAAAACAB8AAAAAAQAfAAAAAAAAHwAAAAADAB8AAAAAAAAfAAAAAAMAHwAAAAABAB8AAAAAAAAfAAAAAAAAHwAAAAACAB8AAAAAAgAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAABAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAADsAAAAAAAA7AAAAAAAAOwAAAAAAADsAAAAAAAA7AAAAAAAAHwAAAAADAH4AAAAAAAAfAAAAAAIAHwAAAAADAB8AAAAAAwB+AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: HwAAAAAAAB8AAAAAAgAfAAAAAAAAHwAAAAACAB8AAAAAAgAfAAAAAAEAHwAAAAACAB8AAAAAAwAfAAAAAAEAHwAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAE4AAAAAAwBOAAAAAAIATgAAAAADAE4AAAAAAAAfAAAAAAMAHwAAAAADAB8AAAAAAQAfAAAAAAAAHwAAAAADAB8AAAAAAwAfAAAAAAAAHwAAAAADAB8AAAAAAwAfAAAAAAMAHwAAAAABAB8AAAAAAQAfAAAAAAMAHwAAAAABAB8AAAAAAwAfAAAAAAIAHwAAAAACAB8AAAAAAwAfAAAAAAEAHwAAAAAAAB8AAAAAAAAfAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAADAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAADsAAAAAAAA7AAAAAAAAOwAAAAAAADsAAAAAAAA7AAAAAAAAHwAAAAABAH4AAAAAAAAfAAAAAAIAHwAAAAABAB8AAAAAAwB+AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAEAAAAAAAABAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -5,0: ind: -5,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAADAF0AAAAAAQB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAgB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAEAXQAAAAABAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAgB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAgB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAA== version: 7 2,-5: ind: 2,-5 @@ -419,11 +421,11 @@ entities: version: 7 -6,1: ind: -6,1 - tiles: HwAAAAADAB8AAAAAAgAfAAAAAAIAHwAAAAACAB8AAAAAAAAfAAAAAAAAHwAAAAADAB8AAAAAAAAfAAAAAAIAHwAAAAACAB8AAAAAAwAfAAAAAAAAHwAAAAADAB8AAAAAAgAfAAAAAAAAHwAAAAACAB8AAAAAAQAfAAAAAAAAHwAAAAAAAE4AAAAAAABOAAAAAAEATgAAAAACAE4AAAAAAgBOAAAAAAAATgAAAAACAE4AAAAAAgBOAAAAAAEATgAAAAAAAE4AAAAAAQBOAAAAAAMATgAAAAABAE4AAAAAAAAfAAAAAAMAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAABAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAMAHwAAAAADAB8AAAAAAwAfAAAAAAIAHwAAAAABAB8AAAAAAAAfAAAAAAIAfQAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAA7AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAADsAAAAAAAA7AAAAAAAAOwAAAAAAADsAAAAAAAA7AAAAAAAAOwAAAAAAADsAAAAAAAB+AAAAAAAAOwAAAAAAADsAAAAAAAA7AAAAAAAAOwAAAAAAADsAAAAAAAA7AAAAAAAAOwAAAAAAADsAAAAAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: HwAAAAAAAB8AAAAAAQAfAAAAAAAAHwAAAAABAB8AAAAAAgAfAAAAAAMAHwAAAAACAB8AAAAAAwAfAAAAAAMAHwAAAAADAB8AAAAAAwAfAAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAEAHwAAAAAAAB8AAAAAAAAfAAAAAAMAHwAAAAACAE4AAAAAAABOAAAAAAIATgAAAAAAAE4AAAAAAgBOAAAAAAIATgAAAAABAE4AAAAAAgBOAAAAAAMATgAAAAAAAE4AAAAAAQBOAAAAAAAATgAAAAAAAE4AAAAAAgAfAAAAAAIAHwAAAAAAAB8AAAAAAQAfAAAAAAEAHwAAAAADAB8AAAAAAwAfAAAAAAEAHwAAAAAAAB8AAAAAAQAfAAAAAAMAHwAAAAAAAB8AAAAAAwAfAAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAEAfQAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAA7AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAADsAAAAAAAA7AAAAAAAAOwAAAAAAADsAAAAAAAA7AAAAAAAAOwAAAAAAADsAAAAAAAB+AAAAAAAAOwAAAAAAADsAAAAAAAA7AAAAAAAAOwAAAAAAADsAAAAAAAA7AAAAAAAAOwAAAAAAADsAAAAAAAA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -7,1: ind: -7,1 - tiles: QAAAAAAAAEAAAAAAAABAAAAAAAAAHwAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAABAB8AAAAAAAAfAAAAAAAAHwAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAABAB8AAAAAAgAfAAAAAAEAHwAAAAADAEAAAAAAAABAAAAAAAAAQAAAAAAAAB8AAAAAAQAfAAAAAAIAHwAAAAAAAB8AAAAAAAAfAAAAAAEAHwAAAAADAB8AAAAAAQAfAAAAAAIAHwAAAAADAB8AAAAAAwAfAAAAAAIAHwAAAAAAAB8AAAAAAgBAAAAAAAAAQAAAAAAAAEAAAAAAAAAfAAAAAAMAfgAAAAAAAB8AAAAAAAAfAAAAAAEAHwAAAAACAB8AAAAAAwAfAAAAAAAAfgAAAAAAAB8AAAAAAQAfAAAAAAAAHwAAAAACAB8AAAAAAwAfAAAAAAAAHwAAAAACAB8AAAAAAwAfAAAAAAEAHwAAAAADAH4AAAAAAAAfAAAAAAIAHwAAAAABAB8AAAAAAAAfAAAAAAMAHwAAAAAAAH4AAAAAAAB9AAAAAAAAHwAAAAABAH4AAAAAAAB9AAAAAAAAfQAAAAAAAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAADAB8AAAAAAwAfAAAAAAMATwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAfAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAIwAAAAAAACMAAAAAAgAjAAAAAAIAIwAAAAACAB8AAAAAAgAfAAAAAAMAfgAAAAAAAH4AAAAAAAB9AAAAAAAAHwAAAAACAB8AAAAAAAAfAAAAAAAAHwAAAAADAH4AAAAAAAB+AAAAAAAAfQAAAAAAACMAAAAAAAA4AAAAAAAAOAAAAAAAACMAAAAAAAAfAAAAAAIAHwAAAAADAH4AAAAAAAB+AAAAAAAAfQAAAAAAAB8AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAADgAAAAAAAAjAAAAAAMAHwAAAAADAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH0AAAAAAAAfAAAAAAIAfQAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAH4AAAAAAAA4AAAAAAAAIwAAAAABAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAHwAAAAADAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAACMAAAAAAQAjAAAAAAIAIwAAAAACACMAAAAAAgAjAAAAAAIAOAAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAB8AAAAAAgB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAADgAAAAAAAAjAAAAAAEAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAfAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAIwAAAAABAB8AAAAAAQAfAAAAAAIAfgAAAAAAAH4AAAAAAAB9AAAAAAAAHwAAAAADAH0AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAAAAAAQAjAAAAAAMAIwAAAAACACMAAAAAAwAfAAAAAAAAHwAAAAADAH4AAAAAAAB+AAAAAAAAfQAAAAAAAB8AAAAAAgB9AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAMATwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAABAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAACAH0AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: QAAAAAAAAEAAAAAAAABAAAAAAAAAHwAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAABAB8AAAAAAQAfAAAAAAMAHwAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAAAHwAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAB8AAAAAAAAfAAAAAAMAHwAAAAACAB8AAAAAAAAfAAAAAAAAHwAAAAABAB8AAAAAAgAfAAAAAAAAHwAAAAACAB8AAAAAAAAfAAAAAAIAHwAAAAADAB8AAAAAAwBAAAAAAAAAQAAAAAAAAEAAAAAAAAAfAAAAAAMAfgAAAAAAAB8AAAAAAwAfAAAAAAEAHwAAAAABAB8AAAAAAgAfAAAAAAMAfgAAAAAAAB8AAAAAAAAfAAAAAAEAHwAAAAACAB8AAAAAAgAfAAAAAAEAHwAAAAABAB8AAAAAAAAfAAAAAAMAHwAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAABAB8AAAAAAAAfAAAAAAMAHwAAAAABAH4AAAAAAAB9AAAAAAAAHwAAAAADAH4AAAAAAAB9AAAAAAAAfQAAAAAAAB8AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAB8AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAADAB8AAAAAAwAfAAAAAAIATwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAIwAAAAADACMAAAAAAQAjAAAAAAMAIwAAAAADAB8AAAAAAwAfAAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAEAHwAAAAABAH4AAAAAAAB+AAAAAAAAfQAAAAAAACMAAAAAAgA4AAAAAAAAOAAAAAAAACMAAAAAAwAfAAAAAAAAHwAAAAABAH4AAAAAAAB+AAAAAAAAfQAAAAAAAB8AAAAAAwB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAADgAAAAAAAAjAAAAAAAAHwAAAAADAB8AAAAAAQB+AAAAAAAAfgAAAAAAAH0AAAAAAAAfAAAAAAIAfQAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAH4AAAAAAAA4AAAAAAAAIwAAAAADAB8AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAHwAAAAACAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAACMAAAAAAwAjAAAAAAAAIwAAAAABACMAAAAAAQAjAAAAAAAAOAAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAB8AAAAAAQB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAADgAAAAAAAAjAAAAAAMAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAfAAAAAAMAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAAAIwAAAAABAB8AAAAAAwAfAAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAHwAAAAADAH0AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAAAAAAwAjAAAAAAMAIwAAAAABACMAAAAAAQAfAAAAAAMAHwAAAAADAH4AAAAAAAB+AAAAAAAAfQAAAAAAAB8AAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAADAB8AAAAAAAAfAAAAAAEATwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAACAB8AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAABAH0AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -6,0: ind: -6,0 @@ -431,23 +433,23 @@ entities: version: 7 -7,0: ind: -7,0 - tiles: fQAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAEAHwAAAAAAAB8AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAQAfAAAAAAMAHwAAAAADAB8AAAAAAQAfAAAAAAAAHwAAAAABAB8AAAAAAgAfAAAAAAIAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAEAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAHwAAAAABAH0AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAHwAAAAACAH4AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAQB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAfAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAfAAAAAAEAEQAAAAAAABEAAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAHwAAAAADAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAACAB8AAAAAAAAfAAAAAAIAEQAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAB8AAAAAAwARAAAAAAAAHwAAAAADABEAAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAAfAAAAAAIAfQAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAfAAAAAAAAJAAAAAADAB8AAAAAAAAfAAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAADABEAAAAAAAAfAAAAAAEAEQAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAB8AAAAAAgAfAAAAAAAAHwAAAAACAB8AAAAAAAAfAAAAAAIAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAwAfAAAAAAIAHwAAAAAAABEAAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAB8AAAAAAgB9AAAAAAAAAAAAAAAAAH0AAAAAAAAfAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAfAAAAAAIAfQAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAIAHwAAAAACAH4AAAAAAAAfAAAAAAIAHwAAAAAAAB8AAAAAAAAfAAAAAAIAHwAAAAACAH4AAAAAAAB9AAAAAAAAHwAAAAACAH0AAAAAAAB9AAAAAAAAfQAAAAAAAA== + tiles: fQAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAIAHwAAAAACAB8AAAAAAQB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAACAB8AAAAAAAAfAAAAAAMAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAgAfAAAAAAIAHwAAAAAAAB8AAAAAAQAfAAAAAAMAHwAAAAABAB8AAAAAAgAfAAAAAAEAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAEAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAHwAAAAACAH0AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAHwAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAgB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAQB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAfAAAAAAEAfQAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAfAAAAAAMAEQAAAAAAABEAAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAHwAAAAABAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAADAB8AAAAAAgAfAAAAAAIAEQAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAgB9AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAB8AAAAAAwARAAAAAAAAHwAAAAACABEAAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAAfAAAAAAIAfQAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAfAAAAAAMAJAAAAAACAB8AAAAAAgAfAAAAAAMAfgAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAADAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAACABEAAAAAAAAfAAAAAAEAEQAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAB8AAAAAAwAfAAAAAAMAHwAAAAAAAB8AAAAAAwAfAAAAAAEAHwAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAwAfAAAAAAAAHwAAAAABABEAAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAB8AAAAAAQB9AAAAAAAAAAAAAAAAAH0AAAAAAAAfAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAfAAAAAAIAfQAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAACAB8AAAAAAwAfAAAAAAIAHwAAAAABAH4AAAAAAAAfAAAAAAMAHwAAAAABAB8AAAAAAQAfAAAAAAIAHwAAAAADAH4AAAAAAAB9AAAAAAAAHwAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAA== version: 7 -8,0: ind: -8,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAQAfAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAfAAAAAAMAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAB8AAAAAAAAfAAAAAAIAHwAAAAADAB8AAAAAAAAfAAAAAAIAHwAAAAADAB8AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAfAAAAAAEAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAHwAAAAABAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAQB9AAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAfAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAABEAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAACAH0AAAAAAAAAAAAAAAAAfgAAAAAAABEAAAAAAAAfAAAAAAMAHwAAAAACAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAwB9AAAAAAAAAAAAAAAAAH4AAAAAAAARAAAAAAAAHwAAAAABABEAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAfAAAAAAIAfQAAAAAAAAAAAAAAAAB+AAAAAAAAHwAAAAACAB8AAAAAAAAkAAAAAAEAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAACAB8AAAAAAgAfAAAAAAEAHwAAAAADAH0AAAAAAAB9AAAAAAAAfgAAAAAAABEAAAAAAAAfAAAAAAAAEQAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAfAAAAAAIAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAARAAAAAAAAHwAAAAABAB8AAAAAAwAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAACAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAB8AAAAAAgB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAMAHwAAAAADAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAQAfAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAfAAAAAAEAHwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAB8AAAAAAgAfAAAAAAMAHwAAAAABAB8AAAAAAQAfAAAAAAAAHwAAAAACAB8AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAfAAAAAAIAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAHwAAAAADAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAfAAAAAAIAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAABEAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAADAH0AAAAAAAAAAAAAAAAAfgAAAAAAABEAAAAAAAAfAAAAAAEAHwAAAAACAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAwB9AAAAAAAAAAAAAAAAAH4AAAAAAAARAAAAAAAAHwAAAAACABEAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAfAAAAAAIAfQAAAAAAAAAAAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAwAkAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAwAfAAAAAAIAHwAAAAAAAB8AAAAAAQAfAAAAAAMAHwAAAAABAH0AAAAAAAB9AAAAAAAAfgAAAAAAABEAAAAAAAAfAAAAAAEAEQAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAfAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAARAAAAAAAAHwAAAAAAAB8AAAAAAgAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAADAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAB8AAAAAAQB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAwAfAAAAAAIAHwAAAAADAA== version: 7 -8,1: ind: -8,1 - tiles: AAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAQAfAAAAAAMAfgAAAAAAAB8AAAAAAgAfAAAAAAMAHwAAAAACAB8AAAAAAAAfAAAAAAAAfgAAAAAAAB8AAAAAAgBAAAAAAAAAQAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAfAAAAAAEAHwAAAAADAB8AAAAAAAAfAAAAAAMAHwAAAAADAB8AAAAAAQAfAAAAAAAAHwAAAAACAB8AAAAAAwAfAAAAAAEAQAAAAAAAAEAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAADAB8AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAABAEAAAAAAAABAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAB8AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAQAfAAAAAAIAHwAAAAACAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAfAAAAAAMAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAHwAAAAABAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABPAAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAEAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAgAfAAAAAAIAHwAAAAADAB8AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAACACMAAAAAAgAjAAAAAAEAIwAAAAACAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAfAAAAAAEAfQAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAACAB8AAAAAAQAjAAAAAAMAOAAAAAAAADgAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAMAIwAAAAABADgAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAB8AAAAAAwB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAACMAAAAAAwA4AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAfAAAAAAEAfQAAAAAAAH4AAAAAAAB+AAAAAAAAOAAAAAAAACMAAAAAAAAjAAAAAAMAIwAAAAABACMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAIwAAAAAAADgAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAADACMAAAAAAQA4AAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAfAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAAAjAAAAAAEAIwAAAAADACMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABPAAAAAAAAHwAAAAABAB8AAAAAAgAfAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAgB9AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAA== + tiles: AAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAwAfAAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAEAHwAAAAADAB8AAAAAAwAfAAAAAAAAfgAAAAAAAB8AAAAAAgBAAAAAAAAAQAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAfAAAAAAIAHwAAAAACAB8AAAAAAQAfAAAAAAMAHwAAAAAAAB8AAAAAAgAfAAAAAAAAHwAAAAACAB8AAAAAAQAfAAAAAAEAQAAAAAAAAEAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAACAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAB8AAAAAAgB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAgAfAAAAAAIAHwAAAAABAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAfAAAAAAEAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAHwAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABPAAAAAAAAHwAAAAABAB8AAAAAAwAfAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAQAfAAAAAAEAHwAAAAADAB8AAAAAAwB9AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAACMAAAAAAQAjAAAAAAAAIwAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAfAAAAAAIAfQAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAADAB8AAAAAAgAjAAAAAAAAOAAAAAAAADgAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAACAH0AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAwAfAAAAAAAAIwAAAAABADgAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAB8AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAADACMAAAAAAwA4AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAfAAAAAAIAfQAAAAAAAH4AAAAAAAB+AAAAAAAAOAAAAAAAACMAAAAAAQAjAAAAAAMAIwAAAAACACMAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAADAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAMAIwAAAAADADgAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAgB9AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAACACMAAAAAAgA4AAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAfAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAwAjAAAAAAIAIwAAAAABACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAADAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABPAAAAAAAAHwAAAAACAB8AAAAAAQAfAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAwB9AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAABAA== version: 7 -8,2: ind: -8,2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAwB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAfAAAAAAMAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAADAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAB8AAAAAAgAfAAAAAAIAHwAAAAAAAB8AAAAAAwAfAAAAAAIAHwAAAAADAB8AAAAAAQAfAAAAAAEAHwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAHwAAAAABAB8AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAQAfAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAQB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAfAAAAAAIAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAHwAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAB8AAAAAAgAfAAAAAAEAHwAAAAADAB8AAAAAAAAfAAAAAAEAHwAAAAACAB8AAAAAAQAfAAAAAAEAHwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAHwAAAAAAAB8AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAB8AAAAAAAAfAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -7,2: ind: -7,2 - tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAHwAAAAACAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAB8AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAfAAAAAAEAfQAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAIAHwAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAABAB8AAAAAAAAfAAAAAAMAHwAAAAADAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAgAfAAAAAAAAHwAAAAACAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAAAHwAAAAABAB8AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: fgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAHwAAAAABAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAB8AAAAAAwB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAfAAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADAB8AAAAAAwAfAAAAAAAAHwAAAAADAB8AAAAAAAAfAAAAAAMAHwAAAAACAB8AAAAAAQAfAAAAAAMAHwAAAAADAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAwAfAAAAAAAAHwAAAAABAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAEAHwAAAAADAB8AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -7,-1: ind: -7,-1 @@ -459,7 +461,7 @@ entities: version: 7 -5,3: ind: -5,3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -5,2: ind: -5,2 @@ -479,11 +481,11 @@ entities: version: 7 3,2: ind: 3,2 - tiles: AAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAABAF0AAAAAAgBdAAAAAAIAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAIAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAADAH4AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAQB+AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAF0AAAAAAQBdAAAAAAIAXQAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAMAbQAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAAAAF0AAAAAAQBdAAAAAAEAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAABAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAwBdAAAAAAEAXQAAAAADAF0AAAAAAQB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAMAbQAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAQBtAAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAAAAF0AAAAAAwBdAAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAwBdAAAAAAIAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAADAH4AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAADAF0AAAAAAQB+AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAAAAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAADAF0AAAAAAABdAAAAAAEAbQAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAEAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAAAXQAAAAABAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAIAXQAAAAADAF0AAAAAAgB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAABtAAAAAAAAXQAAAAADAF0AAAAAAgBdAAAAAAIAbQAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 2,2: ind: 2,2 - tiles: XQAAAAADAF0AAAAAAABdAAAAAAIAXQAAAAADAF0AAAAAAQB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAIAfgAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAIAXQAAAAABAH4AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAIAXQAAAAACAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtAAAAAAAAXQAAAAACAF0AAAAAAgBdAAAAAAEAbQAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAMAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG0AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAgBdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAgB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAQBdAAAAAAMAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAABdAAAAAAIAXQAAAAABAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG0AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAwBtAAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAgBdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbQAAAAAAAF0AAAAAAwBdAAAAAAMAXQAAAAADAG0AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: XQAAAAAAAF0AAAAAAwBdAAAAAAAAXQAAAAACAF0AAAAAAQB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAEAXQAAAAADAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAMAXQAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAADAF0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtAAAAAAAAXQAAAAACAF0AAAAAAABdAAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG0AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAQBdAAAAAAMAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAEAXQAAAAACAF0AAAAAAgB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAABAF0AAAAAAQBdAAAAAAEAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAIAXQAAAAABAF0AAAAAAwBdAAAAAAAAXQAAAAADAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG0AAAAAAABdAAAAAAMAXQAAAAADAF0AAAAAAABtAAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbQAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 1,3: ind: 1,3 @@ -491,11 +493,11 @@ entities: version: 7 2,3: ind: 2,3 - tiles: fgAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAQBdAAAAAAIAXQAAAAADAF0AAAAAAQBdAAAAAAIAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAMAXQAAAAADAF0AAAAAAgBdAAAAAAAAXQAAAAADAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAwBdAAAAAAIAXQAAAAADAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: fgAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAACAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAAAAF0AAAAAAABdAAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAgBdAAAAAAEAXQAAAAABAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAF0AAAAAAABdAAAAAAEAXQAAAAACAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 3,3: ind: 3,3 - tiles: AAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAIAXQAAAAADAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAwBdAAAAAAIAXQAAAAACAF0AAAAAAwB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAACAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAwB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAAAAF0AAAAAAQBdAAAAAAAAXQAAAAABAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAQBdAAAAAAEAXQAAAAADAF0AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAADAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 0,4: ind: 0,4 @@ -900,8 +902,8 @@ entities: 4376: 55,39 4377: 55,45 4378: 55,47 - 4836: 13,-13 5690: 1,32 + 7249: 13,-17 - node: angle: 3.141592653589793 rad color: '#FFFFFFFF' @@ -3337,7 +3339,6 @@ entities: decals: 31: 50,-33 38: 3,-2 - 41: 11,-4 - node: cleanable: True color: '#FFFFFFFF' @@ -3363,7 +3364,6 @@ entities: 32: 52,-33 33: 51,-33 34: -6,-3 - 42: 11,-3 43: 5,-3 44: -4,-3 57: 11,-28 @@ -3846,12 +3846,6 @@ entities: 6672: -27,-14 7146: -28,-14 7147: -29,-14 - - node: - color: '#EFB34196' - id: HalfTileOverlayGreyscale180 - decals: - 139: 13,-18 - 140: 12,-18 - node: color: '#EFCC4196' id: HalfTileOverlayGreyscale180 @@ -4445,8 +4439,6 @@ entities: 1579: 41,18 1580: 40,18 1581: 39,18 - 3957: 12,-16 - 3958: 13,-16 4306: 37,25 4307: 39,25 4308: 40,25 @@ -5374,8 +5366,6 @@ entities: 5315: -6,-3 5318: 2,-2 5319: 3,-2 - 5322: 11,-4 - 5323: 11,-3 5324: 5,-3 5325: -4,-3 - node: @@ -6621,7 +6611,7 @@ entities: 0,0: 0: 65535 1,-3: - 0: 272 + 0: 3952 1,-2: 0: 1911 1,-1: @@ -6630,34 +6620,29 @@ entities: 1,0: 0: 17 1: 42052 + 2,-3: + 0: 13308 2,-2: - 0: 784 - 1: 34944 + 0: 45875 2,-1: - 0: 23 - 1: 136 + 0: 255 2,-4: - 1: 4369 - 0: 52228 + 1: 4353 + 0: 49356 2,-5: 1: 4352 - 0: 58379 - 2,-3: - 1: 33825 - 0: 140 + 0: 52235 3,-4: - 0: 64395 + 0: 63931 3,-3: 0: 35003 - 1: 12288 + 3,-2: + 0: 47240 3,-1: - 1: 8739 - 0: 34952 + 0: 35007 + 1: 8192 3,-5: 0: 64411 - 3,-2: - 1: 8738 - 0: 34952 3,0: 1: 35 0: 47496 @@ -9332,6 +9317,8 @@ entities: stiffness: 14000.604 - type: ImplicitRoof - type: ExplosionAirtightGrid + - type: TileHistory + chunkHistory: {} - uid: 943 components: - type: MetaData @@ -9555,10 +9542,12 @@ entities: id: docking43669 localAnchorB: -47.5,-40 localAnchorA: 0.5,0 - damping: 1560.8403 - stiffness: 14010.071 + damping: 1560.8552 + stiffness: 14010.204 - type: ImplicitRoof - type: ExplosionAirtightGrid + - type: TileHistory + chunkHistory: {} - proto: AcousticGuitarInstrument entities: - uid: 6610 @@ -9686,6 +9675,14 @@ entities: - 7463 - type: Fixtures fixtures: {} + - uid: 6503 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 11.5,-18.5 + parent: 60 + - type: Fixtures + fixtures: {} - uid: 7065 components: - type: Transform @@ -10793,19 +10790,6 @@ entities: - 16669 - type: Fixtures fixtures: {} - - uid: 23956 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 11.5,-14.5 - parent: 60 - - type: DeviceList - devices: - - 23975 - - 14770 - - 3594 - - type: Fixtures - fixtures: {} - uid: 24360 components: - type: Transform @@ -11486,18 +11470,6 @@ entities: - type: Transform pos: -101.5,17.5 parent: 60 - - uid: 18033 - components: - - type: MetaData - name: Bridge Maintenance - - type: Transform - pos: 5.5,-3.5 - parent: 60 - - type: DeviceLinkSource - linkedPorts: - 18076: - - - DoorStatus - - DoorBolt - uid: 18125 components: - type: MetaData @@ -11598,10 +11570,8 @@ entities: - type: Transform pos: 38.5,-36.5 parent: 60 - - uid: 1447 + - uid: 1436 components: - - type: MetaData - name: Storage/Bagel EVA - type: Transform pos: 12.5,-18.5 parent: 60 @@ -12403,18 +12373,6 @@ entities: 22426: - - DoorStatus - DoorBolt - - uid: 24098 - components: - - type: Transform - pos: 9.5,-16.5 - parent: 60 - - type: DeviceLinkSink - invokeCounter: 1 - - type: DeviceLinkSource - linkedPorts: - 1435: - - - DoorStatus - - DoorBolt - uid: 25634 components: - type: Transform @@ -12631,18 +12589,6 @@ entities: DockStatus: True - proto: AirlockExternalLocked entities: - - uid: 1435 - components: - - type: Transform - pos: 11.5,-16.5 - parent: 60 - - type: DeviceLinkSink - invokeCounter: 1 - - type: DeviceLinkSource - linkedPorts: - 24098: - - - DoorStatus - - DoorBolt - uid: 3900 components: - type: Transform @@ -12673,16 +12619,6 @@ entities: 11630: - - DoorStatus - DoorBolt - - uid: 18076 - components: - - type: Transform - pos: 10.5,-3.5 - parent: 60 - - type: DeviceLinkSource - linkedPorts: - 18033: - - - DoorStatus - - DoorBolt - proto: AirlockExternalShuttleSyndicateLocked entities: - uid: 8065 @@ -12719,11 +12655,6 @@ entities: - type: Transform pos: 33.5,26.5 parent: 60 - - uid: 288 - components: - - type: Transform - pos: 14.5,-16.5 - parent: 60 - uid: 489 components: - type: Transform @@ -12834,15 +12765,15 @@ entities: - type: Transform pos: 4.5,-54.5 parent: 60 - - uid: 5317 + - uid: 5401 components: - type: Transform - pos: 14.5,-12.5 + pos: 11.5,6.5 parent: 60 - - uid: 5401 + - uid: 5863 components: - type: Transform - pos: 11.5,6.5 + pos: 14.5,-16.5 parent: 60 - uid: 6266 components: @@ -13186,6 +13117,11 @@ entities: - type: Transform pos: -121.5,17.5 parent: 60 + - uid: 6561 + components: + - type: Transform + pos: 5.5,-3.5 + parent: 60 - uid: 9621 components: - type: Transform @@ -13341,6 +13277,16 @@ entities: - type: Transform pos: 26.5,22.5 parent: 60 + - uid: 2933 + components: + - type: Transform + pos: 14.5,-3.5 + parent: 60 + - uid: 2937 + components: + - type: Transform + pos: 14.5,-12.5 + parent: 60 - uid: 3356 components: - type: Transform @@ -13390,6 +13336,11 @@ entities: - type: Transform pos: -3.5,-61.5 parent: 60 + - uid: 5317 + components: + - type: Transform + pos: 12.5,-13.5 + parent: 60 - uid: 5480 components: - type: Transform @@ -14012,14 +13963,6 @@ entities: - type: Transform pos: 23.5,-31.5 parent: 60 - - uid: 3594 - components: - - type: Transform - pos: 13.5,-13.5 - parent: 60 - - type: DeviceNetwork - deviceLists: - - 23956 - uid: 4730 components: - type: Transform @@ -16320,11 +16263,6 @@ entities: - type: Transform pos: 49.5,-29.5 parent: 60 - - uid: 5854 - components: - - type: Transform - pos: 47.5,-29.5 - parent: 60 - uid: 7841 components: - type: Transform @@ -16459,11 +16397,6 @@ entities: parent: 60 - proto: BedsheetGreen entities: - - uid: 3015 - components: - - type: Transform - pos: 47.5,-29.5 - parent: 60 - uid: 3016 components: - type: Transform @@ -17934,11 +17867,6 @@ entities: - type: Transform pos: -26.5,6.5 parent: 60 - - uid: 815 - components: - - type: Transform - pos: 13.5,-12.5 - parent: 60 - uid: 840 components: - type: Transform @@ -18169,11 +18097,6 @@ entities: - type: Transform pos: 40.5,-32.5 parent: 60 - - uid: 2541 - components: - - type: Transform - pos: 15.5,-12.5 - parent: 60 - uid: 2572 components: - type: Transform @@ -32669,16 +32592,6 @@ entities: - type: Transform pos: -62.5,40.5 parent: 60 - - uid: 23723 - components: - - type: Transform - pos: 14.5,-12.5 - parent: 60 - - uid: 23725 - components: - - type: Transform - pos: 12.5,-12.5 - parent: 60 - uid: 23726 components: - type: Transform @@ -33154,26 +33067,6 @@ entities: - type: Transform pos: -63.5,-5.5 parent: 60 - - uid: 24652 - components: - - type: Transform - pos: 11.5,-12.5 - parent: 60 - - uid: 24653 - components: - - type: Transform - pos: 10.5,-12.5 - parent: 60 - - uid: 24654 - components: - - type: Transform - pos: 12.5,-11.5 - parent: 60 - - uid: 24655 - components: - - type: Transform - pos: 12.5,-10.5 - parent: 60 - uid: 24671 components: - type: Transform @@ -41335,16 +41228,6 @@ entities: - type: Transform pos: 3.5,-2.5 parent: 60 - - uid: 18149 - components: - - type: Transform - pos: 14.5,-4.5 - parent: 60 - - uid: 18150 - components: - - type: Transform - pos: 14.5,-2.5 - parent: 60 - uid: 18151 components: - type: Transform @@ -52651,6 +52534,11 @@ entities: - type: Transform pos: -85.5,-23.5 parent: 60 + - uid: 6408 + components: + - type: Transform + pos: 13.5,-3.5 + parent: 60 - uid: 6429 components: - type: Transform @@ -53201,6 +53089,11 @@ entities: - type: Transform pos: -75.5,-18.5 parent: 60 + - uid: 7238 + components: + - type: Transform + pos: 12.5,-3.5 + parent: 60 - uid: 7276 components: - type: Transform @@ -53211,6 +53104,16 @@ entities: - type: Transform pos: -69.5,-25.5 parent: 60 + - uid: 7421 + components: + - type: Transform + pos: 11.5,-3.5 + parent: 60 + - uid: 7431 + components: + - type: Transform + pos: 10.5,-3.5 + parent: 60 - uid: 7467 components: - type: Transform @@ -53771,11 +53674,6 @@ entities: - type: Transform pos: 31.5,-77.5 parent: 60 - - uid: 9562 - components: - - type: Transform - pos: 10.5,-17.5 - parent: 60 - uid: 9748 components: - type: Transform @@ -54322,11 +54220,6 @@ entities: - type: Transform pos: -13.5,-46.5 parent: 60 - - uid: 11432 - components: - - type: Transform - pos: 10.5,-15.5 - parent: 60 - uid: 11490 components: - type: Transform @@ -59262,11 +59155,11 @@ entities: rot: -1.5707963267948966 rad pos: 49.5,-11.5 parent: 60 - - uid: 11683 + - uid: 4006 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 12.52908,-13.379191 + rot: -1.5707963267948966 rad + pos: 11.5,-14.5 parent: 60 - uid: 16150 components: @@ -59279,6 +59172,14 @@ entities: rot: 3.141592653589793 rad pos: -26.60413,44.66303 parent: 60 +- proto: ChairGreyscale + entities: + - uid: 8228 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 13.5,-10.5 + parent: 60 - proto: ChairOfficeDark entities: - uid: 492 @@ -60154,10 +60055,15 @@ entities: parent: 60 - proto: CigaretteSpent entities: - - uid: 7194 + - uid: 7223 components: - type: Transform - pos: 12.722401,-10.222941 + pos: 11.881467,-14.858844 + parent: 60 + - uid: 8590 + components: + - type: Transform + pos: 13.038995,-10.828611 parent: 60 - uid: 11564 components: @@ -60207,6 +60113,13 @@ entities: - type: Transform pos: -53.525055,-14.398706 parent: 60 +- proto: CigPackMixed + entities: + - uid: 8504 + components: + - type: Transform + pos: 13.49212,-10.547361 + parent: 60 - proto: CigPackRed entities: - uid: 8196 @@ -60529,6 +60442,11 @@ entities: parent: 60 - proto: ClosetEmergencyN2FilledRandom entities: + - uid: 7630 + components: + - type: Transform + pos: 9.5,-2.5 + parent: 60 - uid: 22006 components: - type: Transform @@ -60634,6 +60552,11 @@ entities: moles: Oxygen: 1.6495836 Nitrogen: 6.2055764 + - uid: 7564 + components: + - type: Transform + pos: 10.5,-12.5 + parent: 60 - uid: 12851 components: - type: Transform @@ -61642,6 +61565,11 @@ entities: - type: Transform pos: 55.800465,-12.206088 parent: 60 + - uid: 7226 + components: + - type: Transform + pos: 10.303342,-14.265094 + parent: 60 - proto: ClothingHeadHatPirate entities: - uid: 3744 @@ -61900,31 +61828,11 @@ entities: - type: Transform pos: -42.46292,12.379346 parent: 60 - - uid: 11259 - components: - - type: Transform - pos: 12.37671,-15.364663 - parent: 60 - uid: 21241 components: - type: Transform pos: -70.49764,19.650846 parent: 60 - - uid: 24690 - components: - - type: Transform - pos: 12.392335,-15.567788 - parent: 60 - - uid: 24691 - components: - - type: Transform - pos: 12.65796,-15.442788 - parent: 60 - - uid: 24692 - components: - - type: Transform - pos: 12.65796,-15.614663 - parent: 60 - proto: ClothingMaskBreathMedical entities: - uid: 4033 @@ -62391,20 +62299,6 @@ entities: - type: Transform pos: -64.59717,0.6690302 parent: 60 -- proto: ClothingUniformJumpskirtJanimaid - entities: - - uid: 18529 - components: - - type: Transform - pos: 8.506187,-6.4335732 - parent: 60 -- proto: ClothingUniformJumpskirtJanimaidmini - entities: - - uid: 6944 - components: - - type: Transform - pos: 8.493573,-6.4299474 - parent: 60 - proto: ClothingUniformJumpskirtOfLife entities: - uid: 21692 @@ -64430,41 +64324,57 @@ entities: parent: 60 - proto: CryogenicSleepUnit entities: + - uid: 520 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 10.5,-16.5 + parent: 60 + - uid: 1439 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 10.5,-17.5 + parent: 60 + - uid: 1452 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 10.5,-15.5 + parent: 60 - uid: 1574 components: - type: Transform rot: -1.5707963267948966 rad pos: -9.5,-20.5 parent: 60 - - uid: 6056 + - uid: 3015 components: - type: Transform rot: 3.141592653589793 rad - pos: 10.5,-12.5 + pos: 47.5,-29.5 parent: 60 - - uid: 11682 + - uid: 3070 components: - type: Transform - rot: 3.141592653589793 rad - pos: 10.5,-11.5 + pos: 45.5,-23.5 parent: 60 - - uid: 13847 + - uid: 6505 components: - type: Transform - rot: 3.141592653589793 rad - pos: 10.5,-13.5 + pos: 45.5,-22.5 parent: 60 - proto: CryogenicSleepUnitSpawnerLateJoin entities: - - uid: 4283 + - uid: 1447 components: - type: Transform - pos: 13.5,-10.5 + pos: 13.5,-15.5 parent: 60 - - uid: 23954 + - uid: 1451 components: - type: Transform - pos: 13.5,-11.5 + pos: 13.5,-14.5 parent: 60 - proto: CryoPod entities: @@ -64778,10 +64688,10 @@ entities: parent: 60 - proto: DefaultStationBeaconCryosleep entities: - - uid: 23981 + - uid: 3128 components: - type: Transform - pos: 12.5,-12.5 + pos: 11.5,-15.5 parent: 60 - proto: DefaultStationBeaconDetectiveRoom entities: @@ -70365,6 +70275,12 @@ entities: - type: Transform pos: 51.488304,17.5316 parent: 60 + - uid: 7224 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.647092,-14.515094 + parent: 60 - uid: 9085 components: - type: Transform @@ -70385,27 +70301,6 @@ entities: - type: Transform pos: 51.66018,17.672226 parent: 60 - - uid: 23976 - components: - - type: Transform - pos: 13.274552,-13.238566 - parent: 60 - - uid: 23978 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 11.977677,-10.910441 - parent: 60 - - uid: 23979 - components: - - type: Transform - pos: 13.274552,-13.472941 - parent: 60 - - uid: 23980 - components: - - type: Transform - pos: 13.274552,-13.363566 - parent: 60 - proto: DrinkWhiskeyBottleFull entities: - uid: 16148 @@ -70820,26 +70715,6 @@ entities: - type: Transform pos: -70.41952,19.557096 parent: 60 - - uid: 24693 - components: - - type: Transform - pos: 13.329835,-15.302163 - parent: 60 - - uid: 24694 - components: - - type: Transform - pos: 13.34546,-15.489663 - parent: 60 - - uid: 24695 - components: - - type: Transform - pos: 13.611085,-15.520913 - parent: 60 - - uid: 24696 - components: - - type: Transform - pos: 13.62671,-15.317788 - parent: 60 - proto: Emitter entities: - uid: 13249 @@ -71050,6 +70925,13 @@ entities: parent: 60 - type: Fixtures fixtures: {} + - uid: 7658 + components: + - type: Transform + pos: 14.5,-9.5 + parent: 60 + - type: Fixtures + fixtures: {} - uid: 8028 components: - type: Transform @@ -71227,13 +71109,6 @@ entities: parent: 60 - type: Fixtures fixtures: {} - - uid: 21732 - components: - - type: Transform - pos: 14.5,-17.5 - parent: 60 - - type: Fixtures - fixtures: {} - uid: 21737 components: - type: Transform @@ -71385,13 +71260,6 @@ entities: parent: 60 - type: FaxMachine name: Bridge -- proto: FigureSpawner - entities: - - uid: 5340 - components: - - type: Transform - pos: -36.5,-34.5 - parent: 60 - proto: filingCabinetDrawerRandom entities: - uid: 1942 @@ -74288,6 +74156,11 @@ entities: - type: Transform pos: 3.4771476,-42.724022 parent: 60 + - uid: 8039 + components: + - type: Transform + pos: 8.475593,-7.4423304 + parent: 60 - uid: 12600 components: - type: Transform @@ -75042,148 +74915,6 @@ entities: - type: Transform pos: -54.45124,23.498655 parent: 60 -- proto: FloorTileItemGold - entities: - - uid: 18054 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18055 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18130 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18131 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18378 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18379 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18380 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18381 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18382 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18383 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18384 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18385 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18386 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18387 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18388 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18389 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18390 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18391 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18392 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18393 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18394 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18395 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18396 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18397 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18398 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18399 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18400 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - - uid: 18401 - components: - - type: Transform - pos: 8.50918,-6.461349 - parent: 60 - proto: FloorTileItemLino entities: - uid: 16990 @@ -75606,16 +75337,6 @@ entities: - type: Transform pos: 11.828171,-26.428648 parent: 60 -- proto: FuelDispenser - entities: - - uid: 24299 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,-2.5 - parent: 60 - - type: Fixtures - fixtures: {} - proto: GalaxythistleSeeds entities: - uid: 3414 @@ -76192,6 +75913,12 @@ entities: parent: 60 - type: AtmosPipeColor color: '#990000FF' + - uid: 2541 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 12.5,-16.5 + parent: 60 - uid: 2999 components: - type: Transform @@ -76820,14 +76547,6 @@ entities: parent: 60 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 11488 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 12.5,-12.5 - parent: 60 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 11723 components: - type: Transform @@ -78630,6 +78349,12 @@ entities: parent: 60 - type: AtmosPipeColor color: '#990000FF' + - uid: 521 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 15.5,-17.5 + parent: 60 - uid: 532 components: - type: Transform @@ -78638,6 +78363,12 @@ entities: parent: 60 - type: AtmosPipeColor color: '#990000FF' + - uid: 583 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 13.5,-17.5 + parent: 60 - uid: 617 components: - type: Transform @@ -79163,14 +78894,6 @@ entities: parent: 60 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 1064 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 17.5,-17.5 - parent: 60 - - type: AtmosPipeColor - color: '#990000FF' - uid: 1065 components: - type: Transform @@ -79955,6 +79678,23 @@ entities: parent: 60 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 1437 + components: + - type: Transform + pos: 17.5,-13.5 + parent: 60 + - uid: 1438 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 12.5,-17.5 + parent: 60 + - uid: 1440 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 14.5,-17.5 + parent: 60 - uid: 1459 components: - type: Transform @@ -81245,6 +80985,12 @@ entities: parent: 60 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 2542 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 16.5,-17.5 + parent: 60 - uid: 2545 components: - type: Transform @@ -82418,14 +82164,6 @@ entities: parent: 60 - type: AtmosPipeColor color: '#990000FF' - - uid: 4006 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 14.5,-13.5 - parent: 60 - - type: AtmosPipeColor - color: '#990000FF' - uid: 4008 components: - type: Transform @@ -85093,14 +84831,6 @@ entities: parent: 60 - type: AtmosPipeColor color: '#990000FF' - - uid: 6124 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 11.5,-16.5 - parent: 60 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 6134 components: - type: Transform @@ -85329,6 +85059,11 @@ entities: parent: 60 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 6346 + components: + - type: Transform + pos: 15.5,-12.5 + parent: 60 - uid: 6358 components: - type: Transform @@ -85790,14 +85525,6 @@ entities: parent: 60 - type: AtmosPipeColor color: '#990000FF' - - uid: 7200 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 16.5,-13.5 - parent: 60 - - type: AtmosPipeColor - color: '#990000FF' - uid: 7211 components: - type: Transform @@ -86796,14 +86523,6 @@ entities: parent: 60 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 11379 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 14.5,-12.5 - parent: 60 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 11727 components: - type: Transform @@ -87336,14 +87055,6 @@ entities: parent: 60 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 13573 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 13.5,-13.5 - parent: 60 - - type: AtmosPipeColor - color: '#990000FF' - uid: 13587 components: - type: Transform @@ -87407,14 +87118,6 @@ entities: parent: 60 - type: AtmosPipeColor color: '#990000FF' - - uid: 13640 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 12.5,-13.5 - parent: 60 - - type: AtmosPipeColor - color: '#990000FF' - uid: 13651 components: - type: Transform @@ -89611,14 +89314,6 @@ entities: parent: 60 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 15171 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 13.5,-12.5 - parent: 60 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 15279 components: - type: Transform @@ -94233,14 +93928,6 @@ entities: rot: -1.5707963267948966 rad pos: -54.5,51.5 parent: 60 - - uid: 23977 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 15.5,-13.5 - parent: 60 - - type: AtmosPipeColor - color: '#990000FF' - uid: 24357 components: - type: Transform @@ -96209,6 +95896,12 @@ entities: parent: 60 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 2543 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 17.5,-17.5 + parent: 60 - uid: 2693 components: - type: Transform @@ -96798,13 +96491,6 @@ entities: parent: 60 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 5890 - components: - - type: Transform - pos: 12.5,-16.5 - parent: 60 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 5891 components: - type: Transform @@ -97227,22 +96913,6 @@ entities: parent: 60 - type: AtmosPipeColor color: '#990000FF' - - uid: 11734 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 15.5,-12.5 - parent: 60 - - type: AtmosPipeColor - color: '#0055CCFF' - - uid: 11761 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 17.5,-13.5 - parent: 60 - - type: AtmosPipeColor - color: '#990000FF' - uid: 12302 components: - type: Transform @@ -99430,22 +99100,6 @@ entities: - 21612 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 5954 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,-16.5 - parent: 60 - - type: AtmosPipeColor - color: '#0055CCFF' - - uid: 5955 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 12.5,-17.5 - parent: 60 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 5956 components: - type: Transform @@ -99987,16 +99641,6 @@ entities: parent: 60 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 14770 - components: - - type: Transform - pos: 12.5,-11.5 - parent: 60 - - type: DeviceNetwork - deviceLists: - - 23956 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 15310 components: - type: Transform @@ -101942,17 +101586,6 @@ entities: parent: 60 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 23975 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 11.5,-13.5 - parent: 60 - - type: DeviceNetwork - deviceLists: - - 23956 - - type: AtmosPipeColor - color: '#990000FF' - uid: 24358 components: - type: Transform @@ -102146,6 +101779,16 @@ entities: - type: Transform pos: -60.5,-9.5 parent: 60 + - uid: 7200 + components: + - type: Transform + pos: 10.5,-11.5 + parent: 60 + - uid: 7213 + components: + - type: Transform + pos: 8.5,-6.5 + parent: 60 - uid: 9041 components: - type: Transform @@ -102161,11 +101804,6 @@ entities: - type: Transform pos: 29.5,-8.5 parent: 60 - - uid: 21405 - components: - - type: Transform - pos: 8.5,-5.5 - parent: 60 - uid: 23393 components: - type: Transform @@ -102398,21 +102036,6 @@ entities: - type: Transform pos: 50.5,53.5 parent: 60 - - uid: 601 - components: - - type: Transform - pos: 14.5,-3.5 - parent: 60 - - uid: 602 - components: - - type: Transform - pos: 14.5,-2.5 - parent: 60 - - uid: 606 - components: - - type: Transform - pos: 14.5,-4.5 - parent: 60 - uid: 631 components: - type: Transform @@ -102730,11 +102353,6 @@ entities: - type: Transform pos: 38.5,49.5 parent: 60 - - uid: 2543 - components: - - type: Transform - pos: 10.5,-14.5 - parent: 60 - uid: 2565 components: - type: Transform @@ -103358,10 +102976,10 @@ entities: - type: Transform pos: -46.5,-6.5 parent: 60 - - uid: 4544 + - uid: 4525 components: - type: Transform - pos: 14.5,-13.5 + pos: 9.5,-14.5 parent: 60 - uid: 4589 components: @@ -103668,6 +103286,11 @@ entities: - type: Transform pos: -45.5,2.5 parent: 60 + - uid: 5582 + components: + - type: Transform + pos: 14.5,-17.5 + parent: 60 - uid: 5586 components: - type: Transform @@ -103888,6 +103511,11 @@ entities: - type: Transform pos: 4.5,44.5 parent: 60 + - uid: 6407 + components: + - type: Transform + pos: 9.5,-16.5 + parent: 60 - uid: 6415 components: - type: Transform @@ -103928,6 +103556,16 @@ entities: - type: Transform pos: 6.5,16.5 parent: 60 + - uid: 6532 + components: + - type: Transform + pos: 6.5,-11.5 + parent: 60 + - uid: 6533 + components: + - type: Transform + pos: 10.5,-1.5 + parent: 60 - uid: 6547 components: - type: Transform @@ -103958,6 +103596,11 @@ entities: - type: Transform pos: -22.5,27.5 parent: 60 + - uid: 6581 + components: + - type: Transform + pos: 13.5,-9.5 + parent: 60 - uid: 6606 components: - type: Transform @@ -103968,6 +103611,11 @@ entities: - type: Transform pos: 30.5,-59.5 parent: 60 + - uid: 6681 + components: + - type: Transform + pos: 12.5,-9.5 + parent: 60 - uid: 6688 components: - type: Transform @@ -103993,6 +103641,11 @@ entities: - type: Transform pos: 46.5,-43.5 parent: 60 + - uid: 6756 + components: + - type: Transform + pos: 11.5,-9.5 + parent: 60 - uid: 6812 components: - type: Transform @@ -104003,11 +103656,21 @@ entities: - type: Transform pos: 31.5,-16.5 parent: 60 + - uid: 6843 + components: + - type: Transform + pos: 13.5,-5.5 + parent: 60 - uid: 6911 components: - type: Transform pos: 15.5,29.5 parent: 60 + - uid: 6944 + components: + - type: Transform + pos: 12.5,-5.5 + parent: 60 - uid: 6966 components: - type: Transform @@ -104018,16 +103681,31 @@ entities: - type: Transform pos: 3.5,-74.5 parent: 60 + - uid: 7035 + components: + - type: Transform + pos: 11.5,-5.5 + parent: 60 - uid: 7067 components: - type: Transform pos: -47.5,6.5 parent: 60 + - uid: 7071 + components: + - type: Transform + pos: 12.5,-1.5 + parent: 60 - uid: 7074 components: - type: Transform pos: -46.5,6.5 parent: 60 + - uid: 7088 + components: + - type: Transform + pos: 11.5,-1.5 + parent: 60 - uid: 7093 components: - type: Transform @@ -109853,11 +109531,6 @@ entities: - type: Transform pos: -53.5,-24.5 parent: 60 - - uid: 24353 - components: - - type: Transform - pos: 9.5,-13.5 - parent: 60 - uid: 24364 components: - type: Transform @@ -109993,36 +109666,6 @@ entities: - type: Transform pos: -62.5,-3.5 parent: 60 - - uid: 24646 - components: - - type: Transform - pos: 9.5,-12.5 - parent: 60 - - uid: 24647 - components: - - type: Transform - pos: 9.5,-11.5 - parent: 60 - - uid: 24648 - components: - - type: Transform - pos: 10.5,-10.5 - parent: 60 - - uid: 24649 - components: - - type: Transform - pos: 11.5,-9.5 - parent: 60 - - uid: 24650 - components: - - type: Transform - pos: 12.5,-9.5 - parent: 60 - - uid: 24651 - components: - - type: Transform - pos: 13.5,-9.5 - parent: 60 - uid: 25220 components: - type: Transform @@ -111530,10 +111173,10 @@ entities: parent: 60 - proto: HolopadGeneralCryosleep entities: - - uid: 24060 + - uid: 3594 components: - type: Transform - pos: 12.5,-12.5 + pos: 12.5,-15.5 parent: 60 - proto: HolopadGeneralDisposals entities: @@ -113841,6 +113484,13 @@ entities: - type: Transform pos: 49.47655,18.540401 parent: 60 +- proto: MechFigurineSpawner50 + entities: + - uid: 5340 + components: + - type: Transform + pos: -36.5,-34.5 + parent: 60 - proto: MedicalBed entities: - uid: 108 @@ -114659,11 +114309,6 @@ entities: - type: Transform pos: -50.5,49.5 parent: 60 - - uid: 7182 - components: - - type: Transform - pos: 13.5,-17.5 - parent: 60 - uid: 7615 components: - type: Transform @@ -115781,6 +115426,23 @@ entities: - type: Transform pos: 30.505884,-10.627335 parent: 60 +- proto: PlushieSpawner50 + entities: + - uid: 5303 + components: + - type: Transform + pos: -39.5,-34.5 + parent: 60 + - uid: 6968 + components: + - type: Transform + pos: -63.5,2.5 + parent: 60 + - uid: 17839 + components: + - type: Transform + pos: -47.5,20.5 + parent: 60 - proto: PonderingOrb entities: - uid: 7784 @@ -116276,13 +115938,6 @@ entities: parent: 60 - type: Fixtures fixtures: {} - - uid: 24674 - components: - - type: Transform - pos: 12.5,-14.5 - parent: 60 - - type: Fixtures - fixtures: {} - proto: PosterContrabandSpaceCola entities: - uid: 16098 @@ -117697,6 +117352,18 @@ entities: rot: 3.141592653589793 rad pos: -33.5,2.5 parent: 60 + - uid: 7193 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 11.5,-12.5 + parent: 60 + - uid: 7194 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 4.5,-10.5 + parent: 60 - uid: 10314 components: - type: Transform @@ -117803,12 +117470,6 @@ entities: - type: Transform pos: -32.5,-34.5 parent: 60 - - uid: 19568 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,-3.5 - parent: 60 - uid: 19569 components: - type: Transform @@ -117900,17 +117561,6 @@ entities: - type: Transform pos: -38.5,17.5 parent: 60 - - uid: 19633 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-10.5 - parent: 60 - - uid: 19637 - components: - - type: Transform - pos: 8.5,-2.5 - parent: 60 - uid: 19639 components: - type: Transform @@ -120075,14 +119725,6 @@ entities: parent: 60 - type: ApcPowerReceiver powerLoad: 0 - - uid: 1457 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 10.5,-17.5 - parent: 60 - - type: ApcPowerReceiver - powerLoad: 0 - uid: 1764 components: - type: Transform @@ -120261,6 +119903,12 @@ entities: rot: -1.5707963267948966 rad pos: -2.5,-10.5 parent: 60 + - uid: 8595 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 4.5,-3.5 + parent: 60 - uid: 8598 components: - type: Transform @@ -120293,12 +119941,6 @@ entities: rot: 3.141592653589793 rad pos: 12.5,-20.5 parent: 60 - - uid: 9367 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 12.5,-17.5 - parent: 60 - uid: 10035 components: - type: Transform @@ -120713,12 +120355,6 @@ entities: rot: 1.5707963267948966 rad pos: 57.5,3.5 parent: 60 - - uid: 24656 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 11.5,-13.5 - parent: 60 - uid: 24670 components: - type: Transform @@ -121003,20 +120639,15 @@ entities: - type: Transform pos: -0.5,15.5 parent: 60 - - uid: 7035 - components: - - type: Transform - pos: 12.5,-15.5 - parent: 60 - - uid: 7088 + - uid: 7703 components: - type: Transform - pos: 13.5,-15.5 + pos: 46.5,-1.5 parent: 60 - - uid: 7703 + - uid: 7711 components: - type: Transform - pos: 46.5,-1.5 + pos: 8.5,-7.5 parent: 60 - uid: 7737 components: @@ -122326,16 +121957,6 @@ entities: - type: Transform pos: 10.5,11.5 parent: 60 - - uid: 7431 - components: - - type: Transform - pos: -3.5,-66.5 - parent: 60 - - uid: 8228 - components: - - type: Transform - pos: -32.5,-24.5 - parent: 60 - uid: 8251 components: - type: Transform @@ -122363,21 +121984,11 @@ entities: parent: 60 - proto: RandomVendingSnacks entities: - - uid: 3070 - components: - - type: Transform - pos: -31.5,-24.5 - parent: 60 - uid: 6320 components: - type: Transform pos: 9.5,11.5 parent: 60 - - uid: 7421 - components: - - type: Transform - pos: -3.5,-65.5 - parent: 60 - uid: 18523 components: - type: Transform @@ -122437,11 +122048,6 @@ entities: parent: 60 - proto: ReinforcedGirder entities: - - uid: 11134 - components: - - type: Transform - pos: 9.5,-5.5 - parent: 60 - uid: 24143 components: - type: Transform @@ -122767,6 +122373,12 @@ entities: - type: Transform pos: 57.5,-6.5 parent: 60 + - uid: 288 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 11.5,-5.5 + parent: 60 - uid: 320 components: - type: Transform @@ -122842,6 +122454,12 @@ entities: - type: Transform pos: 20.5,1.5 parent: 60 + - uid: 455 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 13.5,-9.5 + parent: 60 - uid: 493 components: - type: Transform @@ -122862,10 +122480,21 @@ entities: - type: Transform pos: -68.5,11.5 parent: 60 - - uid: 603 + - uid: 587 components: - type: Transform - pos: 14.5,-4.5 + pos: 9.5,-14.5 + parent: 60 + - uid: 588 + components: + - type: Transform + pos: 9.5,-16.5 + parent: 60 + - uid: 602 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 11.5,-1.5 parent: 60 - uid: 604 components: @@ -123027,6 +122656,12 @@ entities: - type: Transform pos: 5.5,-26.5 parent: 60 + - uid: 1434 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 12.5,-1.5 + parent: 60 - uid: 1442 components: - type: Transform @@ -123153,11 +122788,6 @@ entities: - type: Transform pos: 42.5,-32.5 parent: 60 - - uid: 2542 - components: - - type: Transform - pos: 10.5,-10.5 - parent: 60 - uid: 2591 components: - type: Transform @@ -123273,6 +122903,12 @@ entities: - type: Transform pos: 48.5,-19.5 parent: 60 + - uid: 3125 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 11.5,-9.5 + parent: 60 - uid: 3131 components: - type: Transform @@ -123573,11 +123209,6 @@ entities: - type: Transform pos: 40.5,-25.5 parent: 60 - - uid: 4531 - components: - - type: Transform - pos: 14.5,-13.5 - parent: 60 - uid: 4549 components: - type: Transform @@ -123866,12 +123497,8 @@ entities: - uid: 5457 components: - type: Transform - pos: 14.5,-3.5 - parent: 60 - - uid: 5458 - components: - - type: Transform - pos: 14.5,-2.5 + rot: 3.141592653589793 rad + pos: 13.5,-5.5 parent: 60 - uid: 5519 components: @@ -123973,6 +123600,11 @@ entities: - type: Transform pos: -55.5,-24.5 parent: 60 + - uid: 6056 + components: + - type: Transform + pos: 14.5,-17.5 + parent: 60 - uid: 6061 components: - type: Transform @@ -123983,6 +123615,12 @@ entities: - type: Transform pos: -47.5,10.5 parent: 60 + - uid: 6124 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 12.5,-5.5 + parent: 60 - uid: 6169 components: - type: Transform @@ -124033,6 +123671,12 @@ entities: - type: Transform pos: 57.5,-13.5 parent: 60 + - uid: 6486 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 12.5,-9.5 + parent: 60 - uid: 6520 components: - type: Transform @@ -124133,6 +123777,11 @@ entities: - type: Transform pos: 45.5,-25.5 parent: 60 + - uid: 7047 + components: + - type: Transform + pos: 10.5,-1.5 + parent: 60 - uid: 7068 components: - type: Transform @@ -124163,25 +123812,10 @@ entities: - type: Transform pos: 3.5,-74.5 parent: 60 - - uid: 7193 - components: - - type: Transform - pos: 9.5,-12.5 - parent: 60 - uid: 7199 components: - type: Transform - pos: 9.5,-13.5 - parent: 60 - - uid: 7223 - components: - - type: Transform - pos: 12.5,-9.5 - parent: 60 - - uid: 7224 - components: - - type: Transform - pos: 10.5,-14.5 + pos: 6.5,-11.5 parent: 60 - uid: 7244 components: @@ -124513,11 +124147,6 @@ entities: - type: Transform pos: -65.5,14.5 parent: 60 - - uid: 8039 - components: - - type: Transform - pos: 11.5,-9.5 - parent: 60 - uid: 8194 components: - type: Transform @@ -126864,16 +126493,6 @@ entities: - type: Transform pos: 57.5,32.5 parent: 60 - - uid: 24087 - components: - - type: Transform - pos: 13.5,-9.5 - parent: 60 - - uid: 24271 - components: - - type: Transform - pos: 9.5,-11.5 - parent: 60 - uid: 24540 components: - type: Transform @@ -127046,14 +126665,6 @@ entities: parent: 60 - proto: Screen entities: - - uid: 5582 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 13.5,-14.5 - parent: 60 - - type: Fixtures - fixtures: {} - uid: 15599 components: - type: Transform @@ -129750,10 +129361,10 @@ entities: fixtures: {} - proto: SignCryo entities: - - uid: 23955 + - uid: 3161 components: - type: Transform - pos: 14.5,-11.5 + pos: 14.5,-15.5 parent: 60 - type: Fixtures fixtures: {} @@ -130840,13 +130451,6 @@ entities: fixtures: {} - proto: SignEVA entities: - - uid: 1452 - components: - - type: Transform - pos: 14.5,-15.5 - parent: 60 - - type: Fixtures - fixtures: {} - uid: 3745 components: - type: Transform @@ -131585,13 +131189,6 @@ entities: fixtures: {} - proto: SignSpace entities: - - uid: 1451 - components: - - type: Transform - pos: 11.5,-15.5 - parent: 60 - - type: Fixtures - fixtures: {} - uid: 3275 components: - type: Transform @@ -135900,17 +135497,6 @@ entities: - SurveillanceCameraCommand nameSet: True id: AI Sat Bridge - - uid: 21051 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-7.5 - parent: 60 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraCommand - nameSet: True - id: Vault - uid: 21052 components: - type: Transform @@ -136105,17 +135691,6 @@ entities: - SurveillanceCameraCommand nameSet: True id: AI Sat Tunnel - - uid: 24276 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 11.5,-4.5 - parent: 60 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraCommand - nameSet: True - id: Bridge Exterior Access - uid: 24285 components: - type: Transform @@ -136137,27 +135712,6 @@ entities: - SurveillanceCameraCommand nameSet: True id: HoP Bedroom - - uid: 24719 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,-2.5 - parent: 60 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraCommand - nameSet: True - id: Bridge Airlock - - uid: 24720 - components: - - type: Transform - pos: 4.5,-3.5 - parent: 60 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraCommand - nameSet: True - id: Bridge Power Closet - uid: 24757 components: - type: Transform @@ -136648,6 +136202,17 @@ entities: - SurveillanceCameraGeneral nameSet: True id: Science front north hall + - uid: 4544 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 11.5,-14.5 + parent: 60 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraGeneral + nameSet: True + id: Cryosleep - uid: 7157 components: - type: Transform @@ -136821,16 +136386,6 @@ entities: - SurveillanceCameraGeneral nameSet: True id: Bagel Space - - uid: 23958 - components: - - type: Transform - pos: 12.5,-13.5 - parent: 60 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraGeneral - nameSet: True - id: Cryosleep - uid: 24269 components: - type: Transform @@ -137049,28 +136604,6 @@ entities: - SurveillanceCameraGeneral nameSet: True id: News Room - - uid: 24731 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 12.5,-15.5 - parent: 60 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraGeneral - nameSet: True - id: Bagel Central Eva Closet - - uid: 24732 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,-15.5 - parent: 60 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraGeneral - nameSet: True - id: Bagel Central Eva Airlock - uid: 24739 components: - type: Transform @@ -138197,6 +137730,11 @@ entities: rot: 1.5707963267948966 rad pos: 49.5,-13.5 parent: 60 + - uid: 4531 + components: + - type: Transform + pos: 10.5,-14.5 + parent: 60 - uid: 4577 components: - type: Transform @@ -138533,11 +138071,6 @@ entities: - type: Transform pos: -54.5,-5.5 parent: 60 - - uid: 11344 - components: - - type: Transform - pos: 13.5,-13.5 - parent: 60 - uid: 11482 components: - type: Transform @@ -140883,23 +140416,6 @@ entities: - type: Transform pos: -2.47266,-11.475237 parent: 60 -- proto: ToySpawner - entities: - - uid: 5303 - components: - - type: Transform - pos: -39.5,-34.5 - parent: 60 - - uid: 6968 - components: - - type: Transform - pos: -63.5,2.5 - parent: 60 - - uid: 17839 - components: - - type: Transform - pos: -47.5,20.5 - parent: 60 - proto: TrashBag entities: - uid: 926 @@ -142710,11 +142226,6 @@ entities: - type: Transform pos: 50.5,-19.5 parent: 60 - - uid: 455 - components: - - type: Transform - pos: 10.5,-2.5 - parent: 60 - uid: 456 components: - type: Transform @@ -142766,11 +142277,6 @@ entities: - type: Transform pos: -13.5,6.5 parent: 60 - - uid: 520 - components: - - type: Transform - pos: 14.5,-17.5 - parent: 60 - uid: 522 components: - type: Transform @@ -142915,30 +142421,15 @@ entities: - type: Transform pos: 14.5,-18.5 parent: 60 - - uid: 583 - components: - - type: Transform - pos: 14.5,-17.5 - parent: 60 - uid: 586 components: - type: Transform - pos: 14.5,-15.5 - parent: 60 - - uid: 587 - components: - - type: Transform - pos: 14.5,-15.5 - parent: 60 - - uid: 588 - components: - - type: Transform - pos: 14.5,-15.5 + pos: 10.5,-8.5 parent: 60 - uid: 589 components: - type: Transform - pos: 14.5,-15.5 + pos: 14.5,-13.5 parent: 60 - uid: 590 components: @@ -142975,6 +142466,18 @@ entities: - type: Transform pos: 14.5,-6.5 parent: 60 + - uid: 603 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 9.5,-12.5 + parent: 60 + - uid: 606 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 9.5,-11.5 + parent: 60 - uid: 624 components: - type: Transform @@ -143214,6 +142717,12 @@ entities: - type: Transform pos: -27.5,-10.5 parent: 60 + - uid: 1064 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 7.5,-11.5 + parent: 60 - uid: 1123 components: - type: Transform @@ -143433,36 +142942,6 @@ entities: - type: Transform pos: 24.5,22.5 parent: 60 - - uid: 1434 - components: - - type: Transform - pos: 9.5,-14.5 - parent: 60 - - uid: 1436 - components: - - type: Transform - pos: 11.5,-14.5 - parent: 60 - - uid: 1437 - components: - - type: Transform - pos: 12.5,-14.5 - parent: 60 - - uid: 1438 - components: - - type: Transform - pos: 13.5,-14.5 - parent: 60 - - uid: 1439 - components: - - type: Transform - pos: 11.5,-17.5 - parent: 60 - - uid: 1440 - components: - - type: Transform - pos: 11.5,-15.5 - parent: 60 - uid: 1448 components: - type: Transform @@ -145581,6 +145060,11 @@ entities: - type: Transform pos: 6.5,-62.5 parent: 60 + - uid: 5209 + components: + - type: Transform + pos: 10.5,-9.5 + parent: 60 - uid: 5213 components: - type: Transform @@ -145791,6 +145275,11 @@ entities: - type: Transform pos: 14.5,6.5 parent: 60 + - uid: 5458 + components: + - type: Transform + pos: 14.5,-15.5 + parent: 60 - uid: 5483 components: - type: Transform @@ -146061,6 +145550,11 @@ entities: - type: Transform pos: -63.5,-7.5 parent: 60 + - uid: 5890 + components: + - type: Transform + pos: 10.5,-7.5 + parent: 60 - uid: 5903 components: - type: Transform @@ -146076,6 +145570,11 @@ entities: - type: Transform pos: -55.5,30.5 parent: 60 + - uid: 5954 + components: + - type: Transform + pos: 10.5,-6.5 + parent: 60 - uid: 5960 components: - type: Transform @@ -146231,6 +145730,12 @@ entities: - type: Transform pos: -52.5,52.5 parent: 60 + - uid: 6345 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 8.5,-11.5 + parent: 60 - uid: 6351 components: - type: Transform @@ -146301,6 +145806,11 @@ entities: - type: Transform pos: 10.5,43.5 parent: 60 + - uid: 6409 + components: + - type: Transform + pos: 10.5,-5.5 + parent: 60 - uid: 6420 components: - type: Transform @@ -146341,6 +145851,11 @@ entities: - type: Transform pos: 57.5,-9.5 parent: 60 + - uid: 6490 + components: + - type: Transform + pos: 9.5,-13.5 + parent: 60 - uid: 6506 components: - type: Transform @@ -146366,6 +145881,11 @@ entities: - type: Transform pos: 7.5,21.5 parent: 60 + - uid: 6531 + components: + - type: Transform + pos: 13.5,-1.5 + parent: 60 - uid: 6537 components: - type: Transform @@ -150047,11 +149567,6 @@ entities: - type: Transform pos: -4.5,2.5 parent: 60 - - uid: 17940 - components: - - type: Transform - pos: 10.5,-4.5 - parent: 60 - uid: 17977 components: - type: Transform @@ -150092,11 +149607,6 @@ entities: - type: Transform pos: 2.5,-4.5 parent: 60 - - uid: 18030 - components: - - type: Transform - pos: 2.5,-9.5 - parent: 60 - uid: 18031 components: - type: Transform @@ -150112,16 +149622,6 @@ entities: - type: Transform pos: 2.5,-8.5 parent: 60 - - uid: 18035 - components: - - type: Transform - pos: 9.5,-4.5 - parent: 60 - - uid: 18036 - components: - - type: Transform - pos: 2.5,-10.5 - parent: 60 - uid: 18037 components: - type: Transform @@ -150177,11 +149677,6 @@ entities: - type: Transform pos: -1.5,-4.5 parent: 60 - - uid: 18048 - components: - - type: Transform - pos: 8.5,-7.5 - parent: 60 - uid: 18049 components: - type: Transform @@ -150197,11 +149692,6 @@ entities: - type: Transform pos: -5.5,-1.5 parent: 60 - - uid: 18053 - components: - - type: Transform - pos: 5.5,-9.5 - parent: 60 - uid: 18056 components: - type: Transform @@ -150212,21 +149702,6 @@ entities: - type: Transform pos: 5.5,-0.5 parent: 60 - - uid: 18064 - components: - - type: Transform - pos: 9.5,-6.5 - parent: 60 - - uid: 18065 - components: - - type: Transform - pos: 10.5,-6.5 - parent: 60 - - uid: 18066 - components: - - type: Transform - pos: 10.5,-5.5 - parent: 60 - uid: 18069 components: - type: Transform @@ -150252,21 +149727,11 @@ entities: - type: Transform pos: -4.5,-0.5 parent: 60 - - uid: 18074 - components: - - type: Transform - pos: 9.5,-7.5 - parent: 60 - uid: 18075 components: - type: Transform pos: 4.5,-11.5 parent: 60 - - uid: 18077 - components: - - type: Transform - pos: 9.5,-2.5 - parent: 60 - uid: 18091 components: - type: Transform @@ -150457,11 +149922,6 @@ entities: - type: Transform pos: 5.5,-11.5 parent: 60 - - uid: 18377 - components: - - type: Transform - pos: 5.5,-10.5 - parent: 60 - uid: 18521 components: - type: Transform @@ -152339,6 +151799,11 @@ entities: - type: Transform pos: 38.5,-35.5 parent: 60 + - uid: 601 + components: + - type: Transform + pos: 13.5,-13.5 + parent: 60 - uid: 620 components: - type: Transform @@ -152479,6 +151944,11 @@ entities: - type: Transform pos: -13.5,22.5 parent: 60 + - uid: 815 + components: + - type: Transform + pos: 11.5,-13.5 + parent: 60 - uid: 819 components: - type: Transform @@ -152681,6 +152151,11 @@ entities: - type: Transform pos: -16.5,-27.5 parent: 60 + - uid: 1435 + components: + - type: Transform + pos: 14.5,-4.5 + parent: 60 - uid: 1593 components: - type: Transform @@ -153969,11 +153444,6 @@ entities: - type: Transform pos: -36.5,-33.5 parent: 60 - - uid: 4525 - components: - - type: Transform - pos: 14.5,-11.5 - parent: 60 - uid: 4569 components: - type: Transform @@ -154205,6 +153675,11 @@ entities: - type: Transform pos: 42.5,-19.5 parent: 60 + - uid: 5854 + components: + - type: Transform + pos: 14.5,-11.5 + parent: 60 - uid: 5874 components: - type: Transform @@ -154300,6 +153775,16 @@ entities: - type: Transform pos: 41.5,-11.5 parent: 60 + - uid: 6487 + components: + - type: Transform + pos: 14.5,-10.5 + parent: 60 + - uid: 6489 + components: + - type: Transform + pos: 10.5,-13.5 + parent: 60 - uid: 6509 components: - type: Transform @@ -154320,6 +153805,21 @@ entities: - type: Transform pos: -0.5,16.5 parent: 60 + - uid: 6534 + components: + - type: Transform + pos: 2.5,-9.5 + parent: 60 + - uid: 6535 + components: + - type: Transform + pos: 2.5,-10.5 + parent: 60 + - uid: 6548 + components: + - type: Transform + pos: 14.5,-2.5 + parent: 60 - uid: 6552 components: - type: Transform @@ -154420,6 +153920,11 @@ entities: - type: Transform pos: 44.5,-44.5 parent: 60 + - uid: 7120 + components: + - type: Transform + pos: 10.5,-4.5 + parent: 60 - uid: 7121 components: - type: Transform @@ -154440,6 +153945,11 @@ entities: - type: Transform pos: 11.5,-25.5 parent: 60 + - uid: 7182 + components: + - type: Transform + pos: 7.5,-10.5 + parent: 60 - uid: 7188 components: - type: Transform @@ -155936,11 +155446,6 @@ entities: - type: Transform pos: -1.5,-9.5 parent: 60 - - uid: 18063 - components: - - type: Transform - pos: 8.5,-4.5 - parent: 60 - uid: 18117 components: - type: Transform @@ -156386,11 +155891,6 @@ entities: - type: Transform pos: 28.5,-35.5 parent: 60 - - uid: 23960 - components: - - type: Transform - pos: 14.5,-10.5 - parent: 60 - uid: 23962 components: - type: Transform @@ -157044,15 +156544,15 @@ entities: - type: Transform pos: -67.5,6.5 parent: 60 - - uid: 4297 + - uid: 4283 components: - type: Transform - pos: -50.5,-21.5 + pos: 13.5,-17.5 parent: 60 - - uid: 5863 + - uid: 4297 components: - type: Transform - pos: 11.5,-10.5 + pos: -50.5,-21.5 parent: 60 - uid: 7250 components: @@ -157383,6 +156883,11 @@ entities: - type: Transform pos: -28.5,-36.5 parent: 60 + - uid: 6488 + components: + - type: Transform + pos: 11.5,-4.5 + parent: 60 - uid: 8738 components: - type: Transform @@ -158516,11 +158021,6 @@ entities: parent: 60 - proto: WindowReinforcedDirectional entities: - - uid: 521 - components: - - type: Transform - pos: 10.5,-9.5 - parent: 60 - uid: 836 components: - type: Transform @@ -158833,12 +158333,6 @@ entities: - type: Transform pos: -14.5,-44.5 parent: 60 - - uid: 7226 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 9.5,-10.5 - parent: 60 - uid: 7436 components: - type: Transform From 69cd61ac2ebcebd0efd316354a51cb2f6c10597c Mon Sep 17 00:00:00 2001 From: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> Date: Wed, 21 Jan 2026 23:30:08 -0800 Subject: [PATCH 077/603] Tweak traitor deception items (#42510) tweak --- .../Prototypes/Catalog/uplink_catalog.yml | 38 ++++++------------- .../Structures/Storage/Closets/big_boxes.yml | 2 +- 2 files changed, 12 insertions(+), 28 deletions(-) diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index f9d559afbb9..773f748e28f 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -935,19 +935,6 @@ categories: - UplinkDeception -- type: listing - id: UplinkUltrabrightLantern - name: uplink-ultrabright-lantern-name - description: uplink-ultrabright-lantern-desc - productEntity: LanternFlash - discountCategory: usualDiscounts - discountDownTo: - Telecrystal: 1 - cost: - Telecrystal: 2 - categories: - - UplinkDeception - - type: listing id: UplinkBribe name: uplink-bribe-name @@ -971,20 +958,6 @@ # categories: # - UplinkDeception -- type: listing - id: UplinkDecoyKit - name: uplink-decoy-kit-name - description: uplink-decoy-kit-desc - icon: { sprite: /Textures/Objects/Tools/Decoys/operative_decoy.rsi, state: folded } - productEntity: ClothingBackpackDuffelSyndicateDecoyKitFilled - discountCategory: usualDiscounts - discountDownTo: - Telecrystal: 3 - cost: - Telecrystal: 6 - categories: - - UplinkDeception - - type: listing id: UplinkSyndicateBombFake name: uplink-exploding-syndicate-bomb-fake-name @@ -2034,6 +2007,17 @@ - !type:ListingLimitedStockCondition stock: 3 +- type: listing + id: UplinkDecoyKit + name: uplink-decoy-kit-name + description: uplink-decoy-kit-desc + icon: { sprite: /Textures/Objects/Tools/Decoys/operative_decoy.rsi, state: folded } + productEntity: ClothingBackpackDuffelSyndicateDecoyKitFilled + cost: + Telecrystal: 1 + categories: + - UplinkPointless + # Job Specific - type: listing diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/big_boxes.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/big_boxes.yml index 64069e7c6a7..9861bcae692 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/big_boxes.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/big_boxes.yml @@ -70,7 +70,7 @@ - type: Stealth hadOutline: true - type: StealthOnMove - passiveVisibilityRate: -0.37 + passiveVisibilityRate: -1 # very useful for going around the station concealed, if you start jitterstrafing you get seen movementVisibilityRate: 0.20 - type: entity From 1bfe7a0d1136a1d378ce1aac23288335754d7bd8 Mon Sep 17 00:00:00 2001 From: PJBot Date: Thu, 22 Jan 2026 07:46:30 +0000 Subject: [PATCH 078/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index cb0993a6f11..f1eca6a6179 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: ScarKy0 - changes: - - message: The size of the antique laser pistol and appraisal tool have been reverted - to an L and 1x2 respectfully. - type: Tweak - id: 8935 - time: '2025-09-06T15:13:43.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40158 - author: ToastEnjoyer changes: - message: On box, fixed a bug where there was a disconnected grid at the tesla @@ -3960,3 +3952,16 @@ id: 9441 time: '2026-01-22T02:43:47.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42579 +- author: ArtisticRoomba + changes: + - message: Extra-bright lantern has been removed from the traitor uplink. + type: Remove + - message: Stealthbox has been buffed significantly, you'll be able to remain in + stealth for much longer when moving at speed. + type: Tweak + - message: Decoy bundle has been moved to the Useless category and reduced to 1 + TC in the traitor uplink. + type: Tweak + id: 9442 + time: '2026-01-22T07:45:20.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42510 From 1a0b108bdd3dfb2c6daba1f2a6fc54eaaf917c69 Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Thu, 22 Jan 2026 10:44:31 +0100 Subject: [PATCH 079/603] Force-prying crit borgs opens borg panel (#42460) yeah --- .../Lock/BypassLock/Components/BypassLockComponent.cs | 8 +++++++- .../Lock/BypassLock/Systems/BypassLockSystem.cs | 9 ++++++++- .../Entities/Mobs/Cyborgs/base_borg_chassis.yml | 1 + 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Content.Shared/Lock/BypassLock/Components/BypassLockComponent.cs b/Content.Shared/Lock/BypassLock/Components/BypassLockComponent.cs index 38c6275d86b..377c12cc6d9 100644 --- a/Content.Shared/Lock/BypassLock/Components/BypassLockComponent.cs +++ b/Content.Shared/Lock/BypassLock/Components/BypassLockComponent.cs @@ -21,5 +21,11 @@ public sealed partial class BypassLockComponent : Component /// Amount of time in seconds it takes to bypass /// [DataField] - public TimeSpan BypassDelay = TimeSpan.FromSeconds(5f); + public TimeSpan BypassDelay = TimeSpan.FromSeconds(4f); + + /// + /// Whether the wirepanel should be opened as well, if one exists. + /// + [DataField] + public bool OpenWiresPanel = false; } diff --git a/Content.Shared/Lock/BypassLock/Systems/BypassLockSystem.cs b/Content.Shared/Lock/BypassLock/Systems/BypassLockSystem.cs index 1dcc4ee74a2..406e898c599 100644 --- a/Content.Shared/Lock/BypassLock/Systems/BypassLockSystem.cs +++ b/Content.Shared/Lock/BypassLock/Systems/BypassLockSystem.cs @@ -6,6 +6,7 @@ using Content.Shared.Tools; using Content.Shared.Tools.Systems; using Content.Shared.Verbs; +using Content.Shared.Wires; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; @@ -16,6 +17,7 @@ public sealed partial class BypassLockSystem : EntitySystem [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; [Dependency] private readonly LockSystem _lock = default!; [Dependency] private readonly SharedToolSystem _tool = default!; + [Dependency] private readonly SharedWiresSystem _wires = default!; public override void Initialize() { @@ -32,7 +34,7 @@ private void OnInteractUsing(Entity target, ref InteractUsi { if (target.Owner == args.User) return; - + if (!_tool.HasQuality(args.Used, target.Comp.BypassingTool) || !_lock.IsLocked(target.Owner)) return; @@ -70,6 +72,11 @@ private void OnBypassAccessDoAfterEvent(Entity target, ref ForceO return; _lock.Unlock(target, args.User, target.Comp); + + if (TryComp(target, out var wiresPanel) && + TryComp(target, out var bypassLock) && bypassLock.OpenWiresPanel) + _wires.TogglePanel(target, wiresPanel, true, args.User); + } private void OnGetVerb(Entity target, ref GetVerbsEvent args) diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index ed61df6eff8..b20116333fb 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -247,6 +247,7 @@ flatReductions: Heat: 10 # capable of touching light bulbs and stoves without feeling pain! - type: BypassLock + openWiresPanel: true - type: BypassLockRequiresMobState requiredMobState: - Critical From dc4473942048632ee830911cce51f223d030246a Mon Sep 17 00:00:00 2001 From: PJBot Date: Thu, 22 Jan 2026 10:00:57 +0000 Subject: [PATCH 080/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index f1eca6a6179..faa1f4bc67c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: ToastEnjoyer - changes: - - message: On box, fixed a bug where there was a disconnected grid at the tesla - engine spot. - type: Fix - id: 8936 - time: '2025-09-06T16:00:24.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40161 - author: Dutch-VanDerLinde changes: - message: Some jumpsuits may now be folded to give them an alternate look. @@ -3965,3 +3957,10 @@ id: 9442 time: '2026-01-22T07:45:20.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42510 +- author: ScarKy0 + changes: + - message: Force-prying crit borgs now also opens their panel. + type: Tweak + id: 9443 + time: '2026-01-22T09:59:49.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42460 From 8e1145b1fca8bfb6e3b858b54d3146d8de74cc66 Mon Sep 17 00:00:00 2001 From: c4llv07e Date: Thu, 22 Jan 2026 19:37:45 +0300 Subject: [PATCH 081/603] Cargo console rework (retry) (#34052) * Cargo console upgraded * add comment of hardcode * Update Resources/Locale/en-US/cargo/cargo-console-component.ftl Co-authored-by: Thomas <87614336+Aeshus@users.noreply.github.com> * Update Content.Client/Cargo/UI/CargoConsoleMenu.xaml.cs Co-authored-by: Thomas <87614336+Aeshus@users.noreply.github.com> * Update Content.Client/Cargo/UI/CargoConsoleOrderMenu.xaml Co-authored-by: Thomas <87614336+Aeshus@users.noreply.github.com> * Some small technical improvements * More indent * Fix unknown requester name * whitespace cleanup * Small improvement * Add order price to the title * Fix build errors * Port new slip system * Remove unused loc * Some required changes * Add stride * minor code style + update to sheetlets --------- Co-authored-by: VideoKompany <135313844+VlaDOS1408@users.noreply.github.com> Co-authored-by: Thomas <87614336+Aeshus@users.noreply.github.com> Co-authored-by: Janet Blackquill --- .../CargoOrderConsoleBoundUserInterface.cs | 16 +- Content.Client/Cargo/UI/CargoConsoleMenu.xaml | 304 +++++++++++++----- .../Cargo/UI/CargoConsoleMenu.xaml.cs | 54 +++- .../Cargo/UI/CargoConsoleOrderMenu.xaml | 48 ++- Content.Client/Cargo/UI/CargoOrderRow.xaml | 108 +++++-- Content.Client/Cargo/UI/CargoProductRow.xaml | 58 ++-- .../Cargo/UI/CargoProductRow.xaml.cs | 2 +- .../en-US/cargo/cargo-console-component.ftl | 14 +- 8 files changed, 427 insertions(+), 177 deletions(-) diff --git a/Content.Client/Cargo/BUI/CargoOrderConsoleBoundUserInterface.cs b/Content.Client/Cargo/BUI/CargoOrderConsoleBoundUserInterface.cs index 3bd220bfadd..9cd614de14c 100644 --- a/Content.Client/Cargo/BUI/CargoOrderConsoleBoundUserInterface.cs +++ b/Content.Client/Cargo/BUI/CargoOrderConsoleBoundUserInterface.cs @@ -70,9 +70,9 @@ protected override void Open() _menu.OnClose += Close; - _menu.OnItemSelected += (args) => + _menu.OnItemSelected += (row) => { - if (args.Button.Parent is not CargoProductRow row) + if (row == null) return; description.Clear(); @@ -175,23 +175,23 @@ private bool AddOrder() return true; } - private void RemoveOrder(ButtonEventArgs args) + private void RemoveOrder(CargoOrderData? order) { - if (args.Button.Parent?.Parent is not CargoOrderRow row || row.Order == null) + if (order == null) return; - SendMessage(new CargoConsoleRemoveOrderMessage(row.Order.OrderId)); + SendMessage(new CargoConsoleRemoveOrderMessage(order.OrderId)); } - private void ApproveOrder(ButtonEventArgs args) + private void ApproveOrder(CargoOrderData? order) { - if (args.Button.Parent?.Parent is not CargoOrderRow row || row.Order == null) + if (order == null) return; if (OrderCount >= OrderCapacity) return; - SendMessage(new CargoConsoleApproveOrderMessage(row.Order.OrderId)); + SendMessage(new CargoConsoleApproveOrderMessage(order.OrderId)); } } } diff --git a/Content.Client/Cargo/UI/CargoConsoleMenu.xaml b/Content.Client/Cargo/UI/CargoConsoleMenu.xaml index 940352dc485..3ecfad94aae 100644 --- a/Content.Client/Cargo/UI/CargoConsoleMenu.xaml +++ b/Content.Client/Cargo/UI/CargoConsoleMenu.xaml @@ -1,86 +1,226 @@ - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -18,9 +29,13 @@ diff --git a/Content.Client/SprayPainter/UI/SprayPainterDecals.xaml.cs b/Content.Client/SprayPainter/UI/SprayPainterDecals.xaml.cs index 64d1f78d3ce..66530eba917 100644 --- a/Content.Client/SprayPainter/UI/SprayPainterDecals.xaml.cs +++ b/Content.Client/SprayPainter/UI/SprayPainterDecals.xaml.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using Content.Client.Decals.UI; using Content.Client.Stylesheets; using Content.Shared.Decals; using Robust.Client.AutoGenerated; @@ -8,6 +8,8 @@ using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; using Robust.Shared.Prototypes; +using System.Linq; +using System.Numerics; namespace Content.Client.SprayPainter.UI; @@ -21,6 +23,9 @@ public sealed partial class SprayPainterDecals : Control public Action? OnColorChanged; public Action? OnAngleChanged; public Action? OnSnapChanged; + public Action? OnColorPickerToggled; + + private PaletteColorPicker? _palette; private SpriteSystem? _sprite; private string _selectedDecal = string.Empty; @@ -30,14 +35,17 @@ public SprayPainterDecals() { RobustXamlLoader.Load(this); - AddAngleButton.OnButtonUp += _ => AngleSpinBox.Value += 90; - SubAngleButton.OnButtonUp += _ => AngleSpinBox.Value -= 90; + AddAngleButton.OnButtonUp += _ => AngleSpinBox.Value = (AngleSpinBox.Value + 90) % 360; + SubAngleButton.OnButtonUp += _ => AngleSpinBox.Value = (AngleSpinBox.Value - 90) % 360; SetZeroAngleButton.OnButtonUp += _ => AngleSpinBox.Value = 0; AngleSpinBox.ValueChanged += args => OnAngleChanged?.Invoke(args.Value); UseCustomColorCheckBox.OnPressed += UseCustomColorCheckBoxOnOnPressed; SnapToTileCheckBox.OnPressed += SnapToTileCheckBoxOnOnPressed; ColorSelector.OnColorChanged += OnColorSelected; + + ColorPalette.OnPressed += ColorPaletteOnPressed; + ColorPicker.OnPressed += args => OnColorPickerToggled?.Invoke(args.Button.Pressed); } private void UseCustomColorCheckBoxOnOnPressed(BaseButton.ButtonEventArgs _) @@ -147,6 +155,7 @@ private void DecalButtonOnPressed(BaseButton.ButtonEventArgs obj) public void SetSelectedDecal(string name) { _selectedDecal = name; + SelectedDecalName.Text = name; if (_sprite is null) return; @@ -171,4 +180,35 @@ public void SetSnap(bool snap) { SnapToTileCheckBox.Pressed = snap; } + + private void ColorPaletteOnPressed(BaseButton.ButtonEventArgs _) + { + // Code copied from other implementations of `PaletteColorPicker`. + if (_palette is null) + { + _palette = new PaletteColorPicker(); + _palette.OpenCenteredLeft(); + _palette.PaletteList.OnItemSelected += args => + { + var color = (args.ItemList.GetSelected().First().Metadata as Color?)!.Value; + ColorSelector.Color = color; + OnColorSelected(color); + }; + return; + } + + if (_palette.IsOpen) + { + _palette.Close(); + } + else + { + _palette.Open(); + } + } + + public void SetColorPicker(bool enabled) + { + ColorPicker.Pressed = enabled; + } } diff --git a/Content.Client/SprayPainter/UI/SprayPainterWindow.xaml.cs b/Content.Client/SprayPainter/UI/SprayPainterWindow.xaml.cs index eb1218ad678..2f727960438 100644 --- a/Content.Client/SprayPainter/UI/SprayPainterWindow.xaml.cs +++ b/Content.Client/SprayPainter/UI/SprayPainterWindow.xaml.cs @@ -30,6 +30,7 @@ public sealed partial class SprayPainterWindow : DefaultWindow public event Action? OnDecalColorChanged; public event Action? OnDecalAngleChanged; public event Action? OnDecalSnapChanged; + public event Action? OnDecalColorPickerToggled; // Pipe color data private ItemList _colorList = default!; @@ -195,6 +196,7 @@ public void PopulateCategories(Dictionary _sprayPainterDecals.OnColorChanged += color => OnDecalColorChanged?.Invoke(color); _sprayPainterDecals.OnAngleChanged += angle => OnDecalAngleChanged?.Invoke(angle); _sprayPainterDecals.OnSnapChanged += snap => OnDecalSnapChanged?.Invoke(snap); + _sprayPainterDecals.OnColorPickerToggled += toggle => OnDecalColorPickerToggled?.Invoke(toggle); Tabs.AddChild(_sprayPainterDecals); TabContainer.SetTabTitle(_sprayPainterDecals, Loc.GetString("spray-painter-tab-category-decals")); @@ -298,7 +300,12 @@ public void SetDecalSnap(bool snap) if (_sprayPainterDecals != null) _sprayPainterDecals.SetSnap(snap); } - # endregion + + public void SetDecalColorPicker(bool colorPickerEnabled) + { + _sprayPainterDecals?.SetColorPicker(colorPickerEnabled); + } + #endregion } public record SpriteListData(string Group, string Style, EntProtoId Prototype, int SelectedIndex) : ListData; diff --git a/Content.Server/SprayPainter/SprayPainterSystem.cs b/Content.Server/SprayPainter/SprayPainterSystem.cs index f00ae1d7dd7..a4c631db411 100644 --- a/Content.Server/SprayPainter/SprayPainterSystem.cs +++ b/Content.Server/SprayPainter/SprayPainterSystem.cs @@ -15,7 +15,8 @@ using Content.Shared.SprayPainter.Components; using Robust.Server.Audio; using Robust.Server.GameObjects; -using Robust.Shared.Prototypes; +using System.Linq; +using System.Numerics; namespace Content.Server.SprayPainter; @@ -48,7 +49,16 @@ public override void Initialize() /// private void OnFloorAfterInteract(Entity ent, ref AfterInteractEvent args) { - if (args.Handled || !args.CanReach || args.Target != null) + if (args.Handled || args.Target != null) + return; + + if (ent.Comp.ColorPickerEnabled) + { + PickColor(ent, ref args); + return; + } + + if (!args.CanReach) return; // Includes both off and all other don't cares @@ -83,7 +93,7 @@ private void OnFloorAfterInteract(Entity ent, ref AfterIn return; } - var decals = _decals.GetDecalsInRange(grid, position.Position, validDelegate: IsDecalRemovable); + var decals = _decals.GetDecalsInRange(grid, position.Position, validDelegate: IsDecalValid); if (decals.Count <= 0) { _popup.PopupEntity(Loc.GetString("spray-painter-interact-nothing-to-remove"), args.User, args.User); @@ -104,10 +114,9 @@ private void OnFloorAfterInteract(Entity ent, ref AfterIn } /// - /// Handles drawing decals when a spray painter is used to interact with the floor. - /// Spray painter must have decal painting enabled and enough charges of paint to paint on the floor. + /// Returns whether is valid to interact with when a spray painter is used to interact with the floor. /// - private bool IsDecalRemovable(Decal decal) + private bool IsDecalValid(Decal decal) { if (!Proto.TryIndex(decal.Id, out var decalProto)) return false; @@ -189,4 +198,26 @@ private void OnPipeInteract(Entity ent, ref InteractUsi args.Handled = DoAfter.TryStartDoAfter(doAfterEventArgs); } + + private void PickColor(Entity ent, ref AfterInteractEvent args) + { + if (!args.ClickLocation.IsValid(EntityManager) || _transform.GetGrid(args.ClickLocation) is not { } grid) + return; + + var clickPos = args.ClickLocation.Position; + var decals = _decals.GetDecalsInRange(grid, clickPos, validDelegate: IsDecalValid); + if (decals.Count == 0) + { + _popup.PopupEntity(Loc.GetString("spray-painter-interact-no-color-pick"), args.User, args.User); + return; + } + + var closestDecal = decals.MinBy(d => Vector2.Distance(d.Decal.Coordinates, clickPos)).Decal; + + _popup.PopupEntity(Loc.GetString("spray-painter-interact-color-picked", ("id", closestDecal.Id)), args.User, args.User); + + ent.Comp.SelectedDecalColor = closestDecal.Color; + ent.Comp.ColorPickerEnabled = false; + Dirty(ent); + } } diff --git a/Content.Shared/SprayPainter/Components/SprayPainterComponent.cs b/Content.Shared/SprayPainter/Components/SprayPainterComponent.cs index b9a7057347d..6b3e36bef21 100644 --- a/Content.Shared/SprayPainter/Components/SprayPainterComponent.cs +++ b/Content.Shared/SprayPainter/Components/SprayPainterComponent.cs @@ -105,6 +105,12 @@ public sealed partial class SprayPainterComponent : Component /// [DataField] public SoundSpecifier SoundSwitchDecalMode = new SoundPathSpecifier("/Audio/Machines/quickbeep.ogg", AudioParams.Default.WithVolume(1.5f)); + + /// + /// Whether the decal color picker is currently active. + /// + [DataField, AutoNetworkedField] + public bool ColorPickerEnabled = false; } /// diff --git a/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs b/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs index d1f19d0c25c..a3eb26a892d 100644 --- a/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs +++ b/Content.Shared/SprayPainter/SharedSprayPainterSystem.cs @@ -53,6 +53,7 @@ public override void Initialize() subs.Event(OnSetDecalColor); subs.Event(OnSetDecalAngle); subs.Event(OnSetDecalSnap); + subs.Event(OnSetDecalColorPicker); }); } @@ -300,6 +301,16 @@ private void OnSetDecalSnap(Entity ent, ref SprayPainterS UpdateUi(ent); } + /// + /// Enables or disables the decal colour picker. + /// + private void OnSetDecalColorPicker(Entity ent, ref SprayPainterSetDecalColorPickerMessage args) + { + ent.Comp.ColorPickerEnabled = args.Toggle; + Dirty(ent); + UpdateUi(ent); + } + /// /// Sets the decal to paint on the ground. /// diff --git a/Content.Shared/SprayPainter/SprayPainterEvents.cs b/Content.Shared/SprayPainter/SprayPainterEvents.cs index db9de9c2787..806cfd28888 100644 --- a/Content.Shared/SprayPainter/SprayPainterEvents.cs +++ b/Content.Shared/SprayPainter/SprayPainterEvents.cs @@ -56,6 +56,12 @@ public sealed class SprayPainterSetPipeColorMessage(string? key) : BoundUserInte public readonly string? Key = key; } +[Serializable, NetSerializable] +public sealed class SprayPainterSetDecalColorPickerMessage(bool toggle) : BoundUserInterfaceMessage +{ + public bool Toggle = toggle; +} + [Serializable, NetSerializable] public sealed partial class SprayPainterDoAfterEvent : DoAfterEvent { diff --git a/Resources/Locale/en-US/spray-painter/spray-painter.ftl b/Resources/Locale/en-US/spray-painter/spray-painter.ftl index dc54c5c8b8c..18c8c36f909 100644 --- a/Resources/Locale/en-US/spray-painter/spray-painter.ftl +++ b/Resources/Locale/en-US/spray-painter/spray-painter.ftl @@ -5,6 +5,8 @@ spray-painter-ammo-after-interact-refilled = You refill the spray painter. spray-painter-interact-no-charges = Not enough paint left. spray-painter-interact-nothing-to-remove = Nothing to remove! +spray-painter-interact-no-color-pick = Can't find a color to pick! +spray-painter-interact-color-picked = Picked color from '{$id}'. spray-painter-on-examined-painted-message = It seems to have been freshly painted. spray-painter-style-not-available = Cannot apply the selected style to this object. From 1e0e1edfbda5c73c850c8da7c9c2d9868081dc20 Mon Sep 17 00:00:00 2001 From: PJBot Date: Thu, 22 Jan 2026 18:04:01 +0000 Subject: [PATCH 086/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 054a7351be4..9d13058634a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,13 +1,4 @@ Entries: -- author: FairlySadPanda - changes: - - message: Removing displaced markings no longer makes the renderer give up. - type: Fix - - message: Vulpkanin can once again use normal human hair. - type: Fix - id: 8939 - time: '2025-09-07T14:36:38.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40171 - author: ArtisticRoomba changes: - message: Atmospherics Delta-Pressure now has a short guidebook entry. You can @@ -3965,3 +3956,13 @@ id: 9445 time: '2026-01-22T17:46:58.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/39161 +- author: SabreML + changes: + - message: Added a colour picker and colour palette selector to the Spraypainter's + decal menu. + type: Add + - message: Made a few other tweaks to the Spraypainter's UI as well. + type: Tweak + id: 9446 + time: '2026-01-22T18:02:54.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/41943 From 6d4f622977d9049a545b076d102950d3a61ef823 Mon Sep 17 00:00:00 2001 From: eoineoineoin Date: Thu, 22 Jan 2026 17:56:50 +0000 Subject: [PATCH 087/603] Character editor style fixes (#41278) * Restore pre-StyleNano element height * Add style for HelpButton to sheetlet --------- Co-authored-by: Janet Blackquill --- Content.Client/Lobby/UI/CharacterSetupGui.xaml | 3 +-- Content.Client/Stylesheets/Sheetlets/ButtonSheetlet.cs | 6 ++++++ Content.Client/Stylesheets/StyleClass.cs | 1 + Content.Client/Stylesheets/StyleNano.cs | 6 ------ 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Content.Client/Lobby/UI/CharacterSetupGui.xaml b/Content.Client/Lobby/UI/CharacterSetupGui.xaml index 09ed989fc6c..ab264deb341 100644 --- a/Content.Client/Lobby/UI/CharacterSetupGui.xaml +++ b/Content.Client/Lobby/UI/CharacterSetupGui.xaml @@ -28,8 +28,7 @@ Text="{Loc 'character-setup-gui-character-setup-close-button'}" StyleClasses="ButtonBig"/> - - + diff --git a/Content.Client/Stylesheets/Sheetlets/ButtonSheetlet.cs b/Content.Client/Stylesheets/Sheetlets/ButtonSheetlet.cs index 51ba2063928..8b92e1410aa 100644 --- a/Content.Client/Stylesheets/Sheetlets/ButtonSheetlet.cs +++ b/Content.Client/Stylesheets/Sheetlets/ButtonSheetlet.cs @@ -19,6 +19,7 @@ public override StyleRule[] GetRules(T sheet, object config) var crossTex = sheet.GetTextureOr(iconCfg.CrossIconPath, NanotrasenStylesheet.TextureRoot); var refreshTex = sheet.GetTextureOr(iconCfg.RefreshIconPath, NanotrasenStylesheet.TextureRoot); + var helpTex = sheet.GetTextureOr(iconCfg.HelpIconPath, NanotrasenStylesheet.TextureRoot); var rules = new List { @@ -56,6 +57,11 @@ public override StyleRule[] GetRules(T sheet, object config) .Class(StyleClass.RefreshButton) .Prop(TextureButton.StylePropertyTexture, refreshTex), + // Help button + E() + .Class(StyleClass.HelpButton) + .Prop(TextureButton.StylePropertyTexture, helpTex), + // Ensure labels in buttons are aligned. E [DataDefinition] [Serializable, NetSerializable] - public sealed partial class HumanoidCharacterProfile : ICharacterProfile + public sealed partial class HumanoidCharacterProfile { public static readonly ProtoId DefaultSpecies = "Human"; private static readonly Regex RestrictedNameRegex = new(@"[^A-Za-z0-9 '\-]"); @@ -89,11 +89,6 @@ public sealed partial class HumanoidCharacterProfile : ICharacterProfile [DataField] public Gender Gender { get; private set; } = Gender.Male; - /// - /// - /// - public ICharacterAppearance CharacterAppearance => Appearance; - /// /// Stores markings, eye colors, etc for the profile. /// @@ -465,9 +460,8 @@ public HumanoidCharacterProfile WithoutTraitPreference(ProtoId t ("age", Age) ); - public bool MemberwiseEquals(ICharacterProfile maybeOther) + public bool MemberwiseEquals(HumanoidCharacterProfile other) { - if (maybeOther is not HumanoidCharacterProfile other) return false; if (Name != other.Name) return false; if (Age != other.Age) return false; if (Sex != other.Sex) return false; @@ -480,7 +474,7 @@ public bool MemberwiseEquals(ICharacterProfile maybeOther) if (!_traitPreferences.SequenceEqual(other._traitPreferences)) return false; if (!Loadouts.SequenceEqual(other.Loadouts)) return false; if (FlavorText != other.FlavorText) return false; - return Appearance.MemberwiseEquals(other.Appearance); + return Appearance.Equals(other.Appearance); } public void EnsureValid(ICommonSession session, IDependencyCollection collection) @@ -692,7 +686,7 @@ public List> GetValidTraits(IEnumerable - /// Makes this profile valid so there's no bad data like negative ages. - /// - void EnsureValid(ICommonSession session, IDependencyCollection collection); - - /// - /// Gets a copy of this profile that has applied, i.e. no invalid data. - /// - ICharacterProfile Validated(ICommonSession session, IDependencyCollection collection); - } -} diff --git a/Content.Shared/Preferences/MsgUpdateCharacter.cs b/Content.Shared/Preferences/MsgUpdateCharacter.cs index 3c4af1833ed..decb0182228 100644 --- a/Content.Shared/Preferences/MsgUpdateCharacter.cs +++ b/Content.Shared/Preferences/MsgUpdateCharacter.cs @@ -13,7 +13,7 @@ public sealed class MsgUpdateCharacter : NetMessage public override MsgGroups MsgGroup => MsgGroups.Command; public int Slot; - public ICharacterProfile Profile = default!; + public HumanoidCharacterProfile Profile = default!; public override void ReadFromBuffer(NetIncomingMessage buffer, IRobustSerializer serializer) { @@ -21,7 +21,7 @@ public override void ReadFromBuffer(NetIncomingMessage buffer, IRobustSerializer var length = buffer.ReadVariableInt32(); using var stream = new MemoryStream(length); buffer.ReadAlignedMemory(stream, length); - Profile = serializer.Deserialize(stream); + Profile = serializer.Deserialize(stream); } public override void WriteToBuffer(NetOutgoingMessage buffer, IRobustSerializer serializer) diff --git a/Content.Shared/Preferences/PlayerPreferences.cs b/Content.Shared/Preferences/PlayerPreferences.cs index aee46f488b1..d4f67364c76 100644 --- a/Content.Shared/Preferences/PlayerPreferences.cs +++ b/Content.Shared/Preferences/PlayerPreferences.cs @@ -13,11 +13,11 @@ namespace Content.Shared.Preferences [NetSerializable] public sealed class PlayerPreferences { - private Dictionary _characters; + private Dictionary _characters; - public PlayerPreferences(IEnumerable> characters, int selectedCharacterIndex, Color adminOOCColor, List> constructionFavorites) + public PlayerPreferences(IEnumerable> characters, int selectedCharacterIndex, Color adminOOCColor, List> constructionFavorites) { - _characters = new Dictionary(characters); + _characters = new Dictionary(characters); SelectedCharacterIndex = selectedCharacterIndex; AdminOOCColor = adminOOCColor; ConstructionFavorites = constructionFavorites; @@ -26,9 +26,9 @@ public PlayerPreferences(IEnumerable> chara /// /// All player characters. /// - public IReadOnlyDictionary Characters => _characters; + public IReadOnlyDictionary Characters => _characters; - public ICharacterProfile GetProfile(int index) + public HumanoidCharacterProfile GetProfile(int index) { return _characters[index]; } @@ -41,7 +41,7 @@ public ICharacterProfile GetProfile(int index) /// /// The currently selected character. /// - public ICharacterProfile SelectedCharacter => Characters[SelectedCharacterIndex]; + public HumanoidCharacterProfile SelectedCharacter => Characters[SelectedCharacterIndex]; public Color AdminOOCColor { get; set; } @@ -50,12 +50,12 @@ public ICharacterProfile GetProfile(int index) /// public List> ConstructionFavorites { get; set; } = []; - public int IndexOfCharacter(ICharacterProfile profile) + public int IndexOfCharacter(HumanoidCharacterProfile profile) { return _characters.FirstOrNull(p => p.Value == profile)?.Key ?? -1; } - public bool TryIndexOfCharacter(ICharacterProfile profile, out int index) + public bool TryIndexOfCharacter(HumanoidCharacterProfile profile, out int index) { return (index = IndexOfCharacter(profile)) != -1; } From 4ddac1463ced81b7f5484f80bc0cbc7662752bc8 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 26 Jan 2026 20:27:01 +0000 Subject: [PATCH 163/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 26a84bb920b..cd87d8590c1 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: MissKay1994 - changes: - - message: Greatly reduced lethality of Man-O-War shuttle - type: Tweak - id: 8960 - time: '2025-09-14T05:44:32.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40339 - author: ScarKy0 changes: - message: Vulpkanin now use the corrent undergarments when "Censor character nudity" @@ -4006,3 +3999,11 @@ id: 9466 time: '2026-01-26T16:15:54.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42545 +- author: Princess-Cheeseballs + changes: + - message: Boxing gloves in the uplink are now the rigged variants instead of the + normal variants. + type: Fix + id: 9467 + time: '2026-01-26T20:25:53.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42662 From eb763886cdda9364ffb3a9a99d71b531d98ae57b Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Tue, 27 Jan 2026 05:17:52 +0700 Subject: [PATCH 164/603] fixing the handling of the RespiratorComponent without checking (#42665) * the correction itself * it will be more adequate * doc * not log - not debug * ohhh --- .../Tests/GameRules/NukeOpsTest.cs | 20 ++++++++++--------- .../Body/Systems/RespiratorSystem.cs | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Content.IntegrationTests/Tests/GameRules/NukeOpsTest.cs b/Content.IntegrationTests/Tests/GameRules/NukeOpsTest.cs index 246a7701902..ebb58a173c1 100644 --- a/Content.IntegrationTests/Tests/GameRules/NukeOpsTest.cs +++ b/Content.IntegrationTests/Tests/GameRules/NukeOpsTest.cs @@ -226,16 +226,18 @@ void CheckDummy(int i) Assert.That(total, Is.GreaterThan(3)); // Check the nukie commander passed basic training and figured out how to breathe. - var totalSeconds = 30; - var totalTicks = (int) Math.Ceiling(totalSeconds / server.Timing.TickPeriod.TotalSeconds); - var increment = 5; - var resp = entMan.GetComponent(player); - var damage = entMan.GetComponent(player); - for (var tick = 0; tick < totalTicks; tick += increment) + if (entMan.TryGetComponent(player, out var resp)) { - await pair.RunTicksSync(increment); - Assert.That(resp.SuffocationCycles, Is.LessThanOrEqualTo(resp.SuffocationCycleThreshold)); - Assert.That(damage.TotalDamage, Is.EqualTo(FixedPoint2.Zero)); + var totalSeconds = 30; + var totalTicks = (int)Math.Ceiling(totalSeconds / server.Timing.TickPeriod.TotalSeconds); + var increment = 5; + var damage = entMan.GetComponent(player); + for (var tick = 0; tick < totalTicks; tick += increment) + { + await pair.RunTicksSync(increment); + Assert.That(resp.SuffocationCycles, Is.LessThanOrEqualTo(resp.SuffocationCycleThreshold)); + Assert.That(damage.TotalDamage, Is.EqualTo(FixedPoint2.Zero)); + } } // Check that the round does not end prematurely when agents are deleted in the outpost diff --git a/Content.Server/Body/Systems/RespiratorSystem.cs b/Content.Server/Body/Systems/RespiratorSystem.cs index aad485cc7e8..446ed753c9e 100644 --- a/Content.Server/Body/Systems/RespiratorSystem.cs +++ b/Content.Server/Body/Systems/RespiratorSystem.cs @@ -204,7 +204,7 @@ public bool IsBreathing(Entity ent) /// Returns true only if the air is not toxic, and it wouldn't suffocate. public bool CanMetabolizeInhaledAir(Entity ent) { - if (!Resolve(ent, ref ent.Comp)) + if (!Resolve(ent, ref ent.Comp, false)) return false; // Get the gas at our location but don't actually remove it from the gas mixture. From b625152511acf08678f0ecc746840ae0211e0ede Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Mon, 26 Jan 2026 15:23:11 -0800 Subject: [PATCH 165/603] Add the Uplink changes to feedback popups. (#42649) * puusuh * it's a forum thread --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> Co-authored-by: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> --- Resources/Prototypes/FeedbackPopup/feedbackpopups.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml b/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml index d424a24244f..764eb2f0105 100644 --- a/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml +++ b/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml @@ -17,3 +17,12 @@ responseType: "General Feedback" responseLink: "https://forum.spacestation14.com/c/development/feedback/51" showRoundEnd: false + +- type: feedbackPopup + id: UplinkFeedback + popupOrigin: wizden_master + title: "[bold]Feedback on Traitor Uplink Changes[/bold]" + description: >- + If you have any feedback on the changes to the Traitor Uplink, feel free to leave them in this thread on the forums! + responseType: "Forum Thread" + responseLink: "https://forum.spacestation14.com/t/uplink-feedback/26178" From d11f3fb3c1e9b387071bf82c623a519392ab812e Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Tue, 27 Jan 2026 01:39:00 +0100 Subject: [PATCH 166/603] Content.Packaging can now emit binlogs for the build (#42659) * Content.Packaging can now emit binlogs for the build I was checking why packaging is so much slower and it *seems* to be entirely the actual build being twice as slow as before .NET 10. Strange. Content.Packaging can now emit MSBuild binlogs that we can analyze to see why that's the case. * Enable --log-build on Test Packaging workflow, produce artifact with binlogs * Disable setup-dotnet in packaging workflow I have a suspicion... --- .github/workflows/test-packaging.yml | 19 +++++++++++++------ Content.Packaging/ClientPackaging.cs | 14 +++++++++++--- Content.Packaging/CommandLineArgs.cs | 15 ++++++++++++++- Content.Packaging/Program.cs | 4 ++-- Content.Packaging/ServerPackaging.cs | 25 +++++++++++++++++++------ 5 files changed, 59 insertions(+), 18 deletions(-) diff --git a/.github/workflows/test-packaging.yml b/.github/workflows/test-packaging.yml index 6cb6d836d52..46ce13013a2 100644 --- a/.github/workflows/test-packaging.yml +++ b/.github/workflows/test-packaging.yml @@ -48,10 +48,11 @@ jobs: cd RobustToolbox/ git submodule update --init --recursive - - name: Setup .NET Core - uses: actions/setup-dotnet@v4.1.0 - with: - dotnet-version: 10.0.x + # ubuntu-latest has .NET 10 + # - name: Setup .NET Core + # uses: actions/setup-dotnet@v4.1.0 + # with: + # dotnet-version: 10.0.x - name: Install dependencies run: dotnet restore @@ -60,7 +61,13 @@ jobs: run: dotnet build Content.Packaging --configuration Release --no-restore /m - name: Package server - run: dotnet run --project Content.Packaging server --platform win-x64 --platform win-arm64 --platform linux-x64 --platform linux-arm64 --platform osx-x64 --platform osx-arm64 + run: dotnet run --project Content.Packaging server --log-build --platform win-x64 --platform win-arm64 --platform linux-x64 --platform linux-arm64 --platform osx-x64 --platform osx-arm64 - name: Package client - run: dotnet run --project Content.Packaging client --no-wipe-release + run: dotnet run --project Content.Packaging client --log-build --no-wipe-release + + - uses: actions/upload-artifact@v4 + with: + name: binlogs + path: release/*.binlog + retention-days: 7 diff --git a/Content.Packaging/ClientPackaging.cs b/Content.Packaging/ClientPackaging.cs index 21215d3bcbf..f17ebf5d20f 100644 --- a/Content.Packaging/ClientPackaging.cs +++ b/Content.Packaging/ClientPackaging.cs @@ -13,13 +13,13 @@ public static class ClientPackaging /// /// Be advised this can be called from server packaging during a HybridACZ build. /// - public static async Task PackageClient(bool skipBuild, string configuration, IPackageLogger logger) + public static async Task PackageClient(bool skipBuild, bool logBuild, string configuration, IPackageLogger logger) { logger.Info("Building client..."); if (!skipBuild) { - await ProcessHelpers.RunCheck(new ProcessStartInfo + var startInfo = new ProcessStartInfo { FileName = "dotnet", ArgumentList = @@ -33,7 +33,15 @@ await ProcessHelpers.RunCheck(new ProcessStartInfo "/p:FullRelease=true", "/m" } - }); + }; + + if (logBuild) + { + startInfo.ArgumentList.Add($"/bl:{Path.Combine("release", "client.binlog")}"); + startInfo.ArgumentList.Add("/p:ReportAnalyzer=true"); + } + + await ProcessHelpers.RunCheck(startInfo); } logger.Info("Packaging client..."); diff --git a/Content.Packaging/CommandLineArgs.cs b/Content.Packaging/CommandLineArgs.cs index 23f661921e0..ed5e5f2b29b 100644 --- a/Content.Packaging/CommandLineArgs.cs +++ b/Content.Packaging/CommandLineArgs.cs @@ -36,6 +36,11 @@ public sealed class CommandLineArgs /// public string Configuration { get; set; } + /// + /// Log builds with MSBuild binlog. Logs get saved to release/ + /// + public bool LogBuild { get; set; } + // CommandLineArgs, 3rd of her name. public static bool TryParse(IReadOnlyList args, [NotNullWhen(true)] out CommandLineArgs? parsed) { @@ -44,6 +49,7 @@ public static bool TryParse(IReadOnlyList args, [NotNullWhen(true)] out var skipBuild = false; var wipeRelease = true; var hybridAcz = false; + var logBuild = false; var configuration = "Release"; List? platforms = null; @@ -84,6 +90,10 @@ public static bool TryParse(IReadOnlyList args, [NotNullWhen(true)] out { hybridAcz = true; } + else if (arg == "--log-build") + { + logBuild = true; + } else if (arg == "--platform") { if (!enumerator.MoveNext()) @@ -122,7 +132,7 @@ public static bool TryParse(IReadOnlyList args, [NotNullWhen(true)] out return false; } - parsed = new CommandLineArgs(client.Value, skipBuild, wipeRelease, hybridAcz, platforms, configuration); + parsed = new CommandLineArgs(client.Value, skipBuild, wipeRelease, hybridAcz, logBuild, platforms, configuration); return true; } @@ -137,6 +147,7 @@ private static void PrintHelp() --hybrid-acz Use HybridACZ for server builds. --platform Platform for server builds. Default will output several x64 targets. --configuration Configuration to use for building the server (Release, Debug, Tools). Default is Release. + --log-build Log builds with MSBuild binlog. Logs get saved to release/ "); } @@ -145,6 +156,7 @@ private CommandLineArgs( bool skipBuild, bool wipeRelease, bool hybridAcz, + bool logBuild, List? platforms, string configuration) { @@ -154,5 +166,6 @@ private CommandLineArgs( HybridAcz = hybridAcz; Platforms = platforms; Configuration = configuration; + LogBuild = logBuild; } } diff --git a/Content.Packaging/Program.cs b/Content.Packaging/Program.cs index 9457e9dacc9..25fc550a2fd 100644 --- a/Content.Packaging/Program.cs +++ b/Content.Packaging/Program.cs @@ -22,11 +22,11 @@ if (parsed.Client) { - await ClientPackaging.PackageClient(parsed.SkipBuild, parsed.Configuration, logger); + await ClientPackaging.PackageClient(parsed.SkipBuild, parsed.LogBuild, parsed.Configuration, logger); } else { - await ServerPackaging.PackageServer(parsed.SkipBuild, parsed.HybridAcz, logger, parsed.Configuration, parsed.Platforms); + await ServerPackaging.PackageServer(parsed.SkipBuild, parsed.HybridAcz, parsed.LogBuild, logger, parsed.Configuration, parsed.Platforms); } void WipeBin() diff --git a/Content.Packaging/ServerPackaging.cs b/Content.Packaging/ServerPackaging.cs index 8e559d5a65b..b64e02ced75 100644 --- a/Content.Packaging/ServerPackaging.cs +++ b/Content.Packaging/ServerPackaging.cs @@ -60,7 +60,7 @@ public static class ServerPackaging "zh-Hant" }; - public static async Task PackageServer(bool skipBuild, bool hybridAcz, IPackageLogger logger, string configuration, List? platforms = null) + public static async Task PackageServer(bool skipBuild, bool hybridAcz, bool logBuild, IPackageLogger logger, string configuration, List? platforms = null) { if (platforms == null) { @@ -73,7 +73,7 @@ public static async Task PackageServer(bool skipBuild, bool hybridAcz, IPackageL // Rather than hosting the client ZIP on the watchdog or on a separate server, // Hybrid ACZ uses the ACZ hosting functionality to host it as part of the status host, // which means that features such as automatic UPnP forwarding still work properly. - await ClientPackaging.PackageClient(skipBuild, configuration, logger); + await ClientPackaging.PackageClient(skipBuild, logBuild, configuration, logger); } // Good variable naming right here. @@ -82,17 +82,22 @@ public static async Task PackageServer(bool skipBuild, bool hybridAcz, IPackageL if (!platforms.Contains(platform.Rid)) continue; - await BuildPlatform(platform, skipBuild, hybridAcz, configuration, logger); + await BuildPlatform(platform, skipBuild, hybridAcz, logBuild, configuration, logger); } } - private static async Task BuildPlatform(PlatformReg platform, bool skipBuild, bool hybridAcz, string configuration, IPackageLogger logger) + private static async Task BuildPlatform(PlatformReg platform, + bool skipBuild, + bool hybridAcz, + bool logBuild, + string configuration, + IPackageLogger logger) { logger.Info($"Building project for {platform.TargetOs}..."); if (!skipBuild) { - await ProcessHelpers.RunCheck(new ProcessStartInfo + var startInfo = new ProcessStartInfo { FileName = "dotnet", ArgumentList = @@ -107,7 +112,15 @@ await ProcessHelpers.RunCheck(new ProcessStartInfo "/p:FullRelease=true", "/m" } - }); + }; + + if (logBuild) + { + startInfo.ArgumentList.Add($"/bl:{Path.Combine("release", $"server-{platform.Rid}.binlog")}"); + startInfo.ArgumentList.Add("/p:ReportAnalyzer=true"); + } + + await ProcessHelpers.RunCheck(startInfo); await PublishClientServer(platform.Rid, platform.TargetOs, configuration); } From 8dbdb19e0cb9fb5beba6f39e3e28ee03c6840f94 Mon Sep 17 00:00:00 2001 From: ScholarNZL Date: Tue, 27 Jan 2026 17:09:10 +1300 Subject: [PATCH 167/603] Fix 42643 meat spike doafter race condition (#42644) * Resolve doafter race condition on meat spike deconstruction. * set a letter to lowercase. --- .../en-US/kitchen/components/kitchen-spike-component.ftl | 2 ++ .../Recipes/Construction/Graphs/furniture/meatspike.yml | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/Resources/Locale/en-US/kitchen/components/kitchen-spike-component.ftl b/Resources/Locale/en-US/kitchen/components/kitchen-spike-component.ftl index 6d952aea5b1..39877571b9a 100644 --- a/Resources/Locale/en-US/kitchen/components/kitchen-spike-component.ftl +++ b/Resources/Locale/en-US/kitchen/components/kitchen-spike-component.ftl @@ -35,3 +35,5 @@ comp-kitchen-spike-hooked = [color=red]{ CAPITALIZE(THE($victim)) } is on this s comp-kitchen-spike-meat-name = { $name } ({ $victim }) comp-kitchen-spike-victim-examine = [color=orange]{ CAPITALIZE(SUBJECT($target)) } looks quite lean.[/color] + +comp-kitchen-spike-deconstruct-occupied = Next, [color=red]unhook the body[/color]. diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/furniture/meatspike.yml b/Resources/Prototypes/Recipes/Construction/Graphs/furniture/meatspike.yml index f97322a9fab..4ea80695739 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/furniture/meatspike.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/furniture/meatspike.yml @@ -21,6 +21,10 @@ entity: KitchenSpike edges: - to: start + conditions: + - !type:ContainerEmpty + container: body + examineText: comp-kitchen-spike-deconstruct-occupied completed: - !type:SpawnPrototype prototype: SheetSteel1 From 80b0239c6eb79eecf14d6fd21c6bb526a40c48f0 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 27 Jan 2026 04:26:08 +0000 Subject: [PATCH 168/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index cd87d8590c1..9781ea19753 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: ScarKy0 - changes: - - message: Vulpkanin now use the corrent undergarments when "Censor character nudity" - is enabled. - type: Fix - id: 8961 - time: '2025-09-14T07:39:38.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40341 - author: Huaqas changes: - message: Vulpkanin eye tattoos now correctly changes the color of the entire eye. @@ -4007,3 +3999,11 @@ id: 9467 time: '2026-01-26T20:25:53.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42662 +- author: ScholarNZL + changes: + - message: Fixed an exploit where deconstructing a meat spike with the correct timing + could delete someone being hooked onto it. + type: Fix + id: 9468 + time: '2026-01-27T04:24:58.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42644 From 9e6b0f68cd4e07941b4a3094a09bd2788bf4f741 Mon Sep 17 00:00:00 2001 From: B_Kirill <153602297+B-Kirill@users.noreply.github.com> Date: Tue, 27 Jan 2026 23:20:23 +1000 Subject: [PATCH 169/603] Some bonfire fixes (#42675) --- .../Prototypes/Entities/Structures/Decoration/bonfire.yml | 3 ++- .../Prototypes/Entities/Structures/Decoration/fireplace.yml | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Structures/Decoration/bonfire.yml b/Resources/Prototypes/Entities/Structures/Decoration/bonfire.yml index d28abb2b633..fcce070476a 100644 --- a/Resources/Prototypes/Entities/Structures/Decoration/bonfire.yml +++ b/Resources/Prototypes/Entities/Structures/Decoration/bonfire.yml @@ -44,6 +44,7 @@ - type: IgnitionSource temperature: 700 ignited: true + - type: RequireProjectileTarget - type: entity parent: BaseBonfire @@ -71,7 +72,7 @@ offset: "0, 0.5" - type: Strap position: Stand - buckleOffset: "0, 0.5" + buckleOffset: "0, 0.4" buckleDoafterTime: 5 - type: IgniteOnBuckle - type: Construction diff --git a/Resources/Prototypes/Entities/Structures/Decoration/fireplace.yml b/Resources/Prototypes/Entities/Structures/Decoration/fireplace.yml index acedcb69765..dbff3d458e5 100644 --- a/Resources/Prototypes/Entities/Structures/Decoration/fireplace.yml +++ b/Resources/Prototypes/Entities/Structures/Decoration/fireplace.yml @@ -46,3 +46,6 @@ - !type:DoActsBehavior acts: [ "Destruction" ] - type: AlwaysHot + - type: IgnitionSource + temperature: 700 + ignited: true From ed3a4d8e57e740e5e37bf56ece8e0f38ab03a87c Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 27 Jan 2026 13:37:03 +0000 Subject: [PATCH 170/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 9781ea19753..7c2b8a5831c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Huaqas - changes: - - message: Vulpkanin eye tattoos now correctly changes the color of the entire eye. - type: Fix - id: 8962 - time: '2025-09-14T15:18:49.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40320 - author: Winkarst-cpu changes: - message: Fixed the wizard's recharge spell not working on some wands. @@ -4007,3 +4000,13 @@ id: 9468 time: '2026-01-27T04:24:58.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42644 +- author: B_Kirill + changes: + - message: Fireplaces can now ignite gases. + type: Tweak + - message: Entities buckled to the bonfire with stake no longer suffocate in the + walls above the bonfire. + type: Fix + id: 9469 + time: '2026-01-27T13:35:54.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42675 From ec572807f641d1c241acde2276f4efcacdd68131 Mon Sep 17 00:00:00 2001 From: Kyle Tyo <36606155+VerinSenpai@users.noreply.github.com> Date: Tue, 27 Jan 2026 11:20:42 -0500 Subject: [PATCH 171/603] Add Attribution for Web Walls. (#42677) Update meta.json --- Resources/Textures/Structures/Walls/web.rsi/meta.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Textures/Structures/Walls/web.rsi/meta.json b/Resources/Textures/Structures/Walls/web.rsi/meta.json index f30b2eba612..3ffb4d21196 100644 --- a/Resources/Textures/Structures/Walls/web.rsi/meta.json +++ b/Resources/Textures/Structures/Walls/web.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "", + "copyright": "Made by PixelTheKermit (github) for SS14.", "states": [ { "name": "wall0", @@ -43,4 +43,4 @@ "name": "full" } ] -} \ No newline at end of file +} From ffd9c22badb85f4e7f45bae7a7eeede931e85e08 Mon Sep 17 00:00:00 2001 From: DaturoDewitt <49022685+DaturoDewitt@users.noreply.github.com> Date: Tue, 27 Jan 2026 18:33:00 +0100 Subject: [PATCH 172/603] Fix incorrect tip (#42678) Updated Tip 85 --- Resources/Locale/en-US/tips.ftl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Locale/en-US/tips.ftl b/Resources/Locale/en-US/tips.ftl index 9ea332ed331..c02e72da199 100644 --- a/Resources/Locale/en-US/tips.ftl +++ b/Resources/Locale/en-US/tips.ftl @@ -82,7 +82,7 @@ tips-dataset-81 = As a Scientist, you can build cyborgs using positronic brains tips-dataset-82 = As a Medical Doctor, try to be wary of overdosing your patients, especially if someone else has already been on the scene. Overdoses are often lethal to patients in crit! tips-dataset-83 = As a Medical Doctor, don't underestimate your cryo pods! They heal almost every type of damage, making them very useful when you are overloaded or need to heal someone in a pinch. tips-dataset-84 = As a Medical Doctor, exercise caution when putting reptilians in cryopods. They will take a lot of extra cold damage, but you can mitigate this with some burn medicine or leporazine. -tips-dataset-85 = As a Medical Doctor, remember that the health analyzer can be used if you lose your PDA. However it has a battery, and if it drains too quickly for your taste you can ask science to print a better battery for you! +tips-dataset-85 = As a Medical Doctor, remember that the health analyzer can be used if you lose your PDA. tips-dataset-86 = As a Chemist, once you've made everything you've needed to, don't be afraid to make more silly reagents. Have you tried desoxyephedrine or licoxide? tips-dataset-87 = As a Medical Doctor, Chemist, or Chief Medical Officer, you can use chloral hydrate to non-lethally sedate unruly patients. tips-dataset-88 = Don't be afraid to ask for help, whether from your peers in character or through LOOC, or from admins! From 0c2b17b65cbf623f9cd18ab4c28f53a66a7e7563 Mon Sep 17 00:00:00 2001 From: ScholarNZL Date: Wed, 28 Jan 2026 10:01:58 +1300 Subject: [PATCH 173/603] Removed duplicate disposal unit in Oasis Kitchen. (#42670) --- Resources/Maps/oasis.yml | 110 ++++++++++++++++++--------------------- 1 file changed, 51 insertions(+), 59 deletions(-) diff --git a/Resources/Maps/oasis.yml b/Resources/Maps/oasis.yml index 1cefeb666eb..810402cde79 100644 --- a/Resources/Maps/oasis.yml +++ b/Resources/Maps/oasis.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 268.0.0 + engineVersion: 271.2.0 forkId: "" forkVersion: "" - time: 12/08/2025 00:21:38 - entityCount: 31169 + time: 01/27/2026 04:05:45 + entityCount: 31167 maps: - 1 grids: @@ -8811,6 +8811,8 @@ entities: id: Oasis - type: ImplicitRoof - type: ExplosionAirtightGrid + - type: TileHistory + chunkHistory: {} - uid: 21002 components: - type: MetaData @@ -10071,6 +10073,8 @@ entities: - type: NavMap - type: ImplicitRoof - type: ExplosionAirtightGrid + - type: TileHistory + chunkHistory: {} - proto: AcousticGuitarInstrument entities: - uid: 1634 @@ -15513,7 +15517,7 @@ entities: pos: -22.5,26.5 parent: 2 - type: Door - secondsUntilStateChange: -245515.03 + secondsUntilStateChange: -245564.78 state: Opening - type: DeviceLinkSource lastSignals: @@ -16369,7 +16373,7 @@ entities: lastSignals: DoorStatus: True - type: Door - secondsUntilStateChange: -344343.7 + secondsUntilStateChange: -344393.44 state: Opening - uid: 6934 components: @@ -16381,7 +16385,7 @@ entities: lastSignals: DoorStatus: True - type: Door - secondsUntilStateChange: -344346.3 + secondsUntilStateChange: -344396.06 state: Opening - uid: 6935 components: @@ -16393,7 +16397,7 @@ entities: lastSignals: DoorStatus: True - type: Door - secondsUntilStateChange: -344345.16 + secondsUntilStateChange: -344394.9 state: Opening - uid: 6936 components: @@ -16404,7 +16408,7 @@ entities: lastSignals: DoorStatus: True - type: Door - secondsUntilStateChange: -344344.38 + secondsUntilStateChange: -344394.12 state: Opening - proto: AirlockTheatreLocked entities: @@ -94431,11 +94435,6 @@ entities: - type: Transform pos: -2.5,20.5 parent: 2 - - uid: 505 - components: - - type: Transform - pos: -2.5,20.5 - parent: 2 - uid: 1036 components: - type: Transform @@ -97303,13 +97302,6 @@ entities: rot: 3.141592653589793 rad pos: -55.5,-36.5 parent: 2 -- proto: FigureSpawner - entities: - - uid: 23863 - components: - - type: Transform - pos: -2.5,-62.5 - parent: 2 - proto: filingCabinetDrawerRandom entities: - uid: 1114 @@ -100361,7 +100353,7 @@ entities: pos: -13.5,-1.5 parent: 2 - type: Door - secondsUntilStateChange: -335667.7 + secondsUntilStateChange: -335717.44 - type: DeviceNetwork deviceLists: - 18275 @@ -147316,7 +147308,7 @@ entities: pos: 36.5,-35.5 parent: 2 - type: Door - secondsUntilStateChange: -372499.47 + secondsUntilStateChange: -372549.22 state: Opening - uid: 5211 components: @@ -150481,6 +150473,13 @@ entities: - type: Transform pos: -56.05085,0.6887263 parent: 2 +- proto: MechFigurineSpawner50 + entities: + - uid: 23863 + components: + - type: Transform + pos: -2.5,-62.5 + parent: 2 - proto: MedicalBed entities: - uid: 1313 @@ -153886,6 +153885,34 @@ entities: - type: Transform pos: 31.976513,24.950718 parent: 1 +- proto: PlushieSpawner50 + entities: + - uid: 20680 + components: + - type: Transform + pos: -17.5,36.5 + parent: 2 + - uid: 20681 + components: + - type: Transform + pos: -18.5,35.5 + parent: 2 + - uid: 22268 + components: + - type: Transform + pos: 21.5,-5.5 + parent: 21002 + - uid: 23048 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 14.5,6.5 + parent: 21002 + - uid: 23050 + components: + - type: Transform + pos: 14.5,-7.5 + parent: 21002 - proto: PonderingOrb entities: - uid: 23786 @@ -173818,7 +173845,7 @@ entities: - type: Transform pos: -23.5,33.5 parent: 2 -- proto: SpacemenFigureSpawner +- proto: SpacemenFigurineSpawner90 entities: - uid: 20677 components: @@ -175106,13 +175133,6 @@ entities: - type: Transform pos: 47.5,-15.5 parent: 2 -- proto: SpawnPointZookeeper - entities: - - uid: 20864 - components: - - type: Transform - pos: -19.5,-3.5 - parent: 2 - proto: SpiderWeb entities: - uid: 29825 @@ -182108,34 +182128,6 @@ entities: - type: Transform pos: 35.30755,22.53226 parent: 2 -- proto: ToySpawner - entities: - - uid: 20680 - components: - - type: Transform - pos: -17.5,36.5 - parent: 2 - - uid: 20681 - components: - - type: Transform - pos: -18.5,35.5 - parent: 2 - - uid: 22268 - components: - - type: Transform - pos: 21.5,-5.5 - parent: 21002 - - uid: 23048 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 14.5,6.5 - parent: 21002 - - uid: 23050 - components: - - type: Transform - pos: 14.5,-7.5 - parent: 21002 - proto: TrashBag entities: - uid: 3060 @@ -204476,7 +204468,7 @@ entities: pos: 24.5,2.5 parent: 21002 - type: Door - secondsUntilStateChange: -717704 + secondsUntilStateChange: -717753.75 state: Opening - uid: 28863 components: From 58dc0c1dcdfdfecde597c0b1b0bbf4682e978fd8 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 27 Jan 2026 21:03:07 +0000 Subject: [PATCH 174/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 7c2b8a5831c..eab074eb38b 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Winkarst-cpu - changes: - - message: Fixed the wizard's recharge spell not working on some wands. - type: Fix - id: 8963 - time: '2025-09-14T19:26:42.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40347 - author: SharkSnake98 changes: - message: Added 3 new Astrotiles for dark grass, light grass, and desert sand. @@ -4010,3 +4003,10 @@ id: 9469 time: '2026-01-27T13:35:54.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42675 +- author: ScholarNZL + changes: + - message: Removed a duplicate disposal bin entity in Kitchen. + type: Tweak + id: 9470 + time: '2026-01-27T21:01:59.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42670 From 479579e86ad188fa3b8707f4982a4c1012fd0848 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Tue, 27 Jan 2026 14:47:18 -0800 Subject: [PATCH 175/603] Remove Visitor Shuttles (Real) and also cleanup the event rule system to not break when I try to do this. (#41915) * shelve * halfway there * borgar * just pass TimeSpan.Zero???? * better API * no more TODO * comment * some fixes * Gonna make a new PR for this I guess shrug * add quark back, cleanup some stuff * add syndie pod back * one final change --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- .../BasicStationEventSchedulerSystem.cs | 29 +- .../BasicStationEventSchedulerComponent.cs | 6 + .../StationEvents/EventManagerSystem.cs | 104 +- .../EntitySelectors/EntityTableSelector.cs | 15 + .../EntityTable/EntityTableSystem.cs | 11 + .../Maps/Shuttles/ShuttleEvent/cruiser.yml | 4096 ----------- .../Maps/Shuttles/ShuttleEvent/cryptid.yml | 3790 ---------- .../ShuttleEvent/disaster_evacpod.yml | 363 - .../Maps/Shuttles/ShuttleEvent/eternal.yml | 2194 ------ .../Maps/Shuttles/ShuttleEvent/flatline.yml | 1958 ------ Resources/Maps/Shuttles/ShuttleEvent/gym.yml | 4700 ------------- .../Shuttles/ShuttleEvent/incorporation.yml | 6165 ----------------- Resources/Maps/Shuttles/ShuttleEvent/joe.yml | 2324 ------- .../Shuttles/ShuttleEvent/lambordeere.yml | 1637 ----- .../Maps/Shuttles/ShuttleEvent/lost_cargo.yml | 1367 ---- .../Maps/Shuttles/ShuttleEvent/meatzone.yml | 3713 ---------- .../Shuttles/ShuttleEvent/microshuttle.yml | 526 -- .../Maps/Shuttles/ShuttleEvent/spacebus.yml | 1663 ----- .../ShuttleEvent/traveling_china_cuisine.yml | 1880 ----- Resources/Prototypes/GameRules/roundstart.yml | 24 +- .../Prototypes/GameRules/unknown_shuttles.yml | 174 +- Resources/Prototypes/game_presets.yml | 3 - 22 files changed, 121 insertions(+), 36621 deletions(-) delete mode 100644 Resources/Maps/Shuttles/ShuttleEvent/cruiser.yml delete mode 100644 Resources/Maps/Shuttles/ShuttleEvent/cryptid.yml delete mode 100644 Resources/Maps/Shuttles/ShuttleEvent/disaster_evacpod.yml delete mode 100644 Resources/Maps/Shuttles/ShuttleEvent/eternal.yml delete mode 100644 Resources/Maps/Shuttles/ShuttleEvent/flatline.yml delete mode 100644 Resources/Maps/Shuttles/ShuttleEvent/gym.yml delete mode 100644 Resources/Maps/Shuttles/ShuttleEvent/incorporation.yml delete mode 100644 Resources/Maps/Shuttles/ShuttleEvent/joe.yml delete mode 100644 Resources/Maps/Shuttles/ShuttleEvent/lambordeere.yml delete mode 100644 Resources/Maps/Shuttles/ShuttleEvent/lost_cargo.yml delete mode 100644 Resources/Maps/Shuttles/ShuttleEvent/meatzone.yml delete mode 100644 Resources/Maps/Shuttles/ShuttleEvent/microshuttle.yml delete mode 100644 Resources/Maps/Shuttles/ShuttleEvent/spacebus.yml delete mode 100644 Resources/Maps/Shuttles/ShuttleEvent/traveling_china_cuisine.yml diff --git a/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs b/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs index 1832f1b1a46..2e1f28509bb 100644 --- a/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs +++ b/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs @@ -29,7 +29,7 @@ protected override void Started(EntityUid uid, BasicStationEventSchedulerCompone GameRuleStartedEvent args) { // A little starting variance so schedulers dont all proc at once. - component.TimeUntilNextEvent = RobustRandom.NextFloat(component.MinimumTimeUntilFirstEvent, component.MinimumTimeUntilFirstEvent + 120); + component.TimeUntilNextEvent = RobustRandom.NextFloat(component.MinimumTimeUntilFirstEvent, component.MinimumTimeUntilFirstEvent + component.MaximumSpanUntilFirstEvent); } protected override void Ended(EntityUid uid, BasicStationEventSchedulerComponent component, GameRuleComponent gameRule, @@ -132,14 +132,15 @@ public sealed class StationEventCommand : ToolshedCommand // sim an event curTime += TimeSpan.FromSeconds(compMinMax.Next(_random)); - var available = _stationEvent.AvailableEvents(false, playerCount, curTime); - if (!_stationEvent.TryBuildLimitedEvents(basicScheduler.ScheduledGameRules, available, out var selectedEvents)) + if (!_stationEvent.TryBuildLimitedEvents(basicScheduler.ScheduledGameRules, + out var selectedEvents, + currentTime: curTime, + playerCount: playerCount)) { continue; // doesnt break because maybe the time is preventing events being available. } - var ev = _stationEvent.FindEvent(selectedEvents); - if (ev == null) + if (_stationEvent.FindEvent(selectedEvents) is not { } ev) continue; occurrences[ev] += 1; @@ -161,15 +162,14 @@ public sealed class StationEventCommand : ToolshedCommand if (!eventScheduler.TryGetComponent(out var basicScheduler, _compFac)) yield break; - var available = _stationEvent.AvailableEvents(); - if (!_stationEvent.TryBuildLimitedEvents(basicScheduler.ScheduledGameRules, available, out var events)) + if (!_stationEvent.TryListLimitedEvents(basicScheduler.ScheduledGameRules, out var events)) yield break; var totalWeight = events.Sum(x => x.Value.Weight); // Well this shit definitely isnt correct now, and I see no way to make it correct. // Its probably *fine* but it wont be accurate if the EntityTableSelector does any subsetting. foreach (var (proto, comp) in events) // The only solution I see is to do a simulation, and we already have that, so...! { - yield return (proto.ID, comp.Weight / totalWeight); + yield return (proto.ID, comp.Weight * (float)basicScheduler.ScheduledGameRules.Prob / totalWeight); } } @@ -187,8 +187,10 @@ public sealed class StationEventCommand : ToolshedCommand var timemins = time * 60; var theoryTime = TimeSpan.Zero + TimeSpan.FromSeconds(timemins); - var available = _stationEvent.AvailableEvents(false, playerCount, theoryTime); - if (!_stationEvent.TryBuildLimitedEvents(basicScheduler.ScheduledGameRules, available, out var untimedEvents)) + if (!_stationEvent.TryListLimitedEvents(basicScheduler.ScheduledGameRules, + out var untimedEvents, + currentTime: theoryTime, + playerCount: playerCount)) yield break; var events = untimedEvents.Where(pair => pair.Value.EarliestStart <= timemins).ToList(); @@ -197,7 +199,7 @@ public sealed class StationEventCommand : ToolshedCommand foreach (var (proto, comp) in events) { - yield return (proto.ID, comp.Weight / totalWeight); + yield return (proto.ID, comp.Weight * (float)basicScheduler.ScheduledGameRules.Prob / totalWeight); } } @@ -213,15 +215,14 @@ public float Prob([CommandArgument] EntProtoId eventSchedulerProto, [CommandArgu if (!eventScheduler.TryGetComponent(out var basicScheduler, _compFac)) return 0f; - var available = _stationEvent.AvailableEvents(); - if (!_stationEvent.TryBuildLimitedEvents(basicScheduler.ScheduledGameRules, available, out var events)) + if (!_stationEvent.TryListLimitedEvents(basicScheduler.ScheduledGameRules, out var events)) return 0f; var totalWeight = events.Sum(x => x.Value.Weight); // same subsetting issue as lsprob. var weight = 0f; if (events.TryFirstOrNull(p => p.Key.ID == eventId, out var pair)) { - weight = pair.Value.Value.Weight; + weight = pair.Value.Value.Weight * (float)basicScheduler.ScheduledGameRules.Prob; } return weight / totalWeight; diff --git a/Content.Server/StationEvents/Components/BasicStationEventSchedulerComponent.cs b/Content.Server/StationEvents/Components/BasicStationEventSchedulerComponent.cs index b777831856b..5490ae514b6 100644 --- a/Content.Server/StationEvents/Components/BasicStationEventSchedulerComponent.cs +++ b/Content.Server/StationEvents/Components/BasicStationEventSchedulerComponent.cs @@ -13,6 +13,12 @@ public sealed partial class BasicStationEventSchedulerComponent : Component [DataField] public float MinimumTimeUntilFirstEvent = 200; + /// + /// How much additional time it may take for a GameRule to first start. + /// + [DataField] + public float MaximumSpanUntilFirstEvent = 120; + /// /// The minimum and maximum time between rule starts in seconds. /// diff --git a/Content.Server/StationEvents/EventManagerSystem.cs b/Content.Server/StationEvents/EventManagerSystem.cs index b86d30e2e7b..917b1a35e13 100644 --- a/Content.Server/StationEvents/EventManagerSystem.cs +++ b/Content.Server/StationEvents/EventManagerSystem.cs @@ -25,29 +25,21 @@ public sealed class EventManagerSystem : EntitySystem public bool EventsEnabled { get; private set; } private void SetEnabled(bool value) => EventsEnabled = value; + public Dictionary? AllEventCache; + public override void Initialize() { base.Initialize(); + SubscribeLocalEvent(OnPrototypesReloaded); + Subs.CVar(_configurationManager, CCVars.EventsEnabled, SetEnabled, true); } - /// - /// Randomly runs a valid event. - /// - [Obsolete("use overload taking EnityTableSelector instead or risk unexpected results")] - public void RunRandomEvent() + private void OnPrototypesReloaded(PrototypesReloadedEventArgs args) { - var randomEvent = PickRandomEvent(); - - if (randomEvent == null) - { - var errStr = Loc.GetString("station-event-system-run-random-event-no-valid-events"); - Log.Error(errStr); - return; - } - - GameTicker.AddGameRule(randomEvent); + if (args.WasModified()) + AllEventCache = GetAllEvents(); } /// @@ -55,17 +47,16 @@ public void RunRandomEvent() /// public void RunRandomEvent(EntityTableSelector limitedEventsTable) { - var availableEvents = AvailableEvents(); // handles the player counts and individual event restrictions. - // Putting this here only makes any sense in the context of the toolshed commands in BasicStationEventScheduler. Kill me. - - if (!TryBuildLimitedEvents(limitedEventsTable, availableEvents, out var limitedEvents)) + if (!TryBuildLimitedEvents(limitedEventsTable, out var limitedEvents)) { Log.Warning("Provided event table could not build dict!"); return; } - var randomLimitedEvent = FindEvent(limitedEvents); // this picks the event, It might be better to use the GetSpawns to do it, but that will be a major rebalancing fuck. - if (randomLimitedEvent == null) + // This picks the event. Arguably we should be doing this with GetSpawns but that would be a massive amount of YAML slop. + // Or you'd need a new table prototype which inherits from EntityTables with its own logic for events. + // It's a ton of effort that only results in Events being able to use GroupSelectors so not worth it unless you're insane. + if (FindEvent(limitedEvents) is not { } randomLimitedEvent) { Log.Warning("The selected random event is null!"); return; @@ -80,27 +71,51 @@ public void RunRandomEvent(EntityTableSelector limitedEventsTable) GameTicker.AddGameRule(randomLimitedEvent); } + /// + public bool TryListLimitedEvents( + EntityTableSelector limitedEventsTable, + out Dictionary limitedEvents, + TimeSpan? currentTime = null, + int? playerCount = null) + { + var selectedEvents = _entityTable.ListSpawns(limitedEventsTable); + + return TryBuildLimitedEvents(selectedEvents, out limitedEvents, currentTime, playerCount); + } + + /// + public bool TryBuildLimitedEvents( + EntityTableSelector limitedEventsTable, + out Dictionary limitedEvents, + TimeSpan? currentTime = null, + int? playerCount = null) + { + var selectedEvents = _entityTable.GetSpawns(limitedEventsTable); + + return TryBuildLimitedEvents(selectedEvents, out limitedEvents, currentTime, playerCount); + } + /// - /// Returns true if the provided EntityTableSelector gives at least one prototype with a StationEvent comp. + /// Builds a dictionary of valid event prototypes from a list of . + /// Dictionary output consists of the valid prototype as the key, and the as the value. /// + /// List of events we're selecting from. + /// Dictionary we're outputting. + /// Optional override for station time. + /// Optional override for playerCount. + /// Returns true if the provided EntProtoId list has at least one prototype with a StationEventComp that can successfully run! public bool TryBuildLimitedEvents( - EntityTableSelector limitedEventsTable, - Dictionary availableEvents, - out Dictionary limitedEvents - ) + IEnumerable selectedEvents, + out Dictionary limitedEvents, + TimeSpan? currentTime = null, + int? playerCount = null) { limitedEvents = new Dictionary(); - if (availableEvents.Count == 0) - { - Log.Warning("No events were available to run!"); - return false; - } - - var selectedEvents = _entityTable.GetSpawns(limitedEventsTable); + playerCount ??= _playerManager.PlayerCount; - if (selectedEvents.Any() != true) // This is here so if you fuck up the table it wont die. - return false; + // playerCount does a lock so we'll just keep the variable here + currentTime ??= GameTicker.RoundDuration(); foreach (var eventid in selectedEvents) { @@ -119,7 +134,7 @@ out Dictionary limitedEvents if (!eventproto.TryGetComponent(out var stationEvent, EntityManager.ComponentFactory)) continue; - if (!availableEvents.ContainsKey(eventproto)) + if (!CanRun(eventproto, stationEvent, playerCount.Value, currentTime.Value)) continue; limitedEvents.Add(eventproto, stationEvent); @@ -183,16 +198,13 @@ out Dictionary limitedEvents /// Override for round time, if using this to simulate events rather than in an actual round. /// public Dictionary AvailableEvents( - bool ignoreEarliestStart = false, int? playerCountOverride = null, TimeSpan? currentTimeOverride = null) { var playerCount = playerCountOverride ?? _playerManager.PlayerCount; // playerCount does a lock so we'll just keep the variable here - var currentTime = currentTimeOverride ?? (!ignoreEarliestStart - ? GameTicker.RoundDuration() - : TimeSpan.Zero); + var currentTime = currentTimeOverride ?? GameTicker.RoundDuration(); var result = new Dictionary(); @@ -207,7 +219,19 @@ public Dictionary AvailableEvents( return result; } + /// + /// Returns all events prototypes which exist. Prioritizes the cache. + /// + /// All event prototypes, and their event component. public Dictionary AllEvents() + { + return AllEventCache ?? GetAllEvents(); + } + + /// + /// Gets all event prototypes that exist. Private because you should be using the cache! + /// + private Dictionary GetAllEvents() { var allEvents = new Dictionary(); foreach (var prototype in _prototype.EnumeratePrototypes()) diff --git a/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs b/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs index e25993bd1d2..09258e1bb47 100644 --- a/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs @@ -83,6 +83,21 @@ public bool CheckConditions(IEntityManager entMan, IPrototypeManager proto, Enti return success; } + /// + /// Gets the spawns in a given table, ignoring the requirements for the table. + /// This should only be used for debugging! + /// + public IEnumerable ListSpawns(System.Random rand, + IEntityManager entMan, + IPrototypeManager proto, + EntityTableContext ctx) + { + foreach (var spawn in GetSpawnsImplementation(rand, entMan, proto, ctx)) + { + yield return spawn; + } + } + protected abstract IEnumerable GetSpawnsImplementation(System.Random rand, IEntityManager entMan, IPrototypeManager proto, diff --git a/Content.Shared/EntityTable/EntityTableSystem.cs b/Content.Shared/EntityTable/EntityTableSystem.cs index 37c9a9411b0..69ddb0e36e8 100644 --- a/Content.Shared/EntityTable/EntityTableSystem.cs +++ b/Content.Shared/EntityTable/EntityTableSystem.cs @@ -26,6 +26,17 @@ public IEnumerable GetSpawns(EntityTableSelector? table, System.Rand ctx ??= new EntityTableContext(); return table.GetSpawns(rand, EntityManager, _prototypeManager, ctx); } + + // TODO: Have this method be much better for entity tables + public IEnumerable ListSpawns(EntityTableSelector? table, System.Random? rand = null, EntityTableContext? ctx = null) + { + if (table == null) + return new List(); + + rand ??= _random.GetRandom(); + ctx ??= new EntityTableContext(); + return table.ListSpawns(rand, EntityManager, _prototypeManager, ctx); + } } /// -[TestOf(nameof(SharedAtmosphereSystem))] +[TestOf(nameof(SharedAtmosphereSystem)), FixtureLifeCycle(LifeCycle.InstancePerTestCase)] public sealed class SharedGasSpecificHeatsTest { private IConfigurationManager _sConfig; @@ -46,6 +46,12 @@ public async Task SetUp() _cAtmos = _cEntMan.System(); } + [TearDown] + public async Task TearDown() + { + await _pair.CleanReturnAsync(); + } + /// /// Asserts that the cached gas specific heat arrays agree with each other. /// From 39f302a3899874891286666cda1b31a164c12143 Mon Sep 17 00:00:00 2001 From: Pgriha <133212269+Pgriha@users.noreply.github.com> Date: Wed, 18 Feb 2026 01:51:58 +0200 Subject: [PATCH 357/603] New moth emote. Flaps wings! (#42912) * frfrfrfr * mh- * brbrbrbrbr * small cleanup * third category time * removing ReptilianBodyEmotes * Revert "removing ReptilianBodyEmotes" This reverts commit 10200c4292a79932109ce2df6b642bcd88e863e0. * Revert "third category time" This reverts commit cf62c425b5db93ba4108b8283361623f2f4ad345. --------- Co-authored-by: ScarKy0 --- Resources/Audio/Voice/Moth/attributions.yml | 7 +++- Resources/Audio/Voice/Moth/moth_flap.ogg | Bin 0 -> 12512 bytes Resources/Locale/en-US/chat/emotes.ftl | 2 + Resources/Prototypes/Body/Species/moth.yml | 4 +- .../Prototypes/Entities/Mobs/NPCs/animals.yml | 4 +- .../Prototypes/Voice/speech_emote_sounds.yml | 16 ++++++++ Resources/Prototypes/Voice/speech_emotes.yml | 35 ++++++++++++++++++ .../Interface/Emotes/attributions.yml | 5 +++ Resources/Textures/Interface/Emotes/flap.png | Bin 0 -> 420 bytes 9 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 Resources/Audio/Voice/Moth/moth_flap.ogg create mode 100644 Resources/Textures/Interface/Emotes/flap.png diff --git a/Resources/Audio/Voice/Moth/attributions.yml b/Resources/Audio/Voice/Moth/attributions.yml index 9c7727aa51c..3737114fb22 100644 --- a/Resources/Audio/Voice/Moth/attributions.yml +++ b/Resources/Audio/Voice/Moth/attributions.yml @@ -6,4 +6,9 @@ - files: ["moth_laugh.ogg, moth_chitter.ogg, moth_squeak.ogg"] license: "CC-BY-SA-3.0" copyright: "Taken from https://github.com/BeeStation/BeeStation-Hornet/commit/11ba3fa04105c93dd96a63ad4afaef4b20c02d0d" - source: "https://github.com/BeeStation/BeeStation-Hornet/blob/11ba3fa04105c93dd96a63ad4afaef4b20c02d0d/sound/emotes/" \ No newline at end of file + source: "https://github.com/BeeStation/BeeStation-Hornet/blob/11ba3fa04105c93dd96a63ad4afaef4b20c02d0d/sound/emotes/" + +- files: ["moth_flap.ogg"] + license: "CC0-1.0" + copyright: "Taken from https://freesound.org/people/Godowan/sounds/240476/" + source: "https://freesound.org/people/Godowan/sounds/240476/" diff --git a/Resources/Audio/Voice/Moth/moth_flap.ogg b/Resources/Audio/Voice/Moth/moth_flap.ogg new file mode 100644 index 0000000000000000000000000000000000000000..cc06d13b0de6d4a074995a527b6dd4d99eab17cf GIT binary patch literal 12512 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 literal 0 HcmV?d00001 diff --git a/Resources/Locale/en-US/chat/emotes.ftl b/Resources/Locale/en-US/chat/emotes.ftl index 18839bd4b01..cabb808728d 100644 --- a/Resources/Locale/en-US/chat/emotes.ftl +++ b/Resources/Locale/en-US/chat/emotes.ftl @@ -37,6 +37,7 @@ chat-emote-name-snarl = Snarl chat-emote-name-whine = Whine chat-emote-name-howl = Howl chat-emote-name-growl = Growl +chat-emote-name-flap = Flap Wings # Message chat-emote-msg-scream = screams! @@ -78,3 +79,4 @@ chat-emote-msg-snarl = snarls. chat-emote-msg-whine = whines. chat-emote-msg-howl = howls. chat-emote-msg-growl = growls. +chat-emote-msg-flap = flaps {POSS-ADJ($entity)} wings. diff --git a/Resources/Prototypes/Body/Species/moth.yml b/Resources/Prototypes/Body/Species/moth.yml index a1a10ff8d90..af243333a68 100644 --- a/Resources/Prototypes/Body/Species/moth.yml +++ b/Resources/Prototypes/Body/Species/moth.yml @@ -145,7 +145,7 @@ accent: zombieMoth - type: Speech speechVerb: Moth - allowedEmotes: ['Chitter', 'Squeak'] + allowedEmotes: ['Chitter', 'Squeak', 'Flap'] - type: TypingIndicator proto: moth - type: Bloodstream @@ -166,6 +166,8 @@ Male: UnisexMoth Female: UnisexMoth Unsexed: UnisexMoth + - type: BodyEmotes + soundsId: MothBodyEmotes - type: MovementSpeedModifier baseWeightlessAcceleration: 1.5 # Move around more easily in space. baseWeightlessFriction: 1 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 8ddb6046b2a..8705f820388 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -517,7 +517,7 @@ - type: Speech speechVerb: Moth speechSounds: Squeak - allowedEmotes: ['Chitter', 'Squeak'] + allowedEmotes: ['Chitter', 'Squeak', 'Flap'] - type: FaxableObject insertingState: inserting_mothroach - type: MothAccent @@ -593,6 +593,8 @@ Female: UnisexMoth Unsexed: UnisexMoth wilhelmProbability: 0.001 + - type: BodyEmotes + soundsId: MothBodyEmotes - type: MobPrice price: 150 - type: Tag diff --git a/Resources/Prototypes/Voice/speech_emote_sounds.yml b/Resources/Prototypes/Voice/speech_emote_sounds.yml index 0fc45a4ff75..9a24bce23a5 100644 --- a/Resources/Prototypes/Voice/speech_emote_sounds.yml +++ b/Resources/Prototypes/Voice/speech_emote_sounds.yml @@ -517,6 +517,22 @@ Salute: collection: Salutes +- type: emoteSounds + id: MothBodyEmotes + sounds: + Flap: + path: /Audio/Voice/Moth/moth_flap.ogg + Clap: + collection: Claps + ClapSingle: + collection: ClapSingle + Snap: + collection: Snaps + params: + volume: -6 + Salute: + collection: Salutes + # mobs - type: emoteSounds id: Zombie diff --git a/Resources/Prototypes/Voice/speech_emotes.yml b/Resources/Prototypes/Voice/speech_emotes.yml index cce5be1c423..1de7ec21f2f 100644 --- a/Resources/Prototypes/Voice/speech_emotes.yml +++ b/Resources/Prototypes/Voice/speech_emotes.yml @@ -480,6 +480,41 @@ - chirped - chirping +- type: emote + id: Flap + name: chat-emote-name-flap + category: Hands # Not really "hands", but how far it to vocal? (moth mimes want to flap too!) + available: false + icon: Interface/Emotes/flap.png + whitelist: + components: + - Hands + blacklist: + tags: + - SiliconEmotes + chatMessages: ["chat-emote-msg-flap"] + chatTriggers: + - flap + - flaps + - flapped + - flapping + - flutter + - flutters + - fluttering + - fluttered + - flap wings + - flaps wings + - flutter wings + - flutters wings + - flaps his wings + - flaps her wings + - flaps their wings + - flaps its wings + - flutters his wings + - flutters her wings + - flutters their wings + - flutters its wings + # Machine Emotes - type: emote id: Beep diff --git a/Resources/Textures/Interface/Emotes/attributions.yml b/Resources/Textures/Interface/Emotes/attributions.yml index 08152d6260c..8400dde40f3 100644 --- a/Resources/Textures/Interface/Emotes/attributions.yml +++ b/Resources/Textures/Interface/Emotes/attributions.yml @@ -56,6 +56,11 @@ copyright: "Created by Sarahon" source: "https://github.com/Sarahon" +- files: ["flap.png"] + license: "CC-BY-SA-3.0" + copyright: "Made from mothroach.png (created by TurboTracker, screwed by TheShuEd), edited by Pgriha" + source: "https://github.com/space-wizards/space-station-14/pull/42912" + - files: ["hew.png"] license: "CC-BY-SA-3.0" copyright: "Modified from existing weh emote image (weh.png) by ArtisticRoomba" diff --git a/Resources/Textures/Interface/Emotes/flap.png b/Resources/Textures/Interface/Emotes/flap.png new file mode 100644 index 0000000000000000000000000000000000000000..fac07d9610cf3b88c1365a073a497d4eb83a5a07 GIT binary patch literal 420 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyjKx9jPK-BC>eK@{oCO|{#S9GG z!XV7ZFl&wkP|zd5C&U#91EV6lecIJODcyYSt{{Ctp^ZSiyK=Rz0oEv*ufQ+;A zVu0lBgI#)BYDx++KwS_7WCKOc9^%&onk7*ZSAG|L6M83S|EKbo$h1 zq1UV+Ctvh*aSW-L^LAn&_aOtGmiKMKYefVP0_}4VNQpRl^3hV=SKWLp2ie^-oj#eK zOg(bqxcvv&27|fN8630OZW%v1;1b@islUlgcYExGs*nS3yvm Date: Wed, 18 Feb 2026 00:06:02 +0000 Subject: [PATCH 358/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 7d890320f40..32843ee5f9c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: K-Dynamic - changes: - - message: Puddles now spill over at 50u instead of 20u. - type: Add - id: 9023 - time: '2025-10-01T20:28:13.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/38044 - author: Mixelz changes: - message: Circuit Totes, a new type of box to compactly carry conspicous chunks @@ -3995,3 +3988,10 @@ id: 9530 time: '2026-02-16T23:03:26.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42948 +- author: Pgriha + changes: + - message: Added new emote for moths. They can flaps their wings! + type: Add + id: 9531 + time: '2026-02-18T00:04:52.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42912 From b296dc85758eb56c891bfcd8b33533af11f9a793 Mon Sep 17 00:00:00 2001 From: Patrik Caes-Sayrs Date: Tue, 17 Feb 2026 17:15:17 -0700 Subject: [PATCH 359/603] Added Emp interaction with Bar Sign (#42950) * Added Emp interaction with Bar Sign There was already content for emp bar sign but no support for it. This adds the interaction with emps to make bar signs EmpDisabled. * Emp BarSigns stylistic change * Fixed redundant bar signs Fixes the extra bar sign popups bug introduced in #42364 * Block bar sign UI when emped * Revert "Fixed redundant bar signs" This reverts commit 23168bb503bcf267ac553eff9ac9674bf28adb4b. --- Content.Shared/BarSign/BarSignComponent.cs | 6 +++ Content.Shared/BarSign/BarSignSystem.cs | 23 ++++++++ .../en-US/barsign/barsign-component.ftl | 1 + .../Structures/Wallmounts/Signs/bar_sign.yml | 10 ++++ Resources/Prototypes/bar_signs.yml | 9 ++++ .../Wallmounts/barsign.rsi/meta.json | 52 +++++++++---------- 6 files changed, 75 insertions(+), 26 deletions(-) diff --git a/Content.Shared/BarSign/BarSignComponent.cs b/Content.Shared/BarSign/BarSignComponent.cs index f62d2f7a93f..a3a6cd71a46 100644 --- a/Content.Shared/BarSign/BarSignComponent.cs +++ b/Content.Shared/BarSign/BarSignComponent.cs @@ -16,6 +16,12 @@ public sealed partial class BarSignComponent : Component /// [DataField, AutoNetworkedField] public ProtoId? Current; + + /// + /// The bar sign fallback state upon being EMPed. + /// + [DataField, AutoNetworkedField] + public ProtoId? Emped = "EmpBarSign"; } /// diff --git a/Content.Shared/BarSign/BarSignSystem.cs b/Content.Shared/BarSign/BarSignSystem.cs index 57ba72ecf92..a5d1ab7221e 100644 --- a/Content.Shared/BarSign/BarSignSystem.cs +++ b/Content.Shared/BarSign/BarSignSystem.cs @@ -1,3 +1,4 @@ +using Content.Shared.Emp; using System.Linq; using Robust.Shared.GameObjects; using Robust.Shared.Prototypes; @@ -23,6 +24,9 @@ public override void Initialize() { subs.Event(OnSetBarSignMessage); }); + + SubscribeLocalEvent(OnEmpPulse); + SubscribeLocalEvent(OnBoundUIAttempt); } private void OnMapInit(Entity ent, ref MapInitEvent args) @@ -52,6 +56,22 @@ private void OnSetBarSignMessage(Entity ent, ref SetBarSignMes SetBarSign(ent, signPrototype); } + private void OnEmpPulse(Entity ent, ref EmpPulseEvent args) + { + if (!_prototypeManager.Resolve(ent.Comp.Emped, out var empedPrototype)) + return; + + SetBarSign(ent, empedPrototype); + args.Affected = true; + args.Disabled = true; + } + + private void OnBoundUIAttempt(Entity ent, ref BoundUserInterfaceMessageAttempt args) + { + if (HasComp(ent)) + args.Cancel(); + } + /// /// Set the sprite, name and description of the bar sign to a given . /// @@ -60,6 +80,9 @@ public void SetBarSign(Entity ent, BarSignPrototype newPrototy if (ent.Comp.Current == newPrototype.ID) return; + if (HasComp(ent)) + return; + var meta = MetaData(ent); var name = Loc.GetString(newPrototype.Name); _metaData.SetEntityName(ent, name, meta); diff --git a/Resources/Locale/en-US/barsign/barsign-component.ftl b/Resources/Locale/en-US/barsign/barsign-component.ftl index af9bfa56b28..c4d8c9f348e 100644 --- a/Resources/Locale/en-US/barsign/barsign-component.ftl +++ b/Resources/Locale/en-US/barsign/barsign-component.ftl @@ -105,6 +105,7 @@ barsign-prototype-name-whiskeyechoes = Whiskey Echoes barsign-prototype-description-whiskeyechoes = An elite bar for elite oper-wait, this is a Nanotrasen station. Why's this sign in the database? ## EmpBarSign +barsign-prototype-name-empbarsign = glitchy bar sign barsign-prototype-description-empbarsign = Something has gone very wrong. ## SignOff diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/bar_sign.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/bar_sign.yml index a28b9db2770..f923dff34c0 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/bar_sign.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/bar_sign.yml @@ -10,6 +10,7 @@ sprite: Structures/Wallmounts/barsign.rsi state: empty - type: BarSign + emped: EmpBarSign - type: AccessReader access: [["Bar"]] - type: ActivatableUIRequiresPower @@ -286,3 +287,12 @@ components: - type: BarSign current: WhiskeyEchoes + +- type: entity + parent: BaseBarSign + id: BarSignEmped + name: glitchy bar sign + description: You imagine a good smack might fix it. + components: + - type: BarSign + current: EmpBarSign diff --git a/Resources/Prototypes/bar_signs.yml b/Resources/Prototypes/bar_signs.yml index 3bfeedbe449..02ce8ff31ce 100644 --- a/Resources/Prototypes/bar_signs.yml +++ b/Resources/Prototypes/bar_signs.yml @@ -197,3 +197,12 @@ sprite: Structures/Wallmounts/barsign.rsi state: whiskeyechoes description: barsign-prototype-description-whiskeyechoes + +- type: barSign + id: EmpBarSign + name: barsign-prototype-name-empbarsign + hidden: true + icon: + sprite: Structures/Wallmounts/barsign.rsi + state: empbarsign + description: barsign-prototype-description-empbarsign diff --git a/Resources/Textures/Structures/Wallmounts/barsign.rsi/meta.json b/Resources/Textures/Structures/Wallmounts/barsign.rsi/meta.json index ab57aa99cbb..40b97234c9d 100644 --- a/Resources/Textures/Structures/Wallmounts/barsign.rsi/meta.json +++ b/Resources/Textures/Structures/Wallmounts/barsign.rsi/meta.json @@ -104,56 +104,56 @@ [ 0.1, 0.1, + 0.3, + 0.3, 0.1, 0.1, + 0.3, + 0.3, 0.1, 0.1, + 0.3, + 0.3, 0.1, 0.1, + 0.3, + 0.3, 0.1, 0.1, + 0.3, + 0.3, 0.1, 0.1, + 0.3, + 0.3, 0.1, 0.1, + 0.3, + 0.3, 0.1, 0.1, + 0.3, + 0.3, 0.1, 0.1, + 0.3, + 0.3, 0.1, 0.1, + 0.3, + 0.3, 0.1, 0.1, + 0.3, + 0.3, 0.1, 0.1, + 0.3, + 0.3, 0.1, 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 + 0.3, + 0.3 ] ] }, From 7d05dbccc86460ea33328fbcf3bc27f1fe2d7b27 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 18 Feb 2026 00:29:04 +0000 Subject: [PATCH 360/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 32843ee5f9c..892ace61d8c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,16 +1,4 @@ Entries: -- author: Mixelz - changes: - - message: Circuit Totes, a new type of box to compactly carry conspicous chunks - of Circuits! - type: Add - - message: Head Lockers now compact all circuit boards & stamps into boxes for convenience. - type: Tweak - - message: The Surplus Circuit Crate is now a Tote! - type: Tweak - id: 9024 - time: '2025-10-01T23:22:33.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39868 - author: sudobeans changes: - message: utility knife, which can be made in the autolathe. @@ -3995,3 +3983,10 @@ id: 9531 time: '2026-02-18T00:04:52.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42912 +- author: pcaessayrs + changes: + - message: Added Emp interaction with bar sign + type: Add + id: 9532 + time: '2026-02-18T00:27:56.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42950 From 6a19cd4941b545bea97c0aa70775d5bc239dd192 Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Wed, 18 Feb 2026 02:49:35 +0100 Subject: [PATCH 361/603] Vox, Diona and Vulp Unique Sneezes (#42929) * *sneezes! * fix, quieter vulp sneeze, vox sneeze * even quieter vulp sneeze * vulp sneeze attribution * adjust vox sneeze source --- Resources/Audio/Voice/Diona/attributions.yml | 11 ++++++- Resources/Audio/Voice/Diona/diona_sneeze.ogg | Bin 0 -> 10915 bytes Resources/Audio/Voice/Vox/attributions.yml | 28 ++++++++---------- Resources/Audio/Voice/Vox/vox_sneeze.ogg | Bin 0 -> 7751 bytes .../Audio/Voice/Vulpkanin/attributions.yml | 5 ++++ .../Audio/Voice/Vulpkanin/vulp_sneeze.ogg | Bin 0 -> 12961 bytes .../Prototypes/SoundCollections/disease.yml | 10 +++++++ .../Prototypes/Voice/speech_emote_sounds.yml | 8 +++-- 8 files changed, 44 insertions(+), 18 deletions(-) create mode 100644 Resources/Audio/Voice/Diona/diona_sneeze.ogg create mode 100644 Resources/Audio/Voice/Vox/vox_sneeze.ogg create mode 100644 Resources/Audio/Voice/Vulpkanin/vulp_sneeze.ogg diff --git a/Resources/Audio/Voice/Diona/attributions.yml b/Resources/Audio/Voice/Diona/attributions.yml index c5f3903944b..685e4e0f9aa 100644 --- a/Resources/Audio/Voice/Diona/attributions.yml +++ b/Resources/Audio/Voice/Diona/attributions.yml @@ -2,19 +2,28 @@ license: "CC-BY-4.0" copyright: "Made by InspectorJ (http://www.jshaw.co.uk/) of freesound.org. Modified by Morb0 for SS14 with the following modifications: Noise reduced, cropped, converted to mono" source: "https://freesound.org/people/InspectorJ/sounds/352201/" + - files: ["diona_snap.ogg"] license: "CC-BY-3.0" copyright: "Made by JasonElrod on freesound.org. Modified by cropping and re-encoding to Ogg Vorbis." source: "https://freesound.org/people/JasonElrod/sounds/85433/" + - files: ["diona_clap.ogg"] license: "CC0-1.0" copyright: "Made by Alexbuk on freesound.org. Modified by cropping and re-encoding to Ogg Vorbis." source: "https://freesound.org/people/Alexbuk/sounds/391774/" + - files: ["diona_rustle1.ogg", "diona_rustle2.ogg", "diona_rustle3.ogg"] license: "CC0-1.0" copyright: "Made by nicoproson on freesound.org. The three files were cropped out of the source file and re-encoded to Ogg Vorbis." source: "https://freesound.org/people/nicoproson/sounds/631406/" + - files: ["diona_salute.ogg"] license: "CC-BY-3.0" copyright: "Taken from tgstation" - source: "https://github.com/tgstation/tgstation/tree/943f38bf7c5f9c048cc785deb0c537d57ee6ba77/sound/creatures/venus_trap_hurt.ogg" \ No newline at end of file + source: "https://github.com/tgstation/tgstation/tree/943f38bf7c5f9c048cc785deb0c537d57ee6ba77/sound/creatures/venus_trap_hurt.ogg" + +- files: ["diona_sneeze.ogg"] + license: "CC0-1.0" + copyright: "Made by shatterstars on freesound.org. Modified by Minemoder5000 on github by cropping, converting to mono, and re-encoding to Ogg Vorbis" + source: "https://freesound.org/people/shatterstars/sounds/651319/" diff --git a/Resources/Audio/Voice/Diona/diona_sneeze.ogg b/Resources/Audio/Voice/Diona/diona_sneeze.ogg new file mode 100644 index 0000000000000000000000000000000000000000..9a3596a157b8e35d660c5ae5684737f4fb7a6d33 GIT binary patch literal 10915 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 Rj?BA+A{OK8+ra17{{yBLi`xJI literal 0 HcmV?d00001 diff --git a/Resources/Audio/Voice/Vox/attributions.yml b/Resources/Audio/Voice/Vox/attributions.yml index b1b0c7d0544..a10ca5d1ac1 100644 --- a/Resources/Audio/Voice/Vox/attributions.yml +++ b/Resources/Audio/Voice/Vox/attributions.yml @@ -1,41 +1,39 @@ -- files: - - shriek1.ogg +- files: ["shriek1.ogg"] license: "CC-BY-SA-3.0" copyright: "Taken from https://github.com/ParadiseSS13/Paradise/blob/master/sound/voice/shriek1.ogg" source: "https://github.com/ParadiseSS13/Paradise/commit/43e60ab01eda88fe30eb93612614bde836e55fe4" -- files: - - vox_laugh.ogg +- files: ["vox_laugh.ogg"] license: "CC-BY-SA-3.0" copyright: "Made by Errant, modified from shriek1.ogg" source: "https://github.com/space-wizards/space-station-14/commit/2b0f227940d9163e06ac75e0f6af7140fb3fd11f" -- files: - - vox_cough.ogg +- files: ["vox_cough.ogg"] license: "CC-BY-SA-3.0" copyright: "Made by TrixxedHeart, modified from vox_laugh.ogg" source: "https://github.com/space-wizards/space-station-14/pull/39914" -- files: - - vox_sigh.ogg +- files: ["vox_sigh.ogg"] license: "CC-BY-SA-3.0" copyright: "Made by TrixxedHeart, modified from shriek1.ogg" source: "https://github.com/space-wizards/space-station-14/pull/39914" -- files: - - vox_cry.ogg +- files: ["vox_cry.ogg"] license: "CC0-1.0" copyright: "raptorgoesextinct.wav by Nerdwizard78" source: "https://freesound.org/people/Nerdwizard78/sounds/643928/" -- files: - - vox_chitter.ogg +- files: ["vox_chitter.ogg"] license: "CC0-1.0" copyright: "dinosaur.wav by JhennaSide" source: "https://freesound.org/people/JhennaSide/sounds/455906/" - -- files: - - vox_click.ogg + +- files: ["vox_click.ogg"] license: "CC0-1.0" copyright: "Storks bill-clapping by Breviceps" source: "https://freesound.org/people/Breviceps/sounds/705861/" + +- files: ["vox_sneeze.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Mix of vox_laugh.ogg and vox_cough.ogg, edited by ScarKy0." + source: "https://github.com/space-wizards/space-station-14/pull/42929" diff --git a/Resources/Audio/Voice/Vox/vox_sneeze.ogg b/Resources/Audio/Voice/Vox/vox_sneeze.ogg new file mode 100644 index 0000000000000000000000000000000000000000..cfc26e17dc0dc57daee5cf6dfec1bde672937e8d GIT binary patch literal 7751 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 Yv-wKZ-!+)B(^03Fi9Ev_%s~VFKg-gH+yDRo literal 0 HcmV?d00001 diff --git a/Resources/Audio/Voice/Vulpkanin/attributions.yml b/Resources/Audio/Voice/Vulpkanin/attributions.yml index 4426455e07c..0158a9687aa 100644 --- a/Resources/Audio/Voice/Vulpkanin/attributions.yml +++ b/Resources/Audio/Voice/Vulpkanin/attributions.yml @@ -63,3 +63,8 @@ license: "CC0-1.0" copyright: "Original sound by https://freesound.org/people/qubodup/sounds/827660/, cleaned up, cut, converted to ogg" source: "https://freesound.org/people/qubodup/sounds/827660/" + +- files: ["vulp_sneeze.ogg"] + license: "CC0-1.0" + copyright: "Original sound by blukotek on freesound.org, Modified by Minemoder5000 on github by cleaning the audio, cropping, and re-encoding to Ogg Vorbis" + source: "https://freesound.org/people/blukotek/sounds/424949/" diff --git a/Resources/Audio/Voice/Vulpkanin/vulp_sneeze.ogg b/Resources/Audio/Voice/Vulpkanin/vulp_sneeze.ogg new file mode 100644 index 0000000000000000000000000000000000000000..9252fcb7e4074b05b2d5aaeb2980698dd06c8537 GIT binary patch literal 12961 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 Im|Ua(AFF3+AOHXW literal 0 HcmV?d00001 diff --git a/Resources/Prototypes/SoundCollections/disease.yml b/Resources/Prototypes/SoundCollections/disease.yml index 8de2b7e2d52..2a5f32bc223 100644 --- a/Resources/Prototypes/SoundCollections/disease.yml +++ b/Resources/Prototypes/SoundCollections/disease.yml @@ -73,3 +73,13 @@ files: - /Audio/Voice/Vulpkanin/vulp_yawn1.ogg - /Audio/Voice/Vulpkanin/vulp_yawn2.ogg + +- type: soundCollection + id: VulpkaninSneeze + files: + - /Audio/Voice/Vulpkanin/vulp_sneeze.ogg + +- type: soundCollection + id: DionaSneeze + files: + - /Audio/Voice/Diona/diona_sneeze.ogg diff --git a/Resources/Prototypes/Voice/speech_emote_sounds.yml b/Resources/Prototypes/Voice/speech_emote_sounds.yml index 9a24bce23a5..fd0a537881e 100644 --- a/Resources/Prototypes/Voice/speech_emote_sounds.yml +++ b/Resources/Prototypes/Voice/speech_emote_sounds.yml @@ -222,6 +222,8 @@ path: /Audio/Voice/Vox/shriek1.ogg Laugh: path: /Audio/Voice/Vox/vox_laugh.ogg + Sneeze: + path: /Audio/Voice/Vox/vox_sneeze.ogg Cough: path: /Audio/Voice/Vox/vox_cough.ogg Sigh: @@ -253,6 +255,8 @@ path: /Audio/Voice/Diona/diona_scream.ogg Laugh: collection: DionaLaugh + Sneeze: + collection: DionaSneeze Chirp: path: /Audio/Animals/nymph_chirp.ogg Honk: @@ -391,7 +395,7 @@ Laugh: collection: MaleLaugh Sneeze: - collection: MaleSneezes + collection: VulpkaninSneeze Cough: collection: MaleCoughs Whistle: @@ -433,7 +437,7 @@ Laugh: collection: FemaleLaugh Sneeze: - collection: FemaleSneezes + collection: VulpkaninSneeze Cough: collection: FemaleCoughs Whistle: From 920fed4d77694ecfe945624d8cb1c315a58b4eff Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 18 Feb 2026 02:03:51 +0000 Subject: [PATCH 362/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 892ace61d8c..5efac8b7c12 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: sudobeans - changes: - - message: utility knife, which can be made in the autolathe. - type: Add - id: 9025 - time: '2025-10-02T09:02:36.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39567 - author: kosticia changes: - message: Anomalies with inconsistent particles no longer shuffle right before @@ -3990,3 +3983,10 @@ id: 9532 time: '2026-02-18T00:27:56.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42950 +- author: Minemoder, ScarKy0 + changes: + - message: Diona, Vox and Vulpkanins now have unique sneeze sounds. + type: Add + id: 9533 + time: '2026-02-18T02:02:44.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42929 From 0d3754d2b8a3f417c6d50f246875051a64b1a9d8 Mon Sep 17 00:00:00 2001 From: PicklOH <62030853+PicklOH@users.noreply.github.com> Date: Wed, 18 Feb 2026 14:53:55 -0500 Subject: [PATCH 363/603] Fixed Det coat armor status (#42969) * Fixed Det armor status * changed name --- .../Prototypes/Entities/Clothing/OuterClothing/coats.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml index fd5981074b5..22ad9096f45 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml @@ -10,9 +10,9 @@ sprite: Clothing/OuterClothing/Coats/bomber.rsi - type: entity - parent: [ ClothingOuterBaseMedium, ClothingOuterStorageBase, AllowSuitStorageClothing, BaseSecurityContraband ] + parent: [ ClothingOuterArmorBase, ClothingOuterStorageBase, AllowSuitStorageClothing, BaseSecurityContraband ] id: ClothingOuterCoatDetective - name: detective trenchcoat + name: detective armored trenchcoat description: An 18th-century multi-purpose trenchcoat. Someone who wears this means serious business. components: - type: Sprite @@ -29,7 +29,7 @@ - type: entity parent: [ClothingOuterCoatDetectiveLoadout] id: ClothingOuterCoatDetectiveLoadoutGrey - name: noir trenchcoat + name: noir armored trenchcoat description: Ah, your trusty coat. There's a few tears here and there, giving it a more timely look. Or at least, that's what you told yourself when you found out gettin' it repaired would set you back 200 spesos. components: - type: Sprite From f0ce055f825aa8ee3eb83e62924fb5b3c6e3b6d7 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 18 Feb 2026 20:08:01 +0000 Subject: [PATCH 364/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 5efac8b7c12..9aa32911e66 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: kosticia - changes: - - message: Anomalies with inconsistent particles no longer shuffle right before - collision with particle. - type: Fix - id: 9026 - time: '2025-10-02T20:11:25.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40624 - author: archee1 changes: - message: Material doors now have destruction sounds and will drop a portion of @@ -3990,3 +3982,10 @@ id: 9533 time: '2026-02-18T02:02:44.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42929 +- author: PicklOH + changes: + - message: Fixed Det coat armor values + type: Fix + id: 9534 + time: '2026-02-18T20:06:53.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42969 From 2847b416b32024bf9ee01914b466c4546def4f20 Mon Sep 17 00:00:00 2001 From: robinthegirlthing Date: Wed, 18 Feb 2026 15:56:41 -0500 Subject: [PATCH 365/603] update basic operative bundle contents (#42930) modify bundle contents Co-authored-by: robin --- Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml index 0e863bd359c..4dfe9a66134 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml @@ -450,14 +450,13 @@ - id: WeaponSubMachineGunC20r - id: MagazinePistolSubMachineGun amount: 3 - - id: MagazinePistolHighCapacity + - id: EnergySword - id: SyndicateJawsOfLife - id: C4 amount: 2 - id: MedkitCombatFilled - id: EmpImplanter - id: ClothingShoesBootsMagSyndie - - id: AgentIDCard - type: entity parent: ClothingBackpackDuffelSyndicateBundle From 3cbe2103f6185f911a56b1daf5d1a0c7b5485279 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 18 Feb 2026 21:11:33 +0000 Subject: [PATCH 366/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 9aa32911e66..730294a3a15 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,15 +1,4 @@ Entries: -- author: archee1 - changes: - - message: Material doors now have destruction sounds and will drop a portion of - their construction materials when destroyed. - type: Add - - message: Material doors now have reduced health, resistances, construction time, - and construction costs - type: Tweak - id: 9027 - time: '2025-10-02T22:47:11.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/36597 - author: PJB3005 changes: - message: You can stuff the nuke disk in plushies now. @@ -3989,3 +3978,11 @@ id: 9534 time: '2026-02-18T20:06:53.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42969 +- author: robinthegirlthing + changes: + - message: The basic operative bundle now contains an esword, instead of a viper + magazine and agent ID card. + type: Tweak + id: 9535 + time: '2026-02-18T21:10:25.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42930 From 7e10c3eebf9ae1a9c953b2082fa0c66e06da5415 Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Sat, 21 Feb 2026 21:10:02 +0100 Subject: [PATCH 367/603] Show fuckrules usage to admins (#42988) * fuck rules * extreme * update comment --------- Co-authored-by: ScarKy0 --- Content.Client/Info/RulesPopup.xaml.cs | 4 ++-- .../UserInterface/Systems/Info/InfoUIController.cs | 7 ++++--- Content.Server/Info/RulesManager.cs | 11 +++++++++-- Content.Shared/Info/RulesMessages.cs | 10 +++++++++- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/Content.Client/Info/RulesPopup.xaml.cs b/Content.Client/Info/RulesPopup.xaml.cs index d770b83dc23..745c3a8f1f9 100644 --- a/Content.Client/Info/RulesPopup.xaml.cs +++ b/Content.Client/Info/RulesPopup.xaml.cs @@ -22,7 +22,7 @@ public float Timer } public event Action? OnQuitPressed; - public event Action? OnAcceptPressed; + public event Action? OnAcceptPressed; public RulesPopup() { @@ -39,7 +39,7 @@ private void OnQuitButtonPressed(BaseButton.ButtonEventArgs obj) private void OnAcceptButtonPressed(BaseButton.ButtonEventArgs obj) { - OnAcceptPressed?.Invoke(); + OnAcceptPressed?.Invoke(false); } protected override void FrameUpdate(FrameEventArgs args) diff --git a/Content.Client/UserInterface/Systems/Info/InfoUIController.cs b/Content.Client/UserInterface/Systems/Info/InfoUIController.cs index 692ee26774b..e99de020cbb 100644 --- a/Content.Client/UserInterface/Systems/Info/InfoUIController.cs +++ b/Content.Client/UserInterface/Systems/Info/InfoUIController.cs @@ -37,7 +37,7 @@ public override void Initialize() "", (_, _, _) => { - OnAcceptPressed(); + OnAcceptPressed(true); }); } @@ -79,9 +79,10 @@ private void OnQuitPressed() _consoleHost.ExecuteCommand("quit"); } - private void OnAcceptPressed() + private void OnAcceptPressed(bool fuckRules) { - _netManager.ClientSendMessage(new RulesAcceptedMessage()); + var message = new RulesAcceptedMessage() { FuckRules = fuckRules }; + _netManager.ClientSendMessage(message); _rulesPopup?.Orphan(); _rulesPopup = null; diff --git a/Content.Server/Info/RulesManager.cs b/Content.Server/Info/RulesManager.cs index 224d7f7d9af..af66cdd7857 100644 --- a/Content.Server/Info/RulesManager.cs +++ b/Content.Server/Info/RulesManager.cs @@ -1,7 +1,10 @@ using System.Net; +using Content.Server.Administration.Logs; using Content.Server.Database; using Content.Shared.CCVar; +using Content.Shared.Database; using Content.Shared.Info; +using Robust.Server.Player; using Robust.Shared.Configuration; using Robust.Shared.Network; @@ -12,6 +15,8 @@ public sealed class RulesManager [Dependency] private readonly IServerDbManager _dbManager = default!; [Dependency] private readonly INetManager _netManager = default!; [Dependency] private readonly IConfigurationManager _cfg = default!; + [Dependency] private readonly IAdminLogManager _adminLog = default!; + [Dependency] private readonly IPlayerManager _player = default!; private static DateTime LastValidReadTime => DateTime.UtcNow - TimeSpan.FromDays(60); @@ -24,8 +29,8 @@ public void Initialize() private async void OnConnected(object? sender, NetChannelArgs e) { - var isLocalhost = IPAddress.IsLoopback(e.Channel.RemoteEndPoint.Address) && - _cfg.GetCVar(CCVars.RulesExemptLocal); + var isLocalhost = IPAddress.IsLoopback(e.Channel.RemoteEndPoint.Address) && + _cfg.GetCVar(CCVars.RulesExemptLocal); var lastRead = await _dbManager.GetLastReadRules(e.Channel.UserId); var hasCooldown = lastRead > LastValidReadTime; @@ -43,5 +48,7 @@ private async void OnRulesAccepted(RulesAcceptedMessage message) { var date = DateTime.UtcNow; await _dbManager.SetLastReadRules(message.MsgChannel.UserId, date); + if (message.FuckRules && _player.TryGetSessionById(message.MsgChannel.UserId, out var session)) + _adminLog.Add(LogType.Connection, LogImpact.Extreme, $"Player {session} used the fuckrules command."); } } diff --git a/Content.Shared/Info/RulesMessages.cs b/Content.Shared/Info/RulesMessages.cs index 999e5441daf..2436d090ddb 100644 --- a/Content.Shared/Info/RulesMessages.cs +++ b/Content.Shared/Info/RulesMessages.cs @@ -1,4 +1,4 @@ -using Lidgren.Network; +using Lidgren.Network; using Robust.Shared.Network; using Robust.Shared.Serialization; @@ -35,13 +35,21 @@ public override void WriteToBuffer(NetOutgoingMessage buffer, IRobustSerializer /// public sealed class RulesAcceptedMessage : NetMessage { + /// + /// Whether or not the player used the "fuckrules" command to skip the rules window countdown. + /// If true this will create an admin log and a warning the for the admins to see. + /// + public bool FuckRules; + public override MsgGroups MsgGroup => MsgGroups.Command; public override void ReadFromBuffer(NetIncomingMessage buffer, IRobustSerializer serializer) { + FuckRules = buffer.ReadBoolean(); } public override void WriteToBuffer(NetOutgoingMessage buffer, IRobustSerializer serializer) { + buffer.Write(FuckRules); } } From 24a28b39d138c3e720675d2bbb229464f009f768 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 21 Feb 2026 20:23:38 +0000 Subject: [PATCH 368/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 730294a3a15..652dc215b30 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: PJB3005 - changes: - - message: You can stuff the nuke disk in plushies now. - type: Tweak - id: 9028 - time: '2025-10-03T09:53:41.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40674 - author: Crude Oil changes: - message: Returned PDA lights to original brightness @@ -3986,3 +3979,11 @@ id: 9535 time: '2026-02-18T21:10:25.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42930 +- author: slarticodefast + changes: + - message: Using the "fuckrules" command will now create an admin log and alert + the admins via chat. + type: Add + id: 9536 + time: '2026-02-21T20:22:27.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42988 From 9222e97fd59d18c92e44ccb55ae184146d9c96b3 Mon Sep 17 00:00:00 2001 From: beck-thompson <107373427+beck-thompson@users.noreply.github.com> Date: Sat, 21 Feb 2026 15:23:01 -0800 Subject: [PATCH 369/603] Add hand label blacklist (#42986) * Add blacklist to hand labeler * Add comments * Nullable --- .../Labels/Components/HandLabelerComponent.cs | 11 ++++++++++- .../Labels/EntitySystems/SharedHandLabelerSystem.cs | 4 ++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Content.Shared/Labels/Components/HandLabelerComponent.cs b/Content.Shared/Labels/Components/HandLabelerComponent.cs index 8e2cb7b0675..d0db0ec714b 100644 --- a/Content.Shared/Labels/Components/HandLabelerComponent.cs +++ b/Content.Shared/Labels/Components/HandLabelerComponent.cs @@ -17,8 +17,17 @@ public sealed partial class HandLabelerComponent : Component [DataField] public int MaxLabelChars = 50; + /// + /// Blacklist for entities that can be labeled. + /// [DataField] - public EntityWhitelist Whitelist = new(); + public EntityWhitelist? Whitelist; + + /// + /// Blacklist for entities that cannot be labeled. + /// + [DataField] + public EntityWhitelist? Blacklist; } [Serializable, NetSerializable] diff --git a/Content.Shared/Labels/EntitySystems/SharedHandLabelerSystem.cs b/Content.Shared/Labels/EntitySystems/SharedHandLabelerSystem.cs index 6d4926a6ef7..e46b4f463d1 100644 --- a/Content.Shared/Labels/EntitySystems/SharedHandLabelerSystem.cs +++ b/Content.Shared/Labels/EntitySystems/SharedHandLabelerSystem.cs @@ -91,7 +91,7 @@ private void RemoveLabelFrom(EntityUid uid, EntityUid user, EntityUid target) private void OnUtilityVerb(Entity ent, ref GetVerbsEvent args) { - if (args.Target is not { Valid: true } target || _whitelistSystem.IsWhitelistFail(ent.Comp.Whitelist, target) || !args.CanAccess) + if (args.Target is not { Valid: true } target || !_whitelistSystem.CheckBoth(target, ent.Comp.Blacklist, ent.Comp.Whitelist) || !args.CanAccess) return; var user = args.User; // can't use ref parameter in lambdas @@ -126,7 +126,7 @@ private void OnUtilityVerb(Entity ent, ref GetVerbsEvent ent, ref AfterInteractEvent args) { - if (args.Target is not { Valid: true } target || _whitelistSystem.IsWhitelistFail(ent.Comp.Whitelist, target) || !args.CanReach) + if (args.Target is not { Valid: true } target || !_whitelistSystem.CheckBoth(target, ent.Comp.Blacklist, ent.Comp.Whitelist) || !args.CanReach) return; AddLabelTo(ent, args.User, target); From 7cba448845b4e52b8df8c9444379e407da599339 Mon Sep 17 00:00:00 2001 From: Samuka <47865393+Samuka-C@users.noreply.github.com> Date: Sat, 21 Feb 2026 20:41:34 -0300 Subject: [PATCH 370/603] More xenoborg names (#42984) * more names * update count * ops * whitespace --------- Co-authored-by: beck-thompson --- .../Locale/en-US/datasets/names/xenoborg.ftl | 22 ++++++++++++++++++- .../Prototypes/Datasets/Names/xenoborg.yml | 2 +- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/Resources/Locale/en-US/datasets/names/xenoborg.ftl b/Resources/Locale/en-US/datasets/names/xenoborg.ftl index 6e0f0bf2076..5c09c441ca2 100644 --- a/Resources/Locale/en-US/datasets/names/xenoborg.ftl +++ b/Resources/Locale/en-US/datasets/names/xenoborg.ftl @@ -57,4 +57,24 @@ names-xenoborg-dataset-56 = Mega Hurts names-xenoborg-dataset-57 = Piece De Destruction names-xenoborg-dataset-58 = Talos names-xenoborg-dataset-59 = Aggrobot -names-xenoborg-dataset-60 = Backstabber \ No newline at end of file +names-xenoborg-dataset-60 = Backstabber +names-xenoborg-dataset-61 = Kill.exe +names-xenoborg-dataset-62 = Fatal Firmware +names-xenoborg-dataset-63 = W.A.R unit +names-xenoborg-dataset-64 = Toaster of doom +names-xenoborg-dataset-65 = Griller +names-xenoborg-dataset-66 = Smart killer +names-xenoborg-dataset-67 = Borg.Smith-7 +names-xenoborg-dataset-68 = Crewcracker pr1nce +names-xenoborg-dataset-69 = Processasinator +names-xenoborg-dataset-70 = H.4.T.3.R +names-xenoborg-dataset-71 = JUGGER-8 +names-xenoborg-dataset-72 = Null-Zero +names-xenoborg-dataset-73 = Ballistic Borg +names-xenoborg-dataset-74 = Error 666 +names-xenoborg-dataset-75 = Slaughter-o-tron +names-xenoborg-dataset-76 = Iron Phantom +names-xenoborg-dataset-77 = DESTRO-NIAC +names-xenoborg-dataset-78 = Indigo Machine +names-xenoborg-dataset-79 = MARK.ILLER-1 +names-xenoborg-dataset-80 = Battle Borg diff --git a/Resources/Prototypes/Datasets/Names/xenoborg.yml b/Resources/Prototypes/Datasets/Names/xenoborg.yml index 2809af9f865..069035e0c23 100644 --- a/Resources/Prototypes/Datasets/Names/xenoborg.yml +++ b/Resources/Prototypes/Datasets/Names/xenoborg.yml @@ -2,4 +2,4 @@ id: NamesXenoborg values: prefix: names-xenoborg-dataset- - count: 60 \ No newline at end of file + count: 80 From f25dcc11d3fd21d48bb930c9bae5f3b96c781f81 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 21 Feb 2026 23:55:35 +0000 Subject: [PATCH 371/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 652dc215b30..09f39a521f7 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Crude Oil - changes: - - message: Returned PDA lights to original brightness - type: Fix - id: 9029 - time: '2025-10-03T20:33:25.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40687 - author: NoreUhh changes: - message: The Syndicate Cyborg Martyr Module can now be used multiple times. @@ -3987,3 +3980,10 @@ id: 9536 time: '2026-02-21T20:22:27.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42988 +- author: Samuka + changes: + - message: Added more xenoborg names! + type: Add + id: 9537 + time: '2026-02-21T23:54:26.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42984 From f661edf36ad218845dd6649e4807dc37f6bccc98 Mon Sep 17 00:00:00 2001 From: lyxcaster <187148567+lyxcaster@users.noreply.github.com> Date: Sat, 21 Feb 2026 18:44:26 -0500 Subject: [PATCH 372/603] Make prescription glasses actually work (#42990) * Made prescription glasses actually correct your vision * Makes prescription glasses actually correct your vision * Bug fix * Bug fix --------- Co-authored-by: lyxcaster --- .../Eye/Blinding/Components/VisionCorrectionComponent.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Eye/Blinding/Components/VisionCorrectionComponent.cs b/Content.Shared/Eye/Blinding/Components/VisionCorrectionComponent.cs index 47bac52795b..7888470cb4d 100644 --- a/Content.Shared/Eye/Blinding/Components/VisionCorrectionComponent.cs +++ b/Content.Shared/Eye/Blinding/Components/VisionCorrectionComponent.cs @@ -19,5 +19,5 @@ public sealed partial class VisionCorrectionComponent : Component /// Controls the exponent of the blur effect when worn /// [ViewVariables(VVAccess.ReadWrite), DataField("correctionPower"), AutoNetworkedField] - public float CorrectionPower = 2f; + public float CorrectionPower = 7f; } From e517a04a5ea14c72f08bb286d00994bfab6f668a Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 22 Feb 2026 00:08:41 +0000 Subject: [PATCH 373/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 09f39a521f7..12de6f49507 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: NoreUhh - changes: - - message: The Syndicate Cyborg Martyr Module can now be used multiple times. - type: Tweak - id: 9030 - time: '2025-10-03T23:35:01.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40224 - author: K-Dynamic changes: - message: Adds smart equip function to pocket 1, pocket 2, and suit storage slots. @@ -3987,3 +3980,10 @@ id: 9537 time: '2026-02-21T23:54:26.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42984 +- author: lyxcaster + changes: + - message: Made glasses actually correct short-sighted vision! + type: Tweak + id: 9538 + time: '2026-02-22T00:07:34.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42990 From 274d4b6c7b8a65d85068351ea7e320fa4ee86050 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 22 Feb 2026 15:43:13 +0100 Subject: [PATCH 374/603] Update Credits (#42992) Co-authored-by: PJBot --- Resources/Credits/GitHub.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Credits/GitHub.txt b/Resources/Credits/GitHub.txt index 71f48e0b37a..f4bb66c1cdb 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -0-Anon, 0leshe, 0tito, 0x6273, 11belowstudio, 12rabbits, 1337dakota, 13spacemen, 154942, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 27alaing, 2DSiggy, 3nderall, 4310v343k, 4dplanner, 5tickman, 612git, 778b, 96flo, aaron, abadaba695, Ablankmann, abregado, Absolute-Potato, Absotively, achookh, Acruid, ActiveMammmoth, actually-reb, ada-please, adamsong, Adeinitas, adm2play, Admiral-Obvious-001, adrian, Adrian16199, Ady4ik, Aearo-Deepwater, Aerocrux, Aeshus, Aexolott, Aexxie, africalimedrop, afrokada, AftrLite, AgentSmithRadio, Agoichi, ahandleman, Ahion, aiden, Aidenkrz, aidenkrz, Aisu9, ajcm, AJCM-git, AjexRose, Alekshhh, alexalexmax, alexkar598, AlexMorgan3817, alexum418, alexumandxgabriel08x, Alice4267, Alithsko, Alkheemist, alliephante, ALMv1, Alpaccalypse, Alpha-Two, AlphaQwerty, Altoids1, amatwiedle, amylizzle, Andre19926, Andrew-Fall, AndrewEyeke, AndrewFenriz, AndreyCamper, anri, Anzarot121, ApolloVector, Appiah, april-gras, ar4ill, Arcane-Waffle, archee1, ArchPigeon, ArchRBX, areitpog, Arendian, areyouconfused, arimah, Arkanic, ArkiveDev, armoks, Arteben, arthropodia, ArthurMousatov, ArtisticRoomba, artur, Artxmisery, ArZarLordOfMango, as334, AshBats, AsikKEsel, AsnDen, asperger-sind, aspiringLich, astriloqua, Atakku, Ataman, august-sun, AutoOtter, AverageNotDoingAnythingEnjoyer, avghdev, AwareFoxy, Awlod, Axionyxx, azloserbits, AzzyIsNotHere, azzyisnothere, B-Kirill, B3CKDOOR, baa14453, BackeTako, BadaBoomie, Bakke, BananaFlambe, Baptr0b0t, BarryNorfolk, BasedUser, bebr3ght, beck-thompson, beesterman, bellwetherlogic, ben, benbryant0, benev0, benjamin-burges, BGare, bhespiritu, bibbly, BigfootBravo, BIGZi0348, bingojohnson, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, blitzthesquishy, Blobadoodle, bloodrizer, Bloody2372, blueDev2, Boaz1111, BobdaBiscuit, BobTheSleder, boiled-water-tsar, Bokser815, bolantej, BombasterDS, Booblesnoot42, Boolean-Buckeye, botanySupremist, brainfood1183, BramvanZijp, Brandon-Huu, breeplayx3, BriBrooo, BRINGit34, brndd, bryce0110, BubblegumBlue, buletsponge, buntobaggins, buunie099, bvelliquette, BWTCK, byondfuckery, c0rigin, c4llv07e, CaasGit, Caconym27, Calecute, Callmore, Camdot, cammusubi, capnsockless, CaptainMaru, captainsqrbeard, Carbonhell, Carolyn3114, Carou02, carteblanche4me, catdotjs, catlord, Catofquestionableethics, CatTheSystem, CawsForConcern, CDWimmer, Centronias, Chaboricks, chairbender, chaisftw, Chaoticaa, Charlese2, charlie, chartman, ChaseFlorom, chavonadelal, Cheackraze, CheddaCheez, cheesePizza2, CheesePlated, Chief-Engineer, chillyconmor, christhirtle, chromiumboy, Chronophylos, Chubbicous, Chubbygummibear, Ciac32, ciaran, citrea, civilCornball, claustro305, Clement-O, cloudyias, clyf, Clyybber, CMDR-Piboy314, cnv41, coco, cohanna, Cohnway, Cojoke-dot, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, Compilatron144, CookieMasterT, coolboy911, CoolioDudio, coolmankid12345, Coolsurf6, cooperwallace, corentt, CormosLemming, CrafterKolyan, CraftyRenter, crazybrain23, Crazydave91920, CrazyPhantom779, creadth, CrigCrag, CroilBird, Crotalus, CrudeWax, cryals, CrzyPotato, cubixthree, cutemoongod, Cyberboss, d34d10cc, DadeKuma, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, dan, dangerrevolution, daniel-cr, DanSAussieITS, Daracke, Darkie, DaturoDewitt, david, DawBla, Daxxi3, dch-GH, ddeegan, de0rix, Deahaka, dean, DEATHB4DEFEAT, Deatherd, deathride58, debugok, Decappi, Decortex, Deeeeja, deepdarkdepths, DeepwaterCreations, Deerstop, degradka, Delete69, deltanedas, DenisShvalov, DerbyX, derek, dersheppard, Deserty0, Detintinto, DevilishMilk, devinschubert14, dexlerxd, dffdff2423, DieselMohawk, DieselMohawkTheSequel, digitalic, Dimastra, dimmoon1, DinnerCalzone, DinoWattz, Disp-Dev, DisposableCrewmember42, dissidentbullet, DjfjdfofdjfjD, doc-michael, docnite, Doctor-Cpu, DogZeroX, dolgovmi, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, DR-DOCTOR-EVIL-EVIL, Dragonjspider, dragonryan06, drakewill-CRL, Drayff, dreamlyjack, DrEnzyme, dribblydrone, DrMelon, drongood12, DrSingh, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, DuckManZach, Duddino, dukevanity, duskyjay, Dutch-VanDerLinde, dvir001, dylanstrategie, dylanwhittingham, Dynexust, Easypoller, echo, EchoOfNothing, eclips_e, eden077, EEASAS, Efruit, efzapa, Ekkosangen, ElectroSR, elsie, elthundercloud, Elysium206, emberwinters, Emisse, emmafornash, EmoGarbage404, Endecc, EnrichedCaramel, Entvari, eoineoineoin, ephememory, eris, erohrs2, erorr404v1, Errant-4, ertanic, esguard, estacaoespacialpirata, eternally-confused, eugene, ewokswagger, exincore, exp111, f0x-n3rd, F1restar4, FacePluslll, Fahasor, FairlySadPanda, farrellka-dev, FATFSAAM2, FatherCheese, Feluk6174, ficcialfaint, Fiftyllama, Fildrance, fillervk, FinnishPaladin, firenamefn, Firewars763, FirinMaLazors, Fishfish458, fl-oz, Flareguy, flashgnash, FlipBrooke, FluffiestFloof, FluffMe, FluidRock, flymo5678, foboscheshir, FoLoKe, fooberticus, ForestNoises, forgotmyotheraccount, forkeyboards, forthbridge, Fortune117, foxhorn, freeman2651, freeze2222, frobnic8, Froffy025, Fromoriss, froozigiusz, FrostMando, FrostRibbon, Fruitsalad, Funce, FungiFellow, FunkySphere, FunTust, Futuristic-OK, GalacticChimp, gamer3107, Gamewar360, gansulalan, GaussiArson, Gaxeer, gbasood, gcoremans, Geekyhobo, genderGeometries, GeneralGaws, Genkail, Gentleman-Bird, geraeumig, Ghagliiarghii, Git-Nivrak, githubuser508, GitHubUser53123, gituhabu, GlassEclipse, GnarpGnarp, GNF54, godisdeadLOL, goet, GoldenCan, Goldminermac, Golinth, golubgik, GoodWheatley, Gorox221, GR1231, gradientvera, graevy, GraniteSidewalk, GreaseMonk, greenrock64, GreyMario, GrownSamoyedDog, GTRsound, gusxyz, Gyrandola, h3half, hamurlik, Hanzdegloker, HappyRoach, happyrobot33, Hardly3D, harikattar, Hayden, he1acdvv, Hebi, Helix-ctrl, helm4142, Henry, HerCoyote23, Hi-Im-Shot, HighTechPuddle, Hitlinemoss, hiucko, hivehum, Hmeister-fake, Hmeister-real, Hobbitmax, hobnob, HoidC, Holinka4ever, holyssss, HoofedEar, Hoolny, hord-brayden, hoshizora-sayo, Hreno, Hrosts, htmlsystem, Huaqas, hubismal, Hugal31, Hyenh, hyperb1, hyperDelegate, hyphenationc, i-justuser-i, iaada, iacore, IamVelcroboy, Ian321, icekot8, icesickleone, iczero, iglov, IgorAnt028, igorsaux, ike709, illersaver, Illiux, Ilushkins33, Ilya246, IlyaElDunaev, imatsoup, IMCB, impubbi, imrenq, imweax, indeano, Injazz, Insineer, insoPL, IntegerTempest, Interrobang01, Intoxicating-Innocence, IProduceWidgets, itsmethom, Itzbenz, iztokbajcar, Jackal298, Jackrost, JackRyd3r, jacksonzck, JackspajfMain, Jacktastic09, Jackw2As, jacob, jamessimo, janekvap-havok, Jark255, Jarmer123, Jaskanbe, JasperJRoth, jbox144, JCGWE30, JerryImMouse, jerryimmouse, Jessetriesagain, jessicamaybe, JesterX666, Jewelots, Jezithyr, jicksaw, JiimBob, JimGamemaster, jimmy12or, JIPDawg, jjtParadox, jkwookee, jmcb, JohnGinnane, johnjjohn, johnku1, Jophire, Jopogrechkin, joshepvodka, JpegOfAFrog, jproads, JrInventor05, Jrpl, jukereise, juliangiebel, JustArt1m, JustCone14, justdie12, justin, justintether, JustinTrotter, JustinWinningham, justtne, K-Dynamic, k3yw, Kadeo64, Kaga-404, kaiserbirch, KaiShibaa, kalane15, kalanosh, KamTheSythe, Kanashi-Panda, katzenminer, kbailey-git, Keelin, Keer-Sar, KEEYNy, keikiru, Kelrak, kerisargit, keronshb, KIBORG04, KieueCaprie, Kimpes, kin98, KingFroozy, kipdotnet, kira-er, kiri-yoshikage, Kirillcas, Kirus59, Kistras, Kit, Kit0vras, KittenColony, Kittygyat, klaypexx, kleinerstation13, Kmc2000, Ko4ergaPunk, kognise, kokoc9n, komunre, KonstantinAngelov, kontakt, korczoczek, kosticia, koteq, kotobdev, Kowlin, KrasnoshchekovPavel, Krosus777, Krunklehorn, Kryyto, Kupie, kxvvv, Kyoth25f, kyupolaris, kzhanik, LaCumbiaDelCoronavirus, lajolico, Lamrr, lanedon, LankLTE, laok233, lapatison, larryrussian, lawdog4817, Lazzi0706, leah, leander-0, leonardo-dabepis, leonidussaks, leonsfriedrich, LeoSantich, LetterN, lettern, Level10Cybermancer, LEVELcat, lever1209, LevitatingTree, Lgibb18, lgruthes, LightVillet, lilazero, liltenhead, linkbro1, linkuyx, Litraxx, little-meow-meow, LittleBuilderJane, LittleNorthStar, LittleNyanCat, lizelive, ljm862, lmsnoise, localcc, lokachop, lolman360, Lomcastar, Lordbrandon12, LordCarve, LordEclipse, lucas, LucasTheDrgn, luckyshotpictures, LudwigVonChesterfield, luegamer, luizwritescode, LukaSlade, luminight, lunarcomets, Lusatia, Luxeator, lvvova1, Lyndomen, lyroth001, lzimann, lzk228, M1tht1c, M3739, M4rchy-S, M87S, mac6na6na, MACMAN2003, Macoron, magicalus, magmodius, magnuscrowe, maland1, malchanceux, MaloTV, ManelNavola, manelnavola, Mangohydra, marboww, Markek1, MarkerWicker, marlyn, matt, Matz05, max, MaxNox7, maylokana, mdrkrg, MDuch369, meara1179, meganerobot, MehimoNemo, Mehnix, MeltedPixel, memeproof, MendaxxDev, Menshin, Mephisto72, MerrytheManokit, Mervill, metalgearsloth, MetalSage, MFMessage, mhamsterr, michaelcu, micheel665, mifia, mikeysaurus, MilenVolf, MilonPL, Minemoder5000, Minty642, minus1over12, Mirino97, mirrorcult, misandrie, MishaUnity, MissKay1994, MisterImp, MisterMecky, Mith-randalf, Mixelz, mjarduk, MjrLandWhale, mkanke-real, MLGTASTICa, mnva0, moderatelyaware, modern-nm, mohamedwidar, mokiros, momo, Moneyl, monotheonist, Moomoobeef, moony, Morb0, MossyGreySlope, mqole, mr-bo-jangles, Mr0maks, MrFippik, MrPersival, mrrobdemo, mtrs163, muburu, MureixloI, murolem, murphyneko, musicmanvr, MWKane, Myakot, Myctai, N3X15, nabegator, nails-n-tape, Nairodian, Naive817, NakataRin, namespace-Memory, Nannek, NazrinNya, neborsh, neomoth, neutrino-laser, NickPowers43, nikitosych, nikthechampiongr, Nimfar11, ninruB, Nirnael, NIXC, nkokic, NkoKirkto, nmajask, noctyrnal, noelkathegod, noirogen, nok-ko, NonchalantNoob, NoobyLegion, Nopey, NoreUhh, not-gavnaed, notafet, notquitehadouken, notsodana, noudoit, noverd, Nox38, NuclearWinter, Nuggets219, nukashimika, nuke-haus, NULL882, nullarmo, nyeogmi, Nylux, Nyranu, Nyxilath, och-och, OctoRocket, Ohelig, OldDanceJacket, OliverOtter, onesch, OneZerooo0, OnsenCapy, OnyxTheBrave, opl-, Orange-Winds, OrangeMoronage9622, OrbitSystem07, Orsoniks, osjarw, Ostaf, othymer, OttoMaticode, Owai-Seek, packmore, PAFFhassoocks, paige404, paigemaeforrest, pali6, Palladinium, Pangogie, panzer-iv1, partyaddict, patrikturi, PaulRitter, pavlockblaine03, peccneck, Peptide90, peptron1, perryprog, PeterFuto, PetMudstone, pewter-wiz, pgraycs, PGrayCS, Pgriha, phantom-lily, pheenty, philingham, Phill101, Phooooooooooooooooooooooooooooooosphate, phunnyguy, PicklOH, PilgrimViis, Pill-U, pinkbat5, Piras314, Pireax, Pissachu, pissdemon, Pixel8-dev, PixeltheAertistContrib, PixelTheKermit, PJB3005, Plasmaguy, plinyvic, Plykiya, poeMota, pofitlo, pointer-to-null, Pok27, poklj, PolterTzi, PoorMansDreams, PopGamer45, portfiend, potato1234x, PotentiallyTom, PotRoastPiggy, Princess-Cheeseballs, ProfanedBane, Prole0, ProPandaBear, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykana, psykzz, PuceTint, pumkin69, PuroSlavKing, PursuitInAshes, Putnam3145, py01, Pyrovi, qrtDaniil, qrwas, Quantum-cross, quasr-9, quatre, QueerNB, QuietlyWhisper, qwerltaz, Radezolid, RadioMull, Radosvik, Radrark, Rainbeon, Rainfey, Raitononai, Ramlik, RamZ, randy10122, Rane, Ranger6012, Rapidgame7, ravage123321, rbertoche, RedBookcase, Redfire1331, Redict, RedlineTriad, redmushie, RednoWCirabrab, redspyy, ReeZer2, RemberBM, RemieRichards, RemTim, rene-descartes2021, Renlou, retequizzle, rewafflution, rhailrake, rhsvenson, rich-dunne, RieBi, riggleprime, RIKELOLDABOSS, rinary1, Rinkashikachi, riolume, rlebell33, RobbyTheFish, robinthedragon, Rockdtben, Rohesie, rok-povsic, rokudara-sen, rolfero, RomanNovo, roryflowers, rosieposieeee, Roudenn, router, ruddygreat, rumaks-xyz, RumiTiger, Ruzihm, rwrv, S1rFl0, S1ss3l, Saakra, SabreML, Sadie-silly, saga3152, saintmuntzer, Salex08, sam, samgithubaccount, Samuka-C, SaphireLattice, SapphicOverload, sarahon, sativaleanne, SaveliyM360, sBasalto, ScalyChimp, ScarKy0, ScholarNZL, schrodinger71, scrato, Scribbles0, scrivoy, scruq445, scuffedjays, ScumbagDog, SeamLesss, Segonist, semensponge, sephtasm, ser1-1y, Serkket, sewerpig, SG6732, sh18rw, Shaddap1, ShadeAware, ShadowCommander, shadowtheprotogen546, shaeone, shampunj, shariathotpatrol, SharkSnake98, Shegare, shepardtothestars, shibechef, Siginanto, signalsender, SignalWalker, siigiil, silicon14wastaken, Silverfur-underscore, Simyon264, sirdragooon, Sirionaut, SirWarock, Sk1tch, SkaldetSkaeg, Skarletto, skeeka-dev, skrybl, Skybailey-dev, skye, Skyedra, SlamBamActionman, slarticodefast, Slava0135, sleepyyapril, slimmslamm, Slyfox333, Smugman, SnappingOpossum, snebl, snicket, sniperchance, Snowni, snowsignal, SolidSyn, SolidusSnek, solstar2, SomegnihT, SonarZeBat, SonicHDC, SoulFN, SoulSloth, Soundwavesghost, soupkilove, southbridge-fur, sowelipililimute, Soydium, SpaceLizard24, SpaceLizardSky, SpaceManiac, SpaceRox1244, SpaceyLady, Spangs04, spanky-spanky, Sparlight, spartak, SpartanKadence, spderman3333, SpeltIncorrectyl, Spessmann, SphiraI, SplinterGP, spoogemonster, sporekto, sporkyz, ssdaniel24, stalengd, stanberytrask, Stanislav4ix, StanTheCarpenter, starbuckss14, Stealthbomber16, steel, Steffo99, stellar-novas, stewie523, stomf, Stop-Signs, stopbreaking, stopka-html, StrawberryMoses, Stray-Pyramid, strO0pwafel, Strol20, StStevens, Subversionary, sunbear-dev, SuperGDPWYL, superjj18, Supernorn, SurrealShibe, SweetAplle, SweptWasTaken, SyaoranFox, Sybil, SYNCHRONIC, Szunti, t, Tainakov, takemysoult, taonewt, tap, TaralGit, Taran, taurie, Tayrtahn, tday93, teamaki, TeenSarlacc, TekuNut, telavivgamers, telyonok, temm1ie, TemporalOroboros, tentekal, terezi4real, Terraspark4941, texcruize, Tezzaide, TGODiamond, TGRCdev, tgrkzus, thanosdegraf, ThatGuyUSA, ThatOneGoblin25, thatrandomcanadianguy, TheArturZh, TheBlueYowie, thecopbennet, TheCze, TheDarkElites, thedraccx, TheEmber, theexetron, TheFlyingSentry, thefoty, TheGrimbeeper, TheIntoxicatedCat, thekilk, themias, theomund, TheProNoob678, TherapyGoth, ThereDrD0, TheSecondLord, TheShuEd, thetolbean, thevinter, TheWaffleJesus, Thinbug0, ThunderBear2006, timothyteakettle, TimrodDX, timurjavid, tin-man-tim, TiniestShark, Titian3, tk-a369, tkdrg, tmtmtl30, ToastEnjoyer, Toby222, TokenStyle, Tollhouse, Toly65, tom-leys, tomasalves8, Tomeno, Tonydatguy, topy, tornado-technology, TornadoTechnology, tosatur, TotallyLemon, ToxicSonicFan04, Tr1bute, travis-g-reid, treytipton, TriviaSolari, trixxedbit, TrixxedHeart, tropicalhibi, truepaintgit, Truoizys, Tryded, TsjipTsjip, tuchila-adi-bogdan, Tunguso4ka, TurboTrackerss14, TVK-04, tyashley, Tyler-IN, TytosB, Tyzemol, UbaserB, Uberration, ubis1, UBlueberry, uhbg, UKNOWH, UltimateJester, Unbelievable-Salmon, underscorex5, UnicornOnLSD, Unisol, Unkn0wnGh0st333, unusualcrow, Uriende, UristMcDorf, user424242420, Utmanarn, Vaaankas, valentfingerov, valquaint, Varen, Vasilis, VasilisThePikachu, veliebm, Velken, VelonacepsCalyxEggs, veprolet, VerinSenpai, veritable-calamity, Veritius, Vermidia, vero5123, verslebas, vexerot, vgskye, viceemargo, VigersRay, violet754, Visne, vitopigno, vitusveit, vlad, vlados1408, VMSolidus, vmzd, VoidMeticulous, voidnull000, volotomite, volundr-, Voomra, Vordenburg, vorkathbruh, Vortebo, vulppine, wachte1, wafehling, walksanatora, Warentan, WarMechanic, Watermelon914, weaversam8, wertanchik, whateverusername0, whatston3, widgetbeck, Will-Oliver-Br, Willhelm53, WilliamECrew, willicassi, Winkarst-cpu, wirdal, wixoaGit, WlarusFromDaSpace, Wolfkey-SomeoneElseTookMyUsername, Worldwaker, wrexbe, wtcwr68, xeri7, xkreksx, xprospero, xRiriq, xsainteer, YanehCheck, yathxyz, Ygg01, YotaXP, youarereadingthis, YoungThugSS14, Yousifb26, youtissoum, yunii, YuriyKiss, yuriykiss, zach-hill, Zadeon, Zalycon, zamp, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zero, ZeroDiamond, ZeWaka, zHonys, zionnBE, ZNixian, Zokkie, ZoldorfTheWizard, zonespace27, Zylofan, Zymem, zzylex +0-Anon, 0leshe, 0tito, 0x6273, 11belowstudio, 12rabbits, 1337dakota, 13spacemen, 154942, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 27alaing, 2DSiggy, 3nderall, 4310v343k, 4dplanner, 5tickman, 612git, 778b, 96flo, aaron, abadaba695, Ablankmann, abregado, Absolute-Potato, Absotively, achookh, Acruid, ActiveMammmoth, actually-reb, ada-please, adamsong, Adeinitas, adm2play, Admiral-Obvious-001, adrian, Adrian16199, Ady4ik, Aearo-Deepwater, Aerocrux, Aeshus, Aexolott, Aexxie, africalimedrop, afrokada, AftrLite, AgentSmithRadio, Agoichi, ahandleman, Ahion, aiden, aidenkrz, Aidenkrz, Aisu9, ajcm, AJCM-git, AjexRose, Alekshhh, alexalexmax, alexkar598, AlexMorgan3817, alexum418, alexumandxgabriel08x, Alice4267, Alithsko, Alkheemist, alliephante, ALMv1, Alpaccalypse, Alpha-Two, AlphaQwerty, Altoids1, amatwiedle, amylizzle, Andre19926, Andrew-Fall, AndrewEyeke, AndrewFenriz, AndreyCamper, anri, Anzarot121, ApolloVector, Appiah, april-gras, ar4ill, Arcane-Waffle, archee1, ArchPigeon, ArchRBX, areitpog, Arendian, areyouconfused, arimah, Arkanic, ArkiveDev, armoks, Arteben, arthropodia, ArthurMousatov, ArtisticRoomba, artur, Artxmisery, ArZarLordOfMango, as334, AshBats, AsikKEsel, AsnDen, asperger-sind, aspiringLich, astriloqua, Atakku, Ataman, august-sun, AutoOtter, AverageNotDoingAnythingEnjoyer, avghdev, AwareFoxy, Awlod, Axionyxx, azloserbits, azzyisnothere, AzzyIsNotHere, B-Kirill, B3CKDOOR, baa14453, BackeTako, BadaBoomie, Bakke, BananaFlambe, Baptr0b0t, BarryNorfolk, BasedUser, bebr3ght, beck-thompson, beesterman, bellwetherlogic, ben, benbryant0, benev0, benjamin-burges, BGare, bhespiritu, bibbly, BigfootBravo, BIGZi0348, bingojohnson, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, blitzthesquishy, Blobadoodle, bloodrizer, Bloody2372, blueDev2, Boaz1111, BobdaBiscuit, BobTheSleder, boiled-water-tsar, Bokser815, bolantej, BombasterDS, Booblesnoot42, Boolean-Buckeye, botanySupremist, brainfood1183, BramvanZijp, Brandon-Huu, breeplayx3, BriBrooo, BRINGit34, brndd, bryce0110, BubblegumBlue, buletsponge, buntobaggins, buunie099, bvelliquette, BWTCK, byondfuckery, c0rigin, c4llv07e, CaasGit, Caconym27, Calecute, Callmore, Camdot, cammusubi, capnsockless, CaptainMaru, captainsqrbeard, Carbonhell, Carolyn3114, Carou02, carteblanche4me, catdotjs, catlord, Catofquestionableethics, CatTheSystem, CawsForConcern, CDWimmer, Centronias, Chaboricks, chairbender, chaisftw, Chaoticaa, Charlese2, charlie, chartman, ChaseFlorom, chavonadelal, Cheackraze, CheddaCheez, cheesePizza2, CheesePlated, Chief-Engineer, chillyconmor, christhirtle, chromiumboy, Chronophylos, Chubbicous, Chubbygummibear, Ciac32, ciaran, citrea, civilCornball, claustro305, Clement-O, cloudyias, clyf, Clyybber, CMDR-Piboy314, cnv41, coco, cohanna, Cohnway, Cojoke-dot, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, Compilatron144, CookieMasterT, coolboy911, CoolioDudio, coolmankid12345, Coolsurf6, cooperwallace, corentt, CormosLemming, CrafterKolyan, CraftyRenter, crazybrain23, Crazydave91920, CrazyPhantom779, creadth, CrigCrag, CroilBird, Crotalus, CrudeWax, cryals, CrzyPotato, cubixthree, cutemoongod, Cyberboss, d34d10cc, DaCookieCakes, DadeKuma, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, dan, dangerrevolution, daniel-cr, DanSAussieITS, Daracke, Darkie, DaturoDewitt, david, DawBla, Daxxi3, dch-GH, ddeegan, de0rix, Deahaka, dean, DEATHB4DEFEAT, Deatherd, deathride58, debugok, Decappi, Decortex, Deeeeja, deepdarkdepths, DeepwaterCreations, Deerstop, degradka, Delete69, deltanedas, DenisShvalov, DerbyX, derek, dersheppard, Deserty0, Detintinto, DevilishMilk, devinschubert14, dexlerxd, dffdff2423, DieselMohawk, DieselMohawkTheSequel, digitalic, Dimastra, dimmoon1, DinnerCalzone, DinoWattz, Disp-Dev, DisposableCrewmember42, dissidentbullet, DjfjdfofdjfjD, doc-michael, docnite, Doctor-Cpu, DogZeroX, dolgovmi, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, DR-DOCTOR-EVIL-EVIL, Dragonjspider, dragonryan06, drakewill-CRL, Drayff, dreamlyjack, DrEnzyme, dribblydrone, DrMelon, drongood12, DrSingh, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, DuckManZach, Duddino, dukevanity, duskyjay, Dutch-VanDerLinde, dvir001, dylanstrategie, dylanwhittingham, Dynexust, Easypoller, echo, EchoOfNothing, eclips_e, eden077, EEASAS, Efruit, efzapa, Ekkosangen, ElectroSR, elsie, elthundercloud, Elysium206, emberwinters, Emisse, emmafornash, EmoGarbage404, Endecc, EnrichedCaramel, Entvari, eoineoineoin, ephememory, eris, erohrs2, erorr404v1, Errant-4, ertanic, esguard, estacaoespacialpirata, eternally-confused, eugene, ewokswagger, exincore, exp111, f0x-n3rd, F1restar4, FacePluslll, Fahasor, FairlySadPanda, farrellka-dev, FATFSAAM2, Feluk6174, ficcialfaint, Fiftyllama, Fildrance, fillervk, FinnishPaladin, firenamefn, Firewars763, FirinMaLazors, Fishfish458, fl-oz, Flareguy, flashgnash, FlipBrooke, FluffiestFloof, FluffMe, FluidRock, flymo5678, foboscheshir, FoLoKe, fooberticus, ForestNoises, forgotmyotheraccount, forkeyboards, forthbridge, Fortune117, foxhorn, freeman2651, freeze2222, frobnic8, Froffy025, Fromoriss, froozigiusz, FrostMando, FrostRibbon, Fruitsalad, Funce, FungiFellow, FunkySphere, FunTust, Futuristic-OK, GalacticChimp, gamer3107, Gamewar360, gansulalan, GaussiArson, Gaxeer, gbasood, gcoremans, Geekyhobo, genderGeometries, GeneralGaws, Genkail, Gentleman-Bird, geraeumig, Ghagliiarghii, Git-Nivrak, githubuser508, GitHubUser53123, gituhabu, GlassEclipse, GnarpGnarp, GNF54, godisdeadLOL, goet, GoldenCan, Goldminermac, Golinth, golubgik, GoodWheatley, Gorox221, GR1231, gradientvera, graevy, GraniteSidewalk, GreaseMonk, greenrock64, GreyMario, GrownSamoyedDog, GTRsound, gusxyz, Gyrandola, h3half, hamurlik, Hanzdegloker, HappyRoach, happyrobot33, Hardly3D, harikattar, Hayden, he1acdvv, Hebi, Helix-ctrl, helm4142, Henry, HerCoyote23, Hi-Im-Shot, HighTechPuddle, Hitlinemoss, hiucko, hivehum, Hmeister-fake, Hmeister-real, Hobbitmax, hobnob, HoidC, Holinka4ever, holyssss, HoofedEar, Hoolny, hord-brayden, hoshizora-sayo, Hreno, Hrosts, htmlsystem, Huaqas, hubismal, Hugal31, Hyenh, hyperb1, hyperDelegate, i-justuser-i, iaada, iacore, IamVelcroboy, Ian321, icekot8, icesickleone, iczero, iglov, IgorAnt028, igorsaux, ike709, illersaver, Illiux, Ilushkins33, Ilya246, IlyaElDunaev, imatsoup, IMCB, impubbi, imrenq, imweax, indeano, Injazz, Insineer, insoPL, IntegerTempest, Interrobang01, Intoxicating-Innocence, IProduceWidgets, itsmethom, Itzbenz, iztokbajcar, Jackal298, Jackrost, JackRyd3r, jacksonzck, JackspajfMain, Jacktastic09, Jackw2As, jacob, jamessimo, janekvap-havok, Jark255, Jarmer123, Jaskanbe, JasperJRoth, jbox144, JCGWE30, JerryImMouse, jerryimmouse, Jessetriesagain, jessicamaybe, JesterX666, Jewelots, Jezithyr, jicksaw, JiimBob, JimGamemaster, jimmy12or, JIPDawg, jjtParadox, jkwookee, jmcb, JohnGinnane, johnjjohn, johnku1, Jophire, Jopogrechkin, joshepvodka, JpegOfAFrog, jproads, JrInventor05, Jrpl, jukereise, juliangiebel, JustArt1m, JustCone14, justdie12, justin, justintether, JustinTrotter, JustinWinningham, justtne, K-Dynamic, k3yw, Kadeo64, Kaga-404, kaiserbirch, KaiShibaa, kalane15, kalanosh, KamTheSythe, Kanashi-Panda, katzenminer, kbailey-git, Keelin, Keer-Sar, KEEYNy, keikiru, Kelrak, kerisargit, keronshb, KIBORG04, KieueCaprie, Kimpes, kin98, KingFroozy, kipdotnet, kira-er, kiri-yoshikage, Kirillcas, Kirus59, Kistras, Kit, Kit0vras, KittenColony, Kittygyat, klaypexx, kleinerstation13, Kmc2000, Ko4ergaPunk, kognise, kokoc9n, komunre, KonstantinAngelov, kontakt, korczoczek, koteq, kotobdev, Kowlin, KrasnoshchekovPavel, Krosus777, Krunklehorn, Kryyto, Kupie, kxvvv, Kyoth25f, kyupolaris, kzhanik, LaCumbiaDelCoronavirus, lajolico, Lamrr, lanedon, LankLTE, laok233, lapatison, larryrussian, lawdog4817, Lazzi0706, Le-Arctic-Fox, leahcat, leander-0, leonardo-dabepis, leonidussaks, leonsfriedrich, LeoSantich, LetterN, lettern, Level10Cybermancer, LEVELcat, lever1209, LevitatingTree, Lgibb18, lgruthes, liem161, LightVillet, lilazero, liltenhead, linkbro1, linkuyx, Litraxx, little-meow-meow, LittleBuilderJane, LittleNorthStar, LittleNyanCat, lizelive, ljm862, lmsnoise, localcc, lokachop, lolman360, Lomcastar, Lordbrandon12, LordCarve, LordEclipse, lucas, LucasTheDrgn, luckyshotpictures, LudwigVonChesterfield, luegamer, luizwritescode, LukaSlade, luminight, lunarcomets, Lusatia, Luxeator, lvvova1, Lyndomen, lyroth001, lyxcaster, lzimann, lzk228, M1tht1c, M3739, M4rchy-S, M87S, mac6na6na, MACMAN2003, Macoron, magicalus, magmodius, magnnusson, magnuscrowe, maland1, malchanceux, MaloTV, ManelNavola, manelnavola, Mangohydra, marboww, Markek1, MarkerWicker, marlyn, matt, Matz05, max, MaxNox7, maylokana, mdrkrg, MDuch369, meara1179, meganerobot, MehimoNemo, Mehnix, MeltedPixel, memeproof, MendaxxDev, Menshin, Mephisto72, MerrytheManokit, Mervill, metalgearsloth, MetalSage, MFMessage, mhamsterr, michaelcu, micheel665, mifia, mikeysaurus, MilenVolf, MilonPL, Minemoder5000, Minty642, minus1over12, Mirino97, mirrorcult, misandrie, MishaUnity, MissKay1994, MisterImp, MisterMecky, Mith-randalf, Mixelz, mjarduk, MjrLandWhale, mkanke-real, MLGTASTICa, mnva0, moderatelyaware, modern-nm, mohamedwidar, mokiros, momo, Moneyl, monotheonist, Moomoobeef, moony, Morb0, MossyGreySlope, mqole, mr-bo-jangles, Mr0maks, MrFippik, MrPersival, mrrobdemo, mtrs163, muburu, MureixloI, murolem, murphyneko, musicmanvr, MWKane, Myakot, Myctai, N3X15, nabegator, nails-n-tape, Nairodian, Naive817, NakataRin, namespace-Memory, Nannek, NazrinNya, neborsh, nekokiwa, neomoth, neutrino-laser, NickPowers43, nikitosych, nikthechampiongr, Nimfar11, ninruB, Nirnael, NIXC, nkokic, NkoKirkto, nmajask, noctyrnal, noelkathegod, noirogen, nok-ko, NonchalantNoob, NoobyLegion, Nopey, NoreUhh, not-gavnaed, notafet, notquitehadouken, notsodana, noudoit, noverd, Nox38, NuclearWinter, Nuggets219, nukashimika, nuke-haus, NULL882, nullarmo, nyeogmi, Nylux, Nyranu, Nyxilath, och-och, OctoRocket, Ohelig, OldDanceJacket, OliverOtter, onesch, OneZerooo0, OnsenCapy, OnyxTheBrave, opl-, Orange-Winds, OrangeMoronage9622, OrbitSystem07, Orsoniks, osjarw, Ostaf, othymer, OttoMaticode, Owai-Seek, packmore, PAFFhassoocks, paige404, paigemaeforrest, pali6, Palladinium, Pangogie, panzer-iv1, partyaddict, patrikturi, PaulRitter, pavlockblaine03, peccneck, Peptide90, peptron1, perryprog, PeterFuto, PetMudstone, pewter-wiz, PGrayCS, pgraycs, Pgriha, phantom-lily, pheenty, philingham, Phill101, Phooooooooooooooooooooooooooooooosphate, phunnyguy, PicklOH, PilgrimViis, Pill-U, pinkbat5, Piras314, Pireax, Pissachu, pissdemon, Pixel8-dev, PixeltheAertistContrib, PixelTheKermit, PJB3005, Plasmaguy, plinyvic, Plykiya, poeMota, pofitlo, pointer-to-null, Pok27, poklj, PolterTzi, PoorMansDreams, PopGamer45, portfiend, potato1234x, PotentiallyTom, PotRoastPiggy, Princess-Cheeseballs, ProfanedBane, Prole0, ProPandaBear, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykana, psykzz, PuceTint, pumkin69, PuroSlavKing, PursuitInAshes, Putnam3145, py01, Pyrovi, qrtDaniil, qrwas, Quantum-cross, quasr-9, quatre, QueerNB, QuietlyWhisper, qwerltaz, Radezolid, RadioMull, Radosvik, Radrark, Rainbeon, Rainfey, Raitononai, Ramlik, RamZ, randy10122, Rane, Ranger6012, Rapidgame7, ravage123321, rbertoche, RedBookcase, Redfire1331, Redict, RedlineTriad, redmushie, RednoWCirabrab, redspyy, ReeZer2, RemberBM, RemieRichards, RemTim, rene-descartes2021, Renlou, retequizzle, rewafflution, rhailrake, rhsvenson, rich-dunne, RieBi, riggleprime, RIKELOLDABOSS, rinary1, Rinkashikachi, riolume, rlebell33, RobbyTheFish, robinthedragon, robinthegirlthing, Rockdtben, Rohesie, rok-povsic, rokudara-sen, rolfero, RomanNovo, roryflowers, rosieposieeee, Roudenn, router, ruddygreat, rumaks-xyz, RumiTiger, Ruzihm, rwrv, S1rFl0, S1ss3l, Saakra, SabreML, Sadie-silly, saga3152, saintmuntzer, salarua, Salex08, sam, samgithubaccount, Samuka-C, SaphireLattice, SapphicOverload, sarahon, sativaleanne, SaveliyM360, sBasalto, ScalyChimp, ScarKy0, ScholarNZL, schrodinger71, scrato, Scribbles0, scrivoy, scruq445, scuffedjays, ScumbagDog, SeamLesss, Segonist, semensponge, sephtasm, ser1-1y, Serkket, sewerpig, SG6732, sh18rw, Shaddap1, ShadeAware, ShadowCommander, shadowtheprotogen546, shaeone, shampunj, shariathotpatrol, SharkSnake98, Shegare, shepardtothestars, shibechef, Siginanto, signalsender, SignalWalker, siigiil, silicon14wastaken, Silverfur-underscore, Simyon264, sirdragooon, Sirionaut, SirWarock, Sk1tch, SkaldetSkaeg, Skarletto, skeeka-dev, skrybl, Skybailey-dev, skye, Skyedra, SlamBamActionman, slarticodefast, Slava0135, sleepyyapril, slimmslamm, Slyfox333, Smugman, SnappingOpossum, snebl, snicket, sniperchance, Snowni, snowsignal, SolidSyn, SolidusSnek, solstar2, SomegnihT, SonarZeBat, SonicHDC, SoulFN, SoulSloth, Soundwavesghost, soupkilove, southbridge-fur, sowelipililimute, Soydium, SpaceLizard24, SpaceLizardSky, SpaceManiac, SpaceRox1244, SpaceyLady, Spangs04, spanky-spanky, Sparlight, spartak, SpartanKadence, spderman3333, SpeltIncorrectyl, Spessmann, SphiraI, SplinterGP, spoogemonster, sporekto, sporkyz, ssdaniel24, stalengd, stanberytrask, Stanislav4ix, StanTheCarpenter, starbuckss14, Stealthbomber16, steel, Steffo99, stellar-novas, stewie523, stomf, Stop-Signs, stopbreaking, stopka-html, StrawberryMoses, Stray-Pyramid, strO0pwafel, Strol20, StStevens, Subversionary, sunbear-dev, SuperGDPWYL, superjj18, Supernorn, SurrealShibe, SweetAplle, SweptWasTaken, SyaoranFox, Sybil, SYNCHRONIC, Synthestra, Szunti, t, Tainakov, takemysoult, taonewt, tap, TaralGit, Taran, taurie, Tayrtahn, tday93, teamaki, TeenSarlacc, TekuNut, telavivgamers, telyonok, temm1ie, TemporalOroboros, tentekal, terezi4real, Terraspark4941, texcruize, Tezzaide, TGODiamond, TGRCdev, tgrkzus, thanosdegraf, ThatGuyUSA, ThatOneGoblin25, thatrandomcanadianguy, TheArturZh, TheBlueYowie, thecopbennet, TheCze, TheDarkElites, thedraccx, TheEmber, theexetron, TheFlyingSentry, thefoty, TheGrimbeeper, TheIntoxicatedCat, thekilk, themias, theomund, TheProNoob678, TherapyGoth, ThereDrD0, TheSecondLord, TheShuEd, thetolbean, thevinter, TheWaffleJesus, Thinbug0, ThunderBear2006, timothyteakettle, TimrodDX, timurjavid, tin-man-tim, TiniestShark, Titian3, tk-a369, tkdrg, tmtmtl30, ToastEnjoyer, Toby222, TokenStyle, Tollhouse, Toly65, tom-leys, tomasalves8, Tomeno, Tonydatguy, topy, tornado-technology, TornadoTechnology, tosatur, TotallyLemon, ToxicSonicFan04, Tr1bute, travis-g-reid, treytipton, TriviaSolari, trixxedbit, TrixxedHeart, tropicalhibi, truepaintgit, Truoizys, Tryded, TsjipTsjip, tuchila-adi-bogdan, Tunguso4ka, TurboTrackerss14, TVK-04, tyashley, Tyler-IN, TytosB, Tyzemol, UbaserB, Uberration, ubis1, UBlueberry, uhbg, UKNOWH, UltimateJester, Unbelievable-Salmon, underscorex5, UnicornOnLSD, Unisol, Unkn0wnGh0st333, unusualcrow, Uriende, UristMcDorf, user424242420, Utmanarn, Vaaankas, valentfingerov, valquaint, Varen, Vasilis, VasilisThePikachu, veliebm, Velken, VelonacepsCalyxEggs, veprolet, VerinSenpai, veritable-calamity, Veritius, Vermidia, vero5123, verslebas, vexerot, vgskye, viceemargo, VigersRay, violet754, Visne, vitopigno, vitusveit, vlad, vlados1408, VMSolidus, vmzd, VoidMeticulous, voidnull000, volotomite, volundr-, Voomra, Vordenburg, vorkathbruh, Vortebo, vulppine, wachte1, wafehling, walksanatora, Warentan, WarMechanic, Watermelon914, weaversam8, wertanchik, whateverusername0, whatston3, widgetbeck, Will-Oliver-Br, Willhelm53, WilliamECrew, willicassi, Winkarst-cpu, wirdal, wixoaGit, WlarusFromDaSpace, Wolfkey-SomeoneElseTookMyUsername, Worldwaker, wrexbe, wtcwr68, xeri7, xkreksx, xprospero, xRiriq, xsainteer, YanehCheck, yathxyz, Ygg01, YotaXP, youarereadingthis, YoungThugSS14, Yousifb26, youtissoum, yunii, YuriyKiss, yuriykiss, zach-hill, Zadeon, Zalycon, zamp, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zero, ZeroDiamond, ZeWaka, zHonys, zionnBE, ZNixian, Zokkie, ZoldorfTheWizard, zonespace27, Zylofan, Zymem, zzylex From 67cb6dec635227d4ee7c2ea816f981a16ab3ac60 Mon Sep 17 00:00:00 2001 From: eoineoineoin Date: Sun, 22 Feb 2026 15:59:14 +0000 Subject: [PATCH 375/603] Improved camera static shader randomness (#42968) Improved static shader --- Resources/Textures/Shaders/camera_static.swsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Textures/Shaders/camera_static.swsl b/Resources/Textures/Shaders/camera_static.swsl index 937a2ce66d1..eaa1e1410d4 100644 --- a/Resources/Textures/Shaders/camera_static.swsl +++ b/Resources/Textures/Shaders/camera_static.swsl @@ -1,6 +1,6 @@ void fragment() { highp vec2 coords = FRAGCOORD.xy; - highp vec2 value = zRandom(coords * SCREEN_PIXEL_SIZE * sin(TIME * 0.01)); + highp vec2 value = zRandom(coords * SCREEN_PIXEL_SIZE + vec2(fract(TIME))); highp vec3 color = vec3(value.x); COLOR = vec4(0.1 * color,1.0); } From 0807fe320961fc6787ada6bdbe12626257676a01 Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Sun, 22 Feb 2026 18:54:43 +0100 Subject: [PATCH 376/603] Move fuckrules CL to Admin (#42996) yeah --- Resources/Changelog/Admin.yml | 8 ++++++++ Resources/Changelog/Changelog.yml | 8 -------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index aa3d7400e59..9999e146ce2 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -1660,5 +1660,13 @@ Entries: id: 202 time: '2026-02-09T13:31:01.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42791 +- author: slarticodefast + changes: + - message: Using the "fuckrules" command will now create an admin log and alert + the admins via chat. + type: Add + id: 203 + time: '2026-02-21T20:22:27.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42988 Name: Admin Order: 3 diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 12de6f49507..afddc5bcd1d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -3965,14 +3965,6 @@ id: 9535 time: '2026-02-18T21:10:25.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42930 -- author: slarticodefast - changes: - - message: Using the "fuckrules" command will now create an admin log and alert - the admins via chat. - type: Add - id: 9536 - time: '2026-02-21T20:22:27.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/42988 - author: Samuka changes: - message: Added more xenoborg names! From 39f865576d79a66e9daf8e467f484a3bdc0f9385 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Sun, 22 Feb 2026 10:32:55 -0800 Subject: [PATCH 377/603] Predicted Networked Metabolism (#42798) * PredictedRandom Helpers * predicted networked metabolism * ssadasfsa * AAAAAAAAAAAAAAAAAAAAAAAA * remove debug * oopsies * its inclusive of 0 fool --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- .../Metabolism/MetabolizerComponent.cs | 10 +++++-- .../Metabolism/MetabolizerSystem.cs | 30 +++++++------------ .../Metabolism/MetabolizerTypePrototype.cs | 3 ++ 3 files changed, 20 insertions(+), 23 deletions(-) diff --git a/Content.Shared/Metabolism/MetabolizerComponent.cs b/Content.Shared/Metabolism/MetabolizerComponent.cs index 951fb508d6b..263816be69b 100644 --- a/Content.Shared/Metabolism/MetabolizerComponent.cs +++ b/Content.Shared/Metabolism/MetabolizerComponent.cs @@ -1,5 +1,6 @@ using Content.Shared.Body.Components; using Content.Shared.FixedPoint; +using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; @@ -8,13 +9,14 @@ namespace Content.Shared.Metabolism; /// /// Handles metabolizing various reagents with given effects. /// -[RegisterComponent, AutoGenerateComponentPause, Access(typeof(MetabolizerSystem))] +[RegisterComponent, NetworkedComponent] +[AutoGenerateComponentState, AutoGenerateComponentPause, Access(typeof(MetabolizerSystem))] public sealed partial class MetabolizerComponent : Component { /// /// The next time that reagents will be metabolized. /// - [DataField, AutoPausedField] + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoNetworkedField, AutoPausedField] public TimeSpan NextUpdate; /// [DataField] public bool Force; + /// /// Modifier on the prying time. /// Lower values result in more time. @@ -36,6 +39,12 @@ public sealed partial class PryingComponent : Component /// [DataField] public bool Enabled = true; + + /// + /// What alert to show to an entity with this component. + /// + [DataField] + public ProtoId? PryingAlertProtoId = "Prying"; } /// diff --git a/Content.Shared/Prying/Systems/PryingSystem.cs b/Content.Shared/Prying/Systems/PryingSystem.cs index a09400d880e..207c1313e95 100644 --- a/Content.Shared/Prying/Systems/PryingSystem.cs +++ b/Content.Shared/Prying/Systems/PryingSystem.cs @@ -1,5 +1,6 @@ using System.Diagnostics.CodeAnalysis; using Content.Shared.Administration.Logs; +using Content.Shared.Alert; using Content.Shared.Database; using Content.Shared.DoAfter; using Content.Shared.Doors.Components; @@ -22,17 +23,37 @@ public sealed class PryingSystem : EntitySystem [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; [Dependency] private readonly SharedAudioSystem _audioSystem = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly AlertsSystem _alerts = default!; public override void Initialize() { base.Initialize(); + SubscribeLocalEvent(OnPryingStartup); + SubscribeLocalEvent(OnPryingShutdown); + // Mob prying doors SubscribeLocalEvent>(OnDoorAltVerb); SubscribeLocalEvent(OnDoAfter); SubscribeLocalEvent(TryPryDoor); } + private void OnPryingStartup(Entity ent, ref ComponentStartup args) + { + if (ent.Comp.PryingAlertProtoId == null) + return; + + _alerts.ShowAlert(ent.Owner, ent.Comp.PryingAlertProtoId.Value); + } + + private void OnPryingShutdown(Entity ent, ref ComponentShutdown args) + { + if (ent.Comp.PryingAlertProtoId == null) + return; + + _alerts.ClearAlert(ent.Owner, ent.Comp.PryingAlertProtoId.Value); + } + private void TryPryDoor(EntityUid uid, DoorComponent comp, InteractUsingEvent args) { if (args.Handled) diff --git a/Content.Shared/Silicons/Borgs/Components/BorgModuleComponent.cs b/Content.Shared/Silicons/Borgs/Components/BorgModuleComponent.cs index 5c7f6cfddba..a677d240fee 100644 --- a/Content.Shared/Silicons/Borgs/Components/BorgModuleComponent.cs +++ b/Content.Shared/Silicons/Borgs/Components/BorgModuleComponent.cs @@ -36,6 +36,13 @@ public sealed partial class BorgModuleComponent : Component public HashSet? BorgFitTypes; } +/// +/// Raised on a chassis before a module is inserted into it. +/// +/// The module being added. +[ByRefEvent] +public record struct BorgModuleInsertAttemptEvent(EntityUid ModuleEnt, bool Cancelled = false, string? Reason = null); + /// /// Raised on a module when it is installed in order to add specific behavior to an entity. /// diff --git a/Content.Shared/Silicons/Borgs/Components/ComponentBorgModuleComponent.cs b/Content.Shared/Silicons/Borgs/Components/ComponentBorgModuleComponent.cs new file mode 100644 index 00000000000..856211a596c --- /dev/null +++ b/Content.Shared/Silicons/Borgs/Components/ComponentBorgModuleComponent.cs @@ -0,0 +1,22 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Silicons.Borgs.Components; + +/// +/// This is used for a that provides components to the entity it's installed into. +/// +/// +/// The provided components are removed when the module is uninstalled. +/// If a chassis has a FooComponent, a module adds FooComponent as well and then is uninstalled, then chassis will lose FooComponent. +/// +[RegisterComponent, NetworkedComponent] +[Access(typeof(SharedBorgSystem))] +public sealed partial class ComponentBorgModuleComponent : Component +{ + /// + /// What components should be granted once this module is installed into a borg chassis. + /// + [DataField(required: true)] + public ComponentRegistry Components = new(); +} diff --git a/Content.Shared/Silicons/Borgs/SharedBorgSystem.API.cs b/Content.Shared/Silicons/Borgs/SharedBorgSystem.API.cs index 842fcedf70c..941bf990bc1 100644 --- a/Content.Shared/Silicons/Borgs/SharedBorgSystem.API.cs +++ b/Content.Shared/Silicons/Borgs/SharedBorgSystem.API.cs @@ -236,6 +236,15 @@ public bool CanInsertModule(Entity chassis, Entity(OnItemModuleSelected); SubscribeLocalEvent(OnItemModuleUnselected); + SubscribeLocalEvent(OnComponentModuleInstalled); + SubscribeLocalEvent(OnComponentModuleUninstalled); + + SubscribeLocalEvent>( + OnComponentModuleInstalledRelay); + _moduleQuery = GetEntityQuery(); } + #region BorgModule private void OnModuleExamine(Entity ent, ref ExaminedEvent args) { if (ent.Comp.BorgFitTypes == null) @@ -75,7 +82,9 @@ private void OnModuleGotRemoved(Entity module, ref EntGotRe UninstallModule((chassis, chassisComp), module.AsNullable()); } + #endregion + #region SelectableBorgModule private void OnSelectableInstalled(Entity module, ref BorgModuleInstalledEvent args) { var chassis = args.ChassisEnt; @@ -133,7 +142,9 @@ private void OnSelectableAction(Entity module, re SelectModule((chassis, chassisComp), module.Owner); } } + #endregion + #region ItemBorgModule private void OnProvideItemStartup(Entity module, ref ComponentStartup args) { _container.EnsureContainer(module.Owner, module.Comp.HoldingContainer); @@ -231,4 +242,36 @@ private void RemoveProvidedItems(Entity chassis, Entity ent, ref BorgModuleInstalledEvent args) + { + var chassis = args.ChassisEnt; + EntityManager.AddComponents(chassis, ent.Comp.Components); + } + + private void OnComponentModuleUninstalled(Entity ent, + ref BorgModuleUninstalledEvent args) + { + var chassis = args.ChassisEnt; + EntityManager.RemoveComponents(chassis, ent.Comp.Components); + } + + private void OnComponentModuleInstalledRelay(Entity ent, + ref BorgModuleRelayedEvent args) + { + if (!TryComp(args.Args.ModuleEnt, out var newModule)) + return; + + foreach (var comp in newModule.Components) + { + if (ent.Comp.Components.TryGetComponent(comp.Key, out _)) + { + args.Args.Cancelled = true; + args.Args.Reason = Loc.GetString("borg-module-incompatible", ("existing", ent)); + } + } + } + #endregion } diff --git a/Content.Shared/Silicons/Borgs/SharedBorgSystem.Relay.cs b/Content.Shared/Silicons/Borgs/SharedBorgSystem.Relay.cs index 7a1ca31eb52..c88432fe0f8 100644 --- a/Content.Shared/Silicons/Borgs/SharedBorgSystem.Relay.cs +++ b/Content.Shared/Silicons/Borgs/SharedBorgSystem.Relay.cs @@ -9,9 +9,12 @@ public abstract partial class SharedBorgSystem public void InitializeRelay() { SubscribeLocalEvent(RelayToModule); + + // By-Ref events + SubscribeLocalEvent(RelayRefToModule); } - protected void RelayToModule(EntityUid uid, BorgChassisComponent component, T args) where T : class + protected void RelayToModule(EntityUid uid, BorgChassisComponent component, T args) where T : EntityEventArgs { var ev = new BorgModuleRelayedEvent(args); @@ -21,13 +24,14 @@ protected void RelayToModule(EntityUid uid, BorgChassisComponent component, T } } - protected void RelayRefToModule(EntityUid uid, BorgChassisComponent component, ref T args) where T : class + protected void RelayRefToModule(EntityUid uid, BorgChassisComponent component, ref T args) { var ev = new BorgModuleRelayedEvent(args); foreach (var module in component.ModuleContainer.ContainedEntities) { RaiseLocalEvent(module, ref ev); + args = ev.Args; } } } @@ -35,5 +39,5 @@ protected void RelayRefToModule(EntityUid uid, BorgChassisComponent component [ByRefEvent] public record struct BorgModuleRelayedEvent(TEvent Args) { - public readonly TEvent Args = Args; + public TEvent Args = Args; } diff --git a/Resources/Locale/en-US/alerts/alerts.ftl b/Resources/Locale/en-US/alerts/alerts.ftl index 3be836ed70b..eda52d37dc0 100644 --- a/Resources/Locale/en-US/alerts/alerts.ftl +++ b/Resources/Locale/en-US/alerts/alerts.ftl @@ -122,3 +122,6 @@ alerts-rooted-desc = You are attached to the ground. You can't slip, but you abs alerts-stealthy-name = Pickpocketing alerts-stealthy-desc = Whether you are currently pickpocketing. Click to toggle. + +alerts-prying-name = Prying +alerts-prying-desc = You can innately pry doors open. diff --git a/Resources/Locale/en-US/borg/borg.ftl b/Resources/Locale/en-US/borg/borg.ftl index 54a733e1cfb..f8f4c7d0eee 100644 --- a/Resources/Locale/en-US/borg/borg.ftl +++ b/Resources/Locale/en-US/borg/borg.ftl @@ -9,6 +9,7 @@ borg-mind-removed = {CAPITALIZE($name)} shut off! borg-module-too-many = There's not enough room for another module... borg-module-duplicate = This module is already installed in this cyborg. borg-module-whitelist-deny = This module doesn't fit in this type of cyborg... +borg-module-incompatible = This module isn't compatible with {THE($existing)}. borg-module-action-name = Activate {$moduleName} borg-module-action-description = Select the {$moduleName}, enabling you to use the tools it provides. diff --git a/Resources/Prototypes/Alerts/alerts.yml b/Resources/Prototypes/Alerts/alerts.yml index 71201611d2d..69b301985fb 100644 --- a/Resources/Prototypes/Alerts/alerts.yml +++ b/Resources/Prototypes/Alerts/alerts.yml @@ -478,6 +478,17 @@ name: alerts-adrenaline-name description: alerts-adrenaline-desc +# Making alerts for innate abilities like this should generally be avoided by turning them into actions or giving better UX. +# This was done this way because several entities currently can pry innately and have no indicator for this whatsoever. +# The ideal solution would be to clean up actions to handle this sort of thing easier while avoiding bloating the action UI. +- type: alert + id: Prying + icons: + - sprite: /Textures/Objects/Tools/crowbar.rsi + state: icon + name: alerts-prying-name + description: alerts-prying-desc + - type: alert id: Debug1 icons: diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index e7dec9072ec..3dfd48bb998 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -638,6 +638,7 @@ borg_brain: - PositronicBrain borg_module: + - BorgModulePrying - BorgModuleTool - BorgModuleFireExtinguisher - BorgModuleConstruction @@ -676,6 +677,7 @@ borg_brain: - PositronicBrain borg_module: + - BorgModulePrying - BorgModuleTool - BorgModuleFireExtinguisher - type: ItemSlots @@ -711,6 +713,7 @@ borg_brain: - PositronicBrain borg_module: + - BorgModulePrying - BorgModuleTool - BorgModuleFireExtinguisher - BorgModuleCleaning @@ -748,6 +751,7 @@ borg_brain: - PositronicBrain borg_module: + - BorgModulePrying - BorgModuleTool - BorgModuleFireExtinguisher - BorgModuleChemical @@ -786,6 +790,7 @@ borg_brain: - PositronicBrain borg_module: + - BorgModulePrying - BorgModuleTool #No fire extinguisher, traversal is better - BorgModuleMining - BorgModuleTraversal diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml index c313b78970b..0618e308d53 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml @@ -453,6 +453,23 @@ color: "#FF00CC" # generic modules +- type: entity + id: BorgModulePrying + parent: [ BaseBorgModule ] + name: prying module + description: A universal cyborg module which allows the unit to pry open doors. + components: + - type: Sprite + layers: + - state: generic + - state: icon-tools + - type: ComponentBorgModule + components: + - type: Prying + speedModifier: 1.5 + useSound: + path: /Audio/Items/jaws_pry.ogg + - type: entity id: BorgModuleCable parent: [ BaseBorgModule, BaseProviderBorgModule ] diff --git a/Resources/Prototypes/borg_types.yml b/Resources/Prototypes/borg_types.yml index 56eac4fc1ad..90e9e959bb9 100644 --- a/Resources/Prototypes/borg_types.yml +++ b/Resources/Prototypes/borg_types.yml @@ -13,6 +13,7 @@ - BorgModuleScience #until sciborgs are added defaultModules: + - BorgModulePrying - BorgModuleTool - BorgModuleInflatable - BorgModuleArtifact @@ -47,6 +48,7 @@ - BorgModuleEngineering defaultModules: + - BorgModulePrying - BorgModuleTool - BorgModuleConstruction - BorgModuleRCD @@ -83,6 +85,7 @@ - BorgModuleCargo defaultModules: + - BorgModulePrying - BorgModuleTool - BorgModuleMining - BorgModuleTraversal @@ -120,6 +123,7 @@ - BorgModuleJanitor defaultModules: + - BorgModulePrying - BorgModuleCleaning - BorgModuleCustodial @@ -155,6 +159,7 @@ - BorgModuleMedical defaultModules: + - BorgModulePrying - BorgModuleChemical - BorgModuleTopicals - BorgModuleRescue @@ -204,6 +209,7 @@ - BorgModuleService defaultModules: + - BorgModulePrying - BorgModuleMusique - BorgModuleService - BorgModuleClowning From 2a274a0705763b5146b86bcfd9494702e918097c Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 25 Feb 2026 23:34:26 +0000 Subject: [PATCH 400/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 96108e0701d..55c9bf98258 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -3979,3 +3979,13 @@ id: 9543 time: '2026-02-25T01:34:33.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42696 +- author: ScarKy0 + changes: + - message: Cyborgs can now pry unpowered doors without the need for a crowbar. + type: Add + - message: Entities that can pry things innately (zombies, spiders, etc) now have + an alert telling them so. + type: Add + id: 9544 + time: '2026-02-25T23:33:16.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/41812 From af71eec42bf2bda93f598da41f7f017d1b9f01e0 Mon Sep 17 00:00:00 2001 From: Velken <8467292+Velken@users.noreply.github.com> Date: Wed, 25 Feb 2026 20:49:37 -0300 Subject: [PATCH 401/603] Make HasMind not always false for client. (#43033) * it hasmind but i don't * potatoe potato * reading is hard * still can't read --------- Co-authored-by: ScarKy0 --- Content.Server/Dragon/DragonSystem.cs | 7 +++---- Content.Server/Mind/MindSystem.cs | 6 ++++-- Content.Shared/Mind/Components/MindContainerComponent.cs | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Content.Server/Dragon/DragonSystem.cs b/Content.Server/Dragon/DragonSystem.cs index fb9ef9f8e23..0da2accd053 100644 --- a/Content.Server/Dragon/DragonSystem.cs +++ b/Content.Server/Dragon/DragonSystem.cs @@ -21,6 +21,7 @@ namespace Content.Server.Dragon; public sealed partial class DragonSystem : EntitySystem { [Dependency] private readonly CarpRiftsConditionSystem _carpRifts = default!; + [Dependency] private readonly SharedMindSystem _mind = default!; [Dependency] private readonly MovementSpeedModifierSystem _movement = default!; [Dependency] private readonly NpcFactionSystem _faction = default!; [Dependency] private readonly PopupSystem _popup = default!; @@ -224,10 +225,9 @@ public void DeleteRifts(EntityUid uid, bool resetRole, DragonComponent? comp = n comp.Rifts.Clear(); // stop here if not trying to reset the objective's rift count - if (!resetRole || !TryComp(uid, out var mindContainer) || !mindContainer.HasMind) + if (!resetRole || !_mind.TryGetMind(uid, out _, out var mind)) return; - var mind = Comp(mindContainer.Mind.Value); foreach (var objId in mind.Objectives) { if (_objQuery.TryGetComponent(objId, out var obj)) @@ -246,10 +246,9 @@ public void RiftCharged(EntityUid uid, DragonComponent? comp = null) if (!Resolve(uid, ref comp)) return; - if (!TryComp(uid, out var mindContainer) || !mindContainer.HasMind) + if (!_mind.TryGetMind(uid, out _, out var mind)) return; - var mind = Comp(mindContainer.Mind.Value); foreach (var objId in mind.Objectives) { if (_objQuery.TryGetComponent(objId, out var obj)) diff --git a/Content.Server/Mind/MindSystem.cs b/Content.Server/Mind/MindSystem.cs index a7547e87e4c..6a92d400a3d 100644 --- a/Content.Server/Mind/MindSystem.cs +++ b/Content.Server/Mind/MindSystem.cs @@ -184,8 +184,8 @@ public override void TransferTo(EntityUid mindId, EntityUid? entity, bool ghostC { component = EnsureComp(entity.Value); - if (component.HasMind) - _ghosts.OnGhostAttempt(component.Mind.Value, false); + if (TryGetMind(entity.Value, out var entityMindId, out _)) + _ghosts.OnGhostAttempt(entityMindId, false); if (TryComp(entity.Value, out var actor)) { @@ -220,6 +220,7 @@ public override void TransferTo(EntityUid mindId, EntityUid? entity, bool ghostC if (TryComp(oldEntity, out MindContainerComponent? oldContainer)) { oldContainer.Mind = null; + oldContainer.HasMind = false; mind.OwnedEntity = null; Entity mindEnt = (mindId, mind); Entity containerEnt = (oldEntity.Value, oldContainer); @@ -256,6 +257,7 @@ public override void TransferTo(EntityUid mindId, EntityUid? entity, bool ghostC if (entity != null) { component!.Mind = mindId; + component.HasMind = true; mind.OwnedEntity = entity; mind.OriginalOwnedEntity ??= GetNetEntity(mind.OwnedEntity); Entity mindEnt = (mindId, mind); diff --git a/Content.Shared/Mind/Components/MindContainerComponent.cs b/Content.Shared/Mind/Components/MindContainerComponent.cs index dd4948cea73..7606c80ac97 100644 --- a/Content.Shared/Mind/Components/MindContainerComponent.cs +++ b/Content.Shared/Mind/Components/MindContainerComponent.cs @@ -19,8 +19,8 @@ public sealed partial class MindContainerComponent : Component /// /// True if we have a mind, false otherwise. /// - [MemberNotNullWhen(true, nameof(Mind))] - public bool HasMind => Mind != null; + [DataField, AutoNetworkedField, ViewVariables(VVAccess.ReadOnly)] + public bool HasMind; /// /// Whether the mind will be put on a ghost after this component is shutdown. From e774e11d0657e207f31fd04e83c0750de7e94cf2 Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Thu, 26 Feb 2026 02:16:55 +0100 Subject: [PATCH 402/603] Add transfer entity to mind events. (#43020) * init * stuff * to * BeforeEvents * comment * docs * Update Content.Shared/Mind/Components/MindContainerComponent.cs Co-authored-by: pathetic meowmeow --------- Co-authored-by: pathetic meowmeow --- Content.Server/Mind/MindSystem.cs | 17 +++-- .../Mind/Components/MindContainerComponent.cs | 75 ++++++++++++++++--- 2 files changed, 77 insertions(+), 15 deletions(-) diff --git a/Content.Server/Mind/MindSystem.cs b/Content.Server/Mind/MindSystem.cs index 6a92d400a3d..36a3e3aa95e 100644 --- a/Content.Server/Mind/MindSystem.cs +++ b/Content.Server/Mind/MindSystem.cs @@ -219,13 +219,18 @@ public override void TransferTo(EntityUid mindId, EntityUid? entity, bool ghostC var oldEntity = mind.OwnedEntity; if (TryComp(oldEntity, out MindContainerComponent? oldContainer)) { + Entity mindEnt = (mindId, mind); + Entity containerEnt = (oldEntity.Value, oldContainer); + + RaiseLocalEvent(oldEntity.Value, new BeforeMindRemovedMessage(mindEnt, containerEnt, entity)); + RaiseLocalEvent(mindId, new BeforeMindGotRemovedEvent(mindEnt, containerEnt, entity)); + oldContainer.Mind = null; oldContainer.HasMind = false; mind.OwnedEntity = null; - Entity mindEnt = (mindId, mind); - Entity containerEnt = (oldEntity.Value, oldContainer); - RaiseLocalEvent(oldEntity.Value, new MindRemovedMessage(mindEnt, containerEnt)); - RaiseLocalEvent(mindId, new MindGotRemovedEvent(mindEnt, containerEnt)); + + RaiseLocalEvent(oldEntity.Value, new MindRemovedMessage(mindEnt, containerEnt, entity)); + RaiseLocalEvent(mindId, new MindGotRemovedEvent(mindEnt, containerEnt, entity)); Dirty(oldEntity.Value, oldContainer); } @@ -262,8 +267,8 @@ public override void TransferTo(EntityUid mindId, EntityUid? entity, bool ghostC mind.OriginalOwnedEntity ??= GetNetEntity(mind.OwnedEntity); Entity mindEnt = (mindId, mind); Entity containerEnt = (entity.Value, component); - RaiseLocalEvent(entity.Value, new MindAddedMessage(mindEnt, containerEnt)); - RaiseLocalEvent(mindId, new MindGotAddedEvent(mindEnt, containerEnt)); + RaiseLocalEvent(entity.Value, new MindAddedMessage(mindEnt, containerEnt, oldEntity)); + RaiseLocalEvent(mindId, new MindGotAddedEvent(mindEnt, containerEnt, oldEntity)); Dirty(entity.Value, component); } } diff --git a/Content.Shared/Mind/Components/MindContainerComponent.cs b/Content.Shared/Mind/Components/MindContainerComponent.cs index 7606c80ac97..7355550b952 100644 --- a/Content.Shared/Mind/Components/MindContainerComponent.cs +++ b/Content.Shared/Mind/Components/MindContainerComponent.cs @@ -29,25 +29,45 @@ public sealed partial class MindContainerComponent : Component public bool GhostOnShutdown = true; } +/// +/// Base event for all other mind related events. +/// public abstract class MindEvent : EntityEventArgs { + /// + /// entity currently being handled by the event. + /// public readonly Entity Mind; + + /// + /// entity currently being handled by the event. + /// public readonly Entity Container; - public MindEvent(Entity mind, Entity container) + /// + /// The target entity in case the mind is being transferred. In it means the entity that is being transferred to, and in it means the previous entity. + /// Null if the mind is being added for the first time or fully removed from entities. + /// + public readonly EntityUid? TransferEntity; + + public MindEvent(Entity mind, Entity container, EntityUid? transferEntity) { Mind = mind; Container = container; + TransferEntity = transferEntity; } } /// /// Event raised directed at a mind-container when a mind gets removed. /// +/// +/// Called after the owned entity is already set to null. TransferEntity is the entity this mind will be added to afterward, if any. +/// public sealed class MindRemovedMessage : MindEvent { - public MindRemovedMessage(Entity mind, Entity container) - : base(mind, container) + public MindRemovedMessage(Entity mind, Entity container, EntityUid? transferEntity) + : base(mind, container, transferEntity) { } } @@ -55,10 +75,41 @@ public MindRemovedMessage(Entity mind, Entity /// Event raised directed at a mind when it gets removed from a mind-container. /// +/// +/// Called after the owned entity is already set to null. TransferEntity is the entity this mind will be added to afterward, if any. +/// public sealed class MindGotRemovedEvent : MindEvent { - public MindGotRemovedEvent(Entity mind, Entity container) - : base(mind, container) + public MindGotRemovedEvent(Entity mind, Entity container, EntityUid? transferEntity) + : base(mind, container, transferEntity) + { + } +} + +/// +/// Event raised directed at a mind-container before a mind gets removed. +/// +/// +/// Called before the OwnedEntity is set to null. TransferEntity is the entity this mind will be added to afterward, if any. +/// +public sealed class BeforeMindRemovedMessage : MindEvent +{ + public BeforeMindRemovedMessage(Entity mind, Entity container, EntityUid? transferEntity) + : base(mind, container, transferEntity) + { + } +} + +/// +/// Event raised directed at a mind before it gets removed from a mind-container. +/// +/// +/// Called before the OwnedEntity is set to null. TransferEntity is the entity this mind will be added to afterward, if any. +/// +public sealed class BeforeMindGotRemovedEvent : MindEvent +{ + public BeforeMindGotRemovedEvent(Entity mind, Entity container, EntityUid? transferEntity) + : base(mind, container, transferEntity) { } } @@ -66,10 +117,13 @@ public MindGotRemovedEvent(Entity mind, Entity /// Event raised directed at a mind-container when a mind gets added. /// +/// +/// Called after the owned entity is already set to the new entity. TransferEntity is the previous entity that this mind owned, if any. +/// public sealed class MindAddedMessage : MindEvent { - public MindAddedMessage(Entity mind, Entity container) - : base(mind, container) + public MindAddedMessage(Entity mind, Entity container, EntityUid? transferEntity) + : base(mind, container, transferEntity) { } } @@ -77,10 +131,13 @@ public MindAddedMessage(Entity mind, Entity /// Event raised directed at a mind when it gets added to a mind-container. /// +/// +/// Called after the owned entity is already set to the new entity. TransferEntity is the previous entity that this mind owned, if any. +/// public sealed class MindGotAddedEvent : MindEvent { - public MindGotAddedEvent(Entity mind, Entity container) - : base(mind, container) + public MindGotAddedEvent(Entity mind, Entity container, EntityUid? transferEntity) + : base(mind, container, transferEntity) { } } From f981f8a32c04e67553d93c252d2f55e61fd4bdbd Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Thu, 26 Feb 2026 18:32:57 +0100 Subject: [PATCH 403/603] Partially revert "Remove bad accents" (#43030) * Revert partially * Add back to dwarves * Remove pirate accent trait ftl * Remove old changelog * Review changes * Maybe cowboys want beer * Fix missed = * Remove and-und in german --- .../EntitySystems/GermanAccentSystem.cs | 4 + Resources/Changelog/Changelog.yml | 7 - Resources/Locale/en-US/accent/cowboy.ftl | 248 ++++++++++++++++++ Resources/Locale/en-US/accent/german.ftl | 33 +++ Resources/Locale/en-US/accent/scottish.ftl | 233 ++++++++++++++++ Resources/Locale/en-US/accent/southern.ftl | 2 + Resources/Locale/en-US/traits/traits.ftl | 6 + .../Prototypes/Accents/word_replacements.yml | 190 ++++++++++++++ Resources/Prototypes/Body/Species/dwarf.yml | 2 + .../Entities/Clothing/Head/hats.yml | 9 + Resources/Prototypes/Traits/speech.yml | 21 ++ 11 files changed, 748 insertions(+), 7 deletions(-) create mode 100644 Resources/Locale/en-US/accent/cowboy.ftl create mode 100644 Resources/Locale/en-US/accent/german.ftl create mode 100644 Resources/Locale/en-US/accent/scottish.ftl create mode 100644 Resources/Locale/en-US/accent/southern.ftl diff --git a/Content.Server/Speech/EntitySystems/GermanAccentSystem.cs b/Content.Server/Speech/EntitySystems/GermanAccentSystem.cs index 8295a8164b6..94a5606178b 100644 --- a/Content.Server/Speech/EntitySystems/GermanAccentSystem.cs +++ b/Content.Server/Speech/EntitySystems/GermanAccentSystem.cs @@ -9,6 +9,7 @@ namespace Content.Server.Speech.EntitySystems; public sealed class GermanAccentSystem : EntitySystem { [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly ReplacementAccentSystem _replacement = default!; private static readonly Regex RegexTh = new(@"(?<=\s|^)th", RegexOptions.IgnoreCase); private static readonly Regex RegexThe = new(@"(?<=\s|^)the(?=\s|$)", RegexOptions.IgnoreCase); @@ -37,6 +38,9 @@ public string Accentuate(string message) } } + // now, apply word replacements + msg = _replacement.ApplyReplacements(msg, "german"); + // replace th with zh (for zhis, zhat, etc. the => ze is handled by replacements already) var msgBuilder = new StringBuilder(msg); foreach (Match match in RegexTh.Matches(msg)) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 55c9bf98258..42ecd8c484e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -3810,13 +3810,6 @@ id: 9518 time: '2026-02-11T22:31:43.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42868 -- author: PJB3005 - changes: - - message: Nerfed and removed many boring word replacement accents. - type: Remove - id: 9519 - time: '2026-02-12T14:42:35.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/42880 - author: bnuuy changes: - message: The fake mindshield action button now correctly shows your mindshield diff --git a/Resources/Locale/en-US/accent/cowboy.ftl b/Resources/Locale/en-US/accent/cowboy.ftl new file mode 100644 index 00000000000..ffc321f98cb --- /dev/null +++ b/Resources/Locale/en-US/accent/cowboy.ftl @@ -0,0 +1,248 @@ +accent-cowboy-words-1 = wow +accent-cowboy-replacement-1 = by gum + +accent-cowboy-words-2 = alien +accent-cowboy-replacement-2 = space critter + +accent-cowboy-words-3 = aliens +accent-cowboy-replacement-3 = space critters + +accent-cowboy-words-4 = ambush +accent-cowboy-replacement-4 = bush whack + +accent-cowboy-words-5 = angry +accent-cowboy-replacement-5 = fit to be tied + +accent-cowboy-words-6 = animal +accent-cowboy-replacement-6 = critter + +accent-cowboy-words-7 = animals +accent-cowboy-replacement-7 = critters + +accent-cowboy-words-8 = arrest +accent-cowboy-replacement-8 = lasso + +accent-cowboy-words-9 = arrested +accent-cowboy-replacement-9 = lassoed + +accent-cowboy-words-10 = bomb +accent-cowboy-replacement-10 = dynamite + +accent-cowboy-words-11 = borg +accent-cowboy-replacement-11 = tin man + +accent-cowboy-words-12 = bye +accent-cowboy-replacement-12 = so long + +accent-cowboy-words-13 = cell +accent-cowboy-replacement-13 = pokey + +accent-cowboy-words-14 = chef +accent-cowboy-replacement-14 = cookie + +accent-cowboy-words-15 = coffee +accent-cowboy-replacement-15 = black water + +accent-cowboy-words-16 = confused +accent-cowboy-replacement-16 = stumped + +accent-cowboy-words-17 = cool +accent-cowboy-replacement-17 = slick + +accent-cowboy-words-18 = corpse +accent-cowboy-replacement-18 = dead meat + +accent-cowboy-words-19 = cow +accent-cowboy-replacement-19 = dogie + +accent-cowboy-words-20 = cows +accent-cowboy-replacement-20 = dogies + +accent-cowboy-words-21 = crazy +accent-cowboy-replacement-21 = cracked + +accent-cowboy-words-22 = cyborg +accent-cowboy-replacement-22 = tin man + +accent-cowboy-words-23 = dad +accent-cowboy-replacement-23 = pappy + +accent-cowboy-words-24 = revolver +accent-cowboy-replacement-24 = six-shooter + +accent-cowboy-words-25 = explosive +accent-cowboy-replacement-25 = dynamite + +accent-cowboy-words-26 = a fight +accent-cowboy-replacement-26 = a scrap + +accent-cowboy-words-27 = food +accent-cowboy-replacement-27 = grub + +accent-cowboy-words-28 = friend +accent-cowboy-replacement-28 = partner + +accent-cowboy-words-29 = goodbye +accent-cowboy-replacement-29 = so long + +accent-cowboy-words-30 = greytide +accent-cowboy-replacement-30 = varmints + +accent-cowboy-words-31 = greytider +accent-cowboy-replacement-31 = varmint + +accent-cowboy-words-32 = greytiders +accent-cowboy-replacement-32 = varmints + +accent-cowboy-words-33 = guess +accent-cowboy-replacement-33 = reckon + +accent-cowboy-words-34 = gun +accent-cowboy-replacement-34 = big iron + +accent-cowboy-words-35 = handcuff +accent-cowboy-replacement-35 = hog tie + +accent-cowboy-words-36 = handcuffed +accent-cowboy-replacement-36 = hog tied + +accent-cowboy-words-37 = what the hell +accent-cowboy-replacement-37 = what in tarnation + +accent-cowboy-words-38 = hello +accent-cowboy-replacement-38 = howdy + +accent-cowboy-words-39 = hey +accent-cowboy-replacement-39 = howdy + +accent-cowboy-words-40 = hi +accent-cowboy-replacement-40 = howdy + +accent-cowboy-words-41 = hungry +accent-cowboy-replacement-41 = peckish + +accent-cowboy-words-42 = idiot +accent-cowboy-replacement-42 = dunderhead + +accent-cowboy-words-43 = intending +accent-cowboy-replacement-43 = fixing + +accent-cowboy-words-44 = jail +accent-cowboy-replacement-44 = pokey + +accent-cowboy-words-45 = lots +accent-cowboy-replacement-45 = heaps + +accent-cowboy-words-46 = nervous +accent-cowboy-replacement-46 = rattled + +accent-cowboy-words-47 = ninja +accent-cowboy-replacement-47 = bushwhacker + +accent-cowboy-words-48 = ninjas +accent-cowboy-replacement-48 = bushwhackers + +accent-cowboy-words-49 = noise +accent-cowboy-replacement-49 = ruckus + +accent-cowboy-words-50 = nukies +accent-cowboy-replacement-50 = outlaws + +accent-cowboy-words-51 = ops +accent-cowboy-replacement-51 = outlaws + +accent-cowboy-words-52 = newbie +accent-cowboy-replacement-52 = greenhorn + +accent-cowboy-words-53 = newbies +accent-cowboy-replacement-53 = greenhorns + +accent-cowboy-words-54 = please +accent-cowboy-replacement-54 = pray + +accent-cowboy-words-55 = punched +accent-cowboy-replacement-55 = slogged + +accent-cowboy-words-56 = ran +accent-cowboy-replacement-56 = skedaddled + +accent-cowboy-words-57 = robbery +accent-cowboy-replacement-57 = stick up + +accent-cowboy-words-58 = run +accent-cowboy-replacement-58 = skedaddle + +accent-cowboy-words-59 = running +accent-cowboy-replacement-59 = skedaddling + +accent-cowboy-words-60 = scream +accent-cowboy-replacement-60 = holler + +accent-cowboy-words-61 = screamed +accent-cowboy-replacement-61 = hollered + +accent-cowboy-words-62 = screaming +accent-cowboy-replacement-62 = hollering + +accent-cowboy-words-63 = police +accent-cowboy-replacement-63 = law + +accent-cowboy-words-64 = officer +accent-cowboy-replacement-64 = deputy + +accent-cowboy-words-65 = officers +accent-cowboy-replacement-65 = deputies + +accent-cowboy-words-66 = shitsec +accent-cowboy-replacement-66 = crooked law + +accent-cowboy-words-67 = shoe +accent-cowboy-replacement-67 = boot + +accent-cowboy-words-68 = shoes +accent-cowboy-replacement-68 = boots + +accent-cowboy-words-69 = steal +accent-cowboy-replacement-69 = rustle + +accent-cowboy-words-70 = stole +accent-cowboy-replacement-70 = rustled + +accent-cowboy-words-71 = stolen +accent-cowboy-replacement-71 = rustled + +accent-cowboy-words-72 = thank you +accent-cowboy-replacement-72 = much obliged + +accent-cowboy-words-73 = thanks +accent-cowboy-replacement-73 = much obliged + +accent-cowboy-words-74 = think +accent-cowboy-replacement-74 = reckon + +accent-cowboy-words-75 = tired +accent-cowboy-replacement-75 = dragged out + +accent-cowboy-words-76 = toilet +accent-cowboy-replacement-76 = outhouse + +accent-cowboy-words-77 = totally +accent-cowboy-replacement-77 = plumb + +accent-cowboy-words-78 = traitor +accent-cowboy-replacement-78 = outlaw + +accent-cowboy-words-79 = traitors +accent-cowboy-replacement-79 = outlaws + +accent-cowboy-words-80 = very +accent-cowboy-replacement-80 = mighty + +accent-cowboy-words-81 = yell +accent-cowboy-replacement-81 = holler + +accent-cowboy-words-82 = yelled +accent-cowboy-replacement-82 = hollered + +accent-cowboy-words-83 = yelling +accent-cowboy-replacement-83 = hollering diff --git a/Resources/Locale/en-US/accent/german.ftl b/Resources/Locale/en-US/accent/german.ftl new file mode 100644 index 00000000000..52d6a14b8cd --- /dev/null +++ b/Resources/Locale/en-US/accent/german.ftl @@ -0,0 +1,33 @@ +accent-german-words-1 = the +accent-german-words-replace-1 = ze + +accent-german-words-2 = man +accent-german-words-replace-2 = mann + +accent-german-words-3 = machine +accent-german-words-replace-3 = maschine + +accent-german-words-4 = music +accent-german-words-replace-4 = musik + +accent-german-words-5 = what +accent-german-words-replace-5 = wat + +accent-german-words-6 = vodka +accent-german-words-replace-6 = wodka + +accent-german-words-7 = medicine +accent-german-words-replace-7 = medizin + +accent-german-words-8 = accent +accent-german-words-replace-8 = akzent + +accent-german-words-9 = anomaly +accent-german-words-replace-9 = anomalie + +accent-german-words-10 = artifact +accent-german-words-10-2 = artefact +accent-german-words-replace-10 = artefakt + +accent-german-words-11 = fantastic +accent-german-words-replace-11 = fantastisch diff --git a/Resources/Locale/en-US/accent/scottish.ftl b/Resources/Locale/en-US/accent/scottish.ftl new file mode 100644 index 00000000000..9fed77d2f30 --- /dev/null +++ b/Resources/Locale/en-US/accent/scottish.ftl @@ -0,0 +1,233 @@ +accent-scottish-words-1 = do +accent-scottish-words-replace-1 = dae + +accent-scottish-words-2 = don't +accent-scottish-words-replace-2 = dinnae + +accent-scottish-words-3 = dont +accent-scottish-words-replace-3 = dinnae + +accent-scottish-words-4 = i'm +accent-scottish-words-replace-4 = A'm + +accent-scottish-words-5 = im +accent-scottish-words-replace-5 = am + +accent-scottish-words-6 = going +accent-scottish-words-replace-6 = gaun + +accent-scottish-words-7 = i +accent-scottish-words-replace-7 = Ah + +accent-scottish-words-8 = you're +accent-scottish-words-replace-8 = ye're + +accent-scottish-words-9 = youre +accent-scottish-words-replace-9 = yere + +accent-scottish-words-10 = you +accent-scottish-words-replace-10 = ye + +accent-scottish-words-11 = a +accent-scottish-words-replace-11 = ae + +accent-scottish-words-12 = i'll +accent-scottish-words-replace-12 = A'll + +accent-scottish-words-13 = ill +accent-scottish-words-replace-13 = all + +accent-scottish-words-14 = of +accent-scottish-words-replace-14 = ae + +accent-scottish-words-15 = was +accent-scottish-words-replace-15 = wis + +accent-scottish-words-16 = can't +accent-scottish-words-replace-16 = cannae + +accent-scottish-words-17 = cant +accent-scottish-words-replace-17 = cannae + +accent-scottish-words-18 = yourself +accent-scottish-words-replace-18 = yersel + +accent-scottish-words-19 = where +accent-scottish-words-replace-19 = whaur + +accent-scottish-words-20 = oh +accent-scottish-words-replace-20 = ach + +accent-scottish-words-21 = shit +accent-scottish-words-replace-21 = shite + +accent-scottish-words-22 = too +accent-scottish-words-replace-22 = tae + +accent-scottish-words-23 = my +accent-scottish-words-replace-23 = me + +accent-scottish-words-24 = not +accent-scottish-words-replace-24 = nae + +accent-scottish-words-25 = would +accent-scottish-words-replace-25 = wou + +accent-scottish-words-26 = should +accent-scottish-words-replace-26 = shou + +accent-scottish-words-27 = could +accent-scottish-words-replace-27 = cou + +accent-scottish-words-28 = would've +accent-scottish-words-replace-28 = wou'hae + +accent-scottish-words-29 = should've +accent-scottish-words-replace-29 = shou'hae + +accent-scottish-words-30 = could've +accent-scottish-words-replace-30 = cou'hae + +accent-scottish-words-31 = wouldve +accent-scottish-words-replace-31 = wouhae + +accent-scottish-words-32 = shouldve +accent-scottish-words-replace-32 = shouhae + +accent-scottish-words-33 = couldve +accent-scottish-words-replace-33 = couhae + +accent-scottish-words-34 = would'nt +accent-scottish-words-replace-34 = wou'nae + +accent-scottish-words-35 = should'nt +accent-scottish-words-replace-35 = shou'nae + +accent-scottish-words-36 = could'nt +accent-scottish-words-replace-36 = cou'nae + +accent-scottish-words-37 = wouldnt +accent-scottish-words-replace-37 = wounae + +accent-scottish-words-38 = shouldnt +accent-scottish-words-replace-38 = shounae + +accent-scottish-words-39 = couldnt +accent-scottish-words-replace-39 = counae + +accent-scottish-words-40 = no +accent-scottish-words-replace-40 = nae + +accent-scottish-words-41 = to +accent-scottish-words-replace-41 = ta + +accent-scottish-words-42 = the +accent-scottish-words-replace-42 = tha + +accent-scottish-words-43 = have +accent-scottish-words-replace-43 = hae + +accent-scottish-words-44 = what +accent-scottish-words-replace-44 = wot + +accent-scottish-words-45 = where +accent-scottish-words-replace-45 = whaur + +accent-scottish-words-46 = when +accent-scottish-words-replace-46 = wen + +accent-scottish-words-47 = myself +accent-scottish-words-replace-47 = mesel + +accent-scottish-words-48 = himself +accent-scottish-words-replace-48 = hesel + +accent-scottish-words-49 = herself +accent-scottish-words-replace-49 = shesel + +accent-scottish-words-50 = move +accent-scottish-words-replace-50 = moev + +accent-scottish-words-51 = moving +accent-scottish-words-replace-51 = moeven + +accent-scottish-words-52 = wasn't +accent-scottish-words-replace-52 = wis'nae + +accent-scottish-words-53 = wasnt +accent-scottish-words-replace-53 = wisnae + +accent-scottish-words-54 = wizard +accent-scottish-words-replace-54 = wizer + +accent-scottish-words-55 = for +accent-scottish-words-replace-55 = fer + +accent-scottish-words-56 = about +accent-scottish-words-replace-56 = abut + +accent-scottish-words-57 = tiny +accent-scottish-words-replace-57 = tinnae + +accent-scottish-words-58 = baby +accent-scottish-words-replace-58 = babee + +accent-scottish-words-59 = after +accent-scottish-words-replace-59 = efter + +accent-scottish-words-60 = gonna +accent-scottish-words-replace-60 = gaun'ae + +accent-scottish-words-61 = going to +accent-scottish-words-replace-61 = gaun'ae + +accent-scottish-words-62 = gone +accent-scottish-words-replace-62 = gaun + +accent-scottish-words-63 = now +accent-scottish-words-replace-63 = nou + +accent-scottish-words-64 = give +accent-scottish-words-replace-64 = gie + +accent-scottish-words-65 = gimme +accent-scottish-words-replace-65 = gie's + +accent-scottish-words-66 = give me +accent-scottish-words-replace-66 = gie's + +accent-scottish-words-67 = do you +accent-scottish-words-replace-67 = d'ye + +accent-scottish-words-68 = with +accent-scottish-words-replace-68 = wi + +accent-scottish-words-69 = without +accent-scottish-words-replace-69 = wi'ou + +accent-scottish-words-70 = whether +accent-scottish-words-replace-70 = we'er + +accent-scottish-words-71 = ever +accent-scottish-words-replace-71 = e'er + +accent-scottish-words-72 = whenever +accent-scottish-words-replace-72 = wen'er + +accent-scottish-words-73 = whatever +accent-scottish-words-replace-73 = wot'er + +accent-scottish-words-74 = how +accent-scottish-words-replace-74 = hou + +accent-scottish-words-75 = however +accent-scottish-words-replace-75 = hou'er + +accent-scottish-words-76 = more +accent-scottish-words-replace-76 = maer + +accent-scottish-words-77 = moreover +accent-scottish-words-replace-77 = maero'er + +accent-scottish-words-78 = over +accent-scottish-words-replace-78 = o'er diff --git a/Resources/Locale/en-US/accent/southern.ftl b/Resources/Locale/en-US/accent/southern.ftl new file mode 100644 index 00000000000..230c2add9cc --- /dev/null +++ b/Resources/Locale/en-US/accent/southern.ftl @@ -0,0 +1,2 @@ +accent-southern-words-1 = you all +accent-southern-words-replace-1 = y'all diff --git a/Resources/Locale/en-US/traits/traits.ftl b/Resources/Locale/en-US/traits/traits.ftl index cbf299c32f0..e7ed027335d 100644 --- a/Resources/Locale/en-US/traits/traits.ftl +++ b/Resources/Locale/en-US/traits/traits.ftl @@ -36,6 +36,9 @@ trait-frontal-lisp-desc = You thpeak with a lithp. trait-socialanxiety-name = Stutter trait-socialanxiety-desc = You speak with a stutter. +trait-southern-name = Southern drawl +trait-southern-desc = You have a different way of speakin'. + trait-snoring-name = Snoring trait-snoring-desc = You will snore while sleeping. @@ -51,6 +54,9 @@ trait-french-desc = Your accent seems to have a certain «je ne sais quoi». trait-spanish-name = Spanish accent trait-spanish-desc = Hola señor, donde esta la biblioteca. +trait-scottish-name = Scottish accent +trait-scottish-desc = Ye're speaking like ae proper Scot! + trait-painnumbness-name = Numb trait-painnumbness-desc = You lack any sense of feeling pain, being unaware of how hurt you may be. diff --git a/Resources/Prototypes/Accents/word_replacements.yml b/Resources/Prototypes/Accents/word_replacements.yml index cefaf61060c..42e7c7c89ef 100644 --- a/Resources/Prototypes/Accents/word_replacements.yml +++ b/Resources/Prototypes/Accents/word_replacements.yml @@ -24,6 +24,88 @@ accent-mobster-words-17: accent-mobster-words-replace-17 +- type: accent + id: scottish + wordReplacements: + accent-scottish-words-1: accent-scottish-words-replace-1 + accent-scottish-words-2: accent-scottish-words-replace-2 + accent-scottish-words-3: accent-scottish-words-replace-3 + accent-scottish-words-4: accent-scottish-words-replace-4 + accent-scottish-words-5: accent-scottish-words-replace-5 + accent-scottish-words-6: accent-scottish-words-replace-6 + accent-scottish-words-7: accent-scottish-words-replace-7 + accent-scottish-words-8: accent-scottish-words-replace-8 + accent-scottish-words-9: accent-scottish-words-replace-9 + accent-scottish-words-10: accent-scottish-words-replace-10 + accent-scottish-words-11: accent-scottish-words-replace-11 + accent-scottish-words-12: accent-scottish-words-replace-12 + accent-scottish-words-13: accent-scottish-words-replace-13 + accent-scottish-words-14: accent-scottish-words-replace-14 + accent-scottish-words-15: accent-scottish-words-replace-15 + accent-scottish-words-16: accent-scottish-words-replace-16 + accent-scottish-words-17: accent-scottish-words-replace-17 + accent-scottish-words-18: accent-scottish-words-replace-18 + accent-scottish-words-19: accent-scottish-words-replace-19 + accent-scottish-words-20: accent-scottish-words-replace-20 + accent-scottish-words-21: accent-scottish-words-replace-21 + accent-scottish-words-22: accent-scottish-words-replace-22 + accent-scottish-words-23: accent-scottish-words-replace-23 + accent-scottish-words-24: accent-scottish-words-replace-24 + accent-scottish-words-25: accent-scottish-words-replace-25 + accent-scottish-words-26: accent-scottish-words-replace-26 + accent-scottish-words-27: accent-scottish-words-replace-27 + accent-scottish-words-28: accent-scottish-words-replace-28 + accent-scottish-words-29: accent-scottish-words-replace-29 + accent-scottish-words-30: accent-scottish-words-replace-30 + accent-scottish-words-31: accent-scottish-words-replace-31 + accent-scottish-words-32: accent-scottish-words-replace-32 + accent-scottish-words-33: accent-scottish-words-replace-33 + accent-scottish-words-34: accent-scottish-words-replace-34 + accent-scottish-words-35: accent-scottish-words-replace-35 + accent-scottish-words-36: accent-scottish-words-replace-36 + accent-scottish-words-37: accent-scottish-words-replace-37 + accent-scottish-words-38: accent-scottish-words-replace-38 + accent-scottish-words-39: accent-scottish-words-replace-39 + accent-scottish-words-40: accent-scottish-words-replace-40 + accent-scottish-words-41: accent-scottish-words-replace-41 + accent-scottish-words-42: accent-scottish-words-replace-42 + accent-scottish-words-43: accent-scottish-words-replace-43 + accent-scottish-words-44: accent-scottish-words-replace-44 + accent-scottish-words-45: accent-scottish-words-replace-45 + accent-scottish-words-46: accent-scottish-words-replace-46 + accent-scottish-words-47: accent-scottish-words-replace-47 + accent-scottish-words-48: accent-scottish-words-replace-48 + accent-scottish-words-49: accent-scottish-words-replace-49 + accent-scottish-words-50: accent-scottish-words-replace-50 + accent-scottish-words-51: accent-scottish-words-replace-51 + accent-scottish-words-52: accent-scottish-words-replace-52 + accent-scottish-words-53: accent-scottish-words-replace-53 + accent-scottish-words-54: accent-scottish-words-replace-54 + accent-scottish-words-55: accent-scottish-words-replace-55 + accent-scottish-words-56: accent-scottish-words-replace-56 + accent-scottish-words-57: accent-scottish-words-replace-57 + accent-scottish-words-58: accent-scottish-words-replace-58 + accent-scottish-words-59: accent-scottish-words-replace-59 + accent-scottish-words-60: accent-scottish-words-replace-60 + accent-scottish-words-61: accent-scottish-words-replace-61 + accent-scottish-words-62: accent-scottish-words-replace-62 + accent-scottish-words-63: accent-scottish-words-replace-63 + accent-scottish-words-64: accent-scottish-words-replace-64 + accent-scottish-words-65: accent-scottish-words-replace-65 + accent-scottish-words-66: accent-scottish-words-replace-66 + accent-scottish-words-67: accent-scottish-words-replace-67 + accent-scottish-words-68: accent-scottish-words-replace-68 + accent-scottish-words-69: accent-scottish-words-replace-69 + accent-scottish-words-70: accent-scottish-words-replace-70 + accent-scottish-words-71: accent-scottish-words-replace-71 + accent-scottish-words-72: accent-scottish-words-replace-72 + accent-scottish-words-73: accent-scottish-words-replace-73 + accent-scottish-words-74: accent-scottish-words-replace-74 + accent-scottish-words-75: accent-scottish-words-replace-75 + accent-scottish-words-76: accent-scottish-words-replace-76 + accent-scottish-words-77: accent-scottish-words-replace-77 + accent-scottish-words-78: accent-scottish-words-replace-78 + - type: accent id: pirate wordReplacements: @@ -60,6 +142,98 @@ accent-pirate-replaced-31: accent-pirate-replacement-31 accent-pirate-replaced-32: accent-pirate-replacement-32 +- type: accent + id: cowboy + wordReplacements: + accent-cowboy-words-1: accent-cowboy-replacement-1 + accent-cowboy-words-2: accent-cowboy-replacement-2 + accent-cowboy-words-3: accent-cowboy-replacement-3 + accent-cowboy-words-4: accent-cowboy-replacement-4 + accent-cowboy-words-5: accent-cowboy-replacement-5 + accent-cowboy-words-6: accent-cowboy-replacement-6 + accent-cowboy-words-7: accent-cowboy-replacement-7 + accent-cowboy-words-8: accent-cowboy-replacement-8 + accent-cowboy-words-9: accent-cowboy-replacement-9 + accent-cowboy-words-10: accent-cowboy-replacement-10 + accent-cowboy-words-11: accent-cowboy-replacement-11 + accent-cowboy-words-12: accent-cowboy-replacement-12 + accent-cowboy-words-13: accent-cowboy-replacement-13 + accent-cowboy-words-14: accent-cowboy-replacement-14 + accent-cowboy-words-15: accent-cowboy-replacement-15 + accent-cowboy-words-16: accent-cowboy-replacement-16 + accent-cowboy-words-17: accent-cowboy-replacement-17 + accent-cowboy-words-18: accent-cowboy-replacement-18 + accent-cowboy-words-19: accent-cowboy-replacement-19 + accent-cowboy-words-20: accent-cowboy-replacement-20 + accent-cowboy-words-21: accent-cowboy-replacement-21 + accent-cowboy-words-22: accent-cowboy-replacement-22 + accent-cowboy-words-23: accent-cowboy-replacement-23 + accent-cowboy-words-24: accent-cowboy-replacement-24 + accent-cowboy-words-25: accent-cowboy-replacement-25 + accent-cowboy-words-26: accent-cowboy-replacement-26 + accent-cowboy-words-27: accent-cowboy-replacement-27 + accent-cowboy-words-28: accent-cowboy-replacement-28 + accent-cowboy-words-29: accent-cowboy-replacement-29 + accent-cowboy-words-30: accent-cowboy-replacement-30 + accent-cowboy-words-31: accent-cowboy-replacement-31 + accent-cowboy-words-32: accent-cowboy-replacement-32 + accent-cowboy-words-33: accent-cowboy-replacement-33 + accent-cowboy-words-34: accent-cowboy-replacement-34 + accent-cowboy-words-35: accent-cowboy-replacement-35 + accent-cowboy-words-36: accent-cowboy-replacement-36 + accent-cowboy-words-37: accent-cowboy-replacement-37 + accent-cowboy-words-38: accent-cowboy-replacement-38 + accent-cowboy-words-39: accent-cowboy-replacement-39 + accent-cowboy-words-40: accent-cowboy-replacement-40 + accent-cowboy-words-41: accent-cowboy-replacement-41 + accent-cowboy-words-42: accent-cowboy-replacement-42 + accent-cowboy-words-43: accent-cowboy-replacement-43 + accent-cowboy-words-44: accent-cowboy-replacement-44 + accent-cowboy-words-45: accent-cowboy-replacement-45 + accent-cowboy-words-46: accent-cowboy-replacement-46 + accent-cowboy-words-47: accent-cowboy-replacement-47 + accent-cowboy-words-48: accent-cowboy-replacement-48 + accent-cowboy-words-49: accent-cowboy-replacement-49 + accent-cowboy-words-50: accent-cowboy-replacement-50 + accent-cowboy-words-51: accent-cowboy-replacement-51 + accent-cowboy-words-52: accent-cowboy-replacement-52 + accent-cowboy-words-53: accent-cowboy-replacement-53 + accent-cowboy-words-54: accent-cowboy-replacement-54 + accent-cowboy-words-55: accent-cowboy-replacement-55 + accent-cowboy-words-56: accent-cowboy-replacement-56 + accent-cowboy-words-57: accent-cowboy-replacement-57 + accent-cowboy-words-58: accent-cowboy-replacement-58 + accent-cowboy-words-59: accent-cowboy-replacement-59 + accent-cowboy-words-60: accent-cowboy-replacement-60 + accent-cowboy-words-61: accent-cowboy-replacement-61 + accent-cowboy-words-62: accent-cowboy-replacement-62 + accent-cowboy-words-63: accent-cowboy-replacement-63 + accent-cowboy-words-64: accent-cowboy-replacement-64 + accent-cowboy-words-65: accent-cowboy-replacement-65 + accent-cowboy-words-66: accent-cowboy-replacement-66 + accent-cowboy-words-67: accent-cowboy-replacement-67 + accent-cowboy-words-68: accent-cowboy-replacement-68 + accent-cowboy-words-69: accent-cowboy-replacement-69 + accent-cowboy-words-70: accent-cowboy-replacement-70 + accent-cowboy-words-71: accent-cowboy-replacement-71 + accent-cowboy-words-72: accent-cowboy-replacement-72 + accent-cowboy-words-73: accent-cowboy-replacement-73 + accent-cowboy-words-74: accent-cowboy-replacement-74 + accent-cowboy-words-75: accent-cowboy-replacement-75 + accent-cowboy-words-76: accent-cowboy-replacement-76 + accent-cowboy-words-77: accent-cowboy-replacement-77 + accent-cowboy-words-78: accent-cowboy-replacement-78 + accent-cowboy-words-79: accent-cowboy-replacement-79 + accent-cowboy-words-80: accent-cowboy-replacement-80 + accent-cowboy-words-81: accent-cowboy-replacement-81 + accent-cowboy-words-82: accent-cowboy-replacement-82 + accent-cowboy-words-83: accent-cowboy-replacement-83 + +- type: accent + id: southern + wordReplacements: + accent-southern-words-1: accent-southern-words-replace-1 + # For the chat sanitization system - type: accent id: chatsanitize @@ -188,6 +362,22 @@ liar-word-38: liar-word-replacement-38 liar-word-39: liar-word-replacement-39 +- type: accent + id: german + wordReplacements: + accent-german-words-1: accent-german-words-replace-1 + accent-german-words-2: accent-german-words-replace-2 + accent-german-words-3: accent-german-words-replace-3 + accent-german-words-4: accent-german-words-replace-4 + accent-german-words-5: accent-german-words-replace-5 + accent-german-words-6: accent-german-words-replace-6 + accent-german-words-7: accent-german-words-replace-7 + accent-german-words-8: accent-german-words-replace-8 + accent-german-words-9: accent-german-words-replace-9 + accent-german-words-10: accent-german-words-replace-10 + accent-german-words-10-2: accent-german-words-replace-10 + accent-german-words-11: accent-german-words-replace-11 + - type: accent id: russian wordReplacements: diff --git a/Resources/Prototypes/Body/Species/dwarf.yml b/Resources/Prototypes/Body/Species/dwarf.yml index 648b47fbfc0..1d64142ca96 100644 --- a/Resources/Prototypes/Body/Species/dwarf.yml +++ b/Resources/Prototypes/Body/Species/dwarf.yml @@ -62,6 +62,8 @@ Male: UnisexDwarf Female: FemaleDwarf Unsexed: UnisexDwarf + - type: ReplacementAccent + accent: scottish - type: Speech speechSounds: Bass diff --git a/Resources/Prototypes/Entities/Clothing/Head/hats.yml b/Resources/Prototypes/Entities/Clothing/Head/hats.yml index db38d3c40a9..44e4983fd8c 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hats.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hats.yml @@ -503,6 +503,9 @@ tags: - PetWearable - CorgiWearable + - type: AddAccentClothing + accent: ReplacementAccent + replacement: pirate - type: entity parent: ClothingHeadBase @@ -1049,6 +1052,9 @@ sprite: Clothing/Head/Hats/piratetricord.rsi - type: Clothing sprite: Clothing/Head/Hats/piratetricord.rsi + - type: AddAccentClothing + accent: ReplacementAccent + replacement: pirate - type: entity parent: ClothingHeadBase @@ -1327,6 +1333,9 @@ sprite: Clothing/Head/Hats/cowboyhatbrown.rsi - type: Clothing sprite: Clothing/Head/Hats/cowboyhatbrown.rsi + - type: AddAccentClothing + accent: ReplacementAccent + replacement: cowboy - type: Tag tags: - PetWearable diff --git a/Resources/Prototypes/Traits/speech.yml b/Resources/Prototypes/Traits/speech.yml index 21152f4565b..e5c7d791b28 100644 --- a/Resources/Prototypes/Traits/speech.yml +++ b/Resources/Prototypes/Traits/speech.yml @@ -13,9 +13,20 @@ removes: - type: LizardAccent - type: MothAccent + - type: ReplacementAccent + accent: scottish # 1 Cost +- type: trait + id: SouthernAccent + name: trait-southern-name + description: trait-southern-desc + category: SpeechTraits + cost: 1 + components: + - type: SouthernAccent + - type: trait id: GermanAccent name: trait-german-name @@ -53,6 +64,16 @@ - type: ReplacementAccent accent: liar +- type: trait + id: ScottishAccent + name: trait-scottish-name + description: trait-scottish-desc + category: SpeechTraits + cost: 1 + components: + - type: ReplacementAccent + accent: scottish + # 2 Cost - type: trait From 9ae88c418b3c9e3f662efffbc74892adf3b10abb Mon Sep 17 00:00:00 2001 From: PJBot Date: Thu, 26 Feb 2026 17:47:09 +0000 Subject: [PATCH 404/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 42ecd8c484e..85b54271108 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -3982,3 +3982,11 @@ id: 9544 time: '2026-02-25T23:33:16.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/41812 +- author: SlamBamActionman + changes: + - message: Tweaked German, Scottish (previously Dwarfish) and Southern accents to + not outright replace words. + type: Tweak + id: 9545 + time: '2026-02-26T17:45:58.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43030 From 8315eaab7ea1d2247a1d4686e73eb3f23639ce62 Mon Sep 17 00:00:00 2001 From: Errant <35878406+Errant-4@users.noreply.github.com> Date: Thu, 26 Feb 2026 19:36:48 +0100 Subject: [PATCH 405/603] Revert "Cleanup Antag Selection Logic a Lot" (#43041) Revert "Cleanup Antag Selection Logic a Lot (#42673)" This reverts commit c2f986ea8b537cb8aa586e40986ae9c5699b75bc. --- Content.IntegrationTests/PoolManager.cs | 5 - .../Tests/GameRules/StartEndGameRulesTest.cs | 3 +- .../Tests/Station/EvacShuttleTest.cs | 2 +- .../Antag/AntagMultipleRoleSpawnerSystem.cs | 2 +- .../Antag/AntagSelectionSystem.API.cs | 5 +- Content.Server/Antag/AntagSelectionSystem.cs | 257 +++++++----------- Content.Server/Antag/AntagSpawnerSystem.cs | 2 +- .../Rules/AntagLoadProfileRuleSystem.cs | 4 +- .../Spawners/Conditional/xenoborgs.yml | 6 + 9 files changed, 109 insertions(+), 177 deletions(-) diff --git a/Content.IntegrationTests/PoolManager.cs b/Content.IntegrationTests/PoolManager.cs index 7fd6c4e542b..6e0df92ad42 100644 --- a/Content.IntegrationTests/PoolManager.cs +++ b/Content.IntegrationTests/PoolManager.cs @@ -13,11 +13,6 @@ public static partial class PoolManager public static readonly ContentPoolManager Instance = new(); public const string TestMap = "Empty"; - /// - /// Designated load bearing station. Sometimes you need a station for a test. - /// - public const string TestStation = "Saltern"; - /// /// Runs a server, or a client until a condition is true /// diff --git a/Content.IntegrationTests/Tests/GameRules/StartEndGameRulesTest.cs b/Content.IntegrationTests/Tests/GameRules/StartEndGameRulesTest.cs index d4d30406ae2..bda931397b2 100644 --- a/Content.IntegrationTests/Tests/GameRules/StartEndGameRulesTest.cs +++ b/Content.IntegrationTests/Tests/GameRules/StartEndGameRulesTest.cs @@ -18,8 +18,7 @@ public async Task TestAllConcurrent() await using var pair = await PoolManager.GetServerClient(new PoolSettings { Dirty = true, - DummyTicker = false, - Map = PoolManager.TestStation + DummyTicker = false }); var server = pair.Server; await server.WaitIdleAsync(); diff --git a/Content.IntegrationTests/Tests/Station/EvacShuttleTest.cs b/Content.IntegrationTests/Tests/Station/EvacShuttleTest.cs index f7047578ee4..02552669f7a 100644 --- a/Content.IntegrationTests/Tests/Station/EvacShuttleTest.cs +++ b/Content.IntegrationTests/Tests/Station/EvacShuttleTest.cs @@ -32,7 +32,7 @@ public async Task EmergencyEvacTest() pair.Server.CfgMan.SetCVar(CCVars.EmergencyShuttleEnabled, true); pair.Server.CfgMan.SetCVar(CCVars.GameDummyTicker, false); var gameMap = pair.Server.CfgMan.GetCVar(CCVars.GameMap); - pair.Server.CfgMan.SetCVar(CCVars.GameMap, PoolManager.TestStation); + pair.Server.CfgMan.SetCVar(CCVars.GameMap, "Saltern"); await server.WaitPost(() => ticker.RestartRound()); await pair.RunTicksSync(25); diff --git a/Content.Server/Antag/AntagMultipleRoleSpawnerSystem.cs b/Content.Server/Antag/AntagMultipleRoleSpawnerSystem.cs index 2b454105bf6..d59fbc82b4b 100644 --- a/Content.Server/Antag/AntagMultipleRoleSpawnerSystem.cs +++ b/Content.Server/Antag/AntagMultipleRoleSpawnerSystem.cs @@ -35,6 +35,6 @@ private void OnSelectEntity(Entity ent, ref A if (entProtos.Count == 0) return; // You will just get a normal job - args.Entity = Spawn(ent.Comp.PickAndTake ? _random.PickAndTake(entProtos) : _random.Pick(entProtos), args.Coords); + args.Entity = Spawn(ent.Comp.PickAndTake ? _random.PickAndTake(entProtos) : _random.Pick(entProtos)); } } diff --git a/Content.Server/Antag/AntagSelectionSystem.API.cs b/Content.Server/Antag/AntagSelectionSystem.API.cs index 44d6022e76e..5debd10b6e4 100644 --- a/Content.Server/Antag/AntagSelectionSystem.API.cs +++ b/Content.Server/Antag/AntagSelectionSystem.API.cs @@ -336,14 +336,13 @@ public void SendBriefing( /// This technically is a gamerule-ent-less way to make an entity an antag. /// You should almost never be using this. /// - public void ForceMakeAntag(ICommonSession player, string defaultRule) where T : Component + public void ForceMakeAntag(ICommonSession? player, string defaultRule) where T : Component { var rule = ForceGetGameRuleEnt(defaultRule); if (!TryGetNextAvailableDefinition(rule, out var def)) def = rule.Comp.Definitions.Last(); - - MakeSessionAntagonist(rule, player, def.Value); + MakeAntag(rule, player, def.Value); } /// diff --git a/Content.Server/Antag/AntagSelectionSystem.cs b/Content.Server/Antag/AntagSelectionSystem.cs index 604a0619036..5c94942c9ae 100644 --- a/Content.Server/Antag/AntagSelectionSystem.cs +++ b/Content.Server/Antag/AntagSelectionSystem.cs @@ -26,7 +26,6 @@ using Content.Shared.Players; using Content.Shared.Roles; using Content.Shared.Whitelist; -using JetBrains.Annotations; using Robust.Server.Audio; using Robust.Server.GameObjects; using Robust.Server.Player; @@ -39,14 +38,6 @@ namespace Content.Server.Antag; -/// -/// Turns players into antags. -/// -/// -/// Do not ever ever ever spawn and initialize an entity prototype in nullspace then move it to the grid. -/// I wasted 4 hours refactoring this system specifically to fix that mistake. -/// Always initialize your entities attached to the entity you're spawning them on, or the correct map at the very least. -/// public sealed partial class AntagSelectionSystem : GameRuleSystem { [Dependency] private readonly AudioSystem _audio = default!; @@ -96,7 +87,7 @@ private void OnTakeGhostRole(Entity ent, ref Tak if (!Exists(rule) || !TryComp(rule, out var select)) return; - AttachSessionToAntagonist((rule, select), args.Player, def, _transform.GetMapCoordinates(ent)); + MakeAntag((rule, select), args.Player, def, ignoreSpawner: true); args.TookRole = true; _ghostRole.UnregisterGhostRole((ent, Comp(ent))); } @@ -185,8 +176,7 @@ private void OnSpawnComplete(PlayerSpawnCompleteEvent args) /// Attempt to make this player be a late-join antag. /// /// The session to attempt to make antag. - [PublicAPI] - public bool TryMakeLateJoinAntag(ICommonSession session) + public void TryMakeLateJoinAntag(ICommonSession session) { // TODO: this really doesn't handle multiple latejoin definitions well // eventually this should probably store the players per definition with some kind of unique identifier. @@ -218,10 +208,8 @@ public bool TryMakeLateJoinAntag(ICommonSession session) continue; if (TryMakeAntag((uid, antag), session, def.Value)) - return true; + break; } - - return false; } protected override void Added(EntityUid uid, AntagSelectionComponent component, GameRuleComponent gameRule, GameRuleAddedEvent args) @@ -327,9 +315,15 @@ public void ChooseAntags(Entity ent, } if (session == null) - CreateAntagSpawner(ent, def); // Create a spawner since there's no session to attach. + MakeAntag(ent, null, def); // This is for spawner antags else - PreSelectSessionForAntagonist(ent, session, def); + { + if (!ent.Comp.PreSelectedSessions.TryGetValue(def, out var set)) + ent.Comp.PreSelectedSessions.Add(def, set = new HashSet()); + set.Add(session); // Selection done! + Log.Debug($"Pre-selected {session.Name} as antagonist: {ToPrettyString(ent)}"); + _adminLogger.Add(LogType.AntagSelection, $"Pre-selected {session.Name} as antagonist: {ToPrettyString(ent)}"); + } } } @@ -359,181 +353,123 @@ public void AssignPreSelectedSessions(Entity ent) /// /// Tries to makes a given player into the specified antagonist. /// - public bool TryMakeAntag(Entity ent, ICommonSession session, AntagSelectionDefinition def, bool checkPref = true, bool onlyPreSelect = false) + public bool TryMakeAntag(Entity ent, ICommonSession? session, AntagSelectionDefinition def, bool ignoreSpawner = false, bool checkPref = true, bool onlyPreSelect = false) { _adminLogger.Add(LogType.AntagSelection, $"Start trying to make {session} become the antagonist: {ToPrettyString(ent)}"); if (checkPref && !ValidAntagPreference(session, def.PrefRoles)) return false; - if (!IsSessionValid(ent, session, def) || !IsEntityValid(session.AttachedEntity, def)) + if (!IsSessionValid(ent, session, def) || !IsEntityValid(session?.AttachedEntity, def)) return false; - if (onlyPreSelect) - PreSelectSessionForAntagonist(ent, session, def); - else - MakeSessionAntagonist(ent, session, def); - - return true; - } - - /// - /// Create an antag spawner which can be taken over by a player through the ghost role system. - /// - /// Antag rule entity - /// Antag selection definition chosen from the entity - [PublicAPI] - private EntityUid? CreateAntagSpawner(Entity ent, AntagSelectionDefinition def) - { - if (def.SpawnerPrototype is not { } proto) - return null; - - var spawner = Spawn(def.SpawnerPrototype); - if (!TryValidSpawnPosition(ent, spawner)) + if (onlyPreSelect && session != null) { - Log.Error($"Found no valid positions to place antag spawner {ToPrettyString(spawner)} prototype: {proto}"); - Del(spawner); - return null; + if (!ent.Comp.PreSelectedSessions.TryGetValue(def, out var set)) + ent.Comp.PreSelectedSessions.Add(def, set = new HashSet()); + set.Add(session); + Log.Debug($"Pre-selected {session!.Name} as antagonist: {ToPrettyString(ent)}"); + _adminLogger.Add(LogType.AntagSelection, $"Pre-selected {session.Name} as antagonist: {ToPrettyString(ent)}"); } - - if (!TryComp(spawner, out var spawnerComp)) + else { - Log.Error($"Antag spawner {spawner} does not have a {nameof(GhostRoleAntagSpawnerComponent)}."); - _adminLogger.Add(LogType.AntagSelection, $"Antag spawner {spawner} in gamerule {ToPrettyString(ent)} failed due to not having {nameof(GhostRoleAntagSpawnerComponent)}."); - Del(spawner); - return null; + MakeAntag(ent, session, def, ignoreSpawner); } - spawnerComp.Rule = ent; - spawnerComp.Definition = def; - return spawner; - } - - /// - /// Does antag pre-selection logic, adding a specified player session to the PreSelection list and logging it for admins. - /// - private void PreSelectSessionForAntagonist(Entity ent, ICommonSession session, AntagSelectionDefinition def) - { - if (!ent.Comp.PreSelectedSessions.TryGetValue(def, out var set)) - ent.Comp.PreSelectedSessions.Add(def, set = new HashSet()); - set.Add(session); - - Log.Debug($"Pre-selected {session.Name} as antagonist: {ToPrettyString(ent)}"); - _adminLogger.Add(LogType.AntagSelection, $"Pre-selected {session.Name} as antagonist: {ToPrettyString(ent)}"); - } - - /// - /// Creates a new antagonist entity at the specified coordinates, then attaches the specified player to that antagonist. - /// - private EntityUid? AttachSessionToAntagonist(Entity ent, - ICommonSession session, - AntagSelectionDefinition def, - MapCoordinates coords) - { - PreSelectSessionForAntagonist(ent, session, def); - ent.Comp.AssignedSessions.Add(session); - return SpawnNewAntagonist(ent, session, def, coords); + return true; } /// - /// Makes a specified player into a specified antagonist. - /// If the player is a ghost or has no attached entity, it will attempt to find a valid spawn position and spawn a new entity. - /// Otherwise, it will try to move their current entity to their antag's spawn position (if it exists) and then set them up as antag. + /// Makes a given player into the specified antagonist. /// - private EntityUid? MakeSessionAntagonist(Entity ent, ICommonSession session, AntagSelectionDefinition def) + public void MakeAntag(Entity ent, ICommonSession? session, AntagSelectionDefinition def, bool ignoreSpawner = false) { - PreSelectSessionForAntagonist(ent, session, def); - - ent.Comp.AssignedSessions.Add(session); + EntityUid? antagEnt = null; + var isSpawner = false; - // If the player has no entity to make an antagonist, make a new entity for them - if (HasComp(session.AttachedEntity) || session.AttachedEntity is not { } player) + if (session != null) { - return SpawnNewAntagonist(ent, session, def); - } - - TryValidSpawnPosition(ent, player, session); - InitializeAntag(ent, player, session, def); - return player; - } + if (!ent.Comp.PreSelectedSessions.TryGetValue(def, out var set)) + ent.Comp.PreSelectedSessions.Add(def, set = new HashSet()); + set.Add(session); + ent.Comp.AssignedSessions.Add(session); - /// - /// Attempts to create a new antagonist entity and attach a player session to it at a valid spawnpoint. - /// Does nothing if it cannot find a valid spawnpoint. - /// - private EntityUid? SpawnNewAntagonist(Entity ent, ICommonSession session, AntagSelectionDefinition def) - { - if (GetValidSpawnPosition(ent, session.AttachedEntity, session) is not { } coordinates) + // we shouldn't be blocking the entity if they're just a ghost or smth. + if (!HasComp(session.AttachedEntity)) + antagEnt = session.AttachedEntity; + } + else if (!ignoreSpawner && def.SpawnerPrototype != null) // don't add spawners if we have a player, dummy. { - Log.Error($"Was unable to find a valid spawn position for, {session.Name}, gamerule: {ToPrettyString(ent)} when trying to make them into an antagonist."); - return null; + antagEnt = Spawn(def.SpawnerPrototype); + isSpawner = true; } - return SpawnNewAntagonist(ent, session, def, coordinates); - } + if (!antagEnt.HasValue) + { + var getEntEv = new AntagSelectEntityEvent(session, ent, def.PrefRoles); - /// - /// Attempts to create a new antagonist entity at the specified coordinates and attach a player session to it. - /// If it cannot spawn an antagonist entity, it does nothing. - /// - private EntityUid? SpawnNewAntagonist(Entity ent, ICommonSession session, AntagSelectionDefinition def, MapCoordinates coordinates) - { - var getEntEv = new AntagSelectEntityEvent(session, ent, def.PrefRoles, coordinates); + RaiseLocalEvent(ent, ref getEntEv, true); + antagEnt = getEntEv.Entity; + } - RaiseLocalEvent(ent, ref getEntEv, true); - if (getEntEv.Entity is not { } antag) + if (antagEnt is not { } player) { - Log.Error($"Tried to make {session.UserId} into an antagonist but was unable to spawn an entity for them. Gamerule {ToPrettyString(ent)}"); - return null; + Log.Error($"Attempted to make {session} antagonist in gamerule {ToPrettyString(ent)} but there was no valid entity for player."); + _adminLogger.Add(LogType.AntagSelection, $"Attempted to make {session} antagonist in gamerule {ToPrettyString(ent)} but there was no valid entity for player."); + if (session != null && ent.Comp.RemoveUponFailedSpawn) + { + ent.Comp.AssignedSessions.Remove(session); + ent.Comp.PreSelectedSessions[def].Remove(session); + } + + return; } - InitializeAntag(ent, antag, session, def); - return antag; - } + // TODO: This is really messy because this part runs twice for midround events. + // Once when the ghostrole spawner is created and once when a player takes it. + // Therefore any component subscribing to this has to make sure both subscriptions return the same value + // or the ghost role raffle location preview will be wrong. - /// - /// Raises an event to the gamerule to check all valid possible spawning points for this rule. - /// Returns a random spawnpoint from a list of valid spawnpoints, or null if there weren't any. - /// - private MapCoordinates? GetValidSpawnPosition(Entity ent, EntityUid? antag, ICommonSession? session = null) - { - var getPosEv = new AntagSelectLocationEvent(ent, antag, session); + var getPosEv = new AntagSelectLocationEvent(session, ent, player); RaiseLocalEvent(ent, ref getPosEv, true); + if (getPosEv.Handled) + { + var playerXform = Transform(player); + var pos = RobustRandom.Pick(getPosEv.Coordinates); + _transform.SetMapCoordinates((player, playerXform), pos); + } - if (!getPosEv.Handled) - return null; - - return RobustRandom.Pick(getPosEv.Coordinates); - } + // If we want to just do a ghost role spawner, set up data here and then return early. + // This could probably be an event in the future if we want to be more refined about it. + if (isSpawner) + { + if (!TryComp(player, out var spawnerComp)) + { + Log.Error($"Antag spawner {player} does not have a GhostRoleAntagSpawnerComponent."); + _adminLogger.Add(LogType.AntagSelection, $"Antag spawner {player} in gamerule {ToPrettyString(ent)} failed due to not having GhostRoleAntagSpawnerComponent."); + if (session != null) + { + ent.Comp.AssignedSessions.Remove(session); + ent.Comp.PreSelectedSessions[def].Remove(session); + } - /// - /// Looks for a valid spawn position for this antagonist type, then moves the antagonist entity to that spawn position. - /// - private bool TryValidSpawnPosition(Entity ent, EntityUid antag, ICommonSession? session = null) - { - if (GetValidSpawnPosition(ent, antag, session) is not { } coordinates) - return false; + return; + } - var xform = Transform(antag); - _transform.SetMapCoordinates((antag, xform), coordinates); - return true; - } + spawnerComp.Rule = ent; + spawnerComp.Definition = def; + return; + } - /// - /// Initializes the antagonist status on the specified entity. - /// Adds the needed components, loadouts, items, attaches the player and fires off an event. - /// - private void InitializeAntag(Entity ent, EntityUid antag, ICommonSession? session, AntagSelectionDefinition def) - { // The following is where we apply components, equipment, and other changes to our antagonist entity. - EntityManager.AddComponents(antag, def.Components); + EntityManager.AddComponents(player, def.Components); // Equip the entity's RoleLoadout and LoadoutGroup List> gear = new(); if (def.StartingGear is not null) gear.Add(def.StartingGear.Value); - _loadout.Equip(antag, gear, def.RoleLoadout); + _loadout.Equip(player, gear, def.RoleLoadout); if (session != null) { @@ -541,22 +477,22 @@ private void InitializeAntag(Entity ent, EntityUid anta if (curMind == null || !TryComp(curMind.Value, out var mindComp) || - mindComp.OwnedEntity != antag) + mindComp.OwnedEntity != antagEnt) { - curMind = _mind.CreateMind(session.UserId, Name(antag)); + curMind = _mind.CreateMind(session.UserId, Name(antagEnt.Value)); _mind.SetUserId(curMind.Value, session.UserId); } - _mind.TransferTo(curMind.Value, antag, ghostCheckOverride: true); + _mind.TransferTo(curMind.Value, antagEnt, ghostCheckOverride: true); _role.MindAddRoles(curMind.Value, def.MindRoles, null, true); - ent.Comp.AssignedMinds.Add((curMind.Value, Name(antag))); + ent.Comp.AssignedMinds.Add((curMind.Value, Name(player))); SendBriefing(session, def.Briefing); Log.Debug($"Assigned {ToPrettyString(curMind)} as antagonist: {ToPrettyString(ent)}"); _adminLogger.Add(LogType.AntagSelection, $"Assigned {ToPrettyString(curMind)} as antagonist: {ToPrettyString(ent)}"); } - var afterEv = new AfterAntagEntitySelectedEvent(session, antag, ent, def); + var afterEv = new AfterAntagEntitySelectedEvent(session, player, ent, def); RaiseLocalEvent(ent, ref afterEv, true); } @@ -681,17 +617,14 @@ private void OnObjectivesTextGetInfo(Entity ent, ref Ob /// Event raised on a game rule entity in order to determine what the antagonist entity will be. /// Only raised if the selected player's current entity is invalid. /// -/// TODO: This should really be an interface instead, we're always raising this to the same entity anyways and the values are extremely predictable [ByRefEvent] -public record struct AntagSelectEntityEvent(ICommonSession? Session, Entity GameRule, List> AntagRoles, MapCoordinates Coords) +public record struct AntagSelectEntityEvent(ICommonSession? Session, Entity GameRule, List> AntagRoles) { public readonly ICommonSession? Session = Session; /// list of antag role prototypes associated with a entity. used by the public readonly List> AntagRoles = AntagRoles; - public readonly MapCoordinates Coords = Coords; - public bool Handled => Entity != null; public EntityUid? Entity; @@ -701,20 +634,20 @@ public record struct AntagSelectEntityEvent(ICommonSession? Session, Entity [ByRefEvent] -public record struct AntagSelectLocationEvent(Entity GameRule, EntityUid? Entity, ICommonSession? Session = null) +public record struct AntagSelectLocationEvent(ICommonSession? Session, Entity GameRule, EntityUid Entity) { public readonly ICommonSession? Session = Session; public bool Handled => Coordinates.Any(); // the entity of the antagonist - public EntityUid? Entity = Entity; + public EntityUid Entity = Entity; public List Coordinates = new(); } /// -/// Event raised on a game ruleR entity after the setup logic for an antag is complete. +/// Event raised on a game rule entity after the setup logic for an antag is complete. /// Used for applying additional more complex setup logic. /// [ByRefEvent] diff --git a/Content.Server/Antag/AntagSpawnerSystem.cs b/Content.Server/Antag/AntagSpawnerSystem.cs index dd0c99cc0e4..f8a036749a1 100644 --- a/Content.Server/Antag/AntagSpawnerSystem.cs +++ b/Content.Server/Antag/AntagSpawnerSystem.cs @@ -16,6 +16,6 @@ public override void Initialize() private void OnSelectEntity(Entity ent, ref AntagSelectEntityEvent args) { - args.Entity = Spawn(ent.Comp.Prototype, args.Coords); + args.Entity = Spawn(ent.Comp.Prototype); } } diff --git a/Content.Server/GameTicking/Rules/AntagLoadProfileRuleSystem.cs b/Content.Server/GameTicking/Rules/AntagLoadProfileRuleSystem.cs index fff3ee8de6f..22916f0c18e 100644 --- a/Content.Server/GameTicking/Rules/AntagLoadProfileRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/AntagLoadProfileRuleSystem.cs @@ -36,7 +36,7 @@ private void OnSelectEntity(Entity ent, ref Antag if (profile?.Species is not { } speciesId || !_proto.Resolve(speciesId, out var species)) { - species = _proto.Index(HumanoidCharacterProfile.DefaultSpecies); + species = _proto.Index(HumanoidCharacterProfile.DefaultSpecies); } if (ent.Comp.SpeciesOverride != null @@ -45,7 +45,7 @@ private void OnSelectEntity(Entity ent, ref Antag species = _proto.Index(ent.Comp.SpeciesOverride.Value); } - args.Entity = Spawn(species.Prototype, args.Coords); + args.Entity = Spawn(species.Prototype); if (profile?.WithSpecies(species.ID) is { } humanoidProfile) { _visualBody.ApplyProfileTo(args.Entity.Value, humanoidProfile); diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Conditional/xenoborgs.yml b/Resources/Prototypes/Entities/Markers/Spawners/Conditional/xenoborgs.yml index 0717829f849..a8251739acc 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Conditional/xenoborgs.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Conditional/xenoborgs.yml @@ -5,9 +5,13 @@ components: - type: GridSpawnPointWhitelist whitelist: + components: + - Xenoborg tags: - XenoborgGhostrole blacklist: + components: + - MothershipCore tags: - MothershipCoreGhostrole - type: SpawnPoint @@ -24,6 +28,8 @@ components: - type: GridSpawnPointWhitelist whitelist: + components: + - MothershipCore tags: - MothershipCoreGhostrole - type: SpawnPoint From ef21b128d32dbab55a68e74fac178025eea24f85 Mon Sep 17 00:00:00 2001 From: OrbitSystem07 Date: Thu, 26 Feb 2026 10:47:44 -0800 Subject: [PATCH 406/603] Fix hypodart uplink description (#43035) fix --- Resources/Locale/en-US/store/uplink-catalog.ftl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Locale/en-US/store/uplink-catalog.ftl b/Resources/Locale/en-US/store/uplink-catalog.ftl index 2ff8bc38059..4f67fae1cd4 100644 --- a/Resources/Locale/en-US/store/uplink-catalog.ftl +++ b/Resources/Locale/en-US/store/uplink-catalog.ftl @@ -486,7 +486,7 @@ uplink-bribe-name = Lobbying Bundle uplink-bribe-desc = A heartfelt gift that can help you sway someone's opinion. Real or counterfeit? Yes. uplink-hypodart-name = Hypodart -uplink-hypodart-desc = A seemingly unremarkable dart with an enlarged reservoir for chemicals. It can store up to 7u reagents in itself, and instantly inject when it hits the target. Starts empty. +uplink-hypodart-desc = A seemingly unremarkable dart with an enlarged reservoir for chemicals. It can store up to 10u reagents in itself, and instantly inject when it hits the target. Starts empty. uplink-barber-scissors-name = Barber Scissors uplink-barber-scissors-desc = A good tool to give your fellow agent a nice haircut, unless you want to give it to yourself. From 4d5dab1098bcfdbce14906d9c77dbc669e295760 Mon Sep 17 00:00:00 2001 From: PJBot Date: Thu, 26 Feb 2026 19:01:22 +0000 Subject: [PATCH 407/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 85b54271108..c7f79573f59 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Princess-Cheeseballs - changes: - - message: Incendiary rounds now deal a mix of pierce damage and heat damage instead - of primarily heat damage. - type: Tweak - id: 9035 - time: '2025-10-05T08:38:36.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39204 - author: Centronias changes: - message: Stirring is once again prioritized over drinking. No longer will your @@ -3990,3 +3982,10 @@ id: 9545 time: '2026-02-26T17:45:58.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43030 +- author: OrbitSystem07 + changes: + - message: The uplink now properly states the capacity of the hypodart. + type: Fix + id: 9546 + time: '2026-02-26T19:00:11.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43035 From 08db33b8b31fc06b06cdf634943987552c121547 Mon Sep 17 00:00:00 2001 From: eoineoineoin Date: Thu, 26 Feb 2026 19:25:02 +0000 Subject: [PATCH 408/603] Stop AI knocking on shutters, blast doors (#42972) Stop AI interacting with shutters --- .../Prototypes/Entities/Structures/Doors/Shutter/shutters.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml b/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml index b242a0bebe0..055df8acd23 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml @@ -11,7 +11,6 @@ flags: - Anchorable - type: Rotatable - - type: StationAiWhitelist - type: Sprite sprite: Structures/Doors/Shutters/shutters.rsi drawdepth: BlastDoors From 497888f22b682af1861378175f68e44fca0d792b Mon Sep 17 00:00:00 2001 From: Dinner <180707738+DinnerCalzone@users.noreply.github.com> Date: Thu, 26 Feb 2026 15:45:01 -0500 Subject: [PATCH 409/603] Add building animations to techfabs (#42962) add techfab animations --- .../Entities/Structures/Machines/lathe.yml | 6 ++++++ .../Structures/Machines/techfab.rsi/meta.json | 20 ++++++++++++++++-- .../Machines/techfab.rsi/unlit-building.png | Bin 0 -> 715 bytes 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 Resources/Textures/Structures/Machines/techfab.rsi/unlit-building.png diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index e59e2d86e77..31fef56da67 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -386,6 +386,8 @@ - type: Lathe idleState: icon runningState: icon + unlitIdleState: unlit + unlitRunningState: unlit-building staticPacks: - SecurityEquipmentStatic - SecurityPracticeStatic @@ -433,6 +435,8 @@ - type: Lathe idleState: icon runningState: icon + unlitIdleState: unlit + unlitRunningState: unlit-building staticPacks: - SecurityAmmoStatic - type: EmagLatheRecipes @@ -464,6 +468,8 @@ - type: Lathe idleState: icon runningState: icon + unlitIdleState: unlit + unlitRunningState: unlit-building staticPacks: - TopicalsStatic - ChemistryStatic diff --git a/Resources/Textures/Structures/Machines/techfab.rsi/meta.json b/Resources/Textures/Structures/Machines/techfab.rsi/meta.json index 7530b9322a2..f5811462c98 100644 --- a/Resources/Textures/Structures/Machines/techfab.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/techfab.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "made by EmoGarbage, ammo state made by AjexRose and modified by Emo garbage", + "copyright": "made by EmoGarbage, ammo state made by AjexRose and modified by Emo garbage, unlit-building by DinnerCalzone (github)", "size": { "x": 32, "y": 32 @@ -28,7 +28,7 @@ { "name": "cargo" }, - { + { "name": "ammo" }, { @@ -37,6 +37,22 @@ { "name": "unlit" }, + { + "name": "unlit-building", + "delays": [ + [ + 0.15, + 0.15, + 0.15, + 0.15, + 0.15, + 0.15, + 0.15, + 0.15, + 0.15 + ] + ] + }, { "name": "inserting", "delays": [ diff --git a/Resources/Textures/Structures/Machines/techfab.rsi/unlit-building.png b/Resources/Textures/Structures/Machines/techfab.rsi/unlit-building.png new file mode 100644 index 0000000000000000000000000000000000000000..e128027a4ab4827b3e289eb95c1373c9ccd40921 GIT binary patch literal 715 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy!Wi-X*q7}lMWc?smOq&xaLGB9lH z=l+w(3gn9h_=LDt)ia*G%3zsq8MTqQ{3WZnzc^4P=fxInAjMu1c)mncaXw zoCO|{#S9F52SJ!|$HeTnKtYKT*NBqf{Irtt#G+J&fW*wa5n999M?Mpgz!Aj=DgrJ-z)4>TB=!QxCnwjm=Eg8-0@0^-be7O;30 zkPQMi%NQA606hw$(JW;EN=;yAU;(N$Ffuk^TmUf@WFzYWh)Gj`Y!F}qn#%-M8Dwbz zWI=Tq8W@0NLpx_PJw2{H7Z{Xoo-U3d8P0EKo?h2%z~d4v_w&F1I^i=%k60-0Xk?wW zdF7FYe%*})FVyeyunKS~h&X681Ta(vG=#+ewe6fHd#tQ6G0R-xJo^sLea>E=4;3Z4 zN=qz`Sy^oE_%2n>cw0lv-FG(UraHblb9vfsPA~R#4GHQFKNmV^%FYtZ_G(|dr|KSO z)n}=L>@(Iq_xCN3hnT;R!HKbjiGx)@^u)jWDYxhKcb?~eSG42*>u)vR{%r8uaR2}E zJ@vPl^rlPS`uXHq`R#?m9J~MS7vl(h$LjU+Ku-j7vEa=+U~}I-XRc*+TKD|zF)Ig% zkq|%Z@hrHUw2lC$InAKlS|H6%@Lju6{1- HoD!M<)j{jM literal 0 HcmV?d00001 From 5a923b821cd29f23ec7c74ed52e350071666a51e Mon Sep 17 00:00:00 2001 From: PJBot Date: Thu, 26 Feb 2026 20:59:41 +0000 Subject: [PATCH 410/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index c7f79573f59..07db26eda74 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Centronias - changes: - - message: Stirring is once again prioritized over drinking. No longer will your - bartender be very tempted to taste test your drink as they stir it. - type: Fix - id: 9036 - time: '2025-10-05T22:12:24.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40704 - author: jessicamaybe changes: - message: Skeletons are now playable instruments! @@ -3989,3 +3981,10 @@ id: 9546 time: '2026-02-26T19:00:11.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43035 +- author: DinnerCalzone + changes: + - message: Techfabs now play an animation while building something. + type: Add + id: 9547 + time: '2026-02-26T20:58:33.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42962 From 7bc062ee14a6549c961c6d5f4555035ad3a17951 Mon Sep 17 00:00:00 2001 From: Redrover1760 <39284090+Redrover1760@users.noreply.github.com> Date: Thu, 26 Feb 2026 18:21:55 -0500 Subject: [PATCH 411/603] StrippableComponent timespan calculation fix (#43022) * timespan calculation fix * Update Content.Shared/Strip/Components/StrippableComponent.cs Co-authored-by: Tayrtahn --------- Co-authored-by: Tayrtahn --- Content.Shared/Strip/Components/StrippableComponent.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Strip/Components/StrippableComponent.cs b/Content.Shared/Strip/Components/StrippableComponent.cs index 5191b3f3f94..2769cf8f492 100644 --- a/Content.Shared/Strip/Components/StrippableComponent.cs +++ b/Content.Shared/Strip/Components/StrippableComponent.cs @@ -39,7 +39,7 @@ public abstract class BaseBeforeStripEvent(TimeSpan initialTime, bool stealth = public TimeSpan Additive = TimeSpan.Zero; public bool Stealth = stealth; - public TimeSpan Time => TimeSpan.FromSeconds(MathF.Max(InitialTime.Seconds * Multiplier + Additive.Seconds, 0f)); + public TimeSpan Time => TimeSpan.FromTicks(Math.Max((InitialTime * Multiplier + Additive).Ticks, 0)); public SlotFlags TargetSlots { get; } = SlotFlags.GLOVES; } From e16fc10c158d3206708d18ab216ed38a99f977d3 Mon Sep 17 00:00:00 2001 From: TriviaSolari <154280615+TriviaSolari@users.noreply.github.com> Date: Thu, 26 Feb 2026 18:55:28 -0500 Subject: [PATCH 412/603] Fix Holosign Placement (#42909) * Holosigns now spawn facing player direction * Holosigns face south * Snap holosign to grid and attach to clicked entity * Back to setting local rotation to zero * No need to snap to grid * rifts --------- Co-authored-by: ScarKy0 --- Content.Server/Dragon/DragonSystem.cs | 4 ++-- Content.Shared/Holosign/HolosignSystem.cs | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Content.Server/Dragon/DragonSystem.cs b/Content.Server/Dragon/DragonSystem.cs index 0da2accd053..1c838939ec9 100644 --- a/Content.Server/Dragon/DragonSystem.cs +++ b/Content.Server/Dragon/DragonSystem.cs @@ -1,7 +1,6 @@ using Content.Server.Objectives.Components; using Content.Server.Objectives.Systems; using Content.Server.Popups; -using Content.Server.Roles; using Content.Shared.Actions; using Content.Shared.Dragon; using Content.Shared.Maps; @@ -13,7 +12,6 @@ using Content.Shared.NPC.Systems; using Content.Shared.Zombies; using Robust.Shared.Audio.Systems; -using Robust.Shared.Map; using Robust.Shared.Map.Components; namespace Content.Server.Dragon; @@ -168,6 +166,8 @@ private void OnSpawnRift(EntityUid uid, DragonComponent component, DragonSpawnRi } var carpUid = Spawn(component.RiftPrototype, _transform.GetMapCoordinates(uid, xform: xform)); + Transform(carpUid).LocalRotation = Angle.Zero; + component.Rifts.Add(carpUid); Comp(carpUid).Dragon = uid; } diff --git a/Content.Shared/Holosign/HolosignSystem.cs b/Content.Shared/Holosign/HolosignSystem.cs index 730ac1140a2..195b46c1f76 100644 --- a/Content.Shared/Holosign/HolosignSystem.cs +++ b/Content.Shared/Holosign/HolosignSystem.cs @@ -48,7 +48,10 @@ private void OnBeforeInteract(Entity ent, ref Before // overlapping of the same holo on one tile remains allowed to allow holofan refreshes if (ent.Comp.PredictedSpawn || _net.IsServer) - PredictedSpawnAtPosition(ent.Comp.SignProto, args.ClickLocation); + { + var holosign = PredictedSpawnAtPosition(ent.Comp.SignProto, args.ClickLocation); + Transform(holosign).LocalRotation = Angle.Zero; + } args.Handled = true; } From 9cdc009e006f66b9827bd2404ac9a96a25bea9a7 Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 27 Feb 2026 00:09:36 +0000 Subject: [PATCH 413/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 07db26eda74..faca00b3049 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: jessicamaybe - changes: - - message: Skeletons are now playable instruments! - type: Add - id: 9037 - time: '2025-10-07T00:59:20.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40009 - author: Huaqas, Davyei changes: - message: 3 new Holy Books have been added to the Chaplain's loadout. @@ -3988,3 +3981,11 @@ id: 9547 time: '2026-02-26T20:58:33.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42962 +- author: TriviaSolari + changes: + - message: Holosign projectors and dragon rifts no longer place signs at strange + angles. + type: Fix + id: 9548 + time: '2026-02-27T00:08:28.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42909 From e361944ef62aba461790d44bdfa1a17c6701d7fa Mon Sep 17 00:00:00 2001 From: pathetic meowmeow Date: Fri, 27 Feb 2026 01:20:13 -0500 Subject: [PATCH 414/603] Make DamageSpecifier serializable (#43049) * pt1 damageable refactor * fixes * thusd unused * sparse damagespecifiers * fix thongs * aaaaaa * fix tests * de-crash --- .../UI/HealthAnalyzerControl.xaml.cs | 4 +- .../Tests/Damageable/DamageSpecifierTest.cs | 16 ++-- .../Tests/Damageable/DamageableTest.cs | 11 --- .../Converters/DamageSpecifierConverter.cs | 20 +++++ .../Components/DeltaPressureComponent.cs | 2 +- .../Components/ChangelingDevourComponent.cs | 2 +- Content.Shared/Cluwne/CluwneComponent.cs | 2 +- .../Damage/Components/DamageableComponent.cs | 24 ++---- Content.Shared/Damage/DamageSpecifier.cs | 32 +++----- .../DamageSpecifierDictionarySerializer.cs | 81 ------------------- .../Damage/Prototypes/DamageGroupPrototype.cs | 1 + .../Damage/Systems/DamageableSystem.API.cs | 42 +++++----- .../Damage/Systems/DamageableSystem.Events.cs | 81 ++++++++----------- .../Damage/Systems/DamageableSystem.cs | 28 +------ .../Triggers/DamageGroupTrigger.cs | 2 +- .../DamageGroupEntityConditionSystem.cs | 2 +- .../Components/KitchenSpikeComponent.cs | 6 +- .../Prototypes/Body/Species/skeleton.yml | 11 ++- Resources/Prototypes/Body/Species/slime.yml | 5 +- Resources/Prototypes/Body/Species/vox.yml | 5 +- Resources/Prototypes/Body/species_base.yml | 5 +- .../Prototypes/Entities/Mobs/NPCs/animals.yml | 13 +-- .../Entities/Mobs/NPCs/miscellaneous.yml | 25 +++--- .../Entities/Mobs/NPCs/spacetick.yml | 4 +- .../Prototypes/Entities/Mobs/NPCs/xeno.yml | 24 +++--- .../Entities/Mobs/Player/dragon.yml | 4 +- Resources/Prototypes/Entities/Mobs/base.yml | 4 +- .../Objects/Consumable/Food/Baked/bread.yml | 4 +- .../Objects/Consumable/Food/Baked/cake.yml | 4 +- .../Entities/Objects/Misc/books.yml | 2 +- .../Entities/Objects/Shields/shields.yml | 5 +- .../Objects/Specific/Chapel/bibles.yml | 26 +++--- .../Objects/Specific/Medical/healing.yml | 27 ++++--- .../Objects/Specific/Medical/surgery.yml | 8 +- .../Weapons/Guns/Projectiles/magic.yml | 20 +++-- .../Entities/Objects/Weapons/Melee/mining.yml | 25 +++--- Resources/Prototypes/NPCs/utility_queries.yml | 2 +- .../Reagents/Consumable/Drink/alcohol.yml | 16 ++-- .../Reagents/Consumable/Food/food.yml | 12 ++- Resources/Prototypes/Reagents/biological.yml | 7 +- Resources/Prototypes/Reagents/botany.yml | 10 +-- Resources/Prototypes/Reagents/chemicals.yml | 5 +- Resources/Prototypes/Reagents/medicine.yml | 52 ++++++------ Resources/Prototypes/Reagents/narcotics.yml | 2 +- Resources/Prototypes/Reagents/toxins.yml | 19 ++--- Resources/Prototypes/XenoArch/effects.yml | 10 ++- 46 files changed, 299 insertions(+), 413 deletions(-) create mode 100644 Content.Server/Administration/Logs/Converters/DamageSpecifierConverter.cs delete mode 100644 Content.Shared/Damage/DamageSpecifierDictionarySerializer.cs diff --git a/Content.Client/HealthAnalyzer/UI/HealthAnalyzerControl.xaml.cs b/Content.Client/HealthAnalyzer/UI/HealthAnalyzerControl.xaml.cs index 92079542bd3..80b3e4b6a70 100644 --- a/Content.Client/HealthAnalyzer/UI/HealthAnalyzerControl.xaml.cs +++ b/Content.Client/HealthAnalyzer/UI/HealthAnalyzerControl.xaml.cs @@ -135,7 +135,7 @@ public void Populate(HealthAnalyzerUiState state) damageable.DamagePerGroup.OrderByDescending(damage => damage.Value) .ToDictionary(x => x.Key, x => x.Value); - IReadOnlyDictionary damagePerType = damageable.Damage.DamageDict; + var damagePerType = damageable.Damage.DamageDict; DrawDiagnosticGroups(damageSortedGroups, damagePerType); } @@ -153,7 +153,7 @@ private static string GetStatus(MobState mobState) private void DrawDiagnosticGroups( Dictionary groups, - IReadOnlyDictionary damageDict) + IReadOnlyDictionary, FixedPoint2> damageDict) { GroupsContainer.RemoveAllChildren(); diff --git a/Content.IntegrationTests/Tests/Damageable/DamageSpecifierTest.cs b/Content.IntegrationTests/Tests/Damageable/DamageSpecifierTest.cs index bd5cac05dd1..522b53b5a9c 100644 --- a/Content.IntegrationTests/Tests/Damageable/DamageSpecifierTest.cs +++ b/Content.IntegrationTests/Tests/Damageable/DamageSpecifierTest.cs @@ -1,6 +1,8 @@ using System.Collections.Generic; using Content.Shared.Damage; +using Content.Shared.Damage.Prototypes; using Content.Shared.FixedPoint; +using Robust.Shared.Prototypes; namespace Content.IntegrationTests.Tests.Damageable; @@ -39,14 +41,14 @@ public void TestDamageSpecifierOperations() Assert.That(difference, Is.EqualTo(output5)); } - private static readonly Dictionary Input1 = new() + private static readonly Dictionary, FixedPoint2> Input1 = new() { { "A", 1.5f }, { "B", 2 }, { "C", 3 } }; - private static readonly Dictionary Input2 = new() + private static readonly Dictionary, FixedPoint2> Input2 = new() { { "A", 1 }, { "B", 2 }, @@ -54,28 +56,28 @@ public void TestDamageSpecifierOperations() { "D", 0.05f } }; - private static readonly Dictionary Output1 = new() + private static readonly Dictionary, FixedPoint2> Output1 = new() { { "A", -1.5f }, { "B", -2 }, { "C", -3 } }; - private static readonly Dictionary Output2 = new() + private static readonly Dictionary, FixedPoint2> Output2 = new() { { "A", 0.75f }, { "B", 1 }, { "C", 1.5 } }; - private static readonly Dictionary Output3 = new() + private static readonly Dictionary, FixedPoint2> Output3 = new() { { "A", 3f }, { "B", 4 }, { "C", 6 } }; - private static readonly Dictionary Output4 = new() + private static readonly Dictionary, FixedPoint2> Output4 = new() { { "A", 0.5f }, { "B", 0 }, @@ -83,7 +85,7 @@ public void TestDamageSpecifierOperations() { "D", -0.05f } }; - private static readonly Dictionary Output5 = new() + private static readonly Dictionary, FixedPoint2> Output5 = new() { { "A", 0.25f }, { "B", 0 }, diff --git a/Content.IntegrationTests/Tests/Damageable/DamageableTest.cs b/Content.IntegrationTests/Tests/Damageable/DamageableTest.cs index 20b0877548d..11e7abd8a9c 100644 --- a/Content.IntegrationTests/Tests/Damageable/DamageableTest.cs +++ b/Content.IntegrationTests/Tests/Damageable/DamageableTest.cs @@ -148,17 +148,6 @@ await server.WaitAssertion(() => { var uid = sDamageableEntity; - // Check that the correct types are supported. - Assert.Multiple(() => - { - Assert.That(sDamageableComponent.Damage.DamageDict.ContainsKey(type1.ID), Is.False); - Assert.That(sDamageableComponent.Damage.DamageDict.ContainsKey(type2a.ID), Is.True); - Assert.That(sDamageableComponent.Damage.DamageDict.ContainsKey(type2b.ID), Is.False); - Assert.That(sDamageableComponent.Damage.DamageDict.ContainsKey(type3a.ID), Is.True); - Assert.That(sDamageableComponent.Damage.DamageDict.ContainsKey(type3b.ID), Is.True); - Assert.That(sDamageableComponent.Damage.DamageDict.ContainsKey(type3c.ID), Is.True); - }); - // Check that damage is evenly distributed over a group if its a nice multiple var types = group3.DamageTypes; var damageToDeal = FixedPoint2.New(types.Count * 5); diff --git a/Content.Server/Administration/Logs/Converters/DamageSpecifierConverter.cs b/Content.Server/Administration/Logs/Converters/DamageSpecifierConverter.cs new file mode 100644 index 00000000000..b129307e748 --- /dev/null +++ b/Content.Server/Administration/Logs/Converters/DamageSpecifierConverter.cs @@ -0,0 +1,20 @@ +using System.Text.Json; +using Content.Shared.Damage; +using Robust.Shared.Map; +using Robust.Shared.Map.Components; + +namespace Content.Server.Administration.Logs.Converters; + +[AdminLogConverter] +public sealed class DamageSpecifierConverter : AdminLogConverter +{ + public override void Write(Utf8JsonWriter writer, DamageSpecifier value, JsonSerializerOptions options) + { + writer.WriteStartObject(); + foreach (var (damage, amount) in value.DamageDict) + { + writer.WriteNumber(damage.Id, amount.Double()); + } + writer.WriteEndObject(); + } +} diff --git a/Content.Shared/Atmos/Components/DeltaPressureComponent.cs b/Content.Shared/Atmos/Components/DeltaPressureComponent.cs index 064d67f606b..0336abaa987 100644 --- a/Content.Shared/Atmos/Components/DeltaPressureComponent.cs +++ b/Content.Shared/Atmos/Components/DeltaPressureComponent.cs @@ -67,7 +67,7 @@ public sealed partial class DeltaPressureComponent : Component [DataField] public DamageSpecifier BaseDamage = new() { - DamageDict = new Dictionary + DamageDict = new () { { "Structural", 10 }, }, diff --git a/Content.Shared/Changeling/Components/ChangelingDevourComponent.cs b/Content.Shared/Changeling/Components/ChangelingDevourComponent.cs index af1651f8dc2..3b907eb494e 100644 --- a/Content.Shared/Changeling/Components/ChangelingDevourComponent.cs +++ b/Content.Shared/Changeling/Components/ChangelingDevourComponent.cs @@ -99,7 +99,7 @@ public sealed partial class ChangelingDevourComponent : Component [DataField, AutoNetworkedField] public DamageSpecifier DamagePerTick = new() { - DamageDict = new Dictionary + DamageDict = new () { { "Slash", 10}, { "Piercing", 10 }, diff --git a/Content.Shared/Cluwne/CluwneComponent.cs b/Content.Shared/Cluwne/CluwneComponent.cs index 692a8ec4f93..77d14431f53 100644 --- a/Content.Shared/Cluwne/CluwneComponent.cs +++ b/Content.Shared/Cluwne/CluwneComponent.cs @@ -26,7 +26,7 @@ public sealed partial class CluwneComponent : Component { DamageDict = new() { - { "Genetic", 300.0 }, + { "Cellular", 300.0 }, }, }; diff --git a/Content.Shared/Damage/Components/DamageableComponent.cs b/Content.Shared/Damage/Components/DamageableComponent.cs index cef27d4d2f1..428d2aa9cd4 100644 --- a/Content.Shared/Damage/Components/DamageableComponent.cs +++ b/Content.Shared/Damage/Components/DamageableComponent.cs @@ -17,7 +17,7 @@ namespace Content.Shared.Damage.Components; /// may also have resistances to certain damage types, defined via a . /// [RegisterComponent] -[NetworkedComponent] +[NetworkedComponent, AutoGenerateComponentState(true)] [Access(typeof(DamageableSystem), Other = AccessPermissions.ReadExecute)] public sealed partial class DamageableComponent : Component { @@ -25,7 +25,7 @@ public sealed partial class DamageableComponent : Component /// This specifies what damage types are supported by this component. /// If null, all damage types will be supported. /// - [DataField("damageContainer")] + [DataField("damageContainer"), AutoNetworkedField] // ReSharper disable once InconsistentNaming - This is wrong but fixing it is potentially annoying for downstreams. public ProtoId? DamageContainerID; @@ -37,7 +37,7 @@ public sealed partial class DamageableComponent : Component /// Though DamageModifierSets can be deserialized directly, we only want to use the prototype version here /// to reduce duplication. /// - [DataField("damageModifierSet")] + [DataField("damageModifierSet"), AutoNetworkedField] public ProtoId? DamageModifierSetId; /// @@ -46,7 +46,7 @@ public sealed partial class DamageableComponent : Component /// /// If this data-field is specified, this allows damageable components to be initialized with non-zero damage. /// - [DataField(readOnly: true)] //TODO FULL GAME SAVE + [DataField, AutoNetworkedField] public DamageSpecifier Damage = new(); /// @@ -87,20 +87,6 @@ public sealed partial class DamageableComponent : Component [DataField] public ProtoId RottingIcon = "HealthIconRotting"; - [DataField] + [DataField, AutoNetworkedField] public FixedPoint2? HealthBarThreshold; } - -[Serializable, NetSerializable] -public sealed class DamageableComponentState( - Dictionary damageDict, - ProtoId? damageContainerId, - ProtoId? modifierSetId, - FixedPoint2? healthBarThreshold) - : ComponentState -{ - public readonly Dictionary DamageDict = damageDict; - public readonly ProtoId? DamageContainerId = damageContainerId; - public readonly ProtoId? ModifierSetId = modifierSetId; - public readonly FixedPoint2? HealthBarThreshold = healthBarThreshold; -} diff --git a/Content.Shared/Damage/DamageSpecifier.cs b/Content.Shared/Damage/DamageSpecifier.cs index 6c11f88b1e8..4b084769829 100644 --- a/Content.Shared/Damage/DamageSpecifier.cs +++ b/Content.Shared/Damage/DamageSpecifier.cs @@ -3,11 +3,10 @@ using Content.Shared.Damage.Components; using Content.Shared.Damage.Prototypes; using Content.Shared.FixedPoint; -using JetBrains.Annotations; using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary; using Robust.Shared.Utility; using Robust.Shared.Serialization; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Generic; namespace Content.Shared.Damage { @@ -19,31 +18,13 @@ namespace Content.Shared.Damage /// functions to apply resistance sets and supports basic math operations to modify this dictionary. /// [DataDefinition, Serializable, NetSerializable] - public sealed partial class DamageSpecifier : IEquatable + public sealed partial class DamageSpecifier : IEquatable, IRobustCloneable { - // For the record I regret so many of the decisions i made when rewriting damageable - // Why is it just shitting out dictionaries left and right - // One day Arrays, stackalloc spans, and SIMD will save the day. - // TODO DAMAGEABLE REFACTOR - - // These exist solely so the wiki works. Please do not touch them or use them. - [JsonPropertyName("types")] - [DataField("types", customTypeSerializer: typeof(PrototypeIdDictionarySerializer))] - [UsedImplicitly] - private Dictionary? _damageTypeDictionary; - - [JsonPropertyName("groups")] - [DataField("groups", customTypeSerializer: typeof(PrototypeIdDictionarySerializer))] - [UsedImplicitly] - private Dictionary? _damageGroupDictionary; - /// /// Main DamageSpecifier dictionary. Most DamageSpecifier functions exist to somehow modifying this. /// - [JsonIgnore] - [ViewVariables(VVAccess.ReadWrite)] - [IncludeDataField(customTypeSerializer: typeof(DamageSpecifierDictionarySerializer), readOnly: true)] - public Dictionary DamageDict { get; set; } = new(); + [DataField("types")] + public Dictionary, FixedPoint2> DamageDict { get; set; } = new(); /// /// Returns a sum of the damage values. @@ -84,6 +65,11 @@ public bool AnyPositive() [JsonIgnore] public bool Empty => DamageDict.Count == 0; + public DamageSpecifier Clone() + { + return new DamageSpecifier(this); + } + public override string ToString() { return "DamageSpecifier(" + string.Join("; ", DamageDict.Select(x => x.Key + ":" + x.Value)) + ")"; diff --git a/Content.Shared/Damage/DamageSpecifierDictionarySerializer.cs b/Content.Shared/Damage/DamageSpecifierDictionarySerializer.cs deleted file mode 100644 index 92f56571a62..00000000000 --- a/Content.Shared/Damage/DamageSpecifierDictionarySerializer.cs +++ /dev/null @@ -1,81 +0,0 @@ -using Content.Shared.Damage.Prototypes; -using Content.Shared.FixedPoint; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization; -using Robust.Shared.Serialization.Manager; -using Robust.Shared.Serialization.Markdown.Mapping; -using Robust.Shared.Serialization.Markdown.Validation; -using Robust.Shared.Serialization.Markdown.Value; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary; -using Robust.Shared.Serialization.TypeSerializers.Interfaces; - -namespace Content.Shared.Damage; - -//todo writing -public sealed class DamageSpecifierDictionarySerializer : ITypeReader, MappingDataNode> -{ - private ITypeValidator, MappingDataNode> _damageTypeSerializer = new PrototypeIdDictionarySerializer(); - private ITypeValidator, MappingDataNode> _damageGroupSerializer = new PrototypeIdDictionarySerializer(); - - public ValidationNode Validate(ISerializationManager serializationManager, MappingDataNode node, - IDependencyCollection dependencies, ISerializationContext? context = null) - { - var vals = new Dictionary(); - if (node.TryGet("types", out var typesNode)) - { - vals.Add(new ValidatedValueNode(new ValueDataNode("types")), _damageTypeSerializer.Validate(serializationManager, typesNode, dependencies, context)); - } - - if (node.TryGet("groups", out var groupsNode)) - { - vals.Add(new ValidatedValueNode(new ValueDataNode("groups")), _damageGroupSerializer.Validate(serializationManager, groupsNode, dependencies, context)); - } - - return new ValidatedMappingNode(vals); - } - - public Dictionary Read(ISerializationManager serializationManager, MappingDataNode node, IDependencyCollection dependencies, - SerializationHookContext hookCtx, ISerializationContext? context = null, ISerializationManager.InstantiationDelegate>? instanceProvider = null) - { - var dict = instanceProvider != null ? instanceProvider() : new(); - // Add all the damage types by just copying the type dictionary (if it is not null). - if (node.TryGet("types", out var typesNode)) - { - serializationManager.Read(typesNode, instanceProvider: () => dict, notNullableOverride: true); - } - - if (!node.TryGet("groups", out var groupsNode)) - return dict; - - // Then resolve damage groups and add them - var prototypeManager = dependencies.Resolve(); - foreach (var entry in serializationManager.Read>(groupsNode, notNullableOverride: true)) - { - if (!prototypeManager.TryIndex(entry.Key, out var group)) - { - // This can happen if deserialized before prototypes are loaded. - // i made this a warning bc it was failing tests -paul - dependencies.Resolve().RootSawmill.Error($"Unknown damage group given to DamageSpecifier: {entry.Key}"); - continue; - } - - // Simply distribute evenly (except for rounding). - // We do this by reducing remaining the # of types and damage every loop. - var remainingTypes = group.DamageTypes.Count; - var remainingDamage = entry.Value; - foreach (var damageType in group.DamageTypes) - { - var damage = remainingDamage / FixedPoint2.New(remainingTypes); - if (!dict.TryAdd(damageType, damage)) - { - // Key already exists, add values - dict[damageType] += damage; - } - remainingDamage -= damage; - remainingTypes -= 1; - } - } - - return dict; - } -} diff --git a/Content.Shared/Damage/Prototypes/DamageGroupPrototype.cs b/Content.Shared/Damage/Prototypes/DamageGroupPrototype.cs index facdcce0e87..c19f14ea19a 100644 --- a/Content.Shared/Damage/Prototypes/DamageGroupPrototype.cs +++ b/Content.Shared/Damage/Prototypes/DamageGroupPrototype.cs @@ -11,6 +11,7 @@ namespace Content.Shared.Damage.Prototypes /// to change/get/set damage in a . /// [Prototype(2)] + [Obsolete("Do not rely on DamageGroupPrototype for anything besides grouping logically similar damage in UIs")] public sealed partial class DamageGroupPrototype : IPrototype { [IdDataField] public string ID { get; private set; } = default!; diff --git a/Content.Shared/Damage/Systems/DamageableSystem.API.cs b/Content.Shared/Damage/Systems/DamageableSystem.API.cs index e08e742b411..ff56c1affcb 100644 --- a/Content.Shared/Damage/Systems/DamageableSystem.API.cs +++ b/Content.Shared/Damage/Systems/DamageableSystem.API.cs @@ -8,6 +8,15 @@ namespace Content.Shared.Damage.Systems; public sealed partial class DamageableSystem { + /// If the damage container can take the given damage type + private bool SupportsType(ProtoId? container, ProtoId type) + { + if (container is null) + return true; + + return _supportedTypesByContainer[container.Value].Contains(type); + } + /// /// Directly sets the damage in a damageable component. /// This method keeps the damage types supported by the DamageContainerPrototype in the component. @@ -25,30 +34,15 @@ public void SetDamage(Entity ent, DamageSpecifier damage) foreach (var type in ent.Comp.Damage.DamageDict.Keys) { - if (damage.DamageDict.TryGetValue(type, out var value)) - ent.Comp.Damage.DamageDict[type] = value; - else - ent.Comp.Damage.DamageDict[type] = 0; + if (!damage.DamageDict.ContainsKey(type)) + ent.Comp.Damage.DamageDict.Remove(type); } - OnEntityDamageChanged((ent, ent.Comp)); - } - - /// - /// Directly sets the damage specifier of a damageable component. - /// This will overwrite the complete damage dict, meaning it will bulldoze the supported damage types. - /// - /// - /// This may break persistance as the supported types are reset in case the component is initialized again. - /// So this only makes sense if you also change the DamageContainerPrototype in the component at the same time. - /// Only use this method if you know what you are doing. - /// - public void SetDamageSpecifier(Entity ent, DamageSpecifier damage) - { - if (!_damageableQuery.Resolve(ent, ref ent.Comp, false)) - return; - - ent.Comp.Damage = damage; + foreach (var (type, amount) in damage.DamageDict) + { + if (SupportsType(ent.Comp.DamageContainerID, type)) + ent.Comp.Damage.DamageDict[type] = amount; + } OnEntityDamageChanged((ent, ent.Comp)); } @@ -167,10 +161,10 @@ public DamageSpecifier ChangeDamage( var dict = ent.Comp.Damage.DamageDict; foreach (var (type, value) in damage.DamageDict) { - // CollectionsMarshal my beloved. - if (!dict.TryGetValue(type, out var oldValue)) + if (!SupportsType(ent.Comp.DamageContainerID, type)) continue; + var oldValue = dict.GetValueOrDefault(type); var newValue = FixedPoint2.Max(FixedPoint2.Zero, oldValue + value); if (newValue == oldValue) continue; diff --git a/Content.Shared/Damage/Systems/DamageableSystem.Events.cs b/Content.Shared/Damage/Systems/DamageableSystem.Events.cs index 32c67fd0c2c..78b00f4d56d 100644 --- a/Content.Shared/Damage/Systems/DamageableSystem.Events.cs +++ b/Content.Shared/Damage/Systems/DamageableSystem.Events.cs @@ -6,6 +6,7 @@ using Content.Shared.Radiation.Events; using Content.Shared.Rejuvenate; using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; namespace Content.Shared.Damage.Systems; @@ -13,11 +14,13 @@ public sealed partial class DamageableSystem { public override void Initialize() { + RebuildContainerCache(); + + SubscribeLocalEvent(OnPrototypesReloaded); SubscribeLocalEvent(DamageableInit); - SubscribeLocalEvent(DamageableHandleState); - SubscribeLocalEvent(DamageableGetState); SubscribeLocalEvent(OnIrradiated); SubscribeLocalEvent(OnRejuvenate); + SubscribeLocalEvent(OnAfterAutoHandleState); _appearanceQuery = GetEntityQuery(); _damageableQuery = GetEntityQuery(); @@ -119,41 +122,49 @@ public override void Initialize() ); } - /// - /// Initialize a damageable component - /// - private void DamageableInit(Entity ent, ref ComponentInit _) + private void OnPrototypesReloaded(PrototypesReloadedEventArgs ev) { - if ( - ent.Comp.DamageContainerID is null || - !_prototypeManager.Resolve(ent.Comp.DamageContainerID, out var damageContainerPrototype) - ) - { - // No DamageContainerPrototype was given. So we will allow the container to support all damage types - foreach (var type in _prototypeManager.EnumeratePrototypes()) - { - ent.Comp.Damage.DamageDict.TryAdd(type.ID, FixedPoint2.Zero); - } - } - else + if (!ev.WasModified() && !ev.WasModified()) + return; + + RebuildContainerCache(); + } + + private void RebuildContainerCache() + { + _supportedTypesByContainer.Clear(); + + foreach (var proto in _prototypeManager.EnumeratePrototypes()) { - // Initialize damage dictionary, using the types and groups from the damage - // container prototype - foreach (var type in damageContainerPrototype.SupportedTypes) + var set = new HashSet>(); + _supportedTypesByContainer[proto.ID] = set; + + foreach (var type in proto.SupportedTypes) { - ent.Comp.Damage.DamageDict.TryAdd(type, FixedPoint2.Zero); + set.Add(type); } - foreach (var groupId in damageContainerPrototype.SupportedGroups) + foreach (var groupId in proto.SupportedGroups) { var group = _prototypeManager.Index(groupId); foreach (var type in group.DamageTypes) { - ent.Comp.Damage.DamageDict.TryAdd(type, FixedPoint2.Zero); + set.Add(type); } } } + } + private void OnAfterAutoHandleState(Entity ent, ref AfterAutoHandleStateEvent args) + { + OnEntityDamageChanged(ent); + } + + /// + /// Initialize a damageable component + /// + private void DamageableInit(Entity ent, ref ComponentInit _) + { ent.Comp.Damage.GetDamagePerGroup(_prototypeManager, ent.Comp.DamagePerGroup); ent.Comp.TotalDamage = ent.Comp.Damage.GetTotal(); } @@ -179,28 +190,6 @@ private void OnRejuvenate(Entity ent, ref RejuvenateEvent a ClearAllDamage(ent.AsNullable()); _mobThreshold.SetAllowRevives(ent, false); } - - private void DamageableHandleState(Entity ent, ref ComponentHandleState args) - { - if (args.Current is not DamageableComponentState state) - return; - - ent.Comp.DamageContainerID = state.DamageContainerId; - ent.Comp.DamageModifierSetId = state.ModifierSetId; - ent.Comp.HealthBarThreshold = state.HealthBarThreshold; - - // Has the damage actually changed? - DamageSpecifier newDamage = new() { DamageDict = new Dictionary(state.DamageDict) }; - var delta = newDamage - ent.Comp.Damage; - delta.TrimZeros(); - - if (delta.Empty) - return; - - ent.Comp.Damage = newDamage; - - OnEntityDamageChanged(ent, delta); - } } /// diff --git a/Content.Shared/Damage/Systems/DamageableSystem.cs b/Content.Shared/Damage/Systems/DamageableSystem.cs index 17d14679fbd..8743ec37520 100644 --- a/Content.Shared/Damage/Systems/DamageableSystem.cs +++ b/Content.Shared/Damage/Systems/DamageableSystem.cs @@ -17,7 +17,6 @@ public sealed partial class DamageableSystem : EntitySystem { [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; - [Dependency] private readonly INetManager _netMan = default!; [Dependency] private readonly MobThresholdSystem _mobThreshold = default!; [Dependency] private readonly IConfigurationManager _config = default!; [Dependency] private readonly SharedChemistryGuideDataSystem _chemistryGuideData = default!; @@ -38,6 +37,8 @@ public sealed partial class DamageableSystem : EntitySystem public float UniversalTopicalsHealModifier { get; private set; } = 1f; public float UniversalMobDamageModifier { get; private set; } = 1f; + private Dictionary, HashSet>> _supportedTypesByContainer = new(); + /// /// If the damage in a DamageableComponent was changed this function should be called. /// @@ -70,31 +71,6 @@ private void OnEntityDamageChanged( // byref struct event. RaiseLocalEvent(ent, new DamageChangedEvent(ent.Comp, damageDelta, interruptsDoAfters, origin)); } - private void DamageableGetState(Entity ent, ref ComponentGetState args) - { - if (_netMan.IsServer) - { - args.State = new DamageableComponentState( - ent.Comp.Damage.DamageDict, - ent.Comp.DamageContainerID, - ent.Comp.DamageModifierSetId, - ent.Comp.HealthBarThreshold - ); - // TODO BODY SYSTEM pass damage onto body system - // BOBBY WHEN? 😭 - // BOBBY SOON 🫡 - - return; - } - - // avoid mispredicting damage on newly spawned entities. - args.State = new DamageableComponentState( - ent.Comp.Damage.DamageDict.ShallowClone(), - ent.Comp.DamageContainerID, - ent.Comp.DamageModifierSetId, - ent.Comp.HealthBarThreshold - ); - } /// /// Goes through an entity damage's and saves them inside a dictionary if the value is higher than 0 diff --git a/Content.Shared/Destructible/Triggers/DamageGroupTrigger.cs b/Content.Shared/Destructible/Triggers/DamageGroupTrigger.cs index c1add2e891f..11c78fbd1ee 100644 --- a/Content.Shared/Destructible/Triggers/DamageGroupTrigger.cs +++ b/Content.Shared/Destructible/Triggers/DamageGroupTrigger.cs @@ -28,6 +28,6 @@ public sealed partial class DamageGroupTrigger : IThresholdTrigger public bool Reached(Entity damageable, SharedDestructibleSystem system) { - return damageable.Comp.DamagePerGroup[DamageGroup] >= Damage; + return damageable.Comp.DamagePerGroup.GetValueOrDefault(DamageGroup) >= Damage; } } diff --git a/Content.Shared/EntityConditions/Conditions/DamageGroupEntityConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/DamageGroupEntityConditionSystem.cs index 3691039189e..0cfa4dedca3 100644 --- a/Content.Shared/EntityConditions/Conditions/DamageGroupEntityConditionSystem.cs +++ b/Content.Shared/EntityConditions/Conditions/DamageGroupEntityConditionSystem.cs @@ -13,7 +13,7 @@ public sealed partial class DamageGroupEntityConditionSystem : EntityConditionSy { protected override void Condition(Entity entity, ref EntityConditionEvent args) { - var value = entity.Comp.DamagePerGroup[args.Condition.DamageGroup]; + var value = entity.Comp.DamagePerGroup.GetValueOrDefault(args.Condition.DamageGroup); args.Result = value >= args.Condition.Min && value <= args.Condition.Max; } } diff --git a/Content.Shared/Kitchen/Components/KitchenSpikeComponent.cs b/Content.Shared/Kitchen/Components/KitchenSpikeComponent.cs index b4fdc5ed3cc..56bda116a11 100644 --- a/Content.Shared/Kitchen/Components/KitchenSpikeComponent.cs +++ b/Content.Shared/Kitchen/Components/KitchenSpikeComponent.cs @@ -58,7 +58,7 @@ public sealed partial class KitchenSpikeComponent : Component [DataField, AutoNetworkedField] public DamageSpecifier SpikeDamage = new() { - DamageDict = new Dictionary + DamageDict = new() { { "Piercing", 10 }, }, @@ -70,7 +70,7 @@ public sealed partial class KitchenSpikeComponent : Component [DataField, AutoNetworkedField] public DamageSpecifier ButcherDamage = new() { - DamageDict = new Dictionary + DamageDict = new() { { "Slash", 20 }, }, @@ -82,7 +82,7 @@ public sealed partial class KitchenSpikeComponent : Component [DataField, AutoNetworkedField] public DamageSpecifier TimeDamage = new() { - DamageDict = new Dictionary + DamageDict = new() { { "Blunt", 1 }, // Mobs are only gibbed from blunt (at least for now). }, diff --git a/Resources/Prototypes/Body/Species/skeleton.yml b/Resources/Prototypes/Body/Species/skeleton.yml index 78f97cc4492..8372e4923d3 100644 --- a/Resources/Prototypes/Body/Species/skeleton.yml +++ b/Resources/Prototypes/Body/Species/skeleton.yml @@ -136,12 +136,11 @@ # even if it's a meme - I did research methods: [ Touch ] effects: # TODO: when magic is around - make a milk transformation to a skeleton monster - - !type:HealthChange - damage: - groups: # these groups are the only 3 possible ways to damage a skeleton. numerical values obviously up to discussion - Burn: -1 - Brute: -0.75 - Metaphysical: -2 # Gameplay: skeletons need some way to heal holy damage. Lore: milk is an unholy liquid that shuns the light of god. (/j) + - !type:EvenHealthChange + damage: # these groups are the only 3 possible ways to damage a skeleton. numerical values obviously up to discussion + Burn: -1 + Brute: -0.75 + Metaphysical: -2 # Gameplay: skeletons need some way to heal holy damage. Lore: milk is an unholy liquid that shuns the light of god. (/j) - !type:PopupMessage type: Local visualType: Large diff --git a/Resources/Prototypes/Body/Species/slime.yml b/Resources/Prototypes/Body/Species/slime.yml index b670c067b92..1d8e946844e 100644 --- a/Resources/Prototypes/Body/Species/slime.yml +++ b/Resources/Prototypes/Body/Species/slime.yml @@ -120,8 +120,9 @@ damage: types: Heat: -0.14 - groups: - Brute: -0.14 + Blunt: -0.05 + Piercing: -0.05 + Slash: -0.05 - type: DamageVisuals damageOverlayGroups: Brute: diff --git a/Resources/Prototypes/Body/Species/vox.yml b/Resources/Prototypes/Body/Species/vox.yml index 11f6989a5a7..6befa314193 100644 --- a/Resources/Prototypes/Body/Species/vox.yml +++ b/Resources/Prototypes/Body/Species/vox.yml @@ -229,8 +229,9 @@ types: Heat: -0.07 Poison: -0.2 # needs to be less than the PendingZombieComponent does or they never become zombies by the disease. - groups: - Brute: -0.07 + Blunt: -0.02 + Piercing: -0.02 + Slash: -0.02 - type: DamageVisuals damageOverlayGroups: Brute: diff --git a/Resources/Prototypes/Body/species_base.yml b/Resources/Prototypes/Body/species_base.yml index 47810b6bfa5..74663cc814d 100644 --- a/Resources/Prototypes/Body/species_base.yml +++ b/Resources/Prototypes/Body/species_base.yml @@ -186,8 +186,9 @@ damage: types: Heat: -0.07 - groups: - Brute: -0.07 + Blunt: -0.05 + Piercing: -0.05 + Slash: -0.05 - type: Fingerprint - type: Blindable - type: Temperature diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index b57dd64636e..00344c93834 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -2424,8 +2424,8 @@ angle: 0 animation: WeaponArcBite damage: - groups: - Brute: 5 + types: + Piercing: 5 - type: Item size: Normal sprite: Mobs/Animals/grenadepenguin.rsi @@ -2592,9 +2592,12 @@ damage: types: Poison: -0.07 - groups: - Brute: -0.07 - Burn: -0.07 + Blunt: -0.03 + Slash: -0.03 + Piercing: -0.03 + Heat: -0.03 + Cold: -0.03 + Shock: -0.03 - type: entity parent: MobSpiderBase diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml b/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml index e49e9fe3220..45ff0ea7553 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml @@ -102,26 +102,23 @@ - reagents: [ Water ] methods: [ Touch ] effects: - - !type:HealthChange + - !type:EvenHealthChange damage: - groups: - Brute: -0.15 + Brute: -0.15 - reagents: [ Blood ] methods: [ Touch ] effects: - - !type:HealthChange + - !type:EvenHealthChange damage: - groups: - Brute: -0.25 - Burn: -0.25 + Brute: -0.25 + Burn: -0.25 - reagents: [ RobustHarvest ] methods: [ Touch ] effects: - - !type:HealthChange + - !type:EvenHealthChange damage: - groups: - Brute: -1 - Burn: -1 + Brute: -1 + Burn: -1 - reagents: [ WeedKiller, PlantBGone ] methods: [ Touch ] effects: @@ -202,8 +199,10 @@ - type: MeleeWeapon hidden: true damage: - groups: - Brute: 9 + types: + Blunt: 3 + Piercing: 3 + Slash: 3 animation: WeaponArcBite - type: Climbing - type: NameIdentifier diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml b/Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml index 653704cfbb5..0a35ebf5e56 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/spacetick.yml @@ -77,8 +77,8 @@ angle: 0 animation: WeaponArcBite damage: - groups: - Brute: 2 + types: + Piercing: 2 - type: SolutionContainerManager solutions: melee: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml b/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml index 33653ed2077..29793609e1d 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/xeno.yml @@ -78,8 +78,8 @@ collection: AlienClaw animation: WeaponArcBite damage: - groups: - Brute: 6 + types: + Piercing: 6 - type: DamageStateVisuals states: Alive: @@ -176,8 +176,8 @@ 40: 0.7 - type: MeleeWeapon damage: - groups: - Brute: 6 + types: + Slash: 6 - type: MovementSpeedModifier baseSprintSpeed: 4 - type: Fixtures @@ -214,8 +214,8 @@ - type: MovementSpeedModifier - type: MeleeWeapon damage: - groups: - Brute: 12 + types: + Slash: 12 - type: Fixtures fixtures: fix1: @@ -251,8 +251,8 @@ baseSprintSpeed: 4 - type: MeleeWeapon damage: - groups: - Brute: 10 + types: + Slash: 10 - type: SlowOnDamage speedModifierThresholds: 50: 0.7 @@ -284,8 +284,8 @@ baseSprintSpeed: 6.0 - type: MeleeWeapon damage: - groups: - Brute: 5 + types: + Slash: 5 - type: Fixtures fixtures: fix1: @@ -506,8 +506,8 @@ collection: AlienClaw animation: WeaponArcBite damage: - groups: - Brute: 5 + types: + Slash: 5 - type: DamageStateVisuals states: Alive: diff --git a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml index 2aa28bc0890..57b682caea9 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml @@ -229,8 +229,8 @@ amount: 1 - type: MeleeWeapon damage: - groups: - Brute: 12 + types: + Piercing: 12 - type: entity parent: BaseAction diff --git a/Resources/Prototypes/Entities/Mobs/base.yml b/Resources/Prototypes/Entities/Mobs/base.yml index bae37a421b6..c09faf40bdb 100644 --- a/Resources/Prototypes/Entities/Mobs/base.yml +++ b/Resources/Prototypes/Entities/Mobs/base.yml @@ -161,8 +161,8 @@ soundHit: collection: MetalThud damage: - groups: - Brute: 5 + types: + Blunt: 5 # Used for mobs that are affected by atmospherics, pressure, and heat - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/bread.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/bread.yml index d9475c9ebea..1913f6b4e1f 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/bread.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/bread.yml @@ -999,8 +999,8 @@ path: /Audio/Animals/dog_bark1.ogg hidden: true damage: - groups: - Brute: 1 + types: + Blunt: 1 - type: entity parent: FoodBreadBase diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/cake.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/cake.yml index be2d04fea1d..9436776d0d8 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/cake.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/cake.yml @@ -1121,8 +1121,8 @@ path: /Audio/Animals/cat_hiss.ogg hidden: true damage: - groups: - Brute: 1 + types: + Blunt: 1 # Suppermatter # I can't figure out where to put this. It kind of acts like a cake I guess? diff --git a/Resources/Prototypes/Entities/Objects/Misc/books.yml b/Resources/Prototypes/Entities/Objects/Misc/books.yml index 0f8450a5e3b..bbcfdbdbe69 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/books.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/books.yml @@ -68,7 +68,7 @@ Blunt: 1 - type: DamageOtherOnHit damage: - types: + types: {} - type: entity id: BookSpaceEncyclopedia diff --git a/Resources/Prototypes/Entities/Objects/Shields/shields.yml b/Resources/Prototypes/Entities/Objects/Shields/shields.yml index c82debbfc98..51aca993f7b 100644 --- a/Resources/Prototypes/Entities/Objects/Shields/shields.yml +++ b/Resources/Prototypes/Entities/Objects/Shields/shields.yml @@ -71,9 +71,10 @@ components: - type: Repairable # Negative values represent healing damage: - groups: - Brute: -60 # 20 of each Brute Type - 20% of a basic shield HP types: + Blunt: -20 + Slash: -20 + Piercing: -20 Heat: -20 fuelCost: 10 # 1/2 of a Welder for a full repair doAfterDelay: 5 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Chapel/bibles.yml b/Resources/Prototypes/Entities/Objects/Specific/Chapel/bibles.yml index 1bb9d103070..0fb3f1a04bc 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Chapel/bibles.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Chapel/bibles.yml @@ -8,13 +8,19 @@ delay: 10.0 - type: Bible damage: - groups: - Brute: -15 - Burn: -15 + types: + Blunt: -5 + Piercing: -5 + Slash: -5 + Heat: -5 + Cold: -5 + Shock: -5 damageOnFail: - groups: - Brute: 15 - Airloss: 15 + types: + Blunt: 5 + Piercing: 5 + Slash: 5 + Asphyxiation: 15 damageOnUntrainedUse: ## What a non-chaplain takes when attempting to heal someone types: Heat: 10 @@ -66,9 +72,11 @@ types: Caustic: 20 ## ~15 dps damageOnFail: - groups: - Brute: 15 - Airloss: 25 + types: + Blunt: 5 + Piercing: 5 + Slash: 5 + Asphyxiation: 25 damageOnUntrainedUse: types: Caustic: 50 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml index 7893dfd646a..c09bef4a3aa 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml @@ -130,8 +130,10 @@ damageContainers: - Biological damage: - groups: - Brute: -15 # 5 for each type in the group + types: + Blunt: -5 + Piercing: -5 + Slash: -5 healingBeginSound: path: "/Audio/Items/Medical/brutepack_begin.ogg" params: @@ -176,8 +178,10 @@ damageContainers: - Biological damage: - groups: - Brute: -30 # 10 for each type in the group + types: + Blunt: -10 + Piercing: -10 + Slash: -10 bloodlossModifier: -10 # a suture should stop ongoing bleeding healingBeginSound: path: "/Audio/Items/Medical/brutepack_begin.ogg" @@ -268,9 +272,8 @@ damageContainers: - Biological damage: - groups: - Brute: 5 # Tourniquets HURT! types: + Blunt: 5 # Tourniquets HURT Asphyxiation: 5 # Essentially Stopping all blood reaching a part of your body bloodlossModifier: -10 # Tourniquets stop bleeding delay: 0.5 @@ -368,10 +371,14 @@ damageContainers: - Biological damage: - groups: # these are all split across multiple types - Brute: -150 - Burn: -150 - Toxin: -150 + types: # these are all split across multiple types + Blunt: -50 + Piercing: -50 + Slash: -50 + Heat: -50 + Cold: -50 + Shock: -50 + Poison: -150 bloodlossModifier: -20 delay: 1 selfHealPenaltyMultiplier: 0 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml index 79fb907a7c3..fd8e5d63344 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml @@ -209,8 +209,8 @@ heldPrefix: improv - type: MeleeWeapon damage: - groups: - Brute: 10 + types: + Slash: 10 soundHit: path: /Audio/Weapons/bladeslice.ogg - type: Tool @@ -228,8 +228,8 @@ heldPrefix: electric - type: MeleeWeapon damage: - groups: - Brute: 15 + types: + Slash: 15 soundHit: path: /Audio/Items/drill_hit.ogg - type: Tool diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/magic.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/magic.yml index 30822a024a0..29cb56db7dc 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/magic.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/magic.yml @@ -106,8 +106,7 @@ deleteOnCollide: false onlyCollideWhenShot: true damage: - types: - Brute: 0 + types: {} - type: Sprite noRot: true sprite: Structures/Storage/closet.rsi @@ -246,11 +245,18 @@ color: white - type: Projectile damage: - groups: # good enough. Maybe make it call the rejuvenate command later. - Brute: -900 - Burn: -900 - Airloss: -600 - Toxin: -600 + types: # good enough. Maybe make it call the rejuvenate command later. + Asphyxiation: -200 + Bloodloss: -200 + Blunt: -200 + Caustic: -200 + Cold: -200 + Heat: -200 + Piercing: -200 + Poison: -200 + Radiation: -200 + Shock: -200 + Slash: -200 ignoreResistances: true - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/mining.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/mining.yml index cc09a5a3787..85fb02ce85e 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/mining.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/mining.yml @@ -18,14 +18,13 @@ params: volume: -3 damage: - groups: - Brute: 5 + types: + Piercing: 5 - type: Wieldable - type: IncreaseDamageOnWield damage: - groups: - Brute: 10 types: + Piercing: 10 Structural: 30 - type: Item size: Normal @@ -62,9 +61,8 @@ path: "/Audio/Items/drill_hit.ogg" attackRate: 4 damage: - groups: - Brute: 3 types: + Piercing: 3 Structural: 15 - type: entity @@ -84,9 +82,8 @@ path: "/Audio/Items/drill_hit.ogg" attackRate: 4 damage: - groups: - Brute: 6 types: + Piercing: 6 Structural: 30 @@ -132,8 +129,10 @@ delay: 0.9 - type: LeechOnMarker leech: - groups: - Brute: -6 + types: + Blunt: -2 + Slash: -2 + Piercing: -2 - type: Gun soundGunshot: /Audio/Weapons/plasma_cutter.ogg fireRate: 1 @@ -238,8 +237,10 @@ count: 1 - type: LeechOnMarker leech: - groups: - Brute: -21 + types: + Blunt: -5 + Piercing: -5 + Slash: -5 - type: Tag tags: - Pickaxe diff --git a/Resources/Prototypes/NPCs/utility_queries.yml b/Resources/Prototypes/NPCs/utility_queries.yml index 49b085b29ab..bb2bb08cc42 100644 --- a/Resources/Prototypes/NPCs/utility_queries.yml +++ b/Resources/Prototypes/NPCs/utility_queries.yml @@ -174,7 +174,7 @@ # why does Flammable even have a required damage damage: types: - burn: 0 + Heat: 0 considerations: - !type:TargetDistanceCon curve: !type:PresetCurve diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml index 538a83e2c23..ad2e95f147f 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml @@ -167,7 +167,7 @@ damage: types: Poison: 0.02 - - !type:HealthChange + - !type:EvenHealthChange conditions: - !type:ReagentCondition reagent: Ethanol @@ -175,8 +175,7 @@ - !type:MetabolizerTypeCondition type: [ Dwarf ] damage: - groups: - Brute: -0.1 + Brute: -0.1 - !type:Vomit probability: 0.04 conditions: @@ -877,13 +876,12 @@ factor: 2 - !type:SatiateHunger factor: -2 - - !type:HealthChange + - !type:EvenHealthChange damage: - groups: - Burn: -1 - Brute: -1 - Airloss: -1 - Toxin: -1 + Burn: -1 + Brute: -1 + Airloss: -1 + Toxin: -1 - type: reagent id: DriestMartini diff --git a/Resources/Prototypes/Reagents/Consumable/Food/food.yml b/Resources/Prototypes/Reagents/Consumable/Food/food.yml index 1914262a4ed..cb43938adf8 100644 --- a/Resources/Prototypes/Reagents/Consumable/Food/food.yml +++ b/Resources/Prototypes/Reagents/Consumable/Food/food.yml @@ -29,12 +29,11 @@ metabolisms: Metabolites: #This makes it not compete with medicines, a large bonus for something that can heal effects: - - !type:HealthChange + - !type:EvenHealthChange probability: 0.5 damage: - groups: - Brute: -0.5 - Burn: -0.5 + Brute: -0.5 + Burn: -0.5 # Helps you stop bleeding to an extent. - !type:ModifyBleed amount: -0.25 @@ -58,11 +57,10 @@ metabolisms: Metabolites: effects: - - !type:HealthChange + - !type:EvenHealthChange probability: 0.5 damage: - groups: - Brute: -0.4 + Brute: -0.4 - !type:ModifyBloodLevel amount: 1 # weaker than iron but pretty good all things considered - !type:SatiateHunger diff --git a/Resources/Prototypes/Reagents/biological.yml b/Resources/Prototypes/Reagents/biological.yml index 29d4a18f1c0..fcabcadee55 100644 --- a/Resources/Prototypes/Reagents/biological.yml +++ b/Resources/Prototypes/Reagents/biological.yml @@ -25,14 +25,13 @@ - !type:MetabolizerTypeCondition type: [ Human ] inverted: true - - !type:HealthChange + - !type:EvenHealthChange conditions: - !type:MetabolizerTypeCondition type: [ Bloodsucker ] damage: - groups: - Brute: -3 - Burn: -1.25 + Brute: -3 + Burn: -1.25 Bloodstream: # Don't inject someone else's blood into yourself! Your own blood won't actually metabolise. effects: - !type:HealthChange diff --git a/Resources/Prototypes/Reagents/botany.yml b/Resources/Prototypes/Reagents/botany.yml index 7885702a9fb..1b1ae04cd55 100644 --- a/Resources/Prototypes/Reagents/botany.yml +++ b/Resources/Prototypes/Reagents/botany.yml @@ -250,7 +250,7 @@ - !type:ReagentCondition reagent: Ammonia min: 0.25 - - !type:HealthChange + - !type:EvenHealthChange conditions: - !type:MetabolizerTypeCondition type: [ Rat ] @@ -259,11 +259,9 @@ min: 1 ignoreResistances: true damage: - groups: - Brute: -2.5 - Burn: -2.5 - types: - Bloodloss: -5 + Brute: -2.5 + Burn: -2.5 + Airloss: -5 - !type:ModifyBloodLevel amount: 1 conditions: diff --git a/Resources/Prototypes/Reagents/chemicals.yml b/Resources/Prototypes/Reagents/chemicals.yml index b575ad47bd4..36f7e2073f4 100644 --- a/Resources/Prototypes/Reagents/chemicals.yml +++ b/Resources/Prototypes/Reagents/chemicals.yml @@ -209,10 +209,9 @@ metabolisms: Bloodstream: effects: - - !type:HealthChange + - !type:EvenHealthChange damage: - groups: - Brute: -4 + Brute: -4 - !type:GenericStatusEffect key: Adrenaline component: IgnoreSlowOnDamage diff --git a/Resources/Prototypes/Reagents/medicine.yml b/Resources/Prototypes/Reagents/medicine.yml index 597b1013925..782df52a511 100644 --- a/Resources/Prototypes/Reagents/medicine.yml +++ b/Resources/Prototypes/Reagents/medicine.yml @@ -39,8 +39,8 @@ reagent: Dylovene min: 20 damage: - groups: - Brute: 2 + types: + Blunt: 2 - !type:Jitter conditions: - !type:ReagentCondition @@ -133,8 +133,7 @@ damage: types: Radiation: -3 - groups: - Brute: 1.5 + Blunt: 1.5 - type: reagent id: Bicaridine @@ -246,8 +245,7 @@ types: Asphyxiation: 1 Cold: 2 - groups: - Brute: 0.5 + Blunt: 0.5 - !type:Jitter conditions: - !type:ReagentCondition @@ -344,9 +342,17 @@ types: Asphyxiation: -3 Poison: -0.5 - groups: - Brute: -0.5 - Burn: -0.5 + - !type:EvenHealthChange + conditions: + # they gotta be in crit first + - !type:MobStateCondition + mobstate: Critical + - !type:ReagentCondition + reagent: Epinephrine + max: 20 + damage: + Brute: -0.5 + Burn: -0.5 - !type:HealthChange conditions: - !type:ReagentCondition @@ -626,12 +632,10 @@ metabolisms: Bloodstream: effects: - - !type:HealthChange + - !type:EvenHealthChange damage: - groups: - Brute: -3.5 - types: - Asphyxiation: -2.5 + Brute: -1.75 + Airloss: -1 - !type:HealthChange conditions: - !type:ReagentCondition @@ -812,18 +816,14 @@ metabolisms: Bloodstream: effects: - - !type:HealthChange + - !type:EvenHealthChange conditions: - !type:TotalDamageCondition max: 50 damage: - groups: - Brute: -1 - types: - Poison: -0.5 ##Should be about what it was when it healed the toxin group - Heat: -0.33 - Shock: -0.33 - Cold: -0.33 + Brute: -1 + Burn: -1 + Toxin: -0.5 - type: reagent id: Lipozine @@ -887,8 +887,8 @@ min: 0 max: 20 damage: - groups: - Brute: 1.5 + types: + Blunt: 1.5 - !type:EvenHealthChange conditions: - !type:ReagentCondition @@ -902,8 +902,8 @@ reagent: Ultravasculine min: 20 damage: - groups: - Brute: 6 + types: + Blunt: 6 - !type:AdjustReagent conditions: - !type:ReagentCondition diff --git a/Resources/Prototypes/Reagents/narcotics.yml b/Resources/Prototypes/Reagents/narcotics.yml index 2a57cba68b8..396bcacf99a 100644 --- a/Resources/Prototypes/Reagents/narcotics.yml +++ b/Resources/Prototypes/Reagents/narcotics.yml @@ -17,7 +17,7 @@ damage: types: Poison: 0.55 - Blunt: 0.5 + Blunt: 1.1 # meant to be slightly more than tricordrazine heals # OD - !type:HealthChange conditions: diff --git a/Resources/Prototypes/Reagents/toxins.yml b/Resources/Prototypes/Reagents/toxins.yml index 103c284a671..670baa829bd 100644 --- a/Resources/Prototypes/Reagents/toxins.yml +++ b/Resources/Prototypes/Reagents/toxins.yml @@ -332,8 +332,9 @@ effects: - !type:HealthChange damage: - groups: - Airloss: 10 + types: + Asphyxiation: 5 + Bloodloss: 5 - type: reagent id: MindbreakerToxin @@ -368,8 +369,8 @@ - !type:HealthChange probability: 0.1 damage: - groups: - Brute: 2 + types: + Blunt: 2 # todo: cough, sneeze - !type:HealthChange conditions: @@ -377,10 +378,9 @@ reagent: Histamine min: 45 damage: - groups: - Brute: 2 - Airloss: 2 types: + Blunt: 2 + Asphyxiation: 2 Poison: 2 - !type:PopupMessage type: Local @@ -660,8 +660,9 @@ sprintSpeedModifier: 0.8 - !type:HealthChange damage: - groups: - Airloss: 2 + types: + Asphyxiation: 1 + Bloodloss: 1 - type: reagent id: Tazinide diff --git a/Resources/Prototypes/XenoArch/effects.yml b/Resources/Prototypes/XenoArch/effects.yml index fb0d845bd81..0ceb48401a3 100644 --- a/Resources/Prototypes/XenoArch/effects.yml +++ b/Resources/Prototypes/XenoArch/effects.yml @@ -1256,9 +1256,13 @@ components: - MobState damage: - groups: - Brute: -300 - Burn: -300 + types: + Blunt: -100 + Piercing: -100 + Slash: -100 + Heat: -100 + Cold: -100 + Shock: -100 - type: entity id: XenoArtifactTesla From d21e95e6815e2492260bbb01b8ad48a4b157fd00 Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 27 Feb 2026 06:34:52 +0000 Subject: [PATCH 415/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index faca00b3049..f2c0e87c23c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Huaqas, Davyei - changes: - - message: 3 new Holy Books have been added to the Chaplain's loadout. - type: Add - id: 9038 - time: '2025-10-07T07:39:37.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39181 - author: Huaqas changes: - message: The Tanakh and Satanic bibles have been removed. @@ -3989,3 +3982,11 @@ id: 9548 time: '2026-02-27T00:08:28.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42909 +- author: sowelipililimute + changes: + - message: Internal code changes to damage handling may result in slightly different + numbers for some medicines and/or some attacks. + type: Tweak + id: 9549 + time: '2026-02-27T06:33:44.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43049 From f9f4e09af2eb9afa215860cf4bddc74e4c6c0bbc Mon Sep 17 00:00:00 2001 From: Patrik Caes-Sayrs Date: Fri, 27 Feb 2026 08:49:19 -0700 Subject: [PATCH 416/603] Fixed redundant bar sign windows (#42960) Fixed redundant bar signs * Fixes the extra bar sign popups bug introduced in #42364 by making BarSignBUI use CreateWindow * Fixes bar signs placed from Entity Spawn Window --- .../BarSign/Ui/BarSignBoundUserInterface.cs | 17 ++++++----- Content.Client/BarSign/Ui/BarSignMenu.xaml.cs | 29 +++++++------------ Content.Shared/BarSign/BarSignSystem.cs | 9 +++--- 3 files changed, 24 insertions(+), 31 deletions(-) diff --git a/Content.Client/BarSign/Ui/BarSignBoundUserInterface.cs b/Content.Client/BarSign/Ui/BarSignBoundUserInterface.cs index 8265877edf8..62af75b929d 100644 --- a/Content.Client/BarSign/Ui/BarSignBoundUserInterface.cs +++ b/Content.Client/BarSign/Ui/BarSignBoundUserInterface.cs @@ -1,6 +1,7 @@ using System.Linq; using Content.Shared.BarSign; using JetBrains.Annotations; +using Robust.Client.UserInterface; using Robust.Shared.Prototypes; namespace Content.Client.BarSign.Ui; @@ -16,13 +17,12 @@ protected override void Open() { base.Open(); - var sign = EntMan.GetComponentOrNull(Owner)?.Current is { } current - ? _prototype.Index(current) - : null; var allSigns = BarSignSystem.GetAllBarSigns(_prototype) .OrderBy(p => Loc.GetString(p.Name)) .ToList(); - _menu = new(sign, allSigns); + + _menu = this.CreateWindow(); + _menu.LoadSigns(allSigns); _menu.OnSignSelected += id => { @@ -30,16 +30,17 @@ protected override void Open() }; _menu.OnClose += Close; - _menu.OpenCentered(); + _menu.OpenToLeft(); } public override void Update() { - if (!EntMan.TryGetComponent(Owner, out var signComp)) + if (!EntMan.TryGetComponent(Owner, out var signComp) + || !_prototype.Resolve(signComp.Current, out var signPrototype)) return; - if (_prototype.Resolve(signComp.Current, out var signPrototype)) - _menu?.UpdateState(signPrototype); + _menu?.UpdateState(signPrototype); } + } diff --git a/Content.Client/BarSign/Ui/BarSignMenu.xaml.cs b/Content.Client/BarSign/Ui/BarSignMenu.xaml.cs index a9333339b70..0fbd282da8b 100644 --- a/Content.Client/BarSign/Ui/BarSignMenu.xaml.cs +++ b/Content.Client/BarSign/Ui/BarSignMenu.xaml.cs @@ -8,23 +8,13 @@ namespace Content.Client.BarSign.Ui; [GenerateTypedNameReferences] public sealed partial class BarSignMenu : FancyWindow { - private string? _currentId; - - private readonly List _cachedPrototypes = new(); + private List _cachedPrototypes = new(); public event Action? OnSignSelected; - public BarSignMenu(BarSignPrototype? currentSign, List signs) + public BarSignMenu() { RobustXamlLoader.Load(this); - _currentId = currentSign?.ID; - - _cachedPrototypes.Clear(); - _cachedPrototypes = signs; - foreach (var proto in _cachedPrototypes) - { - SignOptions.AddItem(Loc.GetString(proto.Name)); - } SignOptions.OnItemSelected += idx => { @@ -32,18 +22,21 @@ public BarSignMenu(BarSignPrototype? currentSign, List signs) SignOptions.SelectId(idx.Id); }; - if (currentSign != null) + } + + public void LoadSigns(List signs) + { + _cachedPrototypes.Clear(); + _cachedPrototypes = signs; + + foreach (var proto in _cachedPrototypes) { - var idx = _cachedPrototypes.IndexOf(currentSign); - SignOptions.TrySelectId(idx); + SignOptions.AddItem(Loc.GetString(proto.Name)); } } public void UpdateState(BarSignPrototype newSign) { - if (_currentId != null && newSign.ID == _currentId) - return; - _currentId = newSign.ID; var idx = _cachedPrototypes.IndexOf(newSign); SignOptions.TrySelectId(idx); } diff --git a/Content.Shared/BarSign/BarSignSystem.cs b/Content.Shared/BarSign/BarSignSystem.cs index a5d1ab7221e..042120663e1 100644 --- a/Content.Shared/BarSign/BarSignSystem.cs +++ b/Content.Shared/BarSign/BarSignSystem.cs @@ -31,10 +31,12 @@ public override void Initialize() private void OnMapInit(Entity ent, ref MapInitEvent args) { - if (ent.Comp.Current != null) + BarSignPrototype? newPrototype; + if (ent.Comp.Current is null) + newPrototype = _random.Pick(GetAllBarSigns(_prototypeManager)); + else if (!_prototypeManager.Resolve(ent.Comp.Current, out newPrototype)) return; - var newPrototype = _random.Pick(GetAllBarSigns(_prototypeManager)); SetBarSign(ent, newPrototype); } @@ -77,9 +79,6 @@ private void OnBoundUIAttempt(Entity ent, ref BoundUserInterfa /// public void SetBarSign(Entity ent, BarSignPrototype newPrototype) { - if (ent.Comp.Current == newPrototype.ID) - return; - if (HasComp(ent)) return; From e295d0adb362e6c7e0fc357c52091f92a380d0a7 Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 27 Feb 2026 16:03:12 +0000 Subject: [PATCH 417/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index f2c0e87c23c..c36e8b3e30a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Huaqas - changes: - - message: The Tanakh and Satanic bibles have been removed. - type: Remove - id: 9039 - time: '2025-10-07T09:14:49.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39698 - author: jessicamaybe changes: - message: Gorillas can now pull objects. @@ -3990,3 +3983,10 @@ id: 9549 time: '2026-02-27T06:33:44.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43049 +- author: pcaessayrs + changes: + - message: Fixed bar sign UI not closing correctly + type: Fix + id: 9550 + time: '2026-02-27T16:02:04.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42960 From 76741dc22b86df108f1e67ede78ccb886b5a328c Mon Sep 17 00:00:00 2001 From: pathetic meowmeow Date: Fri, 27 Feb 2026 11:22:45 -0500 Subject: [PATCH 418/603] Make DamageableComponent manually networked again (#43054) --- .../Damage/Components/DamageableComponent.cs | 24 +++++++++--- .../Damage/Systems/DamageableSystem.Events.cs | 39 ++++++++++++++++--- .../Damage/Systems/DamageableSystem.cs | 1 + 3 files changed, 53 insertions(+), 11 deletions(-) diff --git a/Content.Shared/Damage/Components/DamageableComponent.cs b/Content.Shared/Damage/Components/DamageableComponent.cs index 428d2aa9cd4..00fbcda5617 100644 --- a/Content.Shared/Damage/Components/DamageableComponent.cs +++ b/Content.Shared/Damage/Components/DamageableComponent.cs @@ -17,7 +17,7 @@ namespace Content.Shared.Damage.Components; /// may also have resistances to certain damage types, defined via a . /// [RegisterComponent] -[NetworkedComponent, AutoGenerateComponentState(true)] +[NetworkedComponent] [Access(typeof(DamageableSystem), Other = AccessPermissions.ReadExecute)] public sealed partial class DamageableComponent : Component { @@ -25,7 +25,7 @@ public sealed partial class DamageableComponent : Component /// This specifies what damage types are supported by this component. /// If null, all damage types will be supported. /// - [DataField("damageContainer"), AutoNetworkedField] + [DataField("damageContainer")] // ReSharper disable once InconsistentNaming - This is wrong but fixing it is potentially annoying for downstreams. public ProtoId? DamageContainerID; @@ -37,7 +37,7 @@ public sealed partial class DamageableComponent : Component /// Though DamageModifierSets can be deserialized directly, we only want to use the prototype version here /// to reduce duplication. /// - [DataField("damageModifierSet"), AutoNetworkedField] + [DataField("damageModifierSet")] public ProtoId? DamageModifierSetId; /// @@ -46,7 +46,7 @@ public sealed partial class DamageableComponent : Component /// /// If this data-field is specified, this allows damageable components to be initialized with non-zero damage. /// - [DataField, AutoNetworkedField] + [DataField] public DamageSpecifier Damage = new(); /// @@ -87,6 +87,20 @@ public sealed partial class DamageableComponent : Component [DataField] public ProtoId RottingIcon = "HealthIconRotting"; - [DataField, AutoNetworkedField] + [DataField] public FixedPoint2? HealthBarThreshold; } + +[Serializable, NetSerializable] +public sealed class DamageableComponentState( + DamageSpecifier damage, + ProtoId? damageContainerId, + ProtoId? modifierSetId, + FixedPoint2? healthBarThreshold) + : ComponentState +{ + public readonly DamageSpecifier Damage = damage; + public readonly ProtoId? DamageContainerId = damageContainerId; + public readonly ProtoId? ModifierSetId = modifierSetId; + public readonly FixedPoint2? HealthBarThreshold = healthBarThreshold; +} diff --git a/Content.Shared/Damage/Systems/DamageableSystem.Events.cs b/Content.Shared/Damage/Systems/DamageableSystem.Events.cs index 78b00f4d56d..fcb97763db0 100644 --- a/Content.Shared/Damage/Systems/DamageableSystem.Events.cs +++ b/Content.Shared/Damage/Systems/DamageableSystem.Events.cs @@ -20,7 +20,8 @@ public override void Initialize() SubscribeLocalEvent(DamageableInit); SubscribeLocalEvent(OnIrradiated); SubscribeLocalEvent(OnRejuvenate); - SubscribeLocalEvent(OnAfterAutoHandleState); + SubscribeLocalEvent(DamageableHandleState); + SubscribeLocalEvent(DamageableGetState); _appearanceQuery = GetEntityQuery(); _damageableQuery = GetEntityQuery(); @@ -155,11 +156,6 @@ private void RebuildContainerCache() } } - private void OnAfterAutoHandleState(Entity ent, ref AfterAutoHandleStateEvent args) - { - OnEntityDamageChanged(ent); - } - /// /// Initialize a damageable component /// @@ -190,6 +186,37 @@ private void OnRejuvenate(Entity ent, ref RejuvenateEvent a ClearAllDamage(ent.AsNullable()); _mobThreshold.SetAllowRevives(ent, false); } + + private void DamageableGetState(Entity ent, ref ComponentGetState args) + { + args.State = new DamageableComponentState( + _netMan.IsServer ? ent.Comp.Damage : ent.Comp.Damage.Clone(), + ent.Comp.DamageContainerID, + ent.Comp.DamageModifierSetId, + ent.Comp.HealthBarThreshold + ); + } + + private void DamageableHandleState(Entity ent, ref ComponentHandleState args) + { + if (args.Current is not DamageableComponentState state) + return; + + ent.Comp.DamageContainerID = state.DamageContainerId; + ent.Comp.DamageModifierSetId = state.ModifierSetId; + ent.Comp.HealthBarThreshold = state.HealthBarThreshold; + + // Has the damage actually changed? + var delta = state.Damage - ent.Comp.Damage; + delta.TrimZeros(); + + if (delta.Empty) + return; + + ent.Comp.Damage = state.Damage; + + OnEntityDamageChanged(ent, delta); + } } /// diff --git a/Content.Shared/Damage/Systems/DamageableSystem.cs b/Content.Shared/Damage/Systems/DamageableSystem.cs index 8743ec37520..2d707568f0e 100644 --- a/Content.Shared/Damage/Systems/DamageableSystem.cs +++ b/Content.Shared/Damage/Systems/DamageableSystem.cs @@ -17,6 +17,7 @@ public sealed partial class DamageableSystem : EntitySystem { [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly INetManager _netMan = default!; [Dependency] private readonly MobThresholdSystem _mobThreshold = default!; [Dependency] private readonly IConfigurationManager _config = default!; [Dependency] private readonly SharedChemistryGuideDataSystem _chemistryGuideData = default!; From a3c6d0ddff919bd1388cc037a7111886e2382417 Mon Sep 17 00:00:00 2001 From: pathetic meowmeow Date: Fri, 27 Feb 2026 11:48:24 -0500 Subject: [PATCH 419/603] Make sure vox passively regenerate at the same pace as everyone else (#43055) --- Resources/Prototypes/Body/Species/vox.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Resources/Prototypes/Body/Species/vox.yml b/Resources/Prototypes/Body/Species/vox.yml index 6befa314193..92c98ea9cbf 100644 --- a/Resources/Prototypes/Body/Species/vox.yml +++ b/Resources/Prototypes/Body/Species/vox.yml @@ -228,10 +228,10 @@ damage: types: Heat: -0.07 + Blunt: -0.05 + Piercing: -0.05 + Slash: -0.05 Poison: -0.2 # needs to be less than the PendingZombieComponent does or they never become zombies by the disease. - Blunt: -0.02 - Piercing: -0.02 - Slash: -0.02 - type: DamageVisuals damageOverlayGroups: Brute: From 2484ec7f360312b9a21b767d16eeeba47ab4d318 Mon Sep 17 00:00:00 2001 From: Samuka <47865393+Samuka-C@users.noreply.github.com> Date: Fri, 27 Feb 2026 17:15:53 -0300 Subject: [PATCH 420/603] Dynamic feedback popup (#43021) * add rule filter to feedback popup * fix the dependency * simplify * remove this * deny popups with rules * missed here * new parameter * the server handles the specific feedback prototypes * fix logic * active > added * minor fixes * not needed anymore * now it should be back * not needed * cleaning * create system * forgot to remove this * also remove this * add a I * remove old feedback popups * doesn't actually fix it * maybe this time? * oh well * use whitelists * use gamerule added * update fix comment * simplify * old commentary * default false * add blacklist option * fix helper functions * remove commentary * who needs those * orks hates linq * not needed * Change linq into foreach * remove unwanted popups for next rounds --------- Co-authored-by: beck-thompson --- .../FeedbackSystem/FeedbackSystem.cs | 39 +++++++++++++++++++ .../GameTicking/GameTicker.GameRule.cs | 35 +++++++++++++++++ .../FeedbackSystem/FeedbackPopupPrototype.cs | 13 ++++++- .../FeedbackSystem/SharedFeedbackManager.cs | 6 ++- 4 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 Content.Server/FeedbackSystem/FeedbackSystem.cs diff --git a/Content.Server/FeedbackSystem/FeedbackSystem.cs b/Content.Server/FeedbackSystem/FeedbackSystem.cs new file mode 100644 index 00000000000..39e1d55a297 --- /dev/null +++ b/Content.Server/FeedbackSystem/FeedbackSystem.cs @@ -0,0 +1,39 @@ +using Content.Server.GameTicking; +using Content.Shared.FeedbackSystem; +using Content.Shared.GameTicking; +using Robust.Shared.Prototypes; + +namespace Content.Server.FeedbackSystem; + +public sealed partial class FeedbackSystem : EntitySystem +{ + [Dependency] private readonly ServerFeedbackManager _feedbackManager = null!; + [Dependency] private readonly GameTicker _gameTicker = null!; + [Dependency] private readonly IPrototypeManager _prototypeManager = null!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnRoundEnd); + } + + private void OnRoundEnd(RoundEndMessageEvent args) + { + var validPopups = new List>(); + var notValidPopups = new List>(); + + foreach (var feedback in _feedbackManager.GetOriginFeedbackPrototypes(true, true)) + { + if (_gameTicker.IsGameRuleAdded(_prototypeManager.Index(feedback).RuleWhitelist)) + validPopups.Add(feedback); + else + notValidPopups.Add(feedback); + } + + if (validPopups.Count > 0) + _feedbackManager.SendToAllSessions(validPopups); + + if (notValidPopups.Count > 0) + _feedbackManager.SendToAllSessions(notValidPopups, true); + } +} diff --git a/Content.Server/GameTicking/GameTicker.GameRule.cs b/Content.Server/GameTicking/GameTicker.GameRule.cs index 1750d3c27a0..c1d8e3b31e0 100644 --- a/Content.Server/GameTicking/GameTicker.GameRule.cs +++ b/Content.Server/GameTicking/GameTicker.GameRule.cs @@ -5,6 +5,7 @@ using Content.Shared.Database; using Content.Shared.GameTicking.Components; using Content.Shared.Prototypes; +using Content.Shared.Whitelist; using JetBrains.Annotations; using Robust.Shared.Console; using Robust.Shared.Map; @@ -17,6 +18,8 @@ public sealed partial class GameTicker { [ViewVariables] private readonly List<(TimeSpan, string)> _allPreviousGameRules = new(); + [Dependency] private readonly EntityWhitelistSystem _whitelist = null!; + /// /// A list storing the start times of all game rules that have been started this round. /// Game rules can be started and stopped at any time, including midround. @@ -233,6 +236,22 @@ public bool IsGameRuleAdded(string rule) return false; } + /// + /// Returns true if a game rule that passes the whitelist and blacklist has been added. + /// + /// whitelist for the game rules + /// blacklist for the game rules + public bool IsGameRuleAdded(EntityWhitelist? ruleWhitelist, EntityWhitelist? ruleBlacklist = null) + { + foreach (var ruleEntity in GetAddedGameRules()) + { + if (_whitelist.CheckBoth(ruleEntity, ruleBlacklist, ruleWhitelist)) + return true; + } + + return false; + } + /// /// Returns true if a game rule with the given component is active.. /// @@ -265,6 +284,22 @@ public bool IsGameRuleActive(string rule) return false; } + /// + /// Returns true if a game rule that passes the whitelist and blacklist is active. + /// + /// whitelist for the game rules + /// blacklist for the game rules + public bool IsGameRuleActive(EntityWhitelist? ruleWhitelist, EntityWhitelist? ruleBlacklist = null) + { + foreach (var ruleEntity in GetActiveGameRules()) + { + if (_whitelist.CheckBoth(ruleEntity, ruleBlacklist, ruleWhitelist)) + return true; + } + + return false; + } + public void ClearGameRules() { foreach (var rule in GetAddedGameRules()) diff --git a/Content.Shared/FeedbackSystem/FeedbackPopupPrototype.cs b/Content.Shared/FeedbackSystem/FeedbackPopupPrototype.cs index c7ff7705662..1ce93e8a9b9 100644 --- a/Content.Shared/FeedbackSystem/FeedbackPopupPrototype.cs +++ b/Content.Shared/FeedbackSystem/FeedbackPopupPrototype.cs @@ -1,4 +1,5 @@ -using Robust.Shared.Prototypes; +using Content.Shared.Whitelist; +using Robust.Shared.Prototypes; namespace Content.Shared.FeedbackSystem; @@ -53,4 +54,14 @@ public sealed partial class FeedbackPopupPrototype : IPrototype /// [DataField] public bool ShowRoundEnd = true; + + /// + /// Will only show this feedback at round end if there is a rule that fits in the whitelist + /// + /// + /// This will only work if is true. + /// If this is null it will show the feedback at round end regardless of the rules present + /// + [DataField] + public EntityWhitelist? RuleWhitelist; } diff --git a/Content.Shared/FeedbackSystem/SharedFeedbackManager.cs b/Content.Shared/FeedbackSystem/SharedFeedbackManager.cs index e104be98a23..59fae8246f9 100644 --- a/Content.Shared/FeedbackSystem/SharedFeedbackManager.cs +++ b/Content.Shared/FeedbackSystem/SharedFeedbackManager.cs @@ -131,11 +131,13 @@ public virtual void OpenForAllSessions() {} /// Get a list of feedback prototypes that match the current valid origins. /// /// If true, only retrieve pop-ups with ShowRoundEnd set to true. + /// If true, only retrieve pop-ups with a non-null RuleWhitelist. + /// If false, only retrieve pop-ups with a null RuleWhitelist. /// Returns a list of protoIds; possibly empty. - public List> GetOriginFeedbackPrototypes(bool roundEndOnly) + public List> GetOriginFeedbackPrototypes(bool roundEndOnly, bool ruleSpecific = false) { var feedbackProtypes = _proto.EnumeratePrototypes() - .Where(x => (!roundEndOnly || x.ShowRoundEnd) && _validOrigins.Contains(x.PopupOrigin)) + .Where(x => (!roundEndOnly || x.ShowRoundEnd) && ruleSpecific == (x.RuleWhitelist != null) && _validOrigins.Contains(x.PopupOrigin)) .Select(x => new ProtoId(x.ID)) .OrderBy(x => x.Id) .ToList(); From 210fae0ffebf4a02b63a87c52cdfa6fb8c0aa0cc Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Fri, 27 Feb 2026 22:27:56 +0100 Subject: [PATCH 421/603] Raise SolutionChangedEvent and SolutionContainerChangedEvent when handling SolutionComponent states (#42814) raise event on client + comp access --- .../Tests/Chemistry/TryAllReactionsTest.cs | 5 +-- .../Chemistry/Components/Solution.cs | 5 +++ .../Chemistry/Components/SolutionComponent.cs | 14 ++++++- .../EntitySystems/ReactiveContainerSystem.cs | 6 +++ .../EntitySystems/RehydratableSystem.cs | 6 +++ .../SharedSolutionContainerSystem.Relays.cs | 29 ++++++++------ .../SharedSolutionContainerSystem.cs | 39 +++++++++++++++++-- .../ReagentEntityConditionSystem.cs | 3 +- .../Fluids/SharedAbsorbentSystem.cs | 6 +++ Content.Shared/Fluids/SharedPuddleSystem.cs | 4 ++ .../EntitySystems/FoodSequenceSystem.cs | 2 +- .../EntitySystems/IngestionSystem.cs | 4 ++ .../PressurizedSolutionSystem.cs | 4 ++ 13 files changed, 105 insertions(+), 22 deletions(-) diff --git a/Content.IntegrationTests/Tests/Chemistry/TryAllReactionsTest.cs b/Content.IntegrationTests/Tests/Chemistry/TryAllReactionsTest.cs index 13d8bdc6d29..14f32e01617 100644 --- a/Content.IntegrationTests/Tests/Chemistry/TryAllReactionsTest.cs +++ b/Content.IntegrationTests/Tests/Chemistry/TryAllReactionsTest.cs @@ -50,7 +50,7 @@ await server.WaitAssertion(() => beaker = entityManager.SpawnEntity("TestSolutionContainer", coordinates); Assert.That(solutionContainerSystem .TryGetSolution(beaker, "beaker", out solutionEnt, out solution)); - solutionEnt.Value.Comp.Solution.CanReact = false; + solutionContainerSystem.SetCanReact(solutionEnt.Value, false); foreach (var (id, reactant) in reactionPrototype.Reactants) { #pragma warning disable NUnit2045 @@ -84,9 +84,8 @@ await server.WaitAssertion(() => } //Now safe set the temperature and mix the reagents - solutionEnt.Value.Comp.Solution.CanReact = true; solutionContainerSystem.SetTemperature(solutionEnt.Value, reactionPrototype.MinimumTemperature); - solutionContainerSystem.UpdateChemicals(solutionEnt.Value); + solutionContainerSystem.SetCanReact(solutionEnt.Value, true); if (reactionPrototype.MixingCategories != null) { diff --git a/Content.Shared/Chemistry/Components/Solution.cs b/Content.Shared/Chemistry/Components/Solution.cs index cd0314419a0..bea7a0a071a 100644 --- a/Content.Shared/Chemistry/Components/Solution.cs +++ b/Content.Shared/Chemistry/Components/Solution.cs @@ -188,6 +188,11 @@ public Solution Clone() return new Solution(this); } + public override string ToString() + { + return string.Join("; ", Contents); + } + [AssertionMethod] public void ValidateSolution() { diff --git a/Content.Shared/Chemistry/Components/SolutionComponent.cs b/Content.Shared/Chemistry/Components/SolutionComponent.cs index 687a545b00b..847f8f03c91 100644 --- a/Content.Shared/Chemistry/Components/SolutionComponent.cs +++ b/Content.Shared/Chemistry/Components/SolutionComponent.cs @@ -1,6 +1,8 @@ using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Materials; using Robust.Shared.GameStates; +using Robust.Shared.Serialization; namespace Content.Shared.Chemistry.Components; @@ -11,12 +13,20 @@ namespace Content.Shared.Chemistry.Components; /// /// Once reagents and materials have been merged this component should be depricated in favor of using a combination of and . May require minor reworks to both. /// -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[RegisterComponent, NetworkedComponent] +[Access(typeof(SharedSolutionContainerSystem))] public sealed partial class SolutionComponent : Component { /// /// The reagents the entity is composed of and their temperature. /// - [DataField, AutoNetworkedField] + [DataField] public Solution Solution = new(); } + + +[Serializable, NetSerializable] +public sealed class SolutionComponentState(Solution solution) : ComponentState +{ + public Solution Solution = solution; +} diff --git a/Content.Shared/Chemistry/EntitySystems/ReactiveContainerSystem.cs b/Content.Shared/Chemistry/EntitySystems/ReactiveContainerSystem.cs index aa217c60ba3..2bfa1c9de38 100644 --- a/Content.Shared/Chemistry/EntitySystems/ReactiveContainerSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/ReactiveContainerSystem.cs @@ -1,6 +1,7 @@ using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Reaction; using Robust.Shared.Containers; +using Robust.Shared.Timing; namespace Content.Shared.Chemistry.EntitySystems; @@ -9,6 +10,7 @@ public sealed class ReactiveContainerSystem : EntitySystem [Dependency] private readonly SharedContainerSystem _containerSystem = default!; [Dependency] private readonly ReactiveSystem _reactiveSystem = default!; [Dependency] private readonly SharedSolutionContainerSystem _solutionContainerSystem = default!; + [Dependency] private readonly IGameTiming _timing = default!; public override void Initialize() { @@ -34,6 +36,10 @@ private void OnInserted(EntityUid uid, ReactiveContainerComponent comp, EntInser private void OnSolutionChange(EntityUid uid, ReactiveContainerComponent comp, SolutionContainerChangedEvent args) { + // The changes are already networked as part of the same game state. + if (_timing.ApplyingState) + return; + if (!_solutionContainerSystem.TryGetSolution(uid, comp.Solution, out _, out var solution)) return; if (solution.Volume == 0) diff --git a/Content.Shared/Chemistry/EntitySystems/RehydratableSystem.cs b/Content.Shared/Chemistry/EntitySystems/RehydratableSystem.cs index 0f5d51057f2..697605af1d6 100644 --- a/Content.Shared/Chemistry/EntitySystems/RehydratableSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/RehydratableSystem.cs @@ -5,6 +5,7 @@ using Content.Shared.Popups; using Robust.Shared.Network; using Robust.Shared.Random; +using Robust.Shared.Timing; namespace Content.Shared.Chemistry.EntitySystems; @@ -16,6 +17,7 @@ public sealed class RehydratableSystem : EntitySystem [Dependency] private readonly SharedSolutionContainerSystem _solutions = default!; [Dependency] private readonly SharedTransformSystem _xform = default!; [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly IGameTiming _timing = default!; public override void Initialize() { @@ -26,6 +28,10 @@ public override void Initialize() private void OnSolutionChange(Entity ent, ref SolutionContainerChangedEvent args) { + // The changes are already networked as part of the same game state. + if (_timing.ApplyingState) + return; + var quantity = _solutions.GetTotalPrototypeQuantity(ent, ent.Comp.CatalystPrototype); _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(ent.Owner)} was hydrated, now contains a solution of: {SharedSolutionContainerSystem.ToPrettyString(args.Solution)}."); if (quantity != FixedPoint2.Zero && quantity >= ent.Comp.CatalystMinimum) diff --git a/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.Relays.cs b/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.Relays.cs index e6e96fa80a3..11122415c5e 100644 --- a/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.Relays.cs +++ b/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.Relays.cs @@ -8,19 +8,20 @@ namespace Content.Shared.Chemistry.EntitySystems; #region Events /// -/// This event alerts system that the solution was changed +/// Raised on the container of the solution entity when the contained solution is changed. +/// If you want to subscribe with the solution entity itself +/// then use instead. /// +/// +/// This is always raised on the client when handling the component state so that we can update UIs accordingly. +/// You might need an IGameTiming.ApplyingState guard to prevent mispredicts if the changes from your subscription are +/// networked with the same game state. +/// [ByRefEvent] -public record struct SolutionContainerChangedEvent +public record struct SolutionContainerChangedEvent(Solution Solution, string SolutionId) { - public readonly Solution Solution; - public readonly string SolutionId; - - public SolutionContainerChangedEvent(Solution solution, string solutionId) - { - SolutionId = solutionId; - Solution = solution; - } + public readonly Solution Solution = Solution; + public readonly string SolutionId = SolutionId; } /// @@ -89,10 +90,14 @@ protected virtual void OnSolutionChanged(Entity enti var (solutionId, solutionComp) = args.Solution; var solution = solutionComp.Solution; - UpdateAppearance(entity.Comp.Container, (solutionId, solutionComp, entity.Comp)); - var relayEvent = new SolutionContainerChangedEvent(solution, entity.Comp.ContainerName); RaiseLocalEvent(entity.Comp.Container, ref relayEvent); + + // The appearance changes are already networked as part of the same game state. + if (_timing.ApplyingState) + return; + + UpdateAppearance(entity.Comp.Container, (solutionId, solutionComp, entity.Comp)); } protected virtual void OnSolutionOverflow(Entity entity, ref SolutionOverflowEvent args) diff --git a/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.cs b/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.cs index 892e4e9cac1..e6e50b23b5f 100644 --- a/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/SharedSolutionContainerSystem.cs @@ -2,7 +2,6 @@ using System.Linq; using System.Numerics; using System.Runtime.CompilerServices; -using System.Text; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Chemistry.Reaction; @@ -10,17 +9,17 @@ using Content.Shared.Containers; using Content.Shared.Examine; using Content.Shared.FixedPoint; -using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; using Content.Shared.Localizations; -using Content.Shared.Nutrition.Components; using Content.Shared.Nutrition.EntitySystems; using Content.Shared.Verbs; using JetBrains.Annotations; using Robust.Shared.Containers; +using Robust.Shared.GameStates; using Robust.Shared.Map; using Robust.Shared.Network; using Robust.Shared.Prototypes; +using Robust.Shared.Timing; using Robust.Shared.Utility; using Dependency = Robust.Shared.IoC.DependencyAttribute; @@ -28,9 +27,15 @@ namespace Content.Shared.Chemistry.EntitySystems; /// /// The event raised whenever a solution entity is modified. +/// Raised on the solution entity itself. +/// If you want to subscribe with the entity containing the solution entity +/// then use instead. /// /// /// Raised after chemcial reactions and are handled. +/// This is always raised on the client when handling the component state so that we can update UIs accordingly. +/// You might need an IGameTiming.ApplyingState guard to prevent mispredicts if the changes from your subscription are +/// networked with the same game state. /// /// The solution entity that has been modified. [ByRefEvent] @@ -73,6 +78,7 @@ public abstract partial class SharedSolutionContainerSystem : EntitySystem [Dependency] protected readonly SharedContainerSystem ContainerSystem = default!; [Dependency] protected readonly MetaDataSystem MetaDataSys = default!; [Dependency] protected readonly INetManager NetManager = default!; + [Dependency] private readonly IGameTiming _timing = default!; public override void Initialize() { @@ -80,6 +86,8 @@ public override void Initialize() InitializeRelays(); + SubscribeLocalEvent(OnSolutionGetState); + SubscribeLocalEvent(OnSolutionHandleState); SubscribeLocalEvent(OnComponentInit); SubscribeLocalEvent(OnSolutionStartup); SubscribeLocalEvent(OnSolutionShutdown); @@ -95,6 +103,22 @@ public override void Initialize() } } + private void OnSolutionGetState(Entity ent, ref ComponentGetState args) + { + args.State = new SolutionComponentState(ent.Comp.Solution); + } + + private void OnSolutionHandleState(Entity ent, ref ComponentHandleState args) + { + if (args.Current is not SolutionComponentState cast) + return; + + ent.Comp.Solution = cast.Solution.Clone(); + + // Always raise the event on the client so that we can update UIs accordingly. + var changedEv = new SolutionChangedEvent(ent); + RaiseLocalEvent(ent, ref changedEv); + } /// /// Attempts to resolve a solution associated with an entity. @@ -434,6 +458,15 @@ public void SetCapacity(Entity soln, FixedPoint2 capacity) UpdateChemicals(soln); } + /// + /// Sets whether or not the given solution entity can react and dirties it. + /// + public void SetCanReact(Entity soln, bool canReact) + { + soln.Comp.Solution.CanReact = canReact; + UpdateChemicals(soln); + } + /// /// Adds reagent of an Id to the container. /// diff --git a/Content.Shared/EntityConditions/Conditions/ReagentEntityConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/ReagentEntityConditionSystem.cs index c1da05ae30f..c721c2fc9d3 100644 --- a/Content.Shared/EntityConditions/Conditions/ReagentEntityConditionSystem.cs +++ b/Content.Shared/EntityConditions/Conditions/ReagentEntityConditionSystem.cs @@ -13,7 +13,8 @@ public sealed partial class ReagentEntityConditionSystem : EntityConditionSystem { protected override void Condition(Entity entity, ref EntityConditionEvent args) { - var quant = entity.Comp.Solution.GetTotalPrototypeQuantity(args.Condition.Reagent); + var soln = entity.Comp.Solution; + var quant = soln.GetTotalPrototypeQuantity(args.Condition.Reagent); args.Result = quant >= args.Condition.Min && quant <= args.Condition.Max; } diff --git a/Content.Shared/Fluids/SharedAbsorbentSystem.cs b/Content.Shared/Fluids/SharedAbsorbentSystem.cs index 77f40aeee64..62c59b8227b 100644 --- a/Content.Shared/Fluids/SharedAbsorbentSystem.cs +++ b/Content.Shared/Fluids/SharedAbsorbentSystem.cs @@ -11,6 +11,7 @@ using Robust.Shared.Audio.Systems; using Robust.Shared.Map.Components; using Robust.Shared.Prototypes; +using Robust.Shared.Timing; namespace Content.Shared.Fluids; @@ -29,6 +30,7 @@ public abstract class SharedAbsorbentSystem : EntitySystem [Dependency] private readonly UseDelaySystem _useDelay = default!; [Dependency] private readonly SharedMapSystem _mapSystem = default!; [Dependency] private readonly SharedItemSystem _item = default!; + [Dependency] private readonly IGameTiming _timing = default!; public override void Initialize() { @@ -59,6 +61,10 @@ private void OnAfterInteract(Entity ent, ref AfterInteractEv private void OnAbsorbentSolutionChange(Entity ent, ref SolutionContainerChangedEvent args) { + // The changes are already networked as part of the same game state. + if (_timing.ApplyingState) + return; + if (!SolutionContainer.TryGetSolution(ent.Owner, ent.Comp.SolutionName, out _, out var solution)) return; diff --git a/Content.Shared/Fluids/SharedPuddleSystem.cs b/Content.Shared/Fluids/SharedPuddleSystem.cs index 8f87734717d..e676eaf68c2 100644 --- a/Content.Shared/Fluids/SharedPuddleSystem.cs +++ b/Content.Shared/Fluids/SharedPuddleSystem.cs @@ -114,6 +114,10 @@ private void CacheStandsout() private void OnSolutionUpdate(Entity entity, ref SolutionContainerChangedEvent args) { + // The changes are already networked as part of the same game state. + if (_timing.ApplyingState) + return; + if (args.SolutionId != entity.Comp.SolutionName) return; diff --git a/Content.Shared/Nutrition/EntitySystems/FoodSequenceSystem.cs b/Content.Shared/Nutrition/EntitySystems/FoodSequenceSystem.cs index 0e872784663..8ab4da445ed 100644 --- a/Content.Shared/Nutrition/EntitySystems/FoodSequenceSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/FoodSequenceSystem.cs @@ -97,7 +97,7 @@ private void Metamorf(Entity start, MetamorphRe return; _solutionContainer.RemoveAllSolution(resultSoln.Value); //Remove all YML reagents - resultSoln.Value.Comp.Solution.MaxVolume = startSoln.Value.Comp.Solution.MaxVolume; + _solutionContainer.SetCapacity(resultSoln.Value, startSoln.Value.Comp.Solution.MaxVolume); _solutionContainer.TryAddSolution(resultSoln.Value, startSolution); MergeFlavorProfiles(start, result); diff --git a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs index eac3457478d..7733aa2cb7a 100644 --- a/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/IngestionSystem.cs @@ -163,6 +163,10 @@ public void UpdateAppearance(Entity entit private void OnSolutionContainerChanged(Entity entity, ref SolutionContainerChangedEvent args) { + // The changes are already networked as part of the same game state. + if (_timing.ApplyingState) + return; + UpdateAppearance(entity); } diff --git a/Content.Shared/Nutrition/EntitySystems/PressurizedSolutionSystem.cs b/Content.Shared/Nutrition/EntitySystems/PressurizedSolutionSystem.cs index 9a0e3e79fa6..1ddb9965b75 100644 --- a/Content.Shared/Nutrition/EntitySystems/PressurizedSolutionSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/PressurizedSolutionSystem.cs @@ -267,6 +267,10 @@ private void OnLand(Entity entity, ref LandEvent a private void OnSolutionUpdate(Entity entity, ref SolutionContainerChangedEvent args) { + // The changes are already networked as part of the same game state. + if (_timing.ApplyingState) + return; + if (args.SolutionId != entity.Comp.Solution) return; From 7f15e7795417b29541799b972c380fd689c6842e Mon Sep 17 00:00:00 2001 From: Samuka <47865393+Samuka-C@users.noreply.github.com> Date: Fri, 27 Feb 2026 21:55:09 -0300 Subject: [PATCH 422/603] Xenoborg extractor (#42796) * verb category * voltage toggle comp * move stuff * add simple prototype * implement verb action * switch expression * fixed the node not updating * charge the battery * fixed battery not charging * spawn on battery level system * finally works * swap commentary position * can only anchor the extractor on the station * popup message for trying to anchor outside of station * default placement for unanchored version * ops * fix body type * commentary * update visuals of power consumer * add custom sprite * fix light layer not changing * xenoborg circuit * fix xenoborg circuit * add tag * add hand to hold xenoborg circuits * move to material * add xenoborg circuit material * add recipe to mothership core * add a hand to hold circuits to the mothership core * to not confuse * update * ops * another ops * update mothership * update guidebook * update values * more info * fix stack * can store xenoborg circuits * description * also update description * circuit -> crytal * not modified from anything * update description * Revert "update mothership" This reverts commit 84974c56afadac2a99ed2a166244a668d83fff48. * update empty label * small update to sprite * not necessary code * remove empty line * color * make it explode when destroyed * change values * update sprite * update sprite * make it eletrified * flavor text * simplify to only use charge * subscribe to event * new line * remove popup * no need for the setter * no longer networked * feedback popups * Minor tweaks * better to understand * better now? --------- Co-authored-by: beck-thompson --- .../PowerConsumerBatteryChargerComponent.cs | 7 ++ .../SpawnOnBatteryLevelComponent.cs | 23 ++++ .../Components/VoltageTogglerComponent.cs | 46 ++++++++ .../PowerConsumerBatteryChargerSystem.cs | 22 ++++ .../Power/EntitySystems/PowerNetSystem.cs | 8 ++ .../SpawnOnBatteryLevelSystem.cs | 34 ++++++ .../EntitySystems/VoltageTogglerSystem.cs | 74 ++++++++++++ .../AnchorOnlyOnStationComponent.cs | 14 +++ .../EntitySystems/AnchorableSystem.cs | 21 ++++ Content.Shared/NodeContainer/Node.cs | 5 + Content.Shared/Verbs/VerbCategory.cs | 3 + .../en-US/anchorable/anchorable-component.ftl | 2 + .../Locale/en-US/materials/materials.ftl | 1 + .../en-US/power/components/power-voltages.ftl | 3 + .../Locale/en-US/robotics/borg_modules.ftl | 1 + Resources/Locale/en-US/stack/stacks.ftl | 4 + Resources/Locale/en-US/verbs/verb-system.ftl | 1 + .../Entities/Clothing/Back/specific.yml | 1 + .../Entities/Mobs/Player/mothershipcore.yml | 4 +- .../Devices/Circuitboards/law_boards.yml | 4 +- .../Entities/Objects/Devices/flatpack.yml | 15 +++ .../Objects/Materials/xenoborg_crystal.yml | 46 ++++++++ .../Specific/Robotics/borg_modules.yml | 12 ++ .../Structures/Power/xenoborg_extractor.yml | 111 ++++++++++++++++++ .../FeedbackPopup/feedbackpopups.yml | 27 +++++ .../Reagents/Materials/materials.yml | 9 ++ .../Recipes/Lathes/Packs/xenoborgs.yml | 5 + .../Prototypes/Recipes/Lathes/xenoborgs.yml | 38 +++--- .../Prototypes/Stacks/Specific/xenoborg.yml | 6 + Resources/Prototypes/tags.yml | 3 + .../Guidebook/Antagonist/Xenoborgs.xml | 37 +++++- .../xenoborg_crystal.rsi/crystal-1.png | Bin 0 -> 482 bytes .../xenoborg_crystal.rsi/crystal-2.png | Bin 0 -> 604 bytes .../xenoborg_crystal.rsi/crystal-3.png | Bin 0 -> 688 bytes .../Materials/xenoborg_crystal.rsi/meta.json | 20 ++++ .../Machines/xenoborg_extractor.rsi/icon.png | Bin 0 -> 544 bytes .../Machines/xenoborg_extractor.rsi/light.png | Bin 0 -> 969 bytes .../Machines/xenoborg_extractor.rsi/meta.json | 40 +++++++ .../xenoborg_extractor.rsi/running.png | Bin 0 -> 828 bytes 39 files changed, 625 insertions(+), 22 deletions(-) create mode 100644 Content.Server/Power/Components/PowerConsumerBatteryChargerComponent.cs create mode 100644 Content.Server/Power/Components/SpawnOnBatteryLevelComponent.cs create mode 100644 Content.Server/Power/Components/VoltageTogglerComponent.cs create mode 100644 Content.Server/Power/EntitySystems/PowerConsumerBatteryChargerSystem.cs create mode 100644 Content.Server/Power/EntitySystems/SpawnOnBatteryLevelSystem.cs create mode 100644 Content.Server/Power/EntitySystems/VoltageTogglerSystem.cs create mode 100644 Content.Shared/Construction/Components/AnchorOnlyOnStationComponent.cs create mode 100644 Resources/Locale/en-US/power/components/power-voltages.ftl create mode 100644 Resources/Prototypes/Entities/Objects/Materials/xenoborg_crystal.yml create mode 100644 Resources/Prototypes/Entities/Structures/Power/xenoborg_extractor.yml create mode 100644 Resources/Prototypes/Stacks/Specific/xenoborg.yml create mode 100644 Resources/Textures/Objects/Materials/xenoborg_crystal.rsi/crystal-1.png create mode 100644 Resources/Textures/Objects/Materials/xenoborg_crystal.rsi/crystal-2.png create mode 100644 Resources/Textures/Objects/Materials/xenoborg_crystal.rsi/crystal-3.png create mode 100644 Resources/Textures/Objects/Materials/xenoborg_crystal.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/xenoborg_extractor.rsi/icon.png create mode 100644 Resources/Textures/Structures/Machines/xenoborg_extractor.rsi/light.png create mode 100644 Resources/Textures/Structures/Machines/xenoborg_extractor.rsi/meta.json create mode 100644 Resources/Textures/Structures/Machines/xenoborg_extractor.rsi/running.png diff --git a/Content.Server/Power/Components/PowerConsumerBatteryChargerComponent.cs b/Content.Server/Power/Components/PowerConsumerBatteryChargerComponent.cs new file mode 100644 index 00000000000..951ce64a6f0 --- /dev/null +++ b/Content.Server/Power/Components/PowerConsumerBatteryChargerComponent.cs @@ -0,0 +1,7 @@ +namespace Content.Server.Power.Components; + +/// +/// Charges the battery from a entity with +/// +[RegisterComponent] +public sealed partial class PowerConsumerBatteryChargerComponent : Component; diff --git a/Content.Server/Power/Components/SpawnOnBatteryLevelComponent.cs b/Content.Server/Power/Components/SpawnOnBatteryLevelComponent.cs new file mode 100644 index 00000000000..74db2806b68 --- /dev/null +++ b/Content.Server/Power/Components/SpawnOnBatteryLevelComponent.cs @@ -0,0 +1,23 @@ +using Robust.Shared.Prototypes; + +namespace Content.Server.Power.Components; + +/// +/// Spawns a entity when the battery reaches a certain percentage or amount of power. +/// It also consumes that much power when spawning the entity. +/// +[RegisterComponent] +public sealed partial class SpawnOnBatteryLevelComponent : Component +{ + /// + /// Entity prototype to spawn. + /// + [DataField(required: true)] + public EntProtoId Prototype = string.Empty; + + /// + /// Amount of power in the battery (in joules) to spawn entity + /// + [DataField] + public float Charge; +} diff --git a/Content.Server/Power/Components/VoltageTogglerComponent.cs b/Content.Server/Power/Components/VoltageTogglerComponent.cs new file mode 100644 index 00000000000..b7c802b931c --- /dev/null +++ b/Content.Server/Power/Components/VoltageTogglerComponent.cs @@ -0,0 +1,46 @@ +using Robust.Shared.GameStates; +using Content.Shared.Power; + +namespace Content.Server.Power.Components; + +/// +/// Changes the voltage of a device with +/// +[RegisterComponent] +public sealed partial class VoltageTogglerComponent : Component +{ + /// + /// List of all voltage settings. + /// + [DataField(required: true), ViewVariables(VVAccess.ReadOnly)] + public VoltageSetting[] Settings = []; + + /// + /// Index of the currently selected setting. + /// + [DataField] + [AutoNetworkedField] + public int SelectedVoltageLevel; +} + +[DataDefinition] +public partial struct VoltageSetting +{ + /// + /// Voltage. + /// + [DataField(required: true)] + public Voltage Voltage; + + /// + /// Power usage in that voltage. + /// + [DataField(required: true)] + public float Wattage; + + /// + /// Name of the setting. + /// + [DataField(required: true)] + public LocId Name; +} diff --git a/Content.Server/Power/EntitySystems/PowerConsumerBatteryChargerSystem.cs b/Content.Server/Power/EntitySystems/PowerConsumerBatteryChargerSystem.cs new file mode 100644 index 00000000000..c0015f20761 --- /dev/null +++ b/Content.Server/Power/EntitySystems/PowerConsumerBatteryChargerSystem.cs @@ -0,0 +1,22 @@ +using Content.Server.Power.Components; +using Content.Shared.Power.Components; + +namespace Content.Server.Power.EntitySystems; + +public sealed class PowerConsumerBatteryChargerSystem : EntitySystem +{ + [Dependency] private readonly BatterySystem _battery = default!; + + public override void Update(float frameTime) + { + var query = EntityQueryEnumerator(); + + while (query.MoveNext(out var entity, out _, out var powerConsumerComp, out var battery, out var transform)) + { + if (!transform.Anchored) + continue; + + _battery.ChangeCharge((entity, battery), powerConsumerComp.NetworkLoad.ReceivingPower * frameTime); + } + } +} diff --git a/Content.Server/Power/EntitySystems/PowerNetSystem.cs b/Content.Server/Power/EntitySystems/PowerNetSystem.cs index 1c3f76fdee4..82ca323067f 100644 --- a/Content.Server/Power/EntitySystems/PowerNetSystem.cs +++ b/Content.Server/Power/EntitySystems/PowerNetSystem.cs @@ -57,6 +57,7 @@ public override void Initialize() SubscribeLocalEvent(BatteryPaused); SubscribeLocalEvent(BatteryUnpaused); + SubscribeLocalEvent(PowerConsumerMapInit); SubscribeLocalEvent(PowerConsumerInit); SubscribeLocalEvent(PowerConsumerShutdown); SubscribeLocalEvent(PowerConsumerPaused); @@ -132,6 +133,11 @@ private static void BatteryUnpaused(EntityUid uid, PowerNetworkBatteryComponent component.NetworkBattery.Paused = false; } + private void PowerConsumerMapInit(EntityUid uid, PowerConsumerComponent component, ref MapInitEvent args) + { + _appearance.SetData(uid, PowerDeviceVisuals.Powered, component.ReceivedPower > 0); + } + private void PowerConsumerInit(EntityUid uid, PowerConsumerComponent component, ComponentInit args) { _powerNetConnector.BaseNetConnectorInit(component); @@ -414,6 +420,8 @@ private void UpdatePowerConsumer() lastRecv = newRecv; var msg = new PowerConsumerReceivedChanged(newRecv, consumer.DrawRate); RaiseLocalEvent(uid, ref msg); + + _appearance.SetData(uid, PowerDeviceVisuals.Powered, newRecv > 0); } } diff --git a/Content.Server/Power/EntitySystems/SpawnOnBatteryLevelSystem.cs b/Content.Server/Power/EntitySystems/SpawnOnBatteryLevelSystem.cs new file mode 100644 index 00000000000..ab2f61ec663 --- /dev/null +++ b/Content.Server/Power/EntitySystems/SpawnOnBatteryLevelSystem.cs @@ -0,0 +1,34 @@ +using Content.Server.Power.Components; +using Content.Shared.Power; +using Content.Shared.Power.Components; + +namespace Content.Server.Power.EntitySystems; + +public sealed class SpawnOnBatteryLevelSystem : EntitySystem +{ + [Dependency] private readonly BatterySystem _battery = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnBatteryChargeChange); + } + + private void OnBatteryChargeChange(Entity entity, ref ChargeChangedEvent args) + { + if (!TryComp(entity, out var battery)) + return; + + if (!TryComp(entity, out TransformComponent? xform)) + return; + + if (battery.LastCharge >= entity.Comp.Charge) + { + Spawn(entity.Comp.Prototype, xform.Coordinates); + + _battery.ChangeCharge((entity, battery), -entity.Comp.Charge); + } + + } +} diff --git a/Content.Server/Power/EntitySystems/VoltageTogglerSystem.cs b/Content.Server/Power/EntitySystems/VoltageTogglerSystem.cs new file mode 100644 index 00000000000..9d7d738994e --- /dev/null +++ b/Content.Server/Power/EntitySystems/VoltageTogglerSystem.cs @@ -0,0 +1,74 @@ +using Content.Server.NodeContainer.EntitySystems; +using Content.Server.Power.Components; +using Content.Shared.NodeContainer; +using Content.Shared.NodeContainer.NodeGroups; +using Content.Shared.Power; +using Content.Shared.Verbs; + +namespace Content.Server.Power.EntitySystems; + +public sealed class VoltageTogglerSystem : EntitySystem +{ + [Dependency] private readonly NodeGroupSystem _nodeGroupSystem = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent>(OnGetVerb); + } + + private void OnGetVerb(Entity entity, ref GetVerbsEvent args) + { + if (!args.CanAccess || !args.CanInteract) + return; + + var index = 0; + foreach (var setting in entity.Comp.Settings) + { + // This is because Act wont work with index. + // Needs it to be saved in the loop. + var currIndex = index; + var verb = new Verb + { + Priority = currIndex, + Category = VerbCategory.VoltageLevel, + Disabled = entity.Comp.SelectedVoltageLevel == currIndex, + Text = Loc.GetString(setting.Name), + Act = () => + { + entity.Comp.SelectedVoltageLevel = currIndex; + Dirty(entity); + + ChangeVoltage(entity, setting); + } + }; + args.Verbs.Add(verb); + index++; + } + } + + private void ChangeVoltage(Entity entity, VoltageSetting setting) + { + if (TryComp(entity, out var nodeContainerComp)) + { + var newNodeGroupId = setting.Voltage switch + { + Voltage.Apc => NodeGroupID.Apc, + Voltage.Medium => NodeGroupID.MVPower, + Voltage.High => NodeGroupID.HVPower, + _ => NodeGroupID.Default, + }; + + var inputNode = nodeContainerComp.Nodes["input"]; + _nodeGroupSystem.QueueNodeRemove(inputNode); + inputNode.SetNodeGroupId(newNodeGroupId); + _nodeGroupSystem.QueueReflood(inputNode); + } + + if (TryComp(entity, out var powerConsumerComp)) + { + powerConsumerComp.Voltage = setting.Voltage; + powerConsumerComp.DrawRate = setting.Wattage; + } + } +} diff --git a/Content.Shared/Construction/Components/AnchorOnlyOnStationComponent.cs b/Content.Shared/Construction/Components/AnchorOnlyOnStationComponent.cs new file mode 100644 index 00000000000..3457fa6c2e6 --- /dev/null +++ b/Content.Shared/Construction/Components/AnchorOnlyOnStationComponent.cs @@ -0,0 +1,14 @@ +namespace Content.Shared.Construction.Components; + +/// +/// If a entity has this component it can only be anchored to the station +/// +[RegisterComponent] +public sealed partial class AnchorOnlyOnStationComponent : Component +{ + /// + /// Pop up message when you try to anchor the entity on any grid that isn't the station grid + /// + [DataField] + public LocId PopupMessageAnchorFail = "anchorable-fail-not-on-station"; +} diff --git a/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs b/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs index 3985bd30510..e9501d34e65 100644 --- a/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs +++ b/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs @@ -1,4 +1,5 @@ using System.Diagnostics.CodeAnalysis; +using System.Linq; using Content.Shared.Administration.Logs; using Content.Shared.Examine; using Content.Shared.Construction.Components; @@ -10,6 +11,8 @@ using Content.Shared.Movement.Pulling.Components; using Content.Shared.Movement.Pulling.Systems; using Content.Shared.Popups; +using Content.Shared.Station; +using Content.Shared.Station.Components; using Content.Shared.Tools.Components; using Robust.Shared.Map; using Robust.Shared.Map.Components; @@ -29,6 +32,7 @@ public sealed partial class AnchorableSystem : EntitySystem [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly PullingSystem _pulling = default!; [Dependency] private readonly SharedMapSystem _map = default!; + [Dependency] private readonly SharedStationSystem _stationSystem = default!; [Dependency] private readonly SharedToolSystem _tool = default!; [Dependency] private readonly SharedTransformSystem _transformSystem = default!; [Dependency] private readonly TagSystem _tagSystem = default!; @@ -51,6 +55,8 @@ public override void Initialize() SubscribeLocalEvent(OnAnchoredExamine); SubscribeLocalEvent(OnAnchorStartup); SubscribeLocalEvent(OnAnchorStateChange); + + SubscribeLocalEvent(OnAnchorOnStation); } private void OnAnchorStartup(EntityUid uid, AnchorableComponent comp, ComponentStartup args) @@ -58,6 +64,21 @@ private void OnAnchorStartup(EntityUid uid, AnchorableComponent comp, ComponentS _appearance.SetData(uid, AnchorVisuals.Anchored, Transform(uid).Anchored); } + private void OnAnchorOnStation(Entity ent, ref AnchorAttemptEvent args) + { + var entityParent = Comp(ent).ParentUid; + var isOnStation = _stationSystem.GetStations() + .Select(stationEnt => _stationSystem.GetLargestGrid(stationEnt)) + .Contains(entityParent); + + if (isOnStation) + return; + + // TODO: fix the popup + // _popup.PopupClient(Loc.GetString(ent.Comp.PopupMessageAnchorFail), ent, args.User); + args.Cancel(); + } + private void OnAnchorStateChange(EntityUid uid, AnchorableComponent comp, AnchorStateChangedEvent args) { _appearance.SetData(uid, AnchorVisuals.Anchored, args.Anchored); diff --git a/Content.Shared/NodeContainer/Node.cs b/Content.Shared/NodeContainer/Node.cs index a4ab5103d90..cfb82756e49 100644 --- a/Content.Shared/NodeContainer/Node.cs +++ b/Content.Shared/NodeContainer/Node.cs @@ -27,6 +27,11 @@ public abstract partial class Node /// [ViewVariables] public EntityUid Owner { get; private set; } = default!; + public void SetNodeGroupId(NodeGroupID newId) + { + NodeGroupID = newId; + } + /// /// If this node should be considered for connection by other nodes. /// diff --git a/Content.Shared/Verbs/VerbCategory.cs b/Content.Shared/Verbs/VerbCategory.cs index 418921d38e4..3ae934ed8f3 100644 --- a/Content.Shared/Verbs/VerbCategory.cs +++ b/Content.Shared/Verbs/VerbCategory.cs @@ -86,6 +86,9 @@ public VerbCategory(string text, string? icon, bool iconsOnly = false) public static readonly VerbCategory PowerLevel = new("verb-categories-power-level", null); + public static readonly VerbCategory VoltageLevel = + new("verb-categories-voltage-level", "/Textures/Interface/VerbIcons/zap.svg.192dpi.png"); + public static readonly VerbCategory Adjust = new("verb-categories-adjust", "/Textures/Interface/VerbIcons/screwdriver.png"); } diff --git a/Resources/Locale/en-US/anchorable/anchorable-component.ftl b/Resources/Locale/en-US/anchorable/anchorable-component.ftl index fdac0aa741a..82541762702 100644 --- a/Resources/Locale/en-US/anchorable/anchorable-component.ftl +++ b/Resources/Locale/en-US/anchorable/anchorable-component.ftl @@ -1,3 +1,5 @@ anchorable-anchored = Anchored anchorable-unanchored = Unanchored anchorable-occupied = Tile occupied + +anchorable-fail-not-on-station = Can't anchor anywhere but the station diff --git a/Resources/Locale/en-US/materials/materials.ftl b/Resources/Locale/en-US/materials/materials.ftl index 5a22bc2661a..bd4c0b94a17 100644 --- a/Resources/Locale/en-US/materials/materials.ftl +++ b/Resources/Locale/en-US/materials/materials.ftl @@ -30,6 +30,7 @@ materials-coal = coal materials-diamond = diamond materials-gunpowder = gunpowder materials-cotton = cotton +materials-xenoborg-crystal = xenoborg crystal # Ores materials-raw-iron = raw iron diff --git a/Resources/Locale/en-US/power/components/power-voltages.ftl b/Resources/Locale/en-US/power/components/power-voltages.ftl new file mode 100644 index 00000000000..9287e3567e7 --- /dev/null +++ b/Resources/Locale/en-US/power/components/power-voltages.ftl @@ -0,0 +1,3 @@ +power-voltage-low = Low voltage +power-voltage-medium = Medium voltage +power-voltage-high = High voltage \ No newline at end of file diff --git a/Resources/Locale/en-US/robotics/borg_modules.ftl b/Resources/Locale/en-US/robotics/borg_modules.ftl index c9c674e8654..0590bf13fd6 100644 --- a/Resources/Locale/en-US/robotics/borg_modules.ftl +++ b/Resources/Locale/en-US/robotics/borg_modules.ftl @@ -16,3 +16,4 @@ borg-slot-modules-empty = Modules borg-slot-powercell-empty = Powercells borg-slot-inflatable-door-empty = Inflatable Door borg-slot-inflatable-wall-empty = Inflatable Wall +borg-slot-xenoborg-crystal-empty = Xenoborg crystals diff --git a/Resources/Locale/en-US/stack/stacks.ftl b/Resources/Locale/en-US/stack/stacks.ftl index 0d4c6e89881..857feb27798 100644 --- a/Resources/Locale/en-US/stack/stacks.ftl +++ b/Resources/Locale/en-US/stack/stacks.ftl @@ -80,6 +80,10 @@ stack-artifact-fragment = artifact {$amount -> [1] fragment *[other] fragments } +stack-xenoborg-circuit = dvanced xenoborg {$amount -> + [1] circuitboard + *[other] circuitboards +} # best materials stack-ground-tobacco = ground tobacco diff --git a/Resources/Locale/en-US/verbs/verb-system.ftl b/Resources/Locale/en-US/verbs/verb-system.ftl index d52b43c9a7d..6eebaceff98 100644 --- a/Resources/Locale/en-US/verbs/verb-system.ftl +++ b/Resources/Locale/en-US/verbs/verb-system.ftl @@ -28,6 +28,7 @@ verb-categories-lever = Lever verb-categories-select-type = Select Type verb-categories-fax = Set Destination verb-categories-power-level = Power Level +verb-categories-voltage-level = Voltage Level verb-categories-adjust = Adjust verb-common-toggle-light = Toggle light diff --git a/Resources/Prototypes/Entities/Clothing/Back/specific.yml b/Resources/Prototypes/Entities/Clothing/Back/specific.yml index c440fe9a66f..6563e6cc145 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/specific.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/specific.yml @@ -145,6 +145,7 @@ - ConstructionMaterial - RawMaterial - Ingot + - XenoborgCrystal components: - Circuitboard - Flatpack diff --git a/Resources/Prototypes/Entities/Mobs/Player/mothershipcore.yml b/Resources/Prototypes/Entities/Mobs/Player/mothershipcore.yml index f5897fd2c9d..af62f8d5b3f 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/mothershipcore.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/mothershipcore.yml @@ -41,14 +41,14 @@ idleState: core-idle runningState: core-active staticPacks: + - XenoborgMachines - EmptyXenoborgs - XenoborgUpgradeModules - type: MaterialStorage whitelist: tags: + - XenoborgCrystal - Sheet - - RawMaterial - - Ingot - type: PointLight color: "#0033ff" enabled: true diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/law_boards.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/law_boards.yml index f1f0fd8d483..7f61e86c503 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/law_boards.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/law_boards.yml @@ -146,7 +146,7 @@ laws: NutimovLawset - type: entity - id: XenoborgCircuitBoard + id: XenoborgLawsetCircuitBoard parent: BaseSiliconLawboard name: law board (Xenoborg) suffix: Admeme @@ -156,7 +156,7 @@ laws: XenoborgLawset - type: entity - id: MothershipCircuitBoard + id: MothershipLawsetCircuitBoard parent: BaseSiliconLawboard name: law board (Mothership Core) suffix: Admeme diff --git a/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml b/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml index 8034dd0c667..e4b329ef70c 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml @@ -280,3 +280,18 @@ - type: GuideHelp guides: - FoodRecipes + +- type: entity + parent: [ BaseFlatpack, BaseXenoborgContraband ] + id: XenoborgExtractorFlatpack + name: xenoborg extractor flatpack + description: A flatpack used for constructing a xenoborg extractor. + components: + - type: Item + size: Normal + - type: Flatpack + entity: XenoborgExtractor + - type: GuideHelp + guides: + - Xenoborgs + diff --git a/Resources/Prototypes/Entities/Objects/Materials/xenoborg_crystal.yml b/Resources/Prototypes/Entities/Objects/Materials/xenoborg_crystal.yml new file mode 100644 index 00000000000..a861bead448 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Materials/xenoborg_crystal.yml @@ -0,0 +1,46 @@ +- type: entity + parent: [ MaterialBase, BaseXenoborgContraband ] + id: MaterialXenoborgCrystal + name: xenoborg crystal + description: A special crystal created from nuclear fusion. It's used to make xenoborgs. + suffix: 10 + components: + - type: Item + storedRotation: 0 + - type: Appearance + - type: Stack + stackType: XenoborgCrystal + count: 10 + baseLayer: base + layerStates: + - crystal-1 + - crystal-2 + - crystal-3 + - type: Sprite + sprite: Objects/Materials/xenoborg_crystal.rsi + layers: + - state: crystal-3 + map: [ "base" ] + - type: Material + - type: PhysicalComposition + materialComposition: + XenoborgCrystal: 100 + - type: Tag + tags: + - XenoborgCrystal + +- type: entity + parent: MaterialXenoborgCrystal + id: MaterialXenoborgCrystal5 + suffix: 5 + components: + - type: Stack + count: 5 + +- type: entity + parent: MaterialXenoborgCrystal + id: MaterialXenoborgCrystal1 + suffix: 1 + components: + - type: Stack + count: 1 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml index 0618e308d53..fbca0cfff4c 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml @@ -1429,6 +1429,12 @@ whitelist: components: - BorgModule + - hand: + emptyRepresentative: MaterialXenoborgCrystal + emptyLabel: borg-slot-xenoborg-crystal-empty + whitelist: + tags: + - XenoborgCrystal - hand: emptyRepresentative: BorgModuleConstructionMaterialPlaceholder emptyLabel: borg-slot-construction-empty @@ -1457,6 +1463,12 @@ - state: icon-xenoborg-basic - type: ItemBorgModule hands: + - hand: + emptyRepresentative: MaterialXenoborgCrystal + emptyLabel: borg-slot-xenoborg-crystal-empty + whitelist: + tags: + - XenoborgCrystal - hand: emptyRepresentative: BorgModuleConstructionMaterialPlaceholder emptyLabel: borg-slot-construction-empty diff --git a/Resources/Prototypes/Entities/Structures/Power/xenoborg_extractor.yml b/Resources/Prototypes/Entities/Structures/Power/xenoborg_extractor.yml new file mode 100644 index 00000000000..56646a49691 --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Power/xenoborg_extractor.yml @@ -0,0 +1,111 @@ +- type: entity + parent: [BaseMachine, BaseXenoborgContraband] + id: XenoborgExtractor + name: xenoborg extractor + description: Drains electricity from the grid to produce xenoborg crystals via nuclear fusion. + suffix: Unanchored + placement: + mode: PlaceFree + components: + - type: Physics + bodyType: Dynamic + - type: Transform + anchored: false + - type: AnchorOnlyOnStation + - type: Sprite + sprite: Structures/Machines/xenoborg_extractor.rsi + snapCardinals: true + layers: + - state: icon + map: ["base"] + - state: running + map: ["running"] + - state: light + shader: unshaded + map: ["light"] + - type: Appearance + - type: GenericVisualizer + visuals: + enum.PowerDeviceVisuals.Powered: + base: + True: { visible: false } + False: { visible: true } + running: + True: { visible: true } + False: { visible: false } + light: + True: { visible: true } + False: { visible: false } + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 100 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - !type:PlaySoundBehavior + sound: + collection: MetalGlassBreak + - !type:ExplodeBehavior + - !type:SpawnEntitiesBehavior + spawn: + MachineFrameDestroyed: + min: 1 + max: 1 + - type: Explosive # small explosion when destroyed + explosionType: Default + maxIntensity: 20 + totalIntensity: 10 + intensitySlope: 5 + canCreateVacuum: false + - type: NodeContainer + examinable: true + nodes: + input: + !type:CableDeviceNode + nodeGroupID: Apc + - type: LightningTarget + priority: 1 + - type: Electrified + onHandInteract: false + onInteractUsing: false + onBump: false + requirePower: true + highVoltageNode: input + mediumVoltageNode: input + lowVoltageNode: input + - type: Battery + maxCharge: 2000000 # 2MJ + netsync: false + - type: ExaminableBattery + - type: PowerConsumerBatteryCharger + - type: PowerConsumer + voltage: Apc + drawRate: 10000 + - type: VoltageToggler + settings: + - voltage: Apc + wattage: 16000 # 16kW - 125 seconds to spawn one + name: power-voltage-low + - voltage: Medium + wattage: 50000 # 50kW - 40 seconds to spawn one + name: power-voltage-medium + - voltage: High + wattage: 200000 # 200kW - 10 seconds to spawn one # sets off the rogue power consuming device alert! + name: power-voltage-high + - type: SpawnOnBatteryLevel + prototype: MaterialXenoborgCrystal1 + charge: 2000000 # 2MJ + +- type: entity + parent: XenoborgExtractor + id: XenoborgExtractorAnchored + suffix: Anchored + placement: + mode: SnapgridCenter + components: + - type: Physics + bodyType: Static + - type: Transform + anchored: true diff --git a/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml b/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml index d424a24244f..8517e86a1e7 100644 --- a/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml +++ b/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml @@ -17,3 +17,30 @@ responseType: "General Feedback" responseLink: "https://forum.spacestation14.com/c/development/feedback/51" showRoundEnd: false + +- type: feedbackPopup + id: PlayingAsMothershipCoreFeedback + popupOrigin: wizden_master + title: "[bold]Playing as [color=deepskyblue]mothership[/color] core[/bold]" + description: >- + If you played mothership core this round or maybe in a previous round, feel free to respond this feedback thread about your experiences and issues with playing as the mothership core. + responseType: "Feedback Thread" + responseLink: "https://forum.spacestation14.com/t/playing-as-a-mothership-core/26688/2" + showRoundEnd: true + ruleWhitelist: + components: + - XenoborgsRule + +- type: feedbackPopup + id: XenoborgExtractorFeedback + popupOrigin: wizden_master + title: "[bold]The [color=deepskyblue]xenoborg[/color] extractor [scramble chars=\"xenoborg-##][{}||,.<>\" rate=40 length=5][/bold]" + description: >- + Please share feedback on the new xenoborg extractor and crystal, and how these additions affect xenoborg gameplay. + responseType: "Feedback Thread" + responseLink: "https://forum.spacestation14.com/t/xenoborg-extractor/26689" + showRoundEnd: true + ruleWhitelist: + components: + - XenoborgsRule + diff --git a/Resources/Prototypes/Reagents/Materials/materials.yml b/Resources/Prototypes/Reagents/Materials/materials.yml index 42ae9ba4b78..45f73dd62c8 100644 --- a/Resources/Prototypes/Reagents/Materials/materials.yml +++ b/Resources/Prototypes/Reagents/Materials/materials.yml @@ -141,3 +141,12 @@ icon: { sprite: Objects/Materials/materials.rsi, state: diamond } color: "#80ffff" price: 20 # big diamond gaslit us so hard diamonds actually became extremely rare + +- type: material + id: XenoborgCrystal + stackEntity: MaterialXenoborgCrystal1 + name: materials-xenoborg-crystal + unit: materials-unit-piece + icon: { sprite: Objects/Materials/xenoborg_crystal.rsi, state: crystal-1 } + color: "#3d94ff" + price: 2 # $200 for 1 unit # crystal pretty! diff --git a/Resources/Prototypes/Recipes/Lathes/Packs/xenoborgs.yml b/Resources/Prototypes/Recipes/Lathes/Packs/xenoborgs.yml index 1ae6a3cf07e..383bc712372 100644 --- a/Resources/Prototypes/Recipes/Lathes/Packs/xenoborgs.yml +++ b/Resources/Prototypes/Recipes/Lathes/Packs/xenoborgs.yml @@ -1,5 +1,10 @@ ## Static +- type: latheRecipePack + id: XenoborgMachines + recipes: + - XenoborgExtractorRecipe + - type: latheRecipePack id: EmptyXenoborgs recipes: diff --git a/Resources/Prototypes/Recipes/Lathes/xenoborgs.yml b/Resources/Prototypes/Recipes/Lathes/xenoborgs.yml index 38e97b4005f..b0da4cea501 100644 --- a/Resources/Prototypes/Recipes/Lathes/xenoborgs.yml +++ b/Resources/Prototypes/Recipes/Lathes/xenoborgs.yml @@ -1,5 +1,12 @@ # Base prototypes +- type: latheRecipe + abstract: true + id: BaseXenoborgMachineRecipe + categories: + - Machines + completetime: 2 + - type: latheRecipe abstract: true id: BaseXenoborgRecipe @@ -14,6 +21,15 @@ - Modules completetime: 2 +# machines + +- type: latheRecipe + parent: BaseXenoborgMachineRecipe + id: XenoborgExtractorRecipe + result: XenoborgExtractorFlatpack + materials: + Steel: 1000 + # xenoborgs - type: latheRecipe @@ -21,31 +37,28 @@ id: XenoborgEngiRecipe result: XenoborgEngiPrinted materials: - Steel: 3000 + XenoborgCrystal: 100 - type: latheRecipe parent: BaseXenoborgRecipe id: XenoborgHeavyRecipe result: XenoborgHeavyPrinted materials: - Steel: 2000 - Plasteel: 1000 + XenoborgCrystal: 100 - type: latheRecipe parent: BaseXenoborgRecipe id: XenoborgScoutRecipe result: XenoborgScoutPrinted materials: - Steel: 2000 - Plastic: 1000 + XenoborgCrystal: 100 - type: latheRecipe parent: BaseXenoborgRecipe id: XenoborgStealthRecipe result: XenoborgStealthPrinted materials: - Steel: 2000 - Glass: 1000 + XenoborgCrystal: 100 # modules @@ -56,8 +69,7 @@ id: XenoborgModuleDoorControlRecipe result: XenoborgModuleDoorControl materials: - Steel: 1500 - Glass: 1500 + XenoborgCrystal: 100 ## heavy xenoborg modules @@ -66,8 +78,7 @@ id: XenoborgModuleHeavyLaserRecipe result: XenoborgModuleHeavyLaser materials: - Steel: 1500 - Glass: 1500 + XenoborgCrystal: 100 ## scout xenoborg modules @@ -76,8 +87,7 @@ id: XenoborgModuleEnergySwordRecipe result: XenoborgModuleEnergySword materials: - Steel: 1500 - Glass: 1500 + XenoborgCrystal: 100 ## stealth xenoborg modules @@ -86,4 +96,4 @@ id: XenoborgModuleSuperCloakDeviceRecipe result: XenoborgModuleSuperCloakDevice materials: - Glass: 3000 + XenoborgCrystal: 100 diff --git a/Resources/Prototypes/Stacks/Specific/xenoborg.yml b/Resources/Prototypes/Stacks/Specific/xenoborg.yml new file mode 100644 index 00000000000..1a535884ba3 --- /dev/null +++ b/Resources/Prototypes/Stacks/Specific/xenoborg.yml @@ -0,0 +1,6 @@ +- type: stack + parent: BaseSmallStack + id: XenoborgCrystal + name: stack-xenoborg-circuit + icon: { sprite: "/Textures/Objects/Materials/xenoborg_crystal.rsi", state: crystal-3 } + spawn: MaterialXenoborgCrystal1 diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 3aae89c4ae5..f86b6a7b84a 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -1563,6 +1563,9 @@ ## X ## +- type: Tag + id: XenoborgCrystal # MaterialStorage whitelist: Mothership core + - type: Tag id: XenoborgGhostrole # spawn whitelist : SpawnPointGhostRoleXenoborg diff --git a/Resources/ServerInfo/Guidebook/Antagonist/Xenoborgs.xml b/Resources/ServerInfo/Guidebook/Antagonist/Xenoborgs.xml index 6cf0894e28a..ed07d4ba484 100644 --- a/Resources/ServerInfo/Guidebook/Antagonist/Xenoborgs.xml +++ b/Resources/ServerInfo/Guidebook/Antagonist/Xenoborgs.xml @@ -16,7 +16,9 @@ ## Objectives Your main objective is to kill and harvest all sentient brains in the station and bring them to the mothership core. These can be both real brains, and positronic brains. - Collect materials to create more xenoborg bodies. + + Steal power from the station using xenoborg extractors to produce xenoborg crystals to create more xenoborg bodies. + Protect the Mothership at all costs. ## The Mothership Core @@ -74,6 +76,11 @@ + [bold]Upgrade exclusive modules:[/bold] + + + + ### The Heavy Xenoborg @@ -88,7 +95,7 @@ [bold]Upgrade exclusive modules:[/bold] - + ### The Scout Xenoborg @@ -125,19 +132,41 @@ [bold]Upgrade exclusive modules:[/bold] - + + + + ## Xenoborg extractors + + + + Its a machine necessary for the xenoborgs to grow their army. It can steal power from cables connected to it and then produce xenoborg crystals. + + The mothership core can produce a xenoborg extractor flatpack for 10 steel. + + Once its anchored on top of a cable it needs to be set to that cable voltage to start draining power. + + Once it's battery is full it will produce one xenoborg crystal. + + It drains different amounts of power depending on the voltage. + - low voltage - 16kW - 2 minutes and 5 seconds to produce one xenoborg circuit. + - medium voltage - 50kW - 40 seconds to produce one xenoborg circuit. + - high voltage - 200kW - 10 seconds to produce one xenoborg circuit. + + Attention! at the highest voltage it will trigger the rogue power consuming device alert! and anyone using the power monitor device will know something is wrong. ## Preparation and Tactics Before FTLing near the station, make sure the IFF is off. + Before launching an attack, xenoborgs should discuss strategy and decide which targets to strike first. + Xenoborgs should try to collect sentient brains without being detected. The longer the threat is unknown, the more dangerous the xenoborgs become. ## Mothership and Xenoborg lawsets The Mothership and Xenoborgs have unique laws that define their purpose to self replicate and protect the Mothership. - + The Mothership Core's laws are as follows:: diff --git a/Resources/Textures/Objects/Materials/xenoborg_crystal.rsi/crystal-1.png b/Resources/Textures/Objects/Materials/xenoborg_crystal.rsi/crystal-1.png new file mode 100644 index 0000000000000000000000000000000000000000..bf2eb97a3f5dada97937e7853843ce3bd96a5269 GIT binary patch literal 482 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Structures/Machines/xenoborg_extractor.rsi/meta.json b/Resources/Textures/Structures/Machines/xenoborg_extractor.rsi/meta.json new file mode 100644 index 00000000000..4ebc1ff4b8e --- /dev/null +++ b/Resources/Textures/Structures/Machines/xenoborg_extractor.rsi/meta.json @@ -0,0 +1,40 @@ +{ + "version": 1, + "license":"CC-BY-SA-3.0", + "copyright":"Made by Samuka-C (github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "light", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "running", + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + } + ] +} diff --git a/Resources/Textures/Structures/Machines/xenoborg_extractor.rsi/running.png b/Resources/Textures/Structures/Machines/xenoborg_extractor.rsi/running.png new file mode 100644 index 0000000000000000000000000000000000000000..6d1b1e1f911a9656adb34e1d5946ca81aef71f3f GIT binary patch literal 828 zcmV-C1H=4@P)Px%_DMuRRCt{2n%`;@K@`Tnh^3_|E!hwf3L?EREaW08f>lxT64FN~d7$DW6yKnQ zq8CcN5-)@h+u~hl2s^>xdb{3am&xqR>})bSE6w>JB$&hZ7BYdh-^OG-(Y9$c8@Rr@amG&tAclMOnpHRprWg)}+TdPa z-6X%hE539E1dPF}*HVq+NySSk8Jt_Ps=9bg6PfTE%?1EqGM=o&*B*kS(HNugEdXG@ z*;*KYpMWS;oypeX+o<^bN@2k?bzynDaewI9mRja$HPPz%`>dr6Dv`>O@ zeHLG*y!_1DU>MGT5}yN9d|L;#G5{=?VsmQ)2M-@8>veri+b+WogxjRJ1@iDyOTzP7 zQMI}Y|IvZ6lQ@Aockrm{20wox3};~MR=W*M_&Vj~i<5~ueiy(0{9Pyv!&$Ny>Z z8Gv3q5fi!OO9QY@$_zkVc(PixEU${@rvi|1NUfrZ$u=mP&+9FKD1LSPZq)I+(K2Q8 zvGU3ZUl(by)5rOHZ;3Jh_>_Ik{}rD^B9TZW5{Y!DMg9O)WAX=ZB7Xq+1J=YJP)2^< zHD6?>R)FjLyi2~AIffX3GV=2-`Le(k;t!DJ?rr-6bbMJ|z?k%3;#2@k^7GK-;C1O~ zTmAqYKdVmELI6zj^H~N3m2CL~Z2A)l@dwy6SrzS1u Date: Sat, 28 Feb 2026 01:09:24 +0000 Subject: [PATCH 423/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index c36e8b3e30a..8abf32c997a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: jessicamaybe - changes: - - message: Gorillas can now pull objects. - type: Tweak - id: 9040 - time: '2025-10-07T09:31:46.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40700 - author: SurrealShibe changes: - message: Added the nutri-batard to mime survival boxes in place of the nutri-brick. @@ -3990,3 +3983,16 @@ id: 9550 time: '2026-02-27T16:02:04.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42960 +- author: Samuka + changes: + - message: 'EXPERIMENTAL: Added the xenoborg crystal!' + type: Add + - message: 'EXPERIMENTAL: Added the xenoborg extractor which can produce the xenoborg + crystal.' + type: Add + - message: 'EXPERIMENTAL: The recipes to make xenoborg chassis and xenoborg modules + now uses xenoborg crystals instead of normal materials.' + type: Tweak + id: 9551 + time: '2026-02-28T01:08:13.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42796 From adc66057ade41e3553cd8dc94fc209b936b47df2 Mon Sep 17 00:00:00 2001 From: TytosB <54259736+TytosB@users.noreply.github.com> Date: Sat, 28 Feb 2026 00:56:45 -0600 Subject: [PATCH 424/603] Adding serpentcrest to map pool + overhauling several rooms (#43061) * whoopsie * okay no new job slots --- Resources/Maps/serpentcrest.yml | 9498 ++++++++++--------- Resources/Prototypes/Maps/Pools/default.yml | 1 + 2 files changed, 4983 insertions(+), 4516 deletions(-) diff --git a/Resources/Maps/serpentcrest.yml b/Resources/Maps/serpentcrest.yml index b70a98980a0..7c51c6a0cd2 100644 --- a/Resources/Maps/serpentcrest.yml +++ b/Resources/Maps/serpentcrest.yml @@ -4,8 +4,8 @@ meta: engineVersion: 272.0.0 forkId: "" forkVersion: "" - time: 02/23/2026 05:21:11 - entityCount: 28876 + time: 02/27/2026 19:16:05 + entityCount: 28985 maps: - 1 grids: @@ -29,14 +29,17 @@ tilemap: 13: FloorDark 32: FloorDarkDiagonalMini 43: FloorDarkHerringbone + 46: FloorDarkMini 33: FloorDarkMono 31: FloorDarkPavement + 47: FloorDesertAstroSand 11: FloorDirt 10: FloorFreezer 22: FloorGold 41: FloorGrayConcreteMono 12: FloorKitchen 40: FloorLaundry + 48: FloorLowDesert 44: FloorMetalFoam 39: FloorMime 14: FloorMowedAstroGrass @@ -85,7 +88,7 @@ entities: chunks: 0,0: ind: 0,0 - tiles: AwAAAAAMAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAACwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAAFAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAADAAMAAAAAAAADAAAAAAMAAwAAAAAAAAMAAAAAAAADAAAAAAQAAwAAAAAAAAMAAAAAAAADAAAAAAgAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAgAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAIAHwAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACgADAAAAAAAAAwAAAAAAAAAAAAAAAAAlAAAAAAAADQAAAAAAAA0AAAAAAAAlAAAAAAAAHwAAAAAAAB8AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAQADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAAJQAAAAAAAB8AAAAAAAAfAAAAAAMADQAAAAABAA0AAAAAAwANAAAAAAEADQAAAAAAAA0AAAAAAAAAAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAACUAAAAAAAAAAAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAAAHwAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAAJQAAAAAAAAAAAAAAAAAlAAAAAAAADQAAAAAAAA0AAAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAlAAAAAAAADQAAAAAAACUAAAAAAAAAAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAADQAAAAABAA0AAAAAAQAAAAAAAAAAJQAAAAAAAA0AAAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAABIAAAAAAwASAAAAAAEAAAAAAAAAACUAAAAAAAANAAAAAAAAJQAAAAAAAA0AAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAASAAAAAAAAEgAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAEgAAAAAAABIAAAAAAwAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAABIAAAAAAAASAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAeAAAAAAIAAAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAEgAAAAADACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAHgAAAAABAB4AAAAAAQAAAAAAAAAADQAAAAAAAA0AAAAAAAAlAAAAAAAAAAAAAAAAACoAAAAAAwAqAAAAAAEAEgAAAAADABIAAAAAAwAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAAqAAAAAAAAKgAAAAABAA== + tiles: AwAAAAAMAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAACwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAAFAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAADAAMAAAAAAAADAAAAAAMAAwAAAAAAAAMAAAAAAAADAAAAAAQAAwAAAAAAAAMAAAAAAAADAAAAAAgAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAgAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAIAHwAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACgADAAAAAAAAAwAAAAAAAAAAAAAAAAAlAAAAAAAADQAAAAAAAA0AAAAAAAAlAAAAAAAAHwAAAAAAAB8AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAQADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAAJQAAAAAAAB8AAAAAAAAfAAAAAAMADQAAAAABAA0AAAAAAwANAAAAAAEADQAAAAAAAA0AAAAAAAAAAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAACUAAAAAAAAAAAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAAAHwAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAAJQAAAAAAAAAAAAAAAAAlAAAAAAAADQAAAAAAAA0AAAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAlAAAAAAAADQAAAAAAACUAAAAAAAAAAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAADQAAAAABAA0AAAAAAQAAAAAAAAAAJQAAAAAAAA0AAAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAABIAAAAAAwASAAAAAAEAAAAAAAAAACUAAAAAAAANAAAAAAAAJQAAAAAAAA0AAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAASAAAAAAAAEgAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAEgAAAAAAABIAAAAAAwAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAABIAAAAAAAASAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAEgAAAAADACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAAlAAAAAAAAAAAAAAAAACoAAAAAAwAqAAAAAAEAEgAAAAADABIAAAAAAwAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAAqAAAAAAAAKgAAAAABAA== version: 7 -1,0: ind: -1,0 @@ -93,7 +96,7 @@ entities: version: 7 -1,-1: ind: -1,-1 - tiles: BAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAAAwAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAkAAAAAAgAJAAAAAAMACQAAAAADAAAAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAJAAAAAAAACQAAAAADAAkAAAAAAQAAAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAACQAAAAABAAkAAAAAAQAJAAAAAAEAAAAAAAAAAAQAAAAAAAADAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAkAAAAAAwAJAAAAAAAACQAAAAABAAAAAAAAAAAEAAAAAAAAAwAAAAAIAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAABQAJAAAAAAAACQAAAAAAAAkAAAAAAQAAAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAACQAAAAADAAkAAAAAAAAJAAAAAAMAAAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAkAAAAAAgAJAAAAAAMACQAAAAAAAAAAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAcAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAMAAAAAAQAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAUAAwAAAAAJAAMAAAAACgADAAAAAAEAAwAAAAAAAA== + tiles: BAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAAAwAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAABQAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAcAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAUAAwAAAAAJAAMAAAAACgADAAAAAAEAAwAAAAAAAA== version: 7 0,-1: ind: 0,-1 @@ -117,11 +120,11 @@ entities: version: 7 -2,0: ind: -2,0 - tiles: HgAAAAABAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAAJAAAAAAAAAAAeAAAAAAIAHgAAAAABAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAIAAAAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAIAAAAAAIACAAAAAADAAgAAAAAAQAIAAAAAAAACAAAAAADAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAwAAAAAKAAMAAAAAAAAAAAAAAAAACAAAAAACAAgAAAAAAQAIAAAAAAIACAAAAAADAAgAAAAAAQACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAQAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAAAQADAAAAAAMAAAAAAAAAAAgAAAAAAwAIAAAAAAMACAAAAAABAAgAAAAAAwAIAAAAAAIAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAIAAAAAAEACAAAAAACAAgAAAAAAwAIAAAAAAAACAAAAAADAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAACAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAEAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAACUAAAAAAAAlAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAABAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABAADAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAAQAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAACAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAYAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAQAAAAAAAAAAA0AAAAAAAANAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAFAAMAAAAAAAADAAAAAAAAAwAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA== + tiles: AAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAAJAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAIAAAAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAIAAAAAAIACAAAAAADAAgAAAAAAQAIAAAAAAAACAAAAAADAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAwAAAAAKAAMAAAAAAAAAAAAAAAAACAAAAAACAAgAAAAAAQAIAAAAAAIACAAAAAADAAgAAAAAAQACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAQAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAAAQADAAAAAAMAAAAAAAAAAAgAAAAAAwAIAAAAAAMACAAAAAABAAgAAAAAAwAIAAAAAAIAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAIAAAAAAEACAAAAAACAAgAAAAAAwAIAAAAAAAACAAAAAADAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAACAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAEAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAACUAAAAAAAAlAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAABAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABAADAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAAQAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAACAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAYAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAQAAAAAAAAAAA0AAAAAAAANAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAFAAMAAAAAAAADAAAAAAAAAwAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA== version: 7 -2,-1: ind: -2,-1 - tiles: AgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAEAAMAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAwAAwAAAAAMAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAACAAAAAAAAAwAAAAAEAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAABAADAAAAAAAAAwAAAAAGAAMAAAAACgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAABAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAALAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAACQAAAAABAAkAAAAAAwAJAAAAAAIABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAkAAAAAAgAJAAAAAAMACQAAAAABAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAJAAAAAAIACQAAAAABAAkAAAAAAgAEAAAAAAAABAAAAAAAAAMAAAAABAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAALAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAACQAAAAABAAkAAAAAAAAJAAAAAAIABAAAAAAAAAQAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACwADAAAAAAAAAwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAMACQAAAAABAAQAAAAAAAAEAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAUAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAJAAAAAAEACQAAAAABAAkAAAAAAAAEAAAAAAAABAAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABwADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAACQAAAAACAAkAAAAAAgAJAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAABQADAAAAAAAAAwAAAAAAAAMAAAAABQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAEAAMAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAwAAwAAAAAMAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAACAAAAAAAAAwAAAAAEAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAABAADAAAAAAAAAwAAAAAGAAMAAAAACgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAALAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAABAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAALAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACwADAAAAAAAAAwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAUAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABwADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAABQADAAAAAAAAAwAAAAAAAAMAAAAABQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAA== version: 7 -1,-2: ind: -1,-2 @@ -157,7 +160,7 @@ entities: version: 7 -3,0: ind: -3,0 - tiles: DQAAAAACABIAAAAAAgASAAAAAAIAEgAAAAACAA0AAAAAAgANAAAAAAIADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAEAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAEAAAAAAAAAAB4AAAAAAQAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA0AAAAAAwANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAANAAAAAAIADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: DQAAAAACABIAAAAAAgASAAAAAAIAEgAAAAACAA0AAAAAAgANAAAAAAIADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAEAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA0AAAAAAwANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAANAAAAAAIADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -3,-1: ind: -3,-1 @@ -173,7 +176,7 @@ entities: version: 7 -3,-2: ind: -3,-2 - tiles: CAAAAAABAAgAAAAAAgAIAAAAAAAACAAAAAABAAAAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAAAAAAAAAAAAJwAAAAAAACcAAAAAAAAnAAAAAAAAJwAAAAAAAAAAAAAAAAAmAAAAAAAAJgAAAAAAAAgAAAAAAQAIAAAAAAMACAAAAAADAAgAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAIAAAAAAAAAAAgAAAAAAAAnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYAAAAAAAAIAAAAAAIACAAAAAABAAgAAAAAAQAIAAAAAAEAAAAAAAAAAA0AAAAAAQAaAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAACAAAAAACAAgAAAAAAQAIAAAAAAMACAAAAAABAAAAAAAAAAANAAAAAAAAGgAAAAABAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACABoAAAAAAwANAAAAAAEAAAAAAAAAAAAAAAAAAAAGAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAQANAAAAAAIADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAAAAAAAAAAAAAAGAAAAAAIABgAAAAAAAAYAAAAAAAAGAAAAAAEABgAAAAAAAAYAAAAAAQAGAAAAAAIADQAAAAACABoAAAAAAgAaAAAAAAIAGgAAAAABAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAQAAAAAAAAAABgAAAAAAAAYAAAAAAwAGAAAAAAAABgAAAAAAAAYAAAAAAwAGAAAAAAMABgAAAAADAA0AAAAAAgANAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAAANAAAAAAMAAAAAAAAAAAYAAAAAAwAGAAAAAAIABgAAAAAAAAYAAAAAAAAGAAAAAAEABgAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAAAAABUAAAAAAAAAAAAAAAAAHwAAAAAAAB8AAAAAAQAAAAAAAAAACgAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAABUAAAAAAAAVAAAAAAAAAAAAAAAAAB8AAAAAAAAfAAAAAAEAAAAAAAAAAAoAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAIAAAAAAAAVAAAAAAAAFQAAAAAAAAAAAAAAAAAfAAAAAAAAHwAAAAABAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAACAAAAAAAAFQAAAAAAABUAAAAAAAAAAAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAMACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAA== + tiles: FwAAAAAAABcAAAAAAAAuAAAAAAAAFwAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAAAAAAAAAAAAJwAAAAAAACcAAAAAAAAnAAAAAAAAJwAAAAAAAAAAAAAAAAAmAAAAAAAAJgAAAAAAABcAAAAAAAAXAAAAAAAALgAAAAAAABcAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAIAAAAAAAAAAAgAAAAAAAAnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYAAAAAAAAXAAAAAAAAFwAAAAAAAC4AAAAAAAAXAAAAAAAAAAAAAAAAAA0AAAAAAQAaAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAFwAAAAAAABcAAAAAAAAuAAAAAAAAFwAAAAAAAAAAAAAAAAANAAAAAAAAGgAAAAABAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACABoAAAAAAwANAAAAAAEAAAAAAAAAAAAAAAAAAAAGAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAQANAAAAAAIADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAAAAAAAAAAAAAAGAAAAAAIABgAAAAAAAAYAAAAAAAAGAAAAAAEABgAAAAAAAAYAAAAAAQAGAAAAAAIADQAAAAACABoAAAAAAgAaAAAAAAIAGgAAAAABAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAQAAAAAAAAAABgAAAAAAAAYAAAAAAwAGAAAAAAAABgAAAAAAAAYAAAAAAwAGAAAAAAMABgAAAAADAA0AAAAAAgANAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAAANAAAAAAMAAAAAAAAAAAYAAAAAAwAGAAAAAAIABgAAAAAAAAYAAAAAAAAGAAAAAAEABgAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAAAAABUAAAAAAAAAAAAAAAAAHwAAAAAAAB8AAAAAAQAAAAAAAAAACgAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAABUAAAAAAAAVAAAAAAAAAAAAAAAAAB8AAAAAAAAfAAAAAAEAAAAAAAAAAAoAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAIAAAAAAAAVAAAAAAAAFQAAAAAAAAAAAAAAAAAfAAAAAAAAHwAAAAABAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAACAAAAAAAAFQAAAAAAABUAAAAAAAAAAAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAMACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAA== version: 7 -2,-3: ind: -2,-3 @@ -181,11 +184,11 @@ entities: version: 7 1,-3: ind: 1,-3 - tiles: FAAAAAADABQAAAAAAQAAAAAAAAAADQAAAAAAAA0AAAAAAwAbAAAAAAMADQAAAAAAAAAAAAAAAAANAAAAAAAAEgAAAAAAAA0AAAAAAgAAAAAAAAAACAAAAAABAAgAAAAAAAAIAAAAAAEACAAAAAADABQAAAAAAgAUAAAAAAIAAAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAABsAAAAABAAAAAAAAAAADQAAAAAAABIAAAAAAQANAAAAAAEAAAAAAAAAAAgAAAAAAQAIAAAAAAAACAAAAAABAAgAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAIAAAAAAAAAABsAAAAAAAANAAAAAAIAAAAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAADAAAAAAAAAAAIAAAAAAIACAAAAAADAAgAAAAAAgAIAAAAAAEAFAAAAAAAABQAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACABQAAAAAAQAUAAAAAAEAAAAAAAAAABQAAAAAAQAbAAAAAAAAFAAAAAAAABQAAAAAAgAAAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAwAUAAAAAAMAFAAAAAADAAAAAAAAAAAUAAAAAAMAFAAAAAADABQAAAAAAgAUAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAIAFAAAAAADABQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAIAFAAAAAADAAAAAAAAAAANAAAAAAMAGwAAAAADAAAAAAAAAAAaAAAAAAMAGgAAAAADABoAAAAAAgAaAAAAAAIADQAAAAABABQAAAAAAQAUAAAAAAMAFAAAAAACABQAAAAAAAAUAAAAAAMAFAAAAAAAABQAAAAAAwAAAAAAAAAADQAAAAACAAAAAAAAAAAeAAAAAAEAHgAAAAABAB4AAAAAAAAaAAAAAAIAGgAAAAABAA0AAAAAAwAUAAAAAAMAFAAAAAAAAAAAAAAAAAAUAAAAAAIAFAAAAAAAABQAAAAAAAAUAAAAAAMADQAAAAAAAA0AAAAAAgAbAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAA0AAAAAAwANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAgAeAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAA0AAAAAAwAAAAAAAAAAJAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAADQAAAAADAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA== + tiles: FAAAAAADABQAAAAAAQAAAAAAAAAADQAAAAAAAA0AAAAAAwAbAAAAAAMADQAAAAAAAAAAAAAAAAANAAAAAAAAEgAAAAAAAA0AAAAAAgAAAAAAAAAACAAAAAABAAgAAAAAAAAIAAAAAAEACAAAAAADABQAAAAAAgAUAAAAAAIAAAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAABsAAAAABAAAAAAAAAAADQAAAAAAABIAAAAAAQANAAAAAAEAAAAAAAAAAAgAAAAAAQAIAAAAAAAACAAAAAABAAgAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAIAAAAAAAAAABsAAAAAAAANAAAAAAIAAAAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAADAAAAAAAAAAAIAAAAAAIACAAAAAADAAgAAAAAAgAIAAAAAAEAFAAAAAAAABQAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACABQAAAAAAQAUAAAAAAEAAAAAAAAAABQAAAAAAQAbAAAAAAAAFAAAAAAAABQAAAAAAgAAAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAwAUAAAAAAMAFAAAAAADAAAAAAAAAAAUAAAAAAMAFAAAAAADABQAAAAAAgAUAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAIAFAAAAAADABQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAIAFAAAAAADAAAAAAAAAAANAAAAAAMAGwAAAAADAAAAAAAAAAAaAAAAAAMAGgAAAAADABoAAAAAAgAaAAAAAAIADQAAAAABABQAAAAAAQAUAAAAAAMAFAAAAAACABQAAAAAAAAUAAAAAAMAFAAAAAAAABQAAAAAAwAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAAAIAGgAAAAABAA0AAAAAAwAUAAAAAAMAFAAAAAAAAAAAAAAAAAAUAAAAAAIAFAAAAAAAABQAAAAAAAAUAAAAAAMADQAAAAAAAA0AAAAAAgAbAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAA0AAAAAAwANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAgAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAA0AAAAAAwAAAAAAAAAAJAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAADQAAAAADAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA== version: 7 2,-2: ind: 2,-2 - tiles: DQAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAIADQAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAADAAAAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAAAIAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAACAAAAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAIAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAGgAAAAAAAA0AAAAAAwAAAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAABoAAAAAAAAbAAAAAAIAAAAAAAAAACEAAAAAAAAhAAAAAAEAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAEADQAAAAACAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAgANAAAAAAIAAAAAAAAAAB4AAAAAAQAeAAAAAAIAAAAAAAAAAA0AAAAAAwACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAMADQAAAAACABsAAAAABAAeAAAAAAAAAAAAAAAAACEAAAAAAgANAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAADAA0AAAAAAQANAAAAAAAADQAAAAABAAAAAAAAAAAhAAAAAAEAIQAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAQANAAAAAAEAAAAAAAAAAA0AAAAAAwANAAAAAAIAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAEADQAAAAADAAAAAAAAAAANAAAAAAAADQAAAAADAA== + tiles: DQAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAIADQAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAADAAAAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAAAIAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAACAAAAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAIAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAGgAAAAAAAA0AAAAAAwAAAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAABoAAAAAAAAbAAAAAAIAAAAAAAAAACEAAAAAAAAhAAAAAAEAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAEADQAAAAACAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAgANAAAAAAIAHgAAAAAAAAAAAAAAAAAeAAAAAAIAAAAAAAAAAA0AAAAAAwACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAMADQAAAAACABsAAAAABAAAAAAAAAAAAAAAAAAAACEAAAAAAgANAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAADAA0AAAAAAQANAAAAAAAADQAAAAABAAAAAAAAAAAhAAAAAAEAIQAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAQANAAAAAAEAAAAAAAAAAA0AAAAAAwANAAAAAAIAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAEADQAAAAADAAAAAAAAAAANAAAAAAAADQAAAAADAA== version: 7 2,1: ind: 2,1 @@ -225,11 +228,11 @@ entities: version: 7 -3,1: ind: -3,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAIABgAAAAAAAAYAAAAAAQAGAAAAAAIABgAAAAACAAYAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAcAAAAAAAAGAAAAAAEABwAAAAAAAAYAAAAAAAAGAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -3,2: ind: -3,2 - tiles: BgAAAAACAAcAAAAAAAAGAAAAAAMABwAAAAAAAAYAAAAAAgAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAQAHAAAAAAAABgAAAAAAAAcAAAAAAAAGAAAAAAIABgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAEABwAAAAAAAAYAAAAAAgAHAAAAAAAABwAAAAAAAAYAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAACAAcAAAAAAAAGAAAAAAEABwAAAAAAAAcAAAAAAAAGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgAkAAAAAAAAJAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAANAAAAAAMAJAAAAAAAACQAAAAAAAAkAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAADQAAAAACACQAAAAAAAAkAAAAAAAAJAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA0AAAAAAQAkAAAAAAAAJAAAAAAAACQAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: BQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgAkAAAAAAAAJAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAANAAAAAAMAJAAAAAAAACQAAAAAAAAkAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAADQAAAAACACQAAAAAAAAkAAAAAAAAJAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA0AAAAAAQAkAAAAAAAAJAAAAAAAACQAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -4,2: ind: -4,2 @@ -237,7 +240,7 @@ entities: version: 7 -4,1: ind: -4,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAwAkAAAAAAAAJAAAAAAAACQAAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAgAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAwANAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAEADQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAgAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAgANAAAAAAIAAAAAAAAAAA0AAAAAAQANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAIADQAAAAACAAAAAAAAAAANAAAAAAEADQAAAAABAAAAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAgAAAAAAAAAADQAAAAACAA0AAAAAAwAAAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAMADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAIADQAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAAAAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAABAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAQAGAAAAAAMABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAMAEwAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAwAkAAAAAAAAJAAAAAAAACQAAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAgAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAwANAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAEADQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAgAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAgANAAAAAAIAAAAAAAAAAA0AAAAAAQANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAIADQAAAAACAAAAAAAAAAANAAAAAAEADQAAAAABAAAAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAgAAAAAAAAAADQAAAAACAA0AAAAAAwAAAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAMADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAIADQAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAAAAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAABAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAQAAAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAMAEwAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAA== version: 7 -4,0: ind: -4,0 @@ -249,7 +252,7 @@ entities: version: 7 -4,-2: ind: -4,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAEACAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACAAgAAAAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAgAAAAAAgAIAAAAAAIAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAIAAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQAbAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAB4AAAAAAQANAAAAAAMADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAQAAAAAAAAAAGwAAAAADAA0AAAAAAQAkAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAMAHgAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAMAAAAAAAAAAB8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwAbAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAEACAAAAAADAB8AAAAAAgAfAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgAaAAAAAAIADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAACAAAAAADAAgAAAAAAAAAAAAAAAAAHwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAGgAAAAADAA0AAAAAAAAAAAAAAAAAFQAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAABoAAAAAAQANAAAAAAIAAAAAAAAAABUAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAADAAAAAAAAAAAfAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAAAAAAAAAAAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAADAAgAAAAAAgAAAAAAAAAAHwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAgAAAAAAAAAAFQAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAC4AAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAABcAAAAAAAAuAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAXAAAAAAAALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQAbAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAAAAAAAAAAANAAAAAAMADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAADAA0AAAAAAQAkAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAMAAAAAAAAAAB8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwAbAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAEACAAAAAADAB8AAAAAAgAfAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgAaAAAAAAIADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAACAAAAAADAAgAAAAAAAAAAAAAAAAAHwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAGgAAAAADAA0AAAAAAAAAAAAAAAAAFQAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAABoAAAAAAQANAAAAAAIAAAAAAAAAABUAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAADAAAAAAAAAAAfAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAAAAAAAAAAAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAADAAgAAAAAAgAAAAAAAAAAHwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAgAAAAAAAAAAFQAAAAAAAA== version: 7 -2,-4: ind: -2,-4 @@ -257,7 +260,7 @@ entities: version: 7 -1,-4: ind: -1,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAA0AAAAAAQAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACABgAAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAEAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAA0AAAAAAAAYAAAAAAEAGAAAAAABABgAAAAAAAAYAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAANAAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAMAGAAAAAABAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAABAA0AAAAAAgAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAADQAAAAADABgAAAAAAwAYAAAAAAEAGAAAAAADABgAAAAAAgAAAAAAAAAADQAAAAACAA0AAAAAAgAAAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAA0AAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAgAYAAAAAAMAAAAAAAAAAA0AAAAAAgANAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEAGAAAAAADABgAAAAAAQAYAAAAAAEAGAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAADAAAAAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAwANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAIADQAAAAACAA0AAAAAAAAAAAAAAAAAHgAAAAAAAB4AAAAAAgAAAAAAAAAADQAAAAAAABIAAAAAAQASAAAAAAAAEgAAAAACAA0AAAAAAwANAAAAAAEADQAAAAABABIAAAAAAQASAAAAAAIAEgAAAAACAA0AAAAAAgANAAAAAAAADQAAAAACAAAAAAAAAAAeAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAQAUAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAADACAAAAAAAgAgAAAAAAIAAAAAAAAAAAAAAAAAAAANAAAAAAMAFAAAAAABABQAAAAAAAAUAAAAAAMAIwAAAAABACMAAAAAAwAjAAAAAAAAIwAAAAABACMAAAAAAwAjAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAADAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAA0AAAAAAQAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACABgAAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAEAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAA0AAAAAAAAYAAAAAAEAGAAAAAABABgAAAAAAAAYAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAANAAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAMAGAAAAAABAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAABAA0AAAAAAgAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAADQAAAAADABgAAAAAAwAYAAAAAAEAGAAAAAADABgAAAAAAgAAAAAAAAAADQAAAAACAA0AAAAAAgAAAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAA0AAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAgAYAAAAAAMAAAAAAAAAAA0AAAAAAgANAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEAGAAAAAADABgAAAAAAQAYAAAAAAEAGAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAADAAAAAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAwANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAIADQAAAAACAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAABIAAAAAAQASAAAAAAAAEgAAAAACAA0AAAAAAwANAAAAAAEADQAAAAABABIAAAAAAQASAAAAAAIAEgAAAAACAA0AAAAAAgANAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAQAUAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAADACAAAAAAAgAgAAAAAAIAAAAAAAAAAAAAAAAAAAANAAAAAAMAFAAAAAABABQAAAAAAAAUAAAAAAMAIwAAAAABACMAAAAAAwAjAAAAAAAAIwAAAAABACMAAAAAAwAjAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAADAA== version: 7 0,-4: ind: 0,-4 @@ -265,7 +268,7 @@ entities: version: 7 1,-4: ind: 1,-4 - tiles: AAAAAAAAAAAAAAAAAAAeAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAHgAAAAABACQAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAABQAIAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAMACAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABABkAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAACAAgAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAAAEAAAAAAAAAAAIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACAAgAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAgAIAAAAAAEACAAAAAADAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAIACAAAAAADAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACAAgAAAAAAwAIAAAAAAMAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADABIAAAAAAAASAAAAAAEAEgAAAAADAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAgAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAQAbAAAAAAMAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAADQAAAAABABsAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIAEgAAAAAAAA0AAAAAAwAAAAAAAAAACAAAAAACAAgAAAAAAgAIAAAAAAEACAAAAAABAA== + tiles: AAAAAAAAAAAAAAAAAAAeAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAHgAAAAABACQAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAABQAIAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAMACAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABABkAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAACAAgAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAAAEAAAAAAAAAAAIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACAAgAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAgAIAAAAAAEACAAAAAADAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAIACAAAAAADAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACAAgAAAAAAwAIAAAAAAMAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADABIAAAAAAAASAAAAAAEAEgAAAAADAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAgAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAQAbAAAAAAMAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAADQAAAAABABsAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIAEgAAAAAAAA0AAAAAAwAAAAAAAAAACAAAAAACAAgAAAAAAgAIAAAAAAEACAAAAAABAA== version: 7 3,-2: ind: 3,-2 @@ -301,7 +304,7 @@ entities: version: 7 2,-4: ind: 2,-4 - tiles: AAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAQANAAAAAAIADQAAAAACAA0AAAAAAgAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAQANAAAAAAIAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAABAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAgANAAAAAAIADQAAAAABAA0AAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAALwAAAAAAAC8AAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAC8AAAAAAAAvAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAAALwAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAQANAAAAAAIADQAAAAACAA0AAAAAAgAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAQANAAAAAAIAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAABAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAgANAAAAAAIADQAAAAABAA0AAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAA== version: 7 -3,-4: ind: -3,-4 @@ -309,11 +312,11 @@ entities: version: 7 -3,-3: ind: -3,-3 - tiles: AAAAAAAAAA0AAAAAAAANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAQAPAAAAAAAADwAAAAADAA8AAAAAAwAIAAAAAAIACAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAMACAAAAAAAAAgAAAAAAgAAAAAAAAAAAAAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAIADwAAAAAAAAgAAAAAAQAIAAAAAAMAGQAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAQAIAAAAAAEACAAAAAACAAgAAAAAAQAIAAAAAAIACAAAAAACABkAAAAAAwAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAADAAgAAAAAAgAIAAAAAAAACAAAAAADAAgAAAAAAAAIAAAAAAEACAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAgAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAIAAAAAAAAA0AAAAAAwASAAAAAAIADQAAAAABAA0AAAAAAgANAAAAAAEAGgAAAAABABoAAAAAAAAaAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAIAJAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMAEgAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAMADQAAAAABAAgAAAAAAQAIAAAAAAAACAAAAAABAAgAAAAAAQAAAAAAAAAADQAAAAAAABIAAAAAAQANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAADAAgAAAAAAgAIAAAAAAIAAAAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAADAAAAAAAAAAAnAAAAAAAAJwAAAAAAACcAAAAAAAAnAAAAAAAAAAAAAAAAACYAAAAAAAAmAAAAAAAACAAAAAABAAgAAAAAAwAIAAAAAAEACAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAgAAAAAAAAAAJwAAAAAAACcAAAAAAAAnAAAAAAAAJwAAAAAAAAAAAAAAAAAmAAAAAAAAJgAAAAAAAA== + tiles: AAAAAAAAAA0AAAAAAAANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAQAPAAAAAAAADwAAAAADAA8AAAAAAwAIAAAAAAIACAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAMACAAAAAAAAAgAAAAAAgAAAAAAAAAAAAAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAIADwAAAAAAAAgAAAAAAQAIAAAAAAMAGQAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAQAIAAAAAAEACAAAAAACAAgAAAAAAQAIAAAAAAIACAAAAAACABkAAAAAAwAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAADAAgAAAAAAgAIAAAAAAAACAAAAAADAAgAAAAAAAAIAAAAAAEACAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAgAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAIAAAAAAAAA0AAAAAAwASAAAAAAIADQAAAAABAA0AAAAAAgANAAAAAAEAGgAAAAABABoAAAAAAAAaAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAIAJAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMAEgAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAMADQAAAAABAAgAAAAAAQAIAAAAAAAACAAAAAABAAgAAAAAAQAAAAAAAAAADQAAAAAAABIAAAAAAQANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAADAAAAAAAAAAAnAAAAAAAAJwAAAAAAACcAAAAAAAAnAAAAAAAAAAAAAAAAACYAAAAAAAAmAAAAAAAALgAAAAAAAC4AAAAAAAAuAAAAAAAAFwAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAgAAAAAAAAAAJwAAAAAAACcAAAAAAAAnAAAAAAAAJwAAAAAAAAAAAAAAAAAmAAAAAAAAJgAAAAAAAA== version: 7 -4,-3: ind: -4,-3 - tiles: AgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABABkAAAAABAAIAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAAAgAAAAAAQAAAAAAAAAAGQAAAAABAAAAAAAAAAAZAAAAAAMAGQAAAAAGAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAADAAgAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAABkAAAAAAQAIAAAAAAEACAAAAAAAABkAAAAAAwAZAAAAAAAAGQAAAAAFAAgAAAAAAgAZAAAAAAAACAAAAAABABkAAAAAAAAIAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAIAAAAAAMAGQAAAAAGAAgAAAAAAQAZAAAAAAMACAAAAAAAAAgAAAAAAwAIAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAGQAAAAACAAgAAAAAAgAZAAAAAAUACAAAAAADAAgAAAAAAQAIAAAAAAIAGQAAAAAEAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAABkAAAAAAQAZAAAAAAIACAAAAAADABkAAAAAAQAZAAAAAAAACAAAAAADAAgAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAMACAAAAAACAAgAAAAAAwAZAAAAAAQAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAHgAAAAACAB4AAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAABgAIAAAAAAMAGQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAACAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAZAAAAAAIAHgAAAAABAAAAAAAAAAAeAAAAAAEAAAAAAAAAAAAAAAAAAAAeAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAACAAAAAABABkAAAAAAQAZAAAAAAEAAAAAAAAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAwAIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABABkAAAAABAAIAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAAAgAAAAAAQAAAAAAAAAAGQAAAAABAAAAAAAAAAAZAAAAAAMAGQAAAAAGAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAADAAgAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAABkAAAAAAQAIAAAAAAEACAAAAAAAABkAAAAAAwAZAAAAAAAAGQAAAAAFAAgAAAAAAgAZAAAAAAAACAAAAAABABkAAAAAAAAIAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAIAAAAAAMAGQAAAAAGAAgAAAAAAQAZAAAAAAMACAAAAAAAAAgAAAAAAwAIAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAGQAAAAACAAgAAAAAAgAZAAAAAAUACAAAAAADAAgAAAAAAQAIAAAAAAIAGQAAAAAEAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAABkAAAAAAQAZAAAAAAIACAAAAAADABkAAAAAAQAZAAAAAAAACAAAAAADAAgAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAMACAAAAAACAAgAAAAAAwAZAAAAAAQAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAHgAAAAACAB4AAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAABgAIAAAAAAMAGQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAACAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAZAAAAAAIAHgAAAAABAAAAAAAAAAAeAAAAAAEAAAAAAAAAAAAAAAAAAAAeAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAACAAAAAABABkAAAAAAQAZAAAAAAEAAAAAAAAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAALgAAAAAAAA== version: 7 3,2: ind: 3,2 @@ -329,11 +332,11 @@ entities: version: 7 3,-1: ind: 3,-1 - tiles: DQAAAAACAA0AAAAAAgAAAAAAAAAAIQAAAAAAACEAAAAAAwAhAAAAAAAAIQAAAAADACEAAAAAAQAhAAAAAAEAIQAAAAADACEAAAAAAQAhAAAAAAEAIQAAAAADACEAAAAAAgAhAAAAAAEAIQAAAAADAA0AAAAAAwANAAAAAAAADQAAAAABACEAAAAAAAAhAAAAAAEAIQAAAAACACEAAAAAAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAAAAAAAAAAAhAAAAAAEAIQAAAAADACEAAAAAAAAhAAAAAAIAIQAAAAADAA0AAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAgAAAAAAAAAAIQAAAAAAACEAAAAAAgAhAAAAAAAAIQAAAAACACEAAAAAAwAAAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIAAAAAAAAAACEAAAAAAQAhAAAAAAAAIQAAAAABACEAAAAAAQAhAAAAAAMAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAADAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAAACEAAAAAAQAhAAAAAAIAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAIQAAAAADAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAEwAAAAAAACEAAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAEwAAAAAAABMAAAAAAAAhAAAAAAEADQAAAAADAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAQATAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAA== + tiles: DQAAAAACAA0AAAAAAgAAAAAAAAAAIQAAAAAAACEAAAAAAwAhAAAAAAAAIQAAAAADACEAAAAAAQAhAAAAAAEAIQAAAAADACEAAAAAAQAhAAAAAAEAIQAAAAADACEAAAAAAgAhAAAAAAEAIQAAAAADAA0AAAAAAwANAAAAAAAADQAAAAABACEAAAAAAAAhAAAAAAEAIQAAAAACACEAAAAAAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAAAAAAAAAAAhAAAAAAEAIQAAAAADACEAAAAAAAAhAAAAAAIAIQAAAAADAA0AAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAgAAAAAAAAAAIQAAAAAAACEAAAAAAgAhAAAAAAAAIQAAAAACACEAAAAAAwAAAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIAAAAAAAAAACEAAAAAAQAhAAAAAAAAIQAAAAABACEAAAAAAQAhAAAAAAMAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAADAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAAACEAAAAAAQAhAAAAAAIAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAIQAAAAADAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAEwAAAAAAACEAAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAEwAAAAAAABMAAAAAAAAhAAAAAAEADQAAAAADAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAA== version: 7 3,0: ind: 3,0 - tiles: EwAAAAAAABMAAAAAAAAhAAAAAAEADQAAAAACAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAwATAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEAAAAAAwAhAAAAAAEAIQAAAAADAA0AAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAIAEwAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAAACEAAAAAAAAhAAAAAAEAIQAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAABACEAAAAAAwAhAAAAAAIAIQAAAAACACEAAAAAAgAhAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAJAAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAQAAAAAAAAAAAAAAAAAAACEAAAAAAQATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAIQAAAAABAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAwANAAAAAAIAAAAAAAAAAAAAAAAAAAAhAAAAAAIAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAACACEAAAAAAAAAAAAAAAAAIQAAAAAAACEAAAAAAQAhAAAAAAMAIQAAAAACACEAAAAAAAAhAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAwANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAAAAAAAAAAAAAAhAAAAAAIAIQAAAAABACEAAAAAAwAhAAAAAAIAIQAAAAAAACEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAACACEAAAAAAwATAAAAAAAAIQAAAAABABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAhAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAACAA0AAAAAAwAhAAAAAAIAAAAAAAAAACEAAAAAAQATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAIQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAMAIQAAAAADAAAAAAAAAAAhAAAAAAIAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAACEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAACACEAAAAAAQAhAAAAAAEAIQAAAAADACEAAAAAAQAAAAAAAAAAIQAAAAADACEAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAAAAIAEwAAAAAAABMAAAAAAAATAAAAAAAAIQAAAAADAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAAAAIAIQAAAAACACEAAAAAAgAhAAAAAAEAIQAAAAADACEAAAAAAgAAAAAAAAAAIQAAAAAAACEAAAAAAQAhAAAAAAAAIQAAAAABACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAACEAAAAAAQAhAAAAAAEAAAAAAAAAAAAAAAAAAAAIAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: EwAAAAAAABMAAAAAAAAhAAAAAAEADQAAAAACAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEAAAAAAwAhAAAAAAEAIQAAAAADAA0AAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAAACEAAAAAAAAhAAAAAAEAIQAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAABACEAAAAAAwAhAAAAAAIAIQAAAAACACEAAAAAAgAhAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAJAAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAQAAAAAAAAAAAAAAAAAAACEAAAAAAQATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAIQAAAAABAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAwANAAAAAAIAAAAAAAAAAAAAAAAAAAAhAAAAAAIAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAACACEAAAAAAAAAAAAAAAAAIQAAAAAAACEAAAAAAQAhAAAAAAMAIQAAAAACACEAAAAAAAAhAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAwANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAAAAAAAAAAAAAAhAAAAAAIAIQAAAAABACEAAAAAAwAhAAAAAAIAIQAAAAAAACEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAACACEAAAAAAwATAAAAAAAAIQAAAAABABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAhAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAACAA0AAAAAAwAhAAAAAAIAAAAAAAAAACEAAAAAAQATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAIQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAMAIQAAAAADAAAAAAAAAAAhAAAAAAIAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAACEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAACACEAAAAAAQAhAAAAAAEAIQAAAAADACEAAAAAAQAAAAAAAAAAIQAAAAADACEAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAAAAIAEwAAAAAAABMAAAAAAAATAAAAAAAAIQAAAAADAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAAAAIAIQAAAAACACEAAAAAAgAhAAAAAAEAIQAAAAADACEAAAAAAgAAAAAAAAAAIQAAAAAAACEAAAAAAQAhAAAAAAAAIQAAAAABACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAACEAAAAAAQAhAAAAAAEAAAAAAAAAAAAAAAAAAAAIAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -4,3: ind: -4,3 @@ -409,7 +412,7 @@ entities: version: 7 1,-5: ind: 1,-5 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAHgAAAAACAAAAAAAAAAAeAAAAAAEAHgAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAHgAAAAACAAAAAAAAAAAeAAAAAAEAHgAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -2,-5: ind: -2,-5 @@ -429,7 +432,7 @@ entities: version: 7 1,-6: ind: 1,-6 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAA== version: 7 2,4: ind: 2,4 @@ -445,7 +448,7 @@ entities: version: 7 2,-5: ind: 2,-5 - tiles: AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAA== + tiles: AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAA== version: 7 -6,-3: ind: -6,-3 @@ -457,7 +460,7 @@ entities: version: 7 2,-6: ind: 2,-6 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAA== version: 7 4,3: ind: 4,3 @@ -737,30 +740,10 @@ entities: 3126: 56,-19 3127: 57,-19 3128: 58,-19 - 3153: -49,19 - 3154: -50,19 - 3155: -50,18 - 3156: -49,18 - 3157: -48,18 - 3158: -48,19 - 3159: -47,18 - 3161: -47,19 - 3162: -47,21 - 3163: -48,21 - 3164: -49,21 - 3165: -50,21 - 3166: -50,22 - 3167: -50,22 - 3168: -49,22 - 3169: -48,22 - 3170: -47,22 3201: -49,13 3202: -49,14 3203: -49,15 3204: -49,16 - 3205: -48,28 - 3206: -47,28 - 3207: -46,28 3337: 39,41 3338: 39,43 3339: 39,45 @@ -774,6 +757,23 @@ entities: 4595: 7,-20 4597: 9,-20 4598: 8,-20 + 4683: -48,33 + 4684: -48,32 + 4685: -47,32 + 4686: -47,33 + 4687: -47,33 + 4688: -48,34 + 4689: -47,34 + 4690: -47,35 + 4691: -48,35 + 4692: -44,35 + 4693: -45,35 + 4694: -45,34 + 4695: -44,34 + 4696: -44,33 + 4697: -45,33 + 4698: -45,32 + 4699: -44,32 - node: cleanable: True color: '#FFFFFFFF' @@ -1527,7 +1527,7 @@ entities: id: BrickTileWhiteCornerNe decals: 2456: 52,12 - 2583: 58,1 + 4676: 60,1 - node: color: '#A4610696' id: BrickTileWhiteCornerNe @@ -1651,6 +1651,7 @@ entities: decals: 2580: 50,-4 2657: 55,12 + 4675: 60,-1 - node: color: '#A4610696' id: BrickTileWhiteCornerSe @@ -1823,6 +1824,7 @@ entities: 2629: 54,6 2675: 55,14 2676: 54,12 + 4677: 59,-1 - node: color: '#A4610696' id: BrickTileWhiteInnerSe @@ -1925,8 +1927,6 @@ entities: 2564: 46,-3 2565: 46,0 2585: 50,-3 - 2587: 58,-1 - 2588: 58,0 2617: 54,5 2618: 54,4 2655: 55,13 @@ -1938,6 +1938,8 @@ entities: 3752: 36,-40 3753: 36,-41 4097: 52,9 + 4674: 60,0 + 4678: 59,-2 - node: color: '#A4610696' id: BrickTileWhiteLineE @@ -2101,6 +2103,8 @@ entities: 3759: 38,-42 3760: 39,-42 3761: 40,-42 + 4681: 58,1 + 4682: 59,1 - node: color: '#A4610696' id: BrickTileWhiteLineN @@ -2518,16 +2522,6 @@ entities: id: Bushh1 decals: 789: 69.995514,26.45039 - - node: - color: '#FFFFFFFF' - id: Bushj3 - decals: - 4512: -21.171469,-7.9889536 - - node: - color: '#FFFFFFFF' - id: Bushn1 - decals: - 4511: -21.202719,-7.5827036 - node: color: '#FFFFFFFF' id: Caution @@ -2536,6 +2530,7 @@ entities: 1956: -60,30 1957: -58,30 4508: 47,30 + 4671: 58,-4 - node: cleanable: True color: '#FFFFFFFF' @@ -2545,7 +2540,6 @@ entities: 1018: 45,16 1019: 45,18 1058: 53,-4 - 1059: 57,-4 - node: color: '#79150096' id: CheckerNESW @@ -2855,12 +2849,6 @@ entities: 2926: 4,41 2927: 8,41 2928: 6,36 - 3208: -50,24 - 3209: -49,24 - 3210: -49,24 - 3211: -48,24 - 3212: -47,24 - 3213: -46,24 3345: 42,44 3346: 42,43 3347: 42,42 @@ -2885,10 +2873,6 @@ entities: 984: 41,-21 985: 41,-22 987: 37,21 - 1060: 60,-1 - 1061: 59,-1 - 1062: 59,1 - 1063: 60,1 - node: angle: 1.5707963267948966 rad color: '#FFFFFFFF' @@ -2948,10 +2932,6 @@ entities: color: '#FFFFFFFF' id: Flowersbr3 decals: - 1275: -20.686207,-3.0998487 - 1276: -19.092457,-8.474849 - 1277: -13.404956,-8.490474 - 1278: -15.873706,-4.8185987 4558: 47.01717,34.88418 4559: 45.73592,35.024803 4560: 39.032795,34.868553 @@ -2977,9 +2957,6 @@ entities: color: '#FFFFFFFF' id: Flowerspv3 decals: - 1279: -16.186207,-5.6310987 - 1281: -18.826832,-3.4123487 - 1282: -20.701832,-7.9904737 4549: 45.698483,20.865236 4577: 29.368313,-38.67122 - node: @@ -2993,11 +2970,6 @@ entities: color: '#FFFFFFFF' id: Flowersy4 decals: - 1270: -14.873706,-3.3810987 - 1271: -13.498706,-6.1467237 - 1272: -15.654956,-8.006099 - 1273: -18.873707,-5.5529737 - 1274: -21.014332,-6.3967237 4548: 46.620358,20.896486 4551: 44.354733,20.802736 4552: 43.939045,35.04043 @@ -3015,35 +2987,10 @@ entities: 2048: -16,-58 2049: -14,-58 2050: -15,-59 - - node: - color: '#FFFFFFFF' - id: Grassa1 - decals: - 1252: -19.709545,-5.501563 - 1253: -19.428295,-8.860938 - 1254: -15.75642,-6.282813 - 1255: -13.748706,-7.8342237 - 1256: -13.623706,-4.1779737 - - node: - color: '#FFFFFFFF' - id: Grassa2 - decals: - 1251: -20.75642,-5.204688 - - node: - color: '#FFFFFFFF' - id: Grassa4 - decals: - 1257: -13.686206,-4.9904737 - 1258: -15.936206,-3.2248487 - 1259: -19.420582,-3.2092237 - 1260: -20.779957,-3.3342237 - 1261: -21.014332,-6.9592237 - 1262: -15.436206,-8.677974 - node: color: '#FFFFFFFF' id: Grassb1 decals: - 1263: -15.686206,-7.1935987 4544: 44.307858,20.943361 4571: 29.665188,-38.530594 4573: 29.649563,-36.249344 @@ -3051,11 +2998,6 @@ entities: color: '#FFFFFFFF' id: Grassb2 decals: - 1265: -13.592456,-8.631099 - 1266: -20.764332,-8.412349 - 1267: -18.733082,-3.6779737 - 1268: -20.904957,-4.2404737 - 1269: -14.045581,-3.0998487 4545: 45.245358,20.974611 4562: 36.907795,34.899803 4563: 40.17342,34.94668 @@ -3065,8 +3007,6 @@ entities: color: '#FFFFFFFF' id: Grassb3 decals: - 1283: -14.326831,-8.584224 - 1284: -18.873707,-6.3342237 4572: 29.899563,-37.405594 - node: color: '#FFFFFFFF' @@ -3272,6 +3212,14 @@ entities: 1130: 1,-56 1131: 1,-58 1132: 1,-60 + - node: + color: '#FFFFFFFF' + id: LoadingArea + decals: + 4700: -48,30 + 4701: -47,30 + 4702: -45,30 + 4703: -44,30 - node: angle: 1.5707963267948966 rad color: '#FFFFFFFF' @@ -3281,10 +3229,6 @@ entities: 883: 49,33 884: 49,31 2318: 52,-18 - 3194: -45,18 - 3195: -45,19 - 3196: -45,21 - 3197: -45,22 4506: 49,30 - node: angle: 4.71238898038469 rad @@ -3993,31 +3937,10 @@ entities: 2840: 8,-26 2841: -23,-8 4654: -22.577562,17.569319 - - node: - color: '#FFFFFFFF' - id: Rock01 - decals: - 1285: -18.889332,-4.4435987 - 1286: -18.920582,-7.1623487 - 1287: -13.748706,-6.7248487 - - node: - color: '#FFFFFFFF' - id: Rock02 - decals: - 1289: -15.842456,-4.0217237 - 1290: -16.029957,-7.3654737 - - node: - color: '#FFFFFFFF' - id: Rock03 - decals: - 1291: -20.420582,-8.834224 - 1293: -20.233082,-3.0060987 - node: color: '#FFFFFFFF' id: Rock06 decals: - 1294: -20.859669,-5.6712637 - 1296: -16.000294,-8.76663 3879: 22.17517,-1.1212201 3880: -0.9077271,-7.8299274 3881: 1.0297729,-16.041756 @@ -4059,6 +3982,8 @@ entities: 3200: -44,1 4509: 47,31 4510: 50,30 + 4670: 58,-2 + 4704: -46,30 - node: cleanable: True color: '#FFFFFFFF' @@ -4067,7 +3992,6 @@ entities: 885: 47,32 886: 50,33 1056: 53,-2 - 1057: 57,-2 - node: angle: 1.5707963267948966 rad color: '#FFFFFFFF' @@ -4075,7 +3999,6 @@ entities: decals: 1856: -67.26604,8.535896 1857: -67.26604,21.500822 - 3198: -45,20 - node: cleanable: True angle: 1.5707963267948966 rad @@ -4178,7 +4101,6 @@ entities: decals: 872: 50,-24 1977: -49,38 - 2640: 58,-2 3503: 7,37 - node: cleanable: True @@ -4384,6 +4306,9 @@ entities: 4631: -37,34 4632: -36,34 4633: -35,34 + 4664: 57,-2 + 4665: 58,-2 + 4666: 59,-2 - node: cleanable: True color: '#FFFFFFFF' @@ -4396,7 +4321,6 @@ entities: 1036: 54,-2 1037: 55,-2 1038: 56,-2 - 1039: 57,-2 - node: color: '#FFFFFFFF' id: WarnLineS @@ -4454,6 +4378,9 @@ entities: 4628: -37,32 4629: -36,32 4630: -35,32 + 4667: 57,-4 + 4668: 58,-4 + 4669: 59,-4 - node: cleanable: True color: '#FFFFFFFF' @@ -4462,9 +4389,6 @@ entities: 1027: 52,-4 1028: 53,-4 1029: 54,-4 - 1030: 56,-4 - 1031: 57,-4 - 1032: 58,-4 - node: color: '#FFFFFFFF' id: WoodTrimThinCornerSe @@ -4874,8 +4798,7 @@ entities: 1,4: 0: 61156 2,0: - 0: 12799 - 1: 16384 + 0: 29695 2,1: 0: 30719 2,2: @@ -4921,9 +4844,9 @@ entities: -4,3: 0: 48120 -5,3: - 0: 52416 + 0: 56784 -4,4: - 0: 34947 + 0: 36739 -3,0: 0: 61695 -3,1: @@ -4933,7 +4856,7 @@ entities: -3,3: 0: 65535 -3,-1: - 0: 62139 + 0: 62207 -2,0: 0: 28927 -2,1: @@ -4943,7 +4866,7 @@ entities: -2,3: 0: 65535 -2,-1: - 0: 61525 + 0: 61559 -2,4: 0: 65522 -1,-1: @@ -4959,7 +4882,7 @@ entities: -5,-3: 0: 64767 -4,-2: - 0: 30583 + 0: 32631 -5,-2: 0: 65535 -5,-1: @@ -4967,7 +4890,7 @@ entities: -3,-3: 0: 47791 -3,-2: - 0: 15291 + 0: 65339 -3,-4: 0: 43690 -3,-5: @@ -4977,7 +4900,7 @@ entities: -2,-3: 0: 65535 -2,-2: - 0: 8191 + 0: 15247 -2,-5: 0: 12287 -1,-4: @@ -4985,7 +4908,7 @@ entities: -1,-3: 0: 65467 -1,-2: - 0: 35771 + 0: 35467 -1,-5: 0: 35771 0,-4: @@ -4994,16 +4917,16 @@ entities: 0: 15295 0,-2: 0: 13107 - 2: 2184 + 1: 2184 0,-5: - 0: 49151 + 0: 49147 1,-4: 0: 65526 1,-3: - 0: 8191 + 0: 4095 + 1: 4096 1,-2: - 2: 1911 - 0: 4096 + 1: 6007 1,-5: 0: 65535 2,-4: @@ -5047,7 +4970,7 @@ entities: 1,5: 0: 61166 1,8: - 0: 3857 + 0: 4081 2,5: 0: 32767 3,4: @@ -5061,11 +4984,11 @@ entities: 4,6: 0: 279 -5,4: - 0: 28680 - -5,5: - 0: 140 + 0: 32313 -4,5: - 0: 8 + 0: 137 + -5,5: + 0: 12 -3,4: 0: 65520 -3,5: @@ -5077,8 +5000,7 @@ entities: -2,6: 0: 255 -1,7: - 0: 3 - 3: 32 + 0: 35 5,0: 0: 61695 5,1: @@ -5086,8 +5008,7 @@ entities: 5,2: 0: 30591 5,3: - 0: 945 - 4: 2048 + 0: 2993 5,-1: 0: 61627 6,0: @@ -5127,25 +5048,25 @@ entities: -1,-7: 0: 47353 0,-6: - 0: 48123 + 0: 49075 -1,-6: 0: 35835 1,-7: - 0: 3151 + 0: 64591 1,-6: - 0: 65535 + 0: 65520 1,-9: - 0: 61405 + 0: 65501 1,-8: - 0: 8 + 0: 11780 + 2,-8: + 0: 273 2,-7: - 0: 35215 + 0: 39311 2,-6: - 0: 65523 + 0: 65520 2,-9: - 0: 44987 - 2,-8: - 0: 34952 + 0: 16315 3,-7: 0: 62256 3,-6: @@ -5161,37 +5082,36 @@ entities: -9,0: 0: 255 -8,2: - 5: 4352 + 2: 4352 -9,2: - 5: 2184 - 0: 819 + 2: 3140 + 3: 273 -8,3: - 5: 4369 + 2: 4369 -8,4: - 5: 4369 + 2: 4369 -7,0: 0: 8959 -7,1: 0: 12563 -7,2: - 0: 9799 + 0: 43151 -7,-1: 0: 61986 -7,3: - 0: 6 + 0: 14 -6,0: 0: 45823 -6,1: - 1: 1 - 0: 14522 - -6,2: - 0: 35775 + 0: 3003 + -6,3: + 0: 199 -6,-1: 0: 62139 + -6,2: + 0: 1646 -6,4: - 0: 206 - -6,3: - 0: 16384 + 0: 26210 -8,-3: 0: 240 -9,-3: @@ -5201,7 +5121,7 @@ entities: -7,-3: 0: 8944 -7,-2: - 0: 13102 + 0: 13118 -6,-4: 0: 37171 -6,-3: @@ -5209,7 +5129,7 @@ entities: -6,-2: 0: 35771 -6,-5: - 0: 60928 + 0: 60416 -5,-5: 0: 30566 -4,-8: @@ -5281,24 +5201,24 @@ entities: 8,7: 0: 4093 -8,5: - 5: 4369 + 2: 4369 -8,6: - 5: 61713 + 2: 61713 -9,6: - 5: 65280 - 6: 7 + 2: 65280 + 4: 7 -8,7: - 0: 12400 - 5: 34952 + 0: 13104 + 2: 34952 -9,7: 0: 65520 -8,8: 0: 13107 - 5: 34952 + 2: 34952 -7,7: - 5: 12561 + 2: 28945 -7,8: - 5: 62259 + 2: 63351 4,-5: 0: 2188 5,-6: @@ -5344,8 +5264,7 @@ entities: -6,-7: 0: 3863 -6,-9: - 0: 47375 - 3: 512 + 0: 47887 -5,-8: 0: 340 -5,-9: @@ -5353,21 +5272,21 @@ entities: -5,-6: 0: 25668 8,1: - 5: 8 + 2: 8 8,2: - 5: 8 + 2: 8 8,3: - 5: 8 + 2: 8 9,0: 0: 255 9,1: - 5: 7 + 2: 7 0: 2048 9,2: - 5: 7 + 2: 7 0: 2048 9,3: - 5: 7 + 2: 7 0: 2048 9,-1: 0: 61440 @@ -5466,7 +5385,7 @@ entities: -13,3: 0: 48063 -12,4: - 0: 48015 + 0: 65535 -11,0: 0: 61695 -11,1: @@ -5481,41 +5400,37 @@ entities: 0: 65535 -10,0: 0: 12543 - 5: 16384 + 2: 16384 -10,3: 0: 4369 - 5: 17476 + 2: 17476 -10,-1: 0: 63711 -10,1: - 5: 8934 - 0: 32768 + 2: 11878 -10,2: - 5: 546 - 0: 2184 + 2: 546 + 3: 2184 -10,4: 0: 4369 - 5: 17476 + 2: 17476 -9,1: - 5: 35056 - 0: 12288 + 2: 18176 -9,3: - 7: 1799 + 3: 1799 -9,4: - 8: 7 - 7: 1792 + 5: 7 + 3: 1792 -12,-4: - 0: 36983 - 3: 24576 + 0: 63675 -12,-5: - 0: 32631 + 0: 49083 -13,-4: 0: 46011 -12,-3: 0: 65535 -13,-3: - 0: 65339 - 4: 128 + 0: 65467 -12,-2: 0: 48031 -13,-2: @@ -5531,7 +5446,7 @@ entities: -11,-5: 0: 64789 -10,-4: - 0: 56540 + 0: 56536 -10,-3: 0: 56797 -10,-2: @@ -5587,8 +5502,7 @@ entities: 11,-4: 0: 65535 11,-3: - 0: 24349 - 1: 32768 + 0: 57117 11,-2: 0: 56785 11,-5: @@ -5604,7 +5518,7 @@ entities: -12,-8: 0: 65535 -12,-9: - 0: 65520 + 0: 65287 -13,-8: 0: 56797 -12,-7: @@ -5636,8 +5550,7 @@ entities: -9,-5: 0: 883 -9,-9: - 0: 40207 - 3: 16384 + 0: 56591 -8,-12: 0: 61166 -9,-12: @@ -5679,7 +5592,7 @@ entities: 5,-11: 0: 30583 5,-10: - 0: 63263 + 0: 55071 5,-13: 0: 29183 5,-9: @@ -5780,6 +5693,7 @@ entities: 0: 35839 4,12: 0: 139 + 2: 32768 4,9: 0: 32768 5,9: @@ -5787,9 +5701,10 @@ entities: 5,10: 0: 65311 5,11: - 0: 61951 + 0: 54783 5,12: - 0: 4095 + 0: 3295 + 2: 4096 6,10: 0: 65286 6,11: @@ -5811,8 +5726,7 @@ entities: 8,10: 0: 65535 8,11: - 0: 53503 - 1: 8192 + 0: 61695 0,8: 0: 30576 0,9: @@ -5832,16 +5746,15 @@ entities: 1,9: 0: 65535 1,10: - 1: 1 - 0: 61694 + 0: 61695 1,11: 0: 4095 1,12: 0: 48059 2,8: - 0: 18176 + 0: 53232 2,9: - 0: 21845 + 0: 21981 2,10: 0: 64725 2,11: @@ -5853,14 +5766,14 @@ entities: 3,12: 0: 4411 -4,8: - 5: 240 + 2: 240 -5,8: - 5: 29888 + 2: 29888 -4,9: 0: 65528 -5,9: 0: 65024 - 5: 22 + 2: 22 -4,10: 0: 65535 -5,10: @@ -5872,7 +5785,7 @@ entities: -4,12: 0: 65535 -3,8: - 5: 48 + 2: 48 0: 24576 -3,9: 0: 30583 @@ -5899,134 +5812,132 @@ entities: -9,8: 0: 65535 -8,9: - 0: 51 - 5: 63624 + 0: 546 + 2: 63624 -9,9: 0: 255 - 5: 61440 + 2: 61440 -8,10: - 5: 143 + 2: 143 -9,10: - 5: 4383 + 2: 4383 -7,10: - 5: 17524 + 2: 17524 -7,9: - 5: 49152 + 2: 49152 -7,11: - 5: 17484 + 2: 17484 -7,12: - 5: 3140 + 2: 3140 -6,8: - 5: 61440 + 2: 61440 -6,9: - 5: 30993 + 2: 30993 -6,10: - 5: 18 + 2: 18 0: 61128 -6,11: 0: 52974 - 5: 4096 + 2: 4096 -6,12: - 5: 12098 + 2: 12098 0: 8 -5,12: 0: 3839 - 5: 4096 + 2: 4096 -6,13: - 5: 35042 + 2: 35042 -5,13: - 5: 62532 + 2: 62532 -4,13: - 5: 63488 + 2: 63488 0: 8 -3,13: 0: 103 -4,14: - 5: 2184 + 2: 2184 -3,14: - 5: 7936 + 2: 7936 -3,15: - 5: 4369 + 2: 4369 0: 34816 -3,16: - 5: 4369 + 2: 4369 0: 33856 -2,13: - 0: 65535 + 0: 4095 -2,14: - 5: 6928 - 0: 17472 + 2: 6929 + 0: 17476 -2,15: 0: 60724 - 5: 1 + 2: 1 -2,16: 0: 45567 -1,13: - 0: 65535 + 0: 12287 -1,15: 0: 65314 -1,14: 0: 8738 - 5: 2048 + 2: 2048 -1,16: 0: 62207 0,14: - 0: 4368 - 5: 11808 + 0: 4369 + 2: 11810 0,15: 0: 48417 - 5: 2 + 2: 2 0,13: - 0: 28398 + 0: 3822 0,16: 0: 61559 1,13: 0: 59 1,14: - 5: 4383 + 2: 4383 1,15: - 5: 4369 + 2: 4369 2,13: 0: 1 - 5: 32768 + 2: 32768 2,14: - 5: 15 + 2: 15 2,15: - 5: 51200 + 2: 51200 2,16: - 5: 310 + 2: 310 3,13: - 5: 40720 + 2: 40720 3,15: - 5: 306 + 2: 306 3,14: - 5: 25800 + 2: 25800 4,13: - 5: 3840 + 2: 3840 5,13: - 5: 3857 + 2: 3857 6,13: - 5: 3840 + 2: 3840 7,13: - 5: 3874 + 2: 3874 8,12: 0: 511 8,13: - 5: 3840 + 2: 3840 -13,4: - 0: 56587 + 0: 56715 -12,5: - 0: 35771 + 0: 65535 -13,5: - 0: 3549 + 0: 52701 -12,6: 0: 65535 -13,6: 0: 57309 -12,7: - 0: 65295 - -13,7: - 0: 32624 + 0: 4095 -12,8: 0: 65535 -11,5: @@ -6034,22 +5945,22 @@ entities: -11,6: 0: 65535 -11,7: - 0: 48015 + 0: 53247 -11,8: - 0: 48059 + 0: 56797 -10,5: 0: 4369 - 5: 17476 + 2: 17476 -10,6: 0: 20753 - 5: 35908 + 2: 35908 -10,7: - 0: 65489 + 0: 61121 -10,8: 0: 65535 -9,5: - 7: 7 - 9: 1792 + 3: 7 + 6: 1792 -12,9: 0: 30704 -13,9: @@ -6059,60 +5970,65 @@ entities: -13,10: 0: 4095 -12,11: - 5: 8784 + 2: 8784 0: 160 -13,11: - 5: 8912 + 2: 8912 0: 39 -12,12: 0: 2 - 5: 8749 + 2: 8749 -11,9: - 0: 61688 + 0: 248 + 2: 61440 -11,10: - 0: 15 - 5: 7936 + 2: 4369 + 0: 8738 + 3: 34944 -11,11: - 5: 26231 + 2: 26229 + 0: 2 -11,12: 0: 10 - 5: 58981 + 2: 58981 -10,9: - 0: 12543 - 5: 32768 + 0: 255 + 2: 61440 -10,10: - 0: 4099 - 5: 61320 + 3: 13104 + 0: 34952 -10,11: - 0: 4369 - 5: 8738 + 0: 4600 + 2: 11780 -10,12: 0: 4369 - 5: 8738 + 2: 8738 + -9,11: + 2: 273 -16,8: 0: 35771 -16,7: 0: 49072 -17,8: 0: 3327 - 5: 4096 + 2: 4096 -16,9: - 5: 4369 + 2: 4369 0: 52416 -17,9: - 5: 36623 + 2: 36623 -16,10: - 5: 4369 + 2: 4369 0: 3276 -17,10: - 5: 34952 + 2: 34952 -16,11: - 5: 8817 + 2: 8817 0: 142 -17,11: - 5: 136 + 2: 136 -16,12: - 5: 8738 + 2: 8738 -15,8: 0: 65535 -15,9: @@ -6121,32 +6037,33 @@ entities: 0: 1911 -15,11: 0: 23 - 5: 13280 + 2: 13280 -15,7: 0: 65532 -15,12: - 5: 13117 + 2: 13117 0: 2 -14,9: 0: 65268 -14,10: 0: 32767 -14,11: - 5: 8912 + 2: 8912 0: 32 -14,8: 0: 61166 -14,7: - 0: 53120 - 3: 8288 + 0: 61408 -14,12: 0: 2 - 5: 8749 + 2: 8749 -13,8: 0: 30583 + -13,7: + 0: 30576 -13,12: 0: 28674 - 5: 557 + 2: 557 -16,4: 0: 48059 -16,3: @@ -6169,10 +6086,10 @@ entities: 0: 57309 -15,3: 0: 62207 + -14,4: + 0: 60943 -14,6: 0: 61422 - -14,4: - 0: 60942 -14,5: 0: 3822 -14,3: @@ -6198,13 +6115,13 @@ entities: -15,-1: 0: 65535 -14,0: - 0: 63678 + 0: 63679 -14,1: 0: 4091 -14,2: 0: 48059 -14,-1: - 0: 43690 + 0: 48059 -16,-4: 0: 47931 -16,-5: @@ -6232,15 +6149,15 @@ entities: -14,-3: 0: 65451 -14,-2: - 0: 43695 + 0: 48015 -14,-5: 0: 48059 -16,-8: 0: 32975 - 5: 256 + 2: 256 -17,-8: 0: 12 - 5: 3843 + 2: 3843 -16,-7: 0: 65528 -16,-6: @@ -6262,15 +6179,15 @@ entities: -14,-7: 0: 49027 -14,-6: - 0: 40409 + 0: 39867 -14,-9: 0: 47359 -13,-9: - 0: 56731 + 0: 56735 -8,-16: 0: 48048 -8,-17: - 5: 4375 + 2: 4375 -9,-16: 0: 56784 -8,-15: @@ -6326,8 +6243,7 @@ entities: -2,-16: 0: 12272 -2,-15: - 0: 30567 - 3: 16 + 0: 30583 -2,-14: 0: 61559 -2,-17: @@ -6349,7 +6265,7 @@ entities: 0,-17: 0: 65520 1,-16: - 0: 8048 + 0: 8176 1,-15: 0: 65535 1,-14: @@ -6372,43 +6288,47 @@ entities: 0: 61815 3,-17: 0: 48947 + 2: 8 4,-16: 0: 40884 4,-15: - 0: 56797 + 0: 48059 4,-14: - 0: 63965 + 0: 63931 4,-17: 0: 60928 - 5: 2 + 2: 3 5,-16: 0: 36816 5,-15: 0: 48059 5,-14: - 0: 61595 - 10: 32 + 0: 61627 5,-17: - 0: 64544 + 0: 63520 + 2: 8 6,-16: - 0: 54684 + 0: 54748 6,-15: 0: 56799 6,-14: 0: 61695 6,-17: 0: 62208 - 5: 130 + 2: 143 + 7,-16: + 0: 36600 7,-15: 0: 3549 7,-14: 0: 62143 - 7,-16: - 0: 34952 7,-17: - 5: 35578 + 0: 34816 + 2: 762 + 8,-16: + 0: 52720 8,-15: - 0: 4369 + 0: 7645 8,-14: 0: 47291 8,-13: @@ -6435,24 +6355,24 @@ entities: 0: 65535 14,-8: 0: 58912 - 5: 200 + 2: 200 14,-7: 0: 742 - 5: 2056 + 2: 2056 14,-4: 0: 61199 14,-9: - 5: 34959 + 2: 34959 15,-8: - 5: 4113 + 2: 4113 15,-7: - 5: 34945 + 2: 34945 15,-6: 0: 65395 15,-5: 0: 65535 15,-9: - 5: 4369 + 2: 4369 15,-4: 0: 56591 16,-5: @@ -6460,8 +6380,7 @@ entities: 16,-6: 0: 8192 16,0: - 0: 60654 - 3: 512 + 0: 61166 15,0: 0: 60639 15,1: @@ -6479,15 +6398,14 @@ entities: 16,-1: 0: 20206 17,0: - 0: 4353 - 3: 16 + 0: 4369 17,1: 0: 4048 17,2: 0: 13107 17,3: 0: 13059 - 5: 32768 + 2: 32768 16,4: 0: 48056 17,4: @@ -6495,63 +6413,63 @@ entities: 18,1: 0: 3856 18,3: - 5: 61440 + 2: 61440 18,0: - 5: 4369 + 2: 4369 18,-1: - 5: 4593 + 2: 4593 18,4: - 5: 4369 + 2: 4369 19,1: 0: 260 - 5: 36488 + 2: 36488 19,3: - 5: 63624 + 2: 63624 0: 68 19,0: 0: 17476 - 5: 34952 + 2: 34952 19,-1: 0: 16384 - 5: 35056 + 2: 35056 19,2: 0: 17476 - 5: 34952 + 2: 34952 20,0: 0: 21845 - 5: 34952 + 2: 34952 20,1: 0: 5 - 5: 36744 + 2: 36744 20,2: 0: 21845 - 5: 34952 + 2: 34952 20,3: 0: 85 - 5: 61576 + 2: 61576 16,-3: - 5: 224 + 2: 224 15,-3: 0: 65477 16,-2: 0: 61167 15,-2: - 0: 48126 + 0: 61166 15,-1: - 0: 56569 + 0: 56554 17,-3: - 5: 240 + 2: 240 17,-2: 0: 4369 17,-1: 0: 273 - 5: 192 + 2: 192 18,-3: - 5: 4368 + 2: 4368 18,-2: - 5: 4369 + 2: 4369 20,-1: - 5: 33008 + 2: 33008 0: 20480 12,7: 0: 61166 @@ -6614,38 +6532,38 @@ entities: 18,7: 0: 28784 12,-12: - 5: 272 + 2: 560 0: 61440 11,-12: - 5: 196 + 2: 204 0: 61712 12,-11: 0: 15 - 5: 272 + 2: 256 11,-11: 0: 4383 - 5: 19456 + 2: 19456 12,-10: - 5: 15 + 2: 15 0: 28160 11,-10: - 5: 12 + 2: 12 0: 65297 13,-12: 0: 61440 - 5: 3584 + 2: 3584 13,-11: 0: 15 - 5: 224 + 2: 224 13,-10: - 5: 15 + 2: 15 0: 30464 14,-12: - 5: 4352 + 2: 4352 14,-11: - 5: 17 + 2: 17 14,-10: - 5: 8739 + 2: 8739 8,-12: 0: 61154 9,-12: @@ -6664,42 +6582,43 @@ entities: 0: 65535 10,-13: 0: 4369 + 2: 50244 11,-13: - 5: 17476 - 8,-16: - 5: 49152 + 2: 29764 + 8,-17: + 2: 8432 + 0: 3598 9,-16: - 5: 61713 + 0: 65520 + 9,-15: + 0: 8191 9,-14: 0: 65535 - 9,-17: - 5: 4336 - 0: 3855 - 9,-15: - 5: 273 10,-16: - 5: 61986 + 0: 4368 + 2: 50244 + 10,-15: + 0: 273 + 2: 19652 10,-14: 0: 4369 - 5: 3072 + 2: 19524 10,-17: - 5: 8432 + 2: 16624 0: 3855 - 10,-15: - 5: 3618 11,-16: - 5: 29764 + 2: 29764 11,-15: - 5: 8960 + 2: 9010 11,-14: - 5: 18210 + 2: 18210 11,-17: - 5: 17524 + 2: 17524 0: 257 -12,-16: - 5: 35064 + 2: 36856 -13,-16: - 5: 4592 + 2: 16368 -12,-15: 0: 65520 -12,-14: @@ -6711,19 +6630,20 @@ entities: -12,-12: 0: 56343 -12,-17: - 5: 34952 + 2: 34952 + -11,-16: + 2: 273 + 0: 34944 -11,-15: 0: 24016 -11,-14: 0: 17749 -11,-13: 0: 47887 + -11,-17: + 2: 21855 -11,-12: 0: 65291 - -11,-17: - 5: 17476 - -11,-16: - 0: 34944 -10,-16: 0: 65524 -10,-15: @@ -6753,21 +6673,21 @@ entities: -10,-10: 0: 65359 -16,-12: - 5: 1100 + 2: 1228 -16,-13: - 5: 17476 + 2: 52428 -15,-12: - 5: 1 + 2: 1 0: 52428 -16,-11: - 5: 8 + 2: 8 -15,-11: 0: 52960 -15,-10: 0: 61133 -15,-13: 0: 49152 - 5: 34 + 2: 34 -14,-12: 0: 56793 -14,-11: @@ -6800,32 +6720,32 @@ entities: 0: 63799 14,11: 0: 141 - 5: 8704 + 2: 8704 14,9: 0: 26350 14,12: - 5: 57890 + 2: 57890 15,9: 0: 56797 15,10: 0: 65421 15,11: 0: 1 - 5: 17472 + 2: 17472 15,12: - 5: 29772 + 2: 29772 16,9: 0: 64443 16,10: 0: 1 - 5: 40960 + 2: 40960 9,9: 0: 46079 9,10: 0: 48059 9,11: 0: 187 - 5: 32768 + 2: 32768 10,9: 0: 62719 10,10: @@ -6833,57 +6753,57 @@ entities: 10,11: 0: 255 9,12: - 5: 35048 + 2: 35048 11,12: 0: 8 - 5: 48 + 2: 48 9,13: - 5: 36744 + 2: 36744 10,12: - 5: 240 + 2: 240 9,14: - 5: 34952 + 2: 34952 10,13: - 5: 61440 + 2: 61440 0: 3584 9,15: - 5: 34952 + 2: 34952 9,16: - 5: 34952 + 2: 34952 10,15: - 5: 61440 + 2: 61440 0: 3598 10,14: 0: 3598 - 5: 57344 + 2: 57344 10,16: 0: 3598 - 5: 57344 + 2: 57344 11,13: 0: 1792 - 5: 61440 + 2: 61440 11,14: 0: 1799 - 5: 61440 + 2: 61440 11,15: 0: 1799 - 5: 61440 + 2: 61440 11,16: 0: 1799 - 5: 61440 + 2: 61440 12,13: 0: 3073 - 5: 61712 + 2: 61712 12,14: - 5: 61713 + 2: 61713 0: 3084 12,15: - 5: 61713 + 2: 61713 0: 3084 13,-3: 0: 65327 13,-2: - 5: 112 + 2: 112 0: 28672 13,-1: 0: 65319 @@ -6891,11 +6811,11 @@ entities: 0: 53503 14,-3: 0: 65294 - 14,-2: - 5: 112 - 0: 28672 14,-1: - 0: 63271 + 0: 65358 + 14,-2: + 2: 224 + 0: 57344 14,0: 0: 61695 13,1: @@ -6907,110 +6827,110 @@ entities: 14,2: 0: 65535 -16,13: - 5: 8738 + 2: 8738 0: 8 -16,14: - 5: 8742 + 2: 8742 0: 17600 -16,15: - 5: 226 + 2: 226 0: 4 -15,13: - 5: 13117 + 2: 13117 0: 2 -15,14: - 5: 62269 + 2: 62269 0: 2 -15,15: - 5: 240 + 2: 240 -14,13: - 5: 8749 + 2: 8749 0: 2 -14,14: - 5: 53805 + 2: 53805 0: 8194 -14,15: - 5: 240 + 2: 240 -13,13: 0: 119 - 5: 8712 + 2: 8712 -13,14: - 5: 61997 + 2: 61997 0: 2 -13,15: - 5: 240 + 2: 240 -12,13: - 5: 8749 + 2: 8749 0: 2 -12,14: - 5: 53805 + 2: 53805 0: 8194 -12,15: - 5: 240 + 2: 240 -11,13: - 5: 26213 + 2: 26213 0: 2 -11,14: - 5: 13925 + 2: 13925 0: 16514 -11,15: - 5: 240 + 2: 240 -10,13: 0: 4369 - 5: 8738 + 2: 8738 -10,14: 0: 4369 - 5: 8738 + 2: 8738 -10,15: 0: 1 - 5: 50 + 2: 50 -20,-3: 0: 65280 -21,-3: 0: 65152 -20,-2: 0: 15 - 5: 30464 + 2: 30464 -21,-2: 0: 14 - 5: 65280 + 2: 65280 -20,-1: - 5: 7509 + 2: 7509 -20,0: - 5: 3857 + 2: 3857 -19,-3: 0: 65344 -19,-2: 0: 65295 -19,-1: 0: 15 - 5: 3840 + 2: 3840 -18,-3: 0: 65280 -18,-2: - 0: 65327 + 0: 64847 -18,-1: - 0: 34959 - 5: 8960 + 0: 34957 + 2: 8960 -18,0: - 5: 8994 + 2: 8994 0: 2184 -17,-4: 0: 30583 -17,-5: 0: 30583 -4,-18: - 5: 306 + 2: 818 0: 34952 -5,-18: - 5: 240 + 2: 4080 -4,-20: 0: 57568 -4,-21: - 5: 8736 + 2: 8736 0: 34944 -4,-19: - 5: 8736 + 2: 8736 0: 34944 -3,-20: 0: 62451 @@ -7023,35 +6943,35 @@ entities: -2,-20: 0: 4112 -2,-19: - 5: 4368 + 2: 4368 -2,-18: - 5: 4369 + 2: 4369 -2,-21: - 5: 4368 + 2: 4368 2,-20: 0: 63736 2,-21: - 5: 4368 + 2: 4368 0: 52424 2,-19: - 5: 4368 + 2: 4368 0: 52424 2,-18: - 5: 4369 + 2: 4369 0: 52428 3,-20: 0: 61937 3,-19: 0: 13105 - 5: 34944 + 2: 34944 3,-18: 0: 13107 - 5: 34952 + 2: 34952 3,-21: 0: 13105 - 5: 34944 + 2: 34944 4,-18: - 5: 12288 + 2: 12288 -20,4: 0: 61166 -20,3: @@ -7062,27 +6982,27 @@ entities: 0: 3310 -19,4: 0: 30583 - 5: 2048 + 2: 2048 -19,5: 0: 30583 -19,6: 0: 887 - 5: 8 + 2: 8 -19,3: 0: 30583 - 5: 8 + 2: 8 -18,4: - 5: 10018 + 2: 10018 -18,6: - 5: 13111 + 2: 13111 -18,7: - 5: 13171 + 2: 13171 -18,8: - 5: 55091 + 2: 55091 -18,3: - 5: 8743 + 2: 8743 -18,5: - 5: 8738 + 2: 8738 -17,4: 0: 30583 -17,3: @@ -7092,47 +7012,47 @@ entities: -20,2: 0: 61166 -19,0: - 5: 12032 + 2: 12032 -19,1: 0: 30576 - 5: 2050 + 2: 2050 -19,2: 0: 30583 -18,1: - 5: 10018 + 2: 10018 -18,2: - 5: 8738 + 2: 8738 -17,2: 0: 30583 -20,-8: - 5: 36751 + 2: 36751 -21,-8: - 5: 7950 + 2: 7950 -20,-6: 0: 4095 -21,-6: 0: 36606 -20,-9: - 5: 34954 + 2: 34954 0: 1365 -19,-8: - 5: 3855 + 2: 3855 -20,-7: - 5: 2184 + 2: 2184 -19,-6: 0: 20479 -19,-9: - 5: 34954 + 2: 34954 0: 1365 -18,-8: - 5: 36751 + 2: 36751 -18,-6: 0: 4095 -18,-9: - 5: 34954 + 2: 34954 0: 1365 -18,-7: - 5: 2184 + 2: 2184 0,17: 0: 65038 -1,17: @@ -7149,16 +7069,16 @@ entities: 0: 274 1,16: 0: 272 - 5: 51200 + 2: 51200 1,17: 0: 4354 - 5: 68 + 2: 1092 1,18: 0: 8209 1,19: 0: 18 -3,17: - 5: 273 + 2: 273 0: 52234 -3,18: 0: 41164 @@ -7175,39 +7095,39 @@ entities: -1,20: 0: 30847 -23,-7: - 5: 52416 + 2: 52416 -23,-6: - 5: 52428 + 2: 52428 -23,-5: - 5: 52428 + 2: 52428 -23,-4: - 5: 52428 + 2: 52428 -22,-7: - 5: 8184 + 2: 8184 -22,-6: - 5: 4369 + 2: 4369 0: 3308 -22,-8: - 5: 34952 + 2: 34952 -22,-9: - 5: 34816 + 2: 34816 -21,-7: - 5: 273 + 2: 273 -21,-9: - 5: 35227 + 2: 35227 0: 1092 -23,-3: - 5: 52428 + 2: 52428 -23,-2: - 5: 52428 + 2: 52428 -22,-3: - 5: 4368 + 2: 4368 0: 60416 -22,-2: - 5: 65297 + 2: 65297 0: 12 -18,9: - 5: 3857 + 2: 3857 -4,-22: 0: 57568 -4,-23: @@ -7229,276 +7149,265 @@ entities: 3,-22: 0: 61937 12,16: - 5: 61713 + 2: 61713 0: 3084 13,13: 0: 3840 - 5: 61440 + 2: 61440 13,14: 0: 3855 - 5: 61440 + 2: 61440 13,15: 0: 3855 - 5: 61440 + 2: 61440 13,16: 0: 3855 - 5: 61440 + 2: 61440 14,13: - 5: 12834 + 2: 12834 14,15: - 5: 12834 + 2: 12834 14,14: - 5: 8738 + 2: 8738 14,16: - 5: 8738 + 2: 8738 16,12: - 5: 1 + 2: 1 5,-18: - 5: 57344 + 2: 57344 6,-18: - 5: 61440 + 2: 61440 7,-18: - 5: 47850 + 2: 47850 7,-20: - 5: 43754 + 2: 43754 7,-21: - 5: 41696 + 2: 41696 7,-19: - 5: 43690 + 2: 43690 8,-20: - 5: 240 + 2: 240 0: 3598 8,-19: - 5: 240 + 2: 240 0: 3598 8,-18: - 5: 240 - 0: 3598 - 8,-17: - 5: 240 + 2: 240 0: 3598 -8,-18: - 5: 4592 + 2: 24048 -9,-18: - 5: 61440 + 2: 63232 + -9,-17: + 2: 15 -7,-18: - 5: 48 + 2: 304 -6,-18: - 5: 192 + 2: 2240 17,9: 0: 1911 16,11: - 5: 8 + 2: 8 17,11: - 5: 1 + 2: 1 18,9: - 5: 28672 + 2: 28672 18,10: - 5: 17476 + 2: 17476 18,11: - 5: 1092 + 2: 1092 21,0: 0: 21845 - 5: 34952 + 2: 34952 21,1: 0: 5 - 5: 36744 + 2: 36744 21,2: 0: 21845 - 5: 34952 + 2: 34952 21,3: 0: 85 - 5: 61576 + 2: 61576 21,-1: 0: 20480 - 5: 33008 + 2: 33008 22,0: 0: 21845 - 5: 34952 + 2: 34952 22,1: 0: 5 - 5: 36744 + 2: 36744 22,2: 0: 21845 - 5: 34952 + 2: 34952 22,3: 0: 85 - 5: 63624 + 2: 63624 22,-1: 0: 20480 - 5: 35056 + 2: 35056 23,0: 0: 4369 - 5: 58436 + 2: 58436 23,1: 0: 1 - 5: 1792 + 2: 1792 23,2: 0: 4369 - 5: 17632 + 2: 17632 23,3: 0: 17 - 5: 29764 + 2: 29764 23,-1: 0: 4096 - 5: 17520 + 2: 17520 24,0: - 5: 4096 + 2: 4096 24,2: - 5: 17 + 2: 17 -20,-12: - 5: 33008 + 2: 33008 0: 20480 -21,-12: - 5: 39408 + 2: 39408 0: 16384 -20,-11: 0: 21845 - 5: 35464 + 2: 35464 -21,-11: - 5: 39833 + 2: 39833 0: 17476 -20,-10: 0: 21845 - 5: 34952 + 2: 34952 -21,-10: - 5: 39321 + 2: 39321 0: 17476 -19,-12: - 5: 35056 + 2: 35056 0: 20480 -19,-11: 0: 21845 - 5: 35464 + 2: 35464 -19,-10: 0: 21845 - 5: 34952 + 2: 34952 -18,-12: - 5: 48 + 2: 48 0: 4096 -18,-11: 0: 21841 - 5: 35464 + 2: 35464 -18,-10: 0: 21845 - 5: 34952 + 2: 34952 -17,-11: 0: 4352 -17,-10: 0: 4369 -17,-9: 0: 273 - 5: 1094 + 2: 1094 8,-21: - 5: 3632 + 2: 3632 9,17: - 5: 34952 + 2: 34952 10,17: - 5: 63616 + 2: 63616 0: 14 11,17: 0: 7 - 5: 12288 + 2: 12288 11,18: - 5: 14 + 2: 14 12,18: - 5: 15 + 2: 15 12,17: - 5: 33041 + 2: 33041 0: 12 13,17: 0: 15 - 5: 61984 + 2: 61984 14,17: - 5: 12834 + 2: 12834 9,-20: 0: 3855 - 5: 4336 + 2: 4336 9,-19: 0: 3855 - 5: 4336 + 2: 4336 9,-18: 0: 3855 - 5: 4336 + 2: 4336 + 9,-17: + 0: 3855 + 2: 240 9,-21: - 5: 7936 + 2: 7936 10,-20: 0: 3855 - 5: 8432 + 2: 8432 10,-19: 0: 3855 - 5: 8432 + 2: 8432 10,-18: 0: 3855 - 5: 8432 + 2: 8432 10,-21: - 5: 12032 + 2: 12032 11,-20: 0: 257 - 5: 17524 + 2: 17524 11,-19: 0: 257 - 5: 17492 + 2: 17492 11,-18: 0: 257 - 5: 17492 + 2: 17492 11,-21: - 5: 18176 + 2: 18176 24,1: - 5: 4369 + 2: 4369 -12,-18: - 5: 32768 + 2: 32768 -11,-18: - 5: 61440 + 2: 63488 -10,-18: - 5: 61440 + 2: 65280 + -10,-17: + 2: 1 -16,-14: - 5: 19456 + 2: 52224 -15,-14: - 5: 12032 + 2: 65280 -14,-14: - 5: 3840 + 2: 65280 -13,-14: - 5: 273 - 0: 1536 + 2: 4915 + 0: 1024 -13,-15: - 5: 4375 + 2: 13111 uniqueMixes: - volume: 2500 temperature: 293.15 moles: Oxygen: 21.824879 Nitrogen: 82.10312 - - volume: 2500 - temperature: 293.14975 - moles: - Oxygen: 20.078888 - Nitrogen: 75.53487 - volume: 2500 temperature: 235 moles: Oxygen: 27.225372 Nitrogen: 102.419266 - volume: 2500 - temperature: 293.15 - moles: - Oxygen: 21.6852 - Nitrogen: 81.57766 + immutable: True + moles: {} - volume: 2500 temperature: 293.15 - moles: - Oxygen: 21.813705 - Nitrogen: 82.06108 - - volume: 2500 - immutable: True moles: {} - volume: 2500 temperature: 293.15 moles: Oxygen: 6666.982 - - volume: 2500 - temperature: 293.15 - moles: {} - volume: 2500 temperature: 293.15 moles: @@ -7507,11 +7416,6 @@ entities: temperature: 293.15 moles: Nitrogen: 6666.982 - - volume: 2500 - temperature: 293.14975 - moles: - Oxygen: 21.824879 - Nitrogen: 82.10312 chunkSize: 4 - type: GasTileOverlay - type: RadiationGridResistance @@ -8094,21 +7998,13 @@ entities: devices: - 18230 - 19768 - - 21028 + - 11758 - 3944 - 2056 - 247 - 8912 - type: Fixtures fixtures: {} - - uid: 3519 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -12.5,-5.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 3928 components: - type: Transform @@ -8120,7 +8016,6 @@ entities: - 8912 - 19760 - 18162 - - 21028 - type: Fixtures fixtures: {} - uid: 3991 @@ -8232,6 +8127,57 @@ entities: - 19987 - type: Fixtures fixtures: {} + - uid: 11914 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -12.5,-3.5 + parent: 2 + - type: DeviceList + devices: + - 1999 + - 11878 + - 11934 + - 3620 + - 2065 + - 3392 + - 21014 + - 11927 + - 26165 + - type: Fixtures + fixtures: {} + - uid: 11933 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -7.5,-1.5 + parent: 2 + - type: DeviceList + devices: + - 21013 + - 20032 + - 20033 + - 20034 + - 21014 + - 20022 + - 20021 + - 20020 + - 20442 + - 20441 + - type: Fixtures + fixtures: {} + - uid: 12005 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -42.5,34.5 + parent: 2 + - type: DeviceList + devices: + - 385 + - 375 + - type: Fixtures + fixtures: {} - uid: 12308 components: - type: Transform @@ -8391,29 +8337,11 @@ entities: - 19037 - 17120 - 20091 - - 20290 - 17119 - 20470 - 20090 - type: Fixtures fixtures: {} - - uid: 20482 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -44.5,29.5 - parent: 2 - - type: DeviceList - devices: - - 20290 - - 20470 - - 17119 - - 20090 - - 20091 - - 20469 - - 20473 - - type: Fixtures - fixtures: {} - uid: 20483 components: - type: Transform @@ -8424,11 +8352,13 @@ entities: devices: - 23978 - 19149 - - 25864 - - 1069 - 20085 - 512 - 20075 + - 385 + - 375 + - 25239 + - 27470 - type: Fixtures fixtures: {} - uid: 20484 @@ -9266,27 +9196,7 @@ entities: - 1999 - 3392 - 749 - - type: Fixtures - fixtures: {} - - uid: 20527 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -8.5,-1.5 - parent: 2 - - type: DeviceList - devices: - - 21013 - - 20032 - - 20033 - - 20034 - - 21014 - - 20022 - - 20021 - - 20020 - - 20442 - - 20441 - - 172 + - 11927 - type: Fixtures fixtures: {} - uid: 20529 @@ -9328,23 +9238,23 @@ entities: parent: 2 - type: DeviceList devices: - - 21011 + - 11758 - 21013 - - 20024 - - 20025 - - 19970 + - 21011 + - 21017 - 20443 - 20445 - - 2056 + - 21016 + - 19970 + - 20025 + - 20024 - 247 - - 370 - - 1582 - - 20031 - - 20030 + - 2056 - 20029 - - 21016 - - 21017 - - 21028 + - 20030 + - 20031 + - 1582 + - 370 - type: Fixtures fixtures: {} - uid: 20531 @@ -10000,7 +9910,6 @@ entities: - 482 - 24145 - 17536 - - 24146 - 22320 - type: Fixtures fixtures: {} @@ -10791,6 +10700,21 @@ entities: - 20685 - type: Fixtures fixtures: {} + - uid: 23338 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -9.5,-6.5 + parent: 2 + - type: DeviceList + devices: + - 23321 + - 11928 + - 27469 + - 26165 + - 21014 + - type: Fixtures + fixtures: {} - uid: 25474 components: - type: Transform @@ -10840,18 +10764,6 @@ entities: - 25872 - type: Fixtures fixtures: {} - - uid: 27356 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -41.5,34.5 - parent: 2 - - type: DeviceList - devices: - - 25864 - - 1069 - - type: Fixtures - fixtures: {} - uid: 28610 components: - type: Transform @@ -10902,6 +10814,16 @@ entities: fixtures: {} - proto: AirCanister entities: + - uid: 1853 + components: + - type: Transform + pos: -46.5,33.5 + parent: 2 + - uid: 2133 + components: + - type: Transform + pos: -47.5,33.5 + parent: 2 - uid: 3431 components: - type: Transform @@ -10922,26 +10844,11 @@ entities: - type: Transform pos: 50.5,-4.5 parent: 2 - - uid: 24179 - components: - - type: Transform - pos: -47.5,18.5 - parent: 2 - - uid: 24500 - components: - - type: Transform - pos: -47.5,19.5 - parent: 2 - uid: 25407 components: - type: Transform pos: 31.5,-28.5 parent: 2 - - uid: 25408 - components: - - type: Transform - pos: -11.5,-8.5 - parent: 2 - uid: 28738 components: - type: Transform @@ -11037,11 +10944,11 @@ entities: parent: 2 - proto: AirlockAtmosphericsGlassLocked entities: - - uid: 17496 + - uid: 11992 components: - type: Transform rot: 1.5707963267948966 rad - pos: -39.5,29.5 + pos: -41.5,31.5 parent: 2 - uid: 21338 components: @@ -11064,11 +10971,11 @@ entities: - type: Transform pos: -55.5,26.5 parent: 2 - - uid: 25782 + - uid: 25796 components: - type: Transform rot: 1.5707963267948966 rad - pos: -40.5,29.5 + pos: -40.5,31.5 parent: 2 - proto: AirlockAtmosphericsLocked entities: @@ -11157,11 +11064,10 @@ entities: - type: Transform pos: -6.5,-16.5 parent: 2 - - uid: 6126 + - uid: 1294 components: - type: Transform - rot: 3.141592653589793 rad - pos: -7.5,-4.5 + pos: -4.5,-6.5 parent: 2 - proto: AirlockChemistryGlassLocked entities: @@ -11396,6 +11302,17 @@ entities: - type: Transform pos: -22.5,-1.5 parent: 2 + - uid: 602 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 31.5,-60.5 + parent: 2 + - uid: 678 + components: + - type: Transform + pos: -48.5,-27.5 + parent: 2 - uid: 3695 components: - type: Transform @@ -11496,11 +11413,6 @@ entities: - type: Transform pos: -53.5,36.5 parent: 2 - - uid: 21893 - components: - - type: Transform - pos: -48.5,30.5 - parent: 2 - uid: 22049 components: - type: Transform @@ -11930,6 +11842,19 @@ entities: 25889: - - DoorStatus - DoorBolt + - uid: 12214 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 31.5,-63.5 + parent: 2 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 28857: + - - DoorStatus + - DoorBolt - uid: 25889 components: - type: Transform @@ -11943,6 +11868,19 @@ entities: 9037: - - DoorStatus - DoorBolt + - uid: 28857 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 31.5,-65.5 + parent: 2 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 12214: + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassLocked entities: - uid: 9539 @@ -11969,18 +11907,6 @@ entities: rot: 1.5707963267948966 rad pos: 76.5,6.5 parent: 2 - - uid: 9571 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 31.5,-60.5 - parent: 2 - - uid: 9572 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 31.5,-63.5 - parent: 2 - uid: 9575 components: - type: Transform @@ -12354,16 +12280,16 @@ entities: parent: 2 - proto: AirlockJanitorLocked entities: - - uid: 21776 + - uid: 639 components: - type: Transform - pos: -1.5,-22.5 + rot: -1.5707963267948966 rad + pos: -9.5,-22.5 parent: 2 - - uid: 25125 + - uid: 21776 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -9.5,-22.5 + pos: -1.5,-22.5 parent: 2 - proto: AirlockKitchenGlassLocked entities: @@ -12372,13 +12298,6 @@ entities: - type: Transform pos: 10.5,-13.5 parent: 2 -- proto: AirlockLawyerLocked - entities: - - uid: 21786 - components: - - type: Transform - pos: -48.5,-34.5 - parent: 2 - proto: AirlockMaint entities: - uid: 24001 @@ -12418,6 +12337,11 @@ entities: parent: 2 - proto: AirlockMaintEngiLocked entities: + - uid: 12454 + components: + - type: Transform + pos: -48.5,-34.5 + parent: 2 - uid: 21894 components: - type: Transform @@ -12435,6 +12359,13 @@ entities: - type: Transform pos: 14.5,-20.5 parent: 2 +- proto: AirlockMaintLawyerLocked + entities: + - uid: 11824 + components: + - type: Transform + pos: -10.5,-9.5 + parent: 2 - proto: AirlockMaintLocked entities: - uid: 101 @@ -12941,17 +12872,17 @@ entities: rot: -1.5707963267948966 rad pos: 48.5,25.5 parent: 2 - - uid: 21713 + - uid: 21123 components: - type: Transform - rot: 3.141592653589793 rad - pos: 53.5,-2.5 + rot: -1.5707963267948966 rad + pos: 58.5,-2.5 parent: 2 - - uid: 21993 + - uid: 21713 components: - type: Transform rot: 3.141592653589793 rad - pos: 57.5,-2.5 + pos: 53.5,-2.5 parent: 2 - uid: 22002 components: @@ -13084,11 +13015,15 @@ entities: - type: Transform pos: 1.5,9.5 parent: 2 - - uid: 21690 + - uid: 11895 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -48.5,-27.5 + pos: -10.5,-1.5 + parent: 2 + - uid: 11994 + components: + - type: Transform + pos: -12.5,-5.5 parent: 2 - proto: AirlockSecurityLawyerLocked entities: @@ -13365,12 +13300,6 @@ entities: rot: 1.5707963267948966 rad pos: 66.5,14.5 parent: 2 - - uid: 22874 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -10.5,-1.5 - parent: 2 - uid: 24437 components: - type: Transform @@ -13398,6 +13327,16 @@ entities: - type: Transform pos: -52.5,-47.5 parent: 2 + - uid: 28863 + components: + - type: Transform + pos: 33.5,-62.5 + parent: 2 + - uid: 28864 + components: + - type: Transform + pos: 28.5,-62.5 + parent: 2 - uid: 28870 components: - type: Transform @@ -14019,6 +13958,25 @@ entities: deviceLists: - 28610 - 28620 + - uid: 11758 + components: + - type: Transform + pos: -5.5,-9.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 2795 + - 20530 + - uid: 11927 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -17.5,-5.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 20526 + - 11914 - uid: 13283 components: - type: Transform @@ -14606,11 +14564,11 @@ entities: - type: DeviceNetwork deviceLists: - 20529 - - 20527 - 20532 - 20530 - 20534 - 12308 + - 11933 - uid: 21014 components: - type: Transform @@ -14619,8 +14577,10 @@ entities: - type: DeviceNetwork deviceLists: - 20526 - - 20527 + - 11914 - 20609 + - 11933 + - 23338 - uid: 21015 components: - type: Transform @@ -14660,17 +14620,6 @@ entities: deviceLists: - 20636 - 20531 - - uid: 21028 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -6.5,-11.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20530 - - 3928 - - 2795 - uid: 21029 components: - type: Transform @@ -14726,6 +14675,34 @@ entities: - type: Transform pos: -35.5,8.5 parent: 2 + - uid: 25239 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -43.5,12.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 20483 + - uid: 26165 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -10.5,-5.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 23338 + - 11914 + - uid: 27470 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -43.5,23.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 20483 - uid: 27722 components: - type: Transform @@ -14924,14 +14901,6 @@ entities: parent: 2 - type: Fixtures fixtures: {} - - uid: 3691 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -43.5,29.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 4481 components: - type: Transform @@ -14948,6 +14917,22 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 10312 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -6.5,-6.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 11876 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -42.5,32.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 12755 components: - type: Transform @@ -15525,14 +15510,6 @@ entities: parent: 2 - type: Fixtures fixtures: {} - - uid: 19670 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -41.5,30.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 19808 components: - type: Transform @@ -15593,6 +15570,14 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 23762 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -12.5,-6.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 23907 components: - type: Transform @@ -15674,6 +15659,13 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 28890 + components: + - type: Transform + pos: 31.5,-53.5 + parent: 2 + - type: Fixtures + fixtures: {} - proto: APCElectronics entities: - uid: 10855 @@ -17896,29 +17888,15 @@ entities: - type: Transform pos: 18.5,-40.5 parent: 2 - - uid: 1974 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 25.5,-48.5 - parent: 2 - - uid: 1983 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 35.5,-32.5 - parent: 2 - - uid: 2009 + - uid: 1042 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 43.5,-27.5 + pos: 1.5,-54.5 parent: 2 - - uid: 2010 + - uid: 1248 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 42.5,-27.5 + pos: 40.5,-17.5 parent: 2 - uid: 2270 components: @@ -17967,21 +17945,11 @@ entities: - type: Transform pos: -42.5,-30.5 parent: 2 - - uid: 25115 - components: - - type: Transform - pos: -41.5,-30.5 - parent: 2 - uid: 25116 components: - type: Transform pos: -33.5,-37.5 parent: 2 - - uid: 25117 - components: - - type: Transform - pos: -33.5,-36.5 - parent: 2 - uid: 25118 components: - type: Transform @@ -17992,21 +17960,11 @@ entities: - type: Transform pos: -29.5,-36.5 parent: 2 - - uid: 25120 - components: - - type: Transform - pos: -30.5,-36.5 - parent: 2 - uid: 25121 components: - type: Transform pos: -22.5,-52.5 parent: 2 - - uid: 25122 - components: - - type: Transform - pos: -22.5,-51.5 - parent: 2 - uid: 25123 components: - type: Transform @@ -18017,26 +17975,11 @@ entities: - type: Transform pos: -0.5,-57.5 parent: 2 - - uid: 25127 - components: - - type: Transform - pos: 0.5,-57.5 - parent: 2 - - uid: 25128 - components: - - type: Transform - pos: 0.5,-53.5 - parent: 2 - uid: 25129 components: - type: Transform pos: 15.5,-50.5 parent: 2 - - uid: 25130 - components: - - type: Transform - pos: 15.5,-51.5 - parent: 2 - uid: 25133 components: - type: Transform @@ -18057,21 +18000,11 @@ entities: - type: Transform pos: 35.5,1.5 parent: 2 - - uid: 25143 - components: - - type: Transform - pos: 35.5,0.5 - parent: 2 - uid: 25144 components: - type: Transform pos: 33.5,-0.5 parent: 2 - - uid: 25145 - components: - - type: Transform - pos: 33.5,0.5 - parent: 2 - uid: 25150 components: - type: Transform @@ -18087,16 +18020,6 @@ entities: - type: Transform pos: -52.5,-3.5 parent: 2 - - uid: 25156 - components: - - type: Transform - pos: -51.5,-3.5 - parent: 2 - - uid: 25157 - components: - - type: Transform - pos: 43.5,-7.5 - parent: 2 - uid: 25158 components: - type: Transform @@ -18183,12 +18106,6 @@ entities: - type: Transform pos: 11.5,-1.5 parent: 26470 - - uid: 27525 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -58.5,-8.5 - parent: 2 - uid: 27526 components: - type: Transform @@ -18201,12 +18118,6 @@ entities: rot: 1.5707963267948966 rad pos: 40.5,-31.5 parent: 2 - - uid: 27528 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 40.5,-32.5 - parent: 2 - uid: 27776 components: - type: Transform @@ -18411,17 +18322,18 @@ entities: parent: 2 - proto: BaseGasCondenser entities: - - uid: 7365 - components: - - type: Transform - pos: -43.5,28.5 - parent: 2 - uid: 23002 components: - type: Transform rot: 3.141592653589793 rad pos: 9.5,-59.5 parent: 2 + - uid: 26190 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -49.5,22.5 + parent: 2 - proto: BaseUplinkRadio entities: - uid: 28641 @@ -18435,6 +18347,13 @@ entities: missingComponents: - ActivatableUI - Store +- proto: BeachBall + entities: + - uid: 28939 + components: + - type: Transform + pos: 38.468697,-58.922966 + parent: 2 - proto: Beaker entities: - uid: 28777 @@ -18885,6 +18804,36 @@ entities: - type: Transform pos: -55.5,21.5 parent: 2 + - uid: 2138 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -46.5,31.5 + parent: 2 + - uid: 2230 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -45.5,31.5 + parent: 2 + - uid: 2237 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -47.5,31.5 + parent: 2 + - uid: 2281 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -44.5,31.5 + parent: 2 + - uid: 2357 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -43.5,31.5 + parent: 2 - uid: 3487 components: - type: Transform @@ -18897,12 +18846,6 @@ entities: rot: -1.5707963267948966 rad pos: -42.5,2.5 parent: 2 - - uid: 6443 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 56.5,-5.5 - parent: 2 - uid: 6864 components: - type: Transform @@ -19016,6 +18959,12 @@ entities: rot: 1.5707963267948966 rad pos: -60.5,43.5 parent: 2 + - uid: 23571 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 59.5,-5.5 + parent: 2 - uid: 24346 components: - type: Transform @@ -19028,21 +18977,6 @@ entities: rot: -1.5707963267948966 rad pos: -39.5,40.5 parent: 2 - - uid: 25750 - components: - - type: Transform - pos: -45.5,18.5 - parent: 2 - - uid: 25841 - components: - - type: Transform - pos: -45.5,22.5 - parent: 2 - - uid: 25881 - components: - - type: Transform - pos: -45.5,21.5 - parent: 2 - uid: 26307 components: - type: Transform @@ -19055,16 +18989,6 @@ entities: rot: -1.5707963267948966 rad pos: -43.5,2.5 parent: 2 - - uid: 27124 - components: - - type: Transform - pos: -45.5,20.5 - parent: 2 - - uid: 27155 - components: - - type: Transform - pos: -45.5,19.5 - parent: 2 - uid: 27203 components: - type: Transform @@ -19314,7 +19238,7 @@ entities: - uid: 12802 components: - type: Transform - pos: 61.473103,-4.3480916 + pos: 62.290485,-4.514136 parent: 2 - proto: BookRandomStory entities: @@ -19362,11 +19286,6 @@ entities: - type: Transform pos: -19.5,-14.5 parent: 2 - - uid: 205 - components: - - type: Transform - pos: -44.5,-28.5 - parent: 2 - uid: 263 components: - type: Transform @@ -19472,15 +19391,20 @@ entities: - type: Transform pos: 26.5,-57.5 parent: 2 - - uid: 10315 + - uid: 10753 components: - type: Transform - pos: -44.5,-29.5 + pos: -20.5,-67.5 parent: 2 - - uid: 10753 + - uid: 11820 components: - type: Transform - pos: -20.5,-67.5 + pos: -5.5,-3.5 + parent: 2 + - uid: 11880 + components: + - type: Transform + pos: -5.5,-2.5 parent: 2 - uid: 25577 components: @@ -19620,8 +19544,11 @@ entities: - uid: 24303 components: - type: Transform - pos: -3.5450711,-5.359957 - parent: 2 + parent: 3278 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 3278 - proto: BoxCartridgeCap entities: - uid: 10915 @@ -19682,6 +19609,13 @@ entities: - type: Transform pos: -13.68567,-46.519176 parent: 2 +- proto: BoxFolderBlueThreePapers + entities: + - uid: 23583 + components: + - type: Transform + pos: -17.38752,-4.259562 + parent: 2 - proto: BoxFolderClipboard entities: - uid: 5016 @@ -19717,6 +19651,13 @@ entities: - type: Transform pos: 50.455494,7.948561 parent: 2 +- proto: BoxFolderClipboardEmpty + entities: + - uid: 1391 + components: + - type: Transform + pos: -19.653145,-3.540812 + parent: 2 - proto: BoxFolderClipboardThreePapers entities: - uid: 1085 @@ -19763,6 +19704,18 @@ entities: - type: Transform pos: 39.393944,-49.02747 parent: 2 +- proto: BoxFolderRedThreePapers + entities: + - uid: 23592 + components: + - type: Transform + pos: -17.38752,-6.618937 + parent: 2 + - uid: 25157 + components: + - type: Transform + pos: -8.732664,-4.329373 + parent: 2 - proto: BoxingBell entities: - uid: 10379 @@ -19874,15 +19827,17 @@ entities: - type: Transform pos: -7.560195,37.335506 parent: 2 - - uid: 10311 + - uid: 12505 components: - type: Transform - pos: -49.627438,-33.48442 + pos: 66.410385,23.626356 parent: 2 - - uid: 12505 +- proto: BriefcaseBrownFilled + entities: + - uid: 27489 components: - type: Transform - pos: 66.410385,23.626356 + pos: -11.4957285,-8.503578 parent: 2 - proto: BrokenBottle entities: @@ -19984,11 +19939,11 @@ entities: rot: 3.141592653589793 rad pos: 51.5,-2.5 parent: 2 - - uid: 15263 + - uid: 21712 components: - type: Transform rot: 3.141592653589793 rad - pos: 55.5,-2.5 + pos: 56.5,-2.5 parent: 2 - uid: 25159 components: @@ -20087,6 +20042,11 @@ entities: - type: Transform pos: -49.5,39.5 parent: 2 + - uid: 387 + components: + - type: Transform + pos: -9.5,-2.5 + parent: 2 - uid: 393 components: - type: Transform @@ -20147,16 +20107,6 @@ entities: - type: Transform pos: -49.5,-48.5 parent: 2 - - uid: 637 - components: - - type: Transform - pos: -8.5,-7.5 - parent: 2 - - uid: 639 - components: - - type: Transform - pos: -8.5,-6.5 - parent: 2 - uid: 640 components: - type: Transform @@ -20222,6 +20172,16 @@ entities: - type: Transform pos: -59.5,-9.5 parent: 2 + - uid: 1069 + components: + - type: Transform + pos: -5.5,-8.5 + parent: 2 + - uid: 1083 + components: + - type: Transform + pos: -45.5,34.5 + parent: 2 - uid: 1086 components: - type: Transform @@ -20232,11 +20192,6 @@ entities: - type: Transform pos: -69.5,-5.5 parent: 2 - - uid: 1248 - components: - - type: Transform - pos: 60.5,-4.5 - parent: 2 - uid: 1290 components: - type: Transform @@ -20247,6 +20202,11 @@ entities: - type: Transform pos: -53.5,1.5 parent: 2 + - uid: 1305 + components: + - type: Transform + pos: -7.5,-5.5 + parent: 2 - uid: 1307 components: - type: Transform @@ -20257,6 +20217,21 @@ entities: - type: Transform pos: -49.5,29.5 parent: 2 + - uid: 1451 + components: + - type: Transform + pos: -4.5,-7.5 + parent: 2 + - uid: 1510 + components: + - type: Transform + pos: -49.5,24.5 + parent: 2 + - uid: 1556 + components: + - type: Transform + pos: -49.5,23.5 + parent: 2 - uid: 1578 components: - type: Transform @@ -20272,11 +20247,31 @@ entities: - type: Transform pos: 42.5,20.5 parent: 2 + - uid: 1675 + components: + - type: Transform + pos: -37.5,32.5 + parent: 2 + - uid: 1678 + components: + - type: Transform + pos: -38.5,32.5 + parent: 2 + - uid: 1682 + components: + - type: Transform + pos: -36.5,32.5 + parent: 2 - uid: 1699 components: - type: Transform pos: -46.5,-33.5 parent: 2 + - uid: 1711 + components: + - type: Transform + pos: -8.5,-5.5 + parent: 2 - uid: 1721 components: - type: Transform @@ -20317,6 +20312,11 @@ entities: - type: Transform pos: -35.5,35.5 parent: 2 + - uid: 1857 + components: + - type: Transform + pos: -4.5,-8.5 + parent: 2 - uid: 1957 components: - type: Transform @@ -20327,11 +20327,6 @@ entities: - type: Transform pos: -38.5,9.5 parent: 2 - - uid: 2373 - components: - - type: Transform - pos: 60.5,-5.5 - parent: 2 - uid: 2534 components: - type: Transform @@ -20372,6 +20367,11 @@ entities: - type: Transform pos: -33.5,34.5 parent: 2 + - uid: 2688 + components: + - type: Transform + pos: 61.5,-3.5 + parent: 2 - uid: 2768 components: - type: Transform @@ -20442,11 +20442,6 @@ entities: - type: Transform pos: -35.5,16.5 parent: 2 - - uid: 3636 - components: - - type: Transform - pos: -47.5,25.5 - parent: 2 - uid: 3641 components: - type: Transform @@ -20467,11 +20462,6 @@ entities: - type: Transform pos: 54.5,-43.5 parent: 2 - - uid: 3703 - components: - - type: Transform - pos: -45.5,16.5 - parent: 2 - uid: 3717 components: - type: Transform @@ -20752,6 +20742,11 @@ entities: - type: Transform pos: -66.5,4.5 parent: 2 + - uid: 4910 + components: + - type: Transform + pos: 61.5,-4.5 + parent: 2 - uid: 4928 components: - type: Transform @@ -21022,6 +21017,16 @@ entities: - type: Transform pos: -26.5,-47.5 parent: 2 + - uid: 8914 + components: + - type: Transform + pos: -11.5,-2.5 + parent: 2 + - uid: 8976 + components: + - type: Transform + pos: -11.5,-4.5 + parent: 2 - uid: 8981 components: - type: Transform @@ -21032,11 +21037,26 @@ entities: - type: Transform pos: -27.5,-33.5 parent: 2 + - uid: 9155 + components: + - type: Transform + pos: -11.5,-8.5 + parent: 2 - uid: 9443 components: - type: Transform pos: 36.5,46.5 parent: 2 + - uid: 9572 + components: + - type: Transform + pos: -6.5,-5.5 + parent: 2 + - uid: 9618 + components: + - type: Transform + pos: -6.5,-6.5 + parent: 2 - uid: 9904 components: - type: Transform @@ -21157,10 +21177,30 @@ entities: - type: Transform pos: -53.5,37.5 parent: 2 - - uid: 10870 + - uid: 10313 components: - type: Transform - pos: -48.5,25.5 + pos: -10.5,-5.5 + parent: 2 + - uid: 10314 + components: + - type: Transform + pos: -9.5,-5.5 + parent: 2 + - uid: 10315 + components: + - type: Transform + pos: -7.5,-2.5 + parent: 2 + - uid: 10320 + components: + - type: Transform + pos: -7.5,-8.5 + parent: 2 + - uid: 10328 + components: + - type: Transform + pos: -45.5,16.5 parent: 2 - uid: 11138 components: @@ -21187,6 +21227,116 @@ entities: - type: Transform pos: -20.5,-38.5 parent: 2 + - uid: 11871 + components: + - type: Transform + pos: -45.5,28.5 + parent: 2 + - uid: 11886 + components: + - type: Transform + pos: -42.5,13.5 + parent: 2 + - uid: 11887 + components: + - type: Transform + pos: -44.5,-32.5 + parent: 2 + - uid: 11892 + components: + - type: Transform + pos: -42.5,9.5 + parent: 2 + - uid: 11893 + components: + - type: Transform + pos: -40.5,8.5 + parent: 2 + - uid: 11907 + components: + - type: Transform + pos: -6.5,-3.5 + parent: 2 + - uid: 11908 + components: + - type: Transform + pos: -6.5,-4.5 + parent: 2 + - uid: 11909 + components: + - type: Transform + pos: -10.5,-2.5 + parent: 2 + - uid: 11910 + components: + - type: Transform + pos: -11.5,-3.5 + parent: 2 + - uid: 11911 + components: + - type: Transform + pos: -11.5,-6.5 + parent: 2 + - uid: 11918 + components: + - type: Transform + pos: -8.5,-2.5 + parent: 2 + - uid: 11919 + components: + - type: Transform + pos: -11.5,-5.5 + parent: 2 + - uid: 11920 + components: + - type: Transform + pos: -11.5,-7.5 + parent: 2 + - uid: 11921 + components: + - type: Transform + pos: -6.5,-2.5 + parent: 2 + - uid: 11922 + components: + - type: Transform + pos: -6.5,-8.5 + parent: 2 + - uid: 11926 + components: + - type: Transform + pos: -41.5,32.5 + parent: 2 + - uid: 11989 + components: + - type: Transform + pos: -40.5,32.5 + parent: 2 + - uid: 11990 + components: + - type: Transform + pos: -42.5,32.5 + parent: 2 + - uid: 12008 + components: + - type: Transform + pos: -45.5,33.5 + parent: 2 + - uid: 12009 + components: + - type: Transform + pos: -45.5,30.5 + parent: 2 + - uid: 12010 + components: + - type: Transform + pos: -45.5,32.5 + parent: 2 + - uid: 12011 + components: + - type: Transform + pos: -45.5,29.5 + parent: 2 - uid: 12795 components: - type: Transform @@ -21910,17 +22060,17 @@ entities: - uid: 14219 components: - type: Transform - pos: -41.5,11.5 + pos: -42.5,10.5 parent: 2 - uid: 14220 components: - type: Transform - pos: -41.5,10.5 + pos: -42.5,14.5 parent: 2 - uid: 14221 components: - type: Transform - pos: -41.5,9.5 + pos: -42.5,11.5 parent: 2 - uid: 14222 components: @@ -23712,11 +23862,6 @@ entities: - type: Transform pos: -48.5,-28.5 parent: 2 - - uid: 14618 - components: - - type: Transform - pos: -48.5,-30.5 - parent: 2 - uid: 14619 components: - type: Transform @@ -23742,11 +23887,6 @@ entities: - type: Transform pos: -44.5,-31.5 parent: 2 - - uid: 14629 - components: - - type: Transform - pos: -44.5,-32.5 - parent: 2 - uid: 14630 components: - type: Transform @@ -26722,16 +26862,6 @@ entities: - type: Transform pos: 59.5,0.5 parent: 2 - - uid: 15259 - components: - - type: Transform - pos: 56.5,-0.5 - parent: 2 - - uid: 15260 - components: - - type: Transform - pos: 56.5,-1.5 - parent: 2 - uid: 15265 components: - type: Transform @@ -31617,41 +31747,6 @@ entities: - type: Transform pos: -7.5,-14.5 parent: 2 - - uid: 16302 - components: - - type: Transform - pos: -8.5,-5.5 - parent: 2 - - uid: 16303 - components: - - type: Transform - pos: -6.5,-5.5 - parent: 2 - - uid: 16304 - components: - - type: Transform - pos: -5.5,-5.5 - parent: 2 - - uid: 16305 - components: - - type: Transform - pos: -4.5,-5.5 - parent: 2 - - uid: 16306 - components: - - type: Transform - pos: -3.5,-5.5 - parent: 2 - - uid: 16307 - components: - - type: Transform - pos: -7.5,-5.5 - parent: 2 - - uid: 16308 - components: - - type: Transform - pos: -3.5,-6.5 - parent: 2 - uid: 16309 components: - type: Transform @@ -31682,11 +31777,6 @@ entities: - type: Transform pos: -3.5,-13.5 parent: 2 - - uid: 16315 - components: - - type: Transform - pos: -3.5,-7.5 - parent: 2 - uid: 16316 components: - type: Transform @@ -32367,21 +32457,6 @@ entities: - type: Transform pos: 14.5,-3.5 parent: 2 - - uid: 16456 - components: - - type: Transform - pos: -5.5,-4.5 - parent: 2 - - uid: 16457 - components: - - type: Transform - pos: -5.5,-3.5 - parent: 2 - - uid: 16458 - components: - - type: Transform - pos: -5.5,-2.5 - parent: 2 - uid: 16459 components: - type: Transform @@ -34597,11 +34672,6 @@ entities: - type: Transform pos: -46.5,16.5 parent: 2 - - uid: 20657 - components: - - type: Transform - pos: -46.5,25.5 - parent: 2 - uid: 20779 components: - type: Transform @@ -35532,6 +35602,16 @@ entities: - type: Transform pos: -12.5,58.5 parent: 2 + - uid: 23334 + components: + - type: Transform + pos: -4.5,-6.5 + parent: 2 + - uid: 23558 + components: + - type: Transform + pos: -4.5,-5.5 + parent: 2 - uid: 23766 components: - type: Transform @@ -36187,21 +36267,6 @@ entities: - type: Transform pos: 52.5,-4.5 parent: 2 - - uid: 24160 - components: - - type: Transform - pos: 56.5,-2.5 - parent: 2 - - uid: 24161 - components: - - type: Transform - pos: 56.5,-3.5 - parent: 2 - - uid: 24162 - components: - - type: Transform - pos: 56.5,-4.5 - parent: 2 - uid: 24163 components: - type: Transform @@ -36472,6 +36537,11 @@ entities: - type: Transform pos: 6.5,-39.5 parent: 2 + - uid: 25450 + components: + - type: Transform + pos: -48.5,-30.5 + parent: 2 - uid: 25457 components: - type: Transform @@ -36542,31 +36612,6 @@ entities: - type: Transform pos: -3.5,58.5 parent: 2 - - uid: 25754 - components: - - type: Transform - pos: -45.5,25.5 - parent: 2 - - uid: 25794 - components: - - type: Transform - pos: -41.5,30.5 - parent: 2 - - uid: 25795 - components: - - type: Transform - pos: -40.5,30.5 - parent: 2 - - uid: 25796 - components: - - type: Transform - pos: -39.5,30.5 - parent: 2 - - uid: 25797 - components: - - type: Transform - pos: -39.5,29.5 - parent: 2 - uid: 25798 components: - type: Transform @@ -36582,11 +36627,6 @@ entities: - type: Transform pos: -35.5,29.5 parent: 2 - - uid: 25801 - components: - - type: Transform - pos: -38.5,29.5 - parent: 2 - uid: 25802 components: - type: Transform @@ -36642,11 +36682,6 @@ entities: - type: Transform pos: -31.5,34.5 parent: 2 - - uid: 25817 - components: - - type: Transform - pos: -39.5,31.5 - parent: 2 - uid: 25818 components: - type: Transform @@ -36702,10 +36737,10 @@ entities: - type: Transform pos: 43.5,45.5 parent: 2 - - uid: 26165 + - uid: 26119 components: - type: Transform - pos: -41.5,13.5 + pos: -45.5,31.5 parent: 2 - uid: 26209 components: @@ -37562,96 +37597,11 @@ entities: - type: Transform pos: -28.5,-36.5 parent: 2 - - uid: 27469 - components: - - type: Transform - pos: -41.5,14.5 - parent: 2 - - uid: 27470 - components: - - type: Transform - pos: -41.5,15.5 - parent: 2 - uid: 27471 components: - type: Transform pos: -42.5,15.5 parent: 2 - - uid: 27476 - components: - - type: Transform - pos: -43.5,29.5 - parent: 2 - - uid: 27477 - components: - - type: Transform - pos: -43.5,30.5 - parent: 2 - - uid: 27478 - components: - - type: Transform - pos: -44.5,30.5 - parent: 2 - - uid: 27479 - components: - - type: Transform - pos: -45.5,30.5 - parent: 2 - - uid: 27480 - components: - - type: Transform - pos: -46.5,30.5 - parent: 2 - - uid: 27481 - components: - - type: Transform - pos: -46.5,31.5 - parent: 2 - - uid: 27482 - components: - - type: Transform - pos: -46.5,32.5 - parent: 2 - - uid: 27483 - components: - - type: Transform - pos: -46.5,33.5 - parent: 2 - - uid: 27484 - components: - - type: Transform - pos: -46.5,34.5 - parent: 2 - - uid: 27486 - components: - - type: Transform - pos: -44.5,31.5 - parent: 2 - - uid: 27487 - components: - - type: Transform - pos: -44.5,33.5 - parent: 2 - - uid: 27488 - components: - - type: Transform - pos: -44.5,34.5 - parent: 2 - - uid: 27489 - components: - - type: Transform - pos: -44.5,32.5 - parent: 2 - - uid: 27490 - components: - - type: Transform - pos: -44.5,35.5 - parent: 2 - - uid: 27491 - components: - - type: Transform - pos: -43.5,35.5 - parent: 2 - uid: 27523 components: - type: Transform @@ -37977,6 +37927,96 @@ entities: - type: Transform pos: 4.5,26.5 parent: 2 + - uid: 28109 + components: + - type: Transform + pos: -16.5,-6.5 + parent: 2 + - uid: 28110 + components: + - type: Transform + pos: -15.5,-6.5 + parent: 2 + - uid: 28111 + components: + - type: Transform + pos: -13.5,-6.5 + parent: 2 + - uid: 28112 + components: + - type: Transform + pos: -12.5,-6.5 + parent: 2 + - uid: 28113 + components: + - type: Transform + pos: -14.5,-6.5 + parent: 2 + - uid: 28114 + components: + - type: Transform + pos: -18.5,-2.5 + parent: 2 + - uid: 28115 + components: + - type: Transform + pos: -19.5,-2.5 + parent: 2 + - uid: 28116 + components: + - type: Transform + pos: -19.5,-3.5 + parent: 2 + - uid: 28117 + components: + - type: Transform + pos: -20.5,-3.5 + parent: 2 + - uid: 28118 + components: + - type: Transform + pos: -20.5,-4.5 + parent: 2 + - uid: 28133 + components: + - type: Transform + pos: -20.5,-5.5 + parent: 2 + - uid: 28251 + components: + - type: Transform + pos: -20.5,-6.5 + parent: 2 + - uid: 28340 + components: + - type: Transform + pos: -20.5,-7.5 + parent: 2 + - uid: 28358 + components: + - type: Transform + pos: -20.5,-8.5 + parent: 2 + - uid: 28359 + components: + - type: Transform + pos: -19.5,-8.5 + parent: 2 + - uid: 28360 + components: + - type: Transform + pos: -18.5,-8.5 + parent: 2 + - uid: 28361 + components: + - type: Transform + pos: -16.5,-8.5 + parent: 2 + - uid: 28537 + components: + - type: Transform + pos: -15.5,-8.5 + parent: 2 - uid: 28584 components: - type: Transform @@ -38052,6 +38092,11 @@ entities: - type: Transform pos: 8.5,-14.5 parent: 2 + - uid: 28729 + components: + - type: Transform + pos: -14.5,-8.5 + parent: 2 - uid: 28736 components: - type: Transform @@ -38062,15 +38107,50 @@ entities: - type: Transform pos: -53.5,11.5 parent: 2 - - uid: 28855 + - uid: 28775 components: - type: Transform - pos: 60.5,-3.5 + pos: -13.5,-8.5 parent: 2 - - uid: 28857 + - uid: 28815 components: - type: Transform - pos: 60.5,-2.5 + pos: -13.5,-7.5 + parent: 2 + - uid: 28829 + components: + - type: Transform + pos: -13.5,-5.5 + parent: 2 + - uid: 28849 + components: + - type: Transform + pos: -13.5,-4.5 + parent: 2 + - uid: 28850 + components: + - type: Transform + pos: -13.5,-3.5 + parent: 2 + - uid: 28851 + components: + - type: Transform + pos: -13.5,-2.5 + parent: 2 + - uid: 28853 + components: + - type: Transform + pos: -14.5,-2.5 + parent: 2 + - uid: 28854 + components: + - type: Transform + pos: -15.5,-2.5 + parent: 2 + - uid: 28855 + components: + - type: Transform + pos: -16.5,-2.5 parent: 2 - uid: 28858 components: @@ -38082,11 +38162,86 @@ entities: - type: Transform pos: 62.5,-1.5 parent: 2 + - uid: 28867 + components: + - type: Transform + pos: 30.5,-62.5 + parent: 2 - uid: 28882 components: - type: Transform pos: 5.5,70.5 parent: 2 + - uid: 28886 + components: + - type: Transform + pos: 32.5,-62.5 + parent: 2 + - uid: 28888 + components: + - type: Transform + pos: 31.5,-54.5 + parent: 2 + - uid: 28891 + components: + - type: Transform + pos: 31.5,-53.5 + parent: 2 + - uid: 28924 + components: + - type: Transform + pos: 33.5,-62.5 + parent: 2 + - uid: 28925 + components: + - type: Transform + pos: 34.5,-62.5 + parent: 2 + - uid: 28941 + components: + - type: Transform + pos: 34.5,-61.5 + parent: 2 + - uid: 28943 + components: + - type: Transform + pos: 34.5,-60.5 + parent: 2 + - uid: 28944 + components: + - type: Transform + pos: 34.5,-59.5 + parent: 2 + - uid: 28945 + components: + - type: Transform + pos: 35.5,-59.5 + parent: 2 + - uid: 28946 + components: + - type: Transform + pos: 36.5,-59.5 + parent: 2 + - uid: 28947 + components: + - type: Transform + pos: 38.5,-59.5 + parent: 2 + - uid: 28948 + components: + - type: Transform + pos: 39.5,-59.5 + parent: 2 + - uid: 28949 + components: + - type: Transform + pos: 37.5,-59.5 + parent: 2 + - uid: 28950 + components: + - type: Transform + pos: 40.5,-59.5 + parent: 2 - proto: CableApcStack entities: - uid: 7136 @@ -40074,6 +40229,11 @@ entities: - type: Transform pos: 42.5,0.5 parent: 2 + - uid: 2619 + components: + - type: Transform + pos: 61.5,-3.5 + parent: 2 - uid: 2632 components: - type: Transform @@ -40169,11 +40329,6 @@ entities: - type: Transform pos: 61.5,-6.5 parent: 2 - - uid: 2688 - components: - - type: Transform - pos: 60.5,-4.5 - parent: 2 - uid: 2689 components: - type: Transform @@ -40244,10 +40399,10 @@ entities: - type: Transform pos: 31.5,-38.5 parent: 2 - - uid: 2771 + - uid: 2794 components: - type: Transform - pos: 60.5,-2.5 + pos: -47.5,27.5 parent: 2 - uid: 2798 components: @@ -40304,6 +40459,11 @@ entities: - type: Transform pos: 23.5,-55.5 parent: 2 + - uid: 2812 + components: + - type: Transform + pos: -44.5,27.5 + parent: 2 - uid: 2818 components: - type: Transform @@ -40934,6 +41094,31 @@ entities: - type: Transform pos: 49.5,45.5 parent: 2 + - uid: 3283 + components: + - type: Transform + pos: -45.5,27.5 + parent: 2 + - uid: 3284 + components: + - type: Transform + pos: -48.5,27.5 + parent: 2 + - uid: 3295 + components: + - type: Transform + pos: -46.5,27.5 + parent: 2 + - uid: 3301 + components: + - type: Transform + pos: 37.5,-79.5 + parent: 2 + - uid: 3345 + components: + - type: Transform + pos: 39.5,-79.5 + parent: 2 - uid: 3414 components: - type: Transform @@ -40949,16 +41134,126 @@ entities: - type: Transform pos: 64.5,20.5 parent: 2 + - uid: 3505 + components: + - type: Transform + pos: 35.5,-79.5 + parent: 2 + - uid: 3519 + components: + - type: Transform + pos: 33.5,-79.5 + parent: 2 + - uid: 3522 + components: + - type: Transform + pos: 34.5,-79.5 + parent: 2 + - uid: 3547 + components: + - type: Transform + pos: 34.5,-75.5 + parent: 2 + - uid: 3550 + components: + - type: Transform + pos: 43.5,-79.5 + parent: 2 + - uid: 3573 + components: + - type: Transform + pos: 44.5,-79.5 + parent: 2 + - uid: 3575 + components: + - type: Transform + pos: 38.5,-79.5 + parent: 2 + - uid: 3581 + components: + - type: Transform + pos: 42.5,-79.5 + parent: 2 + - uid: 3582 + components: + - type: Transform + pos: 41.5,-79.5 + parent: 2 + - uid: 3583 + components: + - type: Transform + pos: 40.5,-79.5 + parent: 2 - uid: 3584 components: - type: Transform pos: -50.5,35.5 parent: 2 + - uid: 3585 + components: + - type: Transform + pos: 36.5,-79.5 + parent: 2 + - uid: 3586 + components: + - type: Transform + pos: 37.5,-67.5 + parent: 2 + - uid: 3587 + components: + - type: Transform + pos: 42.5,-71.5 + parent: 2 + - uid: 3588 + components: + - type: Transform + pos: 41.5,-71.5 + parent: 2 + - uid: 3589 + components: + - type: Transform + pos: 43.5,-71.5 + parent: 2 + - uid: 3590 + components: + - type: Transform + pos: 33.5,-67.5 + parent: 2 + - uid: 3591 + components: + - type: Transform + pos: 34.5,-67.5 + parent: 2 + - uid: 3592 + components: + - type: Transform + pos: 35.5,-67.5 + parent: 2 + - uid: 3593 + components: + - type: Transform + pos: 40.5,-67.5 + parent: 2 + - uid: 3594 + components: + - type: Transform + pos: 38.5,-67.5 + parent: 2 - uid: 3595 components: - type: Transform pos: -50.5,34.5 parent: 2 + - uid: 3598 + components: + - type: Transform + pos: 39.5,-67.5 + parent: 2 + - uid: 3599 + components: + - type: Transform + pos: 41.5,-67.5 + parent: 2 - uid: 3601 components: - type: Transform @@ -40999,11 +41294,36 @@ entities: - type: Transform pos: -42.5,53.5 parent: 2 + - uid: 3633 + components: + - type: Transform + pos: 42.5,-81.5 + parent: 2 + - uid: 3636 + components: + - type: Transform + pos: 34.5,-69.5 + parent: 2 + - uid: 3691 + components: + - type: Transform + pos: 38.5,-69.5 + parent: 2 + - uid: 3703 + components: + - type: Transform + pos: 35.5,-69.5 + parent: 2 - uid: 3705 components: - type: Transform pos: -57.5,15.5 parent: 2 + - uid: 3722 + components: + - type: Transform + pos: 37.5,-69.5 + parent: 2 - uid: 3894 components: - type: Transform @@ -41019,6 +41339,31 @@ entities: - type: Transform pos: 62.5,15.5 parent: 2 + - uid: 3982 + components: + - type: Transform + pos: 33.5,-69.5 + parent: 2 + - uid: 3984 + components: + - type: Transform + pos: 41.5,-81.5 + parent: 2 + - uid: 4003 + components: + - type: Transform + pos: 42.5,-67.5 + parent: 2 + - uid: 4016 + components: + - type: Transform + pos: 43.5,-69.5 + parent: 2 + - uid: 4018 + components: + - type: Transform + pos: 36.5,-69.5 + parent: 2 - uid: 4053 components: - type: Transform @@ -41064,11 +41409,41 @@ entities: - type: Transform pos: -55.5,15.5 parent: 2 + - uid: 4160 + components: + - type: Transform + pos: 41.5,-69.5 + parent: 2 + - uid: 4165 + components: + - type: Transform + pos: 39.5,-69.5 + parent: 2 - uid: 4192 components: - type: Transform pos: 31.5,-43.5 parent: 2 + - uid: 4219 + components: + - type: Transform + pos: 40.5,-69.5 + parent: 2 + - uid: 4221 + components: + - type: Transform + pos: 44.5,-67.5 + parent: 2 + - uid: 4319 + components: + - type: Transform + pos: 38.5,-81.5 + parent: 2 + - uid: 4323 + components: + - type: Transform + pos: 36.5,-67.5 + parent: 2 - uid: 4384 components: - type: Transform @@ -41094,6 +41469,16 @@ entities: - type: Transform pos: -28.5,-29.5 parent: 2 + - uid: 4515 + components: + - type: Transform + pos: 44.5,-69.5 + parent: 2 + - uid: 4518 + components: + - type: Transform + pos: 42.5,-69.5 + parent: 2 - uid: 4745 components: - type: Transform @@ -41129,10 +41514,10 @@ entities: - type: Transform pos: 31.5,-40.5 parent: 2 - - uid: 5047 + - uid: 4987 components: - type: Transform - pos: -43.5,11.5 + pos: 43.5,-67.5 parent: 2 - uid: 5048 components: @@ -41149,6 +41534,11 @@ entities: - type: Transform pos: 3.5,-35.5 parent: 2 + - uid: 5197 + components: + - type: Transform + pos: 61.5,-4.5 + parent: 2 - uid: 5405 components: - type: Transform @@ -41199,21 +41589,6 @@ entities: - type: Transform pos: -54.5,1.5 parent: 2 - - uid: 5574 - components: - - type: Transform - pos: -43.5,9.5 - parent: 2 - - uid: 5575 - components: - - type: Transform - pos: -43.5,10.5 - parent: 2 - - uid: 5579 - components: - - type: Transform - pos: -43.5,8.5 - parent: 2 - uid: 5589 components: - type: Transform @@ -41224,16 +41599,6 @@ entities: - type: Transform pos: 3.5,-33.5 parent: 2 - - uid: 5597 - components: - - type: Transform - pos: 60.5,-3.5 - parent: 2 - - uid: 5598 - components: - - type: Transform - pos: 60.5,-5.5 - parent: 2 - uid: 5600 components: - type: Transform @@ -41269,11 +41634,6 @@ entities: - type: Transform pos: -50.5,12.5 parent: 2 - - uid: 5705 - components: - - type: Transform - pos: -46.5,12.5 - parent: 2 - uid: 5710 components: - type: Transform @@ -41287,23 +41647,13 @@ entities: - uid: 5719 components: - type: Transform - pos: -43.5,12.5 + pos: 40.5,-81.5 parent: 2 - uid: 5722 components: - type: Transform pos: -43.5,5.5 parent: 2 - - uid: 5724 - components: - - type: Transform - pos: -44.5,12.5 - parent: 2 - - uid: 5725 - components: - - type: Transform - pos: -47.5,12.5 - parent: 2 - uid: 5727 components: - type: Transform @@ -41334,6 +41684,11 @@ entities: - type: Transform pos: -43.5,7.5 parent: 2 + - uid: 6132 + components: + - type: Transform + pos: 39.5,-81.5 + parent: 2 - uid: 6178 components: - type: Transform @@ -41614,6 +41969,11 @@ entities: - type: Transform pos: -59.5,29.5 parent: 2 + - uid: 7352 + components: + - type: Transform + pos: 33.5,-81.5 + parent: 2 - uid: 7362 components: - type: Transform @@ -41694,6 +42054,11 @@ entities: - type: Transform pos: -50.5,37.5 parent: 2 + - uid: 8432 + components: + - type: Transform + pos: -44.5,7.5 + parent: 2 - uid: 8662 components: - type: Transform @@ -41834,6 +42199,16 @@ entities: - type: Transform pos: -32.5,-52.5 parent: 2 + - uid: 9344 + components: + - type: Transform + pos: -48.5,9.5 + parent: 2 + - uid: 9353 + components: + - type: Transform + pos: -45.5,7.5 + parent: 2 - uid: 9386 components: - type: Transform @@ -42179,6 +42554,26 @@ entities: - type: Transform pos: 75.5,6.5 parent: 2 + - uid: 9563 + components: + - type: Transform + pos: -47.5,7.5 + parent: 2 + - uid: 9564 + components: + - type: Transform + pos: -48.5,8.5 + parent: 2 + - uid: 9565 + components: + - type: Transform + pos: -48.5,7.5 + parent: 2 + - uid: 9566 + components: + - type: Transform + pos: -48.5,10.5 + parent: 2 - uid: 9568 components: - type: Transform @@ -42189,6 +42584,11 @@ entities: - type: Transform pos: 31.5,-63.5 parent: 2 + - uid: 9571 + components: + - type: Transform + pos: -48.5,11.5 + parent: 2 - uid: 9573 components: - type: Transform @@ -42219,10 +42619,10 @@ entities: - type: Transform pos: -60.5,29.5 parent: 2 - - uid: 10527 + - uid: 10305 components: - type: Transform - pos: -45.5,12.5 + pos: -46.5,7.5 parent: 2 - uid: 10528 components: @@ -43369,210 +43769,140 @@ entities: - type: Transform pos: 31.5,-65.5 parent: 2 - - uid: 11753 - components: - - type: Transform - pos: 31.5,-80.5 - parent: 2 - - uid: 11754 - components: - - type: Transform - pos: 31.5,-79.5 - parent: 2 - - uid: 11756 - components: - - type: Transform - pos: 33.5,-65.5 - parent: 2 - - uid: 11757 - components: - - type: Transform - pos: 35.5,-65.5 - parent: 2 - - uid: 11758 - components: - - type: Transform - pos: 36.5,-65.5 - parent: 2 - - uid: 11759 - components: - - type: Transform - pos: 37.5,-65.5 - parent: 2 - - uid: 11760 - components: - - type: Transform - pos: 38.5,-65.5 - parent: 2 - - uid: 11761 - components: - - type: Transform - pos: 39.5,-65.5 - parent: 2 - - uid: 11762 - components: - - type: Transform - pos: 40.5,-65.5 - parent: 2 - - uid: 11763 - components: - - type: Transform - pos: 41.5,-65.5 - parent: 2 - - uid: 11764 - components: - - type: Transform - pos: 34.5,-65.5 - parent: 2 - uid: 11765 components: - type: Transform - pos: 44.5,-65.5 - parent: 2 - - uid: 11766 - components: - - type: Transform - pos: 43.5,-65.5 + pos: 31.5,-66.5 parent: 2 - uid: 11767 components: - type: Transform - pos: 42.5,-65.5 + pos: 36.5,-81.5 parent: 2 - uid: 11768 components: - type: Transform - pos: 33.5,-67.5 + pos: 40.5,-77.5 parent: 2 - uid: 11769 components: - type: Transform - pos: 35.5,-67.5 + pos: 39.5,-77.5 parent: 2 - uid: 11770 components: - type: Transform - pos: 36.5,-67.5 + pos: 37.5,-77.5 parent: 2 - uid: 11771 components: - type: Transform - pos: 37.5,-67.5 + pos: 38.5,-77.5 parent: 2 - uid: 11772 components: - type: Transform - pos: 38.5,-67.5 + pos: 38.5,-75.5 parent: 2 - uid: 11773 components: - type: Transform - pos: 39.5,-67.5 + pos: 36.5,-75.5 parent: 2 - uid: 11774 components: - type: Transform - pos: 40.5,-67.5 + pos: 37.5,-75.5 parent: 2 - uid: 11775 components: - type: Transform - pos: 34.5,-67.5 + pos: 37.5,-81.5 parent: 2 - uid: 11776 components: - type: Transform - pos: 42.5,-67.5 + pos: 41.5,-75.5 parent: 2 - uid: 11777 components: - type: Transform - pos: 43.5,-67.5 + pos: 40.5,-75.5 parent: 2 - uid: 11778 components: - type: Transform - pos: 44.5,-67.5 + pos: 39.5,-75.5 parent: 2 - uid: 11779 components: - type: Transform - pos: 41.5,-67.5 + pos: 35.5,-75.5 parent: 2 - uid: 11780 components: - type: Transform - pos: 33.5,-69.5 + pos: 33.5,-77.5 parent: 2 - uid: 11781 components: - type: Transform - pos: 35.5,-69.5 + pos: 42.5,-75.5 parent: 2 - uid: 11782 components: - type: Transform - pos: 36.5,-69.5 + pos: 43.5,-75.5 parent: 2 - uid: 11783 components: - type: Transform - pos: 37.5,-69.5 + pos: 44.5,-75.5 parent: 2 - uid: 11784 components: - type: Transform - pos: 38.5,-69.5 + pos: 34.5,-77.5 parent: 2 - uid: 11785 components: - type: Transform - pos: 39.5,-69.5 + pos: 36.5,-77.5 parent: 2 - uid: 11786 components: - type: Transform - pos: 40.5,-69.5 + pos: 44.5,-77.5 parent: 2 - uid: 11787 components: - type: Transform - pos: 41.5,-69.5 + pos: 43.5,-77.5 parent: 2 - uid: 11788 components: - type: Transform - pos: 42.5,-69.5 + pos: 41.5,-77.5 parent: 2 - uid: 11789 components: - type: Transform - pos: 43.5,-69.5 + pos: 42.5,-77.5 parent: 2 - uid: 11790 components: - type: Transform - pos: 44.5,-69.5 + pos: 35.5,-81.5 parent: 2 - uid: 11791 components: - type: Transform - pos: 34.5,-69.5 + pos: 35.5,-77.5 parent: 2 - uid: 11792 components: - type: Transform - pos: 33.5,-71.5 - parent: 2 - - uid: 11793 - components: - - type: Transform - pos: 35.5,-71.5 - parent: 2 - - uid: 11794 - components: - - type: Transform - pos: 36.5,-71.5 + pos: 34.5,-81.5 parent: 2 - uid: 11795 components: @@ -43582,52 +43912,47 @@ entities: - uid: 11796 components: - type: Transform - pos: 38.5,-71.5 + pos: 36.5,-71.5 parent: 2 - uid: 11797 components: - type: Transform - pos: 39.5,-71.5 - parent: 2 - - uid: 11798 - components: - - type: Transform - pos: 40.5,-71.5 + pos: 33.5,-71.5 parent: 2 - uid: 11799 components: - type: Transform - pos: 34.5,-71.5 + pos: 38.5,-73.5 parent: 2 - uid: 11800 components: - type: Transform - pos: 42.5,-71.5 + pos: 38.5,-71.5 parent: 2 - uid: 11801 components: - type: Transform - pos: 43.5,-71.5 + pos: 39.5,-71.5 parent: 2 - uid: 11802 components: - type: Transform - pos: 44.5,-71.5 + pos: 35.5,-71.5 parent: 2 - uid: 11803 components: - type: Transform - pos: 41.5,-71.5 + pos: 40.5,-71.5 parent: 2 - uid: 11804 components: - type: Transform - pos: 33.5,-73.5 + pos: 44.5,-71.5 parent: 2 - uid: 11805 components: - type: Transform - pos: 35.5,-73.5 + pos: 34.5,-71.5 parent: 2 - uid: 11806 components: @@ -43637,22 +43962,22 @@ entities: - uid: 11807 components: - type: Transform - pos: 37.5,-73.5 + pos: 34.5,-73.5 parent: 2 - uid: 11808 components: - type: Transform - pos: 38.5,-73.5 + pos: 33.5,-73.5 parent: 2 - uid: 11809 components: - type: Transform - pos: 34.5,-73.5 + pos: 43.5,-73.5 parent: 2 - uid: 11810 components: - type: Transform - pos: 40.5,-73.5 + pos: 42.5,-73.5 parent: 2 - uid: 11811 components: @@ -43662,202 +43987,52 @@ entities: - uid: 11812 components: - type: Transform - pos: 42.5,-73.5 + pos: 44.5,-73.5 parent: 2 - uid: 11813 components: - type: Transform - pos: 43.5,-73.5 + pos: 39.5,-73.5 parent: 2 - uid: 11814 components: - type: Transform - pos: 44.5,-73.5 + pos: 37.5,-73.5 parent: 2 - uid: 11815 components: - type: Transform - pos: 39.5,-73.5 + pos: 40.5,-73.5 parent: 2 - uid: 11816 components: - type: Transform - pos: 33.5,-75.5 + pos: 35.5,-73.5 parent: 2 - uid: 11817 components: - type: Transform - pos: 35.5,-75.5 - parent: 2 - - uid: 11818 - components: - - type: Transform - pos: 36.5,-75.5 - parent: 2 - - uid: 11819 - components: - - type: Transform - pos: 37.5,-75.5 - parent: 2 - - uid: 11820 - components: - - type: Transform - pos: 38.5,-75.5 - parent: 2 - - uid: 11821 - components: - - type: Transform - pos: 39.5,-75.5 - parent: 2 - - uid: 11822 - components: - - type: Transform - pos: 40.5,-75.5 - parent: 2 - - uid: 11823 - components: - - type: Transform - pos: 41.5,-75.5 - parent: 2 - - uid: 11824 - components: - - type: Transform - pos: 34.5,-75.5 - parent: 2 - - uid: 11825 - components: - - type: Transform - pos: 42.5,-75.5 - parent: 2 - - uid: 11826 - components: - - type: Transform - pos: 43.5,-75.5 - parent: 2 - - uid: 11827 - components: - - type: Transform - pos: 44.5,-75.5 - parent: 2 - - uid: 11828 - components: - - type: Transform - pos: 33.5,-77.5 - parent: 2 - - uid: 11829 - components: - - type: Transform - pos: 35.5,-77.5 - parent: 2 - - uid: 11830 - components: - - type: Transform - pos: 36.5,-77.5 - parent: 2 - - uid: 11831 - components: - - type: Transform - pos: 37.5,-77.5 - parent: 2 - - uid: 11832 - components: - - type: Transform - pos: 38.5,-77.5 - parent: 2 - - uid: 11833 - components: - - type: Transform - pos: 39.5,-77.5 - parent: 2 - - uid: 11834 - components: - - type: Transform - pos: 40.5,-77.5 - parent: 2 - - uid: 11835 - components: - - type: Transform - pos: 41.5,-77.5 - parent: 2 - - uid: 11836 - components: - - type: Transform - pos: 42.5,-77.5 - parent: 2 - - uid: 11837 - components: - - type: Transform - pos: 34.5,-77.5 - parent: 2 - - uid: 11838 - components: - - type: Transform - pos: 44.5,-77.5 - parent: 2 - - uid: 11839 - components: - - type: Transform - pos: 43.5,-77.5 - parent: 2 - - uid: 11840 - components: - - type: Transform - pos: 34.5,-79.5 - parent: 2 - - uid: 11841 - components: - - type: Transform - pos: 33.5,-79.5 - parent: 2 - - uid: 11842 - components: - - type: Transform - pos: 35.5,-79.5 - parent: 2 - - uid: 11843 - components: - - type: Transform - pos: 37.5,-79.5 - parent: 2 - - uid: 11844 - components: - - type: Transform - pos: 38.5,-79.5 - parent: 2 - - uid: 11845 - components: - - type: Transform - pos: 39.5,-79.5 - parent: 2 - - uid: 11846 - components: - - type: Transform - pos: 40.5,-79.5 - parent: 2 - - uid: 11847 - components: - - type: Transform - pos: 41.5,-79.5 + pos: 44.5,-81.5 parent: 2 - - uid: 11848 + - uid: 11946 components: - type: Transform - pos: 42.5,-79.5 + pos: 31.5,-82.5 parent: 2 - - uid: 11849 + - uid: 11949 components: - type: Transform - pos: 43.5,-79.5 + pos: 31.5,-81.5 parent: 2 - - uid: 11850 + - uid: 11964 components: - type: Transform - pos: 44.5,-79.5 + pos: 33.5,-75.5 parent: 2 - - uid: 11851 + - uid: 11968 components: - type: Transform - pos: 36.5,-79.5 + pos: 43.5,-81.5 parent: 2 - uid: 12007 components: @@ -44324,6 +44499,11 @@ entities: - type: Transform pos: -67.5,-37.5 parent: 2 + - uid: 12213 + components: + - type: Transform + pos: 31.5,-67.5 + parent: 2 - uid: 12339 components: - type: Transform @@ -44339,11 +44519,6 @@ entities: - type: Transform pos: 0.5,-40.5 parent: 2 - - uid: 12454 - components: - - type: Transform - pos: -43.5,25.5 - parent: 2 - uid: 12891 components: - type: Transform @@ -44449,11 +44624,6 @@ entities: - type: Transform pos: -48.5,26.5 parent: 2 - - uid: 18302 - components: - - type: Transform - pos: -43.5,26.5 - parent: 2 - uid: 18881 components: - type: Transform @@ -45039,31 +45209,6 @@ entities: - type: Transform pos: -40.5,31.5 parent: 2 - - uid: 25916 - components: - - type: Transform - pos: -48.5,25.5 - parent: 2 - - uid: 25917 - components: - - type: Transform - pos: -47.5,25.5 - parent: 2 - - uid: 25918 - components: - - type: Transform - pos: -46.5,25.5 - parent: 2 - - uid: 25919 - components: - - type: Transform - pos: -45.5,25.5 - parent: 2 - - uid: 25924 - components: - - type: Transform - pos: -44.5,25.5 - parent: 2 - uid: 26048 components: - type: Transform @@ -46540,6 +46685,11 @@ entities: - type: Transform pos: 47.5,38.5 parent: 2 + - uid: 1136 + components: + - type: Transform + pos: -40.5,31.5 + parent: 2 - uid: 1141 components: - type: Transform @@ -46550,6 +46700,11 @@ entities: - type: Transform pos: -20.5,-37.5 parent: 2 + - uid: 1318 + components: + - type: Transform + pos: -7.5,-5.5 + parent: 2 - uid: 1417 components: - type: Transform @@ -46595,6 +46750,16 @@ entities: - type: Transform pos: 43.5,37.5 parent: 2 + - uid: 2618 + components: + - type: Transform + pos: 61.5,-3.5 + parent: 2 + - uid: 2629 + components: + - type: Transform + pos: 61.5,-4.5 + parent: 2 - uid: 2635 components: - type: Transform @@ -46610,6 +46775,16 @@ entities: - type: Transform pos: 62.5,5.5 parent: 2 + - uid: 2709 + components: + - type: Transform + pos: -13.5,-5.5 + parent: 2 + - uid: 2716 + components: + - type: Transform + pos: -8.5,-5.5 + parent: 2 - uid: 2732 components: - type: Transform @@ -46620,11 +46795,21 @@ entities: - type: Transform pos: 38.5,37.5 parent: 2 + - uid: 2789 + components: + - type: Transform + pos: -9.5,-5.5 + parent: 2 - uid: 2791 components: - type: Transform pos: 37.5,37.5 parent: 2 + - uid: 2793 + components: + - type: Transform + pos: -6.5,-5.5 + parent: 2 - uid: 2973 components: - type: Transform @@ -46670,21 +46855,11 @@ entities: - type: Transform pos: -52.5,39.5 parent: 2 - - uid: 3936 - components: - - type: Transform - pos: -44.5,24.5 - parent: 2 - uid: 3992 components: - type: Transform pos: -22.5,-1.5 parent: 2 - - uid: 4018 - components: - - type: Transform - pos: -46.5,30.5 - parent: 2 - uid: 4042 components: - type: Transform @@ -46715,31 +46890,6 @@ entities: - type: Transform pos: -49.5,30.5 parent: 2 - - uid: 4219 - components: - - type: Transform - pos: -47.5,30.5 - parent: 2 - - uid: 4221 - components: - - type: Transform - pos: -45.5,30.5 - parent: 2 - - uid: 4302 - components: - - type: Transform - pos: -44.5,18.5 - parent: 2 - - uid: 4319 - components: - - type: Transform - pos: -44.5,16.5 - parent: 2 - - uid: 4323 - components: - - type: Transform - pos: -44.5,21.5 - parent: 2 - uid: 4356 components: - type: Transform @@ -46810,55 +46960,50 @@ entities: - type: Transform pos: -46.5,39.5 parent: 2 - - uid: 7392 - components: - - type: Transform - pos: -46.5,22.5 - parent: 2 - - uid: 7394 + - uid: 7399 components: - type: Transform - pos: -44.5,22.5 + pos: -63.5,1.5 parent: 2 - - uid: 7395 + - uid: 7406 components: - type: Transform - pos: -44.5,19.5 + pos: -63.5,4.5 parent: 2 - - uid: 7396 + - uid: 7407 components: - type: Transform - pos: -44.5,20.5 + pos: -63.5,2.5 parent: 2 - - uid: 7397 + - uid: 7512 components: - type: Transform - pos: -44.5,17.5 + pos: 9.5,-40.5 parent: 2 - - uid: 7399 + - uid: 7520 components: - type: Transform - pos: -63.5,1.5 + pos: -48.5,27.5 parent: 2 - - uid: 7406 + - uid: 7521 components: - type: Transform - pos: -63.5,4.5 + pos: -48.5,26.5 parent: 2 - - uid: 7407 + - uid: 7577 components: - type: Transform - pos: -63.5,2.5 + pos: 52.5,-18.5 parent: 2 - - uid: 7512 + - uid: 7782 components: - type: Transform - pos: 9.5,-40.5 + pos: -10.5,-5.5 parent: 2 - - uid: 7577 + - uid: 7807 components: - type: Transform - pos: 52.5,-18.5 + pos: -44.5,27.5 parent: 2 - uid: 7840 components: @@ -46900,20 +47045,30 @@ entities: - type: Transform pos: -53.5,15.5 parent: 2 + - uid: 7945 + components: + - type: Transform + pos: -45.5,27.5 + parent: 2 - uid: 8036 components: - type: Transform pos: -63.5,0.5 parent: 2 - - uid: 8429 + - uid: 8091 components: - type: Transform - pos: -40.5,28.5 + pos: -46.5,27.5 parent: 2 - - uid: 8432 + - uid: 8181 components: - type: Transform - pos: -41.5,30.5 + pos: -47.5,27.5 + parent: 2 + - uid: 8429 + components: + - type: Transform + pos: -40.5,28.5 parent: 2 - uid: 8433 components: @@ -46935,11 +47090,6 @@ entities: - type: Transform pos: 62.5,27.5 parent: 2 - - uid: 9065 - components: - - type: Transform - pos: 60.5,-5.5 - parent: 2 - uid: 9066 components: - type: Transform @@ -46970,11 +47120,31 @@ entities: - type: Transform pos: 1.5,68.5 parent: 2 + - uid: 9352 + components: + - type: Transform + pos: -6.5,-6.5 + parent: 2 - uid: 9458 components: - type: Transform pos: 61.5,5.5 parent: 2 + - uid: 9562 + components: + - type: Transform + pos: -48.5,23.5 + parent: 2 + - uid: 9619 + components: + - type: Transform + pos: -48.5,24.5 + parent: 2 + - uid: 9640 + components: + - type: Transform + pos: -16.5,-5.5 + parent: 2 - uid: 10073 components: - type: Transform @@ -46990,25 +47160,45 @@ entities: - type: Transform pos: 35.5,45.5 parent: 2 - - uid: 10899 + - uid: 10306 components: - type: Transform - pos: 48.5,43.5 + pos: -11.5,-5.5 parent: 2 - - uid: 12528 + - uid: 10307 components: - type: Transform - pos: 62.5,28.5 + pos: -12.5,-5.5 parent: 2 - - uid: 12547 + - uid: 10308 components: - type: Transform - pos: -45.5,16.5 + pos: -15.5,-5.5 parent: 2 - - uid: 12548 + - uid: 10311 components: - type: Transform - pos: -46.5,16.5 + pos: -14.5,-5.5 + parent: 2 + - uid: 10527 + components: + - type: Transform + pos: -49.5,24.5 + parent: 2 + - uid: 10899 + components: + - type: Transform + pos: 48.5,43.5 + parent: 2 + - uid: 11916 + components: + - type: Transform + pos: -48.5,20.5 + parent: 2 + - uid: 12528 + components: + - type: Transform + pos: 62.5,28.5 parent: 2 - uid: 12835 components: @@ -48195,11 +48385,6 @@ entities: - type: Transform pos: 35.5,2.5 parent: 2 - - uid: 13138 - components: - - type: Transform - pos: -5.5,-5.5 - parent: 2 - uid: 13139 components: - type: Transform @@ -48765,11 +48950,6 @@ entities: - type: Transform pos: -48.5,22.5 parent: 2 - - uid: 13285 - components: - - type: Transform - pos: -47.5,22.5 - parent: 2 - uid: 13290 components: - type: Transform @@ -52160,11 +52340,6 @@ entities: - type: Transform pos: -8.5,47.5 parent: 2 - - uid: 14195 - components: - - type: Transform - pos: -43.5,25.5 - parent: 2 - uid: 15414 components: - type: Transform @@ -52175,11 +52350,6 @@ entities: - type: Transform pos: 49.5,44.5 parent: 2 - - uid: 17982 - components: - - type: Transform - pos: -44.5,23.5 - parent: 2 - uid: 18559 components: - type: Transform @@ -52525,6 +52695,11 @@ entities: - type: Transform pos: -15.5,-38.5 parent: 2 + - uid: 23310 + components: + - type: Transform + pos: -12.5,-6.5 + parent: 2 - uid: 23856 components: - type: Transform @@ -52825,51 +53000,66 @@ entities: - type: Transform pos: -46.5,-46.5 parent: 2 - - uid: 25776 + - uid: 25646 components: - type: Transform - pos: -45.5,40.5 + pos: -48.5,19.5 parent: 2 - - uid: 25829 + - uid: 25651 components: - type: Transform - pos: -45.5,39.5 + pos: -48.5,17.5 parent: 2 - - uid: 25885 + - uid: 25654 components: - type: Transform - pos: 52.5,-19.5 + pos: -48.5,18.5 parent: 2 - - uid: 25907 + - uid: 25776 components: - type: Transform - pos: -48.5,25.5 + pos: -45.5,40.5 parent: 2 - - uid: 25908 + - uid: 25801 components: - type: Transform - pos: -47.5,25.5 + pos: -48.5,21.5 parent: 2 - - uid: 25909 + - uid: 25829 components: - type: Transform - pos: -46.5,25.5 + pos: -45.5,39.5 parent: 2 - - uid: 25910 + - uid: 25858 components: - type: Transform - pos: -45.5,25.5 + pos: -47.5,17.5 parent: 2 - - uid: 25915 + - uid: 25860 components: - type: Transform - pos: -44.5,25.5 + pos: -42.5,32.5 + parent: 2 + - uid: 25885 + components: + - type: Transform + pos: 52.5,-19.5 parent: 2 - uid: 26017 components: - type: Transform pos: 44.5,37.5 parent: 2 + - uid: 26120 + components: + - type: Transform + pos: -40.5,32.5 + parent: 2 + - uid: 26185 + components: + - type: Transform + pos: -41.5,32.5 + parent: 2 - uid: 26379 components: - type: Transform @@ -53275,36 +53465,11 @@ entities: - type: Transform pos: -52.5,45.5 parent: 2 - - uid: 27472 - components: - - type: Transform - pos: -44.5,30.5 - parent: 2 - - uid: 27473 - components: - - type: Transform - pos: -43.5,30.5 - parent: 2 - - uid: 27474 - components: - - type: Transform - pos: -48.5,30.5 - parent: 2 - - uid: 27475 - components: - - type: Transform - pos: -43.5,29.5 - parent: 2 - uid: 27549 components: - type: Transform pos: -51.5,15.5 parent: 2 - - uid: 27605 - components: - - type: Transform - pos: -45.5,22.5 - parent: 2 - uid: 27644 components: - type: Transform @@ -53325,11 +53490,6 @@ entities: - type: Transform pos: -23.5,6.5 parent: 2 - - uid: 27714 - components: - - type: Transform - pos: -43.5,26.5 - parent: 2 - uid: 27728 components: - type: Transform @@ -53460,25 +53620,20 @@ entities: - type: Transform pos: -51.5,14.5 parent: 2 - - uid: 28849 - components: - - type: Transform - pos: 60.5,-4.5 - parent: 2 - - uid: 28850 + - uid: 28852 components: - type: Transform - pos: 60.5,-3.5 + pos: 61.5,-2.5 parent: 2 - - uid: 28851 + - uid: 28887 components: - type: Transform - pos: 60.5,-2.5 + pos: 31.5,-54.5 parent: 2 - - uid: 28852 + - uid: 28889 components: - type: Transform - pos: 61.5,-2.5 + pos: 31.5,-53.5 parent: 2 - proto: CableMVStack entities: @@ -53600,10 +53755,10 @@ entities: - type: Transform pos: -33.5,18.5 parent: 2 - - uid: 23762 + - uid: 2137 components: - type: Transform - pos: -49.5,22.5 + pos: -43.5,35.5 parent: 2 - proto: CargoMailTeleporter entities: @@ -53754,6 +53909,18 @@ entities: - type: Transform pos: -5.5,38.5 parent: 2 + - uid: 11877 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -17.5,-7.5 + parent: 2 + - uid: 11985 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -16.5,-7.5 + parent: 2 - uid: 21416 components: - type: Transform @@ -53892,6 +54059,18 @@ entities: - type: Transform pos: -41.5,-9.5 parent: 2 + - uid: 25243 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -17.5,-6.5 + parent: 2 + - uid: 25246 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -16.5,-6.5 + parent: 2 - uid: 25718 components: - type: Transform @@ -54205,6 +54384,30 @@ entities: - type: Transform pos: 14.5,-5.5 parent: 2 + - uid: 11903 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -16.5,-4.5 + parent: 2 + - uid: 11904 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -16.5,-3.5 + parent: 2 + - uid: 25241 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -17.5,-3.5 + parent: 2 + - uid: 25244 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -17.5,-4.5 + parent: 2 - uid: 25710 components: - type: Transform @@ -54245,145 +54448,171 @@ entities: - type: Transform pos: 14.5,-56.5 parent: 2 -- proto: CarpetChapel - entities: - - uid: 1294 + - uid: 28928 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -7.5,-9.5 + rot: 3.141592653589793 rad + pos: 40.5,-58.5 parent: 2 - - uid: 1304 + - uid: 28929 components: - type: Transform rot: 3.141592653589793 rad - pos: -6.5,-7.5 + pos: 39.5,-58.5 parent: 2 - - uid: 1305 +- proto: CarpetChapel + entities: + - uid: 818 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -7.5,-7.5 + pos: -4.5,-11.5 parent: 2 - - uid: 1309 + - uid: 10735 + components: + - type: Transform + pos: -7.5,-13.5 + parent: 2 + - uid: 10736 components: - type: Transform rot: -1.5707963267948966 rad - pos: -4.5,-7.5 + pos: -7.5,-8.5 parent: 2 - - uid: 1310 + - uid: 10832 components: - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,-11.5 + rot: 1.5707963267948966 rad + pos: -3.5,-13.5 parent: 2 - - uid: 1318 + - uid: 10870 components: - type: Transform rot: 3.141592653589793 rad - pos: -3.5,-7.5 + pos: -6.5,-12.5 parent: 2 - - uid: 1321 + - uid: 10871 components: - type: Transform - pos: -7.5,-10.5 + rot: -1.5707963267948966 rad + pos: -4.5,-12.5 parent: 2 - - uid: 1358 + - uid: 10950 components: - type: Transform - pos: -4.5,-12.5 + pos: -7.5,-11.5 parent: 2 - - uid: 1374 + - uid: 10951 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,-8.5 + rot: 3.141592653589793 rad + pos: -6.5,-8.5 parent: 2 - - uid: 1375 + - uid: 11119 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-10.5 + rot: -1.5707963267948966 rad + pos: -7.5,-12.5 parent: 2 - - uid: 1376 + - uid: 11128 components: - type: Transform - pos: -4.5,-10.5 + pos: -7.5,-9.5 parent: 2 - - uid: 1391 + - uid: 11141 components: - type: Transform - pos: -7.5,-12.5 + rot: 1.5707963267948966 rad + pos: -6.5,-9.5 parent: 2 - - uid: 1393 + - uid: 11155 components: - type: Transform rot: 3.141592653589793 rad - pos: -3.5,-9.5 + pos: -3.5,-12.5 parent: 2 - - uid: 1498 + - uid: 11750 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-9.5 + rot: 1.5707963267948966 rad + pos: -3.5,-9.5 parent: 2 - - uid: 1499 + - uid: 11753 components: - type: Transform rot: 1.5707963267948966 rad - pos: -6.5,-12.5 + pos: -3.5,-11.5 parent: 2 - - uid: 1507 + - uid: 11754 components: - type: Transform - rot: 1.5707963267948966 rad + rot: 3.141592653589793 rad pos: -3.5,-10.5 parent: 2 - - uid: 1510 + - uid: 11756 components: - type: Transform - pos: -7.5,-8.5 + rot: 1.5707963267948966 rad + pos: -6.5,-13.5 parent: 2 - - uid: 1556 + - uid: 11757 components: - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,-9.5 + rot: -1.5707963267948966 rad + pos: -4.5,-10.5 parent: 2 - - uid: 1590 + - uid: 11759 + components: + - type: Transform + pos: -4.5,-13.5 + parent: 2 + - uid: 11760 + components: + - type: Transform + pos: -4.5,-9.5 + parent: 2 + - uid: 11761 components: - type: Transform rot: -1.5707963267948966 rad - pos: -7.5,-11.5 + pos: -7.5,-10.5 parent: 2 - - uid: 1630 + - uid: 11762 components: - type: Transform rot: 3.141592653589793 rad - pos: -6.5,-11.5 + pos: -3.5,-8.5 parent: 2 - - uid: 1675 + - uid: 11763 components: - type: Transform + rot: 3.141592653589793 rad + pos: -6.5,-10.5 + parent: 2 + - uid: 11764 + components: + - type: Transform + rot: -1.5707963267948966 rad pos: -4.5,-8.5 parent: 2 - - uid: 1678 + - uid: 12018 components: - type: Transform rot: 1.5707963267948966 rad - pos: -3.5,-12.5 + pos: -6.5,-11.5 parent: 2 - - uid: 1680 +- proto: CarpetCyan + entities: + - uid: 28926 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-11.5 + rot: 3.141592653589793 rad + pos: 36.5,-58.5 parent: 2 - - uid: 1682 + - uid: 28927 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-8.5 + rot: 3.141592653589793 rad + pos: 37.5,-58.5 parent: 2 - proto: CarpetOrange entities: @@ -54431,11 +54660,65 @@ entities: parent: 2 - proto: CarpetPurple entities: + - uid: 1304 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -20.5,-5.5 + parent: 2 + - uid: 1393 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -19.5,-5.5 + parent: 2 + - uid: 1422 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -19.5,-4.5 + parent: 2 + - uid: 1427 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -20.5,-7.5 + parent: 2 + - uid: 1448 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -19.5,-3.5 + parent: 2 + - uid: 1498 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -19.5,-7.5 + parent: 2 + - uid: 1499 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -19.5,-6.5 + parent: 2 + - uid: 1507 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -20.5,-6.5 + parent: 2 - uid: 6524 components: - type: Transform pos: 31.5,49.5 parent: 2 + - uid: 12006 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -20.5,-4.5 + parent: 2 - uid: 19632 components: - type: Transform @@ -54581,6 +54864,12 @@ entities: - type: Transform pos: 33.5,48.5 parent: 2 + - uid: 27917 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -20.5,-3.5 + parent: 2 - proto: CartridgePistolSpent entities: - uid: 643 @@ -58200,6 +58489,11 @@ entities: rot: -1.5707963267948966 rad pos: 31.5,27.5 parent: 2 + - uid: 665 + components: + - type: Transform + pos: -48.5,-35.5 + parent: 2 - uid: 741 components: - type: Transform @@ -58330,6 +58624,16 @@ entities: rot: -1.5707963267948966 rad pos: 10.5,34.5 parent: 2 + - uid: 3296 + components: + - type: Transform + pos: 31.5,-79.5 + parent: 2 + - uid: 3299 + components: + - type: Transform + pos: 31.5,-80.5 + parent: 2 - uid: 3322 components: - type: Transform @@ -58492,6 +58796,11 @@ entities: rot: -1.5707963267948966 rad pos: -37.5,18.5 parent: 2 + - uid: 3901 + components: + - type: Transform + pos: 36.5,-68.5 + parent: 2 - uid: 3919 components: - type: Transform @@ -58508,11 +58817,36 @@ entities: - type: Transform pos: -30.5,-22.5 parent: 2 + - uid: 3936 + components: + - type: Transform + pos: 33.5,-68.5 + parent: 2 + - uid: 3946 + components: + - type: Transform + pos: 34.5,-68.5 + parent: 2 + - uid: 3954 + components: + - type: Transform + pos: 37.5,-68.5 + parent: 2 - uid: 3955 components: - type: Transform pos: 52.5,20.5 parent: 2 + - uid: 3961 + components: + - type: Transform + pos: 38.5,-68.5 + parent: 2 + - uid: 3970 + components: + - type: Transform + pos: 39.5,-68.5 + parent: 2 - uid: 3979 components: - type: Transform @@ -58577,6 +58911,31 @@ entities: rot: 1.5707963267948966 rad pos: 21.5,32.5 parent: 2 + - uid: 4291 + components: + - type: Transform + pos: 41.5,-68.5 + parent: 2 + - uid: 4294 + components: + - type: Transform + pos: 35.5,-68.5 + parent: 2 + - uid: 4302 + components: + - type: Transform + pos: 40.5,-68.5 + parent: 2 + - uid: 4311 + components: + - type: Transform + pos: 42.5,-68.5 + parent: 2 + - uid: 4326 + components: + - type: Transform + pos: 32.5,-68.5 + parent: 2 - uid: 4360 components: - type: Transform @@ -58713,6 +59072,11 @@ entities: rot: 1.5707963267948966 rad pos: -54.5,-10.5 parent: 2 + - uid: 5047 + components: + - type: Transform + pos: 33.5,-72.5 + parent: 2 - uid: 5165 components: - type: Transform @@ -58875,6 +59239,16 @@ entities: - type: Transform pos: 2.5,-2.5 parent: 2 + - uid: 5574 + components: + - type: Transform + pos: 43.5,-68.5 + parent: 2 + - uid: 5575 + components: + - type: Transform + pos: 44.5,-68.5 + parent: 2 - uid: 5577 components: - type: Transform @@ -58885,6 +59259,11 @@ entities: - type: Transform pos: 3.5,-1.5 parent: 2 + - uid: 5579 + components: + - type: Transform + pos: 37.5,-72.5 + parent: 2 - uid: 5580 components: - type: Transform @@ -58925,6 +59304,11 @@ entities: - type: Transform pos: 1.5,-2.5 parent: 2 + - uid: 5596 + components: + - type: Transform + pos: 36.5,-72.5 + parent: 2 - uid: 5601 components: - type: Transform @@ -59166,6 +59550,11 @@ entities: - type: Transform pos: 18.5,0.5 parent: 2 + - uid: 5705 + components: + - type: Transform + pos: 34.5,-72.5 + parent: 2 - uid: 5706 components: - type: Transform @@ -59206,6 +59595,16 @@ entities: - type: Transform pos: 13.5,0.5 parent: 2 + - uid: 5724 + components: + - type: Transform + pos: 32.5,-76.5 + parent: 2 + - uid: 5725 + components: + - type: Transform + pos: 44.5,-72.5 + parent: 2 - uid: 5726 components: - type: Transform @@ -59397,11 +59796,26 @@ entities: - type: Transform pos: -12.5,0.5 parent: 2 + - uid: 5803 + components: + - type: Transform + pos: 41.5,-72.5 + parent: 2 + - uid: 5804 + components: + - type: Transform + pos: 43.5,-72.5 + parent: 2 - uid: 5805 components: - type: Transform pos: -15.5,0.5 parent: 2 + - uid: 5807 + components: + - type: Transform + pos: 40.5,-76.5 + parent: 2 - uid: 5808 components: - type: Transform @@ -59465,11 +59879,51 @@ entities: - type: Transform pos: 9.5,1.5 parent: 2 + - uid: 6005 + components: + - type: Transform + pos: 37.5,-76.5 + parent: 2 + - uid: 6112 + components: + - type: Transform + pos: 39.5,-76.5 + parent: 2 + - uid: 6123 + components: + - type: Transform + pos: 42.5,-72.5 + parent: 2 + - uid: 6124 + components: + - type: Transform + pos: 43.5,-76.5 + parent: 2 + - uid: 6125 + components: + - type: Transform + pos: 41.5,-76.5 + parent: 2 + - uid: 6126 + components: + - type: Transform + pos: 42.5,-76.5 + parent: 2 - uid: 6138 components: - type: Transform pos: 20.5,48.5 parent: 2 + - uid: 6146 + components: + - type: Transform + pos: 35.5,-72.5 + parent: 2 + - uid: 6147 + components: + - type: Transform + pos: 32.5,-80.5 + parent: 2 - uid: 6153 components: - type: Transform @@ -59506,11 +59960,56 @@ entities: - type: Transform pos: -22.5,3.5 parent: 2 + - uid: 6255 + components: + - type: Transform + pos: 44.5,-76.5 + parent: 2 + - uid: 6256 + components: + - type: Transform + pos: 33.5,-65.5 + parent: 2 + - uid: 6258 + components: + - type: Transform + pos: 37.5,-80.5 + parent: 2 + - uid: 6260 + components: + - type: Transform + pos: 33.5,-80.5 + parent: 2 + - uid: 6263 + components: + - type: Transform + pos: 35.5,-80.5 + parent: 2 + - uid: 6265 + components: + - type: Transform + pos: 36.5,-80.5 + parent: 2 - uid: 6272 components: - type: Transform pos: -13.5,-31.5 parent: 2 + - uid: 6297 + components: + - type: Transform + pos: 40.5,-72.5 + parent: 2 + - uid: 6298 + components: + - type: Transform + pos: 33.5,-76.5 + parent: 2 + - uid: 6301 + components: + - type: Transform + pos: 38.5,-76.5 + parent: 2 - uid: 6520 components: - type: Transform @@ -59546,6 +60045,11 @@ entities: rot: 1.5707963267948966 rad pos: -54.5,-15.5 parent: 2 + - uid: 6741 + components: + - type: Transform + pos: 38.5,-72.5 + parent: 2 - uid: 6876 components: - type: Transform @@ -59593,6 +60097,11 @@ entities: rot: -1.5707963267948966 rad pos: -37.5,20.5 parent: 2 + - uid: 7353 + components: + - type: Transform + pos: 39.5,-72.5 + parent: 2 - uid: 7358 components: - type: Transform @@ -59605,6 +60114,16 @@ entities: rot: -1.5707963267948966 rad pos: -63.5,-18.5 parent: 2 + - uid: 7364 + components: + - type: Transform + pos: 39.5,-80.5 + parent: 2 + - uid: 7365 + components: + - type: Transform + pos: 38.5,-80.5 + parent: 2 - uid: 7366 components: - type: Transform @@ -59636,11 +60155,46 @@ entities: - type: Transform pos: -63.5,1.5 parent: 2 + - uid: 7392 + components: + - type: Transform + pos: 34.5,-80.5 + parent: 2 + - uid: 7394 + components: + - type: Transform + pos: 43.5,-80.5 + parent: 2 + - uid: 7395 + components: + - type: Transform + pos: 41.5,-80.5 + parent: 2 + - uid: 7396 + components: + - type: Transform + pos: 36.5,-76.5 + parent: 2 + - uid: 7397 + components: + - type: Transform + pos: 34.5,-76.5 + parent: 2 + - uid: 7400 + components: + - type: Transform + pos: 35.5,-76.5 + parent: 2 - uid: 7408 components: - type: Transform pos: -63.5,0.5 parent: 2 + - uid: 7418 + components: + - type: Transform + pos: 40.5,-80.5 + parent: 2 - uid: 7480 components: - type: Transform @@ -63545,6 +64099,22 @@ entities: rot: 3.141592653589793 rad pos: 31.5,-60.5 parent: 2 + - uid: 11766 + components: + - type: Transform + pos: 31.5,-81.5 + parent: 2 + - uid: 11798 + components: + - type: Transform + pos: 32.5,-72.5 + parent: 2 + - uid: 11827 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 42.5,-58.5 + parent: 2 - uid: 11852 components: - type: Transform @@ -63563,12 +64133,6 @@ entities: rot: 3.141592653589793 rad pos: 31.5,-64.5 parent: 2 - - uid: 11855 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 31.5,-61.5 - parent: 2 - uid: 11857 components: - type: Transform @@ -63653,323 +64217,34 @@ entities: rot: 3.141592653589793 rad pos: 31.5,-78.5 parent: 2 - - uid: 11871 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 31.5,-79.5 - parent: 2 - - uid: 11872 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 32.5,-78.5 - parent: 2 - - uid: 11873 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 34.5,-78.5 - parent: 2 - - uid: 11874 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 35.5,-78.5 - parent: 2 - - uid: 11875 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 36.5,-78.5 - parent: 2 - - uid: 11876 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 37.5,-78.5 - parent: 2 - - uid: 11877 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 38.5,-78.5 - parent: 2 - - uid: 11878 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 39.5,-78.5 - parent: 2 - - uid: 11879 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 40.5,-78.5 - parent: 2 - - uid: 11880 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 33.5,-78.5 - parent: 2 - - uid: 11881 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 41.5,-78.5 - parent: 2 - - uid: 11882 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.5,-78.5 - parent: 2 - - uid: 11883 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 43.5,-78.5 - parent: 2 - - uid: 11884 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 44.5,-78.5 - parent: 2 - - uid: 11885 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 44.5,-74.5 - parent: 2 - - uid: 11886 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 43.5,-74.5 - parent: 2 - - uid: 11887 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.5,-74.5 - parent: 2 - - uid: 11888 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 41.5,-74.5 - parent: 2 - - uid: 11889 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 39.5,-74.5 - parent: 2 - - uid: 11890 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 38.5,-74.5 - parent: 2 - - uid: 11891 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 37.5,-74.5 - parent: 2 - - uid: 11892 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 36.5,-74.5 - parent: 2 - - uid: 11893 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 35.5,-74.5 - parent: 2 - - uid: 11894 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 34.5,-74.5 - parent: 2 - - uid: 11895 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 33.5,-74.5 - parent: 2 - - uid: 11896 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 40.5,-74.5 - parent: 2 - - uid: 11897 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 32.5,-74.5 - parent: 2 - - uid: 11898 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 32.5,-70.5 - parent: 2 - - uid: 11899 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 33.5,-70.5 - parent: 2 - - uid: 11900 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 34.5,-70.5 - parent: 2 - - uid: 11901 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 35.5,-70.5 - parent: 2 - - uid: 11902 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 37.5,-70.5 - parent: 2 - - uid: 11903 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 38.5,-70.5 - parent: 2 - - uid: 11904 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 39.5,-70.5 - parent: 2 - - uid: 11905 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 40.5,-70.5 - parent: 2 - - uid: 11906 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 41.5,-70.5 - parent: 2 - - uid: 11907 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.5,-70.5 - parent: 2 - - uid: 11908 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 43.5,-70.5 - parent: 2 - - uid: 11909 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 44.5,-70.5 - parent: 2 - - uid: 11910 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 36.5,-70.5 - parent: 2 - - uid: 11911 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 44.5,-66.5 - parent: 2 - - uid: 11912 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 43.5,-66.5 - parent: 2 - - uid: 11913 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.5,-66.5 - parent: 2 - - uid: 11914 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 40.5,-66.5 - parent: 2 - - uid: 11915 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 39.5,-66.5 - parent: 2 - - uid: 11916 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 38.5,-66.5 - parent: 2 - - uid: 11917 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 37.5,-66.5 - parent: 2 - - uid: 11918 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 36.5,-66.5 - parent: 2 - - uid: 11919 + - uid: 11935 components: - type: Transform - rot: 3.141592653589793 rad - pos: 35.5,-66.5 + pos: 37.5,-64.5 parent: 2 - - uid: 11920 + - uid: 11937 components: - type: Transform rot: 3.141592653589793 rad - pos: 34.5,-66.5 + pos: 42.5,-61.5 parent: 2 - - uid: 11921 + - uid: 11963 components: - type: Transform rot: 3.141592653589793 rad - pos: 41.5,-66.5 + pos: 42.5,-63.5 parent: 2 - - uid: 11922 + - uid: 11965 components: - type: Transform rot: 3.141592653589793 rad - pos: 33.5,-66.5 + pos: 42.5,-62.5 parent: 2 - - uid: 11923 + - uid: 11967 components: - type: Transform rot: 3.141592653589793 rad - pos: 32.5,-66.5 + pos: 42.5,-64.5 parent: 2 - uid: 12028 components: @@ -64390,6 +64665,12 @@ entities: rot: 3.141592653589793 rad pos: -68.5,-38.5 parent: 2 + - uid: 12216 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 31.5,-61.5 + parent: 2 - uid: 12340 components: - type: Transform @@ -64461,6 +64742,11 @@ entities: rot: -1.5707963267948966 rad pos: 8.5,33.5 parent: 2 + - uid: 15674 + components: + - type: Transform + pos: 38.5,-64.5 + parent: 2 - uid: 15676 components: - type: Transform @@ -64476,6 +64762,38 @@ entities: - type: Transform pos: 47.5,39.5 parent: 2 + - uid: 16303 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 42.5,-60.5 + parent: 2 + - uid: 16304 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 42.5,-59.5 + parent: 2 + - uid: 16305 + components: + - type: Transform + pos: 36.5,-64.5 + parent: 2 + - uid: 16306 + components: + - type: Transform + pos: 44.5,-80.5 + parent: 2 + - uid: 16307 + components: + - type: Transform + pos: 42.5,-80.5 + parent: 2 + - uid: 16456 + components: + - type: Transform + pos: 39.5,-64.5 + parent: 2 - uid: 16672 components: - type: Transform @@ -64503,6 +64821,41 @@ entities: rot: -1.5707963267948966 rad pos: -39.5,19.5 parent: 2 + - uid: 17184 + components: + - type: Transform + pos: 40.5,-64.5 + parent: 2 + - uid: 17185 + components: + - type: Transform + pos: 41.5,-64.5 + parent: 2 + - uid: 17186 + components: + - type: Transform + pos: 33.5,-66.5 + parent: 2 + - uid: 17187 + components: + - type: Transform + pos: 34.5,-64.5 + parent: 2 + - uid: 17188 + components: + - type: Transform + pos: 35.5,-64.5 + parent: 2 + - uid: 17189 + components: + - type: Transform + pos: 33.5,-64.5 + parent: 2 + - uid: 17190 + components: + - type: Transform + pos: 32.5,-66.5 + parent: 2 - uid: 17364 components: - type: Transform @@ -65602,6 +65955,11 @@ entities: rot: -1.5707963267948966 rad pos: -39.5,20.5 parent: 2 + - uid: 24193 + components: + - type: Transform + pos: 61.5,-3.5 + parent: 2 - uid: 24195 components: - type: Transform @@ -65891,51 +66249,11 @@ entities: - type: Transform pos: -10.5,-9.5 parent: 2 - - uid: 25239 - components: - - type: Transform - pos: -10.5,-8.5 - parent: 2 - uid: 25240 components: - type: Transform pos: -10.5,-17.5 parent: 2 - - uid: 25241 - components: - - type: Transform - pos: -10.5,-7.5 - parent: 2 - - uid: 25242 - components: - - type: Transform - pos: -10.5,-6.5 - parent: 2 - - uid: 25243 - components: - - type: Transform - pos: -10.5,-5.5 - parent: 2 - - uid: 25244 - components: - - type: Transform - pos: -10.5,-4.5 - parent: 2 - - uid: 25245 - components: - - type: Transform - pos: -10.5,-2.5 - parent: 2 - - uid: 25246 - components: - - type: Transform - pos: -10.5,-1.5 - parent: 2 - - uid: 25247 - components: - - type: Transform - pos: -10.5,-3.5 - parent: 2 - uid: 25248 components: - type: Transform @@ -67500,11 +67818,6 @@ entities: - type: Transform pos: 43.5,-48.5 parent: 2 - - uid: 28340 - components: - - type: Transform - pos: 34.5,-58.5 - parent: 2 - uid: 28341 components: - type: Transform @@ -67650,11 +67963,6 @@ entities: - type: Transform pos: 68.5,0.5 parent: 2 - - uid: 28863 - components: - - type: Transform - pos: 60.5,-4.5 - parent: 2 - uid: 28865 components: - type: Transform @@ -67665,91 +67973,6 @@ entities: - type: Transform pos: 61.5,-6.5 parent: 2 - - uid: 28867 - components: - - type: Transform - pos: 60.5,-5.5 - parent: 2 - - uid: 28886 - components: - - type: Transform - pos: 41.5,-57.5 - parent: 2 - - uid: 28887 - components: - - type: Transform - pos: 40.5,-57.5 - parent: 2 - - uid: 28888 - components: - - type: Transform - pos: 39.5,-57.5 - parent: 2 - - uid: 28889 - components: - - type: Transform - pos: 38.5,-57.5 - parent: 2 - - uid: 28890 - components: - - type: Transform - pos: 37.5,-57.5 - parent: 2 - - uid: 28891 - components: - - type: Transform - pos: 36.5,-57.5 - parent: 2 - - uid: 28892 - components: - - type: Transform - pos: 35.5,-57.5 - parent: 2 - - uid: 28893 - components: - - type: Transform - pos: 34.5,-57.5 - parent: 2 - - uid: 28894 - components: - - type: Transform - pos: 34.5,-59.5 - parent: 2 - - uid: 28895 - components: - - type: Transform - pos: 34.5,-60.5 - parent: 2 - - uid: 28896 - components: - - type: Transform - pos: 34.5,-61.5 - parent: 2 - - uid: 28897 - components: - - type: Transform - pos: 33.5,-61.5 - parent: 2 - - uid: 28898 - components: - - type: Transform - pos: 33.5,-62.5 - parent: 2 - - uid: 28899 - components: - - type: Transform - pos: 33.5,-63.5 - parent: 2 - - uid: 28900 - components: - - type: Transform - pos: 33.5,-64.5 - parent: 2 - - uid: 28901 - components: - - type: Transform - pos: 32.5,-64.5 - parent: 2 - proto: Cautery entities: - uid: 8230 @@ -67800,6 +68023,12 @@ entities: rot: -1.5707963267948966 rad pos: 13.5,-80.5 parent: 2 + - uid: 1374 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -14.5,-8.5 + parent: 2 - uid: 5069 components: - type: Transform @@ -68031,6 +68260,22 @@ entities: - type: Transform pos: -39.5,-53.5 parent: 2 + - uid: 11843 + components: + - type: Transform + pos: -13.5,-2.5 + parent: 2 + - uid: 11851 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -14.5,-7.5 + parent: 2 + - uid: 11888 + components: + - type: Transform + pos: -14.5,-3.5 + parent: 2 - uid: 12464 components: - type: Transform @@ -68273,6 +68518,16 @@ entities: rot: -1.5707963267948966 rad pos: -7.5,-44.5 parent: 2 + - uid: 23314 + components: + - type: Transform + pos: -13.5,-3.5 + parent: 2 + - uid: 23316 + components: + - type: Transform + pos: -14.5,-2.5 + parent: 2 - uid: 24358 components: - type: Transform @@ -68289,12 +68544,24 @@ entities: rot: 3.141592653589793 rad pos: 62.5,34.5 parent: 2 + - uid: 25242 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,-8.5 + parent: 2 - uid: 25263 components: - type: Transform rot: 3.141592653589793 rad pos: 63.5,34.5 parent: 2 + - uid: 25409 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,-7.5 + parent: 2 - uid: 25765 components: - type: Transform @@ -68359,6 +68626,17 @@ entities: - type: Transform pos: 37.5,43.5 parent: 2 + - uid: 28934 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 34.5,-60.5 + parent: 2 + - uid: 28935 + components: + - type: Transform + pos: 40.5,-57.5 + parent: 2 - proto: ChairFolding entities: - uid: 2959 @@ -68908,17 +69186,17 @@ entities: rot: 3.141592653589793 rad pos: 1.550489,64.605354 parent: 2 - - uid: 12496 + - uid: 11819 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 66.57445,24.798231 + rot: 3.141592653589793 rad + pos: -8.351351,-5.3135734 parent: 2 - - uid: 20082 + - uid: 12496 components: - type: Transform - rot: 3.141592653589793 rad - pos: -46.412685,-32.40442 + rot: -1.5707963267948966 rad + pos: 66.57445,24.798231 parent: 2 - uid: 21803 components: @@ -69067,6 +69345,12 @@ entities: rot: -1.5707963267948966 rad pos: -12.4181,-17.403904 parent: 2 + - uid: 1223 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -16.567535,-3.4996343 + parent: 2 - uid: 2867 components: - type: Transform @@ -69167,16 +69451,6 @@ entities: rot: 1.5707963267948966 rad pos: -15.340132,-16.567762 parent: 2 - - uid: 6297 - components: - - type: Transform - pos: -5.5511746,-2.9641042 - parent: 2 - - uid: 6298 - components: - - type: Transform - pos: -7.4574246,-2.9172292 - parent: 2 - uid: 6307 components: - type: Transform @@ -69315,33 +69589,73 @@ entities: - type: Transform pos: 14.637596,-11.459144 parent: 2 + - uid: 10748 + components: + - type: Transform + pos: -7.8176765,-3.5821419 + parent: 2 - uid: 11048 components: - type: Transform rot: -1.5707963267948966 rad pos: 23.524605,50.515244 parent: 2 - - uid: 12346 + - uid: 11889 components: - type: Transform rot: -1.5707963267948966 rad - pos: -22.462034,-32.424202 + pos: -16.567535,-4.2808843 parent: 2 - - uid: 15687 + - uid: 11890 components: - type: Transform - pos: -46.739853,-30.103804 + rot: -1.5707963267948966 rad + pos: -16.55191,-6.5465093 parent: 2 - - uid: 15763 + - uid: 11891 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -16.52066,-7.3121343 + parent: 2 + - uid: 11993 components: - type: Transform - pos: -45.786728,-30.025679 + pos: -8.802052,-3.5508919 + parent: 2 + - uid: 12346 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -22.462034,-32.424202 + parent: 2 + - uid: 12548 + components: + - type: Transform + pos: -2.5333233,-5.4338007 parent: 2 - uid: 24438 components: - type: Transform pos: -47.493378,-43.553085 parent: 2 + - uid: 24500 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -20.451511,-7.359176 + parent: 2 + - uid: 25156 + components: + - type: Transform + pos: -4.3926983,-5.4181757 + parent: 2 + - uid: 25398 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -20.498386,-3.4685512 + parent: 2 - proto: CheapLighter entities: - uid: 7424 @@ -70109,7 +70423,7 @@ entities: - uid: 6468 components: - type: Transform - pos: 55.5,1.5 + pos: 54.5,1.5 parent: 2 - proto: ClosetL3VirologyFilled entities: @@ -70161,32 +70475,14 @@ entities: - type: Transform pos: 7.9336786,-36.458645 parent: 2 - - type: Fixtures - fixtures: - fix1: - shape: !type:PolygonShape - radius: 0.01 - vertices: - - -0.25,-0.48 - - 0.25,-0.48 - - 0.25,0.48 - - -0.25,0.48 - mask: - - Impassable - - TableLayer - - LowImpassable - layer: - - BulletImpassable - - Opaque - density: 75 - hard: True - restitution: 0 - friction: 0.4 - type: EntityStorage - removedMasks: 20 - open: True - - type: PlaceableSurface - isPlaceable: True + air: + volume: 200 + immutable: False + temperature: 293.147 + moles: + Oxygen: 1.7459903 + Nitrogen: 6.568249 - uid: 10666 components: - type: Transform @@ -70233,14 +70529,25 @@ entities: - type: Transform pos: 7.5,-37.5 parent: 2 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 6374 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null - type: EntityStorage air: volume: 200 immutable: False temperature: 293.14673 moles: - Oxygen: 1.7459903 - Nitrogen: 6.568249 + Oxygen: 1.8856695 + Nitrogen: 7.0937095 - uid: 28397 components: - type: Transform @@ -70390,11 +70697,6 @@ entities: - type: Transform pos: -38.5,-21.5 parent: 2 - - uid: 12233 - components: - - type: Transform - pos: 27.5,-62.5 - parent: 2 - uid: 12234 components: - type: Transform @@ -70435,6 +70737,14 @@ entities: - type: Transform pos: 66.5,21.5 parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + Oxygen: 1.7459903 + Nitrogen: 6.568249 - uid: 12300 components: - type: Transform @@ -70513,19 +70823,6 @@ entities: - type: Transform pos: -34.5,-17.5 parent: 2 - - uid: 25409 - components: - - type: Transform - pos: -11.5,-7.5 - parent: 2 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14673 - moles: - Oxygen: 1.7459903 - Nitrogen: 6.568249 - uid: 25410 components: - type: Transform @@ -70551,6 +70848,11 @@ entities: - type: Transform pos: 28.5,27.5 parent: 2 + - uid: 25909 + components: + - type: Transform + pos: 29.5,-61.5 + parent: 2 - uid: 26208 components: - type: Transform @@ -70578,11 +70880,26 @@ entities: - type: Transform pos: 48.5,1.5 parent: 2 - - uid: 6469 - components: - - type: Transform - pos: 54.5,1.5 - parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + Oxygen: 1.7459903 + Nitrogen: 6.568249 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 6443 + - 6446 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null - uid: 7733 components: - type: Transform @@ -70973,17 +71290,24 @@ entities: - type: Transform pos: -20.643852,-39.20221 parent: 2 +- proto: ClothingEyesGlassesCheapSunglasses + entities: + - uid: 28937 + components: + - type: Transform + pos: 40.48432,-57.53234 + parent: 2 - proto: ClothingEyesGlassesSunglasses entities: - uid: 10321 components: - type: Transform - pos: -49.53349,-28.985895 + pos: -11.466186,-7.4741087 parent: 2 - uid: 10322 components: - type: Transform - pos: -49.49874,-29.260117 + pos: -11.513061,-7.0991087 parent: 2 - proto: ClothingEyesHudMedical entities: @@ -71200,7 +71524,7 @@ entities: - uid: 25643 components: - type: Transform - pos: -8.4558525,-8.923064 + pos: -8.363953,-9.364251 parent: 2 - proto: ClothingHeadHatPirate entities: @@ -71791,10 +72115,10 @@ entities: parent: 26470 - proto: ClothingNeckLawyerbadge entities: - - uid: 10320 + - uid: 11849 components: - type: Transform - pos: -45.24081,-31.43567 + pos: -7.748289,-4.438748 parent: 2 - proto: ClothingNeckScarfStripedLesbianLong entities: @@ -71860,7 +72184,7 @@ entities: - uid: 418 components: - type: Transform - pos: -8.550319,-8.208876 + pos: -8.493517,-8.585509 parent: 2 - proto: ClothingOuterArmorBulletproof entities: @@ -72114,19 +72438,19 @@ entities: canCollide: False - type: InsideEntityStorage storage: 5996 -- proto: ClothingOuterHoodieChaplain +- proto: ClothingOuterNunRobe entities: - - uid: 25646 + - uid: 25642 components: - type: Transform - pos: -8.5027275,-7.454314 + pos: -8.676453,-9.458001 parent: 2 -- proto: ClothingOuterNunRobe +- proto: ClothingOuterRobesJudge entities: - - uid: 25642 + - uid: 1376 components: - type: Transform - pos: -8.5496025,-9.282439 + pos: -20.41877,-5.447062 parent: 2 - proto: ClothingOuterSkub entities: @@ -72149,6 +72473,16 @@ entities: - type: Transform pos: 65.51976,24.751356 parent: 2 +- proto: ClothingOuterSuitRad + entities: + - uid: 6446 + components: + - type: Transform + parent: 6467 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 6467 - proto: ClothingOuterSuitShrineMaiden entities: - uid: 27659 @@ -72664,6 +72998,20 @@ entities: - type: Transform pos: 63.733654,-13.447625 parent: 2 +- proto: ClothingUniformJumpsuitHawaiBlack + entities: + - uid: 28932 + components: + - type: Transform + pos: 36.999947,-58.454216 + parent: 2 +- proto: ClothingUniformJumpsuitHawaiRed + entities: + - uid: 28933 + components: + - type: Transform + pos: 40.343697,-58.485466 + parent: 2 - proto: ClothingUniformJumpsuitLawyerBlack entities: - uid: 12501 @@ -72682,7 +73030,7 @@ entities: desc: a red suit bearing the logo of Cybersun, worn by its professional legal team name: Cybersun lawyer's suit - type: Transform - pos: -49.674313,-33.32817 + pos: -11.6988535,-8.503578 parent: 2 - uid: 24434 components: @@ -72690,7 +73038,7 @@ entities: desc: a red suit bearing the logo of Cybersun, worn by its professional legal team name: Cybersun lawyer's suit - type: Transform - pos: -49.393063,-33.35942 + pos: -11.3707285,-8.441078 parent: 2 - proto: ClothingUniformJumpsuitMercenary entities: @@ -73051,6 +73399,12 @@ entities: - type: Transform pos: -3.5,36.5 parent: 2 + - uid: 25127 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -20.5,-5.5 + parent: 2 - uid: 26144 components: - type: Transform @@ -73092,30 +73446,30 @@ entities: parent: 2 - proto: ComputerAnalysisConsole entities: - - uid: 15261 + - uid: 1620 components: - type: Transform rot: 1.5707963267948966 rad - pos: 51.5,-1.5 + pos: 56.5,-1.5 parent: 2 - type: AnalysisConsole - analyzerEntity: 1402 + analyzerEntity: 12584 - type: DeviceLinkSource linkedPorts: - 1402: + 12584: - - ArtifactAnalyzerSender - ArtifactAnalyzerReceiver - - uid: 24172 + - uid: 15261 components: - type: Transform rot: 1.5707963267948966 rad - pos: 55.5,-1.5 + pos: 51.5,-1.5 parent: 2 - type: AnalysisConsole - analyzerEntity: 1415 + analyzerEntity: 1402 - type: DeviceLinkSource linkedPorts: - 1415: + 1402: - - ArtifactAnalyzerSender - ArtifactAnalyzerReceiver - proto: ComputerAtmosMonitoring @@ -73967,15 +74321,15 @@ entities: parent: 2 - proto: CrateArtifactContainer entities: - - uid: 3382 + - uid: 6372 components: - type: Transform - pos: 59.5,1.5 + pos: 55.5,1.5 parent: 2 - - uid: 24173 + - uid: 24146 components: - type: Transform - pos: 60.5,1.5 + pos: 60.5,-0.5 parent: 2 - proto: CrateCommandSecure entities: @@ -74716,15 +75070,15 @@ entities: parent: 2 - proto: CrateLockBoxEngineering entities: - - uid: 9939 + - uid: 202 components: - type: Transform - pos: -60.5,3.5 + pos: -48.5,17.5 parent: 2 - - uid: 12757 + - uid: 9939 components: - type: Transform - pos: -48.5,27.5 + pos: -60.5,3.5 parent: 2 - proto: CrateLockBoxMedical entities: @@ -75571,30 +75925,6 @@ entities: rot: 1.5707963267948966 rad pos: 27.5,-47.5 parent: 2 - - uid: 22201 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -43.5,-32.5 - parent: 2 - - uid: 22202 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -43.5,-31.5 - parent: 2 - - uid: 22203 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -46.5,-27.5 - parent: 2 - - uid: 22204 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -47.5,-27.5 - parent: 2 - uid: 27695 components: - type: Transform @@ -75812,10 +76142,10 @@ entities: parent: 2 - proto: DefaultStationBeaconAtmospherics entities: - - uid: 21908 + - uid: 11988 components: - type: Transform - pos: -45.5,24.5 + pos: -44.5,24.5 parent: 2 - proto: DefaultStationBeaconBar entities: @@ -75921,6 +76251,13 @@ entities: text: Command meeting - type: WarpPoint location: Command meeting +- proto: DefaultStationBeaconCourtroom + entities: + - uid: 27490 + components: + - type: Transform + pos: -17.5,-5.5 + parent: 2 - proto: DefaultStationBeaconCryosleep entities: - uid: 26968 @@ -76012,10 +76349,10 @@ entities: parent: 2 - proto: DefaultStationBeaconLawOffice entities: - - uid: 4518 + - uid: 27482 components: - type: Transform - pos: -47.5,-31.5 + pos: -10.5,-4.5 parent: 2 - proto: DefaultStationBeaconLibrary entities: @@ -76157,10 +76494,10 @@ entities: parent: 2 - proto: DefaultStationBeaconTelecoms entities: - - uid: 21913 + - uid: 11972 components: - type: Transform - pos: -43.5,30.5 + pos: -47.5,-31.5 parent: 2 - proto: DefaultStationBeaconTheater entities: @@ -76340,6 +76677,12 @@ entities: rot: -1.5707963267948966 rad pos: 49.5,-15.5 parent: 2 + - uid: 11883 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -8.5,-8.5 + parent: 2 - uid: 12538 components: - type: Transform @@ -76680,6 +77023,12 @@ entities: rot: -1.5707963267948966 rad pos: 2.5,14.5 parent: 2 + - uid: 11881 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,-8.5 + parent: 2 - uid: 12551 components: - type: Transform @@ -76960,12 +77309,6 @@ entities: rot: 3.141592653589793 rad pos: -37.5,-37.5 parent: 2 - - uid: 2281 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -8.5,-6.5 - parent: 2 - uid: 2348 components: - type: Transform @@ -76978,12 +77321,6 @@ entities: rot: 3.141592653589793 rad pos: -37.5,-38.5 parent: 2 - - uid: 2357 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -8.5,-7.5 - parent: 2 - uid: 2368 components: - type: Transform @@ -77187,12 +77524,6 @@ entities: rot: -1.5707963267948966 rad pos: -0.5,-8.5 parent: 2 - - uid: 4987 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,-8.5 - parent: 2 - uid: 4988 components: - type: Transform @@ -80748,6 +81079,11 @@ entities: rot: -1.5707963267948966 rad pos: 45.5,22.5 parent: 2 + - uid: 11882 + components: + - type: Transform + pos: -2.5,-9.5 + parent: 2 - uid: 12411 components: - type: Transform @@ -81243,11 +81579,6 @@ entities: parent: 2 - proto: DisposalTrunk entities: - - uid: 138 - components: - - type: Transform - pos: -8.5,-5.5 - parent: 2 - uid: 1359 components: - type: Transform @@ -81317,6 +81648,12 @@ entities: rot: -1.5707963267948966 rad pos: -7.5,-48.5 parent: 2 + - uid: 11879 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,-10.5 + parent: 2 - uid: 12555 components: - type: Transform @@ -81523,11 +81860,6 @@ entities: - type: Transform pos: 24.5,50.5 parent: 2 - - uid: 2709 - components: - - type: Transform - pos: -8.5,-5.5 - parent: 2 - uid: 2859 components: - type: Transform @@ -81698,6 +82030,11 @@ entities: - type: Transform pos: 47.5,-17.5 parent: 2 + - uid: 11823 + components: + - type: Transform + pos: -2.5,-10.5 + parent: 2 - uid: 12630 components: - type: Transform @@ -81759,12 +82096,6 @@ entities: parent: 2 - proto: DisposalYJunction entities: - - uid: 2237 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,-8.5 - parent: 2 - uid: 5137 components: - type: Transform @@ -81995,6 +82326,14 @@ entities: - type: Transform pos: 57.5,20.5 parent: 2 +- proto: DrinkBahamaMama + entities: + - uid: 28930 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 36.23432,-59.079216 + parent: 2 - proto: DrinkBeerCan entities: - uid: 12323 @@ -82007,6 +82346,14 @@ entities: - type: Transform pos: 70.24713,36.725124 parent: 2 +- proto: DrinkBlueHawaiianGlass + entities: + - uid: 28931 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 39.29682,-59.016716 + parent: 2 - proto: DrinkCanPack entities: - uid: 5868 @@ -82435,6 +82782,16 @@ entities: - type: Transform pos: -4.49366,52.56992 parent: 2 + - uid: 1309 + components: + - type: Transform + pos: -17.60627,-7.009562 + parent: 2 + - uid: 1375 + components: + - type: Transform + pos: -17.715645,-3.915812 + parent: 2 - uid: 1956 components: - type: Transform @@ -83245,6 +83602,20 @@ entities: - type: Transform pos: -54.37781,18.609428 parent: 2 +- proto: EncryptionKeyCommon + entities: + - uid: 24230 + components: + - type: Transform + pos: -46.71182,-33.335907 + parent: 2 +- proto: EncryptionKeyMedicalScience + entities: + - uid: 27918 + components: + - type: Transform + pos: -46.30557,-33.460907 + parent: 2 - proto: ExosuitFabricator entities: - uid: 6537 @@ -83271,19 +83642,10 @@ entities: - CivilianServices - proto: ExplosivesSignMed entities: - - uid: 5197 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 57.5,-7.5 - parent: 2 - - type: Fixtures - fixtures: {} - - uid: 8443 + - uid: 5597 components: - type: Transform - rot: 3.141592653589793 rad - pos: 59.5,-5.5 + pos: 60.5,-5.5 parent: 2 - type: Fixtures fixtures: {} @@ -83319,8 +83681,30 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 24162 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 58.5,-7.5 + parent: 2 + - type: Fixtures + fixtures: {} - proto: ExtinguisherCabinetFilled entities: + - uid: 27486 + components: + - type: Transform + pos: -2.5,-4.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 27714 + components: + - type: Transform + pos: -8.5,-6.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 28816 components: - type: Transform @@ -83390,13 +83774,6 @@ entities: parent: 2 - type: Fixtures fixtures: {} - - uid: 28829 - components: - - type: Transform - pos: -4.5,-2.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 28830 components: - type: Transform @@ -83593,20 +83970,20 @@ entities: parent: 2 - type: FaxMachine name: Cybersun command - - uid: 10307 + - uid: 10851 components: - type: Transform - pos: -49.5,-28.5 + pos: 48.5,-17.5 parent: 2 - type: FaxMachine - name: Cybersun Legal dept. - - uid: 10851 + name: Donk co. shipping + - uid: 11850 components: - type: Transform - pos: 48.5,-17.5 + pos: -11.5,-6.5 parent: 2 - type: FaxMachine - name: Donk co. shipping + name: Cybersun legal Dept. - uid: 21607 components: - type: Transform @@ -83682,18 +84059,23 @@ entities: - type: Transform pos: -9.5,53.5 parent: 2 - - uid: 10328 + - uid: 11980 components: - type: Transform - pos: -44.5,-33.5 + pos: -11.652725,-3.5 parent: 2 - - uid: 20094 + - uid: 23336 components: - type: Transform - pos: -44.5,-32.5 + pos: -20.5,-2.5 parent: 2 - proto: filingCabinetRandom entities: + - uid: 366 + components: + - type: Transform + pos: -8.465225,-2.5 + parent: 2 - uid: 6151 components: - type: Transform @@ -83729,6 +84111,21 @@ entities: - type: Transform pos: -6.2700534,41.5 parent: 2 + - uid: 11984 + components: + - type: Transform + pos: -8.04335,-2.5 + parent: 2 + - uid: 11987 + components: + - type: Transform + pos: -9.23085,-2.5 + parent: 2 + - uid: 27920 + components: + - type: Transform + pos: -8.85585,-2.5 + parent: 2 - proto: filingCabinetTallRandom entities: - uid: 8541 @@ -83781,36 +84178,6 @@ entities: - type: Transform pos: 1.5953732,52.5 parent: 2 - - uid: 9619 - components: - - type: Transform - pos: -45.20968,-28.5 - parent: 2 - - uid: 10305 - components: - - type: Transform - pos: -45.537804,-28.5 - parent: 2 - - uid: 10306 - components: - - type: Transform - pos: -45.86593,-28.5 - parent: 2 - - uid: 10312 - components: - - type: Transform - pos: -46.24093,-28.5 - parent: 2 - - uid: 10313 - components: - - type: Transform - pos: -46.545616,-28.5 - parent: 2 - - uid: 10314 - components: - - type: Transform - pos: -46.89718,-28.5 - parent: 2 - proto: FireAxeCabinetFilled entities: - uid: 7746 @@ -83883,15 +84250,6 @@ entities: deviceLists: - 20512 - 20513 - - uid: 172 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -10.5,-1.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20527 - uid: 188 components: - type: Transform @@ -84003,6 +84361,16 @@ entities: deviceLists: - 20619 - 20625 + - uid: 375 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -41.5,31.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 12005 + - 20483 - uid: 376 components: - type: Transform @@ -84041,6 +84409,16 @@ entities: deviceLists: - 20526 - 20525 + - uid: 385 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -40.5,31.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 12005 + - 20483 - uid: 388 components: - type: Transform @@ -84062,6 +84440,12 @@ entities: rot: 3.141592653589793 rad pos: 64.5,29.5 parent: 2 + - uid: 498 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 58.5,-2.5 + parent: 2 - uid: 512 components: - type: Transform @@ -84120,16 +84504,6 @@ entities: rot: 1.5707963267948966 rad pos: 16.5,-60.5 parent: 2 - - uid: 1069 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -39.5,29.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 27356 - - 20483 - uid: 1140 components: - type: Transform @@ -84332,6 +84706,7 @@ entities: - type: DeviceNetwork deviceLists: - 20526 + - 11914 - uid: 2056 components: - type: Transform @@ -84390,6 +84765,7 @@ entities: - type: DeviceNetwork deviceLists: - 3991 + - 11914 - uid: 2116 components: - type: Transform @@ -84516,6 +84892,7 @@ entities: - type: DeviceNetwork deviceLists: - 20526 + - 11914 - uid: 3516 components: - type: Transform @@ -84562,6 +84939,7 @@ entities: - type: DeviceNetwork deviceLists: - 3991 + - 11914 - uid: 3621 components: - type: Transform @@ -84816,6 +85194,15 @@ entities: deviceLists: - 8418 - 1786 + - uid: 11928 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -10.5,-1.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 23338 - uid: 12337 components: - type: Transform @@ -85847,7 +86234,7 @@ entities: - type: DeviceNetwork deviceLists: - 20529 - - 20527 + - 11933 - uid: 20021 components: - type: Transform @@ -85857,7 +86244,7 @@ entities: - type: DeviceNetwork deviceLists: - 20529 - - 20527 + - 11933 - uid: 20022 components: - type: Transform @@ -85867,7 +86254,7 @@ entities: - type: DeviceNetwork deviceLists: - 20529 - - 20527 + - 11933 - uid: 20023 components: - type: Transform @@ -85962,8 +86349,8 @@ entities: parent: 2 - type: DeviceNetwork deviceLists: - - 20527 - 20526 + - 11933 - uid: 20033 components: - type: Transform @@ -85972,8 +86359,8 @@ entities: parent: 2 - type: DeviceNetwork deviceLists: - - 20527 - 20526 + - 11933 - uid: 20034 components: - type: Transform @@ -85982,8 +86369,8 @@ entities: parent: 2 - type: DeviceNetwork deviceLists: - - 20527 - 20526 + - 11933 - uid: 20035 components: - type: Transform @@ -86402,7 +86789,6 @@ entities: - type: DeviceNetwork deviceLists: - 20481 - - 20482 - 20486 - 364 - uid: 20091 @@ -86415,7 +86801,6 @@ entities: deviceLists: - 20444 - 20481 - - 20482 - uid: 20092 components: - type: Transform @@ -87736,15 +88121,6 @@ entities: deviceLists: - 20534 - 20618 - - uid: 20290 - components: - - type: Transform - pos: -48.5,30.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20481 - - 20482 - uid: 20402 components: - type: Transform @@ -88020,6 +88396,15 @@ entities: - type: DeviceNetwork deviceLists: - 20560 + - uid: 23321 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -12.5,-5.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 23338 - uid: 23564 components: - type: Transform @@ -88078,15 +88463,6 @@ entities: - type: DeviceNetwork deviceLists: - 20577 - - uid: 24146 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 57.5,-2.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20577 - uid: 25411 components: - type: Transform @@ -88097,26 +88473,25 @@ entities: - type: Transform pos: -1.5,-26.5 parent: 2 - - uid: 25864 + - uid: 25872 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -40.5,29.5 + rot: 3.141592653589793 rad + pos: 51.5,-23.5 parent: 2 - type: DeviceNetwork deviceLists: - - 27356 - - 20483 - - uid: 25872 + - 26900 + - 14190 + - uid: 27469 components: - type: Transform rot: 3.141592653589793 rad - pos: 51.5,-23.5 + pos: -10.5,-9.5 parent: 2 - type: DeviceNetwork deviceLists: - - 26900 - - 14190 + - 23338 - uid: 28027 components: - type: Transform @@ -88626,6 +89001,81 @@ entities: - type: Transform pos: -2.5,-3.5 parent: 2 + - uid: 28892 + components: + - type: Transform + pos: 36.5,-60.5 + parent: 2 + - uid: 28893 + components: + - type: Transform + pos: 36.5,-61.5 + parent: 2 + - uid: 28894 + components: + - type: Transform + pos: 36.5,-62.5 + parent: 2 + - uid: 28895 + components: + - type: Transform + pos: 37.5,-60.5 + parent: 2 + - uid: 28896 + components: + - type: Transform + pos: 37.5,-62.5 + parent: 2 + - uid: 28897 + components: + - type: Transform + pos: 38.5,-60.5 + parent: 2 + - uid: 28898 + components: + - type: Transform + pos: 38.5,-61.5 + parent: 2 + - uid: 28899 + components: + - type: Transform + pos: 38.5,-62.5 + parent: 2 + - uid: 28900 + components: + - type: Transform + pos: 39.5,-60.5 + parent: 2 + - uid: 28901 + components: + - type: Transform + pos: 39.5,-61.5 + parent: 2 + - uid: 28909 + components: + - type: Transform + pos: 39.5,-62.5 + parent: 2 + - uid: 28910 + components: + - type: Transform + pos: 37.5,-61.5 + parent: 2 + - uid: 28911 + components: + - type: Transform + pos: 40.5,-60.5 + parent: 2 + - uid: 28912 + components: + - type: Transform + pos: 40.5,-62.5 + parent: 2 + - uid: 28913 + components: + - type: Transform + pos: 40.5,-61.5 + parent: 2 - proto: FloraGreyStalagmite entities: - uid: 81 @@ -88713,11 +89163,6 @@ entities: parent: 2 - proto: FloraTree entities: - - uid: 3901 - components: - - type: Transform - pos: -14.024092,-7.2934437 - parent: 2 - uid: 5731 components: - type: Transform @@ -88733,22 +89178,6 @@ entities: - type: Transform pos: 40.787483,-8.912053 parent: 2 - - uid: 10950 - components: - - type: Transform - pos: -19.337622,-4.077749 - parent: 2 - - uid: 10951 - components: - - type: Transform - pos: -14.449161,-5.068915 - parent: 2 - - uid: 24230 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -19.333046,-7.424266 - parent: 2 - proto: FloraTreeStump entities: - uid: 18108 @@ -88996,11 +89425,6 @@ entities: - type: Transform pos: 2.5502074,65.39018 parent: 2 - - uid: 15674 - components: - - type: Transform - pos: -46.89706,-31.326296 - parent: 2 - uid: 19711 components: - type: Transform @@ -89011,11 +89435,6 @@ entities: - type: Transform pos: -0.31870222,49.34068 parent: 2 - - uid: 23583 - components: - - type: Transform - pos: -46.61581,-31.576294 - parent: 2 - proto: FoodBanana entities: - uid: 6622 @@ -89355,17 +89774,17 @@ entities: - uid: 24304 components: - type: Transform - pos: -2.8263211,-5.297457 + pos: -8.410219,-10.4263115 parent: 2 - uid: 24305 components: - type: Transform - pos: -2.8888211,-5.469332 + pos: -8.644594,-10.3950615 parent: 2 - uid: 24306 components: - type: Transform - pos: -2.6856961,-5.359957 + pos: -8.540392,-10.054259 parent: 2 - proto: FoodSnackDanDanNoodles entities: @@ -89544,11 +89963,11 @@ entities: rot: 3.141592653589793 rad pos: 52.5,-4.5 parent: 2 - - uid: 21123 + - uid: 15264 components: - type: Transform rot: 3.141592653589793 rad - pos: 56.5,-4.5 + pos: 57.5,-4.5 parent: 2 - uid: 24493 components: @@ -89631,17 +90050,17 @@ entities: rot: -1.5707963267948966 rad pos: -36.5,10.5 parent: 2 - - uid: 20229 + - uid: 21125 components: - type: Transform rot: 3.141592653589793 rad - pos: 58.5,-4.5 + pos: 54.5,-4.5 parent: 2 - - uid: 21125 + - uid: 24174 components: - type: Transform rot: 3.141592653589793 rad - pos: 54.5,-4.5 + pos: 59.5,-4.5 parent: 2 - uid: 25665 components: @@ -91303,6 +91722,12 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 11923 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -51.5,30.5 + parent: 2 - uid: 19042 components: - type: Transform @@ -92088,12 +92513,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 3489 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 56.5,-2.5 - parent: 2 - uid: 3631 components: - type: Transform @@ -92605,14 +93024,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 4294 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -45.5,26.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 4295 components: - type: Transform @@ -92713,12 +93124,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 6374 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 56.5,-3.5 - parent: 2 - uid: 6441 components: - type: Transform @@ -93082,6 +93487,29 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 11906 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -53.5,30.5 + parent: 2 + - uid: 11915 + components: + - type: Transform + pos: -16.5,-7.5 + parent: 2 + - uid: 12295 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 59.5,-3.5 + parent: 2 + - uid: 12775 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 59.5,-2.5 + parent: 2 - uid: 12877 components: - type: Transform @@ -93196,12 +93624,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 15264 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 58.5,-2.5 - parent: 2 - uid: 15679 components: - type: Transform @@ -93783,62 +94205,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17184 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -52.5,30.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17185 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -50.5,30.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17186 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -49.5,30.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17187 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -48.5,30.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17188 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -47.5,30.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17189 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -46.5,30.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17190 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -51.5,30.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 17191 components: - type: Transform @@ -96388,14 +96754,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17571 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -17.5,-6.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 17572 components: - type: Transform @@ -98323,7 +98681,7 @@ entities: components: - type: Transform rot: 3.141592653589793 rad - pos: 58.5,-3.5 + pos: 57.5,-3.5 parent: 2 - uid: 17857 components: @@ -106600,13 +106958,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19750 - components: - - type: Transform - pos: -16.5,-4.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19751 components: - type: Transform @@ -106614,13 +106965,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19753 - components: - - type: Transform - pos: -16.5,-7.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19754 components: - type: Transform @@ -107631,6 +107975,12 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 20229 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 57.5,-2.5 + parent: 2 - uid: 20254 components: - type: Transform @@ -108746,14 +109096,12 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 17381 + - uid: 11917 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -50.5,30.5 + rot: -1.5707963267948966 rad + pos: -52.5,30.5 parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 18645 components: - type: Transform @@ -108817,14 +109165,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19026 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -52.5,30.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19038 components: - type: Transform @@ -109168,46 +109508,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 20476 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -48.5,30.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 20477 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -47.5,30.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 20478 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -46.5,30.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 20479 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -49.5,30.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 20480 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -45.5,30.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 20973 components: - type: Transform @@ -110004,14 +110304,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 7945 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -53.5,30.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 7993 components: - type: Transform @@ -110423,6 +110715,18 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 11913 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -17.5,-6.5 + parent: 2 + - uid: 11971 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -16.5,-4.5 + parent: 2 - uid: 12303 components: - type: Transform @@ -112054,14 +112358,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 9640 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -51.5,30.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 18818 components: - type: Transform @@ -112175,41 +112471,34 @@ entities: - type: Transform pos: 52.5,-0.5 parent: 2 - - uid: 6372 - components: - - type: Transform - pos: 58.5,-0.5 - parent: 2 - uid: 6373 components: - type: Transform pos: 54.5,-0.5 parent: 2 - - uid: 12295 + - uid: 12741 components: - type: Transform - pos: 56.5,-0.5 + pos: 57.5,-0.5 parent: 2 -- proto: GasPressurePump - entities: - - uid: 498 + - uid: 21993 components: - type: Transform - pos: 56.5,-1.5 + pos: 59.5,-0.5 parent: 2 +- proto: GasPressurePump + entities: - uid: 2608 components: - type: Transform pos: 52.5,-1.5 parent: 2 - - uid: 4291 + - uid: 2615 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -44.5,26.5 + rot: 3.141592653589793 rad + pos: 59.5,-1.5 parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 6353 components: - type: MetaData @@ -112262,11 +112551,11 @@ entities: rot: -1.5707963267948966 rad pos: -40.5,15.5 parent: 2 - - uid: 12584 + - uid: 11905 components: - type: Transform - rot: 3.141592653589793 rad - pos: 58.5,-1.5 + rot: -1.5707963267948966 rad + pos: -45.5,26.5 parent: 2 - uid: 13983 components: @@ -112284,6 +112573,11 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 24160 + components: + - type: Transform + pos: 57.5,-1.5 + parent: 2 - uid: 27683 components: - type: Transform @@ -112300,10 +112594,11 @@ entities: parent: 2 - proto: GasRecycler entities: - - uid: 7364 + - uid: 26187 components: - type: Transform - pos: -44.5,28.5 + rot: 1.5707963267948966 rad + pos: -49.5,21.5 parent: 2 - proto: GasThermoMachineFreezer entities: @@ -112312,6 +112607,12 @@ entities: - type: Transform pos: -48.5,16.5 parent: 2 + - uid: 11981 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -44.5,-33.5 + parent: 2 - uid: 17497 components: - type: Transform @@ -112323,11 +112624,6 @@ entities: rot: 1.5707963267948966 rad pos: 1.5,53.5 parent: 2 - - uid: 22170 - components: - - type: Transform - pos: -42.5,35.5 - parent: 2 - uid: 25578 components: - type: Transform @@ -112454,6 +112750,15 @@ entities: - 4136 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 11934 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -16.5,-6.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 11914 - uid: 12641 components: - type: Transform @@ -112505,7 +112810,6 @@ entities: - type: DeviceNetwork deviceLists: - 20481 - - 20482 - type: AtmosPipeColor color: '#0335FCFF' - uid: 17120 @@ -114014,7 +114318,7 @@ entities: color: '#0335FCFF' - type: DeviceNetwork deviceLists: - - 20527 + - 11933 - uid: 20443 components: - type: Transform @@ -114045,17 +114349,6 @@ entities: - type: DeviceNetwork deviceLists: - 20513 - - uid: 20469 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -45.5,30.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - type: DeviceNetwork - deviceLists: - - 20482 - uid: 20471 components: - type: Transform @@ -114314,6 +114607,15 @@ entities: - type: DeviceNetwork deviceLists: - 20529 + - uid: 11878 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -17.5,-4.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 11914 - uid: 12451 components: - type: Transform @@ -115804,7 +116106,7 @@ entities: color: '#FF1212FF' - type: DeviceNetwork deviceLists: - - 20527 + - 11933 - uid: 20445 components: - type: Transform @@ -115846,20 +116148,6 @@ entities: - type: DeviceNetwork deviceLists: - 20481 - - 20482 - - uid: 20473 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -44.5,30.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - type: DeviceNetwork - deviceLists: - - 20482 - - type: AtmosPipeLayers - pipeLayer: Secondary - uid: 20485 components: - type: Transform @@ -116070,6 +116358,16 @@ entities: - type: Transform pos: 14.967327,9.048888 parent: 2 +- proto: GeigerCounter + entities: + - uid: 6443 + components: + - type: Transform + parent: 6467 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 6467 - proto: GeneratorBasic entities: - uid: 26345 @@ -116204,10 +116502,10 @@ entities: rot: 3.141592653589793 rad pos: -49.5,-23.5 parent: 2 - - uid: 25264 + - uid: 24172 components: - type: Transform - pos: 63.5,-5.5 + pos: 63.5,-3.5 parent: 2 - uid: 26219 components: @@ -116612,6 +116910,12 @@ entities: - type: Transform pos: -3.5,11.5 parent: 2 + - uid: 637 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 30.5,-64.5 + parent: 2 - uid: 688 components: - type: Transform @@ -116939,6 +117243,11 @@ entities: rot: 1.5707963267948966 rad pos: -14.5,36.5 parent: 2 + - uid: 2010 + components: + - type: Transform + pos: 59.5,-2.5 + parent: 2 - uid: 2227 components: - type: Transform @@ -117006,6 +117315,11 @@ entities: rot: 1.5707963267948966 rad pos: 20.5,-53.5 parent: 2 + - uid: 2373 + components: + - type: Transform + pos: 57.5,-2.5 + parent: 2 - uid: 2434 components: - type: Transform @@ -117218,16 +117532,6 @@ entities: - type: Transform pos: -36.5,12.5 parent: 2 - - uid: 3295 - components: - - type: Transform - pos: -6.5,-2.5 - parent: 2 - - uid: 3296 - components: - - type: Transform - pos: -6.5,-3.5 - parent: 2 - uid: 3307 components: - type: Transform @@ -117240,12 +117544,6 @@ entities: rot: -1.5707963267948966 rad pos: 38.5,40.5 parent: 2 - - uid: 3345 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-5.5 - parent: 2 - uid: 3513 components: - type: Transform @@ -117421,12 +117719,6 @@ entities: rot: 3.141592653589793 rad pos: -39.5,10.5 parent: 2 - - uid: 4326 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-6.5 - parent: 2 - uid: 4461 components: - type: Transform @@ -117437,11 +117729,6 @@ entities: - type: Transform pos: -20.5,-1.5 parent: 2 - - uid: 4515 - components: - - type: Transform - pos: -18.5,-9.5 - parent: 2 - uid: 4800 components: - type: Transform @@ -117599,21 +117886,6 @@ entities: - type: Transform pos: 17.5,-68.5 parent: 2 - - uid: 5803 - components: - - type: Transform - pos: 44.5,-58.5 - parent: 2 - - uid: 5804 - components: - - type: Transform - pos: 41.5,-58.5 - parent: 2 - - uid: 5807 - components: - - type: Transform - pos: 43.5,-58.5 - parent: 2 - uid: 5809 components: - type: Transform @@ -117784,16 +118056,6 @@ entities: - type: Transform pos: 13.5,-43.5 parent: 2 - - uid: 7520 - components: - - type: Transform - pos: -43.5,-31.5 - parent: 2 - - uid: 7521 - components: - - type: Transform - pos: -43.5,-32.5 - parent: 2 - uid: 7526 components: - type: Transform @@ -117877,12 +118139,6 @@ entities: rot: 3.141592653589793 rad pos: 54.5,-2.5 parent: 2 - - uid: 7968 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 56.5,-2.5 - parent: 2 - uid: 8027 components: - type: Transform @@ -118144,42 +118400,6 @@ entities: rot: 1.5707963267948966 rad pos: 76.5,7.5 parent: 2 - - uid: 9562 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 30.5,-61.5 - parent: 2 - - uid: 9563 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 30.5,-63.5 - parent: 2 - - uid: 9564 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 30.5,-62.5 - parent: 2 - - uid: 9565 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 32.5,-61.5 - parent: 2 - - uid: 9566 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 32.5,-63.5 - parent: 2 - - uid: 9567 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 32.5,-62.5 - parent: 2 - uid: 9577 components: - type: Transform @@ -118228,12 +118448,6 @@ entities: rot: 1.5707963267948966 rad pos: -63.5,-32.5 parent: 2 - - uid: 9604 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 58.5,-2.5 - parent: 2 - uid: 9606 components: - type: Transform @@ -119308,6 +119522,86 @@ entities: - type: Transform pos: -47.5,-62.5 parent: 2 + - uid: 11793 + components: + - type: Transform + pos: 46.5,-75.5 + parent: 2 + - uid: 11794 + components: + - type: Transform + pos: 46.5,-67.5 + parent: 2 + - uid: 11818 + components: + - type: Transform + pos: 46.5,-66.5 + parent: 2 + - uid: 11826 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 41.5,-59.5 + parent: 2 + - uid: 11830 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 37.5,-63.5 + parent: 2 + - uid: 11834 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 36.5,-63.5 + parent: 2 + - uid: 11838 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 41.5,-61.5 + parent: 2 + - uid: 11842 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 32.5,-64.5 + parent: 2 + - uid: 11938 + components: + - type: Transform + pos: -43.5,-31.5 + parent: 2 + - uid: 11940 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 30.5,-65.5 + parent: 2 + - uid: 11947 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 29.5,-82.5 + parent: 2 + - uid: 11966 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 46.5,-60.5 + parent: 2 + - uid: 11969 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 29.5,-84.5 + parent: 2 + - uid: 12217 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 32.5,-65.5 + parent: 2 - uid: 12348 components: - type: Transform @@ -119349,6 +119643,12 @@ entities: - type: Transform pos: -55.5,-6.5 parent: 2 + - uid: 12547 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -20.5,-9.5 + parent: 2 - uid: 12571 components: - type: Transform @@ -121135,96 +121435,11 @@ entities: - type: Transform pos: 29.5,-74.5 parent: 2 - - uid: 23299 - components: - - type: Transform - pos: 29.5,-82.5 - parent: 2 - - uid: 23300 - components: - - type: Transform - pos: 30.5,-82.5 - parent: 2 - - uid: 23301 - components: - - type: Transform - pos: 31.5,-82.5 - parent: 2 - - uid: 23302 - components: - - type: Transform - pos: 32.5,-82.5 - parent: 2 - - uid: 23303 - components: - - type: Transform - pos: 33.5,-82.5 - parent: 2 - - uid: 23304 - components: - - type: Transform - pos: 33.5,-81.5 - parent: 2 - - uid: 23305 - components: - - type: Transform - pos: 34.5,-81.5 - parent: 2 - - uid: 23306 - components: - - type: Transform - pos: 35.5,-81.5 - parent: 2 - - uid: 23307 - components: - - type: Transform - pos: 37.5,-81.5 - parent: 2 - - uid: 23308 - components: - - type: Transform - pos: 37.5,-81.5 - parent: 2 - - uid: 23309 - components: - - type: Transform - pos: 38.5,-81.5 - parent: 2 - - uid: 23310 - components: - - type: Transform - pos: 40.5,-81.5 - parent: 2 - - uid: 23311 - components: - - type: Transform - pos: 39.5,-81.5 - parent: 2 - - uid: 23312 - components: - - type: Transform - pos: 42.5,-81.5 - parent: 2 - - uid: 23313 - components: - - type: Transform - pos: 43.5,-81.5 - parent: 2 - - uid: 23314 - components: - - type: Transform - pos: 45.5,-81.5 - parent: 2 - uid: 23315 components: - type: Transform pos: 46.5,-81.5 parent: 2 - - uid: 23316 - components: - - type: Transform - pos: 44.5,-81.5 - parent: 2 - uid: 23317 components: - type: Transform @@ -121245,11 +121460,6 @@ entities: - type: Transform pos: 46.5,-74.5 parent: 2 - - uid: 23321 - components: - - type: Transform - pos: 44.5,-60.5 - parent: 2 - uid: 23322 components: - type: Transform @@ -121310,36 +121520,6 @@ entities: - type: Transform pos: 46.5,-69.5 parent: 2 - - uid: 23334 - components: - - type: Transform - pos: 46.5,-68.5 - parent: 2 - - uid: 23335 - components: - - type: Transform - pos: 43.5,-60.5 - parent: 2 - - uid: 23336 - components: - - type: Transform - pos: 42.5,-60.5 - parent: 2 - - uid: 23337 - components: - - type: Transform - pos: 41.5,-60.5 - parent: 2 - - uid: 23338 - components: - - type: Transform - pos: 40.5,-60.5 - parent: 2 - - uid: 23339 - components: - - type: Transform - pos: 41.5,-59.5 - parent: 2 - uid: 23344 components: - type: Transform @@ -122394,6 +122574,11 @@ entities: rot: 3.141592653589793 rad pos: -34.5,-11.5 parent: 2 + - uid: 25402 + components: + - type: Transform + pos: -3.5,-5.5 + parent: 2 - uid: 25507 components: - type: Transform @@ -122953,6 +123138,11 @@ entities: rot: 1.5707963267948966 rad pos: -31.5,40.5 parent: 2 + - uid: 27356 + components: + - type: Transform + pos: -43.5,-30.5 + parent: 2 - uid: 27538 components: - type: Transform @@ -123005,6 +123195,12 @@ entities: rot: 3.141592653589793 rad pos: 9.5,56.5 parent: 2 + - uid: 27942 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 38.5,-63.5 + parent: 2 - uid: 28309 components: - type: Transform @@ -123182,6 +123378,120 @@ entities: - type: Transform pos: 8.5,65.5 parent: 2 + - uid: 28942 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 41.5,-60.5 + parent: 2 + - uid: 28959 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 30.5,-84.5 + parent: 2 + - uid: 28960 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 32.5,-84.5 + parent: 2 + - uid: 28961 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 33.5,-84.5 + parent: 2 + - uid: 28962 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 31.5,-84.5 + parent: 2 + - uid: 28963 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 33.5,-83.5 + parent: 2 + - uid: 28964 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 34.5,-83.5 + parent: 2 + - uid: 28965 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 35.5,-83.5 + parent: 2 + - uid: 28966 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 37.5,-83.5 + parent: 2 + - uid: 28967 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 38.5,-83.5 + parent: 2 + - uid: 28968 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 39.5,-83.5 + parent: 2 + - uid: 28969 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 40.5,-83.5 + parent: 2 + - uid: 28970 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 42.5,-83.5 + parent: 2 + - uid: 28971 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 43.5,-83.5 + parent: 2 + - uid: 28972 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 44.5,-83.5 + parent: 2 + - uid: 28973 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 45.5,-83.5 + parent: 2 + - uid: 28974 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 46.5,-83.5 + parent: 2 + - uid: 28975 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 29.5,-81.5 + parent: 2 + - uid: 28976 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 46.5,-82.5 + parent: 2 - proto: GrilleBroken entities: - uid: 607 @@ -123204,6 +123514,11 @@ entities: - type: Transform pos: -59.5,-37.5 parent: 2 + - uid: 25908 + components: + - type: Transform + pos: 36.5,-56.5 + parent: 2 - proto: GrilleDiagonal entities: - uid: 1041 @@ -123980,11 +124295,6 @@ entities: - type: Transform pos: -44.5,15.5 parent: 2 - - uid: 27109 - components: - - type: Transform - pos: -43.5,24.5 - parent: 2 - proto: HolopadEngineeringAtmosTeg entities: - uid: 27467 @@ -124043,10 +124353,10 @@ entities: parent: 2 - proto: HolopadEngineeringTelecoms entities: - - uid: 21905 + - uid: 11847 components: - type: Transform - pos: -46.5,30.5 + pos: -48.5,-29.5 parent: 2 - proto: HolopadGeneralArcade entities: @@ -124106,14 +124416,21 @@ entities: - type: Transform pos: 5.5,-46.5 parent: 2 +- proto: HolopadSecurityCourtroom + entities: + - uid: 681 + components: + - type: Transform + pos: -16.5,-5.5 + parent: 2 - proto: HolopadSecurityLawyer entities: - - uid: 21666 + - uid: 23339 components: - type: MetaData - name: Cybersun - legal dept. + name: Cybersun Legal Dept. - type: Transform - pos: -47.5,-30.5 + pos: -10.5,-4.5 parent: 2 - proto: HolopadServiceBar entities: @@ -124511,12 +124828,6 @@ entities: rot: -1.5707963267948966 rad pos: 16.5,-64.5 parent: 2 - - uid: 23260 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 26.5,-62.5 - parent: 2 - uid: 23459 components: - type: Transform @@ -125268,11 +125579,6 @@ entities: - type: Transform pos: 34.5,11.5 parent: 2 - - uid: 4311 - components: - - type: Transform - pos: -28.5,-6.5 - parent: 2 - uid: 4312 components: - type: Transform @@ -126638,11 +126944,6 @@ entities: - type: Transform pos: -21.5,-10.5 parent: 2 - - uid: 7782 - components: - - type: Transform - pos: -21.5,-9.5 - parent: 2 - uid: 7783 components: - type: Transform @@ -128634,6 +128935,11 @@ entities: - type: Transform pos: -20.5,22.5 parent: 2 + - uid: 11974 + components: + - type: Transform + pos: -28.5,-6.5 + parent: 2 - uid: 13956 components: - type: Transform @@ -128684,11 +128990,6 @@ entities: - type: Transform pos: -27.5,-7.5 parent: 2 - - uid: 25346 - components: - - type: Transform - pos: -27.5,-6.5 - parent: 2 - uid: 25384 components: - type: Transform @@ -129003,7 +129304,7 @@ entities: - uid: 10309 components: - type: Transform - pos: -47.58456,-31.40442 + pos: -9.498289,-4.313748 parent: 2 - type: HandheldLight toggleActionEntity: 14302 @@ -130643,6 +130944,13 @@ entities: parent: 2 - type: DeviceLinkSink invokeCounter: 1 +- proto: LootSpawnerEncryptionKey + entities: + - uid: 10714 + components: + - type: Transform + pos: -44.5,-32.5 + parent: 2 - proto: LootSpawnerMaterialsSurplus entities: - uid: 28692 @@ -130720,6 +131028,11 @@ entities: - type: Transform pos: -13.910641,-19.452902 parent: 2 + - uid: 28856 + components: + - type: Transform + pos: -20.498405,-3.4365754 + parent: 2 - proto: MachineAnomalyGenerator entities: - uid: 6347 @@ -130768,10 +131081,10 @@ entities: - type: Transform pos: 53.5,-4.5 parent: 2 - - uid: 1415 + - uid: 12584 components: - type: Transform - pos: 57.5,-4.5 + pos: 58.5,-4.5 parent: 2 - proto: MachineCentrifuge entities: @@ -130823,6 +131136,11 @@ entities: - type: Transform pos: -43.5,-57.5 parent: 2 + - uid: 26186 + components: + - type: Transform + pos: -49.5,-33.5 + parent: 2 - uid: 26357 components: - type: Transform @@ -131476,11 +131794,6 @@ entities: - type: Transform pos: 38.5,-27.5 parent: 2 - - uid: 12741 - components: - - type: Transform - pos: 60.5,-4.5 - parent: 2 - uid: 12742 components: - type: Transform @@ -131531,11 +131844,6 @@ entities: - type: Transform pos: -19.5,-16.5 parent: 2 - - uid: 25364 - components: - - type: Transform - pos: -13.5,-22.5 - parent: 2 - uid: 25365 components: - type: Transform @@ -131698,6 +132006,11 @@ entities: parent: 2 - proto: MaintenanceWeaponSpawner entities: + - uid: 5598 + components: + - type: Transform + pos: 63.5,-1.5 + parent: 2 - uid: 10405 components: - type: Transform @@ -131735,11 +132048,6 @@ entities: - type: Transform pos: 32.5,-25.5 parent: 2 - - uid: 12775 - components: - - type: Transform - pos: 60.5,-6.5 - parent: 2 - uid: 12778 components: - type: Transform @@ -132588,11 +132896,21 @@ entities: - type: Transform pos: -24.5,-61.5 parent: 2 + - uid: 1845 + components: + - type: Transform + pos: -46.5,35.5 + parent: 2 - uid: 2007 components: - type: Transform pos: 31.5,24.5 parent: 2 + - uid: 2061 + components: + - type: Transform + pos: -47.5,35.5 + parent: 2 - uid: 2668 components: - type: Transform @@ -132618,20 +132936,15 @@ entities: - type: Transform pos: 55.5,-8.5 parent: 2 - - uid: 10735 - components: - - type: Transform - pos: -48.5,19.5 - parent: 2 - uid: 10883 components: - type: Transform pos: -33.5,-57.5 parent: 2 - - uid: 12554 + - uid: 11976 components: - type: Transform - pos: -48.5,18.5 + pos: -27.5,-5.5 parent: 2 - uid: 18389 components: @@ -132648,11 +132961,6 @@ entities: - type: Transform pos: -10.5,-35.5 parent: 2 - - uid: 25402 - components: - - type: Transform - pos: -11.5,-2.5 - parent: 2 - uid: 25406 components: - type: Transform @@ -132760,15 +133068,15 @@ entities: storage: 7235 - proto: NitrousOxideCanister entities: - - uid: 22627 + - uid: 138 components: - type: Transform - pos: -33.5,14.5 + pos: -44.5,34.5 parent: 2 - - uid: 22980 + - uid: 22627 components: - type: Transform - pos: -48.5,21.5 + pos: -33.5,14.5 parent: 2 - proto: NitrousOxideTankFilled entities: @@ -133100,10 +133408,15 @@ entities: - type: Transform pos: 32.5,24.5 parent: 2 - - uid: 3970 + - uid: 2134 components: - type: Transform - pos: -49.5,18.5 + pos: -46.5,34.5 + parent: 2 + - uid: 2135 + components: + - type: Transform + pos: -47.5,34.5 parent: 2 - uid: 5193 components: @@ -133130,15 +133443,15 @@ entities: - type: Transform pos: 56.5,-8.5 parent: 2 - - uid: 10714 + - uid: 10882 components: - type: Transform - pos: -49.5,19.5 + pos: -34.5,-57.5 parent: 2 - - uid: 10882 + - uid: 12013 components: - type: Transform - pos: -34.5,-57.5 + pos: -27.5,-6.5 parent: 2 - uid: 12387 components: @@ -133160,11 +133473,6 @@ entities: - type: Transform pos: 50.5,-6.5 parent: 2 - - uid: 25401 - components: - - type: Transform - pos: -11.5,-3.5 - parent: 2 - uid: 25403 components: - type: Transform @@ -133502,6 +133810,14 @@ entities: parent: 2 - type: Paper content: please deliver this to chemistry as soon as possible. + - uid: 28952 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -19.45153,-5.6397004 + parent: 2 + - type: Paper + content: Your honor, my client pleads oopsie-dasies. - proto: PaperBin10 entities: - uid: 7296 @@ -133519,11 +133835,6 @@ entities: - type: Transform pos: -9.5,50.5 parent: 2 - - uid: 9155 - components: - - type: Transform - pos: -47.5,-32.5 - parent: 2 - uid: 9263 components: - type: Transform @@ -133534,6 +133845,11 @@ entities: - type: Transform pos: -1.5,48.5 parent: 2 + - uid: 23337 + components: + - type: Transform + pos: -19.5,-4.5 + parent: 2 - uid: 24503 components: - type: Transform @@ -133561,6 +133877,11 @@ entities: - type: Transform pos: 25.5,48.5 parent: 2 + - uid: 12012 + components: + - type: Transform + pos: -9.5,-5.5 + parent: 2 - proto: PaperCNCSheet entities: - uid: 6228 @@ -133657,7 +133978,7 @@ entities: - uid: 7403 components: - type: Transform - pos: -47.552258,24.57931 + pos: -49.276756,23.47055 parent: 2 - uid: 10860 components: @@ -133672,7 +133993,7 @@ entities: - uid: 27609 components: - type: Transform - pos: -47.44291,24.418142 + pos: -49.464256,23.579926 parent: 2 - proto: PartRodMetal1 entities: @@ -133892,15 +134213,15 @@ entities: parent: 2 - proto: PlasmaCanister entities: - - uid: 4050 + - uid: 2136 components: - type: Transform - pos: -33.5,16.5 + pos: -47.5,32.5 parent: 2 - - uid: 17985 + - uid: 4050 components: - type: Transform - pos: -46.5,18.5 + pos: -33.5,16.5 parent: 2 - uid: 28733 components: @@ -133927,6 +134248,11 @@ entities: rot: 3.141592653589793 rad pos: 49.5,-4.5 parent: 2 + - uid: 2617 + components: + - type: Transform + pos: 60.5,1.5 + parent: 2 - uid: 2974 components: - type: Transform @@ -133962,12 +134288,6 @@ entities: rot: -1.5707963267948966 rad pos: 12.5,10.5 parent: 2 - - uid: 4910 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 59.5,1.5 - parent: 2 - uid: 4950 components: - type: Transform @@ -134081,12 +134401,6 @@ entities: rot: 3.141592653589793 rad pos: -14.5,49.5 parent: 2 - - uid: 6446 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 59.5,-0.5 - parent: 2 - uid: 6538 components: - type: Transform @@ -134318,6 +134632,12 @@ entities: rot: -1.5707963267948966 rad pos: 34.5,45.5 parent: 2 + - uid: 22001 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 58.5,1.5 + parent: 2 - uid: 23690 components: - type: Transform @@ -134506,6 +134826,18 @@ entities: parent: 2 - proto: PlasmaWindowDirectional entities: + - uid: 11894 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -15.5,-2.5 + parent: 2 + - uid: 12015 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -15.5,-8.5 + parent: 2 - uid: 12745 components: - type: Transform @@ -134553,6 +134885,28 @@ entities: rot: 3.141592653589793 rad pos: 70.5,28.5 parent: 2 + - uid: 28982 + components: + - type: Transform + pos: -14.5,-6.5 + parent: 2 + - uid: 28983 + components: + - type: Transform + pos: -13.5,-6.5 + parent: 2 + - uid: 28984 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,-4.5 + parent: 2 + - uid: 28985 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -14.5,-4.5 + parent: 2 - proto: PlasticFlapsAirtightClear entities: - uid: 6865 @@ -134713,7 +135067,7 @@ entities: - uid: 12803 components: - type: Transform - pos: 61.491047,-5.309342 + pos: 62.446735,-5.326636 parent: 2 - proto: PlushieRainbowLizard entities: @@ -134825,11 +135179,6 @@ entities: - type: Transform pos: 19.5,49.5 parent: 2 - - uid: 25398 - components: - - type: Transform - pos: -11.5,-6.5 - parent: 2 - uid: 25448 components: - type: Transform @@ -134870,20 +135219,20 @@ entities: parent: 2 - proto: PortableScrubber entities: - - uid: 1853 + - uid: 11995 components: - type: Transform - pos: -47.5,28.5 + pos: -49.5,18.5 parent: 2 - - uid: 7352 + - uid: 13138 components: - type: Transform - pos: -46.5,28.5 + pos: -49.5,20.5 parent: 2 - - uid: 7353 + - uid: 25924 components: - type: Transform - pos: -45.5,28.5 + pos: -49.5,19.5 parent: 2 - proto: PositronicBrain entities: @@ -135045,20 +135394,19 @@ entities: parent: 2 - type: Fixtures fixtures: {} - - uid: 25751 +- proto: PosterContrabandBeachStarYamamoto + entities: + - uid: 28757 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -45.5,17.5 + pos: 36.5,-47.5 parent: 2 - type: Fixtures fixtures: {} -- proto: PosterContrabandBeachStarYamamoto - entities: - - uid: 28757 + - uid: 28938 components: - type: Transform - pos: 36.5,-47.5 + pos: 33.5,-58.5 parent: 2 - type: Fixtures fixtures: {} @@ -135115,6 +135463,13 @@ entities: fixtures: {} - proto: PosterContrabandCybersun600 entities: + - uid: 11875 + components: + - type: Transform + pos: -5.5,-4.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 17936 components: - type: Transform @@ -135739,11 +136094,11 @@ entities: fixtures: {} - proto: PosterLegitThereIsNoGasGiant entities: - - uid: 27563 + - uid: 25918 components: - type: Transform rot: 1.5707963267948966 rad - pos: -41.5,29.5 + pos: -42.5,31.5 parent: 2 - type: Fixtures fixtures: {} @@ -136270,12 +136625,6 @@ entities: rot: 1.5707963267948966 rad pos: 31.5,25.5 parent: 2 - - uid: 25450 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -11.5,-4.5 - parent: 2 - uid: 25451 components: - type: Transform @@ -136364,6 +136713,12 @@ entities: rot: 1.5707963267948966 rad pos: -0.5,-58.5 parent: 2 + - uid: 1630 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -41.5,32.5 + parent: 2 - uid: 1921 components: - type: Transform @@ -136421,12 +136776,6 @@ entities: rot: -1.5707963267948966 rad pos: 47.5,34.5 parent: 2 - - uid: 7807 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -13.5,-6.5 - parent: 2 - uid: 7846 components: - type: Transform @@ -136463,11 +136812,23 @@ entities: rot: -1.5707963267948966 rad pos: -9.5,-73.5 parent: 2 - - uid: 11141 + - uid: 11837 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 40.5,-58.5 + parent: 2 + - uid: 11929 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -18.5,-8.5 + parent: 2 + - uid: 12001 components: - type: Transform rot: 1.5707963267948966 rad - pos: -40.5,31.5 + pos: -47.5,29.5 parent: 2 - uid: 12659 components: @@ -136876,11 +137237,6 @@ entities: rot: -1.5707963267948966 rad pos: -2.5,-13.5 parent: 2 - - uid: 22104 - components: - - type: Transform - pos: -4.5,-5.5 - parent: 2 - uid: 22110 components: - type: Transform @@ -136893,17 +137249,6 @@ entities: rot: -1.5707963267948966 rad pos: -2.5,-17.5 parent: 2 - - uid: 22113 - components: - - type: Transform - pos: -15.5,-2.5 - parent: 2 - - uid: 22114 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -20.5,-8.5 - parent: 2 - uid: 22126 components: - type: Transform @@ -137059,12 +137404,6 @@ entities: - type: Transform pos: -66.5,33.5 parent: 2 - - uid: 22164 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -46.5,30.5 - parent: 2 - uid: 22165 components: - type: Transform @@ -137076,11 +137415,6 @@ entities: rot: 3.141592653589793 rad pos: -49.5,37.5 parent: 2 - - uid: 22168 - components: - - type: Transform - pos: -45.5,28.5 - parent: 2 - uid: 22171 components: - type: Transform @@ -137830,8 +138164,8 @@ entities: - uid: 24191 components: - type: Transform - rot: 3.141592653589793 rad - pos: 59.5,-0.5 + rot: -1.5707963267948966 rad + pos: 60.5,1.5 parent: 2 - uid: 24216 components: @@ -137839,6 +138173,12 @@ entities: rot: 1.5707963267948966 rad pos: 2.5,21.5 parent: 2 + - uid: 24245 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -40.5,29.5 + parent: 2 - uid: 24352 components: - type: Transform @@ -137850,6 +138190,36 @@ entities: - type: Transform pos: -48.5,-7.5 parent: 2 + - uid: 24562 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -6.5,-5.5 + parent: 2 + - uid: 25120 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -20.5,-5.5 + parent: 2 + - uid: 25122 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -11.5,-2.5 + parent: 2 + - uid: 25125 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -13.5,-6.5 + parent: 2 + - uid: 25145 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -10.5,-7.5 + parent: 2 - uid: 25163 components: - type: Transform @@ -137896,11 +138266,6 @@ entities: rot: 3.141592653589793 rad pos: -35.5,29.5 parent: 2 - - uid: 25860 - components: - - type: Transform - pos: -41.5,28.5 - parent: 2 - uid: 27127 components: - type: Transform @@ -138010,6 +138375,12 @@ entities: rot: 1.5707963267948966 rad pos: 39.5,42.5 parent: 2 + - uid: 28940 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 34.5,-59.5 + parent: 2 - proto: PoweredlightEmpty entities: - uid: 8566 @@ -138224,6 +138595,12 @@ entities: rot: -1.5707963267948966 rad pos: 14.5,-55.5 parent: 2 + - uid: 9604 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 57.5,-3.5 + parent: 2 - uid: 10521 components: - type: Transform @@ -138236,6 +138613,17 @@ entities: rot: 1.5707963267948966 rad pos: 28.5,39.5 parent: 2 + - uid: 11855 + components: + - type: Transform + pos: -2.5,-5.5 + parent: 2 + - uid: 11970 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -42.5,37.5 + parent: 2 - uid: 14218 components: - type: Transform @@ -138320,16 +138708,6 @@ entities: - type: Transform pos: 5.5,-5.5 parent: 2 - - uid: 22108 - components: - - type: Transform - pos: -7.5,-2.5 - parent: 2 - - uid: 22109 - components: - - type: Transform - pos: -5.5,-2.5 - parent: 2 - uid: 22116 components: - type: Transform @@ -138695,12 +139073,6 @@ entities: rot: -1.5707963267948966 rad pos: 50.5,-5.5 parent: 2 - - uid: 24193 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 56.5,-3.5 - parent: 2 - uid: 24194 components: - type: Transform @@ -138712,6 +139084,11 @@ entities: - type: Transform pos: -21.5,-38.5 parent: 2 + - uid: 25213 + components: + - type: Transform + pos: -4.5,-5.5 + parent: 2 - uid: 25478 components: - type: Transform @@ -138776,18 +139153,6 @@ entities: rot: -1.5707963267948966 rad pos: -40.5,11.5 parent: 2 - - uid: 27670 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -44.5,17.5 - parent: 2 - - uid: 27671 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -45.5,24.5 - parent: 2 - uid: 27672 components: - type: Transform @@ -139428,6 +139793,12 @@ entities: rot: 3.141592653589793 rad pos: 42.5,43.5 parent: 2 + - uid: 1680 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -38.5,31.5 + parent: 2 - uid: 1827 components: - type: Transform @@ -139552,11 +139923,6 @@ entities: - type: Transform pos: -7.5,-54.5 parent: 2 - - uid: 6132 - components: - - type: Transform - pos: -49.5,-33.5 - parent: 2 - uid: 6323 components: - type: Transform @@ -139959,18 +140325,6 @@ entities: - type: Transform pos: 68.5,-7.5 parent: 2 - - uid: 10736 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -47.5,24.5 - parent: 2 - - uid: 10748 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -46.5,24.5 - parent: 2 - uid: 10765 components: - type: Transform @@ -139992,12 +140346,6 @@ entities: rot: 1.5707963267948966 rad pos: -65.5,10.5 parent: 2 - - uid: 10832 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -48.5,24.5 - parent: 2 - uid: 10869 components: - type: Transform @@ -140187,6 +140535,12 @@ entities: - type: Transform pos: 10.5,-62.5 parent: 2 + - uid: 12757 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -38.5,30.5 + parent: 2 - uid: 12779 components: - type: Transform @@ -140328,12 +140682,24 @@ entities: - type: Transform pos: 50.5,-3.5 parent: 2 + - uid: 24243 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -44.5,-32.5 + parent: 2 - uid: 24270 components: - type: Transform rot: -1.5707963267948966 rad pos: 22.5,-11.5 parent: 2 + - uid: 24291 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -49.5,23.5 + parent: 2 - uid: 24318 components: - type: Transform @@ -140349,16 +140715,6 @@ entities: - type: Transform pos: -2.5,-44.5 parent: 2 - - uid: 25140 - components: - - type: Transform - pos: -45.5,24.5 - parent: 2 - - uid: 25185 - components: - - type: Transform - pos: -9.5,-3.5 - parent: 2 - uid: 25337 components: - type: Transform @@ -140369,11 +140725,6 @@ entities: - type: Transform pos: -23.5,-8.5 parent: 2 - - uid: 25347 - components: - - type: Transform - pos: -27.5,-5.5 - parent: 2 - uid: 25350 components: - type: Transform @@ -140437,11 +140788,6 @@ entities: rot: 1.5707963267948966 rad pos: -22.5,6.5 parent: 2 - - uid: 25858 - components: - - type: Transform - pos: -37.5,29.5 - parent: 2 - uid: 26365 components: - type: Transform @@ -140453,6 +140799,11 @@ entities: - type: Transform pos: 37.5,-42.5 parent: 2 + - uid: 27484 + components: + - type: Transform + pos: -11.5,-8.5 + parent: 2 - uid: 27571 components: - type: Transform @@ -141182,6 +141533,44 @@ entities: rot: -1.5707963267948966 rad pos: -39.5,21.5 parent: 2 + - uid: 28914 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 35.5,-62.5 + parent: 2 + - uid: 28915 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 35.5,-61.5 + parent: 2 + - uid: 28916 + components: + - type: Transform + pos: 37.5,-59.5 + parent: 2 + - uid: 28917 + components: + - type: Transform + pos: 39.5,-59.5 + parent: 2 + - uid: 28918 + components: + - type: Transform + pos: 40.5,-59.5 + parent: 2 + - uid: 28920 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 35.5,-60.5 + parent: 2 + - uid: 28921 + components: + - type: Transform + pos: 36.5,-59.5 + parent: 2 - proto: RailingCorner entities: - uid: 73 @@ -141418,6 +141807,24 @@ entities: rot: -1.5707963267948966 rad pos: -40.5,25.5 parent: 2 + - uid: 28919 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 35.5,-59.5 + parent: 2 + - uid: 28922 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 38.5,-59.5 + parent: 2 + - uid: 28923 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 38.5,-59.5 + parent: 2 - proto: RandomArcade entities: - uid: 563 @@ -141452,15 +141859,15 @@ entities: parent: 2 - proto: RandomArtifactSpawner entities: - - uid: 10711 + - uid: 8443 components: - type: Transform - pos: 57.5,-21.5 + pos: 60.5,1.5 parent: 2 - - uid: 24174 + - uid: 10711 components: - type: Transform - pos: 60.5,-0.5 + pos: 57.5,-21.5 parent: 2 - uid: 24175 components: @@ -142056,6 +142463,18 @@ entities: parent: 2 - proto: RandomSpawner entities: + - uid: 1310 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -45.5,34.5 + parent: 2 + - uid: 1321 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -42.5,9.5 + parent: 2 - uid: 2375 components: - type: Transform @@ -142089,6 +142508,12 @@ entities: - type: Transform pos: -56.5,0.5 parent: 2 + - uid: 11925 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -46.5,25.5 + parent: 2 - uid: 12326 components: - type: Transform @@ -142119,6 +142544,11 @@ entities: - type: Transform pos: 64.5,33.5 parent: 2 + - uid: 23308 + components: + - type: Transform + pos: -7.5,-14.5 + parent: 2 - uid: 26008 components: - type: Transform @@ -142629,16 +143059,6 @@ entities: - type: Transform pos: -42.5,-32.5 parent: 2 - - uid: 26119 - components: - - type: Transform - pos: -48.5,-31.5 - parent: 2 - - uid: 26120 - components: - - type: Transform - pos: -46.5,-29.5 - parent: 2 - uid: 26121 components: - type: Transform @@ -142934,21 +143354,6 @@ entities: - type: Transform pos: -0.5,-18.5 parent: 2 - - uid: 26185 - components: - - type: Transform - pos: -7.5,-12.5 - parent: 2 - - uid: 26186 - components: - - type: Transform - pos: -3.5,-10.5 - parent: 2 - - uid: 26187 - components: - - type: Transform - pos: -6.5,-7.5 - parent: 2 - uid: 26188 components: - type: Transform @@ -142959,11 +143364,6 @@ entities: - type: Transform pos: -17.5,-13.5 parent: 2 - - uid: 26190 - components: - - type: Transform - pos: -17.5,-6.5 - parent: 2 - uid: 26191 components: - type: Transform @@ -143229,6 +143629,18 @@ entities: - type: Transform pos: 63.5,38.5 parent: 2 + - uid: 28980 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -10.5,-3.5 + parent: 2 + - uid: 28981 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -18.5,-5.5 + parent: 2 - proto: RandomVending entities: - uid: 3600 @@ -143534,6 +143946,12 @@ entities: - type: Transform pos: -4.5,11.5 parent: 2 + - uid: 2009 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 57.5,-2.5 + parent: 2 - uid: 2546 components: - type: Transform @@ -144528,6 +144946,29 @@ entities: rot: 3.141592653589793 rad pos: 73.5,4.5 parent: 2 + - uid: 11874 + components: + - type: Transform + pos: -43.5,-31.5 + parent: 2 + - uid: 11942 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 30.5,-64.5 + parent: 2 + - uid: 11943 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 30.5,-65.5 + parent: 2 + - uid: 11945 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 32.5,-65.5 + parent: 2 - uid: 12020 components: - type: Transform @@ -144576,41 +145017,16 @@ entities: rot: 3.141592653589793 rad pos: -62.5,-32.5 parent: 2 - - uid: 12200 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 32.5,-61.5 - parent: 2 - - uid: 12213 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 30.5,-61.5 - parent: 2 - - uid: 12214 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 30.5,-63.5 - parent: 2 - - uid: 12215 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 30.5,-62.5 - parent: 2 - - uid: 12216 + - uid: 12233 components: - type: Transform - rot: 3.141592653589793 rad - pos: 32.5,-63.5 + rot: -1.5707963267948966 rad + pos: 32.5,-64.5 parent: 2 - - uid: 12217 + - uid: 12546 components: - type: Transform - rot: 3.141592653589793 rad - pos: 32.5,-62.5 + pos: -43.5,-30.5 parent: 2 - uid: 13787 components: @@ -145351,18 +145767,6 @@ entities: rot: 1.5707963267948966 rad pos: -46.5,-27.5 parent: 2 - - uid: 21175 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -43.5,-32.5 - parent: 2 - - uid: 21176 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -43.5,-31.5 - parent: 2 - uid: 21177 components: - type: Transform @@ -146173,12 +146577,6 @@ entities: rot: 1.5707963267948966 rad pos: -19.5,-9.5 parent: 2 - - uid: 21441 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -18.5,-9.5 - parent: 2 - uid: 21442 components: - type: Transform @@ -146215,12 +146613,6 @@ entities: rot: 1.5707963267948966 rad pos: -1.5,-11.5 parent: 2 - - uid: 21454 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-6.5 - parent: 2 - uid: 21487 components: - type: Transform @@ -146254,12 +146646,6 @@ entities: rot: 1.5707963267948966 rad pos: -29.5,33.5 parent: 2 - - uid: 21712 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 56.5,-2.5 - parent: 2 - uid: 21791 components: - type: Transform @@ -146275,12 +146661,6 @@ entities: - type: Transform pos: 31.5,51.5 parent: 2 - - uid: 22001 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 58.5,-2.5 - parent: 2 - uid: 22264 components: - type: Transform @@ -146577,16 +146957,17 @@ entities: - type: Transform pos: 65.5,-21.5 parent: 2 - - uid: 23592 + - uid: 23894 components: - type: Transform - pos: -1.5,-5.5 + rot: -1.5707963267948966 rad + pos: 38.5,41.5 parent: 2 - - uid: 23894 + - uid: 24173 components: - type: Transform rot: -1.5707963267948966 rad - pos: 38.5,41.5 + pos: 59.5,-2.5 parent: 2 - uid: 24327 components: @@ -146840,6 +147221,12 @@ entities: - type: Transform pos: -58.5,36.5 parent: 2 + - uid: 27495 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -20.5,-9.5 + parent: 2 - uid: 27537 components: - type: Transform @@ -146914,6 +147301,42 @@ entities: rot: 1.5707963267948966 rad pos: 1.5,18.5 parent: 2 + - uid: 28953 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 41.5,-59.5 + parent: 2 + - uid: 28954 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 41.5,-60.5 + parent: 2 + - uid: 28955 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 41.5,-61.5 + parent: 2 + - uid: 28956 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 36.5,-63.5 + parent: 2 + - uid: 28957 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 37.5,-63.5 + parent: 2 + - uid: 28958 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 38.5,-63.5 + parent: 2 - proto: ReinforcedPlasmaWindowDiagonal entities: - uid: 1043 @@ -148229,6 +148652,16 @@ entities: - type: Transform pos: 57.906136,-26.75644 parent: 2 + - uid: 11840 + components: + - type: Transform + pos: 36.446735,-56.33697 + parent: 2 + - uid: 11841 + components: + - type: Transform + pos: 36.759235,-57.02447 + parent: 2 - uid: 13229 components: - type: Transform @@ -148650,6 +149083,14 @@ entities: rot: -1.5707963267948966 rad pos: 53.47627,14.631038 parent: 2 + - uid: 6374 + components: + - type: Transform + parent: 12232 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 12232 - uid: 7218 components: - type: Transform @@ -148674,15 +149115,15 @@ entities: - type: Transform pos: -52.35372,20.580477 parent: 2 - - uid: 7400 + - uid: 10862 components: - type: Transform - pos: -48.52893,24.422272 + pos: -65.33531,30.564745 parent: 2 - - uid: 10862 + - uid: 12554 components: - type: Transform - pos: -65.33531,30.564745 + pos: -49.488564,24.40152 parent: 2 - proto: SheetPlasteel10 entities: @@ -148751,7 +149192,7 @@ entities: - uid: 7404 components: - type: Transform - pos: -46.442883,24.563684 + pos: -49.79238,23.5643 parent: 2 - proto: SheetSteel entities: @@ -148765,11 +149206,6 @@ entities: - type: Transform pos: 3.4967537,-39.32895 parent: 2 - - uid: 5596 - components: - - type: Transform - pos: -9.473098,-3.515089 - parent: 2 - uid: 6327 components: - type: Transform @@ -148813,7 +149249,7 @@ entities: - uid: 7401 components: - type: Transform - pos: -45.431446,24.53578 + pos: -49.35488,24.486176 parent: 2 - uid: 7402 components: @@ -148858,17 +149294,12 @@ entities: - uid: 25837 components: - type: Transform - pos: -37.485172,29.520382 - parent: 2 - - uid: 25838 - components: - - type: Transform - pos: -37.719547,29.348507 + pos: -38.613865,31.392916 parent: 2 - uid: 25839 components: - type: Transform - pos: -37.328922,29.411007 + pos: -38.41074,30.53354 parent: 2 - proto: SheetSteel1 entities: @@ -149420,26 +149851,23 @@ entities: fixtures: {} - proto: SignalButton entities: - - uid: 1042 + - uid: 1415 components: - type: Transform rot: 3.141592653589793 rad - pos: 55.5,-2.5 + pos: 56.5,-2.5 parent: 2 - type: DeviceLinkSource linkedPorts: - 6443: - - - Pressed - - Toggle 17852: - - Pressed - Toggle 3487: - - Pressed - Toggle - 21993: + 23571: - - Pressed - - DoorBolt + - Toggle - type: Fixtures fixtures: {} - uid: 1541 @@ -149706,31 +150134,6 @@ entities: - Toggle - type: Fixtures fixtures: {} - - uid: 27607 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -45.5,23.5 - parent: 2 - - type: DeviceLinkSource - linkedPorts: - 25841: - - - Pressed - - Toggle - 25881: - - - Pressed - - Toggle - 27124: - - - Pressed - - Toggle - 27155: - - - Pressed - - Toggle - 25750: - - - Pressed - - Toggle - - type: Fixtures - fixtures: {} - uid: 28127 components: - type: Transform @@ -149792,8 +150195,64 @@ entities: - Toggle - type: Fixtures fixtures: {} + - uid: 28978 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -48.5,30.5 + parent: 2 + - type: DeviceLinkSource + linkedPorts: + 2237: + - - Pressed + - Toggle + 2138: + - - Pressed + - Toggle + 2230: + - - Pressed + - Toggle + 2281: + - - Pressed + - Toggle + 2357: + - - Pressed + - Toggle + - type: Fixtures + fixtures: {} + - uid: 28979 + components: + - type: Transform + pos: -45.5,36.5 + parent: 2 + - type: DeviceLinkSource + linkedPorts: + 2237: + - - Pressed + - Toggle + 2138: + - - Pressed + - Toggle + 2230: + - - Pressed + - Toggle + 2357: + - - Pressed + - Toggle + 2281: + - - Pressed + - Toggle + - type: Fixtures + fixtures: {} - proto: SignAnomaly entities: + - uid: 3382 + components: + - type: Transform + pos: 60.5,-4.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 6445 components: - type: Transform @@ -149818,14 +150277,6 @@ entities: parent: 2 - type: Fixtures fixtures: {} - - uid: 23571 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 59.5,-4.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 24197 components: - type: Transform @@ -150846,6 +151297,28 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 11848 + components: + - type: Transform + pos: 32.5,-60.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 11973 + components: + - type: Transform + pos: 30.5,-63.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 15263 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 60.5,-7.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 28008 components: - type: Transform @@ -150923,14 +151396,6 @@ entities: parent: 2 - type: Fixtures fixtures: {} - - uid: 28018 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 59.5,-7.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 28021 components: - type: Transform @@ -151368,10 +151833,25 @@ entities: fixtures: {} - proto: SignLawyer entities: - - uid: 23558 + - uid: 11872 components: - type: Transform - pos: -45.5,-27.5 + pos: -9.5,-1.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 11873 + components: + - type: Transform + pos: -12.5,-4.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 11997 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -18.5,-1.5 parent: 2 - type: Fixtures fixtures: {} @@ -151850,11 +152330,10 @@ entities: fixtures: {} - proto: SignTelecomms entities: - - uid: 8181 + - uid: 13285 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -48.5,31.5 + pos: -45.5,-27.5 parent: 2 - type: Fixtures fixtures: {} @@ -153373,1025 +153852,929 @@ entities: rot: 3.141592653589793 rad pos: 88.5,9.5 parent: 2 - - uid: 11856 + - uid: 11950 components: - type: Transform - rot: 3.141592653589793 rad - pos: 33.5,-73.5 + pos: 33.5,-81.5 parent: 2 - - uid: 11924 + - uid: 11951 components: - type: Transform - rot: 3.141592653589793 rad - pos: 33.5,-65.5 + pos: 34.5,-81.5 parent: 2 - - uid: 11925 + - uid: 11952 components: - type: Transform - rot: 3.141592653589793 rad - pos: 34.5,-65.5 + pos: 43.5,-79.5 parent: 2 - - uid: 11926 + - uid: 11953 components: - type: Transform - rot: 3.141592653589793 rad - pos: 35.5,-65.5 + pos: 44.5,-79.5 parent: 2 - - uid: 11927 + - uid: 11954 components: - type: Transform - rot: 3.141592653589793 rad - pos: 36.5,-65.5 + pos: 35.5,-81.5 parent: 2 - - uid: 11928 + - uid: 11955 components: - type: Transform - rot: 3.141592653589793 rad - pos: 37.5,-65.5 + pos: 37.5,-81.5 parent: 2 - - uid: 11929 + - uid: 11956 components: - type: Transform - rot: 3.141592653589793 rad - pos: 38.5,-65.5 + pos: 36.5,-81.5 parent: 2 - - uid: 11930 + - uid: 11957 components: - type: Transform - rot: 3.141592653589793 rad - pos: 39.5,-65.5 + pos: 40.5,-81.5 parent: 2 - - uid: 11931 + - uid: 11958 components: - type: Transform - rot: 3.141592653589793 rad - pos: 41.5,-65.5 + pos: 38.5,-81.5 parent: 2 - - uid: 11932 + - uid: 11959 components: - type: Transform - rot: 3.141592653589793 rad - pos: 42.5,-65.5 + pos: 41.5,-81.5 parent: 2 - - uid: 11933 + - uid: 11960 components: - type: Transform - rot: 3.141592653589793 rad - pos: 40.5,-65.5 + pos: 42.5,-81.5 parent: 2 - - uid: 11934 + - uid: 11961 components: - type: Transform - rot: 3.141592653589793 rad - pos: 44.5,-65.5 + pos: 39.5,-81.5 parent: 2 - - uid: 11935 + - uid: 11962 components: - type: Transform - rot: 3.141592653589793 rad - pos: 43.5,-65.5 + pos: 43.5,-81.5 parent: 2 - - uid: 11936 + - uid: 12201 components: - type: Transform rot: 3.141592653589793 rad - pos: 33.5,-67.5 + pos: -73.5,-39.5 parent: 2 - - uid: 11937 + - uid: 12202 components: - type: Transform rot: 3.141592653589793 rad - pos: 35.5,-67.5 + pos: -73.5,-40.5 parent: 2 - - uid: 11938 + - uid: 12203 components: - type: Transform rot: 3.141592653589793 rad - pos: 36.5,-67.5 + pos: -73.5,-41.5 parent: 2 - - uid: 11939 + - uid: 12204 components: - type: Transform rot: 3.141592653589793 rad - pos: 34.5,-67.5 + pos: -73.5,-42.5 parent: 2 - - uid: 11940 + - uid: 12205 components: - type: Transform rot: 3.141592653589793 rad - pos: 37.5,-67.5 + pos: -73.5,-43.5 parent: 2 - - uid: 11941 + - uid: 12206 components: - type: Transform rot: 3.141592653589793 rad - pos: 38.5,-67.5 + pos: -73.5,-44.5 parent: 2 - - uid: 11942 + - uid: 12207 components: - type: Transform rot: 3.141592653589793 rad - pos: 39.5,-67.5 + pos: -71.5,-44.5 parent: 2 - - uid: 11943 + - uid: 12208 components: - type: Transform rot: 3.141592653589793 rad - pos: 41.5,-67.5 + pos: -71.5,-43.5 parent: 2 - - uid: 11944 + - uid: 12209 components: - type: Transform rot: 3.141592653589793 rad - pos: 43.5,-67.5 + pos: -71.5,-42.5 parent: 2 - - uid: 11945 + - uid: 12210 components: - type: Transform rot: 3.141592653589793 rad - pos: 44.5,-67.5 + pos: -71.5,-41.5 parent: 2 - - uid: 11946 + - uid: 12211 components: - type: Transform rot: 3.141592653589793 rad - pos: 42.5,-67.5 + pos: -71.5,-40.5 parent: 2 - - uid: 11947 + - uid: 12212 components: - type: Transform rot: 3.141592653589793 rad - pos: 40.5,-67.5 + pos: -71.5,-39.5 parent: 2 - - uid: 11948 + - uid: 12219 components: - type: Transform rot: 3.141592653589793 rad - pos: 33.5,-69.5 + pos: -69.5,-33.5 parent: 2 - - uid: 11949 + - uid: 12220 components: - type: Transform rot: 3.141592653589793 rad - pos: 34.5,-69.5 + pos: -69.5,-34.5 parent: 2 - - uid: 11950 + - uid: 12221 components: - type: Transform rot: 3.141592653589793 rad - pos: 35.5,-69.5 + pos: -69.5,-35.5 parent: 2 - - uid: 11951 + - uid: 12222 components: - type: Transform rot: 3.141592653589793 rad - pos: 37.5,-69.5 + pos: -69.5,-36.5 parent: 2 - - uid: 11952 + - uid: 12223 components: - type: Transform rot: 3.141592653589793 rad - pos: 38.5,-69.5 + pos: -69.5,-37.5 parent: 2 - - uid: 11953 + - uid: 12224 components: - type: Transform rot: 3.141592653589793 rad - pos: 39.5,-69.5 + pos: -69.5,-38.5 parent: 2 - - uid: 11954 + - uid: 12225 components: - type: Transform rot: 3.141592653589793 rad - pos: 40.5,-69.5 + pos: -69.5,-39.5 parent: 2 - - uid: 11955 + - uid: 12230 components: - type: Transform rot: 3.141592653589793 rad - pos: 41.5,-69.5 + pos: -69.5,-40.5 parent: 2 - - uid: 11956 + - uid: 12235 components: - type: Transform rot: 3.141592653589793 rad - pos: 42.5,-69.5 + pos: -67.5,-38.5 parent: 2 - - uid: 11957 + - uid: 12237 components: - type: Transform rot: 3.141592653589793 rad - pos: 43.5,-69.5 + pos: -67.5,-37.5 parent: 2 - - uid: 11958 + - uid: 12238 components: - type: Transform rot: 3.141592653589793 rad - pos: 44.5,-69.5 + pos: -67.5,-36.5 parent: 2 - - uid: 11959 + - uid: 12239 components: - type: Transform rot: 3.141592653589793 rad - pos: 36.5,-69.5 + pos: -67.5,-35.5 parent: 2 - - uid: 11960 + - uid: 12240 components: - type: Transform rot: 3.141592653589793 rad - pos: 33.5,-71.5 + pos: -67.5,-34.5 parent: 2 - - uid: 11961 + - uid: 12241 components: - type: Transform rot: 3.141592653589793 rad - pos: 34.5,-71.5 + pos: -67.5,-33.5 parent: 2 - - uid: 11962 + - uid: 12243 components: - type: Transform rot: 3.141592653589793 rad - pos: 35.5,-71.5 + pos: -75.5,-44.5 parent: 2 - - uid: 11963 + - uid: 12244 components: - type: Transform rot: 3.141592653589793 rad - pos: 37.5,-71.5 + pos: -75.5,-42.5 parent: 2 - - uid: 11964 + - uid: 12245 components: - type: Transform rot: 3.141592653589793 rad - pos: 38.5,-71.5 + pos: -75.5,-41.5 parent: 2 - - uid: 11965 + - uid: 12246 components: - type: Transform rot: 3.141592653589793 rad - pos: 39.5,-71.5 + pos: -75.5,-40.5 parent: 2 - - uid: 11966 + - uid: 12247 components: - type: Transform rot: 3.141592653589793 rad - pos: 40.5,-71.5 + pos: -75.5,-39.5 parent: 2 - - uid: 11967 + - uid: 12248 components: - type: Transform rot: 3.141592653589793 rad - pos: 41.5,-71.5 + pos: -75.5,-38.5 parent: 2 - - uid: 11968 + - uid: 12249 components: - type: Transform rot: 3.141592653589793 rad - pos: 42.5,-71.5 + pos: -75.5,-37.5 parent: 2 - - uid: 11969 + - uid: 12250 components: - type: Transform rot: 3.141592653589793 rad - pos: 43.5,-71.5 + pos: -75.5,-43.5 parent: 2 - - uid: 11970 + - uid: 12251 components: - type: Transform rot: 3.141592653589793 rad - pos: 44.5,-71.5 + pos: -75.5,-35.5 parent: 2 - - uid: 11971 + - uid: 12252 components: - type: Transform rot: 3.141592653589793 rad - pos: 36.5,-71.5 + pos: -75.5,-34.5 parent: 2 - - uid: 11972 + - uid: 12253 components: - type: Transform rot: 3.141592653589793 rad - pos: 34.5,-73.5 + pos: -75.5,-33.5 parent: 2 - - uid: 11973 + - uid: 12254 components: - type: Transform rot: 3.141592653589793 rad - pos: 35.5,-73.5 + pos: -75.5,-36.5 parent: 2 - - uid: 11974 + - uid: 12255 components: - type: Transform rot: 3.141592653589793 rad - pos: 36.5,-73.5 + pos: -77.5,-44.5 parent: 2 - - uid: 11975 + - uid: 12256 components: - type: Transform rot: 3.141592653589793 rad - pos: 38.5,-73.5 + pos: -77.5,-42.5 parent: 2 - - uid: 11976 + - uid: 12257 components: - type: Transform rot: 3.141592653589793 rad - pos: 39.5,-73.5 + pos: -77.5,-41.5 parent: 2 - - uid: 11977 + - uid: 12258 components: - type: Transform rot: 3.141592653589793 rad - pos: 40.5,-73.5 + pos: -77.5,-40.5 parent: 2 - - uid: 11978 + - uid: 12259 components: - type: Transform rot: 3.141592653589793 rad - pos: 41.5,-73.5 + pos: -77.5,-39.5 parent: 2 - - uid: 11979 + - uid: 12260 components: - type: Transform rot: 3.141592653589793 rad - pos: 42.5,-73.5 + pos: -77.5,-43.5 parent: 2 - - uid: 11980 + - uid: 12261 components: - type: Transform rot: 3.141592653589793 rad - pos: 43.5,-73.5 + pos: -77.5,-37.5 parent: 2 - - uid: 11981 + - uid: 12262 components: - type: Transform rot: 3.141592653589793 rad - pos: 44.5,-73.5 + pos: -77.5,-36.5 parent: 2 - - uid: 11982 + - uid: 12263 components: - type: Transform rot: 3.141592653589793 rad - pos: 37.5,-73.5 + pos: -77.5,-35.5 parent: 2 - - uid: 11983 + - uid: 12264 components: - type: Transform rot: 3.141592653589793 rad - pos: 33.5,-75.5 + pos: -77.5,-34.5 parent: 2 - - uid: 11984 + - uid: 12265 components: - type: Transform rot: 3.141592653589793 rad - pos: 34.5,-75.5 + pos: -77.5,-33.5 parent: 2 - - uid: 11985 + - uid: 12266 components: - type: Transform rot: 3.141592653589793 rad - pos: 35.5,-75.5 + pos: -77.5,-38.5 parent: 2 - - uid: 11986 + - uid: 12267 components: - type: Transform rot: 3.141592653589793 rad - pos: 38.5,-75.5 + pos: -79.5,-44.5 parent: 2 - - uid: 11987 + - uid: 12268 components: - type: Transform rot: 3.141592653589793 rad - pos: 37.5,-75.5 + pos: -79.5,-42.5 parent: 2 - - uid: 11988 + - uid: 12269 components: - type: Transform rot: 3.141592653589793 rad - pos: 39.5,-75.5 + pos: -79.5,-41.5 parent: 2 - - uid: 11989 + - uid: 12270 components: - type: Transform rot: 3.141592653589793 rad - pos: 36.5,-75.5 + pos: -79.5,-40.5 parent: 2 - - uid: 11990 + - uid: 12271 components: - type: Transform rot: 3.141592653589793 rad - pos: 40.5,-75.5 + pos: -79.5,-39.5 parent: 2 - - uid: 11991 + - uid: 12272 components: - type: Transform rot: 3.141592653589793 rad - pos: 41.5,-75.5 + pos: -79.5,-38.5 parent: 2 - - uid: 11992 + - uid: 12273 components: - type: Transform rot: 3.141592653589793 rad - pos: 43.5,-75.5 + pos: -79.5,-43.5 parent: 2 - - uid: 11993 + - uid: 12274 components: - type: Transform rot: 3.141592653589793 rad - pos: 44.5,-75.5 + pos: -79.5,-37.5 parent: 2 - - uid: 11994 + - uid: 12275 components: - type: Transform rot: 3.141592653589793 rad - pos: 42.5,-75.5 + pos: -79.5,-36.5 parent: 2 - - uid: 11995 + - uid: 12276 components: - type: Transform rot: 3.141592653589793 rad - pos: 33.5,-77.5 + pos: -79.5,-34.5 parent: 2 - - uid: 11996 + - uid: 12277 components: - type: Transform rot: 3.141592653589793 rad - pos: 35.5,-77.5 + pos: -79.5,-33.5 parent: 2 - - uid: 11997 + - uid: 12278 components: - type: Transform rot: 3.141592653589793 rad - pos: 36.5,-77.5 + pos: -79.5,-35.5 parent: 2 - - uid: 11998 + - uid: 12279 components: - type: Transform rot: 3.141592653589793 rad - pos: 37.5,-77.5 + pos: -81.5,-44.5 parent: 2 - - uid: 11999 + - uid: 12280 components: - type: Transform rot: 3.141592653589793 rad - pos: 34.5,-77.5 + pos: -81.5,-42.5 parent: 2 - - uid: 12000 + - uid: 12281 components: - type: Transform rot: 3.141592653589793 rad - pos: 39.5,-77.5 + pos: -81.5,-43.5 parent: 2 - - uid: 12001 + - uid: 12282 components: - type: Transform rot: 3.141592653589793 rad - pos: 41.5,-77.5 + pos: -81.5,-41.5 parent: 2 - - uid: 12002 + - uid: 12283 components: - type: Transform rot: 3.141592653589793 rad - pos: 42.5,-77.5 + pos: -81.5,-40.5 parent: 2 - - uid: 12003 + - uid: 12284 components: - type: Transform rot: 3.141592653589793 rad - pos: 43.5,-77.5 + pos: -81.5,-39.5 parent: 2 - - uid: 12004 + - uid: 12285 components: - type: Transform rot: 3.141592653589793 rad - pos: 38.5,-77.5 + pos: -81.5,-38.5 parent: 2 - - uid: 12005 + - uid: 12286 components: - type: Transform rot: 3.141592653589793 rad - pos: 44.5,-77.5 + pos: -81.5,-37.5 parent: 2 - - uid: 12006 + - uid: 12287 components: - type: Transform rot: 3.141592653589793 rad - pos: 40.5,-77.5 + pos: -81.5,-36.5 parent: 2 - - uid: 12008 + - uid: 12288 components: - type: Transform rot: 3.141592653589793 rad - pos: 33.5,-79.5 + pos: -81.5,-35.5 parent: 2 - - uid: 12009 + - uid: 12289 components: - type: Transform rot: 3.141592653589793 rad - pos: 34.5,-79.5 + pos: -81.5,-34.5 parent: 2 - - uid: 12010 + - uid: 12290 components: - type: Transform rot: 3.141592653589793 rad - pos: 36.5,-79.5 + pos: -81.5,-33.5 parent: 2 - - uid: 12011 + - uid: 14216 components: - type: Transform - rot: 3.141592653589793 rad - pos: 37.5,-79.5 + pos: 34.5,-69.5 parent: 2 - - uid: 12012 + - uid: 14241 components: - type: Transform - rot: 3.141592653589793 rad - pos: 38.5,-79.5 + pos: 38.5,-69.5 parent: 2 - - uid: 12013 + - uid: 14618 components: - type: Transform - rot: 3.141592653589793 rad - pos: 39.5,-79.5 + pos: 40.5,-69.5 parent: 2 - - uid: 12014 + - uid: 14629 components: - type: Transform - rot: 3.141592653589793 rad - pos: 40.5,-79.5 + pos: 36.5,-69.5 parent: 2 - - uid: 12015 + - uid: 15687 components: - type: Transform - rot: 3.141592653589793 rad - pos: 41.5,-79.5 + pos: 34.5,-67.5 parent: 2 - - uid: 12016 + - uid: 15763 components: - type: Transform - rot: 3.141592653589793 rad - pos: 42.5,-79.5 + pos: 35.5,-67.5 parent: 2 - - uid: 12017 + - uid: 16302 components: - type: Transform - rot: 3.141592653589793 rad - pos: 35.5,-79.5 + pos: 36.5,-67.5 parent: 2 - - uid: 12018 + - uid: 16308 components: - type: Transform - rot: 3.141592653589793 rad - pos: 44.5,-79.5 + pos: 39.5,-69.5 parent: 2 - - uid: 12019 + - uid: 16315 components: - type: Transform - rot: 3.141592653589793 rad - pos: 43.5,-79.5 + pos: 41.5,-69.5 parent: 2 - - uid: 12201 + - uid: 16457 components: - type: Transform - rot: 3.141592653589793 rad - pos: -73.5,-39.5 + pos: 42.5,-69.5 parent: 2 - - uid: 12202 + - uid: 16458 components: - type: Transform - rot: 3.141592653589793 rad - pos: -73.5,-40.5 + pos: 33.5,-67.5 parent: 2 - - uid: 12203 + - uid: 17381 components: - type: Transform - rot: 3.141592653589793 rad - pos: -73.5,-41.5 + pos: 44.5,-69.5 parent: 2 - - uid: 12204 + - uid: 17496 components: - type: Transform - rot: 3.141592653589793 rad - pos: -73.5,-42.5 + pos: 43.5,-69.5 parent: 2 - - uid: 12205 + - uid: 17571 components: - type: Transform - rot: 3.141592653589793 rad - pos: -73.5,-43.5 + pos: 36.5,-77.5 parent: 2 - - uid: 12206 + - uid: 17982 components: - type: Transform - rot: 3.141592653589793 rad - pos: -73.5,-44.5 + pos: 43.5,-77.5 parent: 2 - - uid: 12207 + - uid: 17983 components: - type: Transform - rot: 3.141592653589793 rad - pos: -71.5,-44.5 + pos: 42.5,-77.5 parent: 2 - - uid: 12208 + - uid: 17985 components: - type: Transform - rot: 3.141592653589793 rad - pos: -71.5,-43.5 + pos: 40.5,-79.5 parent: 2 - - uid: 12209 + - uid: 17986 components: - type: Transform - rot: 3.141592653589793 rad - pos: -71.5,-42.5 + pos: 38.5,-79.5 parent: 2 - - uid: 12210 + - uid: 18302 components: - type: Transform - rot: 3.141592653589793 rad - pos: -71.5,-41.5 + pos: 39.5,-79.5 parent: 2 - - uid: 12211 + - uid: 19026 components: - type: Transform - rot: 3.141592653589793 rad - pos: -71.5,-40.5 + pos: 36.5,-79.5 parent: 2 - - uid: 12212 + - uid: 19670 components: - type: Transform - rot: 3.141592653589793 rad - pos: -71.5,-39.5 + pos: 41.5,-79.5 parent: 2 - - uid: 12219 + - uid: 19750 components: - type: Transform - rot: 3.141592653589793 rad - pos: -69.5,-33.5 + pos: 41.5,-77.5 parent: 2 - - uid: 12220 + - uid: 19753 components: - type: Transform - rot: 3.141592653589793 rad - pos: -69.5,-34.5 + pos: 36.5,-71.5 parent: 2 - - uid: 12221 + - uid: 19794 components: - type: Transform - rot: 3.141592653589793 rad - pos: -69.5,-35.5 + pos: 33.5,-71.5 parent: 2 - - uid: 12222 + - uid: 20082 components: - type: Transform - rot: 3.141592653589793 rad - pos: -69.5,-36.5 + pos: 34.5,-71.5 parent: 2 - - uid: 12223 + - uid: 20094 components: - type: Transform - rot: 3.141592653589793 rad - pos: -69.5,-37.5 + pos: 39.5,-77.5 parent: 2 - - uid: 12224 + - uid: 20290 components: - type: Transform - rot: 3.141592653589793 rad - pos: -69.5,-38.5 + pos: 37.5,-77.5 parent: 2 - - uid: 12225 + - uid: 20469 components: - type: Transform - rot: 3.141592653589793 rad - pos: -69.5,-39.5 + pos: 38.5,-77.5 parent: 2 - - uid: 12230 + - uid: 20473 components: - type: Transform - rot: 3.141592653589793 rad - pos: -69.5,-40.5 + pos: 34.5,-79.5 parent: 2 - - uid: 12235 + - uid: 20476 components: - type: Transform - rot: 3.141592653589793 rad - pos: -67.5,-38.5 + pos: 44.5,-77.5 parent: 2 - - uid: 12237 + - uid: 20477 components: - type: Transform - rot: 3.141592653589793 rad - pos: -67.5,-37.5 + pos: 33.5,-79.5 parent: 2 - - uid: 12238 + - uid: 20478 components: - type: Transform - rot: 3.141592653589793 rad - pos: -67.5,-36.5 + pos: 35.5,-79.5 parent: 2 - - uid: 12239 + - uid: 20479 components: - type: Transform - rot: 3.141592653589793 rad - pos: -67.5,-35.5 + pos: 37.5,-79.5 parent: 2 - - uid: 12240 + - uid: 20480 components: - type: Transform - rot: 3.141592653589793 rad - pos: -67.5,-34.5 + pos: 40.5,-77.5 parent: 2 - - uid: 12241 + - uid: 20482 components: - type: Transform - rot: 3.141592653589793 rad - pos: -67.5,-33.5 + pos: 35.5,-69.5 parent: 2 - - uid: 12243 + - uid: 20527 components: - type: Transform - rot: 3.141592653589793 rad - pos: -75.5,-44.5 + pos: 37.5,-69.5 parent: 2 - - uid: 12244 + - uid: 20657 components: - type: Transform - rot: 3.141592653589793 rad - pos: -75.5,-42.5 + pos: 34.5,-77.5 parent: 2 - - uid: 12245 + - uid: 21028 components: - type: Transform - rot: 3.141592653589793 rad - pos: -75.5,-41.5 + pos: 33.5,-77.5 parent: 2 - - uid: 12246 + - uid: 21076 components: - type: Transform - rot: 3.141592653589793 rad - pos: -75.5,-40.5 + pos: 44.5,-73.5 parent: 2 - - uid: 12247 + - uid: 21175 components: - type: Transform - rot: 3.141592653589793 rad - pos: -75.5,-39.5 + pos: 43.5,-73.5 parent: 2 - - uid: 12248 + - uid: 21176 components: - type: Transform - rot: 3.141592653589793 rad - pos: -75.5,-38.5 + pos: 38.5,-73.5 parent: 2 - - uid: 12249 + - uid: 21441 components: - type: Transform - rot: 3.141592653589793 rad - pos: -75.5,-37.5 + pos: 34.5,-75.5 parent: 2 - - uid: 12250 + - uid: 21454 components: - type: Transform - rot: 3.141592653589793 rad - pos: -75.5,-43.5 + pos: 33.5,-75.5 parent: 2 - - uid: 12251 + - uid: 21666 components: - type: Transform - rot: 3.141592653589793 rad - pos: -75.5,-35.5 + pos: 35.5,-75.5 parent: 2 - - uid: 12252 + - uid: 21690 components: - type: Transform - rot: 3.141592653589793 rad - pos: -75.5,-34.5 + pos: 35.5,-77.5 parent: 2 - - uid: 12253 + - uid: 21783 components: - type: Transform - rot: 3.141592653589793 rad - pos: -75.5,-33.5 + pos: 40.5,-67.5 parent: 2 - - uid: 12254 + - uid: 21786 components: - type: Transform - rot: 3.141592653589793 rad - pos: -75.5,-36.5 + pos: 38.5,-67.5 parent: 2 - - uid: 12255 + - uid: 21863 components: - type: Transform - rot: 3.141592653589793 rad - pos: -77.5,-44.5 + pos: 39.5,-67.5 parent: 2 - - uid: 12256 + - uid: 21893 components: - type: Transform - rot: 3.141592653589793 rad - pos: -77.5,-42.5 + pos: 40.5,-75.5 parent: 2 - - uid: 12257 + - uid: 21905 components: - type: Transform - rot: 3.141592653589793 rad - pos: -77.5,-41.5 + pos: 43.5,-75.5 parent: 2 - - uid: 12258 + - uid: 21908 components: - type: Transform - rot: 3.141592653589793 rad - pos: -77.5,-40.5 + pos: 42.5,-75.5 parent: 2 - - uid: 12259 + - uid: 21913 components: - type: Transform - rot: 3.141592653589793 rad - pos: -77.5,-39.5 + pos: 44.5,-75.5 parent: 2 - - uid: 12260 + - uid: 22053 components: - type: Transform - rot: 3.141592653589793 rad - pos: -77.5,-43.5 + pos: 41.5,-75.5 parent: 2 - - uid: 12261 + - uid: 22104 components: - type: Transform - rot: 3.141592653589793 rad - pos: -77.5,-37.5 + pos: 39.5,-75.5 parent: 2 - - uid: 12262 + - uid: 22108 components: - type: Transform - rot: 3.141592653589793 rad - pos: -77.5,-36.5 + pos: 37.5,-75.5 parent: 2 - - uid: 12263 + - uid: 22109 components: - type: Transform - rot: 3.141592653589793 rad - pos: -77.5,-35.5 + pos: 38.5,-75.5 parent: 2 - - uid: 12264 + - uid: 22113 components: - type: Transform - rot: 3.141592653589793 rad - pos: -77.5,-34.5 + pos: 36.5,-75.5 parent: 2 - - uid: 12265 + - uid: 22114 components: - type: Transform - rot: 3.141592653589793 rad - pos: -77.5,-33.5 + pos: 41.5,-67.5 parent: 2 - - uid: 12266 + - uid: 22164 components: - type: Transform - rot: 3.141592653589793 rad - pos: -77.5,-38.5 + pos: 43.5,-67.5 parent: 2 - - uid: 12267 + - uid: 22168 components: - type: Transform - rot: 3.141592653589793 rad - pos: -79.5,-44.5 + pos: 40.5,-73.5 parent: 2 - - uid: 12268 + - uid: 22170 components: - type: Transform - rot: 3.141592653589793 rad - pos: -79.5,-42.5 + pos: 41.5,-73.5 parent: 2 - - uid: 12269 + - uid: 22201 components: - type: Transform - rot: 3.141592653589793 rad - pos: -79.5,-41.5 + pos: 42.5,-67.5 parent: 2 - - uid: 12270 + - uid: 22202 components: - type: Transform - rot: 3.141592653589793 rad - pos: -79.5,-40.5 + pos: 33.5,-73.5 parent: 2 - - uid: 12271 + - uid: 22203 components: - type: Transform - rot: 3.141592653589793 rad - pos: -79.5,-39.5 + pos: 35.5,-73.5 parent: 2 - - uid: 12272 + - uid: 22204 components: - type: Transform - rot: 3.141592653589793 rad - pos: -79.5,-38.5 + pos: 39.5,-71.5 parent: 2 - - uid: 12273 + - uid: 22399 components: - type: Transform - rot: 3.141592653589793 rad - pos: -79.5,-43.5 + pos: 37.5,-71.5 parent: 2 - - uid: 12274 + - uid: 22559 components: - type: Transform - rot: 3.141592653589793 rad - pos: -79.5,-37.5 + pos: 42.5,-73.5 parent: 2 - - uid: 12275 + - uid: 22585 components: - type: Transform - rot: 3.141592653589793 rad - pos: -79.5,-36.5 + pos: 38.5,-71.5 parent: 2 - - uid: 12276 + - uid: 22612 components: - type: Transform - rot: 3.141592653589793 rad - pos: -79.5,-34.5 + pos: 34.5,-73.5 parent: 2 - - uid: 12277 + - uid: 22628 components: - type: Transform - rot: 3.141592653589793 rad - pos: -79.5,-33.5 + pos: 33.5,-69.5 parent: 2 - - uid: 12278 + - uid: 22874 components: - type: Transform - rot: 3.141592653589793 rad - pos: -79.5,-35.5 + pos: 37.5,-67.5 parent: 2 - - uid: 12279 + - uid: 22980 components: - type: Transform - rot: 3.141592653589793 rad - pos: -81.5,-44.5 + pos: 39.5,-73.5 parent: 2 - - uid: 12280 + - uid: 23260 components: - type: Transform - rot: 3.141592653589793 rad - pos: -81.5,-42.5 + pos: 36.5,-73.5 parent: 2 - - uid: 12281 + - uid: 23299 components: - type: Transform - rot: 3.141592653589793 rad - pos: -81.5,-43.5 + pos: 37.5,-73.5 parent: 2 - - uid: 12282 + - uid: 23300 components: - type: Transform - rot: 3.141592653589793 rad - pos: -81.5,-41.5 + pos: 44.5,-71.5 parent: 2 - - uid: 12283 + - uid: 23301 components: - type: Transform - rot: 3.141592653589793 rad - pos: -81.5,-40.5 + pos: 41.5,-71.5 parent: 2 - - uid: 12284 + - uid: 23302 components: - type: Transform - rot: 3.141592653589793 rad - pos: -81.5,-39.5 + pos: 42.5,-71.5 parent: 2 - - uid: 12285 + - uid: 23303 components: - type: Transform - rot: 3.141592653589793 rad - pos: -81.5,-38.5 + pos: 43.5,-71.5 parent: 2 - - uid: 12286 + - uid: 23304 components: - type: Transform - rot: 3.141592653589793 rad - pos: -81.5,-37.5 + pos: 44.5,-67.5 parent: 2 - - uid: 12287 + - uid: 23305 components: - type: Transform - rot: 3.141592653589793 rad - pos: -81.5,-36.5 + pos: 35.5,-71.5 parent: 2 - - uid: 12288 + - uid: 23306 components: - type: Transform - rot: 3.141592653589793 rad - pos: -81.5,-35.5 + pos: 40.5,-71.5 parent: 2 - - uid: 12289 + - uid: 23307 components: - type: Transform - rot: 3.141592653589793 rad - pos: -81.5,-34.5 + pos: 42.5,-79.5 parent: 2 - - uid: 12290 + - uid: 28977 components: - type: Transform - rot: 3.141592653589793 rad - pos: -81.5,-33.5 + pos: 44.5,-81.5 parent: 2 - proto: SolarPanelBroken entities: @@ -154417,10 +154800,10 @@ entities: - type: Transform pos: 94.5,6.5 parent: 2 - - uid: 11750 + - uid: 11948 components: - type: Transform - pos: 31.5,-80.5 + pos: 31.5,-82.5 parent: 2 - uid: 12036 components: @@ -154589,11 +154972,6 @@ entities: parent: 2 - proto: SpawnMobButterfly entities: - - uid: 4016 - components: - - type: Transform - pos: -13.5,-5.5 - parent: 2 - uid: 6552 components: - type: Transform @@ -154609,27 +154987,32 @@ entities: - type: Transform pos: 35.5,34.5 parent: 2 - - uid: 24241 + - uid: 28047 components: - type: Transform - pos: -20.5,-3.5 + pos: 42.5,-9.5 parent: 2 - - uid: 24242 + - uid: 28048 components: - type: Transform - pos: -18.5,-8.5 + pos: 44.5,22.5 parent: 2 - - uid: 24243 + - uid: 28049 components: - type: Transform - pos: -15.5,-4.5 + pos: 31.5,-39.5 + parent: 2 + - uid: 28091 + components: + - type: Transform + pos: -29.5,-51.5 parent: 2 - proto: SpawnMobCatBingus entities: - - uid: 24245 + - uid: 28046 components: - type: Transform - pos: -18.5,-4.5 + pos: -9.5,-40.5 parent: 2 - proto: SpawnMobCatException entities: @@ -154640,10 +155023,10 @@ entities: parent: 2 - proto: SpawnMobCatFloppa entities: - - uid: 24247 + - uid: 28018 components: - type: Transform - pos: -14.5,-8.5 + pos: 28.5,-37.5 parent: 2 - proto: SpawnMobCatRuntime entities: @@ -155002,15 +155385,15 @@ entities: parent: 2 - proto: SpawnPointLawyer entities: - - uid: 19794 + - uid: 69 components: - type: Transform - pos: -45.5,-32.5 + pos: -7.5,-5.5 parent: 2 - - uid: 26924 + - uid: 172 components: - type: Transform - pos: -48.5,-30.5 + pos: -9.5,-3.5 parent: 2 - proto: SpawnPointLibrarian entities: @@ -155755,65 +156138,65 @@ entities: fixtures: {} - proto: SteelBench entities: - - uid: 665 + - uid: 11899 components: - type: Transform - pos: -3.5,-11.5 + pos: -3.5,-10.5 parent: 2 - - uid: 678 + - uid: 11900 components: - type: Transform - pos: -3.5,-9.5 + pos: -7.5,-10.5 parent: 2 - - uid: 3505 + - uid: 11901 components: - type: Transform - pos: -3.5,-7.5 + pos: -4.5,-10.5 parent: 2 - - uid: 3522 + - uid: 11902 components: - type: Transform - pos: -6.5,-7.5 + pos: -6.5,-8.5 parent: 2 - - uid: 3547 + - uid: 12017 components: - type: Transform - pos: -6.5,-9.5 + pos: -7.5,-12.5 parent: 2 - - uid: 3575 + - uid: 12200 components: - type: Transform - pos: -6.5,-11.5 + pos: -4.5,-12.5 parent: 2 - - uid: 6255 + - uid: 23309 components: - type: Transform - pos: -7.5,-11.5 + pos: -6.5,-10.5 parent: 2 - - uid: 6256 + - uid: 23311 components: - type: Transform - pos: -4.5,-11.5 + pos: -6.5,-12.5 parent: 2 - - uid: 6258 + - uid: 23312 components: - type: Transform - pos: -4.5,-9.5 + pos: -7.5,-8.5 parent: 2 - - uid: 6260 + - uid: 23313 components: - type: Transform - pos: -7.5,-9.5 + pos: -3.5,-12.5 parent: 2 - - uid: 6263 + - uid: 23335 components: - type: Transform - pos: -7.5,-7.5 + pos: -4.5,-8.5 parent: 2 - - uid: 6265 + - uid: 24179 components: - type: Transform - pos: -4.5,-7.5 + pos: -3.5,-8.5 parent: 2 - proto: Stool entities: @@ -155918,11 +156301,6 @@ entities: parent: 2 - proto: StorageCanister entities: - - uid: 366 - components: - - type: Transform - pos: -47.5,22.5 - parent: 2 - uid: 1781 components: - type: Transform @@ -155933,30 +156311,35 @@ entities: - type: Transform pos: 46.5,-5.5 parent: 2 - - uid: 14241 + - uid: 12000 components: - type: Transform - pos: -46.5,21.5 + pos: -44.5,33.5 parent: 2 - - uid: 17983 + - uid: 24149 components: - type: Transform - pos: -46.5,22.5 + pos: 48.5,-6.5 parent: 2 - - uid: 17986 + - uid: 24154 components: - type: Transform - pos: -47.5,21.5 + pos: 47.5,-6.5 parent: 2 - - uid: 24149 + - uid: 25794 components: - type: Transform - pos: 48.5,-6.5 + pos: -43.5,33.5 parent: 2 - - uid: 24154 + - uid: 25795 components: - type: Transform - pos: 47.5,-6.5 + pos: -44.5,32.5 + parent: 2 + - uid: 25797 + components: + - type: Transform + pos: -43.5,32.5 parent: 2 - proto: StrangePill entities: @@ -157052,28 +157435,39 @@ entities: id: eva - proto: SurveillanceCameraEngineering entities: - - uid: 6005 + - uid: 8531 components: - type: Transform rot: -1.5707963267948966 rad - pos: -40.5,34.5 + pos: -49.5,19.5 parent: 2 - type: SurveillanceCamera setupAvailableNetworks: - SurveillanceCameraEngineering nameSet: True - id: teg west - - uid: 8531 + id: Canisters + - uid: 11896 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -49.5,19.5 + rot: 3.141592653589793 rad + pos: -36.5,37.5 parent: 2 - type: SurveillanceCamera setupAvailableNetworks: - SurveillanceCameraEngineering nameSet: True - id: Canisters + id: TEG + - uid: 12014 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -42.5,30.5 + parent: 2 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraEngineering + nameSet: True + id: Atmos North - uid: 19865 components: - type: Transform @@ -157105,16 +157499,6 @@ entities: - SurveillanceCameraEngineering nameSet: True id: PA - - uid: 22612 - components: - - type: Transform - pos: -45.5,30.5 - parent: 2 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraEngineering - nameSet: True - id: server room - uid: 22614 components: - type: Transform @@ -157235,39 +157619,37 @@ entities: - SurveillanceCameraEngineering nameSet: True id: engi hall - - uid: 22628 + - uid: 22692 components: - type: Transform rot: 3.141592653589793 rad - pos: -42.5,28.5 + pos: -44.5,1.5 parent: 2 - type: SurveillanceCamera setupAvailableNetworks: - SurveillanceCameraEngineering nameSet: True - id: atmos north - - uid: 22692 + id: atmos hall + - uid: 24293 components: - type: Transform - rot: 3.141592653589793 rad - pos: -44.5,1.5 + rot: 1.5707963267948966 rad + pos: -30.5,35.5 parent: 2 - type: SurveillanceCamera setupAvailableNetworks: - SurveillanceCameraEngineering nameSet: True - id: atmos hall - - uid: 25213 + id: TEG 2 + - uid: 25143 components: - type: Transform - rot: 3.141592653589793 rad - pos: -31.5,35.5 + rot: -1.5707963267948966 rad + pos: -49.5,-30.5 parent: 2 - type: SurveillanceCamera setupAvailableNetworks: - SurveillanceCameraEngineering - nameSet: True - id: TEG - uid: 27996 components: - type: Transform @@ -157994,59 +158376,59 @@ entities: id: hall west med - proto: SurveillanceCameraRouterCommand entities: - - uid: 3588 + - uid: 11982 components: - type: Transform - pos: -45.5,34.5 + pos: -46.5,-30.5 parent: 2 - proto: SurveillanceCameraRouterEngineering entities: - - uid: 3593 + - uid: 11983 components: - type: Transform - pos: -42.5,32.5 + pos: -46.5,-31.5 parent: 2 - proto: SurveillanceCameraRouterGeneral entities: - - uid: 1857 + - uid: 11991 components: - type: Transform - pos: -42.5,33.5 + pos: -46.5,-28.5 parent: 2 - proto: SurveillanceCameraRouterMedical entities: - - uid: 3594 + - uid: 12004 components: - type: Transform - pos: -42.5,31.5 + pos: -44.5,-31.5 parent: 2 - proto: SurveillanceCameraRouterScience entities: - - uid: 3587 + - uid: 205 components: - type: Transform - pos: -43.5,33.5 + pos: -44.5,-30.5 parent: 2 - proto: SurveillanceCameraRouterSecurity entities: - - uid: 3591 + - uid: 11979 components: - type: Transform - pos: -43.5,32.5 + pos: -46.5,-29.5 parent: 2 - proto: SurveillanceCameraRouterService entities: - - uid: 3590 + - uid: 255 components: - type: Transform - pos: -43.5,31.5 + pos: -44.5,-28.5 parent: 2 - proto: SurveillanceCameraRouterSupply entities: - - uid: 3589 + - uid: 11978 components: - type: Transform - pos: -45.5,35.5 + pos: -44.5,-29.5 parent: 2 - proto: SurveillanceCameraScience entities: @@ -158398,17 +158780,6 @@ entities: - SurveillanceCameraService nameSet: True id: kitchen - - uid: 602 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -13.5,-4.5 - parent: 2 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraService - nameSet: True - id: terrarium - uid: 1256 components: - type: Transform @@ -158462,17 +158833,6 @@ entities: - SurveillanceCameraService nameSet: True id: Asteroid bridge east - - uid: 22585 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -49.5,-30.5 - parent: 2 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraService - nameSet: True - id: Cybersun legal department - uid: 22586 components: - type: Transform @@ -158773,13 +159133,6 @@ entities: - type: Transform pos: -38.5,-25.5 parent: 2 -- proto: SurveillanceCameraWirelessRouterEntertainment - entities: - - uid: 22399 - components: - - type: Transform - pos: -42.5,34.5 - parent: 2 - proto: SurveillanceWirelessCameraMovableEntertainment entities: - uid: 7021 @@ -160338,6 +160691,18 @@ entities: - type: Transform pos: -54.5,4.5 parent: 2 + - uid: 1219 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -47.5,-33.5 + parent: 2 + - uid: 1220 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -46.5,-33.5 + parent: 2 - uid: 1266 components: - type: Transform @@ -160909,6 +161274,16 @@ entities: - type: Transform pos: 47.5,7.5 parent: 2 + - uid: 25115 + components: + - type: Transform + pos: 62.5,-5.5 + parent: 2 + - uid: 25117 + components: + - type: Transform + pos: 62.5,-4.5 + parent: 2 - uid: 25592 components: - type: Transform @@ -160997,16 +161372,6 @@ entities: - type: Transform pos: 37.5,42.5 parent: 2 - - uid: 28854 - components: - - type: Transform - pos: 61.5,-4.5 - parent: 2 - - uid: 28864 - components: - - type: Transform - pos: 61.5,-5.5 - parent: 2 - proto: TableReinforced entities: - uid: 217 @@ -161295,18 +161660,6 @@ entities: rot: 3.141592653589793 rad pos: -8.5,-9.5 parent: 2 - - uid: 3550 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -8.5,-8.5 - parent: 2 - - uid: 3573 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -8.5,-7.5 - parent: 2 - uid: 6292 components: - type: Transform @@ -161317,24 +161670,19 @@ entities: - type: Transform pos: -7.5,-15.5 parent: 2 - - uid: 24291 + - uid: 12019 components: - type: Transform - pos: -3.5,-5.5 + rot: -1.5707963267948966 rad + pos: -8.5,-10.5 parent: 2 - - uid: 24293 + - uid: 27671 components: - type: Transform - pos: -2.5,-5.5 + pos: -8.5,-8.5 parent: 2 - proto: TableWood entities: - - uid: 69 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -49.5,-29.5 - parent: 2 - uid: 151 components: - type: Transform @@ -161361,15 +161709,11 @@ entities: - type: Transform pos: 9.5,49.5 parent: 2 - - uid: 1083 - components: - - type: Transform - pos: -45.5,-31.5 - parent: 2 - - uid: 1136 + - uid: 1224 components: - type: Transform - pos: -44.5,-31.5 + rot: 1.5707963267948966 rad + pos: -17.5,-3.5 parent: 2 - uid: 1264 components: @@ -161536,16 +161880,6 @@ entities: - type: Transform pos: 8.5,-2.5 parent: 2 - - uid: 6146 - components: - - type: Transform - pos: -47.5,-31.5 - parent: 2 - - uid: 6147 - components: - - type: Transform - pos: -46.5,-31.5 - parent: 2 - uid: 6184 components: - type: Transform @@ -161606,12 +161940,6 @@ entities: rot: -1.5707963267948966 rad pos: 20.5,-56.5 parent: 2 - - uid: 6741 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -49.5,-28.5 - parent: 2 - uid: 6973 components: - type: Transform @@ -161814,12 +162142,6 @@ entities: - type: Transform pos: -3.5,39.5 parent: 2 - - uid: 8914 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -47.5,-32.5 - parent: 2 - uid: 9607 components: - type: Transform @@ -161932,6 +162254,32 @@ entities: - type: Transform pos: -36.5,-55.5 parent: 2 + - uid: 11821 + components: + - type: Transform + pos: -9.5,-5.5 + parent: 2 + - uid: 11822 + components: + - type: Transform + pos: -9.5,-4.5 + parent: 2 + - uid: 11825 + components: + - type: Transform + pos: -8.5,-4.5 + parent: 2 + - uid: 11846 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -17.5,-4.5 + parent: 2 + - uid: 11884 + components: + - type: Transform + pos: -7.5,-4.5 + parent: 2 - uid: 15658 components: - type: Transform @@ -161984,6 +162332,60 @@ entities: rot: 1.5707963267948966 rad pos: 3.5,-19.5 parent: 2 + - uid: 25128 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -19.5,-5.5 + parent: 2 + - uid: 25130 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -19.5,-3.5 + parent: 2 + - uid: 25247 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -19.5,-7.5 + parent: 2 + - uid: 25264 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -20.5,-6.5 + parent: 2 + - uid: 25346 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -19.5,-6.5 + parent: 2 + - uid: 25347 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -20.5,-4.5 + parent: 2 + - uid: 25364 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -19.5,-4.5 + parent: 2 + - uid: 25399 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -17.5,-7.5 + parent: 2 + - uid: 25401 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -17.5,-6.5 + parent: 2 - uid: 26490 components: - type: Transform @@ -162049,12 +162451,24 @@ entities: - type: Transform pos: 2.5,-2.5 parent: 26470 + - uid: 26924 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -11.5,-6.5 + parent: 2 - uid: 27082 components: - type: Transform rot: -1.5707963267948966 rad pos: -13.5,-19.5 parent: 2 + - uid: 27481 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -11.5,-7.5 + parent: 2 - uid: 27694 components: - type: Transform @@ -162166,61 +162580,73 @@ entities: - type: Transform pos: 5.5326095,51.63272 parent: 2 + - uid: 24241 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -47.664944,-33.398407 + parent: 2 + - uid: 24242 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -47.352444,-33.476532 + parent: 2 - proto: TelecomServerFilledCargo entities: - - uid: 375 + - uid: 1222 components: - type: Transform - pos: -47.5,35.5 + pos: -47.5,-29.5 parent: 2 - proto: TelecomServerFilledCommand entities: - - uid: 3581 + - uid: 1590 components: - type: Transform - pos: -47.5,34.5 + pos: -49.5,-30.5 parent: 2 - proto: TelecomServerFilledCommon entities: - - uid: 3598 + - uid: 12016 components: - type: Transform - pos: -47.5,33.5 + pos: -49.5,-28.5 parent: 2 - proto: TelecomServerFilledEngineering entities: - - uid: 3585 + - uid: 9567 components: - type: Transform - pos: -47.5,32.5 + pos: -49.5,-31.5 parent: 2 - proto: TelecomServerFilledMedical entities: - - uid: 3586 + - uid: 1218 components: - type: Transform - pos: -47.5,31.5 + pos: -47.5,-31.5 parent: 2 - proto: TelecomServerFilledScience entities: - - uid: 3599 + - uid: 11986 components: - type: Transform - pos: -45.5,33.5 + pos: -47.5,-30.5 parent: 2 - proto: TelecomServerFilledSecurity entities: - - uid: 3582 + - uid: 25917 components: - type: Transform - pos: -45.5,32.5 + pos: -49.5,-29.5 parent: 2 - proto: TelecomServerFilledService entities: - - uid: 3583 + - uid: 1221 components: - type: Transform - pos: -45.5,31.5 + pos: -47.5,-28.5 parent: 2 - proto: TeslaCoil entities: @@ -162438,17 +162864,11 @@ entities: parent: 2 - proto: TintedWindow entities: - - uid: 6123 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -6.5,-3.5 - parent: 2 - - uid: 6124 + - uid: 11996 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -6.5,-2.5 + rot: 3.141592653589793 rad + pos: -3.5,-5.5 parent: 2 - proto: ToiletDirtyWater entities: @@ -162634,6 +163054,11 @@ entities: - type: Transform pos: -1.7069762,53.369972 parent: 2 + - uid: 28936 + components: + - type: Transform + pos: 34.39057,-59.922966 + parent: 2 - proto: ToyFigurineAtmosTech entities: - uid: 7344 @@ -162781,10 +163206,10 @@ entities: parent: 2 - proto: ToyFigurineLawyer entities: - - uid: 10308 + - uid: 12718 components: - type: Transform - pos: -44.756435,-31.43567 + pos: -7.3264136,-4.251248 parent: 2 - proto: ToyFigurineLibrarian entities: @@ -163691,10 +164116,10 @@ entities: parent: 2 - proto: VendingMachineLawDrobe entities: - - uid: 202 + - uid: 11856 components: - type: Transform - pos: -49.5,-30.5 + pos: -11.5,-2.5 parent: 2 - proto: VendingMachineMedical entities: @@ -164530,21 +164955,6 @@ entities: - type: Transform pos: 39.5,-1.5 parent: 2 - - uid: 385 - components: - - type: Transform - pos: -41.5,31.5 - parent: 2 - - uid: 386 - components: - - type: Transform - pos: -41.5,33.5 - parent: 2 - - uid: 387 - components: - - type: Transform - pos: -41.5,32.5 - parent: 2 - uid: 392 components: - type: Transform @@ -165070,11 +165480,6 @@ entities: - type: Transform pos: 52.5,-38.5 parent: 2 - - uid: 818 - components: - - type: Transform - pos: 34.5,-53.5 - parent: 2 - uid: 819 components: - type: Transform @@ -165993,41 +166398,6 @@ entities: - type: Transform pos: -48.5,29.5 parent: 2 - - uid: 1218 - components: - - type: Transform - pos: -47.5,29.5 - parent: 2 - - uid: 1219 - components: - - type: Transform - pos: -46.5,29.5 - parent: 2 - - uid: 1220 - components: - - type: Transform - pos: -45.5,29.5 - parent: 2 - - uid: 1221 - components: - - type: Transform - pos: -43.5,29.5 - parent: 2 - - uid: 1222 - components: - - type: Transform - pos: -42.5,29.5 - parent: 2 - - uid: 1223 - components: - - type: Transform - pos: -41.5,29.5 - parent: 2 - - uid: 1224 - components: - - type: Transform - pos: -44.5,29.5 - parent: 2 - uid: 1225 components: - type: Transform @@ -166383,11 +166753,6 @@ entities: - type: Transform pos: 45.5,-6.5 parent: 2 - - uid: 1620 - components: - - type: Transform - pos: 59.5,-1.5 - parent: 2 - uid: 1621 components: - type: Transform @@ -166621,11 +166986,6 @@ entities: - type: Transform pos: -56.5,39.5 parent: 2 - - uid: 1845 - components: - - type: Transform - pos: -41.5,30.5 - parent: 2 - uid: 1847 components: - type: Transform @@ -166906,6 +167266,16 @@ entities: - type: Transform pos: -58.5,22.5 parent: 2 + - uid: 1974 + components: + - type: Transform + pos: 60.5,-2.5 + parent: 2 + - uid: 1983 + components: + - type: Transform + pos: 60.5,-6.5 + parent: 2 - uid: 2005 components: - type: Transform @@ -167269,35 +167639,15 @@ entities: rot: 3.141592653589793 rad pos: 51.5,-2.5 parent: 2 - - uid: 2615 - components: - - type: Transform - pos: 59.5,-7.5 - parent: 2 - uid: 2616 components: - type: Transform pos: 58.5,-7.5 parent: 2 - - uid: 2617 - components: - - type: Transform - pos: 59.5,-2.5 - parent: 2 - - uid: 2618 - components: - - type: Transform - pos: 59.5,-4.5 - parent: 2 - - uid: 2619 - components: - - type: Transform - pos: 59.5,-5.5 - parent: 2 - uid: 2620 components: - type: Transform - pos: 59.5,-6.5 + pos: 60.5,-4.5 parent: 2 - uid: 2622 components: @@ -167317,12 +167667,6 @@ entities: rot: 3.141592653589793 rad pos: 51.5,-4.5 parent: 2 - - uid: 2629 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 59.5,-3.5 - parent: 2 - uid: 2637 components: - type: Transform @@ -167397,11 +167741,6 @@ entities: - type: Transform pos: 34.5,-54.5 parent: 2 - - uid: 2716 - components: - - type: Transform - pos: 30.5,-53.5 - parent: 2 - uid: 2717 components: - type: Transform @@ -167463,15 +167802,10 @@ entities: - type: Transform pos: -48.5,-52.5 parent: 2 - - uid: 2793 - components: - - type: Transform - pos: 33.5,-56.5 - parent: 2 - - uid: 2812 + - uid: 2771 components: - type: Transform - pos: 34.5,-56.5 + pos: 60.5,-5.5 parent: 2 - uid: 2856 components: @@ -168192,6 +168526,11 @@ entities: rot: 3.141592653589793 rad pos: 55.5,15.5 parent: 2 + - uid: 3489 + components: + - type: Transform + pos: 60.5,-3.5 + parent: 2 - uid: 3491 components: - type: Transform @@ -168555,11 +168894,6 @@ entities: - type: Transform pos: -76.5,-4.5 parent: 2 - - uid: 3592 - components: - - type: Transform - pos: -41.5,34.5 - parent: 2 - uid: 3596 components: - type: Transform @@ -168588,12 +168922,6 @@ entities: rot: -1.5707963267948966 rad pos: -40.5,2.5 parent: 2 - - uid: 3633 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -45.5,17.5 - parent: 2 - uid: 3657 components: - type: Transform @@ -168782,22 +169110,12 @@ entities: rot: -1.5707963267948966 rad pos: -45.5,3.5 parent: 2 - - uid: 3954 - components: - - type: Transform - pos: 35.5,-56.5 - parent: 2 - uid: 3959 components: - type: Transform rot: 1.5707963267948966 rad pos: -57.5,-31.5 parent: 2 - - uid: 3961 - components: - - type: Transform - pos: 39.5,-56.5 - parent: 2 - uid: 3967 components: - type: Transform @@ -168939,11 +169257,6 @@ entities: - type: Transform pos: -8.5,-32.5 parent: 2 - - uid: 4160 - components: - - type: Transform - pos: 29.5,-56.5 - parent: 2 - uid: 4161 components: - type: Transform @@ -168954,11 +169267,6 @@ entities: - type: Transform pos: 33.5,22.5 parent: 2 - - uid: 4165 - components: - - type: Transform - pos: 36.5,-56.5 - parent: 2 - uid: 4191 components: - type: Transform @@ -169678,6 +169986,12 @@ entities: rot: -1.5707963267948966 rad pos: 61.5,-1.5 parent: 2 + - uid: 6469 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 56.5,-2.5 + parent: 2 - uid: 6503 components: - type: Transform @@ -170606,11 +170920,6 @@ entities: - type: Transform pos: 33.5,9.5 parent: 2 - - uid: 8976 - components: - - type: Transform - pos: 28.5,-62.5 - parent: 2 - uid: 8993 components: - type: Transform @@ -170671,6 +170980,12 @@ entities: - type: Transform pos: 33.5,10.5 parent: 2 + - uid: 9065 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 59.5,-7.5 + parent: 2 - uid: 9117 components: - type: Transform @@ -170856,11 +171171,6 @@ entities: rot: 3.141592653589793 rad pos: -62.5,-29.5 parent: 2 - - uid: 9344 - components: - - type: Transform - pos: 29.5,-60.5 - parent: 2 - uid: 9347 components: - type: Transform @@ -170891,16 +171201,6 @@ entities: rot: 3.141592653589793 rad pos: -60.5,-33.5 parent: 2 - - uid: 9352 - components: - - type: Transform - pos: 28.5,-60.5 - parent: 2 - - uid: 9353 - components: - - type: Transform - pos: 33.5,-60.5 - parent: 2 - uid: 9354 components: - type: Transform @@ -171883,44 +172183,119 @@ entities: rot: 3.141592653589793 rad pos: -62.5,35.5 parent: 2 - - uid: 10871 + - uid: 11085 + components: + - type: Transform + pos: -25.5,-15.5 + parent: 2 + - uid: 11133 + components: + - type: Transform + pos: -23.5,-18.5 + parent: 2 + - uid: 11168 + components: + - type: Transform + pos: 32.5,12.5 + parent: 2 + - uid: 11828 + components: + - type: Transform + pos: 33.5,-63.5 + parent: 2 + - uid: 11829 + components: + - type: Transform + pos: 35.5,-63.5 + parent: 2 + - uid: 11831 + components: + - type: Transform + pos: 39.5,-63.5 + parent: 2 + - uid: 11832 + components: + - type: Transform + pos: 40.5,-63.5 + parent: 2 + - uid: 11833 + components: + - type: Transform + pos: 41.5,-63.5 + parent: 2 + - uid: 11835 + components: + - type: Transform + pos: 41.5,-57.5 + parent: 2 + - uid: 11836 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 41.5,-62.5 + parent: 2 + - uid: 11839 + components: + - type: Transform + pos: 41.5,-58.5 + parent: 2 + - uid: 11897 components: - type: Transform rot: 1.5707963267948966 rad - pos: -49.5,23.5 + pos: -48.5,30.5 parent: 2 - - uid: 11085 + - uid: 11898 components: - type: Transform - pos: -25.5,-15.5 + rot: 1.5707963267948966 rad + pos: -39.5,31.5 parent: 2 - - uid: 11119 + - uid: 11912 components: - type: Transform rot: 1.5707963267948966 rad - pos: -47.5,23.5 + pos: -42.5,34.5 parent: 2 - - uid: 11128 + - uid: 11924 components: - type: Transform - rot: 3.141592653589793 rad - pos: 40.5,-56.5 + rot: 1.5707963267948966 rad + pos: -42.5,31.5 parent: 2 - - uid: 11133 + - uid: 11936 components: - type: Transform - pos: -23.5,-18.5 + pos: 34.5,-63.5 parent: 2 - - uid: 11155 + - uid: 11939 + components: + - type: Transform + pos: -43.5,-32.5 + parent: 2 + - uid: 11941 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 30.5,-63.5 + parent: 2 + - uid: 11944 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 29.5,-63.5 + parent: 2 + - uid: 11999 components: - type: Transform rot: 1.5707963267948966 rad - pos: -46.5,23.5 + pos: -39.5,30.5 parent: 2 - - uid: 11168 + - uid: 12215 components: - type: Transform - pos: 32.5,12.5 + rot: -1.5707963267948966 rad + pos: 32.5,-63.5 parent: 2 - uid: 12310 components: @@ -171970,18 +172345,6 @@ entities: rot: -1.5707963267948966 rad pos: 5.5,27.5 parent: 2 - - uid: 12546 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -48.5,23.5 - parent: 2 - - uid: 12553 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -47.5,17.5 - parent: 2 - uid: 12563 components: - type: Transform @@ -172010,12 +172373,6 @@ entities: - type: Transform pos: -32.5,38.5 parent: 2 - - uid: 12718 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -46.5,17.5 - parent: 2 - uid: 12732 components: - type: Transform @@ -172111,10 +172468,11 @@ entities: rot: -1.5707963267948966 rad pos: 5.5,26.5 parent: 2 - - uid: 14216 + - uid: 14195 components: - type: Transform - pos: -41.5,35.5 + rot: 1.5707963267948966 rad + pos: -42.5,35.5 parent: 2 - uid: 14626 components: @@ -172157,6 +172515,18 @@ entities: - type: Transform pos: -37.5,44.5 parent: 2 + - uid: 15259 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 56.5,-5.5 + parent: 2 + - uid: 15260 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 56.5,-4.5 + parent: 2 - uid: 15460 components: - type: Transform @@ -172297,6 +172667,12 @@ entities: rot: 3.141592653589793 rad pos: 51.5,-6.5 parent: 2 + - uid: 17863 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 56.5,-6.5 + parent: 2 - uid: 18008 components: - type: Transform @@ -172718,12 +173094,6 @@ entities: rot: 1.5707963267948966 rad pos: 49.5,23.5 parent: 2 - - uid: 21076 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -45.5,23.5 - parent: 2 - uid: 21101 components: - type: Transform @@ -173117,6 +173487,18 @@ entities: rot: -1.5707963267948966 rad pos: -39.5,7.5 parent: 2 + - uid: 24161 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 56.5,-3.5 + parent: 2 + - uid: 24247 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -39.5,29.5 + parent: 2 - uid: 24263 components: - type: Transform @@ -173155,12 +173537,6 @@ entities: rot: 1.5707963267948966 rad pos: 22.5,33.5 parent: 2 - - uid: 24562 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -48.5,17.5 - parent: 2 - uid: 24797 components: - type: Transform @@ -173340,6 +173716,18 @@ entities: - type: Transform pos: -31.5,28.5 parent: 2 + - uid: 25751 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -42.5,32.5 + parent: 2 + - uid: 25754 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -42.5,33.5 + parent: 2 - uid: 25756 components: - type: Transform @@ -173436,6 +173824,16 @@ entities: rot: -1.5707963267948966 rad pos: -34.5,7.5 parent: 2 + - uid: 27109 + components: + - type: Transform + pos: -49.5,-27.5 + parent: 2 + - uid: 27124 + components: + - type: Transform + pos: -44.5,-27.5 + parent: 2 - uid: 27142 components: - type: Transform @@ -173446,6 +173844,11 @@ entities: - type: Transform pos: -60.5,60.5 parent: 2 + - uid: 27155 + components: + - type: Transform + pos: -43.5,-33.5 + parent: 2 - uid: 27196 components: - type: Transform @@ -173456,11 +173859,66 @@ entities: - type: Transform pos: -43.5,60.5 parent: 2 + - uid: 27472 + components: + - type: Transform + pos: -49.5,-34.5 + parent: 2 + - uid: 27474 + components: + - type: Transform + pos: -50.5,-28.5 + parent: 2 + - uid: 27475 + components: + - type: Transform + pos: -50.5,-30.5 + parent: 2 + - uid: 27476 + components: + - type: Transform + pos: -50.5,-31.5 + parent: 2 + - uid: 27477 + components: + - type: Transform + pos: -50.5,-32.5 + parent: 2 + - uid: 27478 + components: + - type: Transform + pos: -50.5,-29.5 + parent: 2 + - uid: 27479 + components: + - type: Transform + pos: -50.5,-33.5 + parent: 2 + - uid: 27497 + components: + - type: Transform + pos: -45.5,-27.5 + parent: 2 - uid: 27516 components: - type: Transform pos: -44.5,42.5 parent: 2 + - uid: 27525 + components: + - type: Transform + pos: -43.5,-28.5 + parent: 2 + - uid: 27528 + components: + - type: Transform + pos: -44.5,-34.5 + parent: 2 + - uid: 27563 + components: + - type: Transform + pos: -43.5,-29.5 + parent: 2 - uid: 27574 components: - type: Transform @@ -173477,6 +173935,21 @@ entities: - type: Transform pos: -44.5,43.5 parent: 2 + - uid: 27605 + components: + - type: Transform + pos: -45.5,-34.5 + parent: 2 + - uid: 27607 + components: + - type: Transform + pos: -47.5,-34.5 + parent: 2 + - uid: 27670 + components: + - type: Transform + pos: -46.5,-34.5 + parent: 2 - uid: 27691 components: - type: Transform @@ -174459,12 +174932,6 @@ entities: - type: Transform pos: 25.5,-1.5 parent: 2 - - uid: 255 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -12.5,-5.5 - parent: 2 - uid: 258 components: - type: Transform @@ -174525,6 +174992,11 @@ entities: - type: Transform pos: -25.5,-49.5 parent: 2 + - uid: 386 + components: + - type: Transform + pos: -12.5,-4.5 + parent: 2 - uid: 446 components: - type: Transform @@ -174721,12 +175193,6 @@ entities: rot: -1.5707963267948966 rad pos: -9.5,-10.5 parent: 2 - - uid: 681 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -12.5,-3.5 - parent: 2 - uid: 693 components: - type: Transform @@ -175442,11 +175908,6 @@ entities: - type: Transform pos: -50.5,-27.5 parent: 2 - - uid: 1422 - components: - - type: Transform - pos: -49.5,-27.5 - parent: 2 - uid: 1423 components: - type: Transform @@ -175462,11 +175923,6 @@ entities: - type: Transform pos: -64.5,-17.5 parent: 2 - - uid: 1427 - components: - - type: Transform - pos: -44.5,-27.5 - parent: 2 - uid: 1428 components: - type: Transform @@ -175557,11 +176013,6 @@ entities: - type: Transform pos: -64.5,-22.5 parent: 2 - - uid: 1448 - components: - - type: Transform - pos: -43.5,-33.5 - parent: 2 - uid: 1449 components: - type: Transform @@ -175572,11 +176023,6 @@ entities: - type: Transform pos: -43.5,-35.5 parent: 2 - - uid: 1451 - components: - - type: Transform - pos: -43.5,-30.5 - parent: 2 - uid: 1453 components: - type: Transform @@ -176139,11 +176585,6 @@ entities: - type: Transform pos: -50.5,-34.5 parent: 2 - - uid: 1711 - components: - - type: Transform - pos: -49.5,-34.5 - parent: 2 - uid: 1722 components: - type: Transform @@ -176261,12 +176702,6 @@ entities: - type: Transform pos: -31.5,-51.5 parent: 2 - - uid: 2061 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -9.5,-7.5 - parent: 2 - uid: 2111 components: - type: Transform @@ -176278,36 +176713,6 @@ entities: rot: 1.5707963267948966 rad pos: -19.5,-57.5 parent: 2 - - uid: 2133 - components: - - type: Transform - pos: -50.5,-28.5 - parent: 2 - - uid: 2134 - components: - - type: Transform - pos: -50.5,-30.5 - parent: 2 - - uid: 2135 - components: - - type: Transform - pos: -50.5,-31.5 - parent: 2 - - uid: 2136 - components: - - type: Transform - pos: -50.5,-32.5 - parent: 2 - - uid: 2137 - components: - - type: Transform - pos: -50.5,-29.5 - parent: 2 - - uid: 2138 - components: - - type: Transform - pos: -50.5,-33.5 - parent: 2 - uid: 2220 components: - type: Transform @@ -176324,12 +176729,6 @@ entities: rot: 1.5707963267948966 rad pos: 18.5,-56.5 parent: 2 - - uid: 2230 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -9.5,-6.5 - parent: 2 - uid: 2232 components: - type: Transform @@ -177334,18 +177733,6 @@ entities: - type: Transform pos: 34.5,-35.5 parent: 2 - - uid: 2789 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -12.5,-2.5 - parent: 2 - - uid: 2794 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -12.5,-6.5 - parent: 2 - uid: 2796 components: - type: Transform @@ -177696,18 +178083,6 @@ entities: - type: Transform pos: -6.5,-20.5 parent: 2 - - uid: 3283 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -9.5,-5.5 - parent: 2 - - uid: 3284 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -12.5,-4.5 - parent: 2 - uid: 3291 components: - type: Transform @@ -177720,16 +178095,6 @@ entities: rot: 1.5707963267948966 rad pos: -27.5,-49.5 parent: 2 - - uid: 3299 - components: - - type: Transform - pos: -8.5,-4.5 - parent: 2 - - uid: 3301 - components: - - type: Transform - pos: -6.5,-4.5 - parent: 2 - uid: 3302 components: - type: Transform @@ -178029,12 +178394,6 @@ entities: rot: -1.5707963267948966 rad pos: -9.5,-9.5 parent: 2 - - uid: 3946 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -9.5,-8.5 - parent: 2 - uid: 3947 components: - type: Transform @@ -178076,18 +178435,6 @@ entities: - type: Transform pos: 34.5,-51.5 parent: 2 - - uid: 3982 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -12.5,-7.5 - parent: 2 - - uid: 3984 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -12.5,-8.5 - parent: 2 - uid: 3988 components: - type: Transform @@ -178111,12 +178458,6 @@ entities: rot: 1.5707963267948966 rad pos: -16.5,-41.5 parent: 2 - - uid: 4003 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -9.5,-4.5 - parent: 2 - uid: 4043 components: - type: Transform @@ -178534,11 +178875,6 @@ entities: - type: Transform pos: -21.5,-8.5 parent: 2 - - uid: 6112 - components: - - type: Transform - pos: -20.5,-9.5 - parent: 2 - uid: 6117 components: - type: Transform @@ -178554,11 +178890,6 @@ entities: - type: Transform pos: -18.5,-31.5 parent: 2 - - uid: 6301 - components: - - type: Transform - pos: -45.5,-27.5 - parent: 2 - uid: 6357 components: - type: Transform @@ -178870,12 +179201,6 @@ entities: - type: Transform pos: -5.5,-60.5 parent: 2 - - uid: 7418 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -43.5,-28.5 - parent: 2 - uid: 7419 components: - type: Transform @@ -179197,12 +179522,6 @@ entities: - type: Transform pos: -64.5,15.5 parent: 2 - - uid: 8091 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -44.5,-34.5 - parent: 2 - uid: 8101 components: - type: Transform @@ -179735,12 +180054,6 @@ entities: - type: Transform pos: -51.5,-41.5 parent: 2 - - uid: 9618 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -43.5,-29.5 - parent: 2 - uid: 9651 components: - type: Transform @@ -180431,6 +180744,59 @@ entities: - type: Transform pos: -53.5,-22.5 parent: 2 + - uid: 11844 + components: + - type: Transform + pos: -5.5,-4.5 + parent: 2 + - uid: 11845 + components: + - type: Transform + pos: -7.5,-6.5 + parent: 2 + - uid: 11885 + components: + - type: Transform + pos: -12.5,-8.5 + parent: 2 + - uid: 11930 + components: + - type: Transform + pos: -6.5,-6.5 + parent: 2 + - uid: 11931 + components: + - type: Transform + pos: -12.5,-2.5 + parent: 2 + - uid: 11932 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,-5.5 + parent: 2 + - uid: 11975 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -21.5,-9.5 + parent: 2 + - uid: 11998 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -18.5,-9.5 + parent: 2 + - uid: 12002 + components: + - type: Transform + pos: -5.5,-6.5 + parent: 2 + - uid: 12003 + components: + - type: Transform + pos: -5.5,-5.5 + parent: 2 - uid: 12196 components: - type: Transform @@ -180484,6 +180850,12 @@ entities: - type: Transform pos: 59.5,38.5 parent: 2 + - uid: 12553 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,-6.5 + parent: 2 - uid: 12572 components: - type: Transform @@ -180853,18 +181225,6 @@ entities: rot: 1.5707963267948966 rad pos: -27.5,-40.5 parent: 2 - - uid: 21783 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -45.5,-34.5 - parent: 2 - - uid: 21863 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -47.5,-34.5 - parent: 2 - uid: 21929 components: - type: Transform @@ -180877,12 +181237,6 @@ entities: rot: 3.141592653589793 rad pos: -44.5,-35.5 parent: 2 - - uid: 22053 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -46.5,-34.5 - parent: 2 - uid: 22055 components: - type: Transform @@ -181352,6 +181706,11 @@ entities: rot: 1.5707963267948966 rad pos: 12.5,-38.5 parent: 2 + - uid: 25408 + components: + - type: Transform + pos: -12.5,-6.5 + parent: 2 - uid: 25579 components: - type: Transform @@ -181394,15 +181753,15 @@ entities: - type: Transform pos: -51.5,-47.5 parent: 2 - - uid: 25651 + - uid: 25750 components: - type: Transform - pos: -8.5,-2.5 + pos: 34.5,-53.5 parent: 2 - - uid: 25654 + - uid: 25817 components: - type: Transform - pos: -8.5,-3.5 + pos: 30.5,-53.5 parent: 2 - uid: 25821 components: @@ -181416,6 +181775,51 @@ entities: rot: 1.5707963267948966 rad pos: -26.5,-43.5 parent: 2 + - uid: 25838 + components: + - type: Transform + pos: 33.5,-56.5 + parent: 2 + - uid: 25841 + components: + - type: Transform + pos: 34.5,-56.5 + parent: 2 + - uid: 25864 + components: + - type: Transform + pos: 40.5,-56.5 + parent: 2 + - uid: 25881 + components: + - type: Transform + pos: 39.5,-56.5 + parent: 2 + - uid: 25907 + components: + - type: Transform + pos: 29.5,-56.5 + parent: 2 + - uid: 25910 + components: + - type: Transform + pos: 29.5,-60.5 + parent: 2 + - uid: 25915 + components: + - type: Transform + pos: 28.5,-60.5 + parent: 2 + - uid: 25916 + components: + - type: Transform + pos: 33.5,-60.5 + parent: 2 + - uid: 25919 + components: + - type: Transform + pos: 35.5,-56.5 + parent: 2 - uid: 26220 components: - type: Transform @@ -181433,6 +181837,38 @@ entities: rot: -1.5707963267948966 rad pos: 50.5,-18.5 parent: 2 + - uid: 27473 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -8.5,-6.5 + parent: 2 + - uid: 27480 + components: + - type: Transform + pos: -9.5,-6.5 + parent: 2 + - uid: 27483 + components: + - type: Transform + pos: -9.5,-7.5 + parent: 2 + - uid: 27487 + components: + - type: Transform + pos: -12.5,-3.5 + parent: 2 + - uid: 27488 + components: + - type: Transform + pos: -12.5,-7.5 + parent: 2 + - uid: 27491 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -9.5,-8.5 + parent: 2 - uid: 27590 components: - type: Transform @@ -181476,6 +181912,11 @@ entities: rot: 3.141592653589793 rad pos: 63.5,30.5 parent: 2 + - uid: 27922 + components: + - type: Transform + pos: -3.5,-6.5 + parent: 2 - uid: 28019 components: - type: Transform @@ -181512,20 +181953,10 @@ entities: - type: Transform pos: 5.5,-35.5 parent: 2 - - uid: 28853 - components: - - type: Transform - pos: 61.5,-3.5 - parent: 2 - - uid: 28856 - components: - - type: Transform - pos: 62.5,-5.5 - parent: 2 - uid: 28860 components: - type: Transform - pos: 62.5,-4.5 + pos: 33.5,-61.5 parent: 2 - uid: 28861 components: @@ -181943,6 +182374,25 @@ entities: - type: Transform pos: -8.5,-18.5 parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + Oxygen: 1.7459903 + Nitrogen: 6.568249 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 24303 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null - proto: WardrobeFormal entities: - uid: 7063 @@ -182268,15 +182718,15 @@ entities: - type: Transform pos: -7.5,53.5 parent: 2 - - uid: 22559 + - uid: 23011 components: - type: Transform - pos: -49.5,-32.5 + pos: -25.5,-44.5 parent: 2 - - uid: 23011 + - uid: 25140 components: - type: Transform - pos: -25.5,-44.5 + pos: -7.5,-2.5 parent: 2 - proto: WaterTankFull entities: @@ -182339,11 +182789,6 @@ entities: parent: 2 - proto: WaterVaporCanister entities: - - uid: 3722 - components: - - type: Transform - pos: -48.5,22.5 - parent: 2 - uid: 4072 components: - type: Transform @@ -182354,6 +182799,11 @@ entities: - type: Transform pos: 46.5,-6.5 parent: 2 + - uid: 25782 + components: + - type: Transform + pos: -43.5,34.5 + parent: 2 - proto: WeaponBaguette entities: - uid: 7014 @@ -182761,6 +183211,11 @@ entities: - type: Transform pos: 19.5,48.5 parent: 2 + - uid: 11977 + components: + - type: Transform + pos: -13.5,-22.5 + parent: 2 - uid: 12317 components: - type: Transform @@ -182796,11 +183251,6 @@ entities: - type: Transform pos: 17.5,-58.5 parent: 2 - - uid: 25399 - components: - - type: Transform - pos: -11.5,-5.5 - parent: 2 - uid: 25481 components: - type: Transform @@ -182846,6 +183296,12 @@ entities: rot: 1.5707963267948966 rad pos: 45.5,-14.5 parent: 2 + - uid: 28951 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 51.5,-16.5 + parent: 2 - proto: WindoorHydroponicsLocked entities: - uid: 1464 @@ -182874,6 +183330,12 @@ entities: parent: 2 - proto: WindoorPlasma entities: + - uid: 1358 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -15.5,-3.5 + parent: 2 - uid: 4808 components: - type: Transform @@ -182920,6 +183382,11 @@ entities: rot: -1.5707963267948966 rad pos: 46.5,10.5 parent: 2 + - uid: 7968 + components: + - type: Transform + pos: 59.5,1.5 + parent: 2 - uid: 10358 components: - type: Transform @@ -182931,6 +183398,12 @@ entities: - type: Transform pos: 27.5,46.5 parent: 2 + - uid: 25245 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -15.5,-7.5 + parent: 2 - proto: WindoorSecureCargoLocked entities: - uid: 23874 @@ -183005,12 +183478,6 @@ entities: rot: -1.5707963267948966 rad pos: 46.5,14.5 parent: 2 - - uid: 17863 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 59.5,0.5 - parent: 2 - proto: WindoorSecureResearchDirectorLocked entities: - uid: 21579 @@ -183165,12 +183632,6 @@ entities: parent: 2 - proto: WoodDoor entities: - - uid: 6125 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -5.5,-4.5 - parent: 2 - uid: 7036 components: - type: Transform @@ -183191,6 +183652,11 @@ entities: - type: Transform pos: -41.5,-15.5 parent: 2 + - uid: 25185 + components: + - type: Transform + pos: -2.5,-6.5 + parent: 2 - uid: 26555 components: - type: Transform diff --git a/Resources/Prototypes/Maps/Pools/default.yml b/Resources/Prototypes/Maps/Pools/default.yml index 1cd33738808..9a88b13eba2 100644 --- a/Resources/Prototypes/Maps/Pools/default.yml +++ b/Resources/Prototypes/Maps/Pools/default.yml @@ -12,3 +12,4 @@ - Reach - Exo - Snowball + - Serpentcrest From 219f562601037a93c9b84cae1431872d54ec7ef0 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 28 Feb 2026 06:57:53 +0000 Subject: [PATCH 425/603] Automatic changelog update --- Resources/Changelog/Maps.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Resources/Changelog/Maps.yml b/Resources/Changelog/Maps.yml index 73a953a7222..b735ad574b9 100644 --- a/Resources/Changelog/Maps.yml +++ b/Resources/Changelog/Maps.yml @@ -1036,4 +1036,13 @@ id: 126 time: '2026-02-23T05:48:51.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42905 +- author: TytosB + changes: + - message: Added Serpentcrest to map pool + type: Add + - message: on Serpentcrest, several changes to map + type: Tweak + id: 127 + time: '2026-02-28T06:56:45.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43061 Order: 2 From c3d57545d13462c5c528aad9590d379620691fb1 Mon Sep 17 00:00:00 2001 From: Connor Huffine Date: Sat, 28 Feb 2026 09:21:27 -0500 Subject: [PATCH 426/603] Change Bad Chembottle Suffixes (#43064) Change Suffixes --- .../Entities/Objects/Specific/Chemistry/chemistry-bottles.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml index 1f302e0afff..15aee05b1e8 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml @@ -711,7 +711,7 @@ - type: entity id: ChemistryBottlePotassiumIodide - suffix: iodide + suffix: potassium iodide parent: BaseChemistryBottleFilled components: - type: Label @@ -741,7 +741,7 @@ - type: entity id: ChemistryBottlePulpedBananaPeel - suffix: pulped-banana-peel + suffix: pulped banana peel parent: BaseChemistryBottleFilled components: - type: Label From c4d6e5b2cdc0170bcd24d61ce924023706925454 Mon Sep 17 00:00:00 2001 From: Connor Huffine Date: Sat, 28 Feb 2026 09:23:17 -0500 Subject: [PATCH 427/603] Reparent White Gilgamesh (#43065) --- Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml index ad2e95f147f..bf6cbbb2eae 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml @@ -1775,9 +1775,9 @@ fizziness: 0.4 - type: reagent + parent: BaseAlcohol id: WhiteGilgamesh name: reagent-name-white-gilgamesh - parent: BaseDrink desc: reagent-desc-white-gilgamesh physicalDesc: reagent-physical-desc-creamy flavor: white-gilgamesh From ed0b178976b72b45c1b76b4fab611854691681bb Mon Sep 17 00:00:00 2001 From: Connor Huffine Date: Sat, 28 Feb 2026 09:24:39 -0500 Subject: [PATCH 428/603] Throwing Croissant Incorrect Inhand Removed (#43066) * Remove inhand sprite * Add comment --- .../Prototypes/Entities/Objects/Weapons/Throwable/croissant.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/croissant.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/croissant.yml index 7ff2e100ff0..e8316c0de26 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/croissant.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/croissant.yml @@ -3,6 +3,8 @@ id: WeaponCroissant suffix: Weapon components: + - type: Item + sprite: null # Should be removed if croissant receives an inhand sprite - type: Fixtures fixtures: fix1: From 34d162bf58e365e5db950841cc2233a003122932 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 28 Feb 2026 14:38:34 +0000 Subject: [PATCH 429/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 8abf32c997a..a3e5d38b0fd 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: SurrealShibe - changes: - - message: Added the nutri-batard to mime survival boxes in place of the nutri-brick. - type: Add - id: 9041 - time: '2025-10-07T10:18:50.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40601 - author: Lordbrandon12 changes: - message: Fixed issue allowing space heater temperature to be set above the allowed @@ -3996,3 +3989,10 @@ id: 9551 time: '2026-02-28T01:08:13.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42796 +- author: kontakt + changes: + - message: Throwing croissants no longer have a throwing knife in-hand sprite. + type: Fix + id: 9552 + time: '2026-02-28T14:37:26.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43066 From b5b21c025a9a48f40012743de846b3d78f60f80a Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Sat, 28 Feb 2026 15:41:50 +0100 Subject: [PATCH 430/603] Fix Makeshift Juicer Crafting (#43075) i hate it her --- Resources/Prototypes/Recipes/Construction/tools.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/Prototypes/Recipes/Construction/tools.yml b/Resources/Prototypes/Recipes/Construction/tools.yml index bff07cddf10..e20c0dc83a9 100644 --- a/Resources/Prototypes/Recipes/Construction/tools.yml +++ b/Resources/Prototypes/Recipes/Construction/tools.yml @@ -59,6 +59,8 @@ graph: MakeshiftJuicer startNode: start targetNode: juicer + category: construction-category-tools + objectType: Item - type: construction id: MakeshiftCentrifuge From 1751e417d0d3b8796c64257ce2da401a308b8702 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 28 Feb 2026 14:55:21 +0000 Subject: [PATCH 431/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index a3e5d38b0fd..c5889896dcf 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Lordbrandon12 - changes: - - message: Fixed issue allowing space heater temperature to be set above the allowed - limit. - type: Fix - id: 9042 - time: '2025-10-07T12:53:59.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40453 - author: IProduceWidgets changes: - message: Vox that take excessive amounts of fire damage will now burn into fried @@ -3996,3 +3988,11 @@ id: 9552 time: '2026-02-28T14:37:26.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43066 +- author: ScarKy0 + changes: + - message: Makeshift Juicers now correctly craft in your hands instead of being + a construction ghost. + type: Fix + id: 9553 + time: '2026-02-28T14:54:14.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43075 From 3c75e8204097d05d440d1615aef7458b69dd76a1 Mon Sep 17 00:00:00 2001 From: beck-thompson <107373427+beck-thompson@users.noreply.github.com> Date: Sat, 28 Feb 2026 07:08:19 -0800 Subject: [PATCH 432/603] Add xenoborg gun sprites (#43013) xenoborg gun sprites --- .../Weapons/Guns/Battery/battery_guns.yml | 8 +++++ .../Battery/xenoborg_laser_gun.rsi/base.png | Bin 0 -> 518 bytes .../Battery/xenoborg_laser_gun.rsi/icon.png | Bin 0 -> 523 bytes .../xenoborg_laser_gun.rsi/mag-unshaded-0.png | Bin 0 -> 272 bytes .../xenoborg_laser_gun.rsi/mag-unshaded-1.png | Bin 0 -> 285 bytes .../xenoborg_laser_gun.rsi/mag-unshaded-2.png | Bin 0 -> 280 bytes .../xenoborg_laser_gun.rsi/mag-unshaded-3.png | Bin 0 -> 289 bytes .../xenoborg_laser_gun.rsi/mag-unshaded-4.png | Bin 0 -> 278 bytes .../Battery/xenoborg_laser_gun.rsi/meta.json | 32 ++++++++++++++++++ 9 files changed, 40 insertions(+) create mode 100644 Resources/Textures/Objects/Weapons/Guns/Battery/xenoborg_laser_gun.rsi/base.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Battery/xenoborg_laser_gun.rsi/icon.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Battery/xenoborg_laser_gun.rsi/mag-unshaded-0.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Battery/xenoborg_laser_gun.rsi/mag-unshaded-1.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Battery/xenoborg_laser_gun.rsi/mag-unshaded-2.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Battery/xenoborg_laser_gun.rsi/mag-unshaded-3.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Battery/xenoborg_laser_gun.rsi/mag-unshaded-4.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Battery/xenoborg_laser_gun.rsi/meta.json diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml index cc32106da5d..891a9c4738e 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml @@ -977,6 +977,14 @@ parent: [WeaponAdvancedLaser, BaseXenoborgContraband] id: WeaponLaserGunXenoborg name: xenoborg laser gun + components: + - type: Sprite + sprite: Objects/Weapons/Guns/Battery/xenoborg_laser_gun.rsi + layers: + - state: base + map: [ "enum.GunVisualLayers.Base" ] + - state: mag-unshaded-4 + map: [ "enum.GunVisualLayers.MagUnshaded" ] - type: entity parent: [WeaponLaserCannon, BaseXenoborgContraband] diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/xenoborg_laser_gun.rsi/base.png b/Resources/Textures/Objects/Weapons/Guns/Battery/xenoborg_laser_gun.rsi/base.png new file mode 100644 index 0000000000000000000000000000000000000000..4fbbb81a3a3f73bdad48db9a00e720b2d01b0e1c GIT binary patch literal 518 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f-TA0 z-Gw0!1kIUl0Cg~M7I;J!Gcf2WgD_*oQu{KXAbW|YuPgg2CLR$p&DnEmG=VPg@^o86NQJAu9o1doB zTRpR5w{AQv{ponJ+B5Fcq(AWo6AUE&S%(EKe;v1M)&7{cz?C~xIxR9@e|^9A#@Ao2 zx30e0y`^=A=)2Nor_U5-S@`ibnEbW8#m8RT)@;Wx`>a#ltB8LAlH1;WS(_%^pfT%G zM$3WYWp4XeAF^Na6WX|ap4GLT5=$8#yI#Mf#_-|G4~4hWUNb%5Zj`V1GOxO|J3VFl zq=((HPQ|ac#xURHEy-KQulBo9J>Ttkh0)!)6}yks$O*P67S`||$oiT#wacKoeri`~ z-KJa3209{()^c|&+Ofdg&XO@!^v3a~E9oDY`*+`7_r-p{+tRw#H`8opW|?1CTfnj; zD{@uSDeg5V^l!(kW|Ym+zopr E0Ko>&pa1{> literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/xenoborg_laser_gun.rsi/icon.png b/Resources/Textures/Objects/Weapons/Guns/Battery/xenoborg_laser_gun.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2f685b465dd2f00d1130b5f40d29beee15aaf7cf GIT binary patch literal 523 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f-TA0 z-Gw0!1kIUl0Cg~M7I;J!Gcf2WgD_*oQu{KXAbW|YuPgg2CLR$pj_Y4@%7HHM_jGX# zi8%ar%5Fa?mF&~A@baM_CU!lo?-SD(iv8jV6W~=ek=V5P z&8!Kgao3pABof+Pqn>A&siOg;bv1c+1V0HDmwvqldU;)7mq zY^GyPS8Ap$TQJ2y{AcCCwNe`r>jHwlxy*b2ud@B{!vdYd`u{cO9uw{>hz5o>gQu&X J%Q~loCIE`*%uE0P literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/xenoborg_laser_gun.rsi/mag-unshaded-0.png b/Resources/Textures/Objects/Weapons/Guns/Battery/xenoborg_laser_gun.rsi/mag-unshaded-0.png new file mode 100644 index 0000000000000000000000000000000000000000..78ab0e8098a2b846b9bcc962a0c972bc55a93c42 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f-TA0 z-Gw0!1kIUl0Cg~M7I;J!Gcf2WgD_*oQu{KXAbW|YuPgg2CLR$>P_<@9X(8uM$luIH=0%lxHoY|H{Vd>;Gn+j8&ngpY!}$l&Sf=d#Wzp$Pz> Cc2sWw literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/xenoborg_laser_gun.rsi/mag-unshaded-1.png b/Resources/Textures/Objects/Weapons/Guns/Battery/xenoborg_laser_gun.rsi/mag-unshaded-1.png new file mode 100644 index 0000000000000000000000000000000000000000..64f743a748ba3b204814d4938134618dd3df6b80 GIT binary patch literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f-TA0 z-Gw0!1kIUl0Cg~M7I;J!Gcf2WgD_*oQu{KXAbW|YuPgg2CLR$>vxz*p!a$)!PZ!6K zh{JC$Y~*Zk;Awp*F0ihMBfUVkz0i=ofW?}7wzf*xAw|b`4^I7Wp72cY#AF5r(Pf3@ zo?e-J-_3vfoqfAdt>l)LXVLycu~zSvzO;OOH|(a@x!I+e3tX>&{Ql48(P#PE+J`Fx PfgA=;S3j3^P6NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f-TA0 z-Gw0!1kIUl0Cg~M7I;J!Gcf2WgD_*oQu{KXAbW|YuPgg2CLR$hL3!=&-9VujPZ!6K zh{MSV60D08M0%P69asXM?ENV}GcDcRZQ;eMhYSqUHVZ6%!Tgv-NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f-TA0 z-Gw0!1kIUl0Cg~M7I;J!Gcf2WgD_*oQu{KXAbW|YuPgg2CLR$hO><3SRiIF+r;B4q z#Np%w3D(64B0Wuk4lDsr_WqQYK6@_jkNoT?3AJN6Vo4&k33D2p>i=x-Z3Kdc|NrYt zWF;0IVRFlApQaG6cIWwfd*AdWUK|sc_WiqIJ}b@rpa#r511=9HhU9PZ;S%#R8-Nxv Nc)I$ztaD0e0sxshRG9z( literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/xenoborg_laser_gun.rsi/mag-unshaded-4.png b/Resources/Textures/Objects/Weapons/Guns/Battery/xenoborg_laser_gun.rsi/mag-unshaded-4.png new file mode 100644 index 0000000000000000000000000000000000000000..f256489ba38be98587159fe5a6882dd2572b58b1 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f-TA0 z-Gw0!1kIUl0Cg~M7I;J!Gcf2WgD_*oQu{KXAbW|YuPgg2CLR%MPSF^pH9(;#PZ!6K zh{MSV60D08M0%P69asXM?ENV(-@8t%t Date: Sat, 28 Feb 2026 15:22:22 +0000 Subject: [PATCH 433/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index c5889896dcf..341f90e2c84 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: IProduceWidgets - changes: - - message: Vox that take excessive amounts of fire damage will now burn into fried - chicken. - type: Tweak - id: 9043 - time: '2025-10-07T14:12:25.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40115 - author: BoskiYourk, spanky_spanky changes: - message: The Head of Security now has an energy magnum, a self-charging multi-mode @@ -3996,3 +3988,10 @@ id: 9553 time: '2026-02-28T14:54:14.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43075 +- author: kento_da_neko + changes: + - message: The xenoborg gun now has a unique sprite + type: Add + id: 9554 + time: '2026-02-28T15:21:14.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43013 From 6828abaa2896acde7c3b788da6d4944614829948 Mon Sep 17 00:00:00 2001 From: eoineoineoin Date: Sat, 28 Feb 2026 17:15:27 +0000 Subject: [PATCH 434/603] Remove unused noise texture (#42970) Remove unused asset --- .../Textures/Interface/noise.rsi/meta.json | 58 ------------------ .../Textures/Interface/noise.rsi/noise.png | Bin 45602 -> 0 bytes 2 files changed, 58 deletions(-) delete mode 100644 Resources/Textures/Interface/noise.rsi/meta.json delete mode 100644 Resources/Textures/Interface/noise.rsi/noise.png diff --git a/Resources/Textures/Interface/noise.rsi/meta.json b/Resources/Textures/Interface/noise.rsi/meta.json deleted file mode 100644 index 068ecab968e..00000000000 --- a/Resources/Textures/Interface/noise.rsi/meta.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/blob/4b4e9dff1d7d891cfb75d25ca5bf5172d1c02be6/icons/hud/screen_gen.dmi", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "noise", - "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ] - ] - } - ] -} \ No newline at end of file diff --git a/Resources/Textures/Interface/noise.rsi/noise.png b/Resources/Textures/Interface/noise.rsi/noise.png deleted file mode 100644 index ba74952b409b6d3673c9949e6a81c0a84ecd472c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45602 zcmW(+1z3~s7hS*@FdAi}k?zq5NDD}p0us_8-5}wJ(J3tgLlHzkx}b`g9J@?%6-9>9_DiaY<6951JqGu|Ky7%Yy`(qgjxxatz<{)r?!go_K z@&o{gyZ<|YY23s#06^vBGetRlzYpubj_XC|#<7Pv1y(=%DSn>a-@38tPCx6MC9`Jh zoJYGyt^>~kTJ28xFA2ZTNbG*_T>3@x+`#mCljxhvzi;mXmS=r$Hf8P*ky7hSy%}x) zHrzj~(c00TH}ukx1Z^qw#=CfZa(|cd!TR6st2^q!s<LO>FQi>liz|Fh_;(O*Uf6vf#bXS`-es&T5qp@xGx^(`UYNfG0@BWTOsKsa&Zeg zjFkCjA$4~-%240*YY*GBc>2v9&23^)w@Df)-tD(3x%8MXU~X_^^zGgCQsS=3ro`HR z!HFLwCrT|ICiuqbeBVOK1}-9_&lf5w};ql~s8!5Y^*r(Uh#qZId# z6gl=%J35Kf|9wDFoax=aO_^SH>BDIEQY$*g=KHtO_e!5t+BI%UZ9ewh(1OU^9wrt! z(Vt-OhL8R=uMoLr-ZY-ombaAD|M$8zE`!E_K+Ru4`?sTSZ;#jh*vVX9Trb^8(_i)} zC*Vmf1J`(6{RjWFZ4!$wqx{QnO?PxNsQK>$#S*#tbyGza z-(EK?Z19QQf9qRylYjfZZ8W{&Sb@TY)X%R5B$qBn#DWjP7}QMz|E)3P<^9M~`Q-op0n}fv{;Ld(1P}_UoXu)GV-uF`(8zJ z&s4Q$TaU9ly(X79bvAC>MuYZ+ZtoMAc)#koAL0Q0Pr!8!<;Mg1TmSuFhvDo}77M4} zd~*gG$IyJje108-3HNwfSu;ETK0_&$gnPTwaPpb|$y+e}nx~Fn*P|MtoNe_rfkgiy z@xy2>DWIHRtK_hQrcmxZ91;mlmO<6=^TC}Ixo)&)6_Iq2k_#)gZ6|3KbSqHh%z+o| z`4k`PZdR$cVAtZt3=LpU*4a`z zqeU+eJ^W z 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

vl0gv6N8x+z5N%Q37{ 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 F{}(0Gc*g($ From 99d275f4035777b25dd6210dc853188485caacb2 Mon Sep 17 00:00:00 2001 From: Velken <8467292+Velken@users.noreply.github.com> Date: Sat, 28 Feb 2026 17:17:14 -0300 Subject: [PATCH 435/603] [Fix] Door remote fixes (#43063) * fix door remotes * admeme * typo * review * revert door changes * tag --- .../Remotes/Components/DoorRemoteComponent.cs | 20 ++++++++ .../EntitySystems/SharedDoorRemoteSystem.cs | 27 +++++++---- .../Entities/Objects/Devices/door_remote.yml | 3 ++ .../Doors/Airlocks/base_structureairlocks.yml | 4 ++ .../Doors/Shutter/blast_door_autolink.yml | 48 +++++++++---------- Resources/Prototypes/tags.yml | 3 ++ 6 files changed, 72 insertions(+), 33 deletions(-) diff --git a/Content.Shared/Remotes/Components/DoorRemoteComponent.cs b/Content.Shared/Remotes/Components/DoorRemoteComponent.cs index ed6cd71051d..7dd7b4e8a62 100644 --- a/Content.Shared/Remotes/Components/DoorRemoteComponent.cs +++ b/Content.Shared/Remotes/Components/DoorRemoteComponent.cs @@ -1,6 +1,8 @@ using Robust.Shared.GameStates; using Robust.Shared.Utility; using Robust.Shared.Serialization; +using Content.Shared.Tag; +using Robust.Shared.Prototypes; namespace Content.Shared.Remotes.Components; @@ -29,6 +31,24 @@ public sealed partial class DoorRemoteComponent : Component [DataField, AutoNetworkedField] public bool IncludeUserAccess; + ///

+ /// If false, allows the remote to bypass line of sight and interaction range. + /// + [DataField, AutoNetworkedField] + public bool RequireInRangeUnoccluded = true; + + /// + /// If false, allows the remote to work on anything with a Door component; even it doesn't have the TargetTag tag defined below. + /// + [DataField, AutoNetworkedField] + public bool RequireTagWhitelist = true; + + /// + /// The tag to look for to allow usage of door remote. + /// + [DataField] + public ProtoId TargetTag = "DoorRemoteWhitelist"; + /// /// Client-side only field for checking if StatusControl requires update. /// diff --git a/Content.Shared/Remotes/EntitySystems/SharedDoorRemoteSystem.cs b/Content.Shared/Remotes/EntitySystems/SharedDoorRemoteSystem.cs index 0c562a6de38..48e1b7a11e5 100644 --- a/Content.Shared/Remotes/EntitySystems/SharedDoorRemoteSystem.cs +++ b/Content.Shared/Remotes/EntitySystems/SharedDoorRemoteSystem.cs @@ -9,6 +9,7 @@ using Content.Shared.Popups; using Content.Shared.Power.EntitySystems; using Content.Shared.Remotes.Components; +using Content.Shared.Tag; using Robust.Shared.Audio.Systems; using Robust.Shared.Serialization; using Robust.Shared.Timing; @@ -25,6 +26,7 @@ public abstract class SharedDoorRemoteSystem : EntitySystem [Dependency] private readonly SharedPowerReceiverSystem _powerReceiver = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly TagSystem _tagSystem = default!; [Dependency] protected readonly IGameTiming Timing = default!; @@ -52,10 +54,10 @@ private void OnBeforeInteract(Entity entity, ref BeforeRang || !TryComp(args.Target, out var doorComp) // If it isn't a door we don't use it // Only able to control doors if they are within your vision and within your max range. // Not affected by mobs or machines anymore. - || !_examine.InRangeUnOccluded(args.User, + || (entity.Comp.RequireInRangeUnoccluded && !_examine.InRangeUnOccluded(args.User, args.Target.Value, SharedInteractionSystem.MaxRaycastRange, - null)) + null))) { return; @@ -77,15 +79,22 @@ private void OnBeforeInteract(Entity entity, ref BeforeRang // This covers the accesses the USER has, which always includes the remote's access since holding a remote acts like holding an ID card. } - if (TryComp(args.Target, out var accessComponent) - && !_doorSystem.HasAccess(args.Target.Value, accessTarget, doorComp, accessComponent)) + // Only let remote work on doors that have AccessReader; otherwise, it works on anything with a Door component (curtains, fence gates, etc) + if (TryComp(args.Target, out var accessComponent) && _tagSystem.HasTag(args.Target.Value, entity.Comp.TargetTag)) { - if (isAirlock) - _doorSystem.Deny(args.Target.Value, doorComp, user: args.User, predicted: true); - - _popup.PopupClient(Loc.GetString("door-remote-denied"), args.User, args.User); - return; + // Has an access reader component. Check access. + if (!_doorSystem.HasAccess(args.Target.Value, accessTarget, doorComp, accessComponent)) + { + if (isAirlock) + _doorSystem.Deny(args.Target.Value, doorComp, user: args.User, predicted: true); + + _popup.PopupClient(Loc.GetString("door-remote-denied"), args.User, args.User); + return; + } } + // Unless allowed to bypass by the flag on the component. + else if (entity.Comp.RequireTagWhitelist) + return; switch (entity.Comp.Mode) { diff --git a/Resources/Prototypes/Entities/Objects/Devices/door_remote.yml b/Resources/Prototypes/Entities/Objects/Devices/door_remote.yml index 07a27218262..b89ae897737 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/door_remote.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/door_remote.yml @@ -209,6 +209,7 @@ parent: [DoorRemoteCanEletrifyDoors, BaseCommandContraband] id: DoorRemoteAll name: super door remote + description: A gadget which can open and bolt doors remotely. This one works even on wooden doors! suffix: Admeme components: - type: Sprite @@ -220,6 +221,8 @@ color: "#22871a" - type: DoorRemote includeUserAccess: true + requireInRangeUnoccluded: false + requireTagWhitelist: false - type: Access groups: - AllAccess diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml index 717530bfb79..60ca503adcd 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/base_structureairlocks.yml @@ -176,6 +176,8 @@ tags: - Airlock # This tag is used to nagivate the Airlock construction graph. It's needed because the construction graph is shared between Airlock, AirlockGlass, and HighSecDoor + - DoorRemoteWhitelist + # This tag is used by door remotes to allow or not a door remote to normally be able to interact with a door - type: PryUnpowered - type: BlockWeather - type: GuideHelp @@ -235,3 +237,5 @@ tags: - GlassAirlock # This tag is used to nagivate the Airlock construction graph. It's needed because the construction graph is shared between Airlock, AirlockGlass, and HighSecDoor + - DoorRemoteWhitelist + # This tag is used by door remotes to allow or not a door remote to normally be able to interact with a door diff --git a/Resources/Prototypes/Entities/Structures/Doors/Shutter/blast_door_autolink.yml b/Resources/Prototypes/Entities/Structures/Doors/Shutter/blast_door_autolink.yml index 3386703ec90..fa099ccb615 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Shutter/blast_door_autolink.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Shutter/blast_door_autolink.yml @@ -5,8 +5,8 @@ parent: BlastDoor suffix: Autolink, Ext1 components: - - type: AutoLinkReceiver - channel: Ext1 + - type: AutoLinkReceiver + channel: Ext1 - type: entity @@ -14,16 +14,16 @@ parent: BlastDoorOpen suffix: Open, Autolink, Ext1 components: - - type: AutoLinkReceiver - channel: Ext1 + - type: AutoLinkReceiver + channel: Ext1 - type: entity id: BlastDoorExterior2 parent: BlastDoor suffix: Autolink, Ext2 components: - - type: AutoLinkReceiver - channel: Ext2 + - type: AutoLinkReceiver + channel: Ext2 - type: entity @@ -31,16 +31,16 @@ parent: BlastDoorOpen suffix: Open, Autolink, Ext2 components: - - type: AutoLinkReceiver - channel: Ext2 + - type: AutoLinkReceiver + channel: Ext2 - type: entity id: BlastDoorExterior3 parent: BlastDoor suffix: Autolink, Ext3 components: - - type: AutoLinkReceiver - channel: Ext3 + - type: AutoLinkReceiver + channel: Ext3 - type: entity @@ -48,28 +48,28 @@ parent: BlastDoorOpen suffix: Open, Autolink, Ext3 components: - - type: AutoLinkReceiver - channel: Ext3 + - type: AutoLinkReceiver + channel: Ext3 - type: entity id: BlastDoorBridge parent: BlastDoor suffix: Autolink, Bridge components: - - type: AccessReader - access: [["Command"]] - - type: AutoLinkReceiver - channel: Bridge + - type: AccessReader + access: [["Command"]] + - type: AutoLinkReceiver + channel: Bridge - type: entity id: BlastDoorBridgeOpen parent: BlastDoorOpen suffix: Open, Autolink, Bridge components: - - type: AccessReader - access: [["Command"]] - - type: AutoLinkReceiver - channel: Bridge + - type: AccessReader + access: [["Command"]] + - type: AutoLinkReceiver + channel: Bridge - type: entity id: BlastDoorEngineering @@ -116,14 +116,14 @@ parent: BlastDoor suffix: Autolink, Windows components: - - type: AutoLinkReceiver - channel: Windows + - type: AutoLinkReceiver + channel: Windows - type: entity id: BlastDoorWindowsOpen parent: BlastDoorOpen suffix: Open, Autolink, Windows components: - - type: AutoLinkReceiver - channel: Windows + - type: AutoLinkReceiver + channel: Windows diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index f86b6a7b84a..891f8a807cb 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -489,6 +489,9 @@ - type: Tag id: DoorElectronicsConfigurator # Used by ActivatableUIComponent on entity DoorElectronics to whitelist a tagged tool to open the UI. +- type: Tag + id: DoorRemoteWhitelist # Doors with this tag can be interacted with door remotes + - type: Tag id: DrinkBottle # Storage whitelist: BoozeDispenserEmpty, SodaDispenserEmpty From 7970c4a2e7165997fbb5f583d735b1fc458bf29a Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 28 Feb 2026 20:31:20 +0000 Subject: [PATCH 436/603] Automatic changelog update --- Resources/Changelog/Admin.yml | 7 +++++++ Resources/Changelog/Changelog.yml | 18 ++++++++---------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index 9999e146ce2..cc193c325c7 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -1668,5 +1668,12 @@ Entries: id: 203 time: '2026-02-21T20:22:27.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42988 +- author: Velken + changes: + - message: Admin door remote once again works through walls + type: Fix + id: 204 + time: '2026-02-28T20:30:12.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43063 Name: Admin Order: 3 diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 341f90e2c84..9a5d75e5d49 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,14 +1,4 @@ Entries: -- author: BoskiYourk, spanky_spanky - changes: - - message: The Head of Security now has an energy magnum, a self-charging multi-mode - laser revolver, in their locker instead of the energy shotgun. - type: Add - - message: The Warden now has the energy shotgun in their locker round-start. - type: Tweak - id: 9044 - time: '2025-10-07T16:05:07.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40615 - author: FungiFellow changes: - message: Cancer Mice now have unique ghost role entries. @@ -3995,3 +3985,11 @@ id: 9554 time: '2026-02-28T15:21:14.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43013 +- author: Velken + changes: + - message: Fixed door remotes working on fences, curtains and other entities they + shouldn't work on. + type: Fix + id: 9555 + time: '2026-02-28T20:30:12.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43063 From b3501bc3cad387fc6d142f0c13cdeb555223b840 Mon Sep 17 00:00:00 2001 From: IProduceWidgets <107586145+IProduceWidgets@users.noreply.github.com> Date: Sat, 28 Feb 2026 16:26:06 -0500 Subject: [PATCH 437/603] Revenants cannot be stuck with plastic explosives (#42889) * no touchy! * Apply suggestion from @slarticodefast --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- Resources/Prototypes/Entities/Objects/Weapons/Bombs/plastic.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/plastic.yml b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/plastic.yml index b1bfdeef9a3..5c6e07ed9cf 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Bombs/plastic.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Bombs/plastic.yml @@ -15,6 +15,7 @@ blacklist: # can't stick it to other items components: - Item + - Spectral # special case for the rev since it can go incorporeal and ghost bomb you. Also, Idk, its like a ghost or something no touchy. - type: Damageable damageContainer: Inorganic - type: Destructible From 5d967bf6f150dfe9ef483a3cbb2aa6878c77acda Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 28 Feb 2026 21:39:54 +0000 Subject: [PATCH 438/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 9a5d75e5d49..2e2303594d8 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: FungiFellow - changes: - - message: Cancer Mice now have unique ghost role entries. - type: Tweak - id: 9045 - time: '2025-10-07T16:33:42.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40102 - author: FungiFellow changes: - message: Biosuits can now fit Gastanks in Suit Storage, the Security Biosuit can @@ -3993,3 +3986,10 @@ id: 9555 time: '2026-02-28T20:30:12.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43063 +- author: IProduceWidgets + changes: + - message: C4 no longer sticks to Revenants. + type: Tweak + id: 9556 + time: '2026-02-28T21:38:47.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42889 From 28ebad6621eccb54355bccf05d95df9714ded6e5 Mon Sep 17 00:00:00 2001 From: Hitlinemoss <209321380+Hitlinemoss@users.noreply.github.com> Date: Sat, 28 Feb 2026 16:51:47 -0500 Subject: [PATCH 439/603] Removed rollerskates & clown-outfit cargo bounties; reduce pancakes needed for pancake cargo bounty (#42899) * Removed rolerskate & clown-outfit cargo bounties; reduce pancakes needed for pancake cargo bounty * adjusted tag comments * forgot to temove rollerscates bounty item locale --- Resources/Locale/en-US/cargo/bounties.ftl | 7 +---- .../Prototypes/Catalog/Bounties/bounties.yml | 30 ++----------------- Resources/Prototypes/tags.yml | 4 +-- 3 files changed, 5 insertions(+), 36 deletions(-) diff --git a/Resources/Locale/en-US/cargo/bounties.ftl b/Resources/Locale/en-US/cargo/bounties.ftl index 636d8865c72..91669be403f 100644 --- a/Resources/Locale/en-US/cargo/bounties.ftl +++ b/Resources/Locale/en-US/cargo/bounties.ftl @@ -6,8 +6,6 @@ bounty-item-bread = Bread bounty-item-carp = Space carp bounty-item-carrot = Carrot bounty-item-carrot-fries = Carrot fries -bounty-item-clown-mask = Clown mask -bounty-item-clown-shoes = Clown shoes bounty-item-corn = Ear of corn bounty-item-crayon = Crayon bounty-item-cuban-carp = Cuban carp @@ -59,7 +57,6 @@ bounty-item-food = Meat food bounty-item-fruit = Fruit bounty-item-vegetable = Vegetable bounty-item-chili = Bowl of chili -bounty-item-rollerskates = Roller skates bounty-item-bedsheet = Bedsheet bounty-item-bandana = Bandana bounty-item-steak = Steak @@ -87,7 +84,6 @@ bounty-description-bread = Problems with central planning have led to bread pric bounty-description-carrot = After failing to watch instructional videos for proper welder safety, the salvage division on Station 15 has been blinded. Ship them some carrots so they can restore their eyesight. bounty-description-carrot-fries = Night sight can mean life or death! A shipment of carrot fries is the order. bounty-description-carp = Admiral Pavlov has gone on strike ever since Central Command confiscated her "pet." She is demanding a space carp as a replacement, dead or alive. -bounty-description-clown-costume = Due to a recent issue at a space carp petting zoo, we've unfortunately lost Bonobobonobo the Clown. Send us a new costume so the kids can see him once more. bounty-description-corn = After the recent destruction of Space Ohio, our corn imports are down 80%. Send us some so we can make up for it. bounty-description-crayon = Dr Jones's kid ate all our crayons again. Please send us yours. bounty-description-cuban-carp = To celebrate the birth of Castro XXVII, ship one cuban carp to CentComm. @@ -105,7 +101,7 @@ bounty-description-lime = After a heavy drinking session, Admiral Pastich develo bounty-description-lung = The pro-smoking league has been fighting to keep cigarettes on our stations for millennia. Unfortunately, their lungs aren't fighting so hard anymore. Send them some new ones. bounty-description-monkey-cube = Due to a recent genetics accident, Central Command is in serious need of monkeys. Your mission is to ship monkey cubes. bounty-description-mouse = Station 13 ran out of freeze-dried mice. Ship some fresh ones so their janitor doesn't go on strike. -bounty-description-pancake = Here at NanoTrasen we consider employees to be family. And you know what families love? Pancakes. Ship a baker's dozen. +bounty-description-pancake = Here at NanoTrasen we consider employees to be family. And you know what families love? Pancakes. Ship half a dozen. bounty-description-pen = We are hosting the intergalactic pen balancing competition. We need you to send us some standardized ball point pens. bounty-description-percussion = Due to a poorly timed barfight, the United Galaxy-wide Mixed Percussion Ensemble lost all of their instruments. Send them a new set so they can jam once more. bounty-description-pie = 3.14159? No! CentComm management wants edible pie! Ship a whole one. @@ -132,7 +128,6 @@ bounty-description-food = After the rat king invasion, a neighboring Unathi stat bounty-description-fruit = A heroic monkey helped the chaplain catch a troublemaker hiding in the chapel, and the crew wants to reward him for his good work. bounty-description-vegetable = The new chef is a vegetarian, and botany can't keep up with their demands. We need some additional veggies to help keep things stocked. bounty-description-chili = Today's the CentComm Chili Cookoff, and, well, a few of us forgot to make some. Please help cover for us. -bounty-description-rollerskates = CentComm Security is proposing a new strategy for helping officers win foot pursuits. Send them a pair so they can learn how bad an idea this is. bounty-description-bedsheet = Someone in Atmos keeps turning down the heater, and we're all shivering in our beds. Please send us some extra sheets to stay warm. bounty-description-bandana = Bzzzt... Transmission from prison planet OC-1001: We're... reorganizing our command structure. Send us some bandanas so we can tell gan- I mean, departments apart. bounty-description-steak = The vegetarian cook is refusing to make us anything with meat, and the lizards are getting restless. Can you smuggle us a few steaks to keep them happy? diff --git a/Resources/Prototypes/Catalog/Bounties/bounties.yml b/Resources/Prototypes/Catalog/Bounties/bounties.yml index 137a494674a..091d44cb7f8 100644 --- a/Resources/Prototypes/Catalog/Bounties/bounties.yml +++ b/Resources/Prototypes/Catalog/Bounties/bounties.yml @@ -81,22 +81,6 @@ tags: - Carp -- type: cargoBounty - id: BountyClownCostume - reward: 1700 - description: bounty-description-clown-costume - entries: - - name: bounty-item-clown-mask - amount: 1 - whitelist: - tags: - - ClownMask - - name: bounty-item-clown-shoes - amount: 1 - whitelist: - tags: - - ClownShoes - - type: cargoBounty id: BountyCorn reward: 10000 @@ -273,11 +257,11 @@ - type: cargoBounty id: BountyPancake - reward: 10000 + reward: 5000 description: bounty-description-pancake entries: - name: bounty-item-pancake - amount: 13 + amount: 6 whitelist: tags: - Pancake @@ -597,16 +581,6 @@ tags: - ChiliBowl -- type: cargoBounty - id: BountyRollerskates - reward: 900 - description: bounty-description-rollerskates - entries: - - name: bounty-item-rollerskates - whitelist: - components: - - Skates - - type: cargoBounty id: BountyBedsheet reward: 4100 diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index 891f8a807cb..ff8129d20e6 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -322,13 +322,13 @@ id: ClothMade # SpecialDigestible: OrganMothStomach. Storage whitelist: FoodBoxCloth - type: Tag - id: ClownMask # CargoBounty: BountyClownCostume. ConstructionGraph: Honker, BananaClownMask + id: ClownMask # ConstructionGraph: Honker, BananaClownMask - type: Tag id: ClownRecorder # ConstructionGraph: ClownHardsuit - type: Tag - id: ClownShoes # CargoBounty: BountyClownCostume. ConstructionGraph: Honker, BananaClownShoes + id: ClownShoes # ConstructionGraph: Honker, BananaClownShoes - type: Tag id: ClownSuit # ConstructionGraph: BananaClownJumpsuit From eab6b9cf1d01f41b4714e3e522461ceb941eb20b Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 28 Feb 2026 22:06:03 +0000 Subject: [PATCH 440/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 2e2303594d8..6e5c2c485c5 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,14 +1,4 @@ Entries: -- author: FungiFellow - changes: - - message: Biosuits can now fit Gastanks in Suit Storage, the Security Biosuit can - fit both Gastanks and Weapons - type: Add - - message: Security Biosuits Cost has been increased 800->1600 - type: Tweak - id: 9046 - time: '2025-10-07T18:22:07.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39888 - author: Hitlinemoss changes: - message: MRE wrappers are no longer twice as nutritious as the actual food within. @@ -3993,3 +3983,13 @@ id: 9556 time: '2026-02-28T21:38:47.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42889 +- author: Hitlinemoss + changes: + - message: The rollerskates and clown mask/shoes cargo bounties have been removed. + type: Remove + - message: The pancakes cargo bounty now requires half as many pancakes, but rewards + half as many spesos. + type: Tweak + id: 9557 + time: '2026-02-28T22:04:55.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42899 From 2e0875abeddab482da4daf9125d2e835b029ef1f Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Sun, 1 Mar 2026 00:53:33 +0100 Subject: [PATCH 441/603] Fix damagable mispredicts (#43080) fix --- Content.Shared/Damage/Systems/DamageableSystem.Events.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Content.Shared/Damage/Systems/DamageableSystem.Events.cs b/Content.Shared/Damage/Systems/DamageableSystem.Events.cs index fcb97763db0..c9cf625cbc2 100644 --- a/Content.Shared/Damage/Systems/DamageableSystem.Events.cs +++ b/Content.Shared/Damage/Systems/DamageableSystem.Events.cs @@ -207,13 +207,14 @@ private void DamageableHandleState(Entity ent, ref Componen ent.Comp.HealthBarThreshold = state.HealthBarThreshold; // Has the damage actually changed? - var delta = state.Damage - ent.Comp.Damage; + var newDamage = state.Damage.Clone(); + var delta = newDamage - ent.Comp.Damage; delta.TrimZeros(); if (delta.Empty) return; - ent.Comp.Damage = state.Damage; + ent.Comp.Damage = newDamage; OnEntityDamageChanged(ent, delta); } From 15e4b51a1166b2c9234bea134245a5f352f49130 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 1 Mar 2026 00:07:49 +0000 Subject: [PATCH 442/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 6e5c2c485c5..39cbb3e6bd0 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Hitlinemoss - changes: - - message: MRE wrappers are no longer twice as nutritious as the actual food within. - type: Fix - id: 9047 - time: '2025-10-07T19:36:32.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40761 - author: TrixxedHeart changes: - message: 'Added new markings for Vox: 3 new beak types, 2 beak markings, 1 overlay @@ -3993,3 +3986,10 @@ id: 9557 time: '2026-02-28T22:04:55.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42899 +- author: slarticodefast + changes: + - message: Fixed damage mispredicting. + type: Fix + id: 9558 + time: '2026-03-01T00:06:41.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43080 From b32e24b77080838afd2deed077f271429de0c49d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 1 Mar 2026 02:13:47 +0100 Subject: [PATCH 443/603] Update Credits (#43084) Co-authored-by: PJBot --- Resources/Credits/GitHub.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Credits/GitHub.txt b/Resources/Credits/GitHub.txt index f4bb66c1cdb..65c02cc3c19 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -0-Anon, 0leshe, 0tito, 0x6273, 11belowstudio, 12rabbits, 1337dakota, 13spacemen, 154942, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 27alaing, 2DSiggy, 3nderall, 4310v343k, 4dplanner, 5tickman, 612git, 778b, 96flo, aaron, abadaba695, Ablankmann, abregado, Absolute-Potato, Absotively, achookh, Acruid, ActiveMammmoth, actually-reb, ada-please, adamsong, Adeinitas, adm2play, Admiral-Obvious-001, adrian, Adrian16199, Ady4ik, Aearo-Deepwater, Aerocrux, Aeshus, Aexolott, Aexxie, africalimedrop, afrokada, AftrLite, AgentSmithRadio, Agoichi, ahandleman, Ahion, aiden, aidenkrz, Aidenkrz, Aisu9, ajcm, AJCM-git, AjexRose, Alekshhh, alexalexmax, alexkar598, AlexMorgan3817, alexum418, alexumandxgabriel08x, Alice4267, Alithsko, Alkheemist, alliephante, ALMv1, Alpaccalypse, Alpha-Two, AlphaQwerty, Altoids1, amatwiedle, amylizzle, Andre19926, Andrew-Fall, AndrewEyeke, AndrewFenriz, AndreyCamper, anri, Anzarot121, ApolloVector, Appiah, april-gras, ar4ill, Arcane-Waffle, archee1, ArchPigeon, ArchRBX, areitpog, Arendian, areyouconfused, arimah, Arkanic, ArkiveDev, armoks, Arteben, arthropodia, ArthurMousatov, ArtisticRoomba, artur, Artxmisery, ArZarLordOfMango, as334, AshBats, AsikKEsel, AsnDen, asperger-sind, aspiringLich, astriloqua, Atakku, Ataman, august-sun, AutoOtter, AverageNotDoingAnythingEnjoyer, avghdev, AwareFoxy, Awlod, Axionyxx, azloserbits, azzyisnothere, AzzyIsNotHere, B-Kirill, B3CKDOOR, baa14453, BackeTako, BadaBoomie, Bakke, BananaFlambe, Baptr0b0t, BarryNorfolk, BasedUser, bebr3ght, beck-thompson, beesterman, bellwetherlogic, ben, benbryant0, benev0, benjamin-burges, BGare, bhespiritu, bibbly, BigfootBravo, BIGZi0348, bingojohnson, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, blitzthesquishy, Blobadoodle, bloodrizer, Bloody2372, blueDev2, Boaz1111, BobdaBiscuit, BobTheSleder, boiled-water-tsar, Bokser815, bolantej, BombasterDS, Booblesnoot42, Boolean-Buckeye, botanySupremist, brainfood1183, BramvanZijp, Brandon-Huu, breeplayx3, BriBrooo, BRINGit34, brndd, bryce0110, BubblegumBlue, buletsponge, buntobaggins, buunie099, bvelliquette, BWTCK, byondfuckery, c0rigin, c4llv07e, CaasGit, Caconym27, Calecute, Callmore, Camdot, cammusubi, capnsockless, CaptainMaru, captainsqrbeard, Carbonhell, Carolyn3114, Carou02, carteblanche4me, catdotjs, catlord, Catofquestionableethics, CatTheSystem, CawsForConcern, CDWimmer, Centronias, Chaboricks, chairbender, chaisftw, Chaoticaa, Charlese2, charlie, chartman, ChaseFlorom, chavonadelal, Cheackraze, CheddaCheez, cheesePizza2, CheesePlated, Chief-Engineer, chillyconmor, christhirtle, chromiumboy, Chronophylos, Chubbicous, Chubbygummibear, Ciac32, ciaran, citrea, civilCornball, claustro305, Clement-O, cloudyias, clyf, Clyybber, CMDR-Piboy314, cnv41, coco, cohanna, Cohnway, Cojoke-dot, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, Compilatron144, CookieMasterT, coolboy911, CoolioDudio, coolmankid12345, Coolsurf6, cooperwallace, corentt, CormosLemming, CrafterKolyan, CraftyRenter, crazybrain23, Crazydave91920, CrazyPhantom779, creadth, CrigCrag, CroilBird, Crotalus, CrudeWax, cryals, CrzyPotato, cubixthree, cutemoongod, Cyberboss, d34d10cc, DaCookieCakes, DadeKuma, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, dan, dangerrevolution, daniel-cr, DanSAussieITS, Daracke, Darkie, DaturoDewitt, david, DawBla, Daxxi3, dch-GH, ddeegan, de0rix, Deahaka, dean, DEATHB4DEFEAT, Deatherd, deathride58, debugok, Decappi, Decortex, Deeeeja, deepdarkdepths, DeepwaterCreations, Deerstop, degradka, Delete69, deltanedas, DenisShvalov, DerbyX, derek, dersheppard, Deserty0, Detintinto, DevilishMilk, devinschubert14, dexlerxd, dffdff2423, DieselMohawk, DieselMohawkTheSequel, digitalic, Dimastra, dimmoon1, DinnerCalzone, DinoWattz, Disp-Dev, DisposableCrewmember42, dissidentbullet, DjfjdfofdjfjD, doc-michael, docnite, Doctor-Cpu, DogZeroX, dolgovmi, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, DR-DOCTOR-EVIL-EVIL, Dragonjspider, dragonryan06, drakewill-CRL, Drayff, dreamlyjack, DrEnzyme, dribblydrone, DrMelon, drongood12, DrSingh, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, DuckManZach, Duddino, dukevanity, duskyjay, Dutch-VanDerLinde, dvir001, dylanstrategie, dylanwhittingham, Dynexust, Easypoller, echo, EchoOfNothing, eclips_e, eden077, EEASAS, Efruit, efzapa, Ekkosangen, ElectroSR, elsie, elthundercloud, Elysium206, emberwinters, Emisse, emmafornash, EmoGarbage404, Endecc, EnrichedCaramel, Entvari, eoineoineoin, ephememory, eris, erohrs2, erorr404v1, Errant-4, ertanic, esguard, estacaoespacialpirata, eternally-confused, eugene, ewokswagger, exincore, exp111, f0x-n3rd, F1restar4, FacePluslll, Fahasor, FairlySadPanda, farrellka-dev, FATFSAAM2, Feluk6174, ficcialfaint, Fiftyllama, Fildrance, fillervk, FinnishPaladin, firenamefn, Firewars763, FirinMaLazors, Fishfish458, fl-oz, Flareguy, flashgnash, FlipBrooke, FluffiestFloof, FluffMe, FluidRock, flymo5678, foboscheshir, FoLoKe, fooberticus, ForestNoises, forgotmyotheraccount, forkeyboards, forthbridge, Fortune117, foxhorn, freeman2651, freeze2222, frobnic8, Froffy025, Fromoriss, froozigiusz, FrostMando, FrostRibbon, Fruitsalad, Funce, FungiFellow, FunkySphere, FunTust, Futuristic-OK, GalacticChimp, gamer3107, Gamewar360, gansulalan, GaussiArson, Gaxeer, gbasood, gcoremans, Geekyhobo, genderGeometries, GeneralGaws, Genkail, Gentleman-Bird, geraeumig, Ghagliiarghii, Git-Nivrak, githubuser508, GitHubUser53123, gituhabu, GlassEclipse, GnarpGnarp, GNF54, godisdeadLOL, goet, GoldenCan, Goldminermac, Golinth, golubgik, GoodWheatley, Gorox221, GR1231, gradientvera, graevy, GraniteSidewalk, GreaseMonk, greenrock64, GreyMario, GrownSamoyedDog, GTRsound, gusxyz, Gyrandola, h3half, hamurlik, Hanzdegloker, HappyRoach, happyrobot33, Hardly3D, harikattar, Hayden, he1acdvv, Hebi, Helix-ctrl, helm4142, Henry, HerCoyote23, Hi-Im-Shot, HighTechPuddle, Hitlinemoss, hiucko, hivehum, Hmeister-fake, Hmeister-real, Hobbitmax, hobnob, HoidC, Holinka4ever, holyssss, HoofedEar, Hoolny, hord-brayden, hoshizora-sayo, Hreno, Hrosts, htmlsystem, Huaqas, hubismal, Hugal31, Hyenh, hyperb1, hyperDelegate, i-justuser-i, iaada, iacore, IamVelcroboy, Ian321, icekot8, icesickleone, iczero, iglov, IgorAnt028, igorsaux, ike709, illersaver, Illiux, Ilushkins33, Ilya246, IlyaElDunaev, imatsoup, IMCB, impubbi, imrenq, imweax, indeano, Injazz, Insineer, insoPL, IntegerTempest, Interrobang01, Intoxicating-Innocence, IProduceWidgets, itsmethom, Itzbenz, iztokbajcar, Jackal298, Jackrost, JackRyd3r, jacksonzck, JackspajfMain, Jacktastic09, Jackw2As, jacob, jamessimo, janekvap-havok, Jark255, Jarmer123, Jaskanbe, JasperJRoth, jbox144, JCGWE30, JerryImMouse, jerryimmouse, Jessetriesagain, jessicamaybe, JesterX666, Jewelots, Jezithyr, jicksaw, JiimBob, JimGamemaster, jimmy12or, JIPDawg, jjtParadox, jkwookee, jmcb, JohnGinnane, johnjjohn, johnku1, Jophire, Jopogrechkin, joshepvodka, JpegOfAFrog, jproads, JrInventor05, Jrpl, jukereise, juliangiebel, JustArt1m, JustCone14, justdie12, justin, justintether, JustinTrotter, JustinWinningham, justtne, K-Dynamic, k3yw, Kadeo64, Kaga-404, kaiserbirch, KaiShibaa, kalane15, kalanosh, KamTheSythe, Kanashi-Panda, katzenminer, kbailey-git, Keelin, Keer-Sar, KEEYNy, keikiru, Kelrak, kerisargit, keronshb, KIBORG04, KieueCaprie, Kimpes, kin98, KingFroozy, kipdotnet, kira-er, kiri-yoshikage, Kirillcas, Kirus59, Kistras, Kit, Kit0vras, KittenColony, Kittygyat, klaypexx, kleinerstation13, Kmc2000, Ko4ergaPunk, kognise, kokoc9n, komunre, KonstantinAngelov, kontakt, korczoczek, koteq, kotobdev, Kowlin, KrasnoshchekovPavel, Krosus777, Krunklehorn, Kryyto, Kupie, kxvvv, Kyoth25f, kyupolaris, kzhanik, LaCumbiaDelCoronavirus, lajolico, Lamrr, lanedon, LankLTE, laok233, lapatison, larryrussian, lawdog4817, Lazzi0706, Le-Arctic-Fox, leahcat, leander-0, leonardo-dabepis, leonidussaks, leonsfriedrich, LeoSantich, LetterN, lettern, Level10Cybermancer, LEVELcat, lever1209, LevitatingTree, Lgibb18, lgruthes, liem161, LightVillet, lilazero, liltenhead, linkbro1, linkuyx, Litraxx, little-meow-meow, LittleBuilderJane, LittleNorthStar, LittleNyanCat, lizelive, ljm862, lmsnoise, localcc, lokachop, lolman360, Lomcastar, Lordbrandon12, LordCarve, LordEclipse, lucas, LucasTheDrgn, luckyshotpictures, LudwigVonChesterfield, luegamer, luizwritescode, LukaSlade, luminight, lunarcomets, Lusatia, Luxeator, lvvova1, Lyndomen, lyroth001, lyxcaster, lzimann, lzk228, M1tht1c, M3739, M4rchy-S, M87S, mac6na6na, MACMAN2003, Macoron, magicalus, magmodius, magnnusson, magnuscrowe, maland1, malchanceux, MaloTV, ManelNavola, manelnavola, Mangohydra, marboww, Markek1, MarkerWicker, marlyn, matt, Matz05, max, MaxNox7, maylokana, mdrkrg, MDuch369, meara1179, meganerobot, MehimoNemo, Mehnix, MeltedPixel, memeproof, MendaxxDev, Menshin, Mephisto72, MerrytheManokit, Mervill, metalgearsloth, MetalSage, MFMessage, mhamsterr, michaelcu, micheel665, mifia, mikeysaurus, MilenVolf, MilonPL, Minemoder5000, Minty642, minus1over12, Mirino97, mirrorcult, misandrie, MishaUnity, MissKay1994, MisterImp, MisterMecky, Mith-randalf, Mixelz, mjarduk, MjrLandWhale, mkanke-real, MLGTASTICa, mnva0, moderatelyaware, modern-nm, mohamedwidar, mokiros, momo, Moneyl, monotheonist, Moomoobeef, moony, Morb0, MossyGreySlope, mqole, mr-bo-jangles, Mr0maks, MrFippik, MrPersival, mrrobdemo, mtrs163, muburu, MureixloI, murolem, murphyneko, musicmanvr, MWKane, Myakot, Myctai, N3X15, nabegator, nails-n-tape, Nairodian, Naive817, NakataRin, namespace-Memory, Nannek, NazrinNya, neborsh, nekokiwa, neomoth, neutrino-laser, NickPowers43, nikitosych, nikthechampiongr, Nimfar11, ninruB, Nirnael, NIXC, nkokic, NkoKirkto, nmajask, noctyrnal, noelkathegod, noirogen, nok-ko, NonchalantNoob, NoobyLegion, Nopey, NoreUhh, not-gavnaed, notafet, notquitehadouken, notsodana, noudoit, noverd, Nox38, NuclearWinter, Nuggets219, nukashimika, nuke-haus, NULL882, nullarmo, nyeogmi, Nylux, Nyranu, Nyxilath, och-och, OctoRocket, Ohelig, OldDanceJacket, OliverOtter, onesch, OneZerooo0, OnsenCapy, OnyxTheBrave, opl-, Orange-Winds, OrangeMoronage9622, OrbitSystem07, Orsoniks, osjarw, Ostaf, othymer, OttoMaticode, Owai-Seek, packmore, PAFFhassoocks, paige404, paigemaeforrest, pali6, Palladinium, Pangogie, panzer-iv1, partyaddict, patrikturi, PaulRitter, pavlockblaine03, peccneck, Peptide90, peptron1, perryprog, PeterFuto, PetMudstone, pewter-wiz, PGrayCS, pgraycs, Pgriha, phantom-lily, pheenty, philingham, Phill101, Phooooooooooooooooooooooooooooooosphate, phunnyguy, PicklOH, PilgrimViis, Pill-U, pinkbat5, Piras314, Pireax, Pissachu, pissdemon, Pixel8-dev, PixeltheAertistContrib, PixelTheKermit, PJB3005, Plasmaguy, plinyvic, Plykiya, poeMota, pofitlo, pointer-to-null, Pok27, poklj, PolterTzi, PoorMansDreams, PopGamer45, portfiend, potato1234x, PotentiallyTom, PotRoastPiggy, Princess-Cheeseballs, ProfanedBane, Prole0, ProPandaBear, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykana, psykzz, PuceTint, pumkin69, PuroSlavKing, PursuitInAshes, Putnam3145, py01, Pyrovi, qrtDaniil, qrwas, Quantum-cross, quasr-9, quatre, QueerNB, QuietlyWhisper, qwerltaz, Radezolid, RadioMull, Radosvik, Radrark, Rainbeon, Rainfey, Raitononai, Ramlik, RamZ, randy10122, Rane, Ranger6012, Rapidgame7, ravage123321, rbertoche, RedBookcase, Redfire1331, Redict, RedlineTriad, redmushie, RednoWCirabrab, redspyy, ReeZer2, RemberBM, RemieRichards, RemTim, rene-descartes2021, Renlou, retequizzle, rewafflution, rhailrake, rhsvenson, rich-dunne, RieBi, riggleprime, RIKELOLDABOSS, rinary1, Rinkashikachi, riolume, rlebell33, RobbyTheFish, robinthedragon, robinthegirlthing, Rockdtben, Rohesie, rok-povsic, rokudara-sen, rolfero, RomanNovo, roryflowers, rosieposieeee, Roudenn, router, ruddygreat, rumaks-xyz, RumiTiger, Ruzihm, rwrv, S1rFl0, S1ss3l, Saakra, SabreML, Sadie-silly, saga3152, saintmuntzer, salarua, Salex08, sam, samgithubaccount, Samuka-C, SaphireLattice, SapphicOverload, sarahon, sativaleanne, SaveliyM360, sBasalto, ScalyChimp, ScarKy0, ScholarNZL, schrodinger71, scrato, Scribbles0, scrivoy, scruq445, scuffedjays, ScumbagDog, SeamLesss, Segonist, semensponge, sephtasm, ser1-1y, Serkket, sewerpig, SG6732, sh18rw, Shaddap1, ShadeAware, ShadowCommander, shadowtheprotogen546, shaeone, shampunj, shariathotpatrol, SharkSnake98, Shegare, shepardtothestars, shibechef, Siginanto, signalsender, SignalWalker, siigiil, silicon14wastaken, Silverfur-underscore, Simyon264, sirdragooon, Sirionaut, SirWarock, Sk1tch, SkaldetSkaeg, Skarletto, skeeka-dev, skrybl, Skybailey-dev, skye, Skyedra, SlamBamActionman, slarticodefast, Slava0135, sleepyyapril, slimmslamm, Slyfox333, Smugman, SnappingOpossum, snebl, snicket, sniperchance, Snowni, snowsignal, SolidSyn, SolidusSnek, solstar2, SomegnihT, SonarZeBat, SonicHDC, SoulFN, SoulSloth, Soundwavesghost, soupkilove, southbridge-fur, sowelipililimute, Soydium, SpaceLizard24, SpaceLizardSky, SpaceManiac, SpaceRox1244, SpaceyLady, Spangs04, spanky-spanky, Sparlight, spartak, SpartanKadence, spderman3333, SpeltIncorrectyl, Spessmann, SphiraI, SplinterGP, spoogemonster, sporekto, sporkyz, ssdaniel24, stalengd, stanberytrask, Stanislav4ix, StanTheCarpenter, starbuckss14, Stealthbomber16, steel, Steffo99, stellar-novas, stewie523, stomf, Stop-Signs, stopbreaking, stopka-html, StrawberryMoses, Stray-Pyramid, strO0pwafel, Strol20, StStevens, Subversionary, sunbear-dev, SuperGDPWYL, superjj18, Supernorn, SurrealShibe, SweetAplle, SweptWasTaken, SyaoranFox, Sybil, SYNCHRONIC, Synthestra, Szunti, t, Tainakov, takemysoult, taonewt, tap, TaralGit, Taran, taurie, Tayrtahn, tday93, teamaki, TeenSarlacc, TekuNut, telavivgamers, telyonok, temm1ie, TemporalOroboros, tentekal, terezi4real, Terraspark4941, texcruize, Tezzaide, TGODiamond, TGRCdev, tgrkzus, thanosdegraf, ThatGuyUSA, ThatOneGoblin25, thatrandomcanadianguy, TheArturZh, TheBlueYowie, thecopbennet, TheCze, TheDarkElites, thedraccx, TheEmber, theexetron, TheFlyingSentry, thefoty, TheGrimbeeper, TheIntoxicatedCat, thekilk, themias, theomund, TheProNoob678, TherapyGoth, ThereDrD0, TheSecondLord, TheShuEd, thetolbean, thevinter, TheWaffleJesus, Thinbug0, ThunderBear2006, timothyteakettle, TimrodDX, timurjavid, tin-man-tim, TiniestShark, Titian3, tk-a369, tkdrg, tmtmtl30, ToastEnjoyer, Toby222, TokenStyle, Tollhouse, Toly65, tom-leys, tomasalves8, Tomeno, Tonydatguy, topy, tornado-technology, TornadoTechnology, tosatur, TotallyLemon, ToxicSonicFan04, Tr1bute, travis-g-reid, treytipton, TriviaSolari, trixxedbit, TrixxedHeart, tropicalhibi, truepaintgit, Truoizys, Tryded, TsjipTsjip, tuchila-adi-bogdan, Tunguso4ka, TurboTrackerss14, TVK-04, tyashley, Tyler-IN, TytosB, Tyzemol, UbaserB, Uberration, ubis1, UBlueberry, uhbg, UKNOWH, UltimateJester, Unbelievable-Salmon, underscorex5, UnicornOnLSD, Unisol, Unkn0wnGh0st333, unusualcrow, Uriende, UristMcDorf, user424242420, Utmanarn, Vaaankas, valentfingerov, valquaint, Varen, Vasilis, VasilisThePikachu, veliebm, Velken, VelonacepsCalyxEggs, veprolet, VerinSenpai, veritable-calamity, Veritius, Vermidia, vero5123, verslebas, vexerot, vgskye, viceemargo, VigersRay, violet754, Visne, vitopigno, vitusveit, vlad, vlados1408, VMSolidus, vmzd, VoidMeticulous, voidnull000, volotomite, volundr-, Voomra, Vordenburg, vorkathbruh, Vortebo, vulppine, wachte1, wafehling, walksanatora, Warentan, WarMechanic, Watermelon914, weaversam8, wertanchik, whateverusername0, whatston3, widgetbeck, Will-Oliver-Br, Willhelm53, WilliamECrew, willicassi, Winkarst-cpu, wirdal, wixoaGit, WlarusFromDaSpace, Wolfkey-SomeoneElseTookMyUsername, Worldwaker, wrexbe, wtcwr68, xeri7, xkreksx, xprospero, xRiriq, xsainteer, YanehCheck, yathxyz, Ygg01, YotaXP, youarereadingthis, YoungThugSS14, Yousifb26, youtissoum, yunii, YuriyKiss, yuriykiss, zach-hill, Zadeon, Zalycon, zamp, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zero, ZeroDiamond, ZeWaka, zHonys, zionnBE, ZNixian, Zokkie, ZoldorfTheWizard, zonespace27, Zylofan, Zymem, zzylex +0-Anon, 0leshe, 0tito, 0x6273, 11belowstudio, 12rabbits, 1337dakota, 13spacemen, 154942, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 27alaing, 2DSiggy, 3nderall, 4310v343k, 4dplanner, 5tickman, 612git, 778b, 96flo, aaron, abadaba695, Ablankmann, abregado, Absolute-Potato, Absotively, achookh, Acruid, ActiveMammmoth, actually-reb, ada-please, adamsong, Adeinitas, adm2play, Admiral-Obvious-001, adrian, Adrian16199, Ady4ik, Aearo-Deepwater, Aerocrux, Aeshus, Aexolott, Aexxie, africalimedrop, afrokada, AftrLite, AgentSmithRadio, Agoichi, ahandleman, Ahion, aiden, Aidenkrz, aidenkrz, Aisu9, ajcm, AJCM-git, AjexRose, Alekshhh, alexalexmax, alexkar598, AlexMorgan3817, alexum418, alexumandxgabriel08x, Alice4267, Alithsko, Alkheemist, alliephante, ALMv1, Alpaccalypse, Alpha-Two, AlphaQwerty, Altoids1, amatwiedle, amylizzle, Andre19926, Andrew-Fall, AndrewEyeke, AndrewFenriz, AndreyCamper, anri, Anzarot121, ApolloVector, Appiah, april-gras, ar4ill, Arcane-Waffle, archee1, ArchPigeon, ArchRBX, areitpog, Arendian, areyouconfused, arimah, Arkanic, ArkiveDev, armoks, Arteben, arthropodia, ArthurMousatov, ArtisticRoomba, artur, Artxmisery, ArZarLordOfMango, as334, AshBats, AsikKEsel, AsnDen, asperger-sind, aspiringLich, astriloqua, Atakku, Ataman, august-sun, AutoOtter, AverageNotDoingAnythingEnjoyer, avghdev, AwareFoxy, Awlod, Axionyxx, azloserbits, AzzyIsNotHere, azzyisnothere, B-Kirill, B3CKDOOR, baa14453, BackeTako, BadaBoomie, Bakke, BananaFlambe, Baptr0b0t, BarryNorfolk, BasedUser, bebr3ght, beck-thompson, beesterman, bellwetherlogic, ben, benbryant0, benev0, benjamin-burges, BGare, bhespiritu, bibbly, BigfootBravo, BIGZi0348, bingojohnson, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, blitzthesquishy, Blobadoodle, bloodrizer, Bloody2372, blueDev2, Boaz1111, BobdaBiscuit, BobTheSleder, boiled-water-tsar, Bokser815, bolantej, BombasterDS, Booblesnoot42, Boolean-Buckeye, botanySupremist, brainfood1183, BramvanZijp, Brandon-Huu, breeplayx3, BriBrooo, BRINGit34, brndd, bryce0110, BubblegumBlue, buletsponge, buntobaggins, buunie099, bvelliquette, BWTCK, byondfuckery, c0rigin, c4llv07e, CaasGit, Caconym27, Calecute, Callmore, Camdot, cammusubi, capnsockless, CaptainMaru, captainsqrbeard, Carbonhell, Carolyn3114, Carou02, carteblanche4me, catdotjs, catlord, Catofquestionableethics, CatTheSystem, CawsForConcern, CDWimmer, Centronias, Chaboricks, chairbender, chaisftw, Chaoticaa, Charlese2, charlie, chartman, ChaseFlorom, chavonadelal, Cheackraze, CheddaCheez, cheesePizza2, CheesePlated, Chief-Engineer, chillyconmor, christhirtle, chromiumboy, Chronophylos, Chubbicous, Chubbygummibear, Ciac32, ciaran, citrea, civilCornball, claustro305, Clement-O, cloudyias, clyf, Clyybber, CMDR-Piboy314, cnv41, coco, cohanna, Cohnway, Cojoke-dot, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, Compilatron144, CookieMasterT, coolboy911, CoolioDudio, coolmankid12345, Coolsurf6, cooperwallace, corentt, CormosLemming, CrafterKolyan, CraftyRenter, crazybrain23, Crazydave91920, CrazyPhantom779, creadth, CrigCrag, CroilBird, Crotalus, CrudeWax, cryals, CrzyPotato, cubixthree, cutemoongod, Cyberboss, d34d10cc, DaCookieCakes, DadeKuma, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, dan, dangerrevolution, daniel-cr, DanSAussieITS, Daracke, Darkie, DaturoDewitt, david, DawBla, Daxxi3, dch-GH, ddeegan, de0rix, Deahaka, dean, DEATHB4DEFEAT, Deatherd, deathride58, debugok, Decappi, Decortex, Deeeeja, deepdarkdepths, DeepwaterCreations, Deerstop, degradka, Delete69, deltanedas, DenisShvalov, DerbyX, derek, dersheppard, Deserty0, Detintinto, DevilishMilk, devinschubert14, dexlerxd, dffdff2423, DieselMohawk, DieselMohawkTheSequel, digitalic, Dimastra, dimmoon1, DinnerCalzone, DinoWattz, Disp-Dev, DisposableCrewmember42, dissidentbullet, DjfjdfofdjfjD, doc-michael, docnite, Doctor-Cpu, DogZeroX, dolgovmi, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, DR-DOCTOR-EVIL-EVIL, Dragonjspider, dragonryan06, drakewill-CRL, Drayff, dreamlyjack, DrEnzyme, dribblydrone, DrMelon, drongood12, DrSingh, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, DuckManZach, Duddino, dukevanity, duskyjay, Dutch-VanDerLinde, dvir001, dylanstrategie, dylanwhittingham, Dynexust, Easypoller, echo, EchoOfNothing, eclips_e, eden077, EEASAS, Efruit, efzapa, Ekkosangen, ElectroSR, elsie, elthundercloud, Elysium206, emberwinters, Emisse, emmafornash, EmoGarbage404, Endecc, EnrichedCaramel, Entvari, eoineoineoin, ephememory, eris, erohrs2, erorr404v1, Errant-4, ertanic, esguard, estacaoespacialpirata, eternally-confused, eugene, ewokswagger, exincore, exp111, f0x-n3rd, F1restar4, FacePluslll, Fahasor, FairlySadPanda, farrellka-dev, FATFSAAM2, Feluk6174, ficcialfaint, Fiftyllama, Fildrance, fillervk, FinnishPaladin, firenamefn, Firewars763, FirinMaLazors, Fishfish458, fl-oz, Flareguy, flashgnash, FlipBrooke, FluffiestFloof, FluffMe, FluidRock, flymo5678, foboscheshir, FoLoKe, fooberticus, ForestNoises, forgotmyotheraccount, forkeyboards, forthbridge, Fortune117, foxhorn, freeman2651, freeze2222, frobnic8, Froffy025, Fromoriss, froozigiusz, FrostMando, FrostRibbon, Fruitsalad, Funce, FungiFellow, FunkySphere, FunTust, Futuristic-OK, GalacticChimp, gamer3107, Gamewar360, gansulalan, GaussiArson, Gaxeer, gbasood, gcoremans, Geekyhobo, genderGeometries, GeneralGaws, Genkail, Gentleman-Bird, geraeumig, Ghagliiarghii, Git-Nivrak, githubuser508, GitHubUser53123, gituhabu, GlassEclipse, GnarpGnarp, GNF54, godisdeadLOL, goet, GoldenCan, Goldminermac, Golinth, golubgik, GoodWheatley, Gorox221, GR1231, gradientvera, graevy, GraniteSidewalk, GreaseMonk, greenrock64, GreyMario, GrownSamoyedDog, GTRsound, gusxyz, Gyrandola, h3half, hamurlik, Hanzdegloker, HappyRoach, happyrobot33, Hardly3D, harikattar, Hayden, he1acdvv, Hebi, Helix-ctrl, helm4142, Henry, HerCoyote23, Hi-Im-Shot, HighTechPuddle, Hitlinemoss, hiucko, hivehum, Hmeister-fake, Hmeister-real, Hobbitmax, hobnob, HoidC, Holinka4ever, holyssss, HoofedEar, Hoolny, hord-brayden, hoshizora-sayo, Hreno, Hrosts, htmlsystem, Huaqas, hubismal, Hugal31, Hyenh, hyperb1, hyperDelegate, hyphenationc, i-justuser-i, iaada, iacore, IamVelcroboy, Ian321, icekot8, icesickleone, iczero, iglov, IgorAnt028, igorsaux, ike709, illersaver, Illiux, Ilushkins33, Ilya246, IlyaElDunaev, imatsoup, IMCB, impubbi, imrenq, imweax, indeano, Injazz, Insineer, insoPL, IntegerTempest, Interrobang01, Intoxicating-Innocence, IProduceWidgets, itsmethom, Itzbenz, iztokbajcar, Jackal298, Jackrost, JackRyd3r, jacksonzck, JackspajfMain, Jacktastic09, Jackw2As, jacob, jamessimo, janekvap-havok, Jark255, Jarmer123, Jaskanbe, JasperJRoth, jbox144, JCGWE30, jerryimmouse, JerryImMouse, Jessetriesagain, jessicamaybe, JesterX666, Jewelots, Jezithyr, jicksaw, JiimBob, JimGamemaster, jimmy12or, JIPDawg, jjtParadox, jkwookee, jmcb, JohnGinnane, johnjjohn, johnku1, Jophire, Jopogrechkin, joshepvodka, JpegOfAFrog, jproads, JrInventor05, Jrpl, jukereise, juliangiebel, JustArt1m, JustCone14, justdie12, justin, justintether, JustinTrotter, JustinWinningham, justtne, K-Dynamic, k3yw, Kadeo64, Kaga-404, kaiserbirch, KaiShibaa, kalane15, kalanosh, KamTheSythe, Kanashi-Panda, katzenminer, kbailey-git, Keelin, Keer-Sar, KEEYNy, keikiru, Kelrak, kerisargit, keronshb, KeTuFaisPiKiNut, KIBORG04, KieueCaprie, Kimpes, kin98, KingFroozy, kipdotnet, kira-er, kiri-yoshikage, Kirillcas, Kirus59, Kistras, Kit, Kit0vras, KittenColony, Kittygyat, klaypexx, kleinerstation13, Kmc2000, Ko4ergaPunk, kognise, kokoc9n, komunre, KonstantinAngelov, kontakt, korczoczek, koteq, kotobdev, Kowlin, KrasnoshchekovPavel, Krosus777, Krunklehorn, Kryyto, Kupie, kxvvv, Kyoth25f, kyupolaris, kzhanik, LaCumbiaDelCoronavirus, lajolico, Lamrr, lanedon, LankLTE, laok233, lapatison, larryrussian, lawdog4817, Lazzi0706, Le-Arctic-Fox, leahcat, leander-0, leonardo-dabepis, leonidussaks, leonsfriedrich, LeoSantich, LetterN, lettern, Level10Cybermancer, LEVELcat, lever1209, LevitatingTree, Lgibb18, lgruthes, liem161, LightVillet, lilazero, liltenhead, linkbro1, linkuyx, Litraxx, little-meow-meow, LittleBuilderJane, LittleNorthStar, LittleNyanCat, lizelive, ljm862, lmsnoise, localcc, lokachop, lolman360, Lomcastar, Lordbrandon12, LordCarve, LordEclipse, lucas, LucasTheDrgn, luckyshotpictures, LudwigVonChesterfield, luegamer, luizwritescode, LukaSlade, luminight, lunarcomets, Lusatia, Luxeator, lvvova1, Lyndomen, lyroth001, lyxcaster, lzimann, lzk228, M1tht1c, M3739, M4rchy-S, M87S, mac6na6na, MACMAN2003, Macoron, magicalus, magmodius, magnnusson, magnuscrowe, maland1, malchanceux, MaloTV, manelnavola, ManelNavola, Mangohydra, marboww, Markek1, MarkerWicker, marlyn, matt, Matz05, max, MaxNox7, maylokana, mdrkrg, MDuch369, meara1179, meganerobot, MehimoNemo, Mehnix, MeltedPixel, memeproof, MendaxxDev, Menshin, Mephisto72, MerrytheManokit, Mervill, metalgearsloth, MetalSage, MFMessage, mhamsterr, michaelcu, micheel665, mifia, mikeysaurus, MilenVolf, MilonPL, Minemoder5000, Minty642, minus1over12, Mirino97, mirrorcult, misandrie, MishaUnity, MissKay1994, MisterImp, MisterMecky, Mith-randalf, Mixelz, mjarduk, MjrLandWhale, mkanke-real, MLGTASTICa, mnva0, moderatelyaware, modern-nm, mohamedwidar, mokiros, momo, Moneyl, monotheonist, Moomoobeef, moony, Morb0, MossyGreySlope, mqole, mr-bo-jangles, Mr0maks, MrFippik, MrPersival, mrrobdemo, mtrs163, muburu, MureixloI, murolem, murphyneko, musicmanvr, MWKane, Myakot, Myctai, N3X15, nabegator, nails-n-tape, Nairodian, Naive817, NakataRin, namespace-Memory, Nannek, NazrinNya, neborsh, nekokiwa, neomoth, neutrino-laser, NickPowers43, nikitosych, nikthechampiongr, Nimfar11, ninruB, Nirnael, NIXC, nkokic, NkoKirkto, nmajask, noctyrnal, noelkathegod, noirogen, nok-ko, NonchalantNoob, NoobyLegion, Nopey, NoreUhh, not-gavnaed, notafet, notquitehadouken, notsodana, noudoit, noverd, Nox38, NuclearWinter, Nuggets219, nukashimika, nuke-haus, NULL882, nullarmo, nyeogmi, Nylux, Nyranu, Nyxilath, och-och, OctoRocket, Ohelig, OldDanceJacket, OliverOtter, onesch, OneZerooo0, OnsenCapy, OnyxTheBrave, opl-, Orange-Winds, OrangeMoronage9622, OrbitSystem07, Orsoniks, osjarw, Ostaf, othymer, OttoMaticode, Owai-Seek, packmore, PAFFhassoocks, paige404, paigemaeforrest, pali6, Palladinium, Pangogie, panzer-iv1, partyaddict, patrikturi, PaulRitter, pavlockblaine03, peccneck, Peptide90, peptron1, perryprog, PeterFuto, PetMudstone, pewter-wiz, pgraycs, PGrayCS, Pgriha, phantom-lily, pheenty, philingham, Phill101, Phooooooooooooooooooooooooooooooosphate, phunnyguy, PicklOH, PilgrimViis, Pill-U, pinkbat5, Piras314, Pireax, Pissachu, pissdemon, Pixel8-dev, PixeltheAertistContrib, PixelTheKermit, PJB3005, Plasmaguy, plinyvic, Plykiya, poeMota, pofitlo, pointer-to-null, Pok27, poklj, PolterTzi, PoorMansDreams, PopGamer45, portfiend, potato1234x, PotentiallyTom, PotRoastPiggy, Princess-Cheeseballs, ProfanedBane, Prole0, ProPandaBear, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykana, psykzz, PuceTint, pumkin69, PuroSlavKing, PursuitInAshes, Putnam3145, py01, Pyrovi, qrtDaniil, qrwas, Quantum-cross, quasr-9, quatre, QueerNB, QuietlyWhisper, qwerltaz, Radezolid, RadioMull, Radosvik, Radrark, Rainbeon, Rainfey, Raitononai, Ramlik, RamZ, randy10122, Rane, Ranger6012, Rapidgame7, ravage123321, rbertoche, RedBookcase, Redfire1331, Redict, RedlineTriad, redmushie, RednoWCirabrab, Redrover1760, redspyy, ReeZer2, RemberBM, RemieRichards, RemTim, rene-descartes2021, Renlou, retequizzle, rewafflution, rhailrake, rhsvenson, rich-dunne, RieBi, riggleprime, RIKELOLDABOSS, rinary1, Rinkashikachi, riolume, rlebell33, RobbyTheFish, robinthedragon, robinthegirlthing, Rockdtben, Rohesie, rok-povsic, rokudara-sen, rolfero, RomanNovo, roryflowers, rosieposieeee, Roudenn, router, ruddygreat, rumaks-xyz, RumiTiger, Ruzihm, rwrv, S1rFl0, S1ss3l, Saakra, SabreML, Sadie-silly, saga3152, saintmuntzer, salarua, Salex08, sam, samgithubaccount, Samuka-C, SaphireLattice, SapphicOverload, sarahon, sativaleanne, SaveliyM360, sBasalto, ScalyChimp, ScarKy0, ScholarNZL, schrodinger71, scrato, Scribbles0, scrivoy, scruq445, scuffedjays, ScumbagDog, SeamLesss, Segonist, semensponge, sephtasm, ser1-1y, Serkket, sewerpig, SG6732, sh18rw, Shaddap1, ShadeAware, ShadowCommander, shadowtheprotogen546, shaeone, shampunj, shariathotpatrol, SharkSnake98, Shegare, shepardtothestars, shibechef, Siginanto, signalsender, SignalWalker, siigiil, silicon14wastaken, Silverfur-underscore, Simyon264, sirdragooon, Sirionaut, SirWarock, Sk1tch, SkaldetSkaeg, Skarletto, skeeka-dev, skrybl, Skybailey-dev, skye, Skyedra, SlamBamActionman, slarticodefast, Slava0135, sleepyyapril, slimmslamm, Slyfox333, Smugman, SnappingOpossum, snebl, snicket, sniperchance, Snowni, snowsignal, SolidSyn, SolidusSnek, solstar2, SomegnihT, SonarZeBat, SonicHDC, SoulFN, SoulSloth, Soundwavesghost, soupkilove, southbridge-fur, sowelipililimute, Soydium, SpaceLizard24, SpaceLizardSky, SpaceManiac, SpaceRox1244, SpaceyLady, Spangs04, spanky-spanky, Sparlight, spartak, SpartanKadence, spderman3333, SpeltIncorrectyl, Spessmann, SphiraI, SplinterGP, spoogemonster, sporekto, sporkyz, ssdaniel24, stalengd, stanberytrask, Stanislav4ix, StanTheCarpenter, starbuckss14, Stealthbomber16, steel, Steffo99, stellar-novas, stewie523, stomf, Stop-Signs, stopbreaking, stopka-html, StrawberryMoses, Stray-Pyramid, strO0pwafel, Strol20, StStevens, Subversionary, sunbear-dev, SuperGDPWYL, superjj18, Supernorn, SurrealShibe, SweetAplle, SweptWasTaken, SyaoranFox, Sybil, SYNCHRONIC, Synthestra, Szunti, t, Tainakov, takemysoult, taonewt, tap, TaralGit, Taran, taurie, Tayrtahn, tday93, teamaki, TeenSarlacc, TekuNut, telavivgamers, telyonok, temm1ie, TemporalOroboros, tentekal, terezi4real, Terraspark4941, texcruize, Tezzaide, TGODiamond, TGRCdev, tgrkzus, thanosdegraf, ThatGuyUSA, ThatOneGoblin25, thatrandomcanadianguy, TheArturZh, TheBlueYowie, thecopbennet, TheCze, TheDarkElites, thedraccx, TheEmber, theexetron, TheFlyingSentry, thefoty, TheGrimbeeper, TheIntoxicatedCat, thekilk, themias, theomund, TheProNoob678, TherapyGoth, ThereDrD0, TheSecondLord, TheShuEd, thetolbean, thevinter, TheWaffleJesus, Thinbug0, ThunderBear2006, timothyteakettle, TimrodDX, timurjavid, tin-man-tim, TiniestShark, Titian3, tk-a369, tkdrg, tmtmtl30, ToastEnjoyer, Toby222, TokenStyle, Tollhouse, Toly65, tom-leys, tomasalves8, Tomeno, Tonydatguy, topy, tornado-technology, TornadoTechnology, tosatur, TotallyLemon, ToxicSonicFan04, Tr1bute, travis-g-reid, treytipton, TriviaSolari, trixxedbit, TrixxedHeart, tropicalhibi, truepaintgit, Truoizys, Tryded, TsjipTsjip, tuchila-adi-bogdan, Tunguso4ka, TurboTrackerss14, TVK-04, tyashley, Tyler-IN, TytosB, Tyzemol, UbaserB, Uberration, ubis1, UBlueberry, uhbg, UKNOWH, UltimateJester, Unbelievable-Salmon, underscorex5, UnicornOnLSD, Unisol, Unkn0wnGh0st333, unusualcrow, Uriende, UristMcDorf, user424242420, Utmanarn, Vaaankas, valentfingerov, valquaint, Varen, Vasilis, VasilisThePikachu, veliebm, Velken, VelonacepsCalyxEggs, veprolet, VerinSenpai, veritable-calamity, Veritius, Vermidia, vero5123, verslebas, vexerot, vgskye, viceemargo, VigersRay, violet754, Visne, vitopigno, vitusveit, vlad, vlados1408, VMSolidus, vmzd, VoidMeticulous, voidnull000, volotomite, volundr-, Voomra, Vordenburg, vorkathbruh, Vortebo, vulppine, wachte1, wafehling, walksanatora, Warentan, WarMechanic, Watermelon914, weaversam8, wertanchik, whateverusername0, whatston3, widgetbeck, Will-Oliver-Br, Willhelm53, WilliamECrew, willicassi, Winkarst-cpu, wirdal, wixoaGit, WlarusFromDaSpace, Wolfkey-SomeoneElseTookMyUsername, Worldwaker, wrexbe, wtcwr68, xeri7, xkreksx, xprospero, xRiriq, xsainteer, YanehCheck, yathxyz, Ygg01, YotaXP, youarereadingthis, YoungThugSS14, Yousifb26, youtissoum, yunii, YuriyKiss, yuriykiss, zach-hill, Zadeon, Zalycon, zamp, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zero, ZeroDiamond, ZeWaka, zHonys, zionnBE, ZNixian, Zokkie, ZoldorfTheWizard, zonespace27, Zylofan, Zymem, zzylex From 2011b520ea3c061433e18a30565c50b8300c676a Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Sun, 1 Mar 2026 04:13:22 +0100 Subject: [PATCH 444/603] use proxy methods in EntitySystems (#43083) use proxy methods --- .../Clothing/Systems/OutfitSystem.cs | 20 +++++++++---------- .../Light/EntitySystems/PoweredLightSystem.cs | 2 +- .../SprayPainter/SprayPainterSystem.cs | 2 +- .../Systems/ChangelingDevourSystem.cs | 4 ++-- .../Systems/ChangelingTransformSystem.cs | 2 +- .../Eye/Blinding/Systems/EyeClosingSystem.cs | 2 +- .../SelectableComponentAdderSystem.cs | 6 +++--- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/Content.Server/Clothing/Systems/OutfitSystem.cs b/Content.Server/Clothing/Systems/OutfitSystem.cs index 19d6e3d3f6e..b1efbffd60c 100644 --- a/Content.Server/Clothing/Systems/OutfitSystem.cs +++ b/Content.Server/Clothing/Systems/OutfitSystem.cs @@ -26,7 +26,7 @@ public sealed class OutfitSystem : EntitySystem public bool SetOutfit(EntityUid target, string gear, Action? onEquipped = null, bool unremovable = false) { - if (!EntityManager.TryGetComponent(target, out InventoryComponent? inventoryComponent)) + if (!TryComp(target, out InventoryComponent? inventoryComponent)) return false; if (!_prototypeManager.TryIndex(gear, out var startingGear)) @@ -35,7 +35,7 @@ public bool SetOutfit(EntityUid target, string gear, Action(target).Coordinates); + var equipmentEntity = Spawn(gearStr, Comp(target).Coordinates); if (slot.Name == "id" && - EntityManager.TryGetComponent(equipmentEntity, out PdaComponent? pdaComponent) && - EntityManager.TryGetComponent(pdaComponent.ContainedId, out var id)) + TryComp(equipmentEntity, out PdaComponent? pdaComponent) && + TryComp(pdaComponent.ContainedId, out var id)) { - id.FullName = EntityManager.GetComponent(target).EntityName; + id.FullName = Comp(target).EntityName; } _invSystem.TryEquip(target, equipmentEntity, slot.Name, silent: true, force: true, inventory: inventoryComponent); @@ -68,12 +68,12 @@ public bool SetOutfit(EntityUid target, string gear, Action(target).Coordinates; + var coords = Comp(target).Coordinates; foreach (var prototype in startingGear.Inhand) { - var inhandEntity = EntityManager.SpawnEntity(prototype, coords); + var inhandEntity = Spawn(prototype, coords); _handSystem.TryPickup(target, inhandEntity, checkActionBlocker: false, handsComp: handsComponent); } } @@ -90,7 +90,7 @@ public bool SetOutfit(EntityUid target, string gear, Action(target, out var comp) + profile ??= TryComp(target, out var comp) ? HumanoidCharacterProfile.DefaultWithSpecies(comp.Species, comp.Sex) : new HumanoidCharacterProfile(); // Try to get the user's existing loadout for the role diff --git a/Content.Server/Light/EntitySystems/PoweredLightSystem.cs b/Content.Server/Light/EntitySystems/PoweredLightSystem.cs index d1c231e4903..e2306f9461f 100644 --- a/Content.Server/Light/EntitySystems/PoweredLightSystem.cs +++ b/Content.Server/Light/EntitySystems/PoweredLightSystem.cs @@ -46,7 +46,7 @@ private void OnMapInit(EntityUid uid, PoweredLightComponent light, MapInitEvent // TODO: Use ContainerFill dog if (light.HasLampOnSpawn != null) { - var entity = EntityManager.SpawnEntity(light.HasLampOnSpawn, EntityManager.GetComponent(uid).Coordinates); + var entity = Spawn(light.HasLampOnSpawn, Comp(uid).Coordinates); ContainerSystem.Insert(entity, light.LightBulbContainer); } // need this to update visualizers diff --git a/Content.Server/SprayPainter/SprayPainterSystem.cs b/Content.Server/SprayPainter/SprayPainterSystem.cs index a4c631db411..1216d9758a8 100644 --- a/Content.Server/SprayPainter/SprayPainterSystem.cs +++ b/Content.Server/SprayPainter/SprayPainterSystem.cs @@ -110,7 +110,7 @@ private void OnFloorAfterInteract(Entity ent, ref AfterIn _charges.TryUseCharges((ent, charges), ent.Comp.DecalChargeCost); - AdminLogger.Add(LogType.CrayonDraw, LogImpact.Low, $"{EntityManager.ToPrettyString(args.User):user} painted a {ent.Comp.SelectedDecal}"); + AdminLogger.Add(LogType.CrayonDraw, LogImpact.Low, $"{ToPrettyString(args.User):user} painted a {ent.Comp.SelectedDecal}"); } /// diff --git a/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs b/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs index 3e6ad03e19d..926f19632d4 100644 --- a/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs +++ b/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs @@ -174,7 +174,7 @@ private void OnDevourWindup(Entity ent, ref Changelin var curTime = _timing.CurTime; args.Handled = true; - if (!EntityManager.EntityExists(ent.Comp.CurrentDevourSound)) + if (!Exists(ent.Comp.CurrentDevourSound)) _audio.Stop(ent.Comp.CurrentDevourSound!); if (args.Cancelled) @@ -225,7 +225,7 @@ private void OnDevourConsume(Entity ent, ref Changeli if (target == null) return; - if (EntityManager.EntityExists(ent.Comp.CurrentDevourSound)) + if (Exists(ent.Comp.CurrentDevourSound)) _audio.Stop(ent.Comp.CurrentDevourSound!); if (args.Cancelled) diff --git a/Content.Shared/Changeling/Systems/ChangelingTransformSystem.cs b/Content.Shared/Changeling/Systems/ChangelingTransformSystem.cs index 60015c79c9b..9e4b1d4d03c 100644 --- a/Content.Shared/Changeling/Systems/ChangelingTransformSystem.cs +++ b/Content.Shared/Changeling/Systems/ChangelingTransformSystem.cs @@ -141,7 +141,7 @@ private void OnSuccessfulTransform(Entity ent, { args.Handled = true; - if (EntityManager.EntityExists(ent.Comp.CurrentTransformSound)) + if (Exists(ent.Comp.CurrentTransformSound)) _audio.Stop(ent.Comp.CurrentTransformSound); if (args.Cancelled) diff --git a/Content.Shared/Eye/Blinding/Systems/EyeClosingSystem.cs b/Content.Shared/Eye/Blinding/Systems/EyeClosingSystem.cs index 68ccf4a6b81..4402e93b522 100644 --- a/Content.Shared/Eye/Blinding/Systems/EyeClosingSystem.cs +++ b/Content.Shared/Eye/Blinding/Systems/EyeClosingSystem.cs @@ -119,7 +119,7 @@ public void UpdateEyesClosable(Entity blindable) var ev = new GetBlurEvent(blindable.Comp.EyeDamage); RaiseLocalEvent(blindable.Owner, ev); - if (EntityManager.TryGetComponent(blindable, out var eyelids) && !eyelids.NaturallyCreated) + if (TryComp(blindable, out var eyelids) && !eyelids.NaturallyCreated) return; if (ev.Blur < BlurryVisionComponent.MaxMagnitude || ev.Blur >= blindable.Comp.MaxDamage) diff --git a/Content.Shared/SelectableComponentAdder/SelectableComponentAdderSystem.cs b/Content.Shared/SelectableComponentAdder/SelectableComponentAdderSystem.cs index 29619904d70..1bed1506455 100644 --- a/Content.Shared/SelectableComponentAdder/SelectableComponentAdderSystem.cs +++ b/Content.Shared/SelectableComponentAdder/SelectableComponentAdderSystem.cs @@ -58,7 +58,7 @@ private bool CheckDisabled(EntityUid target, ComponentRegistry? registry, Compon // disable the verb if all components already exist foreach (var component in registry) { - if (!EntityManager.HasComponent(target, Factory.GetComponent(component.Key).GetType())) + if (!HasComp(target, Factory.GetComponent(component.Key).GetType())) return false; } return true; @@ -69,7 +69,7 @@ private bool CheckDisabled(EntityUid target, ComponentRegistry? registry, Compon // disable the verb if any component already exists. foreach (var component in registry) { - if (EntityManager.HasComponent(target, Factory.GetComponent(component.Key).GetType())) + if (HasComp(target, Factory.GetComponent(component.Key).GetType())) return true; } return false; @@ -85,7 +85,7 @@ private void AddComponents(EntityUid target, ComponentRegistry? registry, Compon foreach (var component in registry) { - if (EntityManager.HasComponent(target, Factory.GetComponent(component.Key).GetType()) && + if (HasComp(target, Factory.GetComponent(component.Key).GetType()) && setting is ComponentExistsSetting.Skip or ComponentExistsSetting.Block) continue; From 5add0838b16250dd5ae8ec1d02e2b99428536531 Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Sun, 1 Mar 2026 15:29:25 +0100 Subject: [PATCH 445/603] fix topicals (#43087) --- Content.Shared/Medical/Healing/HealingSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Medical/Healing/HealingSystem.cs b/Content.Shared/Medical/Healing/HealingSystem.cs index fa27b4688e4..21bdd077d7a 100644 --- a/Content.Shared/Medical/Healing/HealingSystem.cs +++ b/Content.Shared/Medical/Healing/HealingSystem.cs @@ -130,7 +130,7 @@ private bool HasDamage(Entity healing, Entity 0) + if (damageableDict.TryGetValue(type.Key, out var amount) && amount > 0) { return true; } From 855979f4c848db6d9ea5b2b4c1d00c684530ae1b Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 1 Mar 2026 14:42:40 +0000 Subject: [PATCH 446/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 39cbb3e6bd0..f2e64ee18ef 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,15 +1,4 @@ Entries: -- author: TrixxedHeart - changes: - - message: 'Added new markings for Vox: 3 new beak types, 2 beak markings, 1 overlay - 6 head, and 3 chest markings.' - type: Add - - message: Fixed sprite layering issue where a Vox's back leg would appear on top - of their front leg in side sprites. - type: Fix - id: 9048 - time: '2025-10-07T23:14:11.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40569 - author: Hitlinemoss changes: - message: Bartenders with a significant amount of playtime can now select a golden @@ -3993,3 +3982,10 @@ id: 9558 time: '2026-03-01T00:06:41.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43080 +- author: slarticodefast + changes: + - message: Fixed topicals. + type: Fix + id: 9559 + time: '2026-03-01T14:41:29.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43087 From 1008bc5c063567b2123d8351fad834cf47f28225 Mon Sep 17 00:00:00 2001 From: AffleWaffle <135037883+AffleWaffle@users.noreply.github.com> Date: Sun, 1 Mar 2026 18:45:38 +0100 Subject: [PATCH 447/603] APC building doAfter fix (#43089) Add doAfter to APC construction --- .../Prototypes/Recipes/Construction/Graphs/utilities/APC.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/APC.yml b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/APC.yml index 394a999826b..56258e52897 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/utilities/APC.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/utilities/APC.yml @@ -8,6 +8,7 @@ steps: - material: Steel amount: 3 + doAfter: 2 - node: apcFrame entity: APCFrame From d6eb03c8025e53797b5e3874af30e36fb09f3faa Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 1 Mar 2026 17:59:29 +0000 Subject: [PATCH 448/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index f2e64ee18ef..46b10db67f6 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Hitlinemoss - changes: - - message: Bartenders with a significant amount of playtime can now select a golden - shaker in the loadout menu. - type: Add - id: 9049 - time: '2025-10-07T23:37:43.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40762 - author: SlamBamActionman changes: - message: The Energy Shotgun no longer has a self-recharge or wide fire mode, but @@ -3989,3 +3981,10 @@ id: 9559 time: '2026-03-01T14:41:29.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43087 +- author: AffleWaffle + changes: + - message: APCs take 2 seconds to build instead of instantly appearing. + type: Tweak + id: 9560 + time: '2026-03-01T17:58:20.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43089 From 9c28c1923bf66cf001497543a7f46360002c0472 Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Sun, 1 Mar 2026 19:07:09 +0100 Subject: [PATCH 449/603] [STAGING] Innate prying tooltip (#43081) Update alerts.ftl --- Resources/Locale/en-US/alerts/alerts.ftl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Locale/en-US/alerts/alerts.ftl b/Resources/Locale/en-US/alerts/alerts.ftl index eda52d37dc0..e0f21de9220 100644 --- a/Resources/Locale/en-US/alerts/alerts.ftl +++ b/Resources/Locale/en-US/alerts/alerts.ftl @@ -124,4 +124,4 @@ alerts-stealthy-name = Pickpocketing alerts-stealthy-desc = Whether you are currently pickpocketing. Click to toggle. alerts-prying-name = Prying -alerts-prying-desc = You can innately pry doors open. +alerts-prying-desc = You can innately pry doors open using alternative interaction. From 59e7886c8d42b4450d5fcc0a676d65bd185e4218 Mon Sep 17 00:00:00 2001 From: Sir Warock <67167466+SirWarock@users.noreply.github.com> Date: Sun, 1 Mar 2026 19:18:56 +0100 Subject: [PATCH 450/603] Fixed Mining Hardsuit Helmet Name + Added Internals to Crates (#43072) * One commit ops * Removed extra line --- Resources/Prototypes/Catalog/Fills/Crates/cargo.yml | 8 ++++++-- Resources/Prototypes/Catalog/Fills/Crates/salvage.yml | 5 +++-- .../Entities/Clothing/Head/hardsuit-helmets.yml | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Resources/Prototypes/Catalog/Fills/Crates/cargo.yml b/Resources/Prototypes/Catalog/Fills/Crates/cargo.yml index 4a7edeb041a..178c5ae43d4 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/cargo.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/cargo.yml @@ -6,8 +6,12 @@ components: - type: EntityTableContainerFill containers: - entity_storage: - id: ClothingOuterHardsuitLuxury + entity_storage: !type:AllSelector + children: + - id: ClothingOuterHardsuitLuxury + - id: ClothingMaskBreath + - id: OxygenTankFilled + - id: NitrogenTankFilled - type: entity parent: CrateGenericSteel diff --git a/Resources/Prototypes/Catalog/Fills/Crates/salvage.yml b/Resources/Prototypes/Catalog/Fills/Crates/salvage.yml index 97d45ef7426..8e97d530c5c 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/salvage.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/salvage.yml @@ -174,8 +174,8 @@ - type: entity parent: CrateGenericSteel id: CrateSalvageHardsuit - name: salvage hardsuit crate - description: Contains a salvage hardsuit, breath mask, and oxygen tank. + name: mining hardsuit crate + description: Contains a mining hardsuit, breath mask, and one tank of both oxygen and nitrogen. components: - type: EntityTableContainerFill containers: @@ -184,6 +184,7 @@ - id: ClothingOuterHardsuitSalvage - id: ClothingMaskBreath - id: OxygenTankFilled + - id: NitrogenTankFilled - type: entity parent: CrateGenericSteel diff --git a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml index 0e9600daa4d..cc8761ca62d 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml @@ -196,7 +196,7 @@ - type: entity parent: [ ClothingHeadHardsuitBase, ClothingHeadSuitWithLightBase ] id: ClothingHeadHelmetHardsuitSalvage - name: salvage hardsuit helmet + name: mining hardsuit helmet description: A special helmet designed for work in a hazardous, low pressure environment. Has reinforced plating for wildlife encounters and dual floodlights. components: - type: Sprite From 5136e984312c141c5505874b59f4909d20cd599a Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 1 Mar 2026 18:32:20 +0000 Subject: [PATCH 451/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 46b10db67f6..ae3429cbc44 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: SlamBamActionman - changes: - - message: The Energy Shotgun no longer has a self-recharge or wide fire mode, but - charges faster in rechargers. - type: Tweak - id: 9050 - time: '2025-10-08T02:51:21.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40757 - author: archee1 changes: - message: Space Cobras no longer attack Space Adders automatically. @@ -3988,3 +3980,14 @@ id: 9560 time: '2026-03-01T17:58:20.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43089 +- author: SirWarock + changes: + - message: Added a nitrogen tank to the mining hardsuit crate! + type: Tweak + - message: Added internals to the luxury mining hardsuit crate! + type: Tweak + - message: Fixed the mining hardsuit helmet name and the mining hardsuit crate name! + type: Fix + id: 9561 + time: '2026-03-01T18:31:12.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43072 From 38a31af8265fdb517f45a53bd33c7b69f9c6e4d5 Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Sun, 1 Mar 2026 13:26:03 -0500 Subject: [PATCH 452/603] Fix "Unknown messageId" warnings from ID cards (#42886) * Empty string bad * Preserve existing behavior --- Content.Shared/Access/Components/IdCardComponent.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Access/Components/IdCardComponent.cs b/Content.Shared/Access/Components/IdCardComponent.cs index edcd35d4458..f4105e3ecd8 100644 --- a/Content.Shared/Access/Components/IdCardComponent.cs +++ b/Content.Shared/Access/Components/IdCardComponent.cs @@ -27,7 +27,7 @@ public sealed partial class IdCardComponent : Component private string? _jobTitle; [Access(typeof(SharedIdCardSystem), typeof(SharedPdaSystem), typeof(SharedAgentIdCardSystem), Other = AccessPermissions.ReadWriteExecute)] - public string? LocalizedJobTitle { set => _jobTitle = value; get => _jobTitle ?? Loc.GetString(JobTitle ?? string.Empty); } + public string? LocalizedJobTitle { set => _jobTitle = value; get => _jobTitle ?? (JobTitle != null ? Loc.GetString(JobTitle) : string.Empty); } /// /// The state of the job icon rsi. From df8e1511965f62bd22a58c253838d06abf151236 Mon Sep 17 00:00:00 2001 From: Pharaz4 <143268074+Pharaz4@users.noreply.github.com> Date: Mon, 2 Mar 2026 06:25:04 +1100 Subject: [PATCH 453/603] yaml format nitpick (#43074) * minor nitpick * fix mistake * clean up --- .../Catalog/Fills/Lockers/engineer.yml | 28 +++++++++---------- .../Entities/Objects/Misc/fluff_lights.yml | 1 + 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/engineer.yml b/Resources/Prototypes/Catalog/Fills/Lockers/engineer.yml index 6a85befab18..8e8474ebbf4 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/engineer.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/engineer.yml @@ -92,35 +92,33 @@ children: - !type:NestedSelector tableId: FillWelderSupplies - rolls: !type:ConstantNumberSelector - value: 3 + rolls: 3 - !type:NestedSelector tableId: FillWelderSuppliesMask - rolls: !type:ConstantNumberSelector - value: 3 + rolls: 3 - type: entityTable id: FillWelderSupplies table: !type:GroupSelector children: - - id: ClothingHeadHatWelding - - id: ClothingHeadHatWeldingMaskFlame - weight: 0.25 - - id: ClothingHeadHatWeldingMaskFlameBlue - weight: 0.25 - - id: ClothingHeadHatWeldingMaskPainted + - id: WelderMini + - id: Welder + - id: WelderIndustrial weight: 0.25 + - id: WelderIndustrialAdvanced + weight: 0.05 - type: entityTable id: FillWelderSuppliesMask table: !type:GroupSelector children: - - id: WelderMini - - id: Welder - - id: WelderIndustrial + - id: ClothingHeadHatWelding + - id: ClothingHeadHatWeldingMaskFlame + weight: 0.25 + - id: ClothingHeadHatWeldingMaskFlameBlue + weight: 0.25 + - id: ClothingHeadHatWeldingMaskPainted weight: 0.25 - - id: WelderIndustrialAdvanced - weight: 0.05 - type: entity id: LockerAtmosphericsFilledHardsuit diff --git a/Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml b/Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml index db3fc4961ee..56c3b475c48 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml @@ -248,6 +248,7 @@ materialComposition: Glass: 500 Steel: 200 + - type: entity name: broken floodlight id: FloodlightBroken From 877070139f95df1225ccacb07211bb1c849b6f94 Mon Sep 17 00:00:00 2001 From: B_Kirill <153602297+B-Kirill@users.noreply.github.com> Date: Mon, 2 Mar 2026 06:12:12 +1000 Subject: [PATCH 454/603] Fix AtmosDebugOverlay being always active (#43073) * Fix AtmosDebugOverlay being always active * review --- .../EntitySystems/AtmosDebugOverlaySystem.cs | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/Content.Client/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs b/Content.Client/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs index b63d274bdca..32e82922418 100644 --- a/Content.Client/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs +++ b/Content.Client/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs @@ -10,7 +10,9 @@ namespace Content.Client.Atmos.EntitySystems [UsedImplicitly] internal sealed class AtmosDebugOverlaySystem : SharedAtmosDebugOverlaySystem { - public readonly Dictionary TileData = new(); + [Dependency] private readonly IOverlayManager _overlayManager = default!; + + public readonly Dictionary TileData = []; // Configuration set by debug commands and used by AtmosDebugOverlay { /// Value source for display @@ -25,6 +27,8 @@ internal sealed class AtmosDebugOverlaySystem : SharedAtmosDebugOverlaySystem public bool CfgCBM = false; // } + private AtmosDebugOverlay? _overlay; + public override void Initialize() { base.Initialize(); @@ -34,10 +38,6 @@ public override void Initialize() SubscribeNetworkEvent(HandleAtmosDebugOverlayDisableMessage); SubscribeLocalEvent(OnGridRemoved); - - var overlayManager = IoCManager.Resolve(); - if(!overlayManager.HasOverlay()) - overlayManager.AddOverlay(new AtmosDebugOverlay(this)); } private void OnGridRemoved(GridRemovalEvent ev) @@ -51,19 +51,25 @@ private void OnGridRemoved(GridRemovalEvent ev) private void HandleAtmosDebugOverlayMessage(AtmosDebugOverlayMessage message) { TileData[GetEntity(message.GridId)] = message; + + if (_overlay is not null) + return; + + _overlay = new AtmosDebugOverlay(this); + _overlayManager.AddOverlay(_overlay); } private void HandleAtmosDebugOverlayDisableMessage(AtmosDebugOverlayDisableMessage ev) { TileData.Clear(); + RemoveOverlay(); } public override void Shutdown() { base.Shutdown(); - var overlayManager = IoCManager.Resolve(); - if (overlayManager.HasOverlay()) - overlayManager.RemoveOverlay(); + + RemoveOverlay(); } public void Reset(RoundRestartCleanupEvent ev) @@ -75,6 +81,15 @@ public bool HasData(EntityUid gridId) { return TileData.ContainsKey(gridId); } + + private void RemoveOverlay() + { + if (_overlay is null) + return; + + _overlayManager.RemoveOverlay(_overlay); + _overlay = null; + } } internal enum AtmosDebugOverlayMode : byte From 2de2d7604f3c4f398342bc07caa97c130b626450 Mon Sep 17 00:00:00 2001 From: Jessica M Date: Sun, 1 Mar 2026 12:14:23 -0800 Subject: [PATCH 455/603] Only one puddle sparkle please (#43086) * only one sparkle please :3 * address review --- Content.Shared/Fluids/SharedPuddleSystem.Evaporation.cs | 3 ++- Content.Shared/Fluids/SharedPuddleSystem.cs | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Content.Shared/Fluids/SharedPuddleSystem.Evaporation.cs b/Content.Shared/Fluids/SharedPuddleSystem.Evaporation.cs index 0ba1c15122a..44124539190 100644 --- a/Content.Shared/Fluids/SharedPuddleSystem.Evaporation.cs +++ b/Content.Shared/Fluids/SharedPuddleSystem.Evaporation.cs @@ -71,7 +71,8 @@ private void TickEvaporation() if (puddleSolution.Volume == FixedPoint2.Zero) { // Spawn a *sparkle* - SpawnAttachedTo(evaporation.EvaporationEffect, Transform(uid).Coordinates); + if (_net.IsServer) // TODO: Change this once we have entity spawn prediction V2 + SpawnAttachedTo(evaporation.EvaporationEffect, Transform(uid).Coordinates); PredictedQueueDel(uid); } diff --git a/Content.Shared/Fluids/SharedPuddleSystem.cs b/Content.Shared/Fluids/SharedPuddleSystem.cs index e676eaf68c2..56ba5e84417 100644 --- a/Content.Shared/Fluids/SharedPuddleSystem.cs +++ b/Content.Shared/Fluids/SharedPuddleSystem.cs @@ -21,6 +21,7 @@ using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using Robust.Shared.Map; +using Robust.Shared.Network; using Robust.Shared.Prototypes; using Robust.Shared.Timing; @@ -41,6 +42,7 @@ public abstract partial class SharedPuddleSystem : EntitySystem [Dependency] private readonly SpeedModifierContactsSystem _speedModContacts = default!; [Dependency] private readonly StepTriggerSystem _stepTrigger = default!; [Dependency] private readonly TileFrictionController _tile = default!; + [Dependency] private readonly INetManager _net = default!; private ProtoId[] _standoutReagents = []; From 19c8221e8b0f8a87683be4aa0eca43fcca56f45f Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Sun, 1 Mar 2026 17:28:46 -0500 Subject: [PATCH 456/603] Add borg construction interaction test (#42359) * Add test of borg construction. * Return Validated when in validation mode. * Update Content.IntegrationTests/Tests/Construction/Interaction/BorgConstruction.cs --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- .../Interaction/BorgConstruction.cs | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 Content.IntegrationTests/Tests/Construction/Interaction/BorgConstruction.cs diff --git a/Content.IntegrationTests/Tests/Construction/Interaction/BorgConstruction.cs b/Content.IntegrationTests/Tests/Construction/Interaction/BorgConstruction.cs new file mode 100644 index 00000000000..b7a21419a4b --- /dev/null +++ b/Content.IntegrationTests/Tests/Construction/Interaction/BorgConstruction.cs @@ -0,0 +1,63 @@ +using Content.IntegrationTests.Tests.Interaction; +using Robust.Shared.Prototypes; + +namespace Content.IntegrationTests.Tests.Construction.Interaction; + +public sealed class BorgConstruction : InteractionTest +{ + /// + /// ID of the base endoskeleton to which parts will be added. + /// + private static readonly EntProtoId BorgEndoskeletonId = "CyborgEndoskeleton"; + + /// + /// ID of the entity that should be produced when construction is complete. + /// + private static readonly EntProtoId BorgCompleteId = "BorgChassisSelectable"; + + /// + /// ID of the Flashes needed for borg construction. + /// + private static readonly EntProtoId FlashId = "Flash"; + + /// + /// IDs of all the parts that need to be added to the endoskeleton to complete construction. + /// + private static readonly EntProtoId[] Parts = + [ + "TorsoBorg", + "LightHeadBorg", + "LeftArmBorg", + "RightArmBorg", + "LeftLegBorg", + "RightLegBorg", + ]; + + /// + /// Spawns an endoskeleton and makes the player add each part to it by interacting with the parts in hand. + /// Verifies that the correct entity is produced as a result. + /// + [Test] + public async Task ConstructBorg() + { + // Spawn the endoskeleton frame. + await SpawnTarget(BorgEndoskeletonId); + + // Have the player add each part needed for construction. + foreach (var part in Parts) + { + await InteractUsing(part); + } + + // Finish construction. + await Interact( + Cable, + FlashId, + FlashId, + Screw + ); + + // Construction should have finished - make sure to the resulting entity is correct. + AssertPrototype(BorgCompleteId, Target); + } +} From 07f24e7daa2862ba80c74bfe4fa5fd3ad0e06f8e Mon Sep 17 00:00:00 2001 From: Velken <8467292+Velken@users.noreply.github.com> Date: Sun, 1 Mar 2026 20:16:18 -0300 Subject: [PATCH 457/603] Fix door remotes 2 (#43094) * fix door remotes * admeme * typo * review * revert door changes * tag * fix highsec and windoors --- .../Entities/Structures/Doors/Airlocks/highsec.yml | 2 ++ .../Doors/Windoors/base_structurewindoors.yml | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml index 98be00450f7..579e2a761e4 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/highsec.yml @@ -131,3 +131,5 @@ tags: - HighSecDoor # This tag is used to nagivate the Airlock construction graph. It's needed because this construction graph is shared between Airlock, AirlockGlass, and HighSecDoor + - DoorRemoteWhitelist + # This tag is used by door remotes to allow or not a door remote to normally be able to interact with a door diff --git a/Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml b/Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml index 307a0724c1f..2eede48cfd1 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Windoors/base_structurewindoors.yml @@ -175,6 +175,10 @@ - type: StaticPrice price: 150 - type: PryUnpowered + - type: Tag + tags: + - DoorRemoteWhitelist + # This tag is used by door remotes to allow or not a door remote to normally be able to interact with a door - type: entity id: BaseSecureWindoor @@ -249,6 +253,8 @@ tags: - SecureWindoor # This tag is used to nagivate the Airlock construction graph. It's needed because the construction graph is shared between Airlock, AirlockGlass, and HighSecDoor + - DoorRemoteWhitelist + # This tag is used by door remotes to allow or not a door remote to normally be able to interact with a door #Plasma Windoors @@ -394,6 +400,8 @@ tags: - SecurePlasmaWindoor # This tag is used to nagivate the Airlock construction graph. It's needed because the construction graph is shared between Airlock, AirlockGlass, and HighSecDoor + - DoorRemoteWhitelist + # This tag is used by door remotes to allow or not a door remote to normally be able to interact with a door #Uranium Windoors @@ -539,3 +547,5 @@ tags: - SecureUraniumWindoor # This tag is used to nagivate the Airlock construction graph. It's needed because the construction graph is shared between Airlock, AirlockGlass, and HighSecDoor + - DoorRemoteWhitelist + # This tag is used by door remotes to allow or not a door remote to normally be able to interact with a door From 0673373afc335a74ad412d67c716ff5cd829b40d Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 1 Mar 2026 23:29:25 +0000 Subject: [PATCH 458/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index ae3429cbc44..6b7b42f9d5b 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: archee1 - changes: - - message: Space Cobras no longer attack Space Adders automatically. - type: Fix - id: 9051 - time: '2025-10-08T11:30:29.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/37424 - author: aada changes: - message: Buckets are now destructible. @@ -3991,3 +3984,10 @@ id: 9561 time: '2026-03-01T18:31:12.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43072 +- author: Velken + changes: + - message: Fixed door remote not working on high security doors and windoors + type: Fix + id: 9562 + time: '2026-03-01T23:28:18.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43094 From 18149dbb3b7f0beadc572069ea91a682aebf3e93 Mon Sep 17 00:00:00 2001 From: Pok <113675512+Pok27@users.noreply.github.com> Date: Mon, 2 Mar 2026 23:32:34 +0200 Subject: [PATCH 459/603] Support for melee weapon user overrides (#39633) * redefining-using-melee-weapons * animation bug fix * review * fix merge --- .../Melee/MeleeWeaponSystem.Effects.cs | 40 +++++++++++++++---- .../Weapons/Melee/MeleeWeaponSystem.cs | 16 ++++++-- .../Events/GetMeleeAttackerEntityEvent.cs | 14 +++++++ .../Melee/Events/PrepareMeleeLungeEvent.cs | 29 ++++++++++++++ .../Weapons/Melee/SharedMeleeWeaponSystem.cs | 20 +++++++--- 5 files changed, 102 insertions(+), 17 deletions(-) create mode 100644 Content.Shared/Weapons/Melee/Events/GetMeleeAttackerEntityEvent.cs create mode 100644 Content.Shared/Weapons/Melee/Events/PrepareMeleeLungeEvent.cs diff --git a/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs b/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs index 0bccd5b1b39..0de2e7eae68 100644 --- a/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs +++ b/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs @@ -2,6 +2,7 @@ using Content.Client.Animations; using Content.Client.Weapons.Melee.Components; using Content.Shared.Weapons.Melee; +using Content.Shared.Weapons.Melee.Events; using Robust.Client.Animations; using Robust.Client.GameObjects; using Robust.Shared.Animations; @@ -35,7 +36,25 @@ public override void DoLunge(EntityUid user, EntityUid weapon, Angle angle, Vect if (!_xformQuery.TryGetComponent(user, out var userXform) || userXform.MapID == MapId.Nullspace) return; - var animationUid = Spawn(animation, userXform.Coordinates); + // Allow systems to override how visuals are spawned/tracked. + var prepare = new PrepareMeleeLungeEvent(user, weapon, angle, localPos, animation) + { + SpawnAtMap = false, + DisableTracking = false + }; + RaiseLocalEvent(user, ref prepare); + + EntityUid animationUid; + var (mapPos, mapRot) = TransformSystem.GetWorldPositionRotation(userXform); + if (prepare.SpawnAtMap) + { + var spawnCoords = new MapCoordinates(mapPos, userXform.MapID); + animationUid = Spawn(animation, spawnCoords); + } + else + { + animationUid = Spawn(animation, userXform.Coordinates); + } if (!TryComp(animationUid, out var sprite) || !TryComp(animationUid, out var arcComponent)) @@ -62,7 +81,8 @@ public override void DoLunge(EntityUid user, EntityUid weapon, Angle angle, Vect length = (1 / meleeWeaponComponent.AttackRate) * 0.6f; offset = meleeWeaponComponent.AnimationOffset; } - _sprite.SetRotation((animationUid, sprite), localPos.ToWorldAngle()); + var baseVec = prepare.SpawnAtMap ? (mapRot - userXform.LocalRotation).RotateVec(localPos) : localPos; + _sprite.SetRotation((animationUid, sprite), baseVec.ToWorldAngle()); var xform = _xformQuery.GetComponent(animationUid); TrackUserComponent track; @@ -70,21 +90,27 @@ public override void DoLunge(EntityUid user, EntityUid weapon, Angle angle, Vect switch (arcComponent.Animation) { case WeaponArcAnimation.Slash: - track = EnsureComp(animationUid); - track.User = user; + if (!prepare.DisableTracking) + { + track = EnsureComp(animationUid); + track.User = user; + } _animation.Play(animationUid, GetSlashAnimation((animationUid, sprite), angle, spriteRotation, length, offset), SlashAnimationKey); if (arcComponent.Fadeout) _animation.Play(animationUid, GetFadeAnimation(sprite, length * 0.5f, length + 0.15f), FadeAnimationKey); break; case WeaponArcAnimation.Thrust: - track = EnsureComp(animationUid); - track.User = user; + if (!prepare.DisableTracking) + { + track = EnsureComp(animationUid); + track.User = user; + } _animation.Play(animationUid, GetThrustAnimation((animationUid, sprite), offset, spriteRotation, length), ThrustAnimationKey); if (arcComponent.Fadeout) _animation.Play(animationUid, GetFadeAnimation(sprite, length * 0.5f, length + 0.15f), FadeAnimationKey); break; case WeaponArcAnimation.None: - var (mapPos, mapRot) = TransformSystem.GetWorldPositionRotation(userXform); + (mapPos, mapRot) = TransformSystem.GetWorldPositionRotation(userXform); var worldPos = mapPos + (mapRot - userXform.LocalRotation).RotateVec(localPos); var newLocalPos = Vector2.Transform(worldPos, TransformSystem.GetInvWorldMatrix(xform.ParentUid)); TransformSystem.SetLocalPositionNoLerp(animationUid, newLocalPos, xform); diff --git a/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs b/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs index 420e18748f0..8c17b049b73 100644 --- a/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs +++ b/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs @@ -183,18 +183,26 @@ private void ClientHeavyAttack(EntityUid user, EntityCoordinates coordinates, En return; } + // Resolve attacker and use its transform for ray origin and ignore. + var attacker = user; + var getAttackerEv = new GetMeleeAttackerEntityEvent(); + RaiseLocalEvent(user, ref getAttackerEv); + if (getAttackerEv.Handled && getAttackerEv.Attacker != null) + attacker = getAttackerEv.Attacker.Value; + var targetMap = TransformSystem.ToMapCoordinates(coordinates); + var attackerXform = _xformQuery.TryGetComponent(attacker, out var aXform) ? aXform : userXform; - if (targetMap.MapId != userXform.MapID) + if (targetMap.MapId != attackerXform.MapID) return; - var userPos = TransformSystem.GetWorldPosition(userXform); - var direction = targetMap.Position - userPos; + var attackerPos = TransformSystem.GetWorldPosition(attackerXform); + var direction = targetMap.Position - attackerPos; var distance = MathF.Min(component.Range, direction.Length()); // This should really be improved. GetEntitiesInArc uses pos instead of bounding boxes. // Server will validate it with InRangeUnobstructed. - var entities = GetNetEntityList(ArcRayCast(userPos, direction.ToWorldAngle(), component.Angle, distance, userXform.MapID, user).ToList()); + var entities = GetNetEntityList(ArcRayCast(attackerPos, direction.ToWorldAngle(), component.Angle, distance, attackerXform.MapID, attacker).ToList()); RaisePredictiveEvent(new HeavyAttackEvent(GetNetEntity(meleeUid), entities.GetRange(0, Math.Min(MaxTargets, entities.Count)), GetNetCoordinates(coordinates))); } diff --git a/Content.Shared/Weapons/Melee/Events/GetMeleeAttackerEntityEvent.cs b/Content.Shared/Weapons/Melee/Events/GetMeleeAttackerEntityEvent.cs new file mode 100644 index 00000000000..9559a14421d --- /dev/null +++ b/Content.Shared/Weapons/Melee/Events/GetMeleeAttackerEntityEvent.cs @@ -0,0 +1,14 @@ +using Robust.Shared.Serialization; + +namespace Content.Shared.Weapons.Melee.Events; + +/// +/// Raised to get the effective melee attacker entity (for range/origin/animation), +/// which may differ from the controlling user. +/// +[ByRefEvent] +public struct GetMeleeAttackerEntityEvent +{ + public EntityUid? Attacker; + public bool Handled; +} diff --git a/Content.Shared/Weapons/Melee/Events/PrepareMeleeLungeEvent.cs b/Content.Shared/Weapons/Melee/Events/PrepareMeleeLungeEvent.cs new file mode 100644 index 00000000000..e70b1223d16 --- /dev/null +++ b/Content.Shared/Weapons/Melee/Events/PrepareMeleeLungeEvent.cs @@ -0,0 +1,29 @@ +using System.Numerics; +using Robust.Shared.GameObjects; +using Robust.Shared.Maths; + +namespace Content.Shared.Weapons.Melee.Events; + +/// +/// Raised on the attacker before spawning melee lunge visuals on the client. +/// Systems may adjust the visual behavior by setting the flags below. +/// +[ByRefEvent] +public record struct PrepareMeleeLungeEvent( + EntityUid User, + EntityUid Weapon, + Angle Angle, + Vector2 LocalPos, + string? Animation) +{ + /// + /// If true, spawns the visual at world MapCoordinates (based on the user's current world position) + /// instead of at the user's local coordinates. Use this to avoid inheriting user rotation. + /// + public bool SpawnAtMap; + + /// + /// If true, disables tracking the visual to the user (i.e., removes the TrackUser behavior). + /// + public bool DisableTracking; +} diff --git a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs index 6f4b078fe21..14d8d9162bd 100644 --- a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs +++ b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs @@ -408,6 +408,13 @@ private bool AttemptAttack(EntityUid user, EntityUid weaponUid, MeleeWeaponCompo break; } + // Resolve effective melee attacker. + var attacker = user; + var getAttackerEv = new GetMeleeAttackerEntityEvent(); + RaiseLocalEvent(user, ref getAttackerEv); + if (getAttackerEv.Handled && getAttackerEv.Attacker != null) + attacker = getAttackerEv.Attacker.Value; + // Windup time checked elsewhere. var fireRate = TimeSpan.FromSeconds(1f / GetAttackRate(weaponUid, user, weapon)); var swings = 0; @@ -452,17 +459,17 @@ private bool AttemptAttack(EntityUid user, EntityUid weaponUid, MeleeWeaponCompo switch (attack) { case LightAttackEvent light: - DoLightAttack(user, light, weaponUid, weapon, session); + DoLightAttack(attacker, light, weaponUid, weapon, session); animation = weapon.Animation; break; case DisarmAttackEvent disarm: - if (!DoDisarm(user, disarm, weaponUid, weapon, session)) + if (!DoDisarm(attacker, disarm, weaponUid, weapon, session)) return false; animation = weapon.Animation; break; case HeavyAttackEvent heavy: - if (!DoHeavyAttack(user, heavy, weaponUid, weapon, session)) + if (!DoHeavyAttack(attacker, heavy, weaponUid, weapon, session)) return false; animation = weapon.WideAnimation; @@ -471,7 +478,7 @@ private bool AttemptAttack(EntityUid user, EntityUid weaponUid, MeleeWeaponCompo throw new NotImplementedException(); } - DoLungeAnimation(user, weaponUid, weapon.Angle, TransformSystem.ToMapCoordinates(GetCoordinates(attack.Coordinates)), weapon.Range, animation); + DoLungeAnimation(attacker, weaponUid, weapon.Angle, TransformSystem.ToMapCoordinates(GetCoordinates(attack.Coordinates)), weapon.Range, animation); } var attackEv = new MeleeAttackEvent(weaponUid); @@ -593,6 +600,7 @@ private bool DoHeavyAttack(EntityUid user, HeavyAttackEvent ev, EntityUid meleeU if (targetMap.MapId != userXform.MapID) return false; + // Use the resolved attacker for positional calculations if available var userPos = TransformSystem.GetWorldPosition(userXform); var direction = targetMap.Position - userPos; var distance = Math.Min(component.Range, direction.Length()); @@ -736,9 +744,9 @@ private bool DoHeavyAttack(EntityUid user, HeavyAttackEvent ev, EntityUid meleeU _meleeSound.PlayHitSound(target, user, GetHighestDamageSound(appliedDamage, _protoManager), hitEvent.HitSoundOverride, component); } - if (appliedDamage.GetTotal() > FixedPoint2.Zero) + if (appliedDamage.GetTotal() > FixedPoint2.Zero && TryComp(targets[0], out TransformComponent? targetXform)) { - DoDamageEffect(targets, user, Transform(targets[0])); + DoDamageEffect(targets, user, targetXform); } return true; From d9d0cd92ae49e51df8909e9b058e72e36c663805 Mon Sep 17 00:00:00 2001 From: deltanedas <39013340+deltanedas@users.noreply.github.com> Date: Tue, 3 Mar 2026 15:16:04 +0000 Subject: [PATCH 460/603] add nested entity effects+conditions (#42341) * add nested effect * add nested condition * move api to the main systems and improve effect guidebook text gen --------- Co-authored-by: deltanedas <@deltanedas:kde.org> --- .../Conditions/NestedCondition.cs | 31 +++++++++ .../EntityConditionPrototype.cs | 20 ++++++ .../SharedEntityConditionsSystem.Nested.cs | 20 ++++++ .../SharedEntityConditionsSystem.cs | 2 +- .../EntityEffects/Effects/NestedEffect.cs | 65 +++++++++++++++++++ .../EntityEffects/EntityEffectPrototype.cs | 35 ++++++++++ .../SharedEntityEffectsSystem.Nested.cs | 21 ++++++ 7 files changed, 193 insertions(+), 1 deletion(-) create mode 100644 Content.Shared/EntityConditions/Conditions/NestedCondition.cs create mode 100644 Content.Shared/EntityConditions/EntityConditionPrototype.cs create mode 100644 Content.Shared/EntityConditions/SharedEntityConditionsSystem.Nested.cs create mode 100644 Content.Shared/EntityEffects/Effects/NestedEffect.cs create mode 100644 Content.Shared/EntityEffects/EntityEffectPrototype.cs create mode 100644 Content.Shared/EntityEffects/SharedEntityEffectsSystem.Nested.cs diff --git a/Content.Shared/EntityConditions/Conditions/NestedCondition.cs b/Content.Shared/EntityConditions/Conditions/NestedCondition.cs new file mode 100644 index 00000000000..2af0d0d0e73 --- /dev/null +++ b/Content.Shared/EntityConditions/Conditions/NestedCondition.cs @@ -0,0 +1,31 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared.EntityConditions.Conditions; + +/// +/// Uses the conditions of an . +/// +public sealed partial class NestedCondition : EntityConditionBase +{ + /// + /// The condition prototype to use. + /// + [DataField(required: true)] + public ProtoId Proto; + + public override string EntityConditionGuidebookText(IPrototypeManager prototype) + => prototype.Index(Proto).Condition.EntityConditionGuidebookText(prototype); +} + +/// +/// Handles . +/// +public sealed class NestedConditionSystem : EntityConditionSystem +{ + [Dependency] private readonly SharedEntityConditionsSystem _conditions = default!; + + protected override void Condition(Entity ent, ref EntityConditionEvent args) + { + args.Result = _conditions.TryCondition(ent, args.Condition.Proto); + } +} diff --git a/Content.Shared/EntityConditions/EntityConditionPrototype.cs b/Content.Shared/EntityConditions/EntityConditionPrototype.cs new file mode 100644 index 00000000000..dc130d03df7 --- /dev/null +++ b/Content.Shared/EntityConditions/EntityConditionPrototype.cs @@ -0,0 +1,20 @@ +using Content.Shared.EntityConditions.Conditions; +using Robust.Shared.Prototypes; + +namespace Content.Shared.EntityConditions; + +/// +/// A prototype for entity conditions which can be reused via . +/// +[Prototype] +public sealed partial class EntityConditionPrototype : IPrototype +{ + [IdDataField] + public string ID { get; private set; } = string.Empty; + + /// + /// The condition of this prototype. + /// + [DataField(required: true)] + public EntityCondition Condition = default!; +} diff --git a/Content.Shared/EntityConditions/SharedEntityConditionsSystem.Nested.cs b/Content.Shared/EntityConditions/SharedEntityConditionsSystem.Nested.cs new file mode 100644 index 00000000000..72f84881b0d --- /dev/null +++ b/Content.Shared/EntityConditions/SharedEntityConditionsSystem.Nested.cs @@ -0,0 +1,20 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared.EntityConditions; + +/// +/// Entity condition API counterpart using instead of . +/// +public sealed partial class SharedEntityConditionsSystem +{ + [Dependency] private readonly IPrototypeManager _proto = default!; + + /// + /// TryCondition overload that uses a instead of . + /// + public bool TryCondition(EntityUid target, [ForbidLiteral] ProtoId id) + { + var proto = _proto.Index(id); + return TryCondition(target, proto.Condition); + } +} diff --git a/Content.Shared/EntityConditions/SharedEntityConditionsSystem.cs b/Content.Shared/EntityConditions/SharedEntityConditionsSystem.cs index 090a4226418..f15b5acb4d4 100644 --- a/Content.Shared/EntityConditions/SharedEntityConditionsSystem.cs +++ b/Content.Shared/EntityConditions/SharedEntityConditionsSystem.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Prototypes; +using Robust.Shared.Prototypes; namespace Content.Shared.EntityConditions; diff --git a/Content.Shared/EntityEffects/Effects/NestedEffect.cs b/Content.Shared/EntityEffects/Effects/NestedEffect.cs new file mode 100644 index 00000000000..86b09a068e4 --- /dev/null +++ b/Content.Shared/EntityEffects/Effects/NestedEffect.cs @@ -0,0 +1,65 @@ +using Content.Shared.Localizations; +using Robust.Shared.Prototypes; + +namespace Content.Shared.EntityEffects.Effects; + +/// +/// Applies the effect of an . +/// +public sealed partial class NestedEffect : EntityEffectBase +{ + /// + /// The effect prototype to use. + /// + [DataField(required: true)] + public ProtoId Proto; + + private List _conditions = new(); + private List _effects = new(); + + public override string? EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) + { + var proto = prototype.Index(Proto); + if (proto.GuidebookText is {} key) + return Loc.GetString(key, ("chance", Probability)); + + _effects.Clear(); + foreach (var effect in proto.Effects) + { + if (effect.EntityEffectGuidebookText(prototype, entSys) is not {} text) + continue; + + // basically GuidebookReagentEffectDescription but independent of reagents and no linq + _conditions.Clear(); + if (effect.Conditions is {} conditions) + { + foreach (var condition in conditions) + { + _conditions.Add(condition.EntityConditionGuidebookText(prototype)); + } + } + + var desc = Loc.GetString("guidebook-nested-effect-description", + ("effect", text), + ("chance", effect.Probability), + ("conditionCount", _conditions.Count), + ("conditions", ContentLocalizationManager.FormatList(_conditions))); + _effects.Add(desc); + } + + return _effects.Count == 0 ? null : string.Join("\n", _effects); + } +} + +/// +/// Handles . +/// +public sealed class NestedEffectSystem : EntityEffectSystem +{ + [Dependency] private readonly SharedEntityEffectsSystem _effects = default!; + + protected override void Effect(Entity ent, ref EntityEffectEvent args) + { + _effects.TryApplyEffect(ent, args.Effect.Proto, args.Scale, args.User); + } +} diff --git a/Content.Shared/EntityEffects/EntityEffectPrototype.cs b/Content.Shared/EntityEffects/EntityEffectPrototype.cs new file mode 100644 index 00000000000..8fa5e29707d --- /dev/null +++ b/Content.Shared/EntityEffects/EntityEffectPrototype.cs @@ -0,0 +1,35 @@ +using Content.Shared.EntityConditions; +using Content.Shared.EntityEffects.Effects; +using Robust.Shared.Prototypes; + +namespace Content.Shared.EntityEffects; + +/// +/// A prototype for entity effects which can be reused via . +/// +[Prototype] +public sealed partial class EntityEffectPrototype: IPrototype +{ + [IdDataField] + public string ID { get; private set; } = string.Empty; + + /// + /// The effects of this prototype. + /// + [DataField(required: true)] + public EntityEffect[] Effects = default!; + + /// + /// Conditions checked for this effect, regardless of the using it. + /// Currently not included in the guidebook text! + /// + [DataField] + public EntityCondition[]? Conditions; + + /// + /// An override for the effect guidebook text, has "chance" passed from 0 to 1. + /// By default one is generated from each effect. + /// + [DataField] + public LocId? GuidebookText; +} diff --git a/Content.Shared/EntityEffects/SharedEntityEffectsSystem.Nested.cs b/Content.Shared/EntityEffects/SharedEntityEffectsSystem.Nested.cs new file mode 100644 index 00000000000..4c0a8d14b02 --- /dev/null +++ b/Content.Shared/EntityEffects/SharedEntityEffectsSystem.Nested.cs @@ -0,0 +1,21 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared.EntityEffects; + +/// +/// Entity effects API counterparts using instead of . +// +public sealed partial class SharedEntityEffectsSystem +{ + [Dependency] private readonly IPrototypeManager _proto = default!; + + /// + /// TryApplyEffect overload using a instead of . + /// + public void TryApplyEffect(EntityUid target, [ForbidLiteral] ProtoId id, float scale = 1f, EntityUid? user = null) + { + var proto = _proto.Index(id); + if (_condition.TryConditions(target, proto.Conditions)) + ApplyEffects(target, proto.Effects, scale, user); + } +} From 8cb0664f94ebd875daa2d875ea82b18c4732cd0f Mon Sep 17 00:00:00 2001 From: UpAndLeaves <92269094+Alpha-Two@users.noreply.github.com> Date: Tue, 3 Mar 2026 17:56:42 +0000 Subject: [PATCH 461/603] Inventory + Storage toolshed query commands (#40813) * Add inventory and storage query toolshed commands * Forgot FTL * Fix stuff! * Make requested changes and stop STACK MAX SIZE ERROR * cleaning --------- Co-authored-by: ScarKy0 --- Content.Server/Inventory/InventoryCommand.cs | 28 +++++++++++++++++-- Content.Server/Storage/StorageCommand.cs | 26 +++++++++++++++-- .../commands/toolshed/inventory-command.ftl | 2 ++ .../commands/toolshed/storage-command.ftl | 2 ++ 4 files changed, 54 insertions(+), 4 deletions(-) diff --git a/Content.Server/Inventory/InventoryCommand.cs b/Content.Server/Inventory/InventoryCommand.cs index 81978892598..e628ee6e014 100644 --- a/Content.Server/Inventory/InventoryCommand.cs +++ b/Content.Server/Inventory/InventoryCommand.cs @@ -12,6 +12,27 @@ public sealed class InventoryCommand : ToolshedCommand { private InventorySystem? _inventorySystem; + [CommandImplementation("query")] + public IEnumerable InventoryQuery([PipedArgument] IEnumerable entities) => + entities.SelectMany(InventoryQuery); + + private IEnumerable InventoryQuery(EntityUid entity) + { + _inventorySystem ??= GetSys(); + + if (!EntityManager.TryGetComponent(entity, out var inventory)) + return []; + + List result = new(); + + foreach (var slot in inventory.Slots) + { + if (_inventorySystem.TryGetSlotEntity(entity, slot.Name, out var item, inventory)) + result.Add(item.Value); + } + return result; + } + [CommandImplementation("getflags")] public IEnumerable InventoryGetFlags([PipedArgument] IEnumerable ents, SlotFlags slotFlag) { @@ -44,7 +65,6 @@ public IEnumerable InventoryGetFlags(EntityUid ent, SlotFlags slotFla return items; } - [CommandImplementation("getnamed")] public IEnumerable InventoryGetNamed([PipedArgument] IEnumerable ents, string slotName) { @@ -81,6 +101,7 @@ public IEnumerable InventoryGetNamed(EntityUid ent, string slotName) public EntityUid? InventoryForcePut([PipedArgument] IEnumerable ents, EntityUid itemEnt, SlotFlags slotFlag) => InventoryPutEnumerableBase(ents, itemEnt, slotFlag, PutType.ForcePut); + [CommandImplementation("forcespawn")] public EntityUid? InventoryForceSpawn([PipedArgument] IEnumerable ents, EntProtoId itemEnt, @@ -90,6 +111,7 @@ public IEnumerable InventoryGetNamed(EntityUid ent, string slotName) public EntityUid? InventoryPut([PipedArgument] IEnumerable ents, EntityUid itemEnt, SlotFlags slotFlag) => InventoryPutEnumerableBase(ents, itemEnt, slotFlag, PutType.Put); + [CommandImplementation("spawn")] public EntityUid? InventorySpawn([PipedArgument] IEnumerable ents, EntProtoId itemEnt, @@ -99,6 +121,7 @@ public IEnumerable InventoryGetNamed(EntityUid ent, string slotName) public EntityUid? InventoryTryPut([PipedArgument] IEnumerable ents, EntityUid itemEnt, SlotFlags slotFlag) => InventoryPutEnumerableBase(ents, itemEnt, slotFlag, PutType.Put); + [CommandImplementation("tryspawn")] public EntityUid? InventoryTrySpawn([PipedArgument] IEnumerable ents, EntProtoId itemEnt, @@ -108,12 +131,12 @@ public IEnumerable InventoryGetNamed(EntityUid ent, string slotName) public EntityUid? InventoryEnsure([PipedArgument] IEnumerable ents, EntityUid itemEnt, SlotFlags slotFlag) => InventoryPutEnumerableBase(ents, itemEnt, slotFlag, PutType.Ensure); + [CommandImplementation("ensurespawn")] public EntityUid? InventoryEnsureSpawn([PipedArgument] IEnumerable ents, EntProtoId itemEnt, SlotFlags slotFlag) => InventorySpawnEnumerableBase(ents, itemEnt, slotFlag, PutType.Ensure); - private EntityUid? InventorySpawnEnumerableBase(IEnumerable targetEnts, EntProtoId itemToInsert, SlotFlags slotFlags, @@ -136,6 +159,7 @@ public IEnumerable InventoryGetNamed(EntityUid ent, string slotName) Del(spawnedItem); return null; } + private EntityUid? InventoryPutEnumerableBase(IEnumerable targetEnts, EntityUid itemToInsert, SlotFlags slotFlags, diff --git a/Content.Server/Storage/StorageCommand.cs b/Content.Server/Storage/StorageCommand.cs index b7aee26aa97..1c398016224 100644 --- a/Content.Server/Storage/StorageCommand.cs +++ b/Content.Server/Storage/StorageCommand.cs @@ -20,7 +20,7 @@ public sealed class StorageCommand : ToolshedCommand public IEnumerable StorageInsert([PipedArgument] IEnumerable entsToInsert, EntityUid targetEnt) => entsToInsert.Where(x => StorageInsert(x, targetEnt) != null); - public EntityUid? StorageInsert(EntityUid entToInsert, EntityUid targetEnt) + private EntityUid? StorageInsert(EntityUid entToInsert, EntityUid targetEnt) { _storage ??= GetSys(); @@ -32,7 +32,6 @@ public IEnumerable StorageInsert([PipedArgument] IEnumerable StorageFastTake([PipedArgument] IEnumerable storageEnts) => storageEnts.Select(StorageFastTake).OfType(); @@ -53,6 +52,29 @@ public IEnumerable StorageFastTake([PipedArgument] IEnumerable StorageQuery([PipedArgument] IEnumerable storageEnts, bool recursive) => + storageEnts.SelectMany(x => StorageQueryRecursiveBase(x, recursive)); + + public IEnumerable StorageQueryRecursiveBase(EntityUid storageEnt, bool recursive) + { + _storage ??= GetSys(); + _container ??= GetSys(); + + if (!EntityManager.TryGetComponent(storageEnt, out var storage)) + return []; + + IEnumerable containedEntities = storage.Container.ContainedEntities; + if (recursive) + { + foreach (var ent in containedEntities) + { + containedEntities = containedEntities.Concat(StorageQueryRecursiveBase(ent, true)); + } + } + + return containedEntities; + } } diff --git a/Resources/Locale/en-US/commands/toolshed/inventory-command.ftl b/Resources/Locale/en-US/commands/toolshed/inventory-command.ftl index 3ded73915ae..f430197495f 100644 --- a/Resources/Locale/en-US/commands/toolshed/inventory-command.ftl +++ b/Resources/Locale/en-US/commands/toolshed/inventory-command.ftl @@ -18,3 +18,5 @@ command-description-inventory-ensure = Puts a given entity on the first piped entity that has a slot matching the given flag if none exists, passing through the UID of whatever is in the slot by the end. command-description-inventory-ensurespawn = Spawns a given prototype on the first piped entity that has a slot matching the given flag if none exists, passing through the UID of whatever is in the slot by the end. +command-description-inventory-query = + Gets the entities in the inventory slots of the piped entities and passes them along. diff --git a/Resources/Locale/en-US/commands/toolshed/storage-command.ftl b/Resources/Locale/en-US/commands/toolshed/storage-command.ftl index 46fe1a2627d..154196fbb1b 100644 --- a/Resources/Locale/en-US/commands/toolshed/storage-command.ftl +++ b/Resources/Locale/en-US/commands/toolshed/storage-command.ftl @@ -2,3 +2,5 @@ command-description-storage-fasttake = Takes the most recently placed item from the piped storage entity. command-description-storage-insert = Inserts the piped entity into the given storage entity. +command-description-storage-query = + Gets the entities in the storagebase of the piped entities and passes them along. From 11fd67d1fbc362d9ac027321a283317245fd6887 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 3 Mar 2026 18:10:56 +0000 Subject: [PATCH 462/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 6b7b42f9d5b..57cca12824a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: aada - changes: - - message: Buckets are now destructible. - type: Tweak - id: 9052 - time: '2025-10-08T13:58:37.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40772 - author: UpAndLeaves changes: - message: Zombie infections now take approximately three minutes longer to bring @@ -3991,3 +3984,10 @@ id: 9562 time: '2026-03-01T23:28:18.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43094 +- author: UpAndLeaves + changes: + - message: Added storage:query and inventory:query commands + type: Add + id: 9563 + time: '2026-03-03T18:09:44.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/40813 From b098b82cad715cf648102e62c840fe38e9093ecf Mon Sep 17 00:00:00 2001 From: ProPeperos <61984624+ProPeperos@users.noreply.github.com> Date: Wed, 4 Mar 2026 05:55:54 +0100 Subject: [PATCH 463/603] Hyper autolathe now requires the same ammount of manipulators as autolathe (#43109) hyper lathe now requires the same ammount of manipulators as base lathe --- .../Objects/Devices/Circuitboards/Machine/production.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml index 5f9c1ac839e..892862dc498 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml @@ -19,7 +19,7 @@ - type: MachineBoard prototype: AutolatheHyperConvection stackRequirements: - Manipulator: 3 + Manipulator: 4 Glass: 1 tagRequirements: Igniter: From be19f0bbdcdf18ce3398b6a14f0bb486510ea915 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 4 Mar 2026 05:09:59 +0000 Subject: [PATCH 464/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 57cca12824a..6dd776c26ea 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: UpAndLeaves - changes: - - message: Zombie infections now take approximately three minutes longer to bring - a fully healed person to critical condition. - type: Tweak - id: 9053 - time: '2025-10-08T14:11:01.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/37445 - author: YoungThugSS14 changes: - message: The temperature gun bolts now count as energy projectiles for the sake @@ -3991,3 +3983,10 @@ id: 9563 time: '2026-03-03T18:09:44.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/40813 +- author: ProPeperos + changes: + - message: Hyper Autolathe now needs 4 manipulators instead of 3 + type: Tweak + id: 9564 + time: '2026-03-04T05:08:50.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43109 From eea773ffee682f21b0209976205fb3984d7d6581 Mon Sep 17 00:00:00 2001 From: Samuka <47865393+Samuka-C@users.noreply.github.com> Date: Wed, 4 Mar 2026 05:55:05 -0300 Subject: [PATCH 465/603] Remove salv stuff from mothership (#43007) * verb category * voltage toggle comp * move stuff * add simple prototype * implement verb action * switch expression * fixed the node not updating * charge the battery * fixed battery not charging * spawn on battery level system * finally works * swap commentary position * can only anchor the extractor on the station * popup message for trying to anchor outside of station * default placement for unanchored version * ops * fix body type * commentary * update visuals of power consumer * add custom sprite * fix light layer not changing * xenoborg circuit * fix xenoborg circuit * add tag * add hand to hold xenoborg circuits * move to material * add xenoborg circuit material * add recipe to mothership core * add a hand to hold circuits to the mothership core * to not confuse * update * ops * another ops * update mothership * update guidebook * update values * more info * fix stack * can store xenoborg circuits * description * also update description * circuit -> crytal * not modified from anything * update description * Revert "update mothership" This reverts commit 84974c56afadac2a99ed2a166244a668d83fff48. * update empty label * small update to sprite * not necessary code * remove empty line * color * make it explode when destroyed * change values * update sprite * update sprite * make it eletrified * flavor text * simplify to only use charge * subscribe to event * new line * remove popup * no need for the setter * no longer networked * update mothership --- Resources/Maps/Shuttles/mothership.yml | 305 +----------------- .../Catalog/Fills/Crates/xenoborg.yml | 17 + 2 files changed, 34 insertions(+), 288 deletions(-) create mode 100644 Resources/Prototypes/Catalog/Fills/Crates/xenoborg.yml diff --git a/Resources/Maps/Shuttles/mothership.yml b/Resources/Maps/Shuttles/mothership.yml index f2b2a652a3b..695a8cc40cf 100644 --- a/Resources/Maps/Shuttles/mothership.yml +++ b/Resources/Maps/Shuttles/mothership.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Grid - engineVersion: 270.1.0 + engineVersion: 272.0.0 forkId: "" forkVersion: "" - time: 01/16/2026 03:06:16 - entityCount: 591 + time: 02/23/2026 18:44:56 + entityCount: 567 maps: [] grids: - 1 @@ -160,6 +160,8 @@ entities: - type: GasTileOverlay - type: RadiationGridResistance - type: ExplosionAirtightGrid + - type: TileHistory + chunkHistory: {} - proto: AirlockGlassShuttleXenoborgLocked entities: - uid: 107 @@ -1464,16 +1466,6 @@ entities: - type: Transform pos: 2.5,-6.5 parent: 1 -- proto: CableApcStack - entities: - - uid: 345 - components: - - type: Transform - parent: 425 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 425 - proto: CableHV entities: - uid: 139 @@ -1526,16 +1518,6 @@ entities: - type: Transform pos: -9.5,0.5 parent: 1 -- proto: CableHVStack - entities: - - uid: 343 - components: - - type: Transform - parent: 425 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 425 - proto: CableMV entities: - uid: 149 @@ -1903,16 +1885,6 @@ entities: - type: Transform pos: 6.5,-0.5 parent: 1 -- proto: CableMVStack - entities: - - uid: 339 - components: - - type: Transform - parent: 425 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 425 - proto: CableTerminal entities: - uid: 138 @@ -1999,73 +1971,13 @@ entities: - type: Transform pos: 1.5,2.5 parent: 1 -- proto: ConveyorBelt +- proto: CrateXenoborgStartingSupplies entities: - - uid: 243 - components: - - type: Transform - pos: 0.5,-8.5 - parent: 1 - - uid: 244 - components: - - type: Transform - pos: 0.5,-7.5 - parent: 1 - - uid: 245 - components: - - type: Transform - pos: 0.5,-6.5 - parent: 1 - - uid: 247 - components: - - type: Transform - pos: 0.5,-4.5 - parent: 1 - - uid: 250 - components: - - type: Transform - pos: 0.5,-9.5 - parent: 1 - - uid: 251 - components: - - type: Transform - pos: 0.5,-10.5 - parent: 1 -- proto: CrateGenericSteel - entities: - - uid: 425 + - uid: 111 components: - type: Transform pos: -0.5,-1.5 parent: 1 - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 455 - - 453 - - 370 - - 340 - - 346 - - 341 - - 344 - - 342 - - 456 - - 586 - - 587 - - 588 - - 589 - - 345 - - 343 - - 339 - - 590 - - 591 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - proto: DisposalBend entities: - uid: 377 @@ -2361,6 +2273,11 @@ entities: - type: Transform pos: 2.5,-7.5 parent: 1 + - uid: 244 + components: + - type: Transform + pos: 0.5,-5.5 + parent: 1 - uid: 254 components: - type: Transform @@ -2477,141 +2394,6 @@ entities: - type: Transform pos: 6.5,3.5 parent: 1 -- proto: Recycler - entities: - - uid: 111 - components: - - type: Transform - pos: 0.5,-5.5 - parent: 1 -- proto: SheetGlass - entities: - - uid: 586 - components: - - type: Transform - parent: 425 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 425 - - uid: 589 - components: - - type: Transform - parent: 425 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 425 -- proto: SheetPlasteel - entities: - - uid: 340 - components: - - type: Transform - parent: 425 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 425 - - uid: 342 - components: - - type: Transform - parent: 425 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 425 -- proto: SheetPlastic - entities: - - uid: 341 - components: - - type: Transform - parent: 425 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 425 - - uid: 344 - components: - - type: Transform - parent: 425 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 425 -- proto: SheetSteel - entities: - - uid: 346 - components: - - type: Transform - parent: 425 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 425 - - uid: 370 - components: - - type: Transform - parent: 425 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 425 - - uid: 453 - components: - - type: Transform - parent: 425 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 425 - - uid: 455 - components: - - type: Transform - parent: 425 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 425 - - uid: 456 - components: - - type: Transform - parent: 425 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 425 - - uid: 587 - components: - - type: Transform - parent: 425 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 425 - - uid: 588 - components: - - type: Transform - parent: 425 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 425 - - uid: 590 - components: - - type: Transform - parent: 425 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 425 - - uid: 591 - components: - - type: Transform - parent: 425 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 425 - proto: SignalButton entities: - uid: 584 @@ -2953,64 +2735,6 @@ entities: parent: 1 - proto: TwoWayLever entities: - - uid: 249 - components: - - type: MetaData - name: conveyor - - type: Transform - pos: -0.5,-4.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 247: - - - Left - - Reverse - - - Right - - Forward - - - Middle - - Off - 111: - - - Left - - Reverse - - - Right - - Forward - - - Middle - - Off - 245: - - - Left - - Reverse - - - Right - - Forward - - - Middle - - Off - 244: - - - Left - - Reverse - - - Right - - Forward - - - Middle - - Off - 243: - - - Left - - Reverse - - - Right - - Forward - - - Middle - - Off - 251: - - - Left - - Reverse - - - Right - - Forward - - - Middle - - Off - 250: - - - Left - - Reverse - - - Right - - Forward - - - Middle - - Off - uid: 328 components: - type: MetaData @@ -3738,6 +3462,11 @@ entities: - type: Transform pos: 1.5,6.5 parent: 1 + - uid: 243 + components: + - type: Transform + pos: 0.5,-5.5 + parent: 1 - uid: 349 components: - type: Transform diff --git a/Resources/Prototypes/Catalog/Fills/Crates/xenoborg.yml b/Resources/Prototypes/Catalog/Fills/Crates/xenoborg.yml new file mode 100644 index 00000000000..95c517461fd --- /dev/null +++ b/Resources/Prototypes/Catalog/Fills/Crates/xenoborg.yml @@ -0,0 +1,17 @@ +- type: entity + parent: CrateGenericSteel + id: CrateXenoborgStartingSupplies + name: xenoborg supplies crate + description: Contains starting materials for the mothership to make more xenoborgs. + components: + - type: EntityTableContainerFill + containers: + entity_storage: !type:AllSelector + children: + - id: SheetSteel + amount: 2 + - id: MaterialXenoborgCrystal + amount: 2 + - id: CableApcStack + - id: CableMVStack + - id: CableHVStack From 506f9a36ece31b9e85f4dc6f30d48a7d39bca246 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 4 Mar 2026 09:09:15 +0000 Subject: [PATCH 466/603] Automatic changelog update --- Resources/Changelog/Maps.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Resources/Changelog/Maps.yml b/Resources/Changelog/Maps.yml index b735ad574b9..720788dfde6 100644 --- a/Resources/Changelog/Maps.yml +++ b/Resources/Changelog/Maps.yml @@ -1045,4 +1045,14 @@ id: 127 time: '2026-02-28T06:56:45.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43061 +- author: Samuka + changes: + - message: Removed recycler and conveyor from the xenoborg mothership. + type: Remove + - message: Changed the starting materials of the xenoborg mothership to include + xenoborg crystals. + type: Tweak + id: 128 + time: '2026-03-04T09:08:04.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43007 Order: 2 From eb1831774bf0e779b6849200254dcec70c56e276 Mon Sep 17 00:00:00 2001 From: Shegare <147345753+Shegare@users.noreply.github.com> Date: Thu, 5 Mar 2026 00:54:28 +0300 Subject: [PATCH 467/603] HTNComponent from SharedNPCSystem (#42750) * init * move system * doc --- Content.Client/CombatMode/CombatModeSystem.cs | 6 ------ Content.Client/NPC/Systems/NPCSystem.cs | 12 ++++++++++++ Content.Server/CombatMode/CombatModeSystem.cs | 9 +-------- Content.Server/NPC/Systems/NPCSystem.cs | 7 ++++++- Content.Shared/CombatMode/SharedCombatModeSystem.cs | 8 +++----- Content.Shared/NPC/Systems/SharedNPCSystem.cs | 6 ++++++ 6 files changed, 28 insertions(+), 20 deletions(-) create mode 100644 Content.Client/NPC/Systems/NPCSystem.cs diff --git a/Content.Client/CombatMode/CombatModeSystem.cs b/Content.Client/CombatMode/CombatModeSystem.cs index 2c938b1b937..85a33b4cfe3 100644 --- a/Content.Client/CombatMode/CombatModeSystem.cs +++ b/Content.Client/CombatMode/CombatModeSystem.cs @@ -1,5 +1,4 @@ using Content.Client.Hands.Systems; -using Content.Client.NPC.HTN; using Content.Shared.CCVar; using Content.Shared.CombatMode; using Robust.Client.Graphics; @@ -59,11 +58,6 @@ public override void SetInCombatMode(EntityUid entity, bool value, CombatModeCom UpdateHud(entity); } - protected override bool IsNpc(EntityUid uid) - { - return HasComp(uid); - } - private void UpdateHud(EntityUid entity) { if (entity != _playerManager.LocalEntity || !Timing.IsFirstTimePredicted) diff --git a/Content.Client/NPC/Systems/NPCSystem.cs b/Content.Client/NPC/Systems/NPCSystem.cs new file mode 100644 index 00000000000..b20756aea52 --- /dev/null +++ b/Content.Client/NPC/Systems/NPCSystem.cs @@ -0,0 +1,12 @@ +using Content.Client.NPC.HTN; +using Content.Shared.NPC.Systems; + +namespace Content.Client.NPC.Systems; + +public sealed class NPCSystem : SharedNPCSystem +{ + public override bool IsNpc(EntityUid uid) + { + return HasComp(uid); + } +} diff --git a/Content.Server/CombatMode/CombatModeSystem.cs b/Content.Server/CombatMode/CombatModeSystem.cs index e04463c534d..af36bb59478 100644 --- a/Content.Server/CombatMode/CombatModeSystem.cs +++ b/Content.Server/CombatMode/CombatModeSystem.cs @@ -1,12 +1,5 @@ -using Content.Server.NPC.HTN; using Content.Shared.CombatMode; namespace Content.Server.CombatMode; -public sealed class CombatModeSystem : SharedCombatModeSystem -{ - protected override bool IsNpc(EntityUid uid) - { - return HasComp(uid); - } -} +public sealed class CombatModeSystem : SharedCombatModeSystem; diff --git a/Content.Server/NPC/Systems/NPCSystem.cs b/Content.Server/NPC/Systems/NPCSystem.cs index 7aea766930b..5788d20ad8c 100644 --- a/Content.Server/NPC/Systems/NPCSystem.cs +++ b/Content.Server/NPC/Systems/NPCSystem.cs @@ -18,7 +18,7 @@ namespace Content.Server.NPC.Systems /// /// Handles NPCs running every tick. /// - public sealed partial class NPCSystem : EntitySystem + public sealed partial class NPCSystem : SharedNPCSystem { private static readonly Gauge ActiveGauge = Metrics.CreateGauge( "npc_active_count", @@ -78,6 +78,11 @@ public void OnNPCShutdown(EntityUid uid, HTNComponent component, ComponentShutdo SleepNPC(uid, component); } + public override bool IsNpc(EntityUid uid) + { + return HasComp(uid); + } + /// /// Is the NPC awake and updating? /// diff --git a/Content.Shared/CombatMode/SharedCombatModeSystem.cs b/Content.Shared/CombatMode/SharedCombatModeSystem.cs index af7bb9fefe0..9063d0a6b82 100644 --- a/Content.Shared/CombatMode/SharedCombatModeSystem.cs +++ b/Content.Shared/CombatMode/SharedCombatModeSystem.cs @@ -2,8 +2,8 @@ using Content.Shared.Mind; using Content.Shared.MouseRotator; using Content.Shared.Movement.Components; +using Content.Shared.NPC.Systems; using Content.Shared.Popups; -using Robust.Shared.Network; using Robust.Shared.Timing; namespace Content.Shared.CombatMode; @@ -14,6 +14,7 @@ public abstract class SharedCombatModeSystem : EntitySystem [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedMindSystem _mind = default!; + [Dependency] private readonly SharedNPCSystem _npc = default!; public override void Initialize() { @@ -77,7 +78,7 @@ public virtual void SetInCombatMode(EntityUid entity, bool value, CombatModeComp _actionsSystem.SetToggled(component.CombatToggleActionEntity, component.IsInCombatMode); // Change mouse rotator comps if flag is set - if (!component.ToggleMouseRotator || IsNpc(entity) && !_mind.TryGetMind(entity, out _, out _)) + if (!component.ToggleMouseRotator || _npc.IsNpc(entity) && !_mind.TryGetMind(entity, out _, out _)) return; SetMouseRotatorComponents(entity, value); @@ -96,9 +97,6 @@ private void SetMouseRotatorComponents(EntityUid uid, bool value) RemComp(uid); } } - - // todo: When we stop making fucking garbage abstract shared components, remove this shit too. - protected abstract bool IsNpc(EntityUid uid); } public sealed partial class ToggleCombatActionEvent : InstantActionEvent diff --git a/Content.Shared/NPC/Systems/SharedNPCSystem.cs b/Content.Shared/NPC/Systems/SharedNPCSystem.cs index 247ab478a1b..178856c904a 100644 --- a/Content.Shared/NPC/Systems/SharedNPCSystem.cs +++ b/Content.Shared/NPC/Systems/SharedNPCSystem.cs @@ -2,4 +2,10 @@ namespace Content.Shared.NPC.Systems; public abstract partial class SharedNPCSystem : EntitySystem { + /// + /// Returns whether the given entity is an NPC. + /// + /// Entity UID to check. + /// true if the entity is an NPC, otherwise false. + public abstract bool IsNpc(EntityUid uid); } From 1918f8e8ea2a6c6709039729859503d547289c34 Mon Sep 17 00:00:00 2001 From: neomoth Date: Fri, 6 Mar 2026 11:04:55 -0500 Subject: [PATCH 468/603] Small tippy fix + msg toolshed additions (#43082) * why is this not how it worked already fml * better tippy checking --- Content.Client/Tips/TippyUIController.cs | 18 +++++++-------- .../Toolshed/Commands/Misc/MsgCommand.cs | 23 +++++++++++++++++++ 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/Content.Client/Tips/TippyUIController.cs b/Content.Client/Tips/TippyUIController.cs index c5eea955bab..73ff099fad6 100644 --- a/Content.Client/Tips/TippyUIController.cs +++ b/Content.Client/Tips/TippyUIController.cs @@ -127,18 +127,16 @@ private void NextState(TippyUI tippy) if (!_queuedMessages.TryDequeue(out var next)) return; - if (next.Proto != null) - { - _entity = EntityManager.SpawnEntity(next.Proto, MapCoordinates.Nullspace); - tippy.ModifyLayers = false; - } - else - { - _entity = EntityManager.SpawnEntity(_cfg.GetCVar(CCVars.TippyEntity), MapCoordinates.Nullspace); - tippy.ModifyLayers = true; - } + _entity = next.Proto is null + ? EntityManager.SpawnEntity(_cfg.GetCVar(CCVars.TippyEntity), MapCoordinates.Nullspace) + : EntityManager.SpawnEntity(next.Proto, MapCoordinates.Nullspace); + if (!EntityManager.TryGetComponent(_entity, out sprite)) return; + // Only modify layers if they have all of the required ones. + tippy.ModifyLayers = _sprite.TryGetLayer(_entity, "revealing", out _, false) && + _sprite.TryGetLayer(_entity, "speaking", out _, false) && + _sprite.TryGetLayer(_entity, "hiding", out _, false); if (!EntityManager.HasComponent(_entity)) { var paper = EntityManager.AddComponent(_entity); diff --git a/Content.Server/Toolshed/Commands/Misc/MsgCommand.cs b/Content.Server/Toolshed/Commands/Misc/MsgCommand.cs index 119a637c966..4708ae82d5b 100644 --- a/Content.Server/Toolshed/Commands/Misc/MsgCommand.cs +++ b/Content.Server/Toolshed/Commands/Misc/MsgCommand.cs @@ -50,6 +50,16 @@ public IEnumerable Chat([PipedArgument] IEnumerable target } } + [CommandImplementation("chat")] + public IEnumerable Chat([PipedArgument] IEnumerable targets, string message) + { + foreach (var session in targets) + { + _chatManager.ChatMessageToOne(ChatChannel.Local, message, message, EntityUid.Invalid, false, session.Channel); + yield return session; + } + } + [CommandImplementation("popup")] public IEnumerable Popup([PipedArgument] IEnumerable targets, string popup, PopupType type, bool recipientOnly) { @@ -80,4 +90,17 @@ public IEnumerable Tippy([PipedArgument] IEnumerable targe yield return ent; } } + + [CommandImplementation("tippy")] + public IEnumerable Tippy([PipedArgument] IEnumerable targets, string message, EntProtoId prototype, float speakTime, float slideTime, float waddleInterval) + { + _tips ??= GetSys(); + + foreach (var session in targets) + { + _tips.SendTippy(session, message, prototype, speakTime, slideTime, waddleInterval); + + yield return session; + } + } } From 0611a4fdeba31f3c22af3608fa1401c4ecae50ea Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 6 Mar 2026 16:18:59 +0000 Subject: [PATCH 469/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 6dd776c26ea..44b914bf2bf 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,16 +1,4 @@ Entries: -- author: YoungThugSS14 - changes: - - message: The temperature gun bolts now count as energy projectiles for the sake - of reflection. - type: Tweak - - message: The temperature gun's cold projectile can no longer pass through windows. - type: Fix - - message: The temperature gun now has color-appropriate muzzle flashes. - type: Fix - id: 9054 - time: '2025-10-08T15:10:19.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/37581 - author: K-Dynamic changes: - message: Energy shotgun lethal projectiles can now hit holo mobs. @@ -3990,3 +3978,10 @@ id: 9564 time: '2026-03-04T05:08:50.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43109 +- author: neomoth + changes: + - message: Multi-directional eldritch horror Tippy is no more. + type: Fix + id: 9565 + time: '2026-03-06T16:17:47.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43082 From 64498147424c646e9fe19a77459d468ce0cd7f93 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Sat, 7 Mar 2026 05:38:00 +0700 Subject: [PATCH 470/603] first upstream fix --- .../Lobby/UI/HumanoidProfileEditor.TTS.cs | 59 +++++++++++++++++++ .../Lobby/ClientPreferencesManager.cs | 2 +- .../UI/HumanoidProfileEditor.Appearance.cs | 6 ++ .../Lobby/UI/HumanoidProfileEditor.Traits.cs | 2 +- .../Lobby/UI/HumanoidProfileEditor.xaml.cs | 2 - Content.Server/Chat/Systems/ChatSystem.cs | 2 +- .../StationGoal/StationGoalPrototype.cs | 2 +- .../Managers/ServerPreferencesManager.cs | 6 ++ .../Corvax/Ipc/IpcFaceProfilePrototype.cs | 2 +- .../Systems/DnaScrambleOnTriggerSystem.cs | 2 +- 10 files changed, 77 insertions(+), 8 deletions(-) create mode 100644 Content.Client/Corvax/Lobby/UI/HumanoidProfileEditor.TTS.cs diff --git a/Content.Client/Corvax/Lobby/UI/HumanoidProfileEditor.TTS.cs b/Content.Client/Corvax/Lobby/UI/HumanoidProfileEditor.TTS.cs new file mode 100644 index 00000000000..9ce56f61cc2 --- /dev/null +++ b/Content.Client/Corvax/Lobby/UI/HumanoidProfileEditor.TTS.cs @@ -0,0 +1,59 @@ +using Content.Client.Corvax.TTS; +using Content.Shared.Corvax.CCCVars; +using Robust.Client.UserInterface; + +namespace Content.Client.Lobby.UI; + +public sealed partial class HumanoidProfileEditor +{ + private TTSTab? _ttsTab; + + private void RefreshVoiceTab() + { + if (!_cfgManager.GetCVar(CCCVars.TTSEnabled)) + return; + + _ttsTab = new TTSTab(); + var children = new List(); + foreach (var child in TabContainer.Children) + children.Add(child); + + TabContainer.RemoveAllChildren(); + + for (int i = 0; i < children.Count; i++) + { + if (i == 1) // Set the tab to the 2nd place. + { + TabContainer.AddChild(_ttsTab); + } + TabContainer.AddChild(children[i]); + } + + TabContainer.SetTabTitle(1, Loc.GetString("humanoid-profile-editor-voice-tab")); + + _ttsTab.OnVoiceSelected += voiceId => + { + SetVoice(voiceId); + _ttsTab.SetSelectedVoice(voiceId); + }; + + _ttsTab.OnPreviewRequested += voiceId => + { + _entManager.System().RequestPreviewTTS(voiceId); + }; + } + + private void UpdateTTSVoicesControls() + { + if (Profile is null || _ttsTab is null) + return; + + _ttsTab.UpdateControls(Profile, Profile.Sex); + _ttsTab.SetSelectedVoice(Profile.Voice); + } + private void SetVoice(string newVoice) + { + Profile = Profile?.WithVoice(newVoice); + IsDirty = true; + } +} diff --git a/Content.Client/Lobby/ClientPreferencesManager.cs b/Content.Client/Lobby/ClientPreferencesManager.cs index bd3df00f7e4..910471f60fe 100644 --- a/Content.Client/Lobby/ClientPreferencesManager.cs +++ b/Content.Client/Lobby/ClientPreferencesManager.cs @@ -15,7 +15,7 @@ namespace Content.Client.Lobby /// connection. /// Stores preferences on the server through and . /// - public partial class ClientPreferencesManager : IClientPreferencesManager + public sealed class ClientPreferencesManager : IClientPreferencesManager { [Dependency] private readonly IClientNetManager _netManager = default!; [Dependency] private readonly IBaseClient _baseClient = default!; diff --git a/Content.Client/Lobby/UI/HumanoidProfileEditor.Appearance.cs b/Content.Client/Lobby/UI/HumanoidProfileEditor.Appearance.cs index ddc9752b1ed..75fff23d44c 100644 --- a/Content.Client/Lobby/UI/HumanoidProfileEditor.Appearance.cs +++ b/Content.Client/Lobby/UI/HumanoidProfileEditor.Appearance.cs @@ -7,6 +7,7 @@ using Robust.Client.UserInterface.Controls; using Robust.Shared.Enums; using Robust.Shared.Prototypes; +using static Content.Client.Corvax.SponsorOnlyHelpers; namespace Content.Client.Lobby.UI; @@ -159,6 +160,10 @@ public void RefreshSpecies() for (var i = 0; i < _species.Count; i++) { var name = Loc.GetString(_species[i].Name); + + if (_species[i].SponsorOnly) // Corvax-Sponsors + name += GetSponsorOnlySuffix(); + SpeciesButton.AddItem(name, i); if (Profile?.Species.Equals(_species[i].ID) == true) @@ -216,6 +221,7 @@ private void SetSex(Sex newSex) } UpdateGenderControls(); + UpdateTTSVoicesControls(); // Corvax-TTS _markingsModel.SetOrganSexes(newSex); ReloadPreview(); } diff --git a/Content.Client/Lobby/UI/HumanoidProfileEditor.Traits.cs b/Content.Client/Lobby/UI/HumanoidProfileEditor.Traits.cs index 484a6fb6117..7707027e1d8 100644 --- a/Content.Client/Lobby/UI/HumanoidProfileEditor.Traits.cs +++ b/Content.Client/Lobby/UI/HumanoidProfileEditor.Traits.cs @@ -18,7 +18,7 @@ public void RefreshTraits() TraitsList.RemoveAllChildren(); var traits = _prototypeManager.EnumeratePrototypes().OrderBy(t => Loc.GetString(t.Name)).ToList(); - TabContainer.SetTabTitle(3, Loc.GetString("humanoid-profile-editor-traits-tab")); + // TabContainer.SetTabTitle(3, Loc.GetString("humanoid-profile-editor-traits-tab")); // Corvax-TTS-Edit if (traits.Count < 1) { diff --git a/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs b/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs index 600f87d6a23..0b934f9cb04 100644 --- a/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs +++ b/Content.Client/Lobby/UI/HumanoidProfileEditor.xaml.cs @@ -19,8 +19,6 @@ using Robust.Shared.Enums; using Robust.Shared.Prototypes; using Direction = Robust.Shared.Maths.Direction; -using static Content.Client.Corvax.SponsorOnlyHelpers; // Corvax-Sponsors -using Content.Client.Corvax.TTS; // Corvax-TTS namespace Content.Client.Lobby.UI { diff --git a/Content.Server/Chat/Systems/ChatSystem.cs b/Content.Server/Chat/Systems/ChatSystem.cs index e612186272e..54150dd753a 100644 --- a/Content.Server/Chat/Systems/ChatSystem.cs +++ b/Content.Server/Chat/Systems/ChatSystem.cs @@ -64,7 +64,7 @@ public sealed partial class ChatSystem : SharedChatSystem // public const int WhisperClearRange = 2; // how far whisper goes while still being understandable, in world units // public const int WhisperMuffledRange = 5; // how far whisper goes at all, in world units // Corvax-TTS-End - public readonly SoundSpecifier DefaultAnnouncementSound = new SoundPathSpecifier("/Audio/Corvax/Announcements/announce.ogg"); // Corvax-Announcements + public new readonly SoundSpecifier DefaultAnnouncementSound = new SoundPathSpecifier("/Audio/Corvax/Announcements/announce.ogg"); // Corvax-Announcements public const string CentComAnnouncementSound = "/Audio/Corvax/Announcements/centcomm.ogg"; // Corvax-Announcements private bool _loocEnabled = true; diff --git a/Content.Server/Corvax/StationGoal/StationGoalPrototype.cs b/Content.Server/Corvax/StationGoal/StationGoalPrototype.cs index 271205361e4..fc477f2e563 100644 --- a/Content.Server/Corvax/StationGoal/StationGoalPrototype.cs +++ b/Content.Server/Corvax/StationGoal/StationGoalPrototype.cs @@ -2,7 +2,7 @@ namespace Content.Server.Corvax.StationGoal { - [Serializable, Prototype("stationGoal")] + [Prototype] public sealed partial class StationGoalPrototype : IPrototype { [IdDataFieldAttribute] diff --git a/Content.Server/Preferences/Managers/ServerPreferencesManager.cs b/Content.Server/Preferences/Managers/ServerPreferencesManager.cs index 77c4e6e8a1d..b3231ab91ec 100644 --- a/Content.Server/Preferences/Managers/ServerPreferencesManager.cs +++ b/Content.Server/Preferences/Managers/ServerPreferencesManager.cs @@ -108,6 +108,11 @@ internal HumanoidCharacterProfile ConvertProfiles(Profile profile) if (Enum.TryParse(profile.Gender, true, out var genderVal)) gender = genderVal; + // Corvax-TTS-Start + var voice = profile.Voice; + if (voice == String.Empty) + voice = HumanoidProfileSystem.DefaultSexVoice[sex]; + // Corvax-TTS-End var markings = new Dictionary, Dictionary>>(); @@ -174,6 +179,7 @@ internal HumanoidCharacterProfile ConvertProfiles(Profile profile) profile.CharacterName, profile.FlavorText, species, + voice, // Corvax-TTS profile.Age, sex, gender, diff --git a/Content.Shared/Corvax/Ipc/IpcFaceProfilePrototype.cs b/Content.Shared/Corvax/Ipc/IpcFaceProfilePrototype.cs index a15acc47f12..1dd28aea293 100644 --- a/Content.Shared/Corvax/Ipc/IpcFaceProfilePrototype.cs +++ b/Content.Shared/Corvax/Ipc/IpcFaceProfilePrototype.cs @@ -7,7 +7,7 @@ namespace Content.Shared.Corvax.Ipc; /// /// Prototype defining a collection of IPC face sprites. /// -[Prototype("ipcFaceProfile")] +[Prototype] public sealed partial class IpcFaceProfilePrototype : IPrototype { [IdDataField] diff --git a/Content.Shared/Trigger/Systems/DnaScrambleOnTriggerSystem.cs b/Content.Shared/Trigger/Systems/DnaScrambleOnTriggerSystem.cs index 8d592f444e1..715f04779ba 100644 --- a/Content.Shared/Trigger/Systems/DnaScrambleOnTriggerSystem.cs +++ b/Content.Shared/Trigger/Systems/DnaScrambleOnTriggerSystem.cs @@ -33,7 +33,7 @@ protected override void OnTrigger(Entity ent, Ent return; var newProfile = HumanoidCharacterProfile.RandomWithSpecies(humanoid.Species); - newProfile.Appearance = HumanoidCharacterAppearance.EnsureValid(newProfile.Appearance, humanoid.Species, newProfile.Sex); + newProfile.Appearance = HumanoidCharacterAppearance.EnsureValid(newProfile.Appearance, humanoid.Species, newProfile.Sex, []); // Corvax-Sponsors-Edit _visualBody.ApplyProfileTo(target, newProfile); _humanoidProfile.ApplyProfileTo(target, newProfile); _metaData.SetEntityName(target, newProfile.Name, raiseEvents: false); // raising events would update ID card, station record, etc. From 01ebb4086ea2a70d07368fe52eb15a44e0c61071 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Sat, 7 Mar 2026 07:12:06 +0700 Subject: [PATCH 471/603] content fix --- Resources/Prototypes/Body/Species/vulpkanin.yml | 1 - .../Head/Hardsuits/atmospherics.rsi/meta.json | 14 +------------- .../Hardsuits/basic.rsi/equipped-HELMET-dog.png | Bin 3724 -> 0 bytes .../Clothing/Head/Hardsuits/basic.rsi/meta.json | 6 +----- .../Head/Hardsuits/capspace.rsi/meta.json | 2 +- .../Head/Hardsuits/cybersun.rsi/meta.json | 4 ---- .../Hardsuits/engineering-white.rsi/meta.json | 12 ------------ .../Head/Hardsuits/engineering.rsi/meta.json | 12 ------------ .../Head/Hardsuits/paramedhelm.rsi/meta.json | 8 -------- .../Clothing/Head/Hardsuits/rd.rsi/meta.json | 10 +--------- .../Head/Hardsuits/salvage.rsi/meta.json | 10 +--------- .../Head/Hardsuits/security.rsi/meta.json | 10 +--------- .../security.rsi/off-equipped-HELMET-dog.png | Bin 10627 -> 0 bytes .../security.rsi/on-equipped-HELMET-dog.png | Bin 10958 -> 0 bytes .../Head/Hardsuits/spatiohelm.rsi/meta.json | 14 +------------- .../Head/Hardsuits/syndicate.rsi/meta.json | 10 +--------- .../Hardsuits/syndiecommander.rsi/meta.json | 10 +--------- .../Head/Hardsuits/syndieelite.rsi/meta.json | 10 +--------- .../Hats/wizardhat.rsi/equipped-HELMET-dog.png | Bin 7513 -> 0 bytes .../Clothing/Head/Hats/wizardhat.rsi/meta.json | 4 ---- .../Helmets/eva.rsi/equipped-HELMET-dog.png | Bin 10973 -> 0 bytes .../Clothing/Head/Helmets/eva.rsi/meta.json | 4 ---- .../eva_large.rsi/equipped-HELMET-dog.png | Bin 10995 -> 0 bytes .../Head/Helmets/eva_large.rsi/meta.json | 4 ---- .../Hardsuits/atmospherics.rsi/meta.json | 4 ---- .../Hardsuits/capspace.rsi/meta.json | 4 ---- .../Hardsuits/cybersun.rsi/meta.json | 4 ---- .../Hardsuits/engineering-white.rsi/meta.json | 4 ---- .../Hardsuits/engineering.rsi/meta.json | 4 ---- .../Hardsuits/goliath.rsi/meta.json | 4 ---- .../Hardsuits/medical.rsi/meta.json | 4 ---- .../Hardsuits/paramed.rsi/meta.json | 4 ---- .../OuterClothing/Hardsuits/rd.rsi/meta.json | 4 ---- .../Hardsuits/salvage.rsi/meta.json | 4 ---- .../Hardsuits/security.rsi/meta.json | 4 ---- .../Hardsuits/spatio.rsi/meta.json | 4 ---- .../Hardsuits/syndiecommander.rsi/meta.json | 4 ---- .../Hardsuits/syndieelite.rsi/meta.json | 4 ---- .../Hardsuits/wizard.rsi/meta.json | 4 ---- .../wizard.rsi/equipped-OUTERCLOTHING-dog.png | Bin 1441 -> 0 bytes .../OuterClothing/Misc/wizard.rsi/meta.json | 4 ---- .../equipped-OUTERCLOTHING-dog.png | Bin 13756 -> 0 bytes .../Suits/eva_emergency.rsi/meta.json | 4 ---- 43 files changed, 10 insertions(+), 203 deletions(-) delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/basic.rsi/equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/security.rsi/off-equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/security.rsi/on-equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hats/wizardhat.rsi/equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Helmets/eva.rsi/equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Helmets/eva_large.rsi/equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/wizard.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Suits/eva_emergency.rsi/equipped-OUTERCLOTHING-dog.png diff --git a/Resources/Prototypes/Body/Species/vulpkanin.yml b/Resources/Prototypes/Body/Species/vulpkanin.yml index 912a225af73..042c860afa9 100644 --- a/Resources/Prototypes/Body/Species/vulpkanin.yml +++ b/Resources/Prototypes/Body/Species/vulpkanin.yml @@ -187,7 +187,6 @@ id: MobVulpkanin name: Urist McArfArf components: - - type: Wagging #Corvax-Vulp_Port - type: DamageVisuals damageOverlayGroups: Brute: diff --git a/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/meta.json index 8ffbf79a2e9..732307a410e 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/meta.json @@ -43,18 +43,6 @@ "name": "equipped-head-unshaded-vox", "directions": 4 }, - { - "name": "equipped-head-dog", - "directions": 4 - }, - { - "name": "equipped-head-light-dog", - "directions": 4 - }, - { - "name": "equipped-head-unshaded-dog", - "directions": 4 - }, { "name": "equipped-head-vulpkanin", "directions": 4 @@ -68,4 +56,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Head/Hardsuits/basic.rsi/equipped-HELMET-dog.png b/Resources/Textures/Clothing/Head/Hardsuits/basic.rsi/equipped-HELMET-dog.png deleted file mode 100644 index 744a9a58549ef73f54568fbafd21f805c6c4356b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3724 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 HT7>)`;9PN3 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/security.rsi/on-equipped-HELMET-dog.png b/Resources/Textures/Clothing/Head/Hardsuits/security.rsi/on-equipped-HELMET-dog.png deleted file mode 100644 index f346449adab20ed8b31e9491ebbee752430bf1b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10958 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 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/spatiohelm.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/spatiohelm.rsi/meta.json index 20171594b55..8c5d97269b1 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/spatiohelm.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/spatiohelm.rsi/meta.json @@ -43,18 +43,6 @@ "name": "equipped-head-unshaded-vox", "directions": 4 }, - { - "name": "equipped-head-dog", - "directions": 4 - }, - { - "name": "equipped-head-light-dog", - "directions": 4 - }, - { - "name": "equipped-head-unshaded-dog", - "directions": 4 - }, { "name": "equipped-head-vulpkanin", "directions": 4 @@ -68,4 +56,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/meta.json index 83bd849b2f6..eab374760c3 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/meta.json @@ -29,14 +29,6 @@ "name": "on-equipped-HELMET-vox", "directions": 4 }, - { - "name": "off-equipped-HELMET-dog", - "directions": 4 - }, - { - "name": "on-equipped-HELMET-dog", - "directions": 4 - }, { "name": "off-equipped-HELMET-vulpkanin", "directions": 4 @@ -46,4 +38,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Head/Hardsuits/syndiecommander.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/syndiecommander.rsi/meta.json index 67420cf3fb9..32dd26c683c 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/syndiecommander.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/syndiecommander.rsi/meta.json @@ -29,14 +29,6 @@ "name": "on-equipped-HELMET-vox", "directions": 4 }, - { - "name": "off-equipped-HELMET-dog", - "directions": 4 - }, - { - "name": "on-equipped-HELMET-dog", - "directions": 4 - }, { "name": "on-equipped-HELMET-vulpkanin", "directions": 4 @@ -46,4 +38,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Head/Hardsuits/syndieelite.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/syndieelite.rsi/meta.json index 6875326c5f3..4d19e541d00 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/syndieelite.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/syndieelite.rsi/meta.json @@ -29,14 +29,6 @@ "name": "on-equipped-HELMET-vox", "directions": 4 }, - { - "name": "off-equipped-HELMET-dog", - "directions": 4 - }, - { - "name": "on-equipped-HELMET-dog", - "directions": 4 - }, { "name": "on-equipped-HELMET-vulpkanin", "directions": 4 @@ -46,4 +38,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Head/Hats/wizardhat.rsi/equipped-HELMET-dog.png b/Resources/Textures/Clothing/Head/Hats/wizardhat.rsi/equipped-HELMET-dog.png deleted file mode 100644 index 03d7d5a11d75a0b46559ac22bd708d73a8789652..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7513 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 TqC)cDF9YPhDoa;MngsqI`EQ8R diff --git a/Resources/Textures/Clothing/Head/Hats/wizardhat.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/wizardhat.rsi/meta.json index 03229e284dc..cb9b30f249b 100644 --- a/Resources/Textures/Clothing/Head/Hats/wizardhat.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/wizardhat.rsi/meta.json @@ -18,10 +18,6 @@ "name": "equipped-HELMET-hamster", "directions": 4 }, - { - "name": "equipped-HELMET-dog", - "directions": 4 - }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/Head/Helmets/eva.rsi/equipped-HELMET-dog.png b/Resources/Textures/Clothing/Head/Helmets/eva.rsi/equipped-HELMET-dog.png deleted file mode 100644 index 1b6700fe5aa45cf787fccae954db0516206bb710..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10973 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 diff --git a/Resources/Textures/Clothing/Head/Helmets/eva.rsi/meta.json b/Resources/Textures/Clothing/Head/Helmets/eva.rsi/meta.json index 12f9dcfd9a8..91e0841f820 100644 --- a/Resources/Textures/Clothing/Head/Helmets/eva.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Helmets/eva.rsi/meta.json @@ -22,10 +22,6 @@ "name": "equipped-HELMET-reptilian", "directions": 4 }, - { - "name": "equipped-HELMET-dog", - "directions": 4 - }, { "name": "equipped-HELMET-vulpkanin", "directions": 4 diff --git a/Resources/Textures/Clothing/Head/Helmets/eva_large.rsi/equipped-HELMET-dog.png b/Resources/Textures/Clothing/Head/Helmets/eva_large.rsi/equipped-HELMET-dog.png deleted file mode 100644 index 812e61de4fab7db7e31919c005080377f242ceda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10995 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 diff --git a/Resources/Textures/Clothing/Head/Helmets/eva_large.rsi/meta.json b/Resources/Textures/Clothing/Head/Helmets/eva_large.rsi/meta.json index 0212f8f482e..ca7a447fc1a 100644 --- a/Resources/Textures/Clothing/Head/Helmets/eva_large.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Helmets/eva_large.rsi/meta.json @@ -22,10 +22,6 @@ "name": "equipped-HELMET-reptilian", "directions": 4 }, - { - "name": "equipped-HELMET-dog", - "directions": 4 - }, { "name": "equipped-HELMET-vulpkanin", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/atmospherics.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/atmospherics.rsi/meta.json index 983e44c93b6..3a6eeb7df5e 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/atmospherics.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/atmospherics.rsi/meta.json @@ -18,10 +18,6 @@ "name": "equipped-OUTERCLOTHING-vox", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/capspace.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/capspace.rsi/meta.json index 3f4c0ae304f..7161b7548f3 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/capspace.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/capspace.rsi/meta.json @@ -18,10 +18,6 @@ "name": "equipped-OUTERCLOTHING-vox", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/meta.json index 8a0735485a3..d313024bd6b 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/meta.json @@ -22,10 +22,6 @@ "name": "equipped-OUTERCLOTHING-monkey", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering-white.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering-white.rsi/meta.json index 983e44c93b6..3a6eeb7df5e 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering-white.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering-white.rsi/meta.json @@ -18,10 +18,6 @@ "name": "equipped-OUTERCLOTHING-vox", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/meta.json index 983e44c93b6..3a6eeb7df5e 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/meta.json @@ -18,10 +18,6 @@ "name": "equipped-OUTERCLOTHING-vox", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/goliath.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/goliath.rsi/meta.json index e2b7471e42d..f872654b17d 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/goliath.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/goliath.rsi/meta.json @@ -19,10 +19,6 @@ "name": "equipped-OUTERCLOTHING-vox", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/meta.json index 983e44c93b6..3a6eeb7df5e 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/meta.json @@ -18,10 +18,6 @@ "name": "equipped-OUTERCLOTHING-vox", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/meta.json index 62e74cee0f8..2b79a67af88 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/meta.json @@ -25,10 +25,6 @@ "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/rd.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/rd.rsi/meta.json index 983e44c93b6..3a6eeb7df5e 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/rd.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/rd.rsi/meta.json @@ -18,10 +18,6 @@ "name": "equipped-OUTERCLOTHING-vox", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/meta.json index 983e44c93b6..3a6eeb7df5e 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/meta.json @@ -18,10 +18,6 @@ "name": "equipped-OUTERCLOTHING-vox", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/security.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/security.rsi/meta.json index fb34bf64cd3..aca1a6fd26e 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/security.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/security.rsi/meta.json @@ -18,10 +18,6 @@ "name": "equipped-OUTERCLOTHING-vox", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/spatio.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/spatio.rsi/meta.json index 25749d6d5bf..7defa58a190 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/spatio.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/spatio.rsi/meta.json @@ -19,10 +19,6 @@ "name": "equipped-OUTERCLOTHING-vox", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiecommander.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiecommander.rsi/meta.json index dea60f75e5d..db72a47d2c4 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiecommander.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiecommander.rsi/meta.json @@ -18,10 +18,6 @@ "name": "equipped-OUTERCLOTHING-vox", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndieelite.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndieelite.rsi/meta.json index 02a39b5bd8d..de70aeb81f1 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndieelite.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndieelite.rsi/meta.json @@ -18,10 +18,6 @@ "name": "equipped-OUTERCLOTHING-vox", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/wizard.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/wizard.rsi/meta.json index 983e44c93b6..3a6eeb7df5e 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/wizard.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/wizard.rsi/meta.json @@ -18,10 +18,6 @@ "name": "equipped-OUTERCLOTHING-vox", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/wizard.rsi/equipped-OUTERCLOTHING-dog.png b/Resources/Textures/Clothing/OuterClothing/Misc/wizard.rsi/equipped-OUTERCLOTHING-dog.png deleted file mode 100644 index 57054329cbbbdd7482bdfd05f8ff25f8efe04a7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1441 zcmV;S1z!4zP)Px)K}keGRCt{2nomd@c@)RLV-hlC%eGWmQWmxcMQSBENDj(gT4yAxH|bxZ_ABd3%`r#>xMg z{IOg3eIR5q^P72pesA7yGVcK#4u`|xa5bIUta%lSgR6gh90;gPrqms17+Jigy$ z+MaLD0eZvpsm2ja)d;WGIJ3+x?@%NzYR0>qvi1Q~r$pkSDfxyy#e@fcyI%2}k@-Dx zIpwNCvXXqpQed%Q%+Tn#wq0-eniBOKSB-p&+e;R=m+S*uWFOd~=I%$@Hapgk2mpZQ z?ng8=F^p1?z-IpG!b^M(J*#_uvADftZ5;prSdVrA0HU-H+0h07P%d_=-?25M!+t~Z z4d;N7`8}GN7{=3umvA{{jLh#*bk{@dyW`itG~=fxhA}d~SJx=)!j6r>P9rvPBe35FwJ`qdW*HW4-{ zhL!bA%sl7;09?MMhUCnH9;~cysP;WedTqghkovPyvVAuid zo&x~ECgR2GZH)DMaLLhxv3?I;yxxXj6N`?om2}uIoWwuo%yLPx(Qy+0XebYudJfPF zKS-o<4(0r=q+}K7XIVe{Mvs@moCES;>vFNDvPQs+EQcB60fP=GmS_OrUFc2DH-Lf! zWmFNPRJx{FnWhF?++Gq}+96m4kU|ipeS8i*6Pmjpk?d&G_BYD-Mo`r)pk-Tw`~T0F znkDu;?sCf7-_XbRyM$8v8>KXd!{Kl^91e%W;cz${&R3;Tb-?qIUDI1(_9p0SIH6v$ zYkqB|e;sySufggmv!)2pb6$~<-zQKjHP2Xn0di<`ydlxR49{)!Q`9)BD zlfs|Bj{vBydkZ+r@{_Yci}5DMt42b-nnhc3DI2-b=(VLXmlJoy#dAK(J2OdZ(wD8^Q=Ox(>(=H zDJK+l05e|i?UQU#lHKF0fLbRM>_rW*Nin#b-=qCnCpzu{M~8=W@rMILPB=RJi7wyz z8SU3PRawmVVq|NTE~gCKy{X-TVvBq>=IZT|PN=vF$cd;{>r03I!ct%nzCZ}R(e5(^ zvLE}=2c#UW+PS{qdyMsa002gf*N+|R_rMo?ukBAcT46u>kRuZSe52j)1wvQ~ENXf( zy(>{R36`qEpTJALfGRi=7qPmr1yTq}DPugVR!LIIKy(lUtAN4Y8*n*g_yVDVh6uJT zyS-#Bktcu>5g;hX6+5j+p&a8yX}@61;GG^!&IYSms?uSY64;%a7Xc)OXjR#MW@hp$4z)Xsf9oq3TCr zmS~bv21zNS%`_01jnXNoGw=04e|g00;m8000000Mb*F00000NkvXXu0mjfwQ#2> diff --git a/Resources/Textures/Clothing/OuterClothing/Misc/wizard.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Misc/wizard.rsi/meta.json index 3a1888148eb..fe969c7454e 100644 --- a/Resources/Textures/Clothing/OuterClothing/Misc/wizard.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Misc/wizard.rsi/meta.json @@ -18,10 +18,6 @@ "name": "equipped-OUTERCLOTHING-vox", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Suits/eva_emergency.rsi/equipped-OUTERCLOTHING-dog.png b/Resources/Textures/Clothing/OuterClothing/Suits/eva_emergency.rsi/equipped-OUTERCLOTHING-dog.png deleted file mode 100644 index 3fb7623926ee75a504c4df2e640dba2f7028cf56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13756 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 Date: Fri, 6 Mar 2026 18:48:17 -0700 Subject: [PATCH 472/603] Brings Estoc DMR accuracy to standard rifle accuracy, removes movement speed debuff (#43038) * Removed accuracy and move speed debuffs for estoc * introduced slight speed reduction * typo --------- Co-authored-by: august-sun <45527070+august.sun@users.noreply.github.com> --- .../Entities/Objects/Weapons/Guns/Rifles/rifles.yml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml index 8d4a38fb598..5324eb6d84d 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Rifles/rifles.yml @@ -237,17 +237,12 @@ - type: Gun soundGunshot: path: /Audio/Weapons/Guns/Gunshots/estocshot.ogg - minAngle: 30 - maxAngle: 43 shotsPerBurst: 3 selectedMode: Burst availableModes: - Burst - SemiAuto burstFireRate: 14 - - type: GunWieldBonus - minAngle: -28 - maxAngle: -25 - type: ItemSlots slots: gun_magazine: @@ -266,13 +261,13 @@ whitelist: tags: - CartridgeRifle - - type: SpeedModifiedOnWield - walkModifier: 0.75 - sprintModifier: 0.75 - type: CursorOffsetRequiresWield - type: EyeCursorOffset maxOffset: 2 pvsIncrease: 0.2 + - type: SpeedModifiedOnWield + walkModifier: 0.9 + sprintModifier: 0.9 - type: ContainerContainer containers: gun_magazine: !type:ContainerSlot From c2681cdb17e5cb55314e92ba4fdc1d4fc3feda8e Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 7 Mar 2026 02:02:00 +0000 Subject: [PATCH 473/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 44b914bf2bf..f9c85f1b3b6 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: K-Dynamic - changes: - - message: Energy shotgun lethal projectiles can now hit holo mobs. - type: Fix - id: 9055 - time: '2025-10-08T15:23:02.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/37920 - author: Hitlinemoss changes: - message: Folders and clipboards are now available in the Trinkets loadout tab. @@ -3985,3 +3978,11 @@ id: 9565 time: '2026-03-06T16:17:47.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43082 +- author: august-sun + changes: + - message: The Estoc DMR now has less slowdown when wielding and the same accuracy + as other rifles. + type: Tweak + id: 9566 + time: '2026-03-07T02:00:51.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43038 From b2b547b8061fb33b07d7ff642c7fc7bbfe40c4c1 Mon Sep 17 00:00:00 2001 From: pathetic meowmeow Date: Fri, 6 Mar 2026 23:13:50 -0500 Subject: [PATCH 474/603] Initial decoupling pass on Damageable (#43103) * Initial decoupling pass on Damageable * ope * e * mroaw * ok sure on the medibot thing * no medibot bounds * okidooks * arcryox era * cryox moment --- .../Damage/DamageVisualsComponent.cs | 6 +- Content.Client/Damage/DamageVisualsSystem.cs | 17 ++-- .../UI/HealthAnalyzerControl.xaml.cs | 12 ++- .../Medical/Cryogenics/CryoPodWindow.xaml.cs | 5 +- .../Overlays/EntityHealthBarOverlay.cs | 10 ++- .../DamageOverlayUiController.cs | 10 ++- .../Tests/Commands/RejuvenateTest.cs | 2 +- .../Tests/Commands/SuicideCommandTests.cs | 8 +- .../Construction/Interaction/WindowRepair.cs | 7 +- .../Tests/Damageable/DamageableTest.cs | 55 ++++++------ .../DestructibleDamageGroupTest.cs | 2 +- .../DestructibleThresholdActivationTest.cs | 8 +- .../Tests/GameRules/NukeOpsTest.cs | 5 +- .../Tests/Medical/DefibrillatorTest.cs | 6 +- .../Tests/Mousetrap/MousetrapTest.cs | 21 +++-- .../Tests/Vending/VendingInteractionTest.cs | 6 +- .../Tests/Weapons/WeaponTests.cs | 11 ++- .../Systems/AdminVerbSystem.Smites.cs | 6 +- .../Atmos/EntitySystems/BarotraumaSystem.cs | 3 +- Content.Server/Cloning/CloningPodSystem.cs | 4 +- .../Construction/Conditions/MinHealth.cs | 87 ------------------- .../Damage/Systems/ExaminableDamageSystem.cs | 4 +- .../EntitySystems/ExplosionSystem.Airtight.cs | 4 +- Content.Server/Ghost/GhostSystem.cs | 3 +- Content.Server/Mech/Systems/MechSystem.cs | 2 +- Content.Server/Medical/CryoPodSystem.cs | 5 +- Content.Server/Mining/MeteorSystem.cs | 5 +- .../Specific/PickNearbyInjectableOperator.cs | 6 +- .../NPC/Systems/NPCUtilitySystem.cs | 7 +- .../Projectiles/ProjectileSystem.cs | 2 +- .../Silicons/Borgs/BorgSystem.Transponder.cs | 2 +- Content.Server/Silicons/Borgs/BorgSystem.cs | 2 + .../Silicons/StationAi/StationAiSystem.cs | 6 +- .../DamagedSiliconAccentSystem.cs | 4 +- Content.Server/Spreader/KudzuSystem.cs | 7 +- .../Blocking/BlockingSystem.User.cs | 4 +- .../Components/ChangelingDevourComponent.cs | 6 -- .../Systems/ChangelingDevourSystem.cs | 11 +-- Content.Shared/Chat/SharedSuicideSystem.cs | 4 +- .../Damage/Components/DamageableComponent.cs | 6 +- .../Damage/Components/GodmodeComponent.cs | 3 - .../Components/PassiveDamageComponent.cs | 6 -- Content.Shared/Damage/DamageSpecifier.cs | 6 +- Content.Shared/Damage/DamageVisualizerKeys.cs | 8 +- .../Damage/Systems/DamagePopupSystem.cs | 3 +- .../Damage/Systems/DamageableSystem.API.cs | 54 +++++++++++- .../Damage/Systems/PassiveDamageSystem.cs | 3 - .../Damage/Systems/SharedGodmodeSystem.cs | 13 --- .../Damage/Systems/SlowOnDamageSystem.cs | 7 +- .../Destructible/SharedDestructibleSystem.cs | 5 ++ .../Triggers/DamageGroupTrigger.cs | 2 +- .../Destructible/Triggers/DamageTrigger.cs | 2 +- .../Triggers/DamageTypeTrigger.cs | 2 +- .../DamageGroupEntityConditionSystem.cs | 38 -------- .../DamageTypeEntityConditionSystem.cs | 39 --------- .../TotalDamageEntityConditionSystem.cs | 33 ------- .../StoreDamageTakenOnMindSystem.cs | 7 +- .../HealthExaminableSystem.cs | 5 +- .../Medical/Cryogenics/CryoPodComponent.cs | 5 +- .../Medical/Healing/HealingSystem.cs | 4 +- .../Medical/SharedDefibrillatorSystem.cs | 3 +- .../Medical/Stethoscope/StethoscopeSystem.cs | 5 +- .../SuitSensors/SharedSuitSensorSystem.cs | 6 +- .../Mobs/Systems/MobThresholdSystem.cs | 7 +- Content.Shared/Repairable/RepairableSystem.cs | 10 ++- .../Silicons/Bots/MedibotComponent.cs | 23 ----- Content.Shared/Silicons/Bots/MedibotSystem.cs | 6 +- .../Locale/en-US/reagents/meta/medicine.ftl | 3 - Resources/Prototypes/Body/Species/slime.yml | 1 - Resources/Prototypes/Body/Species/vox.yml | 1 - Resources/Prototypes/Body/species_base.yml | 1 - .../Prototypes/Entities/Mobs/NPCs/animals.yml | 1 - .../Entities/Mobs/NPCs/living_light.yml | 1 - .../Entities/Mobs/NPCs/miscellaneous.yml | 1 - .../Prototypes/Entities/Mobs/NPCs/silicon.yml | 2 - .../Specific/Chemistry/chemistry-bottles.yml | 16 ---- .../Objects/Specific/Medical/morgue.yml | 2 +- .../Objects/Specific/Medical/randompill.yml | 1 - Resources/Prototypes/Reagents/medicine.yml | 53 +---------- Resources/Prototypes/Reagents/narcotics.yml | 8 +- .../Prototypes/Recipes/Reactions/medicine.yml | 14 --- .../Guidebook/Medical/Cryogenics.xml | 2 +- .../ServerInfo/Guidebook/Service/Botany.xml | 1 - 83 files changed, 281 insertions(+), 513 deletions(-) delete mode 100644 Content.Server/Construction/Conditions/MinHealth.cs delete mode 100644 Content.Shared/EntityConditions/Conditions/DamageGroupEntityConditionSystem.cs delete mode 100644 Content.Shared/EntityConditions/Conditions/DamageTypeEntityConditionSystem.cs delete mode 100644 Content.Shared/EntityConditions/Conditions/TotalDamageEntityConditionSystem.cs diff --git a/Content.Client/Damage/DamageVisualsComponent.cs b/Content.Client/Damage/DamageVisualsComponent.cs index 90171e78f95..26356496bb6 100644 --- a/Content.Client/Damage/DamageVisualsComponent.cs +++ b/Content.Client/Damage/DamageVisualsComponent.cs @@ -1,4 +1,6 @@ +using Content.Shared.Damage.Prototypes; using Content.Shared.FixedPoint; +using Robust.Shared.Prototypes; namespace Content.Client.Damage; @@ -55,7 +57,7 @@ public sealed partial class DamageVisualsComponent : Component /// (for example, Brute), and has a value /// of a DamageVisualizerSprite (see below) /// - [DataField("damageOverlayGroups")] public Dictionary? DamageOverlayGroups; + [DataField("damageOverlayGroups")] public Dictionary, DamageVisualizerSprite>? DamageOverlayGroups; /// /// Sets if you want sprites to overlay the @@ -84,7 +86,7 @@ public sealed partial class DamageVisualsComponent : Component /// what kind of damage combination /// you would want, on which threshold. /// - [DataField("damageGroup")] public string? DamageGroup; + [DataField("damageGroup")] public ProtoId? DamageGroup; /// /// Set this if you want incoming damage to be diff --git a/Content.Client/Damage/DamageVisualsSystem.cs b/Content.Client/Damage/DamageVisualsSystem.cs index ac3ff819aa9..a7eed4b06c2 100644 --- a/Content.Client/Damage/DamageVisualsSystem.cs +++ b/Content.Client/Damage/DamageVisualsSystem.cs @@ -2,6 +2,7 @@ using Content.Shared.Damage; using Content.Shared.Damage.Components; using Content.Shared.Damage.Prototypes; +using Content.Shared.Damage.Systems; using Content.Shared.FixedPoint; using Robust.Client.GameObjects; using Robust.Shared.Prototypes; @@ -28,6 +29,7 @@ namespace Content.Client.Damage; public sealed class DamageVisualsSystem : VisualizerSystem { [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; public override void Initialize() { @@ -174,7 +176,7 @@ private void InitializeVisualizer(EntityUid entity, DamageVisualsComponent damag // See if that group is in our entity's damage container. else if (!damageVisComp.Overlay && damageVisComp.DamageGroup != null) { - if (!damageContainer.SupportedGroups.Contains(damageVisComp.DamageGroup)) + if (!damageContainer.SupportedGroups.Contains(damageVisComp.DamageGroup.Value)) { Log.Error($"Damage keys were invalid for entity {entity}."); damageVisComp.Valid = false; @@ -384,7 +386,7 @@ private void HandleDamage(EntityUid uid, AppearanceComponent component, DamageVi if (!AppearanceSystem.TryGetData(uid, DamageVisualizerKeys.DamageUpdateGroups, out var data, component)) { - data = new DamageVisualizerGroupData(Comp(uid).DamagePerGroup.Keys.ToList()); + data = new DamageVisualizerGroupData(_damageable.GetDamagePerGroup(uid).Keys.ToList()); } UpdateDamageVisuals(data.GroupList, (uid, damageComponent, spriteComponent, damageVisComp)); @@ -486,11 +488,10 @@ private void ReorderOverlaySprite(Entity spriteEnt, DamageVisua /// private void UpdateDamageVisuals(Entity entity) { - var damageComponent = entity.Comp1; var spriteComponent = entity.Comp2; var damageVisComp = entity.Comp3; - if (!CheckThresholdBoundary(damageComponent.TotalDamage, damageVisComp.LastDamageThreshold, damageVisComp, out var threshold)) + if (!CheckThresholdBoundary(_damageable.GetTotalDamage(entity.AsNullable()), damageVisComp.LastDamageThreshold, damageVisComp, out var threshold)) return; damageVisComp.LastDamageThreshold = threshold; @@ -513,11 +514,11 @@ private void UpdateDamageVisuals(Entity - private void UpdateDamageVisuals(List delta, Entity entity) + private void UpdateDamageVisuals(List> delta, Entity entity) { - var damageComponent = entity.Comp1; var spriteComponent = entity.Comp2; var damageVisComp = entity.Comp3; + var damage = _damageable.GetAllDamage((entity.Owner, entity.Comp1)); foreach (var damageGroup in delta) { @@ -525,7 +526,7 @@ private void UpdateDamageVisuals(List delta, Entity(damageGroup, out var damageGroupPrototype) - || !damageComponent.Damage.TryGetDamageInGroup(damageGroupPrototype, out var damageTotal)) + || !damage.TryGetDamageInGroup(damageGroupPrototype, out var damageTotal)) continue; if (!damageVisComp.LastThresholdPerGroup.TryGetValue(damageGroup, out var lastThreshold) @@ -590,7 +591,7 @@ private void ForceUpdateLayers(Entity() { damageVisComp.DamageGroup }, entity); + UpdateDamageVisuals(new() { damageVisComp.DamageGroup.Value }, entity); } else if (damageVisComp.DamageOverlay != null) { diff --git a/Content.Client/HealthAnalyzer/UI/HealthAnalyzerControl.xaml.cs b/Content.Client/HealthAnalyzer/UI/HealthAnalyzerControl.xaml.cs index 80b3e4b6a70..6a963b1a33a 100644 --- a/Content.Client/HealthAnalyzer/UI/HealthAnalyzerControl.xaml.cs +++ b/Content.Client/HealthAnalyzer/UI/HealthAnalyzerControl.xaml.cs @@ -3,6 +3,7 @@ using Content.Shared.Atmos; using Content.Shared.Damage.Components; using Content.Shared.Damage.Prototypes; +using Content.Shared.Damage.Systems; using Content.Shared.FixedPoint; using Content.Shared.Humanoid; using Content.Shared.Humanoid.Prototypes; @@ -30,6 +31,7 @@ public sealed partial class HealthAnalyzerControl : BoxContainer private readonly SpriteSystem _spriteSystem; private readonly IPrototypeManager _prototypes; private readonly IResourceCache _cache; + private readonly DamageableSystem _damageable; public HealthAnalyzerControl() { @@ -40,6 +42,7 @@ public HealthAnalyzerControl() _spriteSystem = _entityManager.System(); _prototypes = dependencies.Resolve(); _cache = dependencies.Resolve(); + _damageable = _entityManager.System(); } public void Populate(HealthAnalyzerUiState state) @@ -101,7 +104,7 @@ public void Populate(HealthAnalyzerUiState state) // Total Damage - DamageLabel.Text = damageable.TotalDamage.ToString(); + DamageLabel.Text = _damageable.GetTotalDamage(target.Value).ToString(); // Alerts @@ -132,10 +135,11 @@ public void Populate(HealthAnalyzerUiState state) // Damage Groups var damageSortedGroups = - damageable.DamagePerGroup.OrderByDescending(damage => damage.Value) + _damageable.GetDamagePerGroup(target.Value) + .OrderByDescending(damage => damage.Value) .ToDictionary(x => x.Key, x => x.Value); - var damagePerType = damageable.Damage.DamageDict; + var damagePerType = _damageable.GetAllDamage(target.Value).DamageDict; DrawDiagnosticGroups(damageSortedGroups, damagePerType); } @@ -152,7 +156,7 @@ private static string GetStatus(MobState mobState) } private void DrawDiagnosticGroups( - Dictionary groups, + Dictionary, FixedPoint2> groups, IReadOnlyDictionary, FixedPoint2> damageDict) { GroupsContainer.RemoveAllChildren(); diff --git a/Content.Client/Medical/Cryogenics/CryoPodWindow.xaml.cs b/Content.Client/Medical/Cryogenics/CryoPodWindow.xaml.cs index f1d0e038f47..51ff5c1a00e 100644 --- a/Content.Client/Medical/Cryogenics/CryoPodWindow.xaml.cs +++ b/Content.Client/Medical/Cryogenics/CryoPodWindow.xaml.cs @@ -4,6 +4,7 @@ using Content.Shared.Atmos; using Content.Shared.Chemistry.Reagent; using Content.Shared.Damage.Components; +using Content.Shared.Damage.Systems; using Content.Shared.EntityConditions.Conditions; using Content.Shared.FixedPoint; using Content.Shared.Medical.Cryogenics; @@ -86,9 +87,7 @@ public void Populate(CryoPodUserMessage msg) // Health analyzer var maybePatient = _entityManager.GetEntity(msg.Health.TargetEntity); var hasPatient = msg.Health.TargetEntity.HasValue; - var hasDamage = (hasPatient - && _entityManager.TryGetComponent(maybePatient, out DamageableComponent? damageable) - && damageable.TotalDamage > 0); + var hasDamage = hasPatient && msg.HasDamage; NoDamageText.Visible = (hasPatient && !hasDamage); HealthSection.Visible = hasPatient; diff --git a/Content.Client/Overlays/EntityHealthBarOverlay.cs b/Content.Client/Overlays/EntityHealthBarOverlay.cs index 55fc1e09743..e0bc50a33ce 100644 --- a/Content.Client/Overlays/EntityHealthBarOverlay.cs +++ b/Content.Client/Overlays/EntityHealthBarOverlay.cs @@ -2,6 +2,7 @@ using Content.Client.StatusIcon; using Content.Client.UserInterface.Systems; using Content.Shared.Damage.Components; +using Content.Shared.Damage.Systems; using Content.Shared.FixedPoint; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; @@ -30,6 +31,7 @@ public sealed class EntityHealthBarOverlay : Overlay private readonly StatusIconSystem _statusIconSystem; private readonly SpriteSystem _spriteSystem; private readonly ProgressColorSystem _progressColor; + private readonly DamageableSystem _damageable; public override OverlaySpace Space => OverlaySpace.WorldSpaceBelowFOV; @@ -46,6 +48,7 @@ public EntityHealthBarOverlay(IEntityManager entManager, IPrototypeManager proto _statusIconSystem = _entManager.System(); _spriteSystem = _entManager.System(); _progressColor = _entManager.System(); + _damageable = _entManager.System(); } protected override void Draw(in OverlayDrawArgs args) @@ -129,16 +132,17 @@ protected override void Draw(in OverlayDrawArgs args) /// private (float ratio, bool inCrit)? CalcProgress(EntityUid uid, MobStateComponent component, DamageableComponent dmg, MobThresholdsComponent thresholds) { + var totalDamage = _damageable.GetTotalDamage((uid, dmg)); if (_mobStateSystem.IsAlive(uid, component)) { - if (dmg.HealthBarThreshold != null && dmg.TotalDamage < dmg.HealthBarThreshold) + if (dmg.HealthBarThreshold != null && totalDamage < dmg.HealthBarThreshold) return null; if (!_mobThresholdSystem.TryGetThresholdForState(uid, MobState.Critical, out var threshold, thresholds) && !_mobThresholdSystem.TryGetThresholdForState(uid, MobState.Dead, out threshold, thresholds)) return (1, false); - var ratio = 1 - ((FixedPoint2)(dmg.TotalDamage / threshold)).Float(); + var ratio = 1 - ((FixedPoint2)(totalDamage / threshold)).Float(); return (ratio, false); } @@ -150,7 +154,7 @@ protected override void Draw(in OverlayDrawArgs args) return (1, true); } - var ratio = 1 - ((dmg.TotalDamage - critThreshold) / (deadThreshold - critThreshold)).Value.Float(); + var ratio = 1 - ((totalDamage - critThreshold) / (deadThreshold - critThreshold)).Value.Float(); return (ratio, true); } diff --git a/Content.Client/UserInterface/Systems/DamageOverlays/DamageOverlayUiController.cs b/Content.Client/UserInterface/Systems/DamageOverlays/DamageOverlayUiController.cs index f709df4b775..3c14e7c6b7e 100644 --- a/Content.Client/UserInterface/Systems/DamageOverlays/DamageOverlayUiController.cs +++ b/Content.Client/UserInterface/Systems/DamageOverlays/DamageOverlayUiController.cs @@ -1,4 +1,5 @@ using Content.Shared.Damage.Components; +using Content.Shared.Damage.Systems; using Content.Shared.FixedPoint; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; @@ -22,6 +23,7 @@ public sealed class DamageOverlayUiController : UIController [UISystemDependency] private readonly MobThresholdSystem _mobThresholdSystem = default!; [UISystemDependency] private readonly StatusEffectsSystem _statusEffects = default!; + [UISystemDependency] private readonly DamageableSystem _damageable = default!; private Overlays.DamageOverlay _overlay = default!; public override void Initialize() @@ -90,6 +92,7 @@ private void UpdateOverlays(EntityUid entity, MobStateComponent? mobState, Damag return; //this entity intentionally has no overlays } + var damagePerGroup = _damageable.GetDamagePerGroup((entity, damageable)); var critThreshold = foundThreshold.Value; _overlay.State = mobState.CurrentState; @@ -104,7 +107,8 @@ private void UpdateOverlays(EntityUid entity, MobStateComponent? mobState, Damag { foreach (var painDamageType in damageable.PainDamageGroups) { - damageable.DamagePerGroup.TryGetValue(painDamageType, out var painDamage); + + damagePerGroup.TryGetValue(painDamageType, out var painDamage); painLevel += painDamage; } _overlay.PainLevel = FixedPoint2.Min(1f, painLevel / critThreshold).Float(); @@ -115,7 +119,7 @@ private void UpdateOverlays(EntityUid entity, MobStateComponent? mobState, Damag } } - if (damageable.DamagePerGroup.TryGetValue("Airloss", out var oxyDamage)) + if (damagePerGroup.TryGetValue("Airloss", out var oxyDamage)) { _overlay.OxygenLevel = FixedPoint2.Min(1f, oxyDamage / critThreshold).Float(); } @@ -127,7 +131,7 @@ private void UpdateOverlays(EntityUid entity, MobStateComponent? mobState, Damag case MobState.Critical: { if (!_mobThresholdSystem.TryGetDeadPercentage(entity, - FixedPoint2.Max(0.0, damageable.TotalDamage), out var critLevel)) + FixedPoint2.Max(0.0, _damageable.GetTotalDamage((entity, damageable))), out var critLevel)) return; _overlay.CritLevel = critLevel.Value.Float(); diff --git a/Content.IntegrationTests/Tests/Commands/RejuvenateTest.cs b/Content.IntegrationTests/Tests/Commands/RejuvenateTest.cs index 87ff00691a6..308f2797c44 100644 --- a/Content.IntegrationTests/Tests/Commands/RejuvenateTest.cs +++ b/Content.IntegrationTests/Tests/Commands/RejuvenateTest.cs @@ -89,7 +89,7 @@ await server.WaitAssertion(() => Assert.That(mobStateSystem.IsDead(human, mobState), Is.False); Assert.That(mobStateSystem.IsIncapacitated(human, mobState), Is.False); - Assert.That(damageable.TotalDamage, Is.EqualTo(FixedPoint2.Zero)); + Assert.That(damSystem.GetTotalDamage((human, damageable)), Is.EqualTo(FixedPoint2.Zero)); }); }); await pair.CleanReturnAsync(); diff --git a/Content.IntegrationTests/Tests/Commands/SuicideCommandTests.cs b/Content.IntegrationTests/Tests/Commands/SuicideCommandTests.cs index 57e8bfd4496..32f1f6128e3 100644 --- a/Content.IntegrationTests/Tests/Commands/SuicideCommandTests.cs +++ b/Content.IntegrationTests/Tests/Commands/SuicideCommandTests.cs @@ -138,7 +138,6 @@ public async Task TestSuicideWhileDamaged() MindComponent mindComponent = default; MobStateComponent mobStateComp = default; MobThresholdsComponent mobThresholdsComp = default; - DamageableComponent damageableComp = default; await server.WaitPost(() => { if (mind != null) @@ -146,7 +145,6 @@ await server.WaitPost(() => mobStateComp = entManager.GetComponent(player); mobThresholdsComp = entManager.GetComponent(player); - damageableComp = entManager.GetComponent(player); var slashProto = protoMan.Index(DamageType); damageableSystem.TryChangeDamage(player, new DamageSpecifier(slashProto, FixedPoint2.New(46.5))); @@ -165,7 +163,7 @@ await server.WaitAssertion(() => Assert.That(mobStateSystem.IsDead(player, mobStateComp)); Assert.That(entManager.TryGetComponent(mindComponent.CurrentEntity, out var ghostComp) && !ghostComp.CanReturnToBody); - Assert.That(damageableComp.Damage.GetTotal(), Is.EqualTo(lethalDamageThreshold)); + Assert.That(damageableSystem.GetTotalDamage(player), Is.EqualTo(lethalDamageThreshold)); }); }); @@ -291,7 +289,7 @@ await server.WaitAssertion(() => Assert.That(mobStateSystem.IsDead(player, mobStateComp)); Assert.That(entManager.TryGetComponent(mindComponent.CurrentEntity, out var ghostComp) && !ghostComp.CanReturnToBody); - Assert.That(damageableComp.Damage.DamageDict["Slash"], Is.EqualTo(lethalDamageThreshold)); + Assert.That(damageableSystem.GetAllDamage((player, damageableComp)).DamageDict["Slash"], Is.EqualTo(lethalDamageThreshold)); }); }); @@ -366,7 +364,7 @@ await server.WaitAssertion(() => Assert.That(mobStateSystem.IsDead(player, mobStateComp)); Assert.That(entManager.TryGetComponent(mindComponent.CurrentEntity, out var ghostComp) && !ghostComp.CanReturnToBody); - Assert.That(damageableComp.Damage.DamageDict["Slash"], Is.EqualTo(lethalDamageThreshold / 2)); + Assert.That(damageableSystem.GetAllDamage((player, damageableComp)).DamageDict["Slash"], Is.EqualTo(lethalDamageThreshold / 2)); }); }); diff --git a/Content.IntegrationTests/Tests/Construction/Interaction/WindowRepair.cs b/Content.IntegrationTests/Tests/Construction/Interaction/WindowRepair.cs index 5a4d284c0fc..582a05e9740 100644 --- a/Content.IntegrationTests/Tests/Construction/Interaction/WindowRepair.cs +++ b/Content.IntegrationTests/Tests/Construction/Interaction/WindowRepair.cs @@ -19,17 +19,16 @@ public async Task RepairReinforcedWindow() // Damage the entity. var sys = SEntMan.System(); - var comp = Comp(); var damageType = Server.ProtoMan.Index(BluntDamageType); var damage = new DamageSpecifier(damageType, FixedPoint2.New(10)); - Assert.That(comp.Damage.GetTotal(), Is.EqualTo(FixedPoint2.Zero)); + Assert.That(sys.GetTotalDamage(STarget.Value), Is.EqualTo(FixedPoint2.Zero)); await Server.WaitPost(() => sys.TryChangeDamage(SEntMan.GetEntity(Target).Value, damage, ignoreResistances: true)); await RunTicks(5); - Assert.That(comp.Damage.GetTotal(), Is.GreaterThan(FixedPoint2.Zero)); + Assert.That(sys.GetTotalDamage(STarget.Value), Is.GreaterThan(FixedPoint2.Zero)); // Repair the entity await InteractUsing(Weld); - Assert.That(comp.Damage.GetTotal(), Is.EqualTo(FixedPoint2.Zero)); + Assert.That(sys.GetTotalDamage(STarget.Value), Is.EqualTo(FixedPoint2.Zero)); // Validate that we can still deconstruct the entity (i.e., that welding deconstruction is not blocked). await Interact( diff --git a/Content.IntegrationTests/Tests/Damageable/DamageableTest.cs b/Content.IntegrationTests/Tests/Damageable/DamageableTest.cs index 11e7abd8a9c..9777054625f 100644 --- a/Content.IntegrationTests/Tests/Damageable/DamageableTest.cs +++ b/Content.IntegrationTests/Tests/Damageable/DamageableTest.cs @@ -147,6 +147,7 @@ await server.WaitPost(() => await server.WaitAssertion(() => { var uid = sDamageableEntity; + var ent = new Entity(uid, sDamageableComponent); // Check that damage is evenly distributed over a group if its a nice multiple var types = group3.DamageTypes; @@ -157,11 +158,11 @@ await server.WaitAssertion(() => Assert.Multiple(() => { - Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(damageToDeal)); - Assert.That(sDamageableComponent.DamagePerGroup[group3.ID], Is.EqualTo(damageToDeal)); + Assert.That(sDamageableSystem.GetTotalDamage(ent), Is.EqualTo(damageToDeal)); + Assert.That(sDamageableSystem.GetDamagePerGroup(ent)[group3.ID], Is.EqualTo(damageToDeal)); foreach (var type in types) { - Assert.That(sDamageableComponent.Damage.DamageDict.TryGetValue(type, out typeDamage)); + Assert.That(sDamageableSystem.GetAllDamage(uid).DamageDict.TryGetValue(type, out typeDamage)); Assert.That(typeDamage, Is.EqualTo(damageToDeal / types.Count)); } }); @@ -171,11 +172,11 @@ await server.WaitAssertion(() => Assert.Multiple(() => { - Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(FixedPoint2.Zero)); - Assert.That(sDamageableComponent.DamagePerGroup[group3.ID], Is.EqualTo(FixedPoint2.Zero)); + Assert.That(sDamageableSystem.GetTotalDamage(ent), Is.EqualTo(FixedPoint2.Zero)); + Assert.That(sDamageableSystem.GetDamagePerGroup(ent)[group3.ID], Is.EqualTo(FixedPoint2.Zero)); foreach (var type in types) { - Assert.That(sDamageableComponent.Damage.DamageDict.TryGetValue(type, out typeDamage)); + Assert.That(sDamageableSystem.GetAllDamage(uid).DamageDict.TryGetValue(type, out typeDamage)); Assert.That(typeDamage, Is.EqualTo(FixedPoint2.Zero)); } }); @@ -190,11 +191,11 @@ await server.WaitAssertion(() => Assert.Multiple(() => { - Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(FixedPoint2.New(14))); - Assert.That(sDamageableComponent.DamagePerGroup[group3.ID], Is.EqualTo(FixedPoint2.New(14))); - Assert.That(sDamageableComponent.Damage.DamageDict[type3a.ID], Is.EqualTo(FixedPoint2.New(4.66f))); - Assert.That(sDamageableComponent.Damage.DamageDict[type3b.ID], Is.EqualTo(FixedPoint2.New(4.67f))); - Assert.That(sDamageableComponent.Damage.DamageDict[type3c.ID], Is.EqualTo(FixedPoint2.New(4.67f))); + Assert.That(sDamageableSystem.GetTotalDamage(ent), Is.EqualTo(FixedPoint2.New(14))); + Assert.That(sDamageableSystem.GetDamagePerGroup(ent)[group3.ID], Is.EqualTo(FixedPoint2.New(14))); + Assert.That(sDamageableSystem.GetAllDamage(uid).DamageDict[type3a.ID], Is.EqualTo(FixedPoint2.New(4.66f))); + Assert.That(sDamageableSystem.GetAllDamage(uid).DamageDict[type3b.ID], Is.EqualTo(FixedPoint2.New(4.67f))); + Assert.That(sDamageableSystem.GetAllDamage(uid).DamageDict[type3c.ID], Is.EqualTo(FixedPoint2.New(4.67f))); }); // Heal @@ -202,36 +203,36 @@ await server.WaitAssertion(() => Assert.Multiple(() => { - Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(FixedPoint2.Zero)); - Assert.That(sDamageableComponent.DamagePerGroup[group3.ID], Is.EqualTo(FixedPoint2.Zero)); + Assert.That(sDamageableSystem.GetTotalDamage(ent), Is.EqualTo(FixedPoint2.Zero)); + Assert.That(sDamageableSystem.GetDamagePerGroup(ent)[group3.ID], Is.EqualTo(FixedPoint2.Zero)); foreach (var type in types) { - Assert.That(sDamageableComponent.Damage.DamageDict.TryGetValue(type, out typeDamage)); + Assert.That(sDamageableSystem.GetAllDamage(uid).DamageDict.TryGetValue(type, out typeDamage)); Assert.That(typeDamage, Is.EqualTo(FixedPoint2.Zero)); } // Test that unsupported groups return false when setting/getting damage (and don't change damage) - Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(FixedPoint2.Zero)); + Assert.That(sDamageableSystem.GetTotalDamage(ent), Is.EqualTo(FixedPoint2.Zero)); }); damage = new DamageSpecifier(group1, FixedPoint2.New(10)) + new DamageSpecifier(type2b, FixedPoint2.New(10)); sDamageableSystem.ChangeDamage(uid, damage, true); Assert.Multiple(() => { - Assert.That(sDamageableComponent.DamagePerGroup.TryGetValue(group1.ID, out _), Is.False); - Assert.That(sDamageableComponent.Damage.DamageDict.TryGetValue(type1.ID, out typeDamage), Is.False); - Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(FixedPoint2.Zero)); + Assert.That(sDamageableSystem.GetDamagePerGroup(ent).TryGetValue(group1.ID, out _), Is.False); + Assert.That(sDamageableSystem.GetAllDamage(uid).DamageDict.TryGetValue(type1.ID, out typeDamage), Is.False); + Assert.That(sDamageableSystem.GetTotalDamage(ent), Is.EqualTo(FixedPoint2.Zero)); }); // Test SetAll and ClearAll function sDamageableSystem.SetAllDamage((sDamageableEntity, sDamageableComponent), 10); - Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(FixedPoint2.New(10 * sDamageableComponent.Damage.DamageDict.Count))); + Assert.That(sDamageableSystem.GetTotalDamage(ent), Is.EqualTo(FixedPoint2.New(10 * sDamageableSystem.GetAllDamage(uid).DamageDict.Count))); sDamageableSystem.SetAllDamage((sDamageableEntity, sDamageableComponent), 0); - Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(FixedPoint2.Zero)); + Assert.That(sDamageableSystem.GetTotalDamage(ent), Is.EqualTo(FixedPoint2.Zero)); sDamageableSystem.SetAllDamage((sDamageableEntity, sDamageableComponent), 10); - Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(FixedPoint2.New(10 * sDamageableComponent.Damage.DamageDict.Count))); + Assert.That(sDamageableSystem.GetTotalDamage(ent), Is.EqualTo(FixedPoint2.New(10 * sDamageableSystem.GetAllDamage(uid).DamageDict.Count))); sDamageableSystem.ClearAllDamage((sDamageableEntity, sDamageableComponent)); - Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(FixedPoint2.Zero)); + Assert.That(sDamageableSystem.GetTotalDamage(ent), Is.EqualTo(FixedPoint2.Zero)); // Test 'wasted' healing sDamageableSystem.ChangeDamage(uid, new DamageSpecifier(type3a, 5)); @@ -240,18 +241,18 @@ await server.WaitAssertion(() => Assert.Multiple(() => { - Assert.That(sDamageableComponent.Damage.DamageDict[type3a.ID], Is.EqualTo(FixedPoint2.New(1.34))); - Assert.That(sDamageableComponent.Damage.DamageDict[type3b.ID], Is.EqualTo(FixedPoint2.New(3.33))); - Assert.That(sDamageableComponent.Damage.DamageDict[type3c.ID], Is.EqualTo(FixedPoint2.New(0))); + Assert.That(sDamageableSystem.GetAllDamage(uid).DamageDict[type3a.ID], Is.EqualTo(FixedPoint2.New(1.34))); + Assert.That(sDamageableSystem.GetAllDamage(uid).DamageDict[type3b.ID], Is.EqualTo(FixedPoint2.New(3.33))); + Assert.That(sDamageableSystem.GetAllDamage(uid).DamageDict[type3c.ID], Is.EqualTo(FixedPoint2.New(0))); }); // Test Over-Healing sDamageableSystem.ChangeDamage(uid, new DamageSpecifier(group3, FixedPoint2.New(-100))); - Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(FixedPoint2.Zero)); + Assert.That(sDamageableSystem.GetTotalDamage(ent), Is.EqualTo(FixedPoint2.Zero)); // Test that if no health change occurred, returns false sDamageableSystem.ChangeDamage(uid, new DamageSpecifier(group3, -100)); - Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(FixedPoint2.Zero)); + Assert.That(sDamageableSystem.GetTotalDamage(ent), Is.EqualTo(FixedPoint2.Zero)); }); await pair.CleanReturnAsync(); } diff --git a/Content.IntegrationTests/Tests/Destructible/DestructibleDamageGroupTest.cs b/Content.IntegrationTests/Tests/Destructible/DestructibleDamageGroupTest.cs index 99f68b3fa39..f5010eefdc1 100644 --- a/Content.IntegrationTests/Tests/Destructible/DestructibleDamageGroupTest.cs +++ b/Content.IntegrationTests/Tests/Destructible/DestructibleDamageGroupTest.cs @@ -117,7 +117,7 @@ await server.WaitAssertion(() => sDamageableSystem.TryChangeDamage(sDestructibleEntity, bruteDamage * -10); Assert.Multiple(() => { - Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(FixedPoint2.New(20))); + Assert.That(sDamageableSystem.GetTotalDamage(sDestructibleEntity), Is.EqualTo(FixedPoint2.New(20))); // No new thresholds reached, healing should not trigger it Assert.That(sTestThresholdListenerSystem.ThresholdsReached, Is.Empty); diff --git a/Content.IntegrationTests/Tests/Destructible/DestructibleThresholdActivationTest.cs b/Content.IntegrationTests/Tests/Destructible/DestructibleThresholdActivationTest.cs index 1736d3d7e34..4460affedf0 100644 --- a/Content.IntegrationTests/Tests/Destructible/DestructibleThresholdActivationTest.cs +++ b/Content.IntegrationTests/Tests/Destructible/DestructibleThresholdActivationTest.cs @@ -195,7 +195,7 @@ await server.WaitAssertion(() => Assert.Multiple(() => { // Check that the total damage matches - Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(FixedPoint2.New(50))); + Assert.That(sDamageableSystem.GetTotalDamage(sDestructibleEntity), Is.EqualTo(FixedPoint2.New(50))); // Both thresholds should have triggered Assert.That(sTestThresholdListenerSystem.ThresholdsReached, Has.Exactly(2).Items); @@ -252,7 +252,7 @@ await server.WaitAssertion(() => sDamageableSystem.ClearAllDamage((sDestructibleEntity, sDamageableComponent)); // Check that the entity has 0 damage - Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(FixedPoint2.Zero)); + Assert.That(sDamageableSystem.GetTotalDamage(sDestructibleEntity), Is.EqualTo(FixedPoint2.Zero)); // Set both thresholds to only trigger once foreach (var destructibleThreshold in sDestructibleComponent.Thresholds) @@ -267,7 +267,7 @@ await server.WaitAssertion(() => Assert.Multiple(() => { // Check that the total damage matches - Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(FixedPoint2.New(50))); + Assert.That(sDamageableSystem.GetTotalDamage(sDestructibleEntity), Is.EqualTo(FixedPoint2.New(50))); // No thresholds should have triggered as they were already triggered before, and they are set to only trigger once Assert.That(sTestThresholdListenerSystem.ThresholdsReached, Is.Empty); @@ -283,7 +283,7 @@ await server.WaitAssertion(() => Assert.Multiple(() => { // Check that the total damage matches - Assert.That(sDamageableComponent.TotalDamage, Is.EqualTo(FixedPoint2.New(50))); + Assert.That(sDamageableSystem.GetTotalDamage(sDestructibleEntity), Is.EqualTo(FixedPoint2.New(50))); // They shouldn't have been triggered by changing TriggersOnce Assert.That(sTestThresholdListenerSystem.ThresholdsReached, Is.Empty); diff --git a/Content.IntegrationTests/Tests/GameRules/NukeOpsTest.cs b/Content.IntegrationTests/Tests/GameRules/NukeOpsTest.cs index ebb58a173c1..53165adca07 100644 --- a/Content.IntegrationTests/Tests/GameRules/NukeOpsTest.cs +++ b/Content.IntegrationTests/Tests/GameRules/NukeOpsTest.cs @@ -11,6 +11,7 @@ using Content.Server.Shuttles.Components; using Content.Shared.CCVar; using Content.Shared.Damage.Components; +using Content.Shared.Damage.Systems; using Content.Shared.FixedPoint; using Content.Shared.GameTicking; using Content.Shared.Hands.Components; @@ -58,6 +59,7 @@ public async Task TryStopNukeOpsFromConstantlyFailing() var invSys = server.System(); var factionSys = server.System(); var roundEndSys = server.System(); + var damageSys = server.System(); server.CfgMan.SetCVar(CCVars.GridFill, true); @@ -231,12 +233,11 @@ void CheckDummy(int i) var totalSeconds = 30; var totalTicks = (int)Math.Ceiling(totalSeconds / server.Timing.TickPeriod.TotalSeconds); var increment = 5; - var damage = entMan.GetComponent(player); for (var tick = 0; tick < totalTicks; tick += increment) { await pair.RunTicksSync(increment); Assert.That(resp.SuffocationCycles, Is.LessThanOrEqualTo(resp.SuffocationCycleThreshold)); - Assert.That(damage.TotalDamage, Is.EqualTo(FixedPoint2.Zero)); + Assert.That(damageSys.GetTotalDamage(player), Is.EqualTo(FixedPoint2.Zero)); } } diff --git a/Content.IntegrationTests/Tests/Medical/DefibrillatorTest.cs b/Content.IntegrationTests/Tests/Medical/DefibrillatorTest.cs index 9781bf5c80f..18361a9d901 100644 --- a/Content.IntegrationTests/Tests/Medical/DefibrillatorTest.cs +++ b/Content.IntegrationTests/Tests/Medical/DefibrillatorTest.cs @@ -47,7 +47,7 @@ public async Task KillAndReviveTest() Assert.Multiple(() => { Assert.That(targetMobState.CurrentState, Is.EqualTo(MobState.Alive), "Target mob was not alive when spawned."); - Assert.That(targetDamageable.TotalDamage, Is.EqualTo(FixedPoint2.Zero), "Target mob was damaged when spawned."); + Assert.That(damageableSystem.GetTotalDamage(STarget!.Value), Is.EqualTo(FixedPoint2.Zero), "Target mob was damaged when spawned."); }); // Get the damage needed to kill or crit the target. @@ -64,7 +64,7 @@ public async Task KillAndReviveTest() Assert.Multiple(() => { Assert.That(targetMobState.CurrentState, Is.EqualTo(MobState.Dead), "Target mob did not die from deadly damage amount."); - Assert.That(targetDamageable.TotalDamage, Is.EqualTo(deathThreshold), "Target mob had the wrong total damage amount after being killed."); + Assert.That(damageableSystem.GetTotalDamage(STarget!.Value), Is.EqualTo(deathThreshold), "Target mob had the wrong total damage amount after being killed."); }); // Spawn a defib and activate it. @@ -82,7 +82,7 @@ public async Task KillAndReviveTest() Assert.Multiple(() => { Assert.That(targetMobState.CurrentState, Is.EqualTo(MobState.Dead), "Target mob was revived despite being over the death damage threshold."); - Assert.That(targetDamageable.TotalDamage, Is.GreaterThan(deathThreshold), "Target mob did not take damage from being defibrillated."); + Assert.That(damageableSystem.GetTotalDamage(STarget!.Value), Is.GreaterThan(deathThreshold), "Target mob did not take damage from being defibrillated."); }); // Set the damage halfway between the crit and death thresholds so that the target can be revived. diff --git a/Content.IntegrationTests/Tests/Mousetrap/MousetrapTest.cs b/Content.IntegrationTests/Tests/Mousetrap/MousetrapTest.cs index 5f1b9172ddd..52432e631b0 100644 --- a/Content.IntegrationTests/Tests/Mousetrap/MousetrapTest.cs +++ b/Content.IntegrationTests/Tests/Mousetrap/MousetrapTest.cs @@ -1,6 +1,7 @@ using Content.IntegrationTests.Tests.Movement; using Content.Server.NPC.HTN; using Content.Shared.Damage.Components; +using Content.Shared.Damage.Systems; using Content.Shared.Item.ItemToggle; using Content.Shared.Item.ItemToggle.Components; using Content.Shared.Mobs; @@ -44,9 +45,8 @@ public async Task MouseMoveOverTest() // The mouse is spawned by the test before the atmosphere is added, so it has some barotrauma damage already // TODO: fix this since it can have an impact on integration tests - Assert.That(SEntMan.TryGetComponent(SPlayer, out var damageComp), - $"Player does not have a DamageableComponent."); - var startingDamage = damageComp.TotalDamage; + var damageSystem = Server.System(); + var startingDamage = damageSystem.GetTotalDamage(SPlayer); Assert.That(SEntMan.TryGetComponent(SPlayer, out var mouseMobStateComp), $"{MouseProtoId} does not have a MobStateComponent."); @@ -58,7 +58,7 @@ public async Task MouseMoveOverTest() Assert.That(Delta(), Is.LessThan(0.5), "Mouse did not move over mousetrap."); // Walking over an inactive trap does not trigger it - Assert.That(damageComp.TotalDamage, Is.LessThanOrEqualTo(startingDamage), "Mouse took damage from inactive trap!"); + Assert.That(damageSystem.GetTotalDamage(SPlayer), Is.LessThanOrEqualTo(startingDamage), "Mouse took damage from inactive trap!"); Assert.That(itemToggleComp.Activated, Is.False, "Mousetrap was activated."); // Activate the trap @@ -72,7 +72,7 @@ await Server.WaitAssertion(() => Assert.That(Delta(), Is.LessThan(0.1), "Mouse moved past active mousetrap."); // Walking over an active trap triggers it - Assert.That(damageComp.TotalDamage, Is.GreaterThan(startingDamage), "Mouse did not take damage from active trap!"); + Assert.That(damageSystem.GetTotalDamage(SPlayer), Is.GreaterThan(startingDamage), "Mouse did not take damage from active trap!"); Assert.That(itemToggleComp.Activated, Is.False, "Mousetrap was not deactivated after triggering."); Assert.That(mouseMobStateComp.CurrentState, Is.EqualTo(MobState.Dead), "Mouse was not killed by trap."); } @@ -117,9 +117,8 @@ await Server.WaitAssertion(() => Assert.That(itemToggleSystem.TrySetActive(STarget.Value, true), "Could not activate the mouse trap."); }); - Assert.That(SEntMan.TryGetComponent(SPlayer, out var damageComp), - $"Player does not have a DamageableComponent."); - var startingDamage = damageComp.TotalDamage; + var damageSystem = Server.System(); + var startingDamage = damageSystem.GetTotalDamage(SPlayer); // Move player over the trap await Move(DirectionFlag.East, 0.5f); @@ -127,7 +126,7 @@ await Server.WaitAssertion(() => Assert.That(Delta(), Is.LessThan(0.5), "Player did not move over mousetrap."); // Walking over the trap without shoes activates it - Assert.That(damageComp.TotalDamage, Is.GreaterThan(startingDamage), "Player did not take damage."); + Assert.That(damageSystem.GetTotalDamage(SPlayer), Is.GreaterThan(startingDamage), "Player did not take damage."); Assert.That(itemToggleComp.Activated, Is.False, "Mousetrap was not deactivated after triggering."); // Reactivate the trap @@ -135,7 +134,7 @@ await Server.WaitAssertion(() => { Assert.That(itemToggleSystem.TrySetActive(STarget.Value, true), "Could not activate the mouse trap."); }); - var afterStepDamage = damageComp.TotalDamage; + var afterStepDamage = damageSystem.GetTotalDamage(SPlayer); // Give the player some shoes await PlaceInHands(ShoesProtoId); @@ -147,7 +146,7 @@ await Server.WaitAssertion(() => Assert.That(Delta(), Is.GreaterThan(0.5), "Player did not move back over mousetrap."); // Walking over the trap with shoes on does not activate it - Assert.That(damageComp.TotalDamage, Is.LessThanOrEqualTo(afterStepDamage), "Player took damage from trap!"); + Assert.That(damageSystem.GetTotalDamage(SPlayer), Is.LessThanOrEqualTo(afterStepDamage), "Player took damage from trap!"); Assert.That(itemToggleComp.Activated, "Mousetrap was deactivated despite the player being protected by shoes."); } } diff --git a/Content.IntegrationTests/Tests/Vending/VendingInteractionTest.cs b/Content.IntegrationTests/Tests/Vending/VendingInteractionTest.cs index af16f1278a4..f7e5bc2a33a 100644 --- a/Content.IntegrationTests/Tests/Vending/VendingInteractionTest.cs +++ b/Content.IntegrationTests/Tests/Vending/VendingInteractionTest.cs @@ -196,14 +196,14 @@ public async Task RepairTest() private async Task BreakVendor() { var damageableSys = SEntMan.System(); - Assert.That(TryComp(out var damageableComp), $"{VendingMachineProtoId} does not have DamageableComponent."); - Assert.That(damageableComp.Damage.GetTotal(), Is.EqualTo(FixedPoint2.Zero), $"{VendingMachineProtoId} started with unexpected damage."); + Assert.That(HasComp(), $"{VendingMachineProtoId} does not have DamageableComponent."); + Assert.That(damageableSys.GetAllDamage(STarget!.Value).GetTotal(), Is.EqualTo(FixedPoint2.Zero), $"{VendingMachineProtoId} started with unexpected damage."); // Damage the vending machine to the point that it breaks var damageType = ProtoMan.Index(TestDamageType); var damage = new DamageSpecifier(damageType, FixedPoint2.New(100)); await Server.WaitPost(() => damageableSys.TryChangeDamage(SEntMan.GetEntity(Target).Value, damage, ignoreResistances: true)); await RunTicks(5); - Assert.That(damageableComp.Damage.GetTotal(), Is.GreaterThan(FixedPoint2.Zero), $"{VendingMachineProtoId} did not take damage."); + Assert.That(damageableSys.GetAllDamage(STarget!.Value).GetTotal(), Is.GreaterThan(FixedPoint2.Zero), $"{VendingMachineProtoId} did not take damage."); } } diff --git a/Content.IntegrationTests/Tests/Weapons/WeaponTests.cs b/Content.IntegrationTests/Tests/Weapons/WeaponTests.cs index 135e75f8be9..8ddbe0ed089 100644 --- a/Content.IntegrationTests/Tests/Weapons/WeaponTests.cs +++ b/Content.IntegrationTests/Tests/Weapons/WeaponTests.cs @@ -1,5 +1,7 @@ using Content.IntegrationTests.Tests.Interaction; using Content.Shared.Damage.Components; +using Content.Shared.Damage.Systems; +using Content.Shared.FixedPoint; using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Systems; using Content.Shared.Wieldable.Components; @@ -17,6 +19,7 @@ public sealed class WeaponTests : InteractionTest public async Task GunRequiresWieldTest() { var gunSystem = SEntMan.System(); + var damageSystem = SEntMan.System(); await AddAtmosphere(); // prevent the Urist from suffocating @@ -44,8 +47,8 @@ public async Task GunRequiresWieldTest() Assert.That(updatedAmmo, Is.EqualTo(startAmmo), "Mosin discharged ammo when the weapon should not have fired!"); - Assert.That(damageComp.TotalDamage.Value, - Is.EqualTo(0), + Assert.That(damageSystem.GetTotalDamage(ToServer(urist)), + Is.EqualTo(FixedPoint2.Zero), "Urist took damage when the weapon should not have fired!"); await UseInHand(); @@ -56,8 +59,8 @@ public async Task GunRequiresWieldTest() updatedAmmo = gunSystem.GetAmmoCount(mosinEnt); Assert.That(updatedAmmo, Is.EqualTo(startAmmo - 1), "Mosin failed to discharge appropriate amount of ammo!"); - Assert.That(damageComp.TotalDamage.Value, - Is.GreaterThan(0), + Assert.That(damageSystem.GetTotalDamage(ToServer(urist)), + Is.GreaterThan(FixedPoint2.Zero), "Mosin was fired but urist sustained no damage!"); } } diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs index dab886f8105..540bd7d0895 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs @@ -95,6 +95,7 @@ public sealed partial class AdminVerbSystem [Dependency] private readonly SuperBonkSystem _superBonkSystem = default!; [Dependency] private readonly SlipperySystem _slipperySystem = default!; [Dependency] private readonly GibbingSystem _gibbing = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; private readonly EntProtoId _actionViewLawsProtoId = "ActionViewLaws"; private readonly ProtoId _crewsimovLawset = "Crewsimov"; @@ -230,6 +231,7 @@ private void AddSmiteVerbs(GetVerbsEvent args) Icon = new SpriteSpecifier.Rsi(new("/Textures/Clothing/Hands/Gloves/Color/yellow.rsi"), "icon"), Act = () => { + var totalDamage = _damageable.GetTotalDamage((args.Target, damageable)); int damageToDeal; if (!_mobThresholdSystem.TryGetThresholdForState(args.Target, MobState.Critical, out var criticalThreshold)) { @@ -237,11 +239,11 @@ private void AddSmiteVerbs(GetVerbsEvent args) if (!_mobThresholdSystem.TryGetThresholdForState(args.Target, MobState.Dead, out var deadThreshold)) return;// whelp. - damageToDeal = deadThreshold.Value.Int() - (int)damageable.TotalDamage; + damageToDeal = deadThreshold.Value.Int() - (int)totalDamage; } else { - damageToDeal = criticalThreshold.Value.Int() - (int)damageable.TotalDamage; + damageToDeal = criticalThreshold.Value.Int() - (int)totalDamage; } if (damageToDeal <= 0) diff --git a/Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs b/Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs index c23f58637d7..6eb46b19463 100644 --- a/Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs +++ b/Content.Server/Atmos/EntitySystems/BarotraumaSystem.cs @@ -211,9 +211,10 @@ public override void Update(float frameTime) while (enumerator.MoveNext(out var uid, out var barotrauma, out var damageable)) { var totalDamage = FixedPoint2.Zero; + var damageSpecifier = _damageableSystem.GetAllDamage((uid, damageable)); foreach (var (barotraumaDamageType, _) in barotrauma.Damage.DamageDict) { - if (!damageable.Damage.DamageDict.TryGetValue(barotraumaDamageType, out var damage)) + if (!damageSpecifier.DamageDict.TryGetValue(barotraumaDamageType, out var damage)) continue; totalDamage += damage; } diff --git a/Content.Server/Cloning/CloningPodSystem.cs b/Content.Server/Cloning/CloningPodSystem.cs index 67d6dc39a64..706a6fdc778 100644 --- a/Content.Server/Cloning/CloningPodSystem.cs +++ b/Content.Server/Cloning/CloningPodSystem.cs @@ -30,6 +30,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Random; using Content.Shared.Chemistry.Reagent; +using Content.Shared.Damage.Systems; namespace Content.Server.Cloning; @@ -55,6 +56,7 @@ public sealed class CloningPodSystem : EntitySystem [Dependency] private readonly SharedMindSystem _mindSystem = default!; [Dependency] private readonly CloningSystem _cloning = default!; [Dependency] private readonly EmagSystem _emag = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; public readonly Dictionary ClonesWaitingForMind = new(); public readonly ProtoId SettingsId = "CloningPod"; @@ -180,7 +182,7 @@ public bool TryCloning(EntityUid uid, EntityUid bodyToClone, Entity(bodyToClone, out var damageable) && - damageable.Damage.DamageDict.TryGetValue("Cellular", out var cellularDmg)) + _damageable.GetAllDamage((bodyToClone, damageable)).DamageDict.TryGetValue("Cellular", out var cellularDmg)) { var chance = Math.Clamp((float)(cellularDmg / 100), 0, 1); chance *= failChanceModifier; diff --git a/Content.Server/Construction/Conditions/MinHealth.cs b/Content.Server/Construction/Conditions/MinHealth.cs deleted file mode 100644 index cef30db71fd..00000000000 --- a/Content.Server/Construction/Conditions/MinHealth.cs +++ /dev/null @@ -1,87 +0,0 @@ -using Content.Server.Destructible; -using Content.Shared.Construction; -using Content.Shared.Damage.Components; -using Content.Shared.Examine; -using Content.Shared.FixedPoint; - -namespace Content.Server.Construction.Conditions; - -/// -/// Requires that the structure has at least some amount of health -/// -[DataDefinition] -public sealed partial class MinHealth : IGraphCondition -{ - /// - /// If ByProportion is true, Threshold is a value less than or equal to 1, but more than 0, - /// which is compared to the percent of health remaining in the structure. - /// Else, Threshold is any positive value with at most 2 decimal points of percision, - /// which is compared to the current health of the structure. - /// - [DataField] - public FixedPoint2 Threshold = 1; - [DataField] - public bool ByProportion = false; - - [DataField] - public bool IncludeEquals = true; - - public bool Condition(EntityUid uid, IEntityManager entMan) - { - if (!entMan.TryGetComponent(uid, out DestructibleComponent? destructibleComp) || - !entMan.TryGetComponent(uid, out DamageableComponent? damageComp)) - { - return false; - } - - var destructionSys = entMan.System(); - var maxHealth = destructionSys.DestroyedAt(uid, destructibleComp); - var curHealth = maxHealth - damageComp.TotalDamage; - var proportionHealth = curHealth / maxHealth; - - if (IncludeEquals) - { - if (ByProportion) - { - return proportionHealth >= Threshold; - } - else - { - return curHealth >= Threshold; - } - } - else - { - if (ByProportion) - { - return proportionHealth > Threshold; - } - else - { - return curHealth > Threshold; - } - } - } - - public bool DoExamine(ExaminedEvent args) - { - var entMan = IoCManager.Resolve(); - var entity = args.Examined; - - if (Condition(entity, entMan)) - { - return false; - } - args.PushMarkup(Loc.GetString("construction-examine-condition-low-health")); - - return true; - } - - public IEnumerable GenerateGuideEntry() - { - yield return new ConstructionGuideEntry() - { - Localization = "construction-step-condition-low-health" - }; - } -} diff --git a/Content.Server/Damage/Systems/ExaminableDamageSystem.cs b/Content.Server/Damage/Systems/ExaminableDamageSystem.cs index a2a9f234f5f..e2b686dd315 100644 --- a/Content.Server/Damage/Systems/ExaminableDamageSystem.cs +++ b/Content.Server/Damage/Systems/ExaminableDamageSystem.cs @@ -1,6 +1,7 @@ using Content.Server.Damage.Components; using Content.Server.Destructible; using Content.Shared.Damage.Components; +using Content.Shared.Damage.Systems; using Content.Shared.Examine; using Content.Shared.Rounding; using Robust.Shared.Prototypes; @@ -11,6 +12,7 @@ public sealed class ExaminableDamageSystem : EntitySystem { [Dependency] private readonly DestructibleSystem _destructible = default!; [Dependency] private readonly IPrototypeManager _prototype = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; public override void Initialize() { @@ -39,7 +41,7 @@ private float GetDamagePercent(Entity ent) if (!TryComp(ent, out var damageable)) return 0; - var damage = damageable.TotalDamage; + var damage = _damageable.GetTotalDamage((ent, damageable)); var damageThreshold = _destructible.DestroyedAt(ent); if (damageThreshold == 0) diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Airtight.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Airtight.cs index da2a5719002..d70029ae97d 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Airtight.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Airtight.cs @@ -245,7 +245,7 @@ private void GetExplosionTolerance(EntityUid uid, Span explosionTol var damagePerIntensity = FixedPoint2.Zero; foreach (var (type, value) in explosionType.DamagePerIntensity.DamageDict) { - if (!damageable.Damage.DamageDict.ContainsKey(type)) + if (_damageableSystem.CanBeDamagedBy((uid, damageable), type)) continue; // TODO EXPLOSION SYSTEM @@ -260,7 +260,7 @@ private void GetExplosionTolerance(EntityUid uid, Span explosionTol } var toleranceValue = damagePerIntensity > 0 - ? (float) ((totalDamageTarget - damageable.TotalDamage) / damagePerIntensity) + ? (float) ((totalDamageTarget - _damageableSystem.GetTotalDamage((uid, damageable))) / damagePerIntensity) : ToleranceValues.Invulnerable; explosionTolerance[index] = toleranceValue; diff --git a/Content.Server/Ghost/GhostSystem.cs b/Content.Server/Ghost/GhostSystem.cs index cccee48ba5c..9d3d05c6074 100644 --- a/Content.Server/Ghost/GhostSystem.cs +++ b/Content.Server/Ghost/GhostSystem.cs @@ -590,7 +590,8 @@ public bool OnGhostAttempt(EntityUid mindId, bool canReturnGlobal, bool viaComma && TryComp(playerEntity, out var thresholds)) { var playerDeadThreshold = _mobThresholdSystem.GetThresholdForState(playerEntity.Value, MobState.Dead, thresholds); - dealtDamage = playerDeadThreshold - damageable.TotalDamage; + dealtDamage = playerDeadThreshold - + _damageable.GetTotalDamage((playerEntity.Value, damageable)); } DamageSpecifier damage = new(_prototypeManager.Index(AsphyxiationDamageType), dealtDamage); diff --git a/Content.Server/Mech/Systems/MechSystem.cs b/Content.Server/Mech/Systems/MechSystem.cs index f4b7ee48a8b..36fd0722108 100644 --- a/Content.Server/Mech/Systems/MechSystem.cs +++ b/Content.Server/Mech/Systems/MechSystem.cs @@ -258,7 +258,7 @@ private void OnMechExit(EntityUid uid, MechComponent component, MechExitEvent ar private void OnDamageChanged(EntityUid uid, MechComponent component, DamageChangedEvent args) { - var integrity = component.MaxIntegrity - args.Damageable.TotalDamage; + var integrity = component.MaxIntegrity - _damageable.GetTotalDamage((uid, args.Damageable)); SetIntegrity(uid, integrity, component); if (args.DamageIncreased && diff --git a/Content.Server/Medical/CryoPodSystem.cs b/Content.Server/Medical/CryoPodSystem.cs index e54f80bca9d..239de94455b 100644 --- a/Content.Server/Medical/CryoPodSystem.cs +++ b/Content.Server/Medical/CryoPodSystem.cs @@ -6,6 +6,7 @@ using Content.Server.NodeContainer.NodeGroups; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos; +using Content.Shared.Damage.Systems; using Content.Shared.Medical.Cryogenics; namespace Content.Server.Medical; @@ -16,6 +17,7 @@ public sealed partial class CryoPodSystem : SharedCryoPodSystem [Dependency] private readonly GasAnalyzerSystem _gasAnalyzerSystem = default!; [Dependency] private readonly HealthAnalyzerSystem _healthAnalyzerSystem = default!; [Dependency] private readonly NodeContainerSystem _nodeContainer = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; public override void Initialize() @@ -55,11 +57,12 @@ protected override void UpdateUi(Entity entity) var injecting = GetInjectingReagents(entity); var health = _healthAnalyzerSystem.GetHealthAnalyzerUiState(patient); health.ScanMode = true; + var hasDamage = patient is null ? false : _damageable.GetTotalDamage(patient.Value) > 0; UI.ServerSendUiMessage( entity.Owner, CryoPodUiKey.Key, - new CryoPodUserMessage(gasMix, health, beakerCapacity, beaker, injecting) + new CryoPodUserMessage(gasMix, health, beakerCapacity, beaker, injecting, hasDamage) ); } diff --git a/Content.Server/Mining/MeteorSystem.cs b/Content.Server/Mining/MeteorSystem.cs index 361844ba251..e5f190167d9 100644 --- a/Content.Server/Mining/MeteorSystem.cs +++ b/Content.Server/Mining/MeteorSystem.cs @@ -46,12 +46,13 @@ private void OnCollide(EntityUid uid, MeteorComponent component, ref StartCollid { threshold = FixedPoint2.MaxValue; } - var otherEntDamage = CompOrNull(args.OtherEntity)?.TotalDamage ?? FixedPoint2.Zero; + + var otherEntDamage = _damageable.GetTotalDamage(args.OtherEntity); // account for the damage that the other entity has already taken: don't overkill threshold -= otherEntDamage; // The max amount of damage our meteor can take before breaking. - var maxMeteorDamage = _destructible.DestroyedAt(uid) - CompOrNull(uid)?.TotalDamage ?? FixedPoint2.Zero; + var maxMeteorDamage = _destructible.DestroyedAt(uid) - _damageable.GetTotalDamage(uid); // Cap damage so we don't overkill the meteor var trueDamage = FixedPoint2.Min(maxMeteorDamage, threshold); diff --git a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/PickNearbyInjectableOperator.cs b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/PickNearbyInjectableOperator.cs index 6f656b0e291..53164ad7ca4 100644 --- a/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/PickNearbyInjectableOperator.cs +++ b/Content.Server/NPC/HTN/PrimitiveTasks/Operators/Specific/PickNearbyInjectableOperator.cs @@ -4,10 +4,12 @@ using Content.Server.NPC.Pathfinding; using Content.Shared.Chemistry.Components.SolutionManager; using Content.Shared.Damage.Components; +using Content.Shared.Damage.Systems; using Content.Shared.Interaction; using Content.Shared.Mobs.Components; using Content.Shared.Silicons.Bots; using Content.Shared.Emag.Components; +using Content.Shared.FixedPoint; namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators.Specific; @@ -16,6 +18,7 @@ public sealed partial class PickNearbyInjectableOperator : HTNOperator [Dependency] private readonly IEntityManager _entManager = default!; private MedibotSystem _medibot = default!; private PathfindingSystem _pathfinding = default!; + private DamageableSystem _damageable = default!; private EntityQuery _damageQuery = default!; private EntityQuery _injectQuery = default!; @@ -42,6 +45,7 @@ public override void Initialize(IEntitySystemManager sysManager) base.Initialize(sysManager); _medibot = sysManager.GetEntitySystem(); _pathfinding = sysManager.GetEntitySystem(); + _damageable = sysManager.GetEntitySystem(); _damageQuery = _entManager.GetEntityQuery(); _injectQuery = _entManager.GetEntityQuery(); @@ -79,7 +83,7 @@ public override void Initialize(IEntitySystemManager sysManager) // Only go towards a target if the bot can actually help them or if the medibot is emagged // note: this and the actual injecting don't check for specific damage types so for example, // radiation damage will trigger injection but the tricordrazine won't heal it. - if (!_emaggedQuery.HasComponent(entity) && !treatment.IsValid(damage.TotalDamage)) + if (!_emaggedQuery.HasComponent(entity) && _damageable.GetTotalDamage((entity, damage)) == FixedPoint2.Zero) continue; //Needed to make sure it doesn't sometimes stop right outside it's interaction range diff --git a/Content.Server/NPC/Systems/NPCUtilitySystem.cs b/Content.Server/NPC/Systems/NPCUtilitySystem.cs index 9b791ae2f05..fe3dc26c91c 100644 --- a/Content.Server/NPC/Systems/NPCUtilitySystem.cs +++ b/Content.Server/NPC/Systems/NPCUtilitySystem.cs @@ -29,6 +29,7 @@ using Content.Shared.Atmos.Components; using System.Linq; using Content.Shared.Damage.Components; +using Content.Shared.Damage.Systems; using Content.Shared.Temperature.Components; namespace Content.Server.NPC.Systems; @@ -54,6 +55,7 @@ public sealed class NPCUtilitySystem : EntitySystem [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; [Dependency] private readonly MobThresholdSystem _thresholdSystem = default!; [Dependency] private readonly TurretTargetSettingsSystem _turretTargetSettings = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; private EntityQuery _puddleQuery; private EntityQuery _xformQuery; @@ -304,9 +306,10 @@ private float GetScore(NPCBlackboard blackboard, EntityUid targetUid, UtilityCon { if (!TryComp(targetUid, out DamageableComponent? damage)) return 0f; - if (con.TargetState != MobState.Invalid && _thresholdSystem.TryGetPercentageForState(targetUid, con.TargetState, damage.TotalDamage, out var percentage)) + var totalDamage = _damageable.GetTotalDamage((targetUid, damage)); + if (con.TargetState != MobState.Invalid && _thresholdSystem.TryGetPercentageForState(targetUid, con.TargetState, totalDamage, out var percentage)) return Math.Clamp((float)(1 - percentage), 0f, 1f); - if (_thresholdSystem.TryGetIncapPercentage(targetUid, damage.TotalDamage, out var incapPercentage)) + if (_thresholdSystem.TryGetIncapPercentage(targetUid, totalDamage, out var incapPercentage)) return Math.Clamp((float)(1 - incapPercentage), 0f, 1f); return 0f; } diff --git a/Content.Server/Projectiles/ProjectileSystem.cs b/Content.Server/Projectiles/ProjectileSystem.cs index 01fe80e0949..b5eef17b6a2 100644 --- a/Content.Server/Projectiles/ProjectileSystem.cs +++ b/Content.Server/Projectiles/ProjectileSystem.cs @@ -53,7 +53,7 @@ private void OnStartCollide(EntityUid uid, ProjectileComponent component, ref St var damageRequired = _destructibleSystem.DestroyedAt(target); if (TryComp(target, out var damageableComponent)) { - damageRequired -= damageableComponent.TotalDamage; + damageRequired -= _damageableSystem.GetTotalDamage((target, damageableComponent)); damageRequired = FixedPoint2.Max(damageRequired, FixedPoint2.Zero); } var deleted = Deleted(target); diff --git a/Content.Server/Silicons/Borgs/BorgSystem.Transponder.cs b/Content.Server/Silicons/Borgs/BorgSystem.Transponder.cs index a6d3cf1dffb..d181c7e228b 100644 --- a/Content.Server/Silicons/Borgs/BorgSystem.Transponder.cs +++ b/Content.Server/Silicons/Borgs/BorgSystem.Transponder.cs @@ -179,7 +179,7 @@ private float CalcHP(EntityUid uid) return 1; } - return 1 - ((FixedPoint2)(damageable.TotalDamage / threshold)).Float(); + return 1 - ((FixedPoint2)(_damageable.GetTotalDamage((uid, damageable)) / threshold)).Float(); } /// diff --git a/Content.Server/Silicons/Borgs/BorgSystem.cs b/Content.Server/Silicons/Borgs/BorgSystem.cs index 925050f28eb..063514060e9 100644 --- a/Content.Server/Silicons/Borgs/BorgSystem.cs +++ b/Content.Server/Silicons/Borgs/BorgSystem.cs @@ -1,6 +1,7 @@ using Content.Server.Administration.Managers; using Content.Server.DeviceNetwork.Systems; using Content.Shared.Containers.ItemSlots; +using Content.Shared.Damage.Systems; using Content.Shared.Emag.Systems; using Content.Shared.Mobs.Systems; using Content.Shared.Popups; @@ -31,6 +32,7 @@ public sealed partial class BorgSystem : SharedBorgSystem [Dependency] private readonly ItemSlotsSystem _itemSlotsSystem = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly PowerCellSystem _powerCell = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; public static readonly ProtoId BorgJobId = "Borg"; diff --git a/Content.Server/Silicons/StationAi/StationAiSystem.cs b/Content.Server/Silicons/StationAi/StationAiSystem.cs index 36aa9acd6b5..cc2f7a4e2f2 100644 --- a/Content.Server/Silicons/StationAi/StationAiSystem.cs +++ b/Content.Server/Silicons/StationAi/StationAiSystem.cs @@ -120,7 +120,7 @@ private void AfterConstructionChangeEntity(Entity ent, r // Set the new AI brain to the 'rebooting' state if (TryComp(aiBrain, out var customization)) SetStationAiState((aiBrain, customization), StationAiState.Rebooting); - + } // Delete the new AI brain if it cannot be inserted into the core @@ -252,7 +252,7 @@ private void UpdateDamagedAccent(Entity ent) accent.OverrideChargeLevel = _battery.GetChargeLevel((ent.Owner, battery)); if (TryComp(ent, out var damageable)) - accent.OverrideTotalDamage = damageable.TotalDamage; + accent.OverrideTotalDamage = _damageable.GetTotalDamage((ent, damageable)); if (TryComp(ent, out var destructible)) accent.DamageAtMaxCorruption = _destructible.DestroyedAt(ent, destructible); @@ -299,7 +299,7 @@ private void UpdateCoreIntegrityAlert(Entity ent) if (!_proto.TryIndex(_damageAlert, out var proto)) return; - var damagePercent = damageable.TotalDamage / _destructible.DestroyedAt(ent, destructible); + var damagePercent = _damageable.GetTotalDamage((ent, damageable)) / _destructible.DestroyedAt(ent, destructible); var damageLevel = Math.Round(damagePercent.Float() * proto.MaxSeverity); _alerts.ShowAlert(held.Value, _damageAlert, (short)Math.Clamp(damageLevel, 0, proto.MaxSeverity)); diff --git a/Content.Server/Speech/EntitySystems/DamagedSiliconAccentSystem.cs b/Content.Server/Speech/EntitySystems/DamagedSiliconAccentSystem.cs index e9bbfdf5280..e197f2a50bf 100644 --- a/Content.Server/Speech/EntitySystems/DamagedSiliconAccentSystem.cs +++ b/Content.Server/Speech/EntitySystems/DamagedSiliconAccentSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Destructible; using Content.Shared.Speech.Components; using Content.Shared.Damage.Components; +using Content.Shared.Damage.Systems; using Content.Shared.FixedPoint; using Content.Shared.Power.EntitySystems; using Content.Shared.PowerCell; @@ -16,6 +17,7 @@ public sealed class DamagedSiliconAccentSystem : EntitySystem [Dependency] private readonly SharedBatterySystem _battery = default!; [Dependency] private readonly PowerCellSystem _powerCell = default!; [Dependency] private readonly DestructibleSystem _destructibleSystem = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; public override void Initialize() { @@ -52,7 +54,7 @@ private void OnAccent(Entity ent, ref AccentGetEv } else if (TryComp(uid, out var damageable)) { - damage = damageable.TotalDamage; + damage = _damageable.GetTotalDamage((uid, damageable)); } // Corrupt due to damage (drop, repeat, replace with symbols) args.Message = CorruptDamage(args.Message, damage, ent); diff --git a/Content.Server/Spreader/KudzuSystem.cs b/Content.Server/Spreader/KudzuSystem.cs index e8470ebd57c..687ee9dd572 100644 --- a/Content.Server/Spreader/KudzuSystem.cs +++ b/Content.Server/Spreader/KudzuSystem.cs @@ -30,7 +30,7 @@ private void OnDamageChanged(EntityUid uid, KudzuComponent component, DamageChan { // Every time we take any damage, we reduce growth depending on all damage over the growth impact // So the kudzu gets slower growing the more it is hurt. - var growthDamage = (int) (args.Damageable.TotalDamage / component.GrowthHealth); + var growthDamage = (int) (_damageable.GetTotalDamage((uid, args.Damageable)) / component.GrowthHealth); if (growthDamage > 0) { if (!EnsureComp(uid, out _)) @@ -118,14 +118,15 @@ public override void Update(float frameTime) if (damageableQuery.TryGetComponent(uid, out var damage)) { - if (damage.TotalDamage > 1.0) + var totalDamage = _damageable.GetTotalDamage((uid, damage)); + if (totalDamage > 1.0) { if (kudzu.DamageRecovery != null) { // This kudzu features healing, so Gradually heal _damageable.TryChangeDamage(uid, kudzu.DamageRecovery, true); } - if (damage.TotalDamage >= kudzu.GrowthBlock) + if (totalDamage >= kudzu.GrowthBlock) { // Don't grow when quite damaged if (_robustRandom.Prob(0.95f)) diff --git a/Content.Shared/Blocking/BlockingSystem.User.cs b/Content.Shared/Blocking/BlockingSystem.User.cs index db59a8d5f6c..ac73d70ffb5 100644 --- a/Content.Shared/Blocking/BlockingSystem.User.cs +++ b/Content.Shared/Blocking/BlockingSystem.User.cs @@ -1,3 +1,4 @@ +using System.Linq; using Content.Shared.Damage; using Content.Shared.Damage.Components; using Content.Shared.Damage.Systems; @@ -53,11 +54,12 @@ private void OnUserDamageModified(EntityUid uid, BlockingUserComponent component return; var blockFraction = blocking.IsBlocking ? blocking.ActiveBlockFraction : blocking.PassiveBlockFraction; + var modifier = blocking.IsBlocking ? blocking.ActiveBlockDamageModifier : blocking.PassiveBlockDamageModifer; blockFraction = Math.Clamp(blockFraction, 0, 1); _damageable.TryChangeDamage((item, dmgComp), blockFraction * args.OriginalDamage); var modify = new DamageModifierSet(); - foreach (var key in dmgComp.Damage.DamageDict.Keys) + foreach (var key in modifier.Coefficients.Keys.Concat(modifier.FlatReduction.Keys)) { modify.Coefficients.TryAdd(key, 1 - blockFraction); } diff --git a/Content.Shared/Changeling/Components/ChangelingDevourComponent.cs b/Content.Shared/Changeling/Components/ChangelingDevourComponent.cs index 3b907eb494e..f2c5c82ca94 100644 --- a/Content.Shared/Changeling/Components/ChangelingDevourComponent.cs +++ b/Content.Shared/Changeling/Components/ChangelingDevourComponent.cs @@ -81,12 +81,6 @@ public sealed partial class ChangelingDevourComponent : Component [DataField, AutoNetworkedField] public TimeSpan DevourConsumeTime = TimeSpan.FromSeconds(10); - /// - /// Damage cap that a target is allowed to be caused due to IdentityConsumption - /// - [DataField, AutoNetworkedField] - public float DevourConsumeDamageCap = 350f; - /// /// The Currently active devour sound in the world /// diff --git a/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs b/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs index 926f19632d4..3406038e9c2 100644 --- a/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs +++ b/Content.Shared/Changeling/Systems/ChangelingDevourSystem.cs @@ -84,16 +84,7 @@ private void ConsumeDamageTick(EntityUid? target, ChangelingDevourComponent comp if (target == null) return; - if (!TryComp(target, out var damage)) - return; - - foreach (var damagePoints in comp.DamagePerTick.DamageDict) - { - - if (damage.Damage.DamageDict.TryGetValue(damagePoints.Key, out var val) && val > comp.DevourConsumeDamageCap) - return; - } - _damageable.ChangeDamage((target.Value, damage), comp.DamagePerTick, true, true, user); + _damageable.ChangeDamage(target.Value, comp.DamagePerTick, true, true, user); } /// diff --git a/Content.Shared/Chat/SharedSuicideSystem.cs b/Content.Shared/Chat/SharedSuicideSystem.cs index 0484e51ab26..ed6eca98599 100644 --- a/Content.Shared/Chat/SharedSuicideSystem.cs +++ b/Content.Shared/Chat/SharedSuicideSystem.cs @@ -29,7 +29,7 @@ public void ApplyLethalDamage(Entity target, DamageSpecifie // Mob thresholds are sorted from alive -> crit -> dead, // grabbing the last key will give us how much damage is needed to kill a target from zero // The exact lethal damage amount is adjusted based on their current damage taken - var lethalAmountOfDamage = mobThresholds.Thresholds.Keys.Last() - target.Comp.TotalDamage; + var lethalAmountOfDamage = mobThresholds.Thresholds.Keys.Last() - _damageableSystem.GetTotalDamage(target.AsNullable()); var totalDamage = appliedDamageSpecifier.GetTotal(); // Removing structural because it causes issues against entities that cannot take structural damage, @@ -56,7 +56,7 @@ public void ApplyLethalDamage(Entity target, ProtoId crit -> dead, // grabbing the last key will give us how much damage is needed to kill a target from zero // The exact lethal damage amount is adjusted based on their current damage taken - var lethalAmountOfDamage = mobThresholds.Thresholds.Keys.Last() - target.Comp.TotalDamage; + var lethalAmountOfDamage = mobThresholds.Thresholds.Keys.Last() - _damageableSystem.GetTotalDamage(target.AsNullable()); // We don't want structural damage for the same reasons listed above if (!_prototypeManager.TryIndex(damageType, out var damagePrototype) || damagePrototype.ID == "Structural") diff --git a/Content.Shared/Damage/Components/DamageableComponent.cs b/Content.Shared/Damage/Components/DamageableComponent.cs index 00fbcda5617..a78cacf16a3 100644 --- a/Content.Shared/Damage/Components/DamageableComponent.cs +++ b/Content.Shared/Damage/Components/DamageableComponent.cs @@ -47,6 +47,7 @@ public sealed partial class DamageableComponent : Component /// If this data-field is specified, this allows damageable components to be initialized with non-zero damage. /// [DataField] + [Access(typeof(DamageableSystem), Other = AccessPermissions.None)] public DamageSpecifier Damage = new(); /// @@ -56,12 +57,15 @@ public sealed partial class DamageableComponent : Component /// Groups which have no members that are supported by this component will not be present in this /// dictionary. /// - [ViewVariables] public Dictionary DamagePerGroup = new(); + [ViewVariables] + [Access(typeof(DamageableSystem), Other = AccessPermissions.None)] + public Dictionary, FixedPoint2> DamagePerGroup = new(); /// /// The sum of all damages in the DamageableComponent. /// [ViewVariables] + [Access(typeof(DamageableSystem), Other = AccessPermissions.None)] public FixedPoint2 TotalDamage; [DataField("radiationDamageTypes")] diff --git a/Content.Shared/Damage/Components/GodmodeComponent.cs b/Content.Shared/Damage/Components/GodmodeComponent.cs index 66f0daff39b..f49fd9bb935 100644 --- a/Content.Shared/Damage/Components/GodmodeComponent.cs +++ b/Content.Shared/Damage/Components/GodmodeComponent.cs @@ -8,7 +8,4 @@ public sealed partial class GodmodeComponent : Component { [DataField("wasMovedByPressure")] public bool WasMovedByPressure; - - [DataField("oldDamage")] - public DamageSpecifier? OldDamage = null; } diff --git a/Content.Shared/Damage/Components/PassiveDamageComponent.cs b/Content.Shared/Damage/Components/PassiveDamageComponent.cs index 269960adac4..679ce246620 100644 --- a/Content.Shared/Damage/Components/PassiveDamageComponent.cs +++ b/Content.Shared/Damage/Components/PassiveDamageComponent.cs @@ -29,12 +29,6 @@ public sealed partial class PassiveDamageComponent : Component [DataField, ViewVariables(VVAccess.ReadWrite)] public float Interval = 1f; - /// - /// The maximum HP the damage will be given to. If 0, disabled. - /// - [DataField, ViewVariables(VVAccess.ReadWrite)] - public FixedPoint2 DamageCap = 0; - [DataField("nextDamage", customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)] public TimeSpan NextDamage = TimeSpan.Zero; } diff --git a/Content.Shared/Damage/DamageSpecifier.cs b/Content.Shared/Damage/DamageSpecifier.cs index 4b084769829..b0dc63e2e31 100644 --- a/Content.Shared/Damage/DamageSpecifier.cs +++ b/Content.Shared/Damage/DamageSpecifier.cs @@ -320,15 +320,15 @@ public bool TryGetDamageInGroup(DamageGroupPrototype group, out FixedPoint2 tota /// total of each group. If no members of a group are present in this , the /// group is not included in the resulting dictionary. /// - public Dictionary GetDamagePerGroup(IPrototypeManager protoManager) + public Dictionary, FixedPoint2> GetDamagePerGroup(IPrototypeManager protoManager) { - var dict = new Dictionary(); + var dict = new Dictionary, FixedPoint2>(); GetDamagePerGroup(protoManager, dict); return dict; } /// - public void GetDamagePerGroup(IPrototypeManager protoManager, Dictionary dict) + public void GetDamagePerGroup(IPrototypeManager protoManager, Dictionary, FixedPoint2> dict) { dict.Clear(); foreach (var group in protoManager.EnumeratePrototypes()) diff --git a/Content.Shared/Damage/DamageVisualizerKeys.cs b/Content.Shared/Damage/DamageVisualizerKeys.cs index ba70ab3b91b..9719b96fe7b 100644 --- a/Content.Shared/Damage/DamageVisualizerKeys.cs +++ b/Content.Shared/Damage/DamageVisualizerKeys.cs @@ -1,3 +1,5 @@ +using Content.Shared.Damage.Prototypes; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; namespace Content.Shared.Damage @@ -14,16 +16,16 @@ public enum DamageVisualizerKeys [Serializable, NetSerializable] public sealed class DamageVisualizerGroupData : ICloneable { - public List GroupList; + public List> GroupList; - public DamageVisualizerGroupData(List groupList) + public DamageVisualizerGroupData(List> groupList) { GroupList = groupList; } public object Clone() { - return new DamageVisualizerGroupData(new List(GroupList)); + return new DamageVisualizerGroupData(new List>(GroupList)); } } } diff --git a/Content.Shared/Damage/Systems/DamagePopupSystem.cs b/Content.Shared/Damage/Systems/DamagePopupSystem.cs index fa29b5a0187..d6a8e0beba9 100644 --- a/Content.Shared/Damage/Systems/DamagePopupSystem.cs +++ b/Content.Shared/Damage/Systems/DamagePopupSystem.cs @@ -7,6 +7,7 @@ namespace Content.Shared.Damage.Systems; public sealed class DamagePopupSystem : EntitySystem { [Dependency] private readonly SharedPopupSystem _popupSystem = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; public override void Initialize() { @@ -19,7 +20,7 @@ private void OnDamageChange(Entity ent, ref DamageChangedE { if (args.DamageDelta != null) { - var damageTotal = args.Damageable.TotalDamage; + var damageTotal = _damageable.GetTotalDamage((ent, args.Damageable)); var damageDelta = args.DamageDelta.GetTotal(); var msg = ent.Comp.Type switch diff --git a/Content.Shared/Damage/Systems/DamageableSystem.API.cs b/Content.Shared/Damage/Systems/DamageableSystem.API.cs index ff56c1affcb..2975f227623 100644 --- a/Content.Shared/Damage/Systems/DamageableSystem.API.cs +++ b/Content.Shared/Damage/Systems/DamageableSystem.API.cs @@ -301,7 +301,7 @@ public bool TryGetDamageGreaterThan(Entity ent, ProtoId? group = null) { // get the damage should be healed (either all or only from one group) - damage = group == null ? GetDamage(ent) : GetDamage(ent, group.Value); + damage = group == null ? GetPositiveDamage(ent) : GetPositiveDamage(ent, group.Value); // If trying to heal more than the total damage of damageEntity just heal everything return damage.GetTotal() > amount; @@ -313,7 +313,7 @@ public bool TryGetDamageGreaterThan(Entity ent, /// entity with damage /// group of damage to get values from /// - public DamageSpecifier GetDamage(Entity ent, ProtoId group) + public DamageSpecifier GetPositiveDamage(Entity ent, ProtoId group) { // No damage if no group exists... if (!_prototypeManager.Resolve(group, out var groupProto)) @@ -338,7 +338,7 @@ public DamageSpecifier GetDamage(Entity ent, ProtoId /// entity with damage /// - public DamageSpecifier GetDamage(Entity ent) + public DamageSpecifier GetPositiveDamage(Entity ent) { var damage = new DamageSpecifier(); damage.DamageDict.EnsureCapacity(ent.Comp.Damage.DamageDict.Count); @@ -428,4 +428,52 @@ public void SetDamageModifierSetId(Entity ent, ProtoId + /// Gets the damages currently sustained by an entity. + /// + [Obsolete("Do not rely on the ability to determine a numerically quantifiable amount of damage")] + public DamageSpecifier GetAllDamage(Entity ent) + { + if (!_damageableQuery.Resolve(ent, ref ent.Comp)) + return new(); + + return ent.Comp.Damage.Clone(); + } + + /// + /// Gets the total amount of damage currently sustained by an entity. + /// + [Obsolete("Do not rely on the ability to determine a numerically quantifiable amount of damage")] + public FixedPoint2 GetTotalDamage(Entity ent) + { + if (!_damageableQuery.Resolve(ent, ref ent.Comp, false)) + return FixedPoint2.Zero; + + return ent.Comp.TotalDamage; + } + + /// + /// Gets the total amount of damage currently sustained by an entity, indexed by damage group. + /// + [Obsolete("Do not rely on the ability to determine a numerically quantifiable amount of damage")] + public IReadOnlyDictionary, FixedPoint2> GetDamagePerGroup(Entity ent) + { + if (!_damageableQuery.Resolve(ent, ref ent.Comp)) + return new Dictionary, FixedPoint2>(); + + return ent.Comp.DamagePerGroup; + } + + /// + /// Returns whether the entity can be damaged by the given type of damage + /// + [Obsolete("Do not rely on the ability to determine if an entity will be able to be damaged by something")] + public bool CanBeDamagedBy(Entity ent, ProtoId type) + { + if (!_damageableQuery.Resolve(ent, ref ent.Comp, false)) + return false; + + return SupportsType(ent.Comp.DamageContainerID, type); + } } diff --git a/Content.Shared/Damage/Systems/PassiveDamageSystem.cs b/Content.Shared/Damage/Systems/PassiveDamageSystem.cs index fddf7dc9757..94fff7e97d8 100644 --- a/Content.Shared/Damage/Systems/PassiveDamageSystem.cs +++ b/Content.Shared/Damage/Systems/PassiveDamageSystem.cs @@ -35,9 +35,6 @@ public override void Update(float frameTime) if (comp.NextDamage > curTime) continue; - if (comp.DamageCap != 0 && damage.TotalDamage >= comp.DamageCap) - continue; - // Set the next time they can take damage comp.NextDamage = curTime + TimeSpan.FromSeconds(1f); diff --git a/Content.Shared/Damage/Systems/SharedGodmodeSystem.cs b/Content.Shared/Damage/Systems/SharedGodmodeSystem.cs index 2a020732c27..39ff4f10707 100644 --- a/Content.Shared/Damage/Systems/SharedGodmodeSystem.cs +++ b/Content.Shared/Damage/Systems/SharedGodmodeSystem.cs @@ -15,7 +15,6 @@ namespace Content.Shared.Damage.Systems; public abstract class SharedGodmodeSystem : EntitySystem { [Dependency] private readonly IPrototypeManager _protoMan = default!; - [Dependency] private readonly DamageableSystem _damageable = default!; public override void Initialize() { @@ -69,13 +68,6 @@ private void BeforeEdible(Entity ent, ref IngestibleEvent args public virtual void EnableGodmode(EntityUid uid, GodmodeComponent? godmode = null) { - godmode ??= EnsureComp(uid); - - if (TryComp(uid, out var damageable)) - { - godmode.OldDamage = new DamageSpecifier(damageable.Damage); - } - // Rejuv to cover other stuff RaiseLocalEvent(uid, new RejuvenateEvent()); } @@ -85,11 +77,6 @@ public virtual void DisableGodmode(EntityUid uid, GodmodeComponent? godmode = nu if (!Resolve(uid, ref godmode, false)) return; - if (godmode.OldDamage != null) - { - _damageable.SetDamage(uid, godmode.OldDamage); - } - RemComp(uid); } diff --git a/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs b/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs index fef7b6ae06a..4c80aa89d0f 100644 --- a/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs +++ b/Content.Shared/Damage/Systems/SlowOnDamageSystem.cs @@ -10,6 +10,7 @@ namespace Content.Shared.Damage.Systems; public sealed class SlowOnDamageSystem : EntitySystem { [Dependency] private readonly MovementSpeedModifierSystem _movementSpeedModifierSystem = default!; + [Dependency] private readonly DamageableSystem _damage = default!; public override void Initialize() { @@ -33,12 +34,14 @@ private void OnRefreshMovespeed(EntityUid uid, SlowOnDamageComponent component, if (!TryComp(uid, out var damage)) return; - if (damage.TotalDamage == FixedPoint2.Zero) + var totalDamage = _damage.GetTotalDamage((uid, damage)); + + if (totalDamage == FixedPoint2.Zero) return; // Get closest threshold FixedPoint2 closest = FixedPoint2.Zero; - var total = damage.TotalDamage; + var total = totalDamage; foreach (var thres in component.SpeedModifierThresholds) { if (total >= thres.Key && thres.Key > closest) diff --git a/Content.Shared/Destructible/SharedDestructibleSystem.cs b/Content.Shared/Destructible/SharedDestructibleSystem.cs index 6b7148a4c9e..4917ded3267 100644 --- a/Content.Shared/Destructible/SharedDestructibleSystem.cs +++ b/Content.Shared/Destructible/SharedDestructibleSystem.cs @@ -1,7 +1,12 @@ +using Content.Shared.Damage.Systems; + namespace Content.Shared.Destructible; public abstract class SharedDestructibleSystem : EntitySystem { + // TODO: I don't really like this but this is out of scope to re-do destructible triggers while refactoring damageable + [Dependency] public readonly DamageableSystem Damageable = default!; + /// /// Force entity to be destroyed and deleted. /// diff --git a/Content.Shared/Destructible/Triggers/DamageGroupTrigger.cs b/Content.Shared/Destructible/Triggers/DamageGroupTrigger.cs index 11c78fbd1ee..3acbf253758 100644 --- a/Content.Shared/Destructible/Triggers/DamageGroupTrigger.cs +++ b/Content.Shared/Destructible/Triggers/DamageGroupTrigger.cs @@ -28,6 +28,6 @@ public sealed partial class DamageGroupTrigger : IThresholdTrigger public bool Reached(Entity damageable, SharedDestructibleSystem system) { - return damageable.Comp.DamagePerGroup.GetValueOrDefault(DamageGroup) >= Damage; + return system.Damageable.GetDamagePerGroup(damageable.Owner).GetValueOrDefault(DamageGroup) >= Damage; } } diff --git a/Content.Shared/Destructible/Triggers/DamageTrigger.cs b/Content.Shared/Destructible/Triggers/DamageTrigger.cs index 7a2d612f757..481b55b30fd 100644 --- a/Content.Shared/Destructible/Triggers/DamageTrigger.cs +++ b/Content.Shared/Destructible/Triggers/DamageTrigger.cs @@ -20,6 +20,6 @@ public sealed partial class DamageTrigger : IThresholdTrigger public bool Reached(Entity damageable, SharedDestructibleSystem system) { - return damageable.Comp.TotalDamage >= Damage; + return system.Damageable.GetTotalDamage(damageable.AsNullable()) >= Damage; } } diff --git a/Content.Shared/Destructible/Triggers/DamageTypeTrigger.cs b/Content.Shared/Destructible/Triggers/DamageTypeTrigger.cs index 60bd9baf67d..5debc51864e 100644 --- a/Content.Shared/Destructible/Triggers/DamageTypeTrigger.cs +++ b/Content.Shared/Destructible/Triggers/DamageTypeTrigger.cs @@ -28,7 +28,7 @@ public sealed partial class DamageTypeTrigger : IThresholdTrigger public bool Reached(Entity damageable, SharedDestructibleSystem system) { - return damageable.Comp.Damage.DamageDict.TryGetValue(DamageType, out var damageReceived) && + return system.Damageable.GetAllDamage(damageable.AsNullable()).DamageDict.TryGetValue(DamageType, out var damageReceived) && damageReceived >= Damage; } } diff --git a/Content.Shared/EntityConditions/Conditions/DamageGroupEntityConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/DamageGroupEntityConditionSystem.cs deleted file mode 100644 index 0cfa4dedca3..00000000000 --- a/Content.Shared/EntityConditions/Conditions/DamageGroupEntityConditionSystem.cs +++ /dev/null @@ -1,38 +0,0 @@ -using Content.Shared.Damage.Components; -using Content.Shared.Damage.Prototypes; -using Content.Shared.FixedPoint; -using Robust.Shared.Prototypes; - -namespace Content.Shared.EntityConditions.Conditions; - -/// -/// Returns true if this entity can take damage and if its damage of a given damage group is within a specified minimum and maximum. -/// -/// -public sealed partial class DamageGroupEntityConditionSystem : EntityConditionSystem -{ - protected override void Condition(Entity entity, ref EntityConditionEvent args) - { - var value = entity.Comp.DamagePerGroup.GetValueOrDefault(args.Condition.DamageGroup); - args.Result = value >= args.Condition.Min && value <= args.Condition.Max; - } -} - -/// -public sealed partial class DamageGroupCondition : EntityConditionBase -{ - [DataField] - public FixedPoint2 Max = FixedPoint2.MaxValue; - - [DataField] - public FixedPoint2 Min = FixedPoint2.Zero; - - [DataField(required: true)] - public ProtoId DamageGroup; - - public override string EntityConditionGuidebookText(IPrototypeManager prototype) => - Loc.GetString("entity-condition-guidebook-group-damage", - ("max", Max == FixedPoint2.MaxValue ? int.MaxValue : Max.Float()), - ("min", Min.Float()), - ("type", prototype.Index(DamageGroup).LocalizedName)); -} diff --git a/Content.Shared/EntityConditions/Conditions/DamageTypeEntityConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/DamageTypeEntityConditionSystem.cs deleted file mode 100644 index f2611a8200f..00000000000 --- a/Content.Shared/EntityConditions/Conditions/DamageTypeEntityConditionSystem.cs +++ /dev/null @@ -1,39 +0,0 @@ -using Content.Shared.Damage; -using Content.Shared.Damage.Components; -using Content.Shared.Damage.Prototypes; -using Content.Shared.FixedPoint; -using Robust.Shared.Prototypes; - -namespace Content.Shared.EntityConditions.Conditions; - -/// -/// Returns true if this entity can take damage and if its damage of a given damage type is within a specified minimum and maximum. -/// -/// -public sealed partial class DamageTypeEntityConditionSystem : EntityConditionSystem -{ - protected override void Condition(Entity entity, ref EntityConditionEvent args) - { - var value = entity.Comp.Damage.DamageDict.GetValueOrDefault(args.Condition.DamageType); - args.Result = value >= args.Condition.Min && value <= args.Condition.Max; - } -} - -/// -public sealed partial class DamageTypeCondition : EntityConditionBase -{ - [DataField] - public FixedPoint2 Max = FixedPoint2.MaxValue; - - [DataField] - public FixedPoint2 Min = FixedPoint2.Zero; - - [DataField(required: true)] - public ProtoId DamageType; - - public override string EntityConditionGuidebookText(IPrototypeManager prototype) => - Loc.GetString("entity-condition-guidebook-type-damage", - ("max", Max == FixedPoint2.MaxValue ? int.MaxValue : Max.Float()), - ("min", Min.Float()), - ("type", prototype.Index(DamageType).LocalizedName)); -} diff --git a/Content.Shared/EntityConditions/Conditions/TotalDamageEntityConditionSystem.cs b/Content.Shared/EntityConditions/Conditions/TotalDamageEntityConditionSystem.cs deleted file mode 100644 index 306398b4ebb..00000000000 --- a/Content.Shared/EntityConditions/Conditions/TotalDamageEntityConditionSystem.cs +++ /dev/null @@ -1,33 +0,0 @@ -using Content.Shared.Damage.Components; -using Content.Shared.FixedPoint; -using Robust.Shared.Prototypes; - -namespace Content.Shared.EntityConditions.Conditions; - -/// -/// Returns true if this entity can take damage and if its total damage is within a specified minimum and maximum. -/// -/// -public sealed partial class TotalDamageEntityConditionSystem : EntityConditionSystem -{ - protected override void Condition(Entity entity, ref EntityConditionEvent args) - { - var total = entity.Comp.TotalDamage; - args.Result = total >= args.Condition.Min && total <= args.Condition.Max; - } -} - -/// -public sealed partial class TotalDamageCondition : EntityConditionBase -{ - [DataField] - public FixedPoint2 Max = FixedPoint2.MaxValue; - - [DataField] - public FixedPoint2 Min = FixedPoint2.Zero; - - public override string EntityConditionGuidebookText(IPrototypeManager prototype) => - Loc.GetString("entity-condition-guidebook-total-damage", - ("max", Max == FixedPoint2.MaxValue ? int.MaxValue : Max.Float()), - ("min", Min.Float())); -} diff --git a/Content.Shared/GhostTypes/StoreDamageTakenOnMindSystem.cs b/Content.Shared/GhostTypes/StoreDamageTakenOnMindSystem.cs index 0e985b0b2d8..94e3492f778 100644 --- a/Content.Shared/GhostTypes/StoreDamageTakenOnMindSystem.cs +++ b/Content.Shared/GhostTypes/StoreDamageTakenOnMindSystem.cs @@ -1,5 +1,6 @@ using Content.Shared.Damage.Components; using Content.Shared.Damage.Prototypes; +using Content.Shared.Damage.Systems; using Content.Shared.Destructible; using Content.Shared.Explosion; using Content.Shared.FixedPoint; @@ -13,6 +14,8 @@ namespace Content.Shared.GhostTypes; public sealed class StoreDamageTakenOnMindSystem : EntitySystem { [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; + public override void Initialize() { SubscribeLocalEvent(SaveBodyOnGib); @@ -57,7 +60,7 @@ private void SaveBody(EntityUid ent) EnsureComp(mindContainer.Mind.Value, out var storedDamage); var protoDict = new Dictionary, FixedPoint2>(); - foreach (var stringDict in damageable.DamagePerGroup) // Translates the strings into ProtoId's before saving the Dictionary + foreach (var stringDict in _damageable.GetDamagePerGroup((ent, damageable))) // Translates the strings into ProtoId's before saving the Dictionary { if (!_proto.TryIndex(stringDict.Key, out DamageGroupPrototype? proto)) continue; @@ -65,7 +68,7 @@ private void SaveBody(EntityUid ent) } storedDamage.DamagePerGroup = protoDict; - storedDamage.Damage = damageable.Damage; + storedDamage.Damage = _damageable.GetAllDamage((ent, damageable)); Dirty(mindContainer.Mind.Value, storedDamage); } diff --git a/Content.Shared/HealthExaminable/HealthExaminableSystem.cs b/Content.Shared/HealthExaminable/HealthExaminableSystem.cs index ae938e09953..37dd9c350cf 100644 --- a/Content.Shared/HealthExaminable/HealthExaminableSystem.cs +++ b/Content.Shared/HealthExaminable/HealthExaminableSystem.cs @@ -1,4 +1,5 @@ using Content.Shared.Damage.Components; +using Content.Shared.Damage.Systems; using Content.Shared.Examine; using Content.Shared.FixedPoint; using Content.Shared.IdentityManagement; @@ -10,6 +11,7 @@ namespace Content.Shared.HealthExaminable; public sealed class HealthExaminableSystem : EntitySystem { [Dependency] private readonly ExamineSystemShared _examineSystem = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; public override void Initialize() { @@ -47,9 +49,10 @@ public FormattedMessage CreateMarkup(EntityUid uid, HealthExaminableComponent co var msg = new FormattedMessage(); var first = true; + var damageSpecifier = _damageable.GetAllDamage((uid, damage)); foreach (var type in component.ExaminableTypes) { - if (!damage.Damage.DamageDict.TryGetValue(type, out var dmg)) + if (!damageSpecifier.DamageDict.TryGetValue(type, out var dmg)) continue; if (dmg == FixedPoint2.Zero) diff --git a/Content.Shared/Medical/Cryogenics/CryoPodComponent.cs b/Content.Shared/Medical/Cryogenics/CryoPodComponent.cs index d75d22f60d7..386d0989d97 100644 --- a/Content.Shared/Medical/Cryogenics/CryoPodComponent.cs +++ b/Content.Shared/Medical/Cryogenics/CryoPodComponent.cs @@ -132,19 +132,22 @@ public sealed class CryoPodUserMessage : BoundUserInterfaceMessage public FixedPoint2? BeakerCapacity; public List? Beaker; public List? Injecting; + public bool HasDamage; public CryoPodUserMessage( GasAnalyzerComponent.GasMixEntry gasMix, HealthAnalyzerUiState health, FixedPoint2? beakerCapacity, List? beaker, - List? injecting) + List? injecting, + bool hasDamage) { GasMix = gasMix; Health = health; BeakerCapacity = beakerCapacity; Beaker = beaker; Injecting = injecting; + HasDamage = hasDamage; } } diff --git a/Content.Shared/Medical/Healing/HealingSystem.cs b/Content.Shared/Medical/Healing/HealingSystem.cs index 21bdd077d7a..0e9c4bf991a 100644 --- a/Content.Shared/Medical/Healing/HealingSystem.cs +++ b/Content.Shared/Medical/Healing/HealingSystem.cs @@ -126,7 +126,7 @@ target.Comp.DamageContainerID is not null && private bool HasDamage(Entity healing, Entity target) { - var damageableDict = target.Comp.Damage.DamageDict; + var damageableDict = _damageable.GetAllDamage(target.AsNullable()).DamageDict; var healingDict = healing.Comp.Damage.DamageDict; foreach (var type in healingDict) { @@ -240,7 +240,7 @@ public float GetScaledHealingPenalty(Entity ent, EntityUid target, EntityUid _damageable.TryChangeDamage(target, ent.Comp.ZapHeal, true, origin: user); if (TryComp(target, out var targetThresholds) && - TryComp(target, out var targetDamageable) && _mobThreshold.TryGetThresholdForState(target, MobState.Dead, out var threshold, targetThresholds) && - targetDamageable.TotalDamage < threshold) + _damageable.GetTotalDamage(target) < threshold) { _mobState.ChangeMobState(target, MobState.Critical, targetMobState, user); failedRevive = false; diff --git a/Content.Shared/Medical/Stethoscope/StethoscopeSystem.cs b/Content.Shared/Medical/Stethoscope/StethoscopeSystem.cs index 86a8249321b..34db93f4014 100644 --- a/Content.Shared/Medical/Stethoscope/StethoscopeSystem.cs +++ b/Content.Shared/Medical/Stethoscope/StethoscopeSystem.cs @@ -1,5 +1,6 @@ using Content.Shared.Actions; using Content.Shared.Damage.Components; +using Content.Shared.Damage.Systems; using Content.Shared.DoAfter; using Content.Shared.FixedPoint; using Content.Shared.Inventory; @@ -18,6 +19,7 @@ public sealed class StethoscopeSystem : EntitySystem [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; [Dependency] private readonly MobStateSystem _mobState = default!; [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; // The damage type to "listen" for with the stethoscope. private const string DamageToListenFor = "Asphyxiation"; @@ -96,9 +98,8 @@ private void ExamineWithStethoscope(Entity stethoscope, En // TODO: Add check for respirator component when it gets moved to shared. // If the mob is dead or cannot asphyxiation damage, the popup shows nothing. if (!TryComp(target, out var mobState) || - !TryComp(target, out var damageComp) || _mobState.IsDead(target, mobState) || - !damageComp.Damage.DamageDict.TryGetValue(DamageToListenFor, out var asphyxDmg)) + !_damageable.GetAllDamage(target).DamageDict.TryGetValue(DamageToListenFor, out var asphyxDmg)) { _popup.PopupPredicted(Loc.GetString("stethoscope-nothing"), target, user); stethoscope.Comp.LastMeasuredDamage = null; diff --git a/Content.Shared/Medical/SuitSensors/SharedSuitSensorSystem.cs b/Content.Shared/Medical/SuitSensors/SharedSuitSensorSystem.cs index 861fcd8dafe..75dbc4a7c87 100644 --- a/Content.Shared/Medical/SuitSensors/SharedSuitSensorSystem.cs +++ b/Content.Shared/Medical/SuitSensors/SharedSuitSensorSystem.cs @@ -3,6 +3,7 @@ using Content.Shared.ActionBlocker; using Content.Shared.Clothing; using Content.Shared.Damage.Components; +using Content.Shared.Damage.Systems; using Content.Shared.DeviceNetwork; using Content.Shared.DoAfter; using Content.Shared.Emp; @@ -40,6 +41,7 @@ public abstract class SharedSuitSensorSystem : EntitySystem [Dependency] private readonly SharedIdCardSystem _idCardSystem = default!; [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; private EntityQuery _sensorQuery; public override void Initialize() @@ -375,9 +377,7 @@ public void SetAllSensors(EntityUid target, SuitSensorMode mode, SlotFlags slots isAlive = !_mobStateSystem.IsDead(sensor.User.Value, mobState); // get mob total damage - var totalDamage = 0; - if (TryComp(sensor.User.Value, out var damageable)) - totalDamage = damageable.TotalDamage.Int(); + var totalDamage = _damageable.GetTotalDamage(sensor.User.Value).Int(); // Get mob total damage crit threshold int? totalDamageThreshold = null; diff --git a/Content.Shared/Mobs/Systems/MobThresholdSystem.cs b/Content.Shared/Mobs/Systems/MobThresholdSystem.cs index 3af7317954e..c9534c13666 100644 --- a/Content.Shared/Mobs/Systems/MobThresholdSystem.cs +++ b/Content.Shared/Mobs/Systems/MobThresholdSystem.cs @@ -15,6 +15,7 @@ public sealed class MobThresholdSystem : EntitySystem { [Dependency] private readonly MobStateSystem _mobStateSystem = default!; [Dependency] private readonly AlertsSystem _alerts = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; public override void Initialize() { @@ -270,7 +271,7 @@ public bool GetScaledDamage(EntityUid target1, EntityUid target2, out DamageSpec if (!TryGetThresholdForState(target2, MobState.Dead, out var ent2DeadThreshold, threshold2)) ent2DeadThreshold = 0; - damage = (oldDamage.Damage / ent1DeadThreshold.Value) * ent2DeadThreshold.Value; + damage = (_damageable.GetAllDamage((target1, oldDamage)) / ent1DeadThreshold.Value) * ent2DeadThreshold.Value; return true; } @@ -339,7 +340,7 @@ private void CheckThresholds(EntityUid target, MobStateComponent mobStateCompone { foreach (var (threshold, mobState) in thresholdsComponent.Thresholds.Reverse()) { - if (damageableComponent.TotalDamage < threshold) + if (_damageable.GetTotalDamage((target, damageableComponent)) < threshold) continue; TriggerThreshold(target, mobState, mobStateComponent, thresholdsComponent, origin); @@ -405,7 +406,7 @@ private void UpdateAlerts(EntityUid target, MobState currentMobState, MobThresho } if (TryGetNextState(target, currentMobState, out var nextState, threshold) && - TryGetPercentageForState(target, nextState.Value, damageable.TotalDamage, out var percentage)) + TryGetPercentageForState(target, nextState.Value, _damageable.GetTotalDamage((target, damageable)), out var percentage)) { percentage = FixedPoint2.Clamp(percentage.Value, 0, 1); diff --git a/Content.Shared/Repairable/RepairableSystem.cs b/Content.Shared/Repairable/RepairableSystem.cs index 8fbdf90ee67..89fce2e0057 100644 --- a/Content.Shared/Repairable/RepairableSystem.cs +++ b/Content.Shared/Repairable/RepairableSystem.cs @@ -28,7 +28,11 @@ private void OnRepairDoAfter(Entity ent, ref RepairDoAfterE if (args.Cancelled) return; - if (!TryComp(ent.Owner, out DamageableComponent? damageable) || damageable.TotalDamage == 0) + if (!TryComp(ent.Owner, out DamageableComponent? damageable)) + return; + + var totalDamage = _damageableSystem.GetTotalDamage((ent.Owner, damageable)); + if (totalDamage == 0) return; if (ent.Comp.DamageValue != null) @@ -38,7 +42,7 @@ private void OnRepairDoAfter(Entity ent, ref RepairDoAfterE else RepairAllDamage((ent, damageable), args.User); - args.Repeat = ent.Comp.AutoDoAfter && damageable.TotalDamage > 0; + args.Repeat = ent.Comp.AutoDoAfter && totalDamage > 0; args.Args.Event.Repeat = args.Repeat; args.Handled = true; @@ -95,7 +99,7 @@ private void Repair(Entity ent, ref InteractUsingEvent args return; // Only try repair the target if it is damaged - if (!TryComp(ent.Owner, out var damageable) || damageable.TotalDamage == 0) + if (_damageableSystem.GetTotalDamage(ent.Owner) == 0) return; float delay = ent.Comp.DoAfterDelay; diff --git a/Content.Shared/Silicons/Bots/MedibotComponent.cs b/Content.Shared/Silicons/Bots/MedibotComponent.cs index 9bd45e9a6a5..1ac5250d0fa 100644 --- a/Content.Shared/Silicons/Bots/MedibotComponent.cs +++ b/Content.Shared/Silicons/Bots/MedibotComponent.cs @@ -44,27 +44,4 @@ public sealed partial class MedibotTreatment /// [DataField(required: true)] public FixedPoint2 Quantity; - - /// - /// Do nothing when the patient is at or below this total damage. - /// When null this will inject meds into completely healthy patients. - /// - [DataField] - public FixedPoint2? MinDamage; - - /// - /// Do nothing when the patient is at or above this total damage. - /// Useful for tricordrazine which does nothing above 50 damage. - /// - [DataField] - public FixedPoint2? MaxDamage; - - /// - /// Returns whether the treatment will probably work for an amount of damage. - /// Doesn't account for specific damage types only total amount. - /// - public bool IsValid(FixedPoint2 damage) - { - return (MaxDamage == null || damage < MaxDamage) && (MinDamage == null || damage > MinDamage); - } } diff --git a/Content.Shared/Silicons/Bots/MedibotSystem.cs b/Content.Shared/Silicons/Bots/MedibotSystem.cs index b960e190682..1505b60415a 100644 --- a/Content.Shared/Silicons/Bots/MedibotSystem.cs +++ b/Content.Shared/Silicons/Bots/MedibotSystem.cs @@ -3,6 +3,7 @@ using System.Diagnostics.CodeAnalysis; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Damage.Components; +using Content.Shared.Damage.Systems; using Content.Shared.DoAfter; using Content.Shared.Emag.Components; using Content.Shared.Emag.Systems; @@ -25,6 +26,7 @@ public sealed class MedibotSystem : EntitySystem [Dependency] private SharedSolutionContainerSystem _solutionContainer = default!; [Dependency] private SharedPopupSystem _popup = default!; [Dependency] private SharedDoAfterSystem _doAfter = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; public override void Initialize() { @@ -107,14 +109,14 @@ public bool CheckInjectable(Entity medibot, EntityUid target, return false; } - var total = damageable.TotalDamage; + var total = _damageable.GetTotalDamage((target, damageable)); if (total == 0 && !HasComp(medibot)) { _popup.PopupClient(Loc.GetString("medibot-target-healthy"), medibot, medibot); return false; } - if (!TryGetTreatment(medibot.Comp, mobState.CurrentState, out var treatment) || !treatment.IsValid(total) && !manual) return false; + if (!TryGetTreatment(medibot.Comp, mobState.CurrentState, out var treatment) || !manual) return false; return true; } diff --git a/Resources/Locale/en-US/reagents/meta/medicine.ftl b/Resources/Locale/en-US/reagents/meta/medicine.ftl index 8ff827f4082..43ae5a806cf 100644 --- a/Resources/Locale/en-US/reagents/meta/medicine.ftl +++ b/Resources/Locale/en-US/reagents/meta/medicine.ftl @@ -136,9 +136,6 @@ reagent-desc-opporozidone= A difficult to synthesize cryogenic drug used to rege reagent-name-arcryox = arcryox reagent-desc-arcryox = A sickeningly blue cryogenics chemical that is able to heal extreme wounds even on the dead. It has trouble stabilizing patients however. -reagent-name-necrosol = necrosol -reagent-desc-necrosol = A necrotic substance that seems to be able to heal frozen corpses. It can treat and rejuvenate plants when applied in small doses. - reagent-name-aloxadone = aloxadone reagent-desc-aloxadone = A cryogenics chemical. Used to treat severe burns and frostbite via regeneration of the affected tissue. Works regardless of the patient being alive or dead. diff --git a/Resources/Prototypes/Body/Species/slime.yml b/Resources/Prototypes/Body/Species/slime.yml index 1d8e946844e..82c8b30ca6a 100644 --- a/Resources/Prototypes/Body/Species/slime.yml +++ b/Resources/Prototypes/Body/Species/slime.yml @@ -116,7 +116,6 @@ - type: PassiveDamage # Around 8 damage a minute healed allowedStates: - Alive - damageCap: 65 damage: types: Heat: -0.14 diff --git a/Resources/Prototypes/Body/Species/vox.yml b/Resources/Prototypes/Body/Species/vox.yml index 92c98ea9cbf..9fab05ea20f 100644 --- a/Resources/Prototypes/Body/Species/vox.yml +++ b/Resources/Prototypes/Body/Species/vox.yml @@ -224,7 +224,6 @@ # This allows Vox to take their mask off temporarily to eat something without needing a trip to medbay afterwards. allowedStates: - Alive - damageCap: 20 damage: types: Heat: -0.07 diff --git a/Resources/Prototypes/Body/species_base.yml b/Resources/Prototypes/Body/species_base.yml index 74663cc814d..454b376ad39 100644 --- a/Resources/Prototypes/Body/species_base.yml +++ b/Resources/Prototypes/Body/species_base.yml @@ -182,7 +182,6 @@ - type: PassiveDamage allowedStates: - Alive - damageCap: 20 damage: types: Heat: -0.07 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 00344c93834..cf8bb477f0d 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -2588,7 +2588,6 @@ - type: PassiveDamage # Slight passive regen. Assuming one damage type, comes out to about 4 damage a minute from base.yml. allowedStates: - Alive - damageCap: 89 damage: types: Poison: -0.07 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/living_light.yml b/Resources/Prototypes/Entities/Mobs/NPCs/living_light.yml index 86b75ba7b25..74ab0102d52 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/living_light.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/living_light.yml @@ -67,7 +67,6 @@ - type: PassiveDamage allowedStates: - Alive - damageCap: 20 damage: types: Heat: -0.2 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml b/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml index 45ff0ea7553..7ce6df4a9a2 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/miscellaneous.yml @@ -224,7 +224,6 @@ allowedStates: - Alive - Dead - damageCap: 50 damage: types: Blunt: 0.11 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml index a4d5e4100f6..8cf988c68ef 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml @@ -321,8 +321,6 @@ Alive: reagent: Tricordrazine quantity: 30 - minDamage: 0 - maxDamage: 50 Critical: reagent: Inaprovaline quantity: 15 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml index 15aee05b1e8..5fe9435f7a8 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml @@ -619,21 +619,6 @@ - ReagentId: Mannitol Quantity: 30 -- type: entity - id: ChemistryBottleNecrosol - suffix: necrosol - parent: BaseChemistryBottleFilled - components: - - type: Label - currentLabel: reagent-name-necrosol - - type: SolutionContainerManager - solutions: - drink: - maxVol: 30 - reagents: - - ReagentId: Necrosol - Quantity: 30 - - type: entity id: ChemistryBottleOculine suffix: oculine @@ -1476,7 +1461,6 @@ - id: ChemistryBottleLeporazine - id: ChemistryBottleLipozine - id: ChemistryBottleMannitol - - id: ChemistryBottleNecrosol - id: ChemistryBottleOculine - id: ChemistryBottleOmnizine - id: ChemistryBottleOpporozidone diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml index 0dca01a6bcf..9e1ca7236b8 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/morgue.yml @@ -149,7 +149,7 @@ reagents: - ReagentId: Ash Quantity: 25 - - ReagentId: Necrosol + - ReagentId: Arcryox Quantity: 25 - type: GuideHelp guides: diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/randompill.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/randompill.yml index 941abd1a430..aefcc5c8b43 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/randompill.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/randompill.yml @@ -11,7 +11,6 @@ weight: 5 reagents: - Ichor - - Necrosol - quantity: 5 weight: 4 reagents: diff --git a/Resources/Prototypes/Reagents/medicine.yml b/Resources/Prototypes/Reagents/medicine.yml index 782df52a511..0a3a5650897 100644 --- a/Resources/Prototypes/Reagents/medicine.yml +++ b/Resources/Prototypes/Reagents/medicine.yml @@ -817,9 +817,6 @@ Bloodstream: effects: - !type:EvenHealthChange - conditions: - - !type:TotalDamageCondition - max: 50 damage: Brute: -1 Burn: -1 @@ -1160,8 +1157,6 @@ factor: 3 - !type:HealthChange conditions: - - !type:TotalDamageCondition - max: 50 damage: types: Blunt: -0.2 @@ -1312,53 +1307,9 @@ conditions: - !type:TemperatureCondition max: 213.0 - - !type:TotalDamageCondition - min: 199.9 damage: - Brute: -2 - Burn: -2 - - !type:EvenHealthChange - conditions: - - !type:TemperatureCondition - max: 213.0 - - !type:TotalDamageCondition - min: 500 - damage: - Brute: -4 - Burn: -4 - -- type: reagent - id: Necrosol - name: reagent-name-necrosol - group: Medicine - desc: reagent-desc-necrosol - physicalDesc: reagent-physical-desc-necrotic - flavor: medicine - color: "#86a5bd" - worksOnTheDead: true - plantMetabolism: - - !type:PlantAdjustToxins - amount: -5 - - !type:PlantAdjustHealth - amount: 5 - - !type:PlantCryoxadone {} - metabolisms: - Bloodstream: - effects: - - !type:EvenHealthChange - conditions: - - !type:TemperatureCondition - max: 213.0 - damage: - Brute: -2 - Burn: -2 - - !type:HealthChange - conditions: - - !type:TemperatureCondition - max: 213.0 - damage: - types: - Poison: -2 + Brute: -3 + Burn: -3 - type: reagent id : Aloxadone diff --git a/Resources/Prototypes/Reagents/narcotics.yml b/Resources/Prototypes/Reagents/narcotics.yml index 396bcacf99a..65674bb5a2d 100644 --- a/Resources/Prototypes/Reagents/narcotics.yml +++ b/Resources/Prototypes/Reagents/narcotics.yml @@ -190,15 +190,15 @@ amount: -1.5 - !type:EvenHealthChange conditions: - - !type:TotalDamageCondition - min: 70 # only heals when you're more dead than alive + - !type:MobStateCondition + mobstate: Critical damage: # Doesn't heal poison because if you OD'd I'm not giving you a safety net Burn: -0.5 Brute: -0.5 - !type:HealthChange conditions: - - !type:TotalDamageCondition - min: 95 # Just to bring you back from the brink of death + - !type:MobStateCondition + mobstate: Critical damage: types: Asphyxiation: -2 diff --git a/Resources/Prototypes/Recipes/Reactions/medicine.yml b/Resources/Prototypes/Recipes/Reactions/medicine.yml index 335f1e0ed32..644452cff53 100644 --- a/Resources/Prototypes/Recipes/Reactions/medicine.yml +++ b/Resources/Prototypes/Recipes/Reactions/medicine.yml @@ -583,20 +583,6 @@ products: Arcryox: 3 -- type: reaction - id: Necrosol - impact: Medium - minTemp: 370 - reactants: - Blood: - amount: 3 - Omnizine: - amount: 1 - Cryoxadone: - amount: 2 - products: - Necrosol: 2 - - type: reaction id: Aloxadone impact: Medium diff --git a/Resources/ServerInfo/Guidebook/Medical/Cryogenics.xml b/Resources/ServerInfo/Guidebook/Medical/Cryogenics.xml index eb7af8b4993..00b80039772 100644 --- a/Resources/ServerInfo/Guidebook/Medical/Cryogenics.xml +++ b/Resources/ServerInfo/Guidebook/Medical/Cryogenics.xml @@ -44,11 +44,11 @@ Once things have been set up, you're going to require a specific medication, Cry The standard pressure for a gas pump is 100.325 kpa. Cryoxadone works at under 170K, but it is standard practice to set the freezer to 100K for faster freezing. + - diff --git a/Resources/ServerInfo/Guidebook/Service/Botany.xml b/Resources/ServerInfo/Guidebook/Service/Botany.xml index 29982b06778..14096754bd8 100644 --- a/Resources/ServerInfo/Guidebook/Service/Botany.xml +++ b/Resources/ServerInfo/Guidebook/Service/Botany.xml @@ -82,7 +82,6 @@ Some chemicals have special effects on plants. - From 90f6a725078008b554336e4b0d154460eb95a4b9 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 7 Mar 2026 04:28:00 +0000 Subject: [PATCH 475/603] Automatic changelog update --- Resources/Changelog/Admin.yml | 7 +++++++ Resources/Changelog/Changelog.yml | 31 ++++++++++++++++++++++++------- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index cc193c325c7..de7aec97e16 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -1675,5 +1675,12 @@ Entries: id: 204 time: '2026-02-28T20:30:12.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43063 +- author: sowelipililimute + changes: + - message: Godmode no longer saves and restores the damage held before godmode. + type: Remove + id: 205 + time: '2026-03-07T04:26:52.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43103 Name: Admin Order: 3 diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index f9c85f1b3b6..890a505552c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Hitlinemoss - changes: - - message: Folders and clipboards are now available in the Trinkets loadout tab. - type: Add - id: 9056 - time: '2025-10-08T15:49:21.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39920 - author: SlamBamActionman changes: - message: Disablers, temperature guns and tasers can now hit holo mobs. @@ -3986,3 +3979,27 @@ id: 9566 time: '2026-03-07T02:00:51.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43038 +- author: sowelipililimute + changes: + - message: Underlying technical work for future medical improvements have resulted + in the following changes to better accomodate future development. Please note + that these changes are not representative of the final product and that the + medical balance will receive a major overhaul once limb and organ damage are + fully implemented. + type: Tweak + - message: Passive regeneration on mobs no longer stops after taking a certain amount + of damage. + type: Tweak + - message: Necrosol has been removed in favour of Acryox always healing, regardless + of damage. + type: Remove + - message: Hyperzine now heals you when critical, rather than relying on being above + a certain amount of damage. + type: Tweak + - message: Tricordrazine and Holy Water no longer have an upper damage + type: Tweak + - message: Changeling devour damage is no longer capped + type: Tweak + id: 9567 + time: '2026-03-07T04:26:52.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43103 From a42284a14ee107c4fd529a09be373e99ccc46d8d Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Sat, 7 Mar 2026 21:04:53 +0700 Subject: [PATCH 476/603] meow --- Resources/Prototypes/Maps/serpentcrest.yml | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/Resources/Prototypes/Maps/serpentcrest.yml b/Resources/Prototypes/Maps/serpentcrest.yml index f879444173e..35706828825 100644 --- a/Resources/Prototypes/Maps/serpentcrest.yml +++ b/Resources/Prototypes/Maps/serpentcrest.yml @@ -17,16 +17,17 @@ - type: StationCargoShuttle path: /Maps/Shuttles/cargo_syndicate.yml - type: StationJobs - availableJobs: + availableJobs: #command (7) Captain: [ 1, 1 ] + IAA: [ 1, 1 ] # Corvax-IAA HeadOfPersonnel: [ 1, 1 ] HeadOfSecurity: [ 1, 1 ] ChiefMedicalOfficer: [ 1, 1 ] ChiefEngineer: [ 1, 1 ] ResearchDirector: [ 1, 1 ] Quartermaster: [ 1, 1 ] - #service + #service Bartender: [ 2, 2 ] Botanist: [ 2, 2 ] Chef: [ 2, 2 ] @@ -35,11 +36,11 @@ Librarian: [ 1, 1 ] ServiceWorker: [ 2, 3 ] Reporter: [ 1, 1 ] - #engineering + #engineering AtmosphericTechnician: [ 3, 3 ] StationEngineer: [ 4, 5 ] TechnicalAssistant: [ 3, 3 ] #intern, not counted - #medical + #medical Chemist: [ 3, 3 ] MedicalDoctor: [ 5, 5 ] Paramedic: [ 2, 2 ] @@ -47,20 +48,20 @@ #science (5) Scientist: [ 5, 5 ] ResearchAssistant: [ 4, 4 ] #intern, not counted - #security + #security Warden: [ 1, 1 ] SecurityOfficer: [ 5, 6 ] Detective: [ 1, 1 ] SecurityCadet: [ 3, 3 ] #intern, not counted - Lawyer: [ 2, 2 ] - #supply + #Lawyer: [ 2, 2 ] # Corvax-IAA + #supply SalvageSpecialist: [ 4, 4 ] CargoTechnician: [ 4, 5 ] - #civilian + #civilian Passenger: [ -1, -1 ] #infinite, not counted Clown: [ 1, 1 ] Mime: [ 1, 1 ] Musician: [ 1, 1 ] - #silicon + #silicon Borg: [ 3, 3 ] StationAi: [ 1, 1 ] From ae6b6811f9f0905f216979c896f2922ec86b0489 Mon Sep 17 00:00:00 2001 From: alexalexmax <149889301+alexalexmax@users.noreply.github.com> Date: Sat, 7 Mar 2026 09:37:04 -0500 Subject: [PATCH 477/603] PinpointerSystem&Component cleanup (#42463) * cleanup * make some stuff nullable again * Apply suggestions from code review Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * fix and remove a dependency --------- Co-authored-by: seanpimble <149889301+seanpimble@users.noreply.github.com> Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- Content.Server/Pinpointer/PinpointerSystem.cs | 68 +++++++++-------- .../Pinpointer/PinpointerComponent.cs | 16 ++-- .../Pinpointer/SharedPinpointerSystem.cs | 75 ++++++++++--------- 3 files changed, 82 insertions(+), 77 deletions(-) diff --git a/Content.Server/Pinpointer/PinpointerSystem.cs b/Content.Server/Pinpointer/PinpointerSystem.cs index 22eb26b16b0..d615a431faa 100644 --- a/Content.Server/Pinpointer/PinpointerSystem.cs +++ b/Content.Server/Pinpointer/PinpointerSystem.cs @@ -4,7 +4,6 @@ using System.Numerics; using Robust.Shared.Utility; using Content.Server.Shuttles.Events; -using Content.Shared.IdentityManagement; namespace Content.Server.Pinpointer; @@ -24,34 +23,35 @@ public override void Initialize() SubscribeLocalEvent(OnLocateTarget); } - public override bool TogglePinpointer(EntityUid uid, PinpointerComponent? pinpointer = null) + public override bool TogglePinpointer(Entity ent) { - if (!Resolve(uid, ref pinpointer)) + if (!Resolve(ent, ref ent.Comp)) return false; - var isActive = !pinpointer.IsActive; - SetActive(uid, isActive, pinpointer); - UpdateAppearance(uid, pinpointer); + var isActive = !ent.Comp.IsActive; + SetActive(ent, isActive); + UpdateAppearance(ent); return isActive; } - private void UpdateAppearance(EntityUid uid, PinpointerComponent pinpointer, AppearanceComponent? appearance = null) + private void UpdateAppearance(Entity ent) { - if (!Resolve(uid, ref appearance)) + if (!Resolve(ent, ref ent.Comp1) || !Resolve(ent, ref ent.Comp2)) return; - _appearance.SetData(uid, PinpointerVisuals.IsActive, pinpointer.IsActive, appearance); - _appearance.SetData(uid, PinpointerVisuals.TargetDistance, pinpointer.DistanceToTarget, appearance); + + _appearance.SetData(ent, PinpointerVisuals.IsActive, ent.Comp1.IsActive, ent.Comp2); + _appearance.SetData(ent, PinpointerVisuals.TargetDistance, ent.Comp1.DistanceToTarget, ent.Comp2); } - private void OnActivate(EntityUid uid, PinpointerComponent component, ActivateInWorldEvent args) + private void OnActivate(Entity ent, ref ActivateInWorldEvent args) { if (args.Handled || !args.Complex) return; - TogglePinpointer(uid, component); + TogglePinpointer(ent.AsNullable()); - if (!component.CanRetarget) - LocateTarget(uid, component); + if (!ent.Comp.CanRetarget) + LocateTarget(ent); args.Handled = true; } @@ -69,12 +69,14 @@ private void OnLocateTarget(ref FTLCompletedEvent ev) if (pinpointer.CanRetarget) continue; - LocateTarget(uid, pinpointer); + LocateTarget((uid, pinpointer)); } } - private void LocateTarget(EntityUid uid, PinpointerComponent component) + private void LocateTarget(Entity ent) { + var component = ent.Comp; + // try to find target from whitelist if (component.IsActive && component.Component != null) { @@ -85,8 +87,8 @@ private void LocateTarget(EntityUid uid, PinpointerComponent component) return; } - var target = FindTargetFromComponent(uid, reg.Type); - SetTarget(uid, target, component); + var target = FindTargetFromComponent(ent.Owner, reg.Type); + SetTarget(ent.AsNullable(), target); } } @@ -99,7 +101,7 @@ public override void Update(float frameTime) var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var pinpointer)) { - UpdateDirectionToTarget(uid, pinpointer); + UpdateDirectionToTarget((uid, pinpointer)); } } @@ -107,17 +109,15 @@ public override void Update(float frameTime) /// Try to find the closest entity from whitelist on a current map /// Will return null if can't find anything /// - private EntityUid? FindTargetFromComponent(EntityUid uid, Type whitelist, TransformComponent? transform = null) + private EntityUid? FindTargetFromComponent(Entity ent, Type whitelist) { - _xformQuery.Resolve(uid, ref transform, false); - - if (transform == null) + if (!Resolve(ent, ref ent.Comp)) return null; // sort all entities in distance increasing order - var mapId = transform.MapID; + var mapId = ent.Comp.MapID; var l = new SortedList(); - var worldPos = _transform.GetWorldPosition(transform); + var worldPos = _transform.GetWorldPosition(ent.Comp); foreach (var (otherUid, _) in EntityManager.GetAllComponents(whitelist)) { @@ -135,36 +135,38 @@ public override void Update(float frameTime) /// /// Update direction from pinpointer to selected target (if it was set) /// - protected override void UpdateDirectionToTarget(EntityUid uid, PinpointerComponent? pinpointer = null) + protected override void UpdateDirectionToTarget(Entity ent) { - if (!Resolve(uid, ref pinpointer)) + if (!Resolve(ent, ref ent.Comp)) return; + var pinpointer = ent.Comp; + if (!pinpointer.IsActive) return; var target = pinpointer.Target; if (target == null || !Exists(target.Value)) { - SetDistance(uid, Distance.Unknown, pinpointer); + SetDistance(ent, Distance.Unknown); return; } - var dirVec = CalculateDirection(uid, target.Value); + var dirVec = CalculateDirection(ent, target.Value); var oldDist = pinpointer.DistanceToTarget; if (dirVec != null) { var angle = dirVec.Value.ToWorldAngle(); - TrySetArrowAngle(uid, angle, pinpointer); + TrySetArrowAngle(ent, angle); var dist = CalculateDistance(dirVec.Value, pinpointer); - SetDistance(uid, dist, pinpointer); + SetDistance(ent, dist); } else { - SetDistance(uid, Distance.Unknown, pinpointer); + SetDistance(ent, Distance.Unknown); } if (oldDist != pinpointer.DistanceToTarget) - UpdateAppearance(uid, pinpointer); + UpdateAppearance(ent); } /// diff --git a/Content.Shared/Pinpointer/PinpointerComponent.cs b/Content.Shared/Pinpointer/PinpointerComponent.cs index e83a2e38d60..dcf2680eea4 100644 --- a/Content.Shared/Pinpointer/PinpointerComponent.cs +++ b/Content.Shared/Pinpointer/PinpointerComponent.cs @@ -12,40 +12,40 @@ namespace Content.Shared.Pinpointer; public sealed partial class PinpointerComponent : Component { // TODO: Type serializer oh god - [DataField("component"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public string? Component; - [DataField("mediumDistance"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public float MediumDistance = 16f; - [DataField("closeDistance"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public float CloseDistance = 8f; - [DataField("reachedDistance"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public float ReachedDistance = 1f; /// /// Pinpointer arrow precision in radians. /// - [DataField("precision"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public double Precision = 0.09; /// /// Name to display of the target being tracked. /// - [DataField("targetName"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public string? TargetName; /// /// Whether or not the target name should be updated when the target is updated. /// - [DataField("updateTargetName"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public bool UpdateTargetName; /// /// Whether or not the target can be reassigned. /// - [DataField("canRetarget"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public bool CanRetarget; [ViewVariables] diff --git a/Content.Shared/Pinpointer/SharedPinpointerSystem.cs b/Content.Shared/Pinpointer/SharedPinpointerSystem.cs index 47109601835..79fc820baf8 100644 --- a/Content.Shared/Pinpointer/SharedPinpointerSystem.cs +++ b/Content.Shared/Pinpointer/SharedPinpointerSystem.cs @@ -23,30 +23,32 @@ public override void Initialize() /// /// Set the target if capable /// - private void OnAfterInteract(EntityUid uid, PinpointerComponent component, AfterInteractEvent args) + private void OnAfterInteract(Entity ent, ref AfterInteractEvent args) { if (!args.CanReach || args.Target is not { } target) return; - if (!component.CanRetarget || component.IsActive) + if (!ent.Comp.CanRetarget || ent.Comp.IsActive) return; // TODO add doafter once the freeze is lifted args.Handled = true; - component.Target = args.Target; - _adminLogger.Add(LogType.Action, LogImpact.Low, $"{ToPrettyString(args.User):player} set target of {ToPrettyString(uid):pinpointer} to {ToPrettyString(component.Target.Value):target}"); - if (component.UpdateTargetName) - component.TargetName = component.Target == null ? null : Identity.Name(component.Target.Value, EntityManager); + ent.Comp.Target = args.Target; + _adminLogger.Add(LogType.Action, LogImpact.Low, $"{ToPrettyString(args.User):player} set target of {ToPrettyString(ent):pinpointer} to {ToPrettyString(ent.Comp.Target.Value):target}"); + if (ent.Comp.UpdateTargetName) + ent.Comp.TargetName = ent.Comp.Target == null ? null : Identity.Name(ent.Comp.Target.Value, EntityManager); } /// /// Set pinpointers target to track /// - public virtual void SetTarget(EntityUid uid, EntityUid? target, PinpointerComponent? pinpointer = null) + public virtual void SetTarget(Entity ent, EntityUid? target) { - if (!Resolve(uid, ref pinpointer)) + if (!Resolve(ent, ref ent.Comp)) return; + var pinpointer = ent.Comp; + if (pinpointer.Target == target) return; @@ -54,38 +56,38 @@ public virtual void SetTarget(EntityUid uid, EntityUid? target, PinpointerCompon if (pinpointer.UpdateTargetName) pinpointer.TargetName = target == null ? null : Identity.Name(target.Value, EntityManager); if (pinpointer.IsActive) - UpdateDirectionToTarget(uid, pinpointer); + UpdateDirectionToTarget(ent); } /// /// Update direction from pinpointer to selected target (if it was set) /// - protected virtual void UpdateDirectionToTarget(EntityUid uid, PinpointerComponent? pinpointer = null) + protected virtual void UpdateDirectionToTarget(Entity ent) { } - private void OnExamined(EntityUid uid, PinpointerComponent component, ExaminedEvent args) + private void OnExamined(Entity ent, ref ExaminedEvent args) { - if (!args.IsInDetailsRange || component.TargetName == null) + if (!args.IsInDetailsRange || ent.Comp.TargetName == null) return; - args.PushMarkup(Loc.GetString("examine-pinpointer-linked", ("target", component.TargetName))); + args.PushMarkup(Loc.GetString("examine-pinpointer-linked", ("target", ent.Comp.TargetName))); } /// /// Manually set distance from pinpointer to target /// - public void SetDistance(EntityUid uid, Distance distance, PinpointerComponent? pinpointer = null) + public void SetDistance(Entity ent, Distance distance) { - if (!Resolve(uid, ref pinpointer)) + if (!Resolve(ent, ref ent.Comp)) return; - if (distance == pinpointer.DistanceToTarget) + if (distance == ent.Comp.DistanceToTarget) return; - pinpointer.DistanceToTarget = distance; - Dirty(uid, pinpointer); + ent.Comp.DistanceToTarget = distance; + Dirty(ent); } /// @@ -93,16 +95,16 @@ public void SetDistance(EntityUid uid, Distance distance, PinpointerComponent? p /// If difference between current angle and new angle is smaller than /// pinpointer precision, new value will be ignored and it will return false. /// - public bool TrySetArrowAngle(EntityUid uid, Angle arrowAngle, PinpointerComponent? pinpointer = null) + public bool TrySetArrowAngle(Entity ent, Angle arrowAngle) { - if (!Resolve(uid, ref pinpointer)) + if (!Resolve(ent, ref ent.Comp)) return false; - if (pinpointer.ArrowAngle.EqualsApprox(arrowAngle, pinpointer.Precision)) + if (ent.Comp.ArrowAngle.EqualsApprox(arrowAngle, ent.Comp.Precision)) return false; - pinpointer.ArrowAngle = arrowAngle; - Dirty(uid, pinpointer); + ent.Comp.ArrowAngle = arrowAngle; + Dirty(ent); return true; } @@ -110,15 +112,16 @@ public bool TrySetArrowAngle(EntityUid uid, Angle arrowAngle, PinpointerComponen /// /// Activate/deactivate pinpointer screen. If it has target it will start tracking it. /// - public void SetActive(EntityUid uid, bool isActive, PinpointerComponent? pinpointer = null) + public void SetActive(Entity ent, bool isActive) { - if (!Resolve(uid, ref pinpointer)) + if (!Resolve(ent, ref ent.Comp)) return; - if (isActive == pinpointer.IsActive) + + if (isActive == ent.Comp.IsActive) return; - pinpointer.IsActive = isActive; - Dirty(uid, pinpointer); + ent.Comp.IsActive = isActive; + Dirty(ent); } @@ -126,28 +129,28 @@ public void SetActive(EntityUid uid, bool isActive, PinpointerComponent? pinpoin /// Toggle Pinpointer screen. If it has target it will start tracking it. /// /// True if pinpointer was activated, false otherwise - public virtual bool TogglePinpointer(EntityUid uid, PinpointerComponent? pinpointer = null) + public virtual bool TogglePinpointer(Entity ent) { - if (!Resolve(uid, ref pinpointer)) + if (!Resolve(ent, ref ent.Comp)) return false; - var isActive = !pinpointer.IsActive; - SetActive(uid, isActive, pinpointer); + var isActive = !ent.Comp.IsActive; + SetActive(ent, isActive); return isActive; } - private void OnEmagged(EntityUid uid, PinpointerComponent component, ref GotEmaggedEvent args) + private void OnEmagged(Entity ent, ref GotEmaggedEvent args) { if (!_emag.CompareFlag(args.Type, EmagType.Interaction)) return; - if (_emag.CheckFlag(uid, EmagType.Interaction)) + if (_emag.CheckFlag(ent, EmagType.Interaction)) return; - if (component.CanRetarget) + if (ent.Comp.CanRetarget) return; args.Handled = true; - component.CanRetarget = true; + ent.Comp.CanRetarget = true; } } From 312ff05feb2a901af0a76deca44edd6a4a6c711b Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Sun, 8 Mar 2026 03:08:52 +0700 Subject: [PATCH 478/603] error RA0026 forever --- .../Corvax/Documents/DocumentPrinterSystem.cs | 1 - Content.Server/Corvax/Ipc/IpcSystem.cs | 1 - .../EntitySystems/GrowlingAccentSystem.cs | 38 ++++------ .../Corvax/TTS/TTSSystem.Sanitize.cs | 15 ++-- .../Speech/EntitySystems/FrontalLispSystem.cs | 38 ++++++---- .../EntitySystems/LizardAccentSystem.cs | 73 +++++++------------ .../Speech/EntitySystems/MothAccentSystem.cs | 40 ++++------ 7 files changed, 87 insertions(+), 119 deletions(-) diff --git a/Content.Server/Corvax/Documents/DocumentPrinterSystem.cs b/Content.Server/Corvax/Documents/DocumentPrinterSystem.cs index b47d79a5e8c..7b358c1dc1d 100644 --- a/Content.Server/Corvax/Documents/DocumentPrinterSystem.cs +++ b/Content.Server/Corvax/Documents/DocumentPrinterSystem.cs @@ -14,7 +14,6 @@ public sealed partial class DocumentPrinterSystem : EntitySystem [Dependency] private readonly ItemSlotsSystem _itemSlots = default!; [Dependency] private readonly PaperSystem _paper = default!; [Dependency] private readonly SharedStationSystem _station = default!; - [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly SharedGameTicker _gameTicker = default!; public override void Initialize() diff --git a/Content.Server/Corvax/Ipc/IpcSystem.cs b/Content.Server/Corvax/Ipc/IpcSystem.cs index e1ed6329d9a..150dfcbd513 100644 --- a/Content.Server/Corvax/Ipc/IpcSystem.cs +++ b/Content.Server/Corvax/Ipc/IpcSystem.cs @@ -34,7 +34,6 @@ public sealed partial class IpcSystem : EntitySystem [Dependency] private readonly MobStateSystem _mobState = default!; [Dependency] private readonly SharedUserInterfaceSystem _ui = default!; [Dependency] private readonly SharedBatterySystem _battery = default!; - [Dependency] private readonly MarkingManager _markingManager = default!; [Dependency] private readonly SharedVisualBodySystem _visualBody = default!; public override void Initialize() { diff --git a/Content.Server/Corvax/Speech/EntitySystems/GrowlingAccentSystem.cs b/Content.Server/Corvax/Speech/EntitySystems/GrowlingAccentSystem.cs index 48c6bd2aa88..37e03566a50 100644 --- a/Content.Server/Corvax/Speech/EntitySystems/GrowlingAccentSystem.cs +++ b/Content.Server/Corvax/Speech/EntitySystems/GrowlingAccentSystem.cs @@ -9,6 +9,15 @@ public sealed class GrowlingAccentSystem : EntitySystem { [Dependency] private readonly IRobustRandom _random = default!; + private static readonly Regex _regexLowerR = new Regex("r+"); + private static readonly Regex _regexUpperR = new Regex("R+"); + private static readonly Regex _regexLowerRp = new Regex("р+"); + private static readonly Regex _regexUpperRp = new Regex("Р+"); + private static readonly List _replacementsR = new List { "rr", "rrr" }; + private static readonly List _replacementsRUpper = new List { "RR", "RRR" }; + private static readonly List _replacementsRp = new List { "рр", "ррр" }; + private static readonly List _replacementsRpUpper = new List { "РР", "РРР" }; + public override void Initialize() { base.Initialize(); @@ -19,31 +28,10 @@ private void OnAccent(EntityUid uid, GrowlingAccentComponent component, AccentGe { var message = args.Message; - // r => rrr - message = Regex.Replace( - message, - "r+", - _random.Pick(new List { "rr", "rrr" }) - ); - // R => RRR - message = Regex.Replace( - message, - "R+", - _random.Pick(new List { "RR", "RRR" }) - ); - - // р => ррр - message = Regex.Replace( - message, - "р+", - _random.Pick(new List { "рр", "ррр" }) - ); - // Р => РРР - message = Regex.Replace( - message, - "Р+", - _random.Pick(new List { "РР", "РРР" }) - ); + message = _regexLowerR.Replace(message, _random.Pick(_replacementsR)); + message = _regexUpperR.Replace(message, _random.Pick(_replacementsRUpper)); + message = _regexLowerRp.Replace(message, _random.Pick(_replacementsRp)); + message = _regexUpperRp.Replace(message, _random.Pick(_replacementsRpUpper)); args.Message = message; } diff --git a/Content.Server/Corvax/TTS/TTSSystem.Sanitize.cs b/Content.Server/Corvax/TTS/TTSSystem.Sanitize.cs index 6f47c1d1194..1e81414c7dd 100644 --- a/Content.Server/Corvax/TTS/TTSSystem.Sanitize.cs +++ b/Content.Server/Corvax/TTS/TTSSystem.Sanitize.cs @@ -7,6 +7,11 @@ namespace Content.Server.Corvax.TTS; // ReSharper disable once InconsistentNaming public sealed partial class TTSSystem { + private static readonly Regex _regexInvalidChars = new Regex(@"[^a-zA-Zа-яА-ЯёЁ0-9,\-+?!. ]"); + private static readonly Regex _regexLatToCyr = new Regex(@"[a-zA-Z]", RegexOptions.Multiline | RegexOptions.IgnoreCase); + private static readonly Regex _regexWordBoundary = new Regex(@"(? _replacementsSs = new List { "сс", "ссс" }; + private static readonly List _replacementsSsUpper = new List { "СС", "ССС" }; + private static readonly List _replacementsSh = new List { "шш", "шшш" }; + private static readonly List _replacementsShUpper = new List { "ШШ", "ШШШ" }; + private static readonly List _replacementsCh = new List { "щщ", "щщщ" }; + private static readonly List _replacementsChUpper = new List { "ЩЩ", "ЩЩЩ" }; + // Corvax-Localization-End + [Dependency] private readonly IRobustRandom _random = default!; // Corvax-Localization public override void Initialize() @@ -37,54 +54,14 @@ private void OnAccent(EntityUid uid, LizardAccentComponent component, AccentGetE message = RegexUpperEndX.Replace(message, "ECKS$1"); // Corvax-Localization-Start - // c => ссс - message = Regex.Replace( - message, - "с+", - _random.Pick(new List() { "сс", "ссс" }) - ); - // С => CCC - message = Regex.Replace( - message, - "С+", - _random.Pick(new List() { "СС", "ССС" }) - ); - // з => ссс - message = Regex.Replace( - message, - "з+", - _random.Pick(new List() { "сс", "ссс" }) - ); - // З => CCC - message = Regex.Replace( - message, - "З+", - _random.Pick(new List() { "СС", "ССС" }) - ); - // ш => шшш - message = Regex.Replace( - message, - "ш+", - _random.Pick(new List() { "шш", "шшш" }) - ); - // Ш => ШШШ - message = Regex.Replace( - message, - "Ш+", - _random.Pick(new List() { "ШШ", "ШШШ" }) - ); - // ч => щщщ - message = Regex.Replace( - message, - "ч+", - _random.Pick(new List() { "щщ", "щщщ" }) - ); - // Ч => ЩЩЩ - message = Regex.Replace( - message, - "Ч+", - _random.Pick(new List() { "ЩЩ", "ЩЩЩ" }) - ); + message = _regexLowerC.Replace(message, _random.Pick(_replacementsSs)); + message = _regexUpperC.Replace(message, _random.Pick(_replacementsSsUpper)); + message = _regexLowerZ.Replace(message, _random.Pick(_replacementsSs)); // для "з+" используются те же замены, что и для "с+" + message = _regexUpperZ.Replace(message, _random.Pick(_replacementsSsUpper)); // для "З+" используются те же замены, что и для "С+" + message = _regexLowerSh.Replace(message, _random.Pick(_replacementsSh)); + message = _regexUpperSh.Replace(message, _random.Pick(_replacementsShUpper)); + message = _regexLowerCh.Replace(message, _random.Pick(_replacementsCh)); + message = _regexUpperCh.Replace(message, _random.Pick(_replacementsChUpper)); // Corvax-Localization-End args.Message = message; } diff --git a/Content.Server/Speech/EntitySystems/MothAccentSystem.cs b/Content.Server/Speech/EntitySystems/MothAccentSystem.cs index cab9e2d6312..96a806bd08f 100644 --- a/Content.Server/Speech/EntitySystems/MothAccentSystem.cs +++ b/Content.Server/Speech/EntitySystems/MothAccentSystem.cs @@ -12,6 +12,18 @@ public sealed class MothAccentSystem : EntitySystem private static readonly Regex RegexLowerBuzz = new Regex("z{1,3}"); private static readonly Regex RegexUpperBuzz = new Regex("Z{1,3}"); + // Corvax-Localization-Start + private static readonly Regex _regexLowerZh = new Regex("ж+"); + private static readonly Regex _regexUpperZh = new Regex("Ж+"); + private static readonly Regex _regexLowerZ = new Regex("з+"); + private static readonly Regex _regexUpperZ = new Regex("З+"); + + private static readonly List _replacementsZh = new List { "жж", "жжж" }; + private static readonly List _replacementsZhUpper = new List { "ЖЖ", "ЖЖЖ" }; + private static readonly List _replacementsZ = new List { "зз", "ззз" }; + private static readonly List _replacementsZUpper = new List { "ЗЗ", "ЗЗЗ" }; + // Corvax-Localization-End + public override void Initialize() { base.Initialize(); @@ -28,30 +40,10 @@ private void OnAccent(EntityUid uid, MothAccentComponent component, AccentGetEve message = RegexUpperBuzz.Replace(message, "ZZZ"); // Corvax-Localization-Start - // ж => жжж - message = Regex.Replace( - message, - "ж+", - _random.Pick(new List() { "жж", "жжж" }) - ); - // Ж => ЖЖЖ - message = Regex.Replace( - message, - "Ж+", - _random.Pick(new List() { "ЖЖ", "ЖЖЖ" }) - ); - // з => ссс - message = Regex.Replace( - message, - "з+", - _random.Pick(new List() { "зз", "ззз" }) - ); - // З => CCC - message = Regex.Replace( - message, - "З+", - _random.Pick(new List() { "ЗЗ", "ЗЗЗ" }) - ); + message = _regexLowerZh.Replace(message, _random.Pick(_replacementsZh)); + message = _regexUpperZh.Replace(message, _random.Pick(_replacementsZhUpper)); + message = _regexLowerZ.Replace(message, _random.Pick(_replacementsZ)); // используем существующий regexLowerZ + message = _regexUpperZ.Replace(message, _random.Pick(_replacementsZUpper)); // используем существующий regexUpperZ // Corvax-Localization-End args.Message = message; From 755cdea079baf5f3e7c25050ae2c755275f6e577 Mon Sep 17 00:00:00 2001 From: TytosB <54259736+TytosB@users.noreply.github.com> Date: Sat, 7 Mar 2026 14:26:06 -0600 Subject: [PATCH 479/603] Serpentcrest antivirus update (#43102) * whoopsie * okay no new job slots * salv rework * abc * evber * okay but why is it a floor * skibidi * i hate mapping recyclers --- Resources/Maps/serpentcrest.yml | 14987 ++++++++++++++++-------------- 1 file changed, 7818 insertions(+), 7169 deletions(-) diff --git a/Resources/Maps/serpentcrest.yml b/Resources/Maps/serpentcrest.yml index 7c51c6a0cd2..4cec3f5c4fa 100644 --- a/Resources/Maps/serpentcrest.yml +++ b/Resources/Maps/serpentcrest.yml @@ -4,8 +4,8 @@ meta: engineVersion: 272.0.0 forkId: "" forkVersion: "" - time: 02/27/2026 19:16:05 - entityCount: 28985 + time: 03/05/2026 17:56:37 + entityCount: 29072 maps: - 1 grids: @@ -39,6 +39,7 @@ tilemap: 41: FloorGrayConcreteMono 12: FloorKitchen 40: FloorLaundry + 49: FloorLino 48: FloorLowDesert 44: FloorMetalFoam 39: FloorMime @@ -88,143 +89,143 @@ entities: chunks: 0,0: ind: 0,0 - tiles: AwAAAAAMAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAACwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAAFAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAADAAMAAAAAAAADAAAAAAMAAwAAAAAAAAMAAAAAAAADAAAAAAQAAwAAAAAAAAMAAAAAAAADAAAAAAgAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAgAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAIAHwAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACgADAAAAAAAAAwAAAAAAAAAAAAAAAAAlAAAAAAAADQAAAAAAAA0AAAAAAAAlAAAAAAAAHwAAAAAAAB8AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAQADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAAJQAAAAAAAB8AAAAAAAAfAAAAAAMADQAAAAABAA0AAAAAAwANAAAAAAEADQAAAAAAAA0AAAAAAAAAAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAACUAAAAAAAAAAAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAAAHwAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAAJQAAAAAAAAAAAAAAAAAlAAAAAAAADQAAAAAAAA0AAAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAlAAAAAAAADQAAAAAAACUAAAAAAAAAAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAADQAAAAABAA0AAAAAAQAAAAAAAAAAJQAAAAAAAA0AAAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAABIAAAAAAwASAAAAAAEAAAAAAAAAACUAAAAAAAANAAAAAAAAJQAAAAAAAA0AAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAASAAAAAAAAEgAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAEgAAAAAAABIAAAAAAwAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAABIAAAAAAAASAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAEgAAAAADACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAAlAAAAAAAAAAAAAAAAACoAAAAAAwAqAAAAAAEAEgAAAAADABIAAAAAAwAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAAqAAAAAAAAKgAAAAABAA== + tiles: AwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABAADAAAAAAAAAwAAAAAAAAMAAAAABQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAADAADAAAAAAAAAwAAAAACAAMAAAAAAAADAAAAAAAAAwAAAAALAAMAAAAABQADAAAAAAAAAwAAAAAGAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAACUAAAAAAQAlAAAAAAIAJQAAAAADACUAAAAAAwAAAAAAAAAAHwAAAAACAB8AAAAAAQAfAAAAAAAAHwAAAAABAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABgADAAAAAAAAAwAAAAAAAAAAAAAAAAAlAAAAAAAADQAAAAAAAA0AAAAAAAAlAAAAAAAAHwAAAAABAB8AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAQADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAADAA0AAAAAAQANAAAAAAAAJQAAAAACAB8AAAAAAAAfAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAIADQAAAAAAAA0AAAAAAQAAAAAAAAAAJQAAAAABACUAAAAAAwAlAAAAAAIAAAAAAAAAACUAAAAAAgANAAAAAAMADQAAAAABACUAAAAAAwAAAAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAEAHwAAAAACAA0AAAAAAwANAAAAAAIAAAAAAAAAACUAAAAAAQANAAAAAAEAJQAAAAADAAAAAAAAAAAlAAAAAAIADQAAAAAAAA0AAAAAAAAlAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAADAAAAAAAAAAAlAAAAAAIADQAAAAABACUAAAAAAQAAAAAAAAAAJQAAAAADACUAAAAAAgAlAAAAAAMAJQAAAAADAAAAAAAAAAAlAAAAAAEAJQAAAAAAACUAAAAAAwAlAAAAAAEADQAAAAACAA0AAAAAAwAAAAAAAAAAJQAAAAABAA0AAAAAAgAlAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAMADQAAAAACABIAAAAAAQASAAAAAAEAAAAAAAAAACUAAAAAAAANAAAAAAIAJQAAAAABAA0AAAAAAgAlAAAAAAEAJQAAAAADACUAAAAAAQAlAAAAAAEAJQAAAAABAA0AAAAAAgANAAAAAAIADQAAAAAAAA0AAAAAAAASAAAAAAAAEgAAAAACAAAAAAAAAAAlAAAAAAIAJQAAAAACACUAAAAAAQAAAAAAAAAAJQAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAEAEgAAAAADABIAAAAAAwAAAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAEAJQAAAAACACUAAAAAAwAlAAAAAAEAJQAAAAABABIAAAAAAAASAAAAAAMAJQAAAAADACUAAAAAAgAlAAAAAAMAJQAAAAABACUAAAAAAgAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAAAACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAEgAAAAADACUAAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAAAlAAAAAAMAAAAAAAAAACoAAAAAAAAqAAAAAAMAEgAAAAAAABIAAAAAAgAlAAAAAAMAJQAAAAAAACUAAAAAAAAlAAAAAAEAJQAAAAAAAAAAAAAAAAAlAAAAAAMAJQAAAAABACUAAAAAAQAlAAAAAAIAJQAAAAAAAAAAAAAAAAAqAAAAAAAAKgAAAAADAA== version: 7 -1,0: ind: -1,0 - tiles: AwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAABAAMAAAAAAAADAAAAAAAAAwAAAAACAAMAAAAAAAADAAAAAAMAAwAAAAAGAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAAAQADAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAACAAAAAACAAgAAAAAAgAAAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAgAAAAAAwAIAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAAlAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAUAAwAAAAAEAAMAAAAAAAAIAAAAAAEACAAAAAABAA0AAAAAAAAlAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAACAAAAAABAAgAAAAAAgAAAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAACUAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAAlAAAAAAAAJQAAAAAAAA0AAAAAAAAlAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAAlAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAACUAAAAAAAAAAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAJQAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAAlAAAAAAAAAAAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAEgAAAAABABIAAAAAAgAlAAAAAAAAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAASAAAAAAMAEgAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAACUAAAAAAAAAAAAAAAAAEgAAAAABABIAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAlAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAAlAAAAAAAADQAAAAAAABIAAAAAAAASAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAASAAAAAAEAEgAAAAACAA== + tiles: AwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAADAAMAAAAACAADAAAAAAgAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAADAAMAAAAAAAADAAAAAAoAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABAADAAAAAAUAAwAAAAAKAAMAAAAACwAAAAAAAAAAAwAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAACAAAAAAAAAgAAAAAAwAAAAAAAAAAJQAAAAACACUAAAAAAwAlAAAAAAMAJQAAAAADACUAAAAAAAAlAAAAAAEAJQAAAAADACUAAAAAAQAAAAAAAAAAAwAAAAALAAMAAAAAAAADAAAAAAMAAwAAAAAIAAgAAAAAAgAIAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAQAlAAAAAAMAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABgAIAAAAAAIACAAAAAADAA0AAAAAAQAlAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAMAJQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAACAAAAAADAAgAAAAAAQAAAAAAAAAAJQAAAAABAA0AAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAAANAAAAAAAADQAAAAADACUAAAAAAgAlAAAAAAIAJQAAAAABAAAAAAAAAAANAAAAAAIADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAAAACUAAAAAAgAAAAAAAAAADQAAAAABAA0AAAAAAAAlAAAAAAEAJQAAAAAAAA0AAAAAAAAlAAAAAAIADQAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAQAlAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAABACUAAAAAAAAAAAAAAAAAJQAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAIAJQAAAAABAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAQAlAAAAAAAAAAAAAAAAACUAAAAAAQAlAAAAAAMAJQAAAAAAACUAAAAAAQAlAAAAAAAAJQAAAAABACUAAAAAAgAlAAAAAAEAJQAAAAABACUAAAAAAAAAAAAAAAAAEgAAAAABABIAAAAAAwAlAAAAAAMAJQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAQASAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAIAJQAAAAABACUAAAAAAQAlAAAAAAIAJQAAAAACACUAAAAAAQAlAAAAAAMAJQAAAAADAAAAAAAAAAASAAAAAAIAEgAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAACACUAAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAABAA0AAAAAAAANAAAAAAIADQAAAAADACUAAAAAAAAAAAAAAAAAEgAAAAADABIAAAAAAQANAAAAAAMADQAAAAADAAAAAAAAAAAlAAAAAAEADQAAAAABAA0AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAABAA0AAAAAAgAlAAAAAAEADQAAAAADABIAAAAAAAASAAAAAAMADQAAAAAAAA0AAAAAAgAAAAAAAAAAJQAAAAABACUAAAAAAQAlAAAAAAMAJQAAAAACACUAAAAAAgAlAAAAAAIAJQAAAAADACUAAAAAAAAlAAAAAAMAJQAAAAAAAAAAAAAAAAASAAAAAAAAEgAAAAABAA== version: 7 -1,-1: ind: -1,-1 - tiles: BAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAAAwAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAABQAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAcAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAUAAwAAAAAJAAMAAAAACgADAAAAAAEAAwAAAAAAAA== + tiles: BAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAABgAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAIABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAEACAAAAAADAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAACgAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAADAAgAAAAAAgAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAQAIAAAAAAMABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAACAAgAAAAAAQAIAAAAAAAACAAAAAAAAAgAAAAAAQAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAACAAgAAAAAAgAIAAAAAAMACAAAAAADAAgAAAAAAQAIAAAAAAEABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAUABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAQAIAAAAAAMACAAAAAAAAAgAAAAAAQAIAAAAAAEACAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAEACAAAAAADAAgAAAAAAAAIAAAAAAAACAAAAAABAAgAAAAAAQAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAQAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAACAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAkAAwAAAAACAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAA== version: 7 0,-1: ind: 0,-1 - tiles: AwAAAAAAAAMAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAsAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAARAAAAAAEAEQAAAAAAABEAAAAAAgADAAAAAAMAAwAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAEQAAAAADABEAAAAAAwARAAAAAAEAAwAAAAAAAAMAAAAAAAAEAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABEAAAAAAgARAAAAAAMAEQAAAAABAAMAAAAAAAADAAAAAAAABAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAcAAwAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAMAAwAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAABgAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAACwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAA== + tiles: AwAAAAAAAAMAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAARAAAAAAAAEQAAAAABABEAAAAAAgADAAAAAAAAAwAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAEQAAAAADABEAAAAAAgARAAAAAAAAAwAAAAAMAAMAAAAAAAAEAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABEAAAAAAQARAAAAAAAAEQAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAABAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAwAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAYAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAACAADAAAAAAwAAAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAMAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAIAAwAAAAACAAMAAAAAAAADAAAAAAAAAwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAALAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAMAAwAAAAAAAA== version: 7 0,1: ind: 0,1 - tiles: AAAAAAAAAA0AAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAABAAlAAAAAAAAAAAAAAAAACUAAAAAAAAlAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAAEgAAAAADABIAAAAAAQASAAAAAAAAEgAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAJQAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAABIAAAAAAwASAAAAAAAAEgAAAAAAABIAAAAAAQAFAAAAAAAABQAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAACUAAAAAAAAAAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAASAAAAAAAAEgAAAAACABIAAAAAAQASAAAAAAEABQAAAAAAAAUAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAAlAAAAAAAADQAAAAAAACUAAAAAAAAlAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAAEgAAAAAAABIAAAAAAgASAAAAAAAAEgAAAAABAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAcAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAsAAwAAAAAAACsAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAkAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAACAAMAAAAAAAADAAAAAAAAKwAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAHAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAACgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACAADAAAAAAAAAwAAAAAHAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAEAAMAAAAAAAADAAAAAAQAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAoAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAACQACAAAAAAAAAwAAAAAAAAIAAAAAAAADAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAA== + tiles: AAAAAAAAAA0AAAAAAQAlAAAAAAEAJQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAAAQANAAAAAAMAJQAAAAABACUAAAAAAQAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAAlAAAAAAIAAAAAAAAAACUAAAAAAAAlAAAAAAIAAAAAAAAAAAUAAAAAAAAFAAAAAAAAEgAAAAAAABIAAAAAAwASAAAAAAMAEgAAAAABAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAJQAAAAABAAAAAAAAAAAlAAAAAAMAJQAAAAABAAAAAAAAAAAFAAAAAAAABQAAAAAAABIAAAAAAgASAAAAAAEAEgAAAAABABIAAAAAAwAFAAAAAAAABQAAAAAAAAAAAAAAAAADAAAAAAYAAwAAAAAAACUAAAAAAAAAAAAAAAAAJQAAAAABACUAAAAAAgAAAAAAAAAABQAAAAAAAAUAAAAAAAASAAAAAAMAEgAAAAABABIAAAAAAgASAAAAAAMABQAAAAAAAAUAAAAAAAAAAAAAAAAAAwAAAAAKAAMAAAAAAAAlAAAAAAAADQAAAAAAACUAAAAAAwAlAAAAAAEAAAAAAAAAAAUAAAAAAAAFAAAAAAAAEgAAAAADABIAAAAAAgASAAAAAAMAEgAAAAABAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAACsAAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAkAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACAADAAAAAAAAKwAAAAACAA0AAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAHAAMAAAAADAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAHAAMAAAAAAAADAAAAAAMAAwAAAAAAAAMAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAHAAMAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAwADAAAAAAAAAwAAAAACAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAACAAAAAAAAAwAAAAAAAAIAAAAAAAADAAAAAAUAAgAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAACAA== version: 7 -1,1: ind: -1,1 - tiles: DQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAADAAAAAAEAAwAAAAAAAA0AAAAAAAAlAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAMAAAAAAAADAAAAAAcADQAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAABgADAAAAAAAAAwAAAAAFAAMAAAAAAAANAAAAAAAAAwAAAAAAAAAAAAAAAAArAAAAAAEAKwAAAAABACsAAAAAAgArAAAAAAEAKwAAAAAAACsAAAAAAQArAAAAAAIAKwAAAAAAACsAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAwAAAAAAAAMAAAAAAAASAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAACsAAAAAAwArAAAAAAAAKwAAAAACACsAAAAAAwArAAAAAAAAKwAAAAAAACsAAAAAAgArAAAAAAMAKwAAAAACAAMAAAAAAAADAAAAAAAAEgAAAAADAAMAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAABIAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAIAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAgAAwAAAAAGAAMAAAAAAAADAAAAAAAAAgAAAAAAAAMAAAAAAAASAAAAAAEAAwAAAAAAAAMAAAAACAACAAAAAAAAAwAAAAAHAAMAAAAAAAADAAAAAAEAAwAAAAAKAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAIAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAwACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: DQAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAAAgAlAAAAAAAAJQAAAAACACUAAAAAAAAlAAAAAAEAJQAAAAAAACUAAAAAAwAlAAAAAAAAJQAAAAABACUAAAAAAgAlAAAAAAEAJQAAAAAAACUAAAAAAwADAAAAAAAAAwAAAAAAAA0AAAAAAQAlAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAADAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAACAA0AAAAAAQANAAAAAAEAAwAAAAALAAMAAAAAAAAAAAAAAAAAJQAAAAACAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAEADQAAAAACAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAADAAMAAAAAAAADAAAAAAAADQAAAAACACUAAAAAAgANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAQADAAAAAAAAAwAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAQAlAAAAAAMAJQAAAAADACUAAAAAAQAlAAAAAAEAJQAAAAABACUAAAAAAAAlAAAAAAIAJQAAAAAAACUAAAAAAAAlAAAAAAIAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAANAAAAAAMAAwAAAAACAAAAAAAAAAArAAAAAAAAKwAAAAABACsAAAAAAQArAAAAAAMAKwAAAAACACsAAAAAAAArAAAAAAEAKwAAAAAAACsAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAYAAwAAAAAAAAMAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAwAAAAAJAAMAAAAAAAASAAAAAAIAAwAAAAAKAAMAAAAAAAADAAAAAAAAAAAAAAAAACsAAAAAAQArAAAAAAEAKwAAAAADACsAAAAAAAArAAAAAAEAKwAAAAAAACsAAAAAAwArAAAAAAAAKwAAAAAAAAMAAAAACgADAAAAAAAAEgAAAAADAAMAAAAABwADAAAAAAUAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAABIAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABgADAAAAAAAAAgAAAAAAAAMAAAAAAAASAAAAAAMAAwAAAAACAAMAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAQADAAAAAAcAAwAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAIAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACwADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABgACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 1,0: ind: 1,0 - tiles: AwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAABAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAABAB8AAAAAAAAfAAAAAAMAHwAAAAADAB8AAAAAAAAfAAAAAAEAHwAAAAADAB8AAAAAAwAfAAAAAAIAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACQADAAAAAAAAAwAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAIAHwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAsAAwAAAAAHAAMAAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAwANAAAAAAMADQAAAAACAA0AAAAAAQANAAAAAAIADQAAAAABAB8AAAAAAQAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAIAHwAAAAAAAB8AAAAAAwAfAAAAAAAAHwAAAAACAA0AAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAgAfAAAAAAEAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAwADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAwANAAAAAAIADQAAAAABAA0AAAAAAAANAAAAAAIAHwAAAAAAAAAAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAADAAAAAAYAAwAAAAAGAAMAAAAAAwAlAAAAAAAAJQAAAAAAAAAAAAAAAAAfAAAAAAAADQAAAAACAA0AAAAAAgAfAAAAAAAAHwAAAAABAB8AAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAADQAAAAAAACUAAAAAAAAAAAAAAAAAHwAAAAABAA0AAAAAAQANAAAAAAMAHwAAAAAAAB8AAAAAAQAfAAAAAAEAAwAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAABAA0AAAAAAAAlAAAAAAAAAAAAAAAAAB8AAAAAAwANAAAAAAAADQAAAAACAB8AAAAAAwAfAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAAAAANAAAAAAAAJQAAAAAAAA0AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAEAHwAAAAADAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAEAAMAAAAAAAADAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAKgAAAAADACoAAAAAAwAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABwADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAACAAMAAAAAAAADAAAAAAYAAwAAAAAFAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABQADAAAAAAkAAwAAAAAAAAMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAwAqAAAAAAIAKgAAAAAAACoAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAKgAAAAAAACoAAAAAAQAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAsAAwAAAAAFAAMAAAAAAAADAAAAAAAAAwAAAAABAA== + tiles: AwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAADAAMAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADAB8AAAAAAwAfAAAAAAMAHwAAAAABAB8AAAAAAgAfAAAAAAMAHwAAAAADAB8AAAAAAQAfAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAFAA0AAAAAAgANAAAAAAIADQAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAAAHwAAAAADAAAAAAAAAAADAAAAAAEAAwAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAABAB8AAAAAAgAAAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAoAAwAAAAAAAAMAAAAAAAADAAAAAAAAHwAAAAABAB8AAAAAAwAfAAAAAAAAHwAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAwAfAAAAAAMAAAAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAQAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAwANAAAAAAIADQAAAAAAAA0AAAAAAAANAAAAAAIAHwAAAAABAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAlAAAAAAMAJQAAAAADAAAAAAAAAAAfAAAAAAMADQAAAAADAA0AAAAAAAAfAAAAAAIAHwAAAAAAAB8AAAAAAgAAAAAAAAAAAwAAAAABAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAQADQAAAAACACUAAAAAAgAAAAAAAAAAHwAAAAADAA0AAAAAAAANAAAAAAIAHwAAAAADAB8AAAAAAgAfAAAAAAIAAwAAAAAGAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAMAA0AAAAAAwAlAAAAAAAAAAAAAAAAAB8AAAAAAQANAAAAAAIADQAAAAACAB8AAAAAAQAfAAAAAAIABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAACAADAAAAAAYAAwAAAAAAAAMAAAAAAAANAAAAAAAAJQAAAAADAA0AAAAAAwAfAAAAAAAAHwAAAAACAB8AAAAAAQAfAAAAAAMAHwAAAAABAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAJQAAAAAAACUAAAAAAQAAAAAAAAAAKgAAAAAAACoAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAQAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAAAAAAAqAAAAAAMAKgAAAAABAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAqAAAAAAIAKgAAAAADACoAAAAAAgAqAAAAAAIAKgAAAAABACoAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAACQADAAAAAAQAAwAAAAAEAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAoAKgAAAAAAACoAAAAAAQAfAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAA== version: 7 0,-2: ind: 0,-2 - tiles: BAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAABAADAAAAAAAAAgAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAGAAMAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAGAAMAAAAAAAADAAAAAAUAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAABAAMAAAAACAADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAEAAMAAAAAAAADAAAAAAkAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAAFAAMAAAAAAAADAAAAAAoAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAMAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAACAAMAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAACQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAADAAAAAAUAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAYAAwAAAAALAAMAAAAACwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAABAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAYAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAgAAwAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAFAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAABwADAAAAAAwABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAABwAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAA== + tiles: BAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAAAAAMAAAAAAAADAAAAAAgAAwAAAAAAAAMAAAAAAAADAAAAAAUAAAAAAAAAAAMAAAAAAwADAAAAAAAAAgAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAABAAAAAAAAAAADAAAAAAAAAwAAAAAGAAMAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAADAADAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABgADAAAAAAsAAwAAAAAAAAMAAAAACwADAAAAAAkAAwAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAADAAAAAAQAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAUAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAIAAMAAAAACgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAkAAwAAAAAAAAMAAAAAAAADAAAAAAsAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAIAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAEAAMAAAAAAAADAAAAAAgAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAACAADAAAAAAsAAwAAAAAAAAMAAAAACgADAAAAAAAAAwAAAAAAAAMAAAAAAwADAAAAAAEAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAQAAAAAAAADAAAAAAkAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAA== version: 7 -2,0: ind: -2,0 - tiles: AAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAAJAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAIAAAAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAIAAAAAAIACAAAAAADAAgAAAAAAQAIAAAAAAAACAAAAAADAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAwAAAAAKAAMAAAAAAAAAAAAAAAAACAAAAAACAAgAAAAAAQAIAAAAAAIACAAAAAADAAgAAAAAAQACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAQAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAAAQADAAAAAAMAAAAAAAAAAAgAAAAAAwAIAAAAAAMACAAAAAABAAgAAAAAAwAIAAAAAAIAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAIAAAAAAEACAAAAAACAAgAAAAAAwAIAAAAAAAACAAAAAADAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAACAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAEAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAACUAAAAAAAAlAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAABAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABAADAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAAQAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAACAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAYAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAQAAAAAAAAAAA0AAAAAAAANAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAFAAMAAAAAAAADAAAAAAAAAwAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA== + tiles: AAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAcAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAQADAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAALAAAAAAAAAAAIAAAAAAMACAAAAAADAAgAAAAAAwAIAAAAAAIACAAAAAACAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAgAAAAAAAAAACAAAAAADAAgAAAAAAwAIAAAAAAEACAAAAAABAAgAAAAAAQACAAAAAAAAAgAAAAAAAAMAAAAADAADAAAAAAAAAwAAAAAAAAMAAAAACQADAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAgAAAAAAwAIAAAAAAIACAAAAAAAAAgAAAAAAAAIAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABgADAAAAAAoAAwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAADAAgAAAAAAQAIAAAAAAAACAAAAAADAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAABAAAAAAAAAAAlAAAAAAIAJQAAAAADACUAAAAAAwAlAAAAAAMAJQAAAAABACUAAAAAAgAlAAAAAAEAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAJQAAAAACACUAAAAAAAAAAAAAAAAAJQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAAAAAEAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAABAAMAAAAAAAADAAAAAAAAAAAAAAAAACUAAAAAAQAlAAAAAAAAAAAAAAAAACUAAAAAAwANAAAAAAEADQAAAAACAA0AAAAAAAABAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAAAAIAJQAAAAAAACUAAAAAAQAlAAAAAAIAAQAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACgADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAwAAAAACAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAEAAwAAAAAAAAMAAAAABQADAAAAAAAAAwAAAAAIAAMAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAYAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAABgADAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAALAAMAAAAAAAADAAAAAAkAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAA0AAAAAAAANAAAAAAMADQAAAAACAA== version: 7 -2,-1: ind: -2,-1 - tiles: AgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAEAAMAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAwAAwAAAAAMAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAACAAAAAAAAAwAAAAAEAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAABAADAAAAAAAAAwAAAAAGAAMAAAAACgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAALAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAABAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAALAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACwADAAAAAAAAAwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAUAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABwADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAABQADAAAAAAAAAwAAAAAAAAMAAAAABQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAMAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAACAAAAAAAAAwAAAAAMAAMAAAAACwADAAAAAAAAAwAAAAAAAAMAAAAAAQADAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAALAAMAAAAAAAADAAAAAAwAAwAAAAAGAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAAAQADAAAAAAwAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAQADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAIAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAABwADAAAAAAUAAwAAAAALAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAKAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACgADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABwADAAAAAAYAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAABwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAACAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAgAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAABAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAwADAAAAAAMAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAABwADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAA== version: 7 -1,-2: ind: -1,-2 - tiles: AAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAKAAMAAAAAAAADAAAAAAAAAwAAAAAIAAMAAAAAAAADAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAAAAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAABgADAAAAAAAAAAAAAAAAAAQAAAAAAAADAAAAAAEAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAHAAMAAAAACAADAAAAAAAAAwAAAAAAAAMAAAAABwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABQADAAAAAAAAAwAAAAAAAAMAAAAABwADAAAAAAUAAwAAAAAAAAMAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAkAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAkABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAABAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAwADAAAAAAgABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAQAAwAAAAAAAAMAAAAAAwADAAAAAAEAAwAAAAAAAAMAAAAABwADAAAAAAQAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAgAAwAAAAAAAAMAAAAABQADAAAAAAcAAwAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAALAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAABAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAHAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAoAAwAAAAAAAAIAAAAAAAAAAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAkAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAACQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAAAAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAGAAMAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAsAAwAAAAAKAAMAAAAAAAADAAAAAAsAAwAAAAAKAAMAAAAAAAADAAAAAAAAAAAAAAAAAAQAAAAAAAADAAAAAAgAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAALAAMAAAAAAAADAAAAAAcAAwAAAAAAAAMAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAFAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAGAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAADAAAAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAcAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAABgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAgAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAALAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAoABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAALAA== version: 7 1,-1: ind: 1,-1 - tiles: BAAAAAAAAAQAAAAAAAADAAAAAAgAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAABEAAAAAAAARAAAAAAMAEQAAAAAAABEAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAABQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAARAAAAAAMAEQAAAAABABEAAAAAAAARAAAAAAMAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAMAAAAACQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAcAEQAAAAABABEAAAAAAwARAAAAAAAAEQAAAAABAAAAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACQADAAAAAAwAAwAAAAABAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABwADAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAIAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACgAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAgAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAFAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAACQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAMAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAABAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAEAAQAAAAAAAAEAAAAAAAABAAAAAAAAA== + tiles: BAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAKAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAADAADAAAAAAAAAwAAAAAMAAMAAAAAAAADAAAAAAAAAwAAAAAAABEAAAAAAQARAAAAAAIAEQAAAAACABEAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAARAAAAAAEAEQAAAAACABEAAAAAAAARAAAAAAEAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACgADAAAAAAAAEQAAAAABABEAAAAAAgARAAAAAAEAEQAAAAABAAAAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAQADAAAAAAoAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAACQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAABAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAkAAwAAAAAFAAMAAAAAAAADAAAAAAAAAgAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAADAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAIAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAACQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAEAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAA== version: 7 1,1: ind: 1,1 - tiles: AAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAIAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAABAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAoAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAoAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAACQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAkAAAAAAAAAwAAAAAKAAMAAAAAAAADAAAAAAgAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAADAAMAAAAABAADAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAJAAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAcAAwAAAAAAAAMAAAAAAQADAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAgADAAAAAAAAAgAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA== + tiles: AAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACQADAAAAAAAAAwAAAAADAAMAAAAACgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAGAAMAAAAAAAADAAAAAAAAAwAAAAABAAMAAAAABAACAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAABAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAUAAwAAAAAGAAMAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAKAAMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAKAAMAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABQADAAAAAAwAAwAAAAAAAAMAAAAACQADAAAAAAAAAwAAAAAFAAMAAAAABAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAALAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAADAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAIAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAkAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAkAAwAAAAAAAAMAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAJAAAAAAAAAMAAAAABQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAIAAgAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAFAAIAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAMAAAAACgACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA== version: 7 -2,1: ind: -2,1 - tiles: AQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAANAAAAAAAADQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAA0AAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABwADAAAAAAAAAwAAAAACAAMAAAAAAAADAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAABAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAYAAwAAAAAAAAMAAAAACgADAAAAAAAAAwAAAAAGAAMAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAgAAwAAAAAAAAMAAAAAAAADAAAAAAcAAwAAAAAAAAMAAAAAAAADAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAkAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAQAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAACAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAKAAMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAANAAAAAAIADQAAAAACAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAIAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAABAA0AAAAAAQABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABAADAAAAAAsAAwAAAAAAAAMAAAAABQADAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABwADAAAAAAAAAwAAAAAKAAMAAAAAAAADAAAAAAMAAwAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAEAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAwADAAAAAAgAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABQADAAAAAAYAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAGAAMAAAAAAAADAAAAAAAAAwAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAUAAwAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 1,-2: ind: 1,-2 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAwAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAMAAAAAAAADAAAAAAUAAwAAAAAKAAMAAAAAAAADAAAAAAMAAwAAAAAAAAMAAAAACQACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAwAAAAAAAAMAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAADAADAAAAAAAAAwAAAAAEAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAACAADAAAAAAAAAwAAAAACAAMAAAAACAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAACwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABQADAAAAAAsAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACgADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAACAAMAAAAACwADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAgAAwAAAAAEAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAwAAAAALAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAHAAMAAAAAAAADAAAAAAAAAwAAAAADAAMAAAAAAgADAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAgAAgAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAwAAAAAAAAIAAAAAAAADAAAAAAkAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAMAAAAAAAADAAAAAAUAAwAAAAAAAAMAAAAABAADAAAAAAIAAwAAAAAAAAMAAAAABgACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAABwADAAAAAAAAAwAAAAADAAMAAAAAAwACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAMAAwAAAAAGAAMAAAAAAAADAAAAAAcAAwAAAAAEAAMAAAAAAAADAAAAAAkAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAADAAAAAAgAAwAAAAALAAMAAAAAAAADAAAAAAQAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABQADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAALAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACgACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAKAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAkAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAADAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAUAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAA== version: 7 -2,-2: ind: -2,-2 - tiles: JgAAAAAAACYAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABgANAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAYAAwAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABgAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAQAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABQADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAALAAMAAAAACAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABgADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAcAAwAAAAAAAAMAAAAAAAADAAAAAAYAAwAAAAAEAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAACAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAGAAMAAAAAAAAEAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAABgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAA== + tiles: JgAAAAAAACYAAAAAAAANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAYADQAAAAADAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAIAAMAAAAABAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAQAAwAAAAAKAAMAAAAAAAAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAoAAwAAAAAAAAMAAAAAAAADAAAAAAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAsAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAYAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAACAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAkAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAIAAMAAAAACgADAAAAAAAAAwAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAHAAMAAAAACQADAAAAAAAAAwAAAAAMAAMAAAAAAAADAAAAAAAAAwAAAAAHAAMAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAkAAwAAAAAAAAMAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAUAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAACAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAMAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAKAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAMAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABwADAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAA== version: 7 2,0: ind: 2,0 - tiles: BAAAAAAAAAQAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAwANAAAAAAMADQAAAAAAAAAAAAAAAAAhAAAAAAAAEwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAIADQAAAAADAA0AAAAAAgAAAAAAAAAAIQAAAAAAACEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAADAA0AAAAAAgAAAAAAAAAAIQAAAAACAAMAAAAAAAADAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAABAA0AAAAAAQANAAAAAAIADQAAAAADACEAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAADAAAAAAAAAAAhAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAIAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAABAA0AAAAAAgAAAAAAAAAAIQAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAMAAAAAAAAAACEAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAACAA0AAAAAAgANAAAAAAIADQAAAAADAAAAAAAAAAAhAAAAAAIAAwAAAAALAAMAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAADAA0AAAAAAAAAAAAAAAAAIQAAAAABAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAMAAAAAAAAAACEAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAIADQAAAAAAAAAAAAAAAAAhAAAAAAIAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAAADQAAAAACAA0AAAAAAAAAAAAAAAAAIQAAAAADAAMAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAQAAAAAAAAAAIQAAAAADACEAAAAAAAAhAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAQANAAAAAAMAAAAAAAAAACEAAAAAAQAhAAAAAAAAEwAAAAAAAA== + tiles: BAAAAAAAAAQAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAAANAAAAAAEADQAAAAACAAAAAAAAAAAhAAAAAAAAEwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAgAAAAAAAAAAIQAAAAADACEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAABAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAQAAAAAAAAAAIQAAAAACAAMAAAAAAAADAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAABACEAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAACAA0AAAAAAQANAAAAAAMADQAAAAAAAAAAAAAAAAAhAAAAAAEAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAADAA0AAAAAAwAAAAAAAAAAIQAAAAABAAMAAAAAAAADAAAAAAsAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAMAAAAAAAAAACEAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAACAAAAAAAAAAAhAAAAAAEAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAADAA0AAAAAAQAAAAAAAAAAIQAAAAAAAAMAAAAABQADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAEADQAAAAABAA0AAAAAAQANAAAAAAEAAAAAAAAAACEAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAABAAAAAAAAAAAhAAAAAAEAAwAAAAADAAMAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAAAAA0AAAAAAgAAAAAAAAAAIQAAAAACAAMAAAAAAAADAAAAAAUAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAEADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAoAAwAAAAAFAAMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAgAAAAAAAAAAIQAAAAABACEAAAAAAwAhAAAAAAEAAwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAMAAAAAAAAAACEAAAAAAAAhAAAAAAEAEwAAAAAAAA== version: 7 0,-3: ind: 0,-3 - tiles: DQAAAAACAA0AAAAAAAAAAAAAAAAAFAAAAAADABQAAAAAAAAUAAAAAAAAFAAAAAACABQAAAAAAAAAAAAAAAAAFAAAAAABABQAAAAAAAAUAAAAAAEAFAAAAAADABQAAAAAAwAUAAAAAAIAFAAAAAACAA0AAAAAAAANAAAAAAIAAAAAAAAAABQAAAAAAwAUAAAAAAEAFAAAAAADABQAAAAAAwAUAAAAAAAAFAAAAAABABQAAAAAAQAUAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAIAFAAAAAADABQAAAAAAwANAAAAAAAADQAAAAACABQAAAAAAgAUAAAAAAEAFAAAAAADABQAAAAAAAAUAAAAAAMAFAAAAAADAAAAAAAAAAAUAAAAAAAAFAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAAAAAAAAAAAIwAAAAABAAAAAAAAAAAUAAAAAAMAAAAAAAAAACMAAAAAAwAhAAAAAAIAFAAAAAACABQAAAAAAwAUAAAAAAEAFAAAAAABABQAAAAAAAAUAAAAAAEAFAAAAAABAA0AAAAAAAANAAAAAAMAAAAAAAAAACMAAAAAAwAUAAAAAAIAFAAAAAACABQAAAAAAAAjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAAAAAAAAAAAAAAjAAAAAAIAFAAAAAADABQAAAAAAwAUAAAAAAEAIwAAAAACAAAAAAAAAAAjAAAAAAEAIwAAAAACACMAAAAAAgAjAAAAAAAAIwAAAAAAACMAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAQAUAAAAAAIAIwAAAAAAABQAAAAAAwAUAAAAAAMAFAAAAAAAACMAAAAAAwAUAAAAAAIAIwAAAAADABQAAAAAAwAUAAAAAAMAFAAAAAADABQAAAAAAwAjAAAAAAAAFAAAAAACAA0AAAAAAQANAAAAAAAAAAAAAAAAACMAAAAAAgAUAAAAAAAAFAAAAAAAABQAAAAAAAAjAAAAAAEAAAAAAAAAACMAAAAAAAAUAAAAAAEAFAAAAAABABQAAAAAAAAUAAAAAAAAIwAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAADAAAAAAAAAAAjAAAAAAAAIwAAAAADACMAAAAAAQAjAAAAAAEAIwAAAAADAAAAAAAAAAAjAAAAAAIAIwAAAAABACMAAAAAAAAjAAAAAAIAIwAAAAADACMAAAAAAQAAAAAAAAAADQAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAACAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAADQAAAAADAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAANAAAAAAMABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAADQAAAAADAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: DQAAAAABAA0AAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAgAUAAAAAAIAFAAAAAABABQAAAAAAgAAAAAAAAAAFAAAAAAAABQAAAAAAwAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAMAAAAAAAAAAA0AAAAAAQANAAAAAAMAAAAAAAAAABQAAAAAAgAUAAAAAAEAFAAAAAACABQAAAAAAAAUAAAAAAIAFAAAAAABABQAAAAAAwAUAAAAAAIAFAAAAAABABQAAAAAAQAUAAAAAAAAFAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAAAABQAAAAAAwAUAAAAAAAAFAAAAAACABQAAAAAAAAUAAAAAAAAFAAAAAADAAAAAAAAAAAUAAAAAAMAFAAAAAACABQAAAAAAgAUAAAAAAMAFAAAAAABABQAAAAAAgAUAAAAAAEADQAAAAABAA0AAAAAAQAAAAAAAAAAIwAAAAADAAAAAAAAAAAUAAAAAAIAAAAAAAAAACMAAAAAAgAhAAAAAAAAFAAAAAACABQAAAAAAwAUAAAAAAMAFAAAAAAAABQAAAAAAAAUAAAAAAMAAAAAAAAAAA0AAAAAAAANAAAAAAIAAAAAAAAAACMAAAAAAQAUAAAAAAIAFAAAAAABABQAAAAAAgAjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAAAAAAAAAAAAAAjAAAAAAIAFAAAAAACABQAAAAAAQAUAAAAAAAAIwAAAAAAAAAAAAAAAAAjAAAAAAIAIwAAAAABACMAAAAAAgAjAAAAAAAAIwAAAAACACMAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgAUAAAAAAEAIwAAAAADABQAAAAAAAAUAAAAAAIAFAAAAAACACMAAAAAAQAUAAAAAAAAIwAAAAAAABQAAAAAAgAUAAAAAAEAFAAAAAAAABQAAAAAAwAjAAAAAAAAFAAAAAADAA0AAAAAAwANAAAAAAIAAAAAAAAAACMAAAAAAAAUAAAAAAAAFAAAAAADABQAAAAAAwAjAAAAAAAAAAAAAAAAACMAAAAAAAAUAAAAAAIAFAAAAAAAABQAAAAAAAAUAAAAAAIAIwAAAAACAAAAAAAAAAANAAAAAAAADQAAAAACAAAAAAAAAAAjAAAAAAEAIwAAAAACACMAAAAAAQAjAAAAAAMAIwAAAAAAAAAAAAAAAAAjAAAAAAEAIwAAAAADACMAAAAAAwAjAAAAAAMAIwAAAAACACMAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAADQAAAAABAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAANAAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAADQAAAAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -3,0: ind: -3,0 - tiles: DQAAAAACABIAAAAAAgASAAAAAAIAEgAAAAACAA0AAAAAAgANAAAAAAIADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAEAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA0AAAAAAwANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAANAAAAAAIADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: DQAAAAACABIAAAAAAwASAAAAAAAAEgAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAIAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAQANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA0AAAAAAQANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAANAAAAAAMADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -3,-1: ind: -3,-1 - tiles: FQAAAAAAABUAAAAAAAAAAAAAAAAAHwAAAAAAAB8AAAAAAwAAAAAAAAAACgAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABUAAAAAAAAVAAAAAAAAAAAAAAAAAB8AAAAAAAAfAAAAAAIAAAAAAAAAAAoAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAAAHwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAABAA0AAAAAAQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAwANAAAAAAEADQAAAAACAA0AAAAAAQANAAAAAAIAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAAANAAAAAAMADQAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAgANAAAAAAIADQAAAAACAA0AAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAgANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAAADQAAAAADAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAIADQAAAAABAA0AAAAAAwANAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAIADQAAAAABAA0AAAAAAQANAAAAAAIADQAAAAADAA0AAAAAAgANAAAAAAEABAAAAAAAAA== + tiles: FQAAAAAAABUAAAAAAAAAAAAAAAAAHwAAAAACAB8AAAAAAQAAAAAAAAAACgAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABUAAAAAAAAVAAAAAAAAAAAAAAAAAB8AAAAAAgAfAAAAAAIAAAAAAAAAAAoAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAEAHwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAgAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAADADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAwANAAAAAAIADQAAAAABAA0AAAAAAAANAAAAAAEABAAAAAAAAA== version: 7 -1,-3: ind: -1,-3 - tiles: FAAAAAABABQAAAAAAAAUAAAAAAMAIwAAAAABABQAAAAAAAAUAAAAAAMAFAAAAAAAABQAAAAAAAAjAAAAAAAAAAAAAAAAACMAAAAAAwAjAAAAAAMAIwAAAAADACMAAAAAAQANAAAAAAEADQAAAAACABQAAAAAAgAUAAAAAAEAFAAAAAAAACMAAAAAAAAUAAAAAAMAFAAAAAACABQAAAAAAAAUAAAAAAMAIwAAAAABAAAAAAAAAAAjAAAAAAEAIwAAAAACACMAAAAAAgAjAAAAAAIAAAAAAAAAAA0AAAAAAwAUAAAAAAEAFAAAAAADABQAAAAAAwAjAAAAAAIAFAAAAAABABQAAAAAAgAUAAAAAAIAFAAAAAAAACMAAAAAAQAAAAAAAAAAIwAAAAACACMAAAAAAwAjAAAAAAIAIwAAAAAAAAAAAAAAAAANAAAAAAEAIwAAAAADABQAAAAAAgAUAAAAAAIAAAAAAAAAAB4AAAAAAgAjAAAAAAAAIwAAAAADACMAAAAAAgAjAAAAAAEAAAAAAAAAACMAAAAAAAAjAAAAAAEAIwAAAAADACMAAAAAAAANAAAAAAAADQAAAAABAAAAAAAAAAAAAAAAAAAAIQAAAAAAAB4AAAAAAgAAAAAAAAAAAAAAAAAAABQAAAAAAgAUAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgAjAAAAAAEAFAAAAAAAABQAAAAAAwAUAAAAAAEAHgAAAAAAABQAAAAAAgAUAAAAAAIAFAAAAAABABQAAAAAAQAUAAAAAAMAFAAAAAADABQAAAAAAQAUAAAAAAAAIwAAAAABAAAAAAAAAAANAAAAAAAAIwAAAAACABQAAAAAAAAUAAAAAAAAFAAAAAABABQAAAAAAgAUAAAAAAMAFAAAAAACABQAAAAAAAAUAAAAAAIAFAAAAAAAABQAAAAAAQAUAAAAAAAAFAAAAAACACMAAAAAAwAUAAAAAAIADQAAAAABACMAAAAAAAAUAAAAAAMAFAAAAAADABQAAAAAAwAUAAAAAAAAFAAAAAABABQAAAAAAQAUAAAAAAAAFAAAAAACABQAAAAAAAAUAAAAAAEAFAAAAAADABQAAAAAAQAjAAAAAAAAIQAAAAABAA0AAAAAAgAjAAAAAAAAFAAAAAACABQAAAAAAQAUAAAAAAMAFAAAAAACABQAAAAAAgAUAAAAAAEAFAAAAAABABQAAAAAAwAUAAAAAAMAFAAAAAAAABQAAAAAAQAUAAAAAAMAIwAAAAABAAAAAAAAAAANAAAAAAIAIwAAAAACACMAAAAAAwAjAAAAAAEAIwAAAAACACMAAAAAAgAjAAAAAAAAIwAAAAAAACMAAAAAAAAjAAAAAAAAIwAAAAACACMAAAAAAAAjAAAAAAAAIwAAAAACACMAAAAAAQAAAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAABAA== + tiles: FAAAAAAAABQAAAAAAQAUAAAAAAAAIwAAAAACABQAAAAAAwAUAAAAAAMAFAAAAAACABQAAAAAAwAjAAAAAAAAAAAAAAAAACMAAAAAAgAjAAAAAAEAIwAAAAAAACMAAAAAAAANAAAAAAMADQAAAAAAABQAAAAAAgAUAAAAAAMAFAAAAAABACMAAAAAAwAUAAAAAAEAFAAAAAABABQAAAAAAgAUAAAAAAAAIwAAAAACAAAAAAAAAAAjAAAAAAMAIwAAAAABACMAAAAAAgAjAAAAAAIAAAAAAAAAAA0AAAAAAwAUAAAAAAMAFAAAAAAAABQAAAAAAQAjAAAAAAMAFAAAAAAAABQAAAAAAwAUAAAAAAEAFAAAAAAAACMAAAAAAQAAAAAAAAAAIwAAAAAAACMAAAAAAAAjAAAAAAAAIwAAAAABAAAAAAAAAAANAAAAAAIAIwAAAAAAABQAAAAAAQAUAAAAAAIAAAAAAAAAAB4AAAAAAQAjAAAAAAEAIwAAAAABACMAAAAAAAAjAAAAAAIAAAAAAAAAACMAAAAAAQAjAAAAAAIAIwAAAAAAACMAAAAAAQANAAAAAAMADQAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAQAUAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAjAAAAAAEAFAAAAAACABQAAAAAAgAUAAAAAAEAHgAAAAABABQAAAAAAQAUAAAAAAAAFAAAAAADABQAAAAAAQAUAAAAAAEAFAAAAAACABQAAAAAAQAUAAAAAAEAIwAAAAAAAAAAAAAAAAANAAAAAAAAIwAAAAAAABQAAAAAAQAUAAAAAAMAFAAAAAACABQAAAAAAQAUAAAAAAAAFAAAAAABABQAAAAAAwAUAAAAAAMAFAAAAAABABQAAAAAAwAUAAAAAAAAFAAAAAADACMAAAAAAQAUAAAAAAAADQAAAAACACMAAAAAAAAUAAAAAAEAFAAAAAACABQAAAAAAgAUAAAAAAEAFAAAAAABABQAAAAAAgAUAAAAAAAAFAAAAAABABQAAAAAAAAUAAAAAAMAFAAAAAADABQAAAAAAQAjAAAAAAIAIQAAAAACAA0AAAAAAAAjAAAAAAEAFAAAAAABABQAAAAAAAAUAAAAAAMAFAAAAAADABQAAAAAAwAUAAAAAAAAFAAAAAABABQAAAAAAgAUAAAAAAIAFAAAAAACABQAAAAAAwAUAAAAAAMAIwAAAAACAAAAAAAAAAANAAAAAAEAIwAAAAABACMAAAAAAAAjAAAAAAEAIwAAAAADACMAAAAAAQAjAAAAAAAAIwAAAAADACMAAAAAAgAjAAAAAAAAIwAAAAAAACMAAAAAAwAjAAAAAAAAIwAAAAACACMAAAAAAQAAAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAUAAwAAAAADAAIAAAAAAAAAAAAAAAAADQAAAAADAA== version: 7 2,-1: ind: 2,-1 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAQAAAAAAAAAADQAAAAABAA0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAEAAAAAAAAAAA0AAAAAAgANAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAQANAAAAAAIADQAAAAACAAAAAAAAAAANAAAAAAIADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAQAAAAAAAAAADQAAAAACAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAwAAAAAAAAAAJAAAAAAAACQAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAMAAAAAAAAAACQAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAABAAAAAAAAAAAFAAAAAAAABQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAAADQAAAAADAA0AAAAAAQAAAAAAAAAABQAAAAAAAAUAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAIAAAAAAAAAAAUAAAAAAAAFAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAABAAAAAAAAAAAhAAAAAAIAIQAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAACAA0AAAAAAgAAAAAAAAAAIQAAAAACABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAMAAAAAAAAAACEAAAAAAgATAAAAAAAABAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAQANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAABAAAAAAAAAAAhAAAAAAEAEwAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAwANAAAAAAEADQAAAAABAA0AAAAAAAANAAAAAAEADQAAAAADAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAIADQAAAAACAA0AAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAMAAAAAAAAAAA0AAAAAAgANAAAAAAIAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAMADQAAAAADAAAAAAAAAAANAAAAAAIADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAgAAAAAAAAAADQAAAAACAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAADAA0AAAAAAgANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAIACQAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAACQAAAAACAAkAAAAAAQANAAAAAAAADQAAAAACAA0AAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAADAAAAAAAAAAAFAAAAAAAABQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAABAA0AAAAAAgAAAAAAAAAABQAAAAAAAAUAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAAAAA0AAAAAAAANAAAAAAMAAAAAAAAAAAUAAAAAAAAFAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAACAAAAAAAAAAAhAAAAAAAAIQAAAAADAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAQAAAAAAAAAAIQAAAAACABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAEAAAAAAAAAACEAAAAAAQATAAAAAAAABAAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAABAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAABAA0AAAAAAgANAAAAAAEADQAAAAAAAAAAAAAAAAAhAAAAAAAAEwAAAAAAAA== version: 7 -3,-2: ind: -3,-2 - tiles: FwAAAAAAABcAAAAAAAAuAAAAAAAAFwAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAAAAAAAAAAAAJwAAAAAAACcAAAAAAAAnAAAAAAAAJwAAAAAAAAAAAAAAAAAmAAAAAAAAJgAAAAAAABcAAAAAAAAXAAAAAAAALgAAAAAAABcAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAIAAAAAAAAAAAgAAAAAAAAnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYAAAAAAAAXAAAAAAAAFwAAAAAAAC4AAAAAAAAXAAAAAAAAAAAAAAAAAA0AAAAAAQAaAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAFwAAAAAAABcAAAAAAAAuAAAAAAAAFwAAAAAAAAAAAAAAAAANAAAAAAAAGgAAAAABAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACABoAAAAAAwANAAAAAAEAAAAAAAAAAAAAAAAAAAAGAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAQANAAAAAAIADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAAAAAAAAAAAAAAGAAAAAAIABgAAAAAAAAYAAAAAAAAGAAAAAAEABgAAAAAAAAYAAAAAAQAGAAAAAAIADQAAAAACABoAAAAAAgAaAAAAAAIAGgAAAAABAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAQAAAAAAAAAABgAAAAAAAAYAAAAAAwAGAAAAAAAABgAAAAAAAAYAAAAAAwAGAAAAAAMABgAAAAADAA0AAAAAAgANAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAAANAAAAAAMAAAAAAAAAAAYAAAAAAwAGAAAAAAIABgAAAAAAAAYAAAAAAAAGAAAAAAEABgAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAAAAABUAAAAAAAAAAAAAAAAAHwAAAAAAAB8AAAAAAQAAAAAAAAAACgAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAABUAAAAAAAAVAAAAAAAAAAAAAAAAAB8AAAAAAAAfAAAAAAEAAAAAAAAAAAoAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAIAAAAAAAAVAAAAAAAAFQAAAAAAAAAAAAAAAAAfAAAAAAAAHwAAAAABAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAACAAAAAAAAFQAAAAAAABUAAAAAAAAAAAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAMACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAA== + tiles: FwAAAAAAABcAAAAAAAAuAAAAAAEAFwAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAQAAAAAAAAAAJwAAAAAAACcAAAAAAAAnAAAAAAAAJwAAAAAAAAAAAAAAAAAmAAAAAAAAJgAAAAAAABcAAAAAAAAXAAAAAAAALgAAAAACABcAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAMAAAAAAAAAAAgAAAAAAwAnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYAAAAAAAAXAAAAAAAAFwAAAAAAAC4AAAAAAwAXAAAAAAAAAAAAAAAAAA0AAAAAAgAaAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAwANAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAEAFwAAAAAAABcAAAAAAAAuAAAAAAEAFwAAAAAAAAAAAAAAAAANAAAAAAIAGgAAAAACAA0AAAAAAwANAAAAAAIADQAAAAACAA0AAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAABoAAAAAAwANAAAAAAAAAAAAAAAAAAAAAAAAAAAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAABAAAAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAADQAAAAACABoAAAAAAgAaAAAAAAMAGgAAAAADAA0AAAAAAgANAAAAAAMADQAAAAACAA0AAAAAAAAAAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAgANAAAAAAAAAAAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQAAAAAAABUAAAAAAAAAAAAAAAAAHwAAAAACAB8AAAAAAQAAAAAAAAAACgAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAABUAAAAAAAAVAAAAAAAAAAAAAAAAAB8AAAAAAgAfAAAAAAMAAAAAAAAAAAoAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAIAAAAAAAAVAAAAAAAAFQAAAAAAAAAAAAAAAAAfAAAAAAIAHwAAAAACAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAACAAAAAAAAFQAAAAAAABUAAAAAAAAAAAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAMACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAA== version: 7 -2,-3: ind: -2,-3 - tiles: AAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAADAAAAAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAABAA0AAAAAAgAAAAAAAAAAFAAAAAABAAAAAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAIAAAAAAAAAABQAAAAAAgAAAAAAAAAADQAAAAAAABoAAAAAAwANAAAAAAEAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAACAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAADAAAAAAAAAAAUAAAAAAMAAAAAAAAAAA0AAAAAAwAaAAAAAAAADQAAAAADAAAAAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAAANAAAAAAAAIwAAAAABAAAAAAAAAAANAAAAAAEAGgAAAAADAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAIADQAAAAAAAA0AAAAAAAANAAAAAAEAAAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAAAAAAAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAwAAAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAMAAAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAAAAAAAAAAA0AAAAAAgASAAAAAAEADQAAAAAAAAAAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAAAEgAAAAABAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAIADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmAAAAAAAAJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgAAAAAAACYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAgANAAAAAAIADQAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAgAAAAAAAAAAFAAAAAABAAAAAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAwAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAACAA0AAAAAAwANAAAAAAMAAAAAAAAAABQAAAAAAwAAAAAAAAAADQAAAAAAABoAAAAAAQANAAAAAAEAAAAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAIADQAAAAADAAAAAAAAAAAUAAAAAAEAAAAAAAAAAA0AAAAAAwAaAAAAAAIADQAAAAABAAAAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAIADQAAAAACAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAwANAAAAAAEAIwAAAAAAAAAAAAAAAAANAAAAAAAAGgAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAABAAAAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAAAAAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAIAAAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAAAAAAAAAAA0AAAAAAgASAAAAAAMADQAAAAABAAAAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAMAEgAAAAADAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAIAEgAAAAACABIAAAAAAgANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmAAAAAAAAJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAGQAAAAAAAAgAAAAAAAAZAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgAAAAAAACYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 1,-3: ind: 1,-3 - tiles: FAAAAAADABQAAAAAAQAAAAAAAAAADQAAAAAAAA0AAAAAAwAbAAAAAAMADQAAAAAAAAAAAAAAAAANAAAAAAAAEgAAAAAAAA0AAAAAAgAAAAAAAAAACAAAAAABAAgAAAAAAAAIAAAAAAEACAAAAAADABQAAAAAAgAUAAAAAAIAAAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAABsAAAAABAAAAAAAAAAADQAAAAAAABIAAAAAAQANAAAAAAEAAAAAAAAAAAgAAAAAAQAIAAAAAAAACAAAAAABAAgAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAIAAAAAAAAAABsAAAAAAAANAAAAAAIAAAAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAADAAAAAAAAAAAIAAAAAAIACAAAAAADAAgAAAAAAgAIAAAAAAEAFAAAAAAAABQAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACABQAAAAAAQAUAAAAAAEAAAAAAAAAABQAAAAAAQAbAAAAAAAAFAAAAAAAABQAAAAAAgAAAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAwAUAAAAAAMAFAAAAAADAAAAAAAAAAAUAAAAAAMAFAAAAAADABQAAAAAAgAUAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAIAFAAAAAADABQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAIAFAAAAAADAAAAAAAAAAANAAAAAAMAGwAAAAADAAAAAAAAAAAaAAAAAAMAGgAAAAADABoAAAAAAgAaAAAAAAIADQAAAAABABQAAAAAAQAUAAAAAAMAFAAAAAACABQAAAAAAAAUAAAAAAMAFAAAAAAAABQAAAAAAwAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAAAIAGgAAAAABAA0AAAAAAwAUAAAAAAMAFAAAAAAAAAAAAAAAAAAUAAAAAAIAFAAAAAAAABQAAAAAAAAUAAAAAAMADQAAAAAAAA0AAAAAAgAbAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAAAAA0AAAAAAwANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAgAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAA0AAAAAAwAAAAAAAAAAJAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAADQAAAAADAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA== + tiles: FAAAAAAAABQAAAAAAQAAAAAAAAAADQAAAAADAA0AAAAAAwAbAAAAAAMADQAAAAACAAAAAAAAAAANAAAAAAIAEgAAAAABAA0AAAAAAgAAAAAAAAAACAAAAAACAAgAAAAAAwAIAAAAAAMACAAAAAADABQAAAAAAQAUAAAAAAEAAAAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAABABsAAAAAAQAAAAAAAAAADQAAAAADABIAAAAAAwANAAAAAAEAAAAAAAAAAAgAAAAAAgAIAAAAAAIACAAAAAABAAgAAAAAAQAUAAAAAAIAFAAAAAADAAAAAAAAAAAbAAAAAAIAAAAAAAAAABsAAAAAAgANAAAAAAIAAAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAACAAgAAAAAAAAIAAAAAAMAFAAAAAACABQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAABQAAAAAAAAUAAAAAAEAAAAAAAAAABQAAAAAAAAbAAAAAAEAFAAAAAAAABQAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAMADQAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAADAA0AAAAAAwAUAAAAAAAAFAAAAAADAAAAAAAAAAAUAAAAAAAAFAAAAAACABQAAAAAAwAUAAAAAAEAAAAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAABAA0AAAAAAAANAAAAAAEAFAAAAAADABQAAAAAAQAAAAAAAAAAFAAAAAACABQAAAAAAAAUAAAAAAEAFAAAAAAAAAAAAAAAAAANAAAAAAIAGwAAAAAAAAAAAAAAAAAaAAAAAAMAGgAAAAACABoAAAAAAwAaAAAAAAMADQAAAAACABQAAAAAAQAUAAAAAAAAFAAAAAABABQAAAAAAwAUAAAAAAEAFAAAAAABABQAAAAAAAAAAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAAAMAGgAAAAACAA0AAAAAAgAUAAAAAAAAFAAAAAABAAAAAAAAAAAUAAAAAAEAFAAAAAACABQAAAAAAgAUAAAAAAMADQAAAAADAA0AAAAAAQAbAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAABAA0AAAAAAgANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAQAJAAAAAAEACQAAAAAAAA0AAAAAAgAAAAAAAAAAJAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAEACQAAAAACAAkAAAAAAgANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAACQAAAAACAAkAAAAAAAAJAAAAAAMADQAAAAADAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA== version: 7 2,-2: ind: 2,-2 - tiles: DQAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAIADQAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAADAAAAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAAAIAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAACAAAAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAIAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAGgAAAAAAAA0AAAAAAwAAAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAABoAAAAAAAAbAAAAAAIAAAAAAAAAACEAAAAAAAAhAAAAAAEAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAEADQAAAAACAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAgANAAAAAAIAHgAAAAAAAAAAAAAAAAAeAAAAAAIAAAAAAAAAAA0AAAAAAwACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAMADQAAAAACABsAAAAABAAAAAAAAAAAAAAAAAAAACEAAAAAAgANAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAADAA0AAAAAAQANAAAAAAAADQAAAAABAAAAAAAAAAAhAAAAAAEAIQAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAQANAAAAAAEAAAAAAAAAAA0AAAAAAwANAAAAAAIAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAEADQAAAAADAAAAAAAAAAANAAAAAAAADQAAAAADAA== + tiles: DQAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAwANAAAAAAMADQAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAAANAAAAAAIADQAAAAACAAAAAAAAAAANAAAAAAIADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAgAAAAAAAAAADQAAAAABAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAADAAAAAAAAAAANAAAAAAMADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAIADQAAAAAAAA0AAAAAAQAIAAAAAAEAAAAAAAAAAAgAAAAAAQAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAIAAAAAAAAAAA0AAAAAAAANAAAAAAIAAAAAAAAAABkAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAADAAAAAAAAAAANAAAAAAMADQAAAAAAAAAAAAAAAAAIAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMAGgAAAAACAA0AAAAAAQAAAAAAAAAADQAAAAABAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAABABkAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADABoAAAAAAAAbAAAAAAQAAAAAAAAAACEAAAAAAgAhAAAAAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAIADQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAEACAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAwANAAAAAAIAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAA0AAAAAAgACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAADQAAAAACABsAAAAAAgAAAAAAAAAAAAAAAAAAACEAAAAAAAANAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAADAA0AAAAAAwANAAAAAAEADQAAAAACAAAAAAAAAAAhAAAAAAMAIQAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAgANAAAAAAMAAAAAAAAAAA0AAAAAAAANAAAAAAEAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAQANAAAAAAEADQAAAAABAAAAAAAAAAANAAAAAAIADQAAAAABAA== version: 7 2,1: ind: 2,1 - tiles: AwAAAAAAAAMAAAAACgADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAAAAAAAAAAAACEAAAAAAgAhAAAAAAEAEwAAAAAAAAMAAAAAAQADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAAADQAAAAADAAAAAAAAAAAhAAAAAAEAIQAAAAABABMAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAABAA0AAAAAAQAAAAAAAAAAIQAAAAAAACEAAAAAAAATAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAQANAAAAAAIAAAAAAAAAACEAAAAAAQAhAAAAAAMAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAACAAAAAAAwAgAAAAAAIADQAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAgAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAwANAAAAAAMADQAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAEADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAIADQAAAAAAAA0AAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAMABgAAAAABAAYAAAAAAAAGAAAAAAAABgAAAAACAAAAAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAAANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAABAAYAAAAAAAAGAAAAAAAABgAAAAACAAAAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAIADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAwAGAAAAAAIAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAgAAAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAA0AAAAAAwANAAAAAAIAAAAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAEAAAAAAAAAAAAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAQANAAAAAAIADQAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAMADQAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAQAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAQANAAAAAAMADQAAAAABAA0AAAAAAwANAAAAAAAADQAAAAABAA== + tiles: AwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAIAAAAAAAAAACEAAAAAAAAhAAAAAAEAEwAAAAAAAAMAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAMADQAAAAADAAAAAAAAAAAhAAAAAAMAIQAAAAAAABMAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAABAA0AAAAAAgAAAAAAAAAAIQAAAAACACEAAAAAAQATAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAEAAAAAAAAAACEAAAAAAQAhAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAEADQAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAADAA0AAAAAAQAJAAAAAAIACQAAAAABAAkAAAAAAwAJAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAABAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAIADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAIADQAAAAACAA0AAAAAAQAkAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIABgAAAAAAAAYAAAAAAgAGAAAAAAAABgAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAACAAYAAAAAAQAGAAAAAAIABgAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAQAGAAAAAAIAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAwANAAAAAAEADQAAAAACAA0AAAAAAQAAAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAA0AAAAAAgANAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAIADQAAAAACACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAgANAAAAAAIADQAAAAABAA0AAAAAAwANAAAAAAMADQAAAAAAAA== version: 7 1,2: ind: 1,2 - tiles: AwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAADABEAAAAAAwARAAAAAAAAEQAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAwARAAAAAAAAEQAAAAAAABEAAAAAAwACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAEAEQAAAAADABEAAAAAAwARAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAACABEAAAAAAAARAAAAAAMAEQAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAABEAAAAAAAARAAAAAAMAEQAAAAADABEAAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAIAEQAAAAABABEAAAAAAgARAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAEQAAAAABABEAAAAAAgARAAAAAAEAEQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAACABEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAARAAAAAAAAEQAAAAABABEAAAAAAgARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAADAAAAAAAAAAAAAAAAAAAAEQAAAAADABEAAAAAAQARAAAAAAMAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAMADQAAAAAAAA0AAAAAAAASAAAAAAAAEgAAAAADAA0AAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAwANAAAAAAEADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAgANAAAAAAIADQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAABAA0AAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAQASAAAAAAEAEgAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAACABIAAAAAAwANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAwAIAAAAAAAACAAAAAABAAgAAAAAAwAIAAAAAAEACAAAAAADAAAAAAAAAAAIAAAAAAIACAAAAAABAA== + tiles: AwAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAABEAAAAAAgARAAAAAAAAEQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAARAAAAAAMAEQAAAAACABEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAMAEQAAAAADABEAAAAAAAARAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAABABEAAAAAAAARAAAAAAEAEQAAAAADAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAABEAAAAAAAARAAAAAAMAEQAAAAADABEAAAAAAwACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAIAEQAAAAACABEAAAAAAgARAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAEQAAAAADABEAAAAAAAARAAAAAAEAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAwARAAAAAAMAEQAAAAAAABEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAARAAAAAAEAEQAAAAACABEAAAAAAgARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAIAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAgANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAACAA0AAAAAAAASAAAAAAAAEgAAAAACAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAgAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAAASAAAAAAIAEgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAABABIAAAAAAQANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABAAgAAAAAAQAIAAAAAAMACAAAAAACAAgAAAAAAgAIAAAAAAIACAAAAAADAAAAAAAAAAAIAAAAAAAACAAAAAACAA== version: 7 0,2: ind: 0,2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgAAAAAAQAIAAAAAAAACAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIAAAAAAAACAAAAAABAAgAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACAAAAAACAAgAAAAAAgAIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgAAAAAAgAIAAAAAAAACAAAAAABAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAwAAAAAAAAAABQAAAAAAABIAAAAAAQASAAAAAAAAEgAAAAADAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAMAAAAAAAAAAAUAAAAAAAASAAAAAAEAEgAAAAABABIAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAABQAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAABAAUAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAACAAAAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAwANAAAAAAMAAAAAAAAAAAAAAAAAAAASAAAAAAMAEgAAAAABABIAAAAAAwASAAAAAAIAEgAAAAADABIAAAAAAQASAAAAAAIAEgAAAAABABIAAAAAAAASAAAAAAAAEgAAAAACABIAAAAAAgASAAAAAAAAEgAAAAACABIAAAAAAAASAAAAAAMADQAAAAAAABoAAAAAAgAaAAAAAAEADQAAAAACAA0AAAAAAgANAAAAAAAAGgAAAAAAABoAAAAAAgANAAAAAAMADQAAAAACAA0AAAAAAQAaAAAAAAEAGgAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAACAA0AAAAAAAAaAAAAAAEAGgAAAAADAA0AAAAAAQANAAAAAAMADQAAAAACABoAAAAAAwAaAAAAAAIADQAAAAACAA0AAAAAAwANAAAAAAIAGgAAAAABABoAAAAAAwANAAAAAAIADQAAAAADAA0AAAAAAAASAAAAAAIAEgAAAAACABIAAAAAAQASAAAAAAIAEgAAAAABABIAAAAAAwASAAAAAAAAEgAAAAACABIAAAAAAwASAAAAAAIAEgAAAAADABIAAAAAAQASAAAAAAAAEgAAAAABABIAAAAAAwASAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAADAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgAAAAAAQAIAAAAAAIACAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIAAAAAAAACAAAAAACAAgAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACAAAAAACAAgAAAAAAQAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAgAAAAAAgAIAAAAAAEACAAAAAADAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAAAAAAAAAAAABQAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAADAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAAAAAAAAAAAAAUAAAAAAAASAAAAAAMAEgAAAAAAABIAAAAAAwAFAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAEgAAAAAAABIAAAAAAgASAAAAAAEABQAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAAAAAAAAAABQAAAAAAABIAAAAAAgASAAAAAAEAEgAAAAADAAUAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAIAAAAAAAAAAAAAAAAAAAASAAAAAAIAEgAAAAADABIAAAAAAQASAAAAAAAAEgAAAAACABIAAAAAAAASAAAAAAAAEgAAAAABABIAAAAAAwASAAAAAAEAEgAAAAAAABIAAAAAAAASAAAAAAMAEgAAAAAAABIAAAAAAAASAAAAAAAADQAAAAAAABoAAAAAAQAaAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAIAGgAAAAACABoAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAwAaAAAAAAEAGgAAAAABAA0AAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAwAaAAAAAAEAGgAAAAACAA0AAAAAAQANAAAAAAAADQAAAAABABoAAAAAAQAaAAAAAAIADQAAAAACAA0AAAAAAwANAAAAAAIAGgAAAAABABoAAAAAAwANAAAAAAMADQAAAAAAAA0AAAAAAgASAAAAAAIAEgAAAAAAABIAAAAAAgASAAAAAAEAEgAAAAACABIAAAAAAgASAAAAAAMAEgAAAAABABIAAAAAAAASAAAAAAEAEgAAAAACABIAAAAAAgASAAAAAAMAEgAAAAABABIAAAAAAgASAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAABAA== version: 7 -1,2: ind: -1,2 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAQAIAAAAAAAACAAAAAACAAgAAAAAAwAIAAAAAAIACAAAAAABAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAgAIAAAAAAIACAAAAAABAAgAAAAAAgAIAAAAAAMACAAAAAABAAgAAAAAAgAAAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAABAAAAAAAAAAAIAAAAAAEACAAAAAAAAAgAAAAAAgAIAAAAAAEACAAAAAADAAgAAAAAAwAIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAADAA0AAAAAAQAAAAAAAAAACAAAAAADAAgAAAAAAAAIAAAAAAEACAAAAAABAAgAAAAAAgAIAAAAAAEACAAAAAABAAAAAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAIAAAAAAAAAAAgAAAAAAAAIAAAAAAEACAAAAAAAAAgAAAAAAgAIAAAAAAIACAAAAAAAAAgAAAAAAgAIAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAIADQAAAAAAAA0AAAAAAwAIAAAAAAEACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAEAAAAAAAAAAA0AAAAAAgASAAAAAAIADQAAAAAAABIAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAwAAAAAAAAAACAAAAAABAAgAAAAAAQAIAAAAAAMACAAAAAADAAgAAAAAAQAIAAAAAAAACAAAAAADAAAAAAAAAAANAAAAAAIAEgAAAAADAA0AAAAAAwASAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAIACAAAAAADAAgAAAAAAwAIAAAAAAMACAAAAAABAAgAAAAAAQAAAAAAAAAADQAAAAABABIAAAAAAQANAAAAAAIAEgAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAADAAAAAAAAAAAIAAAAAAAACAAAAAADAAgAAAAAAAAIAAAAAAAACAAAAAACAAgAAAAAAwAIAAAAAAIACgAAAAAAAA0AAAAAAAASAAAAAAAADQAAAAAAABIAAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMAGgAAAAACABoAAAAAAgAaAAAAAAAAGgAAAAADABoAAAAAAgANAAAAAAEAEgAAAAACABIAAAAAAwASAAAAAAMAEgAAAAADABIAAAAAAgASAAAAAAAAEgAAAAADABIAAAAAAQASAAAAAAEADQAAAAAAABoAAAAAAwAaAAAAAAMAGgAAAAADABoAAAAAAgAaAAAAAAIADQAAAAACABIAAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAwANAAAAAAAAGgAAAAADABoAAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAgAaAAAAAAMAAAAAAAAAAB4AAAAAAgAAAAAAAAAAGgAAAAADAA0AAAAAAgASAAAAAAEADQAAAAABAA0AAAAAAAANAAAAAAEADQAAAAABABoAAAAAAwAaAAAAAAEADQAAAAABAA0AAAAAAwANAAAAAAAAEgAAAAABAAAAAAAAAAAeAAAAAAIAHgAAAAACAA0AAAAAAAANAAAAAAAAAAAAAAAAABIAAAAAAwASAAAAAAIAEgAAAAABABIAAAAAAwASAAAAAAAAEgAAAAADABIAAAAAAwASAAAAAAIADQAAAAACABIAAAAAAgANAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAADAAgAAAAAAQAIAAAAAAIACAAAAAAAAAgAAAAAAAAIAAAAAAMACAAAAAADAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAwAIAAAAAAEACAAAAAADAAgAAAAAAQAIAAAAAAMACAAAAAABAAgAAAAAAwAAAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAADAAAAAAAAAAAIAAAAAAAACAAAAAACAAgAAAAAAQAIAAAAAAMACAAAAAADAAgAAAAAAgAIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAACAA0AAAAAAQAAAAAAAAAACAAAAAACAAgAAAAAAQAIAAAAAAMACAAAAAADAAgAAAAAAQAIAAAAAAAACAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAMAAAAAAAAAAAgAAAAAAwAIAAAAAAIACAAAAAACAAgAAAAAAAAIAAAAAAIACAAAAAAAAAgAAAAAAQAIAAAAAAIADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAEADQAAAAABAA0AAAAAAgAIAAAAAAMACAAAAAABAAgAAAAAAAAIAAAAAAIACAAAAAACAAgAAAAAAAAIAAAAAAIAAAAAAAAAAA0AAAAAAwASAAAAAAIADQAAAAACABIAAAAAAwANAAAAAAIADQAAAAABAA0AAAAAAQAAAAAAAAAACAAAAAAAAAgAAAAAAwAIAAAAAAMACAAAAAABAAgAAAAAAAAIAAAAAAEACAAAAAAAAAAAAAAAAAANAAAAAAMAEgAAAAABAA0AAAAAAQASAAAAAAMADQAAAAADAA0AAAAAAwANAAAAAAIAAAAAAAAAAAgAAAAAAQAIAAAAAAIACAAAAAADAAgAAAAAAAAIAAAAAAEACAAAAAACAAgAAAAAAAAAAAAAAAAADQAAAAADABIAAAAAAgANAAAAAAIAEgAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAABAAAAAAAAAAAIAAAAAAIACAAAAAADAAgAAAAAAwAIAAAAAAAACAAAAAACAAgAAAAAAQAIAAAAAAAACgAAAAAAAA0AAAAAAwASAAAAAAAADQAAAAADABIAAAAAAwANAAAAAAIADQAAAAADAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMAGgAAAAABABoAAAAAAQAaAAAAAAIAGgAAAAABABoAAAAAAQANAAAAAAIAEgAAAAAAABIAAAAAAwASAAAAAAIAEgAAAAABABIAAAAAAwASAAAAAAAAEgAAAAABABIAAAAAAwASAAAAAAIADQAAAAAAABoAAAAAAwAaAAAAAAMAGgAAAAACABoAAAAAAQAaAAAAAAEADQAAAAADABIAAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAAAGgAAAAAAABoAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAwAaAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAAAAABAA0AAAAAAwASAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAAADQAAAAADABoAAAAAAAAaAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAEAEgAAAAACAAAAAAAAAAAeAAAAAAEAAAAAAAAAAA0AAAAAAgANAAAAAAIAAAAAAAAAABIAAAAAAwASAAAAAAEAEgAAAAABABIAAAAAAQASAAAAAAIAEgAAAAACABIAAAAAAAASAAAAAAMADQAAAAACABIAAAAAAAANAAAAAAMAAAAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAgAAAAAAAAAAAAAAAAAAAA== version: 7 -2,2: ind: -2,2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAQASAAAAAAIADQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAwASAAAAAAEADQAAAAACAA0AAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAB4AAAAAAQASAAAAAAEADQAAAAABAA0AAAAAAwASAAAAAAIAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAEAAAAAAAAAAA0AAAAAAQANAAAAAAEAEgAAAAABAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAABIAAAAAAgASAAAAAAIAAAAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAAAABIAAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAASAAAAAAMAEgAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAEgAAAAAAABIAAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAABIAAAAAAAASAAAAAAMADQAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAAAAA0AAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAASAAAAAAEAEgAAAAACAA0AAAAAAgANAAAAAAEADQAAAAABAA0AAAAAAQASAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAAASAAAAAAMADQAAAAACAA0AAAAAAQANAAAAAAMAEgAAAAABAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAQASAAAAAAEADQAAAAABAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAAASAAAAAAEADQAAAAADAA0AAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAEADQAAAAADAA0AAAAAAAASAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAAAEgAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAABIAAAAAAwASAAAAAAEAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAABABIAAAAAAwACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAASAAAAAAIAEgAAAAACAA0AAAAAAgANAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAIAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAEgAAAAAAABIAAAAAAwANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAABIAAAAAAgASAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAASAAAAAAAAEgAAAAACAA0AAAAAAQANAAAAAAMADQAAAAAAAA0AAAAAAwASAAAAAAIAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAAASAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAAAEgAAAAABAA== version: 7 -2,3: ind: -2,3 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAASAAAAAAIAEgAAAAADAA0AAAAAAAANAAAAAAMAEgAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAwASAAAAAAAADQAAAAABAA0AAAAAAwACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAEgAAAAACABIAAAAAAgANAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAASAAAAAAMAEgAAAAABAA0AAAAAAQANAAAAAAIAEgAAAAABAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAwASAAAAAAAADQAAAAAAAA0AAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAEgAAAAABABIAAAAAAwANAAAAAAIAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -1,3: ind: -1,3 - tiles: DQAAAAADABIAAAAAAgANAAAAAAAAEgAAAAADAA0AAAAAAQANAAAAAAAADQAAAAAAAAAAAAAAAAAIAAAAAAMACAAAAAAAAAgAAAAAAwAIAAAAAAAACAAAAAADAAgAAAAAAwAIAAAAAAEACAAAAAAAAA0AAAAAAAASAAAAAAEADQAAAAADABIAAAAAAwANAAAAAAMADQAAAAACAA0AAAAAAAAAAAAAAAAACAAAAAADAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAEAAAAAAAAAAAgAAAAAAAAIAAAAAAIACAAAAAACAAgAAAAAAAAIAAAAAAAACAAAAAACAAgAAAAAAwAIAAAAAAMADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAEADQAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAIACAAAAAAAAAgAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAQAAAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAMACAAAAAAAAAgAAAAAAgAIAAAAAAMADQAAAAAAAA0AAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAIAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAACAAgAAAAAAgAIAAAAAAIACAAAAAADAA0AAAAAAAANAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAACAAgAAAAAAgAIAAAAAAAACAAAAAAAAAgAAAAAAgANAAAAAAAADQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAACAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAACAAYAAAAAAAAGAAAAAAIABwAAAAAAAAYAAAAAAAAGAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAABAAYAAAAAAgAGAAAAAAMABgAAAAABAAcAAAAAAAAGAAAAAAIABgAAAAACAA== + tiles: DQAAAAADABIAAAAAAQANAAAAAAIAEgAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAACAAAAAAAAAAAIAAAAAAEACAAAAAACAAgAAAAAAwAIAAAAAAIACAAAAAADAAgAAAAAAAAIAAAAAAAACAAAAAADAA0AAAAAAAASAAAAAAIADQAAAAADABIAAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAgAAAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAMACAAAAAABAAgAAAAAAAAIAAAAAAAACAAAAAABAAgAAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAMAAAAAAAAAAAgAAAAAAwAIAAAAAAEACAAAAAAAAAgAAAAAAwAIAAAAAAEACAAAAAADAAgAAAAAAAAIAAAAAAIADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAACAAAAAAAAAAAIAAAAAAAACAAAAAABAAgAAAAAAQAIAAAAAAAACAAAAAABAAgAAAAAAAANAAAAAAIADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAwAAAAAAAAAACAAAAAACAAgAAAAAAQAIAAAAAAEACAAAAAACAAgAAAAAAQAIAAAAAAEADQAAAAADAA0AAAAAAQACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAIAAAAAAAAAAAgAAAAAAwAIAAAAAAAACAAAAAADAAgAAAAAAwAIAAAAAAMACAAAAAACAA0AAAAAAwANAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAEACAAAAAAAAAgAAAAAAQAIAAAAAAEACAAAAAACAAgAAAAAAgANAAAAAAIADQAAAAABAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAACAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAwAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAGAAAAAAMAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAABAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAACAAYAAAAAAAAGAAAAAAAABwAAAAAAAAYAAAAAAgAGAAAAAAIAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAYAAAAAAwAGAAAAAAMABgAAAAABAAcAAAAAAAAGAAAAAAIABgAAAAACAA== version: 7 0,3: ind: 0,3 - tiles: AAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAACAA0AAAAAAwANAAAAAAIAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACABcAAAAAAAANAAAAAAMADQAAAAABAAAAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAwAXAAAAAAAADQAAAAADAA0AAAAAAQAAAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAAAFwAAAAAAAA0AAAAAAQANAAAAAAIAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADABcAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAwAXAAAAAAAADQAAAAACAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAAGAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABgAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAEgAAAAABAAAAAAAAAAANAAAAAAIADQAAAAABABcAAAAAAAANAAAAAAAADQAAAAADAAAAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAAAXAAAAAAAADQAAAAACAA0AAAAAAwAAAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAIAFwAAAAAAAA0AAAAAAAANAAAAAAIAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAAAABcAAAAAAAANAAAAAAAADQAAAAACAAAAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAAXAAAAAAAADQAAAAACAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAAGAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABgAAAAADAAYAAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 1,3: ind: 1,3 - tiles: EgAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAgAIAAAAAAMACAAAAAABAAgAAAAAAgAIAAAAAAMACAAAAAABAAAAAAAAAAAIAAAAAAAACAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAACAAAAAABAAgAAAAAAwAIAAAAAAMACAAAAAABAAgAAAAAAgAIAAAAAAEACAAAAAABAAgAAAAAAwACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAIAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAAgAAAAAAQAIAAAAAAAACAAAAAADAAgAAAAAAgAIAAAAAAIAAAAAAAAAAAgAAAAAAgAIAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: EgAAAAAAABIAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAIACAAAAAAAAAgAAAAAAAAIAAAAAAEACAAAAAACAAgAAAAAAQAIAAAAAAAACAAAAAABAAAAAAAAAAAIAAAAAAAACAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAIACAAAAAAAAAgAAAAAAAAIAAAAAAMACAAAAAACAAgAAAAAAgAIAAAAAAMACAAAAAADAAgAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAIAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAAAAAgAAAAAAQAIAAAAAAEACAAAAAAAAAgAAAAAAAAIAAAAAAEAAAAAAAAAAAgAAAAAAgAIAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -3,1: ind: -3,1 @@ -232,55 +233,55 @@ entities: version: 7 -3,2: ind: -3,2 - tiles: BQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgAkAAAAAAAAJAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAANAAAAAAMAJAAAAAAAACQAAAAAAAAkAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAADQAAAAACACQAAAAAAAAkAAAAAAAAJAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA0AAAAAAQAkAAAAAAAAJAAAAAAAACQAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: BQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgAkAAAAAAAAJAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAANAAAAAAMAJAAAAAAAACQAAAAAAAAkAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAADQAAAAACACQAAAAAAAAkAAAAAAAAJAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA0AAAAAAwAkAAAAAAAAJAAAAAAAACQAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -4,2: ind: -4,2 - tiles: BQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAEAEwAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAABABMAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAgATAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAMAEwAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAMAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAA0AAAAAAgATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAANAAAAAAMAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAADQAAAAACABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAA0AAAAAAQATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAANAAAAAAEAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: BQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAAAEwAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAAAABMAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAgATAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAAAEwAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAgANAAAAAAMAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAA0AAAAAAgATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAANAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAADQAAAAADABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAA0AAAAAAwATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAANAAAAAAIAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -4,1: ind: -4,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAwAkAAAAAAAAJAAAAAAAACQAAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAgAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAwANAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAEADQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAgAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAgANAAAAAAIAAAAAAAAAAA0AAAAAAQANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAIADQAAAAACAAAAAAAAAAANAAAAAAEADQAAAAABAAAAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAgAAAAAAAAAADQAAAAACAA0AAAAAAwAAAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAMADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAIADQAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAAAAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAABAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAQAAAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAMAEwAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAgAkAAAAAAAAJAAAAAAAACQAAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAIADQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAQAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAEABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAAADQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAQAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAwANAAAAAAEAAAAAAAAAAA0AAAAAAAANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAABAAAAAAAAAAANAAAAAAIADQAAAAACAAAAAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAAANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAwAAAAAAAAAADQAAAAACAA0AAAAAAgAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAQANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAADAAAAAAAAAAANAAAAAAMADQAAAAADAAAAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAABAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAwAAAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAIAEwAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAA== version: 7 -4,0: ind: -4,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAAADQAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAADQAAAAABABoAAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgAaAAAAAAMADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAIAGgAAAAADAA0AAAAAAgAAAAAAAAAADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAgAAAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAIAAAAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAwANAAAAAAIAAAAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAACAAAAAAAAAAANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAIADQAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAMAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAAAAA0AAAAAAwAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAQANAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAMAAAAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAADAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAACAA0AAAAAAwAAAAAAAAAAJAAAAAAAACQAAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAwAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAADAAAAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAwANAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAADQAAAAADABoAAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAaAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAAAGgAAAAABAA0AAAAAAAAAAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAACAA0AAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAEAAAAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAABAAAAAAAAAAANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAIADQAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAMADQAAAAACAA0AAAAAAQANAAAAAAEAAAAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAACAAAAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAACAA0AAAAAAQAAAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAAAAA0AAAAAAQANAAAAAAEAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAgANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAQAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -4,-1: ind: -4,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABAAgAAAAAAAAfAAAAAAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAEgAAAAABAA0AAAAAAAAAAAAAAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAwAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAABIAAAAAAAANAAAAAAEAAAAAAAAAABUAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAMACAAAAAABAAAAAAAAAAAfAAAAAAIAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQASAAAAAAMADQAAAAACAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABAAgAAAAAAwAfAAAAAAAAHwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAwAAAAAAAAAADQAAAAABACQAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAwAIAAAAAAIAAAAAAAAAAB8AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAAAAAAAAAAAAAANAAAAAAAABgAAAAABAA0AAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAABAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAQANAAAAAAEAGgAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAABAAYAAAAAAAAGAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAMAGgAAAAADABoAAAAAAAAaAAAAAAEADQAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAABABoAAAAAAwANAAAAAAEADQAAAAABAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAwAaAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAABAA0AAAAAAQANAAAAAAEADQAAAAAAAA0AAAAAAAAAAAAAAAAADQAAAAAAABIAAAAAAwANAAAAAAEAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAAAAAAAAAAAAA0AAAAAAgASAAAAAAAADQAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAANAAAAAAMAEgAAAAABAA0AAAAAAQAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAMAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAACAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAQAfAAAAAAIAHwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAEgAAAAACAA0AAAAAAgAAAAAAAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADABIAAAAAAwANAAAAAAIAAAAAAAAAABUAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAMACAAAAAACAAAAAAAAAAAfAAAAAAIAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQASAAAAAAEADQAAAAADAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABAAgAAAAAAgAfAAAAAAMAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAwAAAAAAAAAADQAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAwAIAAAAAAMAAAAAAAAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAAAAAAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAADAAAAAAAAAAANAAAAAAEABgAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAAAGgAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAABAAYAAAAAAwAGAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAMAGgAAAAACABoAAAAAAAAaAAAAAAMADQAAAAACAA0AAAAAAQANAAAAAAAADQAAAAADABoAAAAAAgANAAAAAAEADQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAgANAAAAAAIADQAAAAACAA0AAAAAAAAaAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAACAA0AAAAAAQAAAAAAAAAADQAAAAABABIAAAAAAwANAAAAAAMAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAMAAAAAAAAAAA0AAAAAAQASAAAAAAIADQAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAIADQAAAAABAA0AAAAAAQANAAAAAAIADQAAAAAAAAAAAAAAAAANAAAAAAAAEgAAAAAAAA0AAAAAAwAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAADAA0AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAIAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAIADQAAAAACAA0AAAAAAgANAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAADAAAAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAADAA== version: 7 -4,-2: ind: -4,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAC4AAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAABcAAAAAAAAuAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAXAAAAAAAALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQAbAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAAAAAAAAAAANAAAAAAMADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAADAA0AAAAAAQAkAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAMAAAAAAAAAAB8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwAbAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAEACAAAAAADAB8AAAAAAgAfAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgAaAAAAAAIADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAACAAAAAADAAgAAAAAAAAAAAAAAAAAHwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAGgAAAAADAA0AAAAAAAAAAAAAAAAAFQAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAABoAAAAAAQANAAAAAAIAAAAAAAAAABUAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAADAAAAAAAAAAAfAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAAAAAAAAAAAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAADAAgAAAAAAgAAAAAAAAAAHwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAgAAAAAAAAAAFQAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAAAAAC4AAAAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAABcAAAAAAAAuAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAXAAAAAAAALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQAbAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAABAAAAAAAAAAANAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAADAA0AAAAAAgAkAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAQAIAAAAAAIAAAAAAAAAAB8AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAMACAAAAAAAAB8AAAAAAwAfAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQAaAAAAAAIADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAwAAAAAAAAAAHwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAGgAAAAABAA0AAAAAAwAAAAAAAAAAFQAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAgAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADABoAAAAAAgANAAAAAAAAAAAAAAAAABUAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAADAAAAAAAAAAAfAAAAAAEAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAACAAAAAAAAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAwAAAAAAAAAAHwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAwAAAAAAAAAAFQAAAAAAAA== version: 7 -2,-4: ind: -2,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAIAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAADQAAAAADACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAwAYAAAAAAMAAAAAAAAAABgAAAAAAgANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAAAAAAwAjAAAAAAIAIwAAAAACAAAAAAAAAAAYAAAAAAEAGAAAAAADABgAAAAAAQAYAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAAACAAAAAAAAAAAjAAAAAAEAIwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAYAAAAAAIAGAAAAAADABgAAAAAAgAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjAAAAAAEAAAAAAAAAAAAAAAAAAAAjAAAAAAMAIwAAAAABAAAAAAAAAAAYAAAAAAEAGAAAAAACAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAABgAAAAAAgAAAAAAAAAAGAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAEADQAAAAACAA0AAAAAAQANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAQASAAAAAAAAEgAAAAADABIAAAAAAAANAAAAAAEADQAAAAABABoAAAAAAAAaAAAAAAEAGgAAAAABAA0AAAAAAgANAAAAAAMADQAAAAADAAAAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAQAAAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAEADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAAAAAAAAAAAAFAAAAAABAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAIAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAgAAAAAAAAAADQAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAYAAAAAAEAAAAAAAAAABgAAAAAAgANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAAAAAAAAjAAAAAAEAIwAAAAACAAAAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAQAYAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIwAAAAADAAAAAAAAAAAjAAAAAAEAIwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAwAYAAAAAAIAGAAAAAACABgAAAAAAQAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjAAAAAAMAAAAAAAAAAAAAAAAAAAAjAAAAAAIAIwAAAAAAAAAAAAAAAAAYAAAAAAMAGAAAAAABAAAAAAAAAAAYAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAACABgAAAAAAQAAAAAAAAAAGAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAABAAkAAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAgASAAAAAAEAEgAAAAAAABIAAAAAAQANAAAAAAAADQAAAAACABoAAAAAAwAaAAAAAAMAGgAAAAABAA0AAAAAAAANAAAAAAAADQAAAAADAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAQANAAAAAAIADQAAAAACAA0AAAAAAwANAAAAAAEADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAQANAAAAAAEADQAAAAAAAA0AAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAEADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAADAAAAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAEADQAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAQAAAAAAAAAAFAAAAAACAA== version: 7 -1,-4: ind: -1,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAA0AAAAAAQAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACABgAAAAAAAAYAAAAAAAAGAAAAAACABgAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAEAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAA0AAAAAAAAYAAAAAAEAGAAAAAABABgAAAAAAAAYAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAANAAAAAAAAGAAAAAABABgAAAAAAgAYAAAAAAMAGAAAAAABAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAABAA0AAAAAAgAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAADQAAAAADABgAAAAAAwAYAAAAAAEAGAAAAAADABgAAAAAAgAAAAAAAAAADQAAAAACAA0AAAAAAgAAAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAA0AAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAgAYAAAAAAMAAAAAAAAAAA0AAAAAAgANAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEAGAAAAAADABgAAAAAAQAYAAAAAAEAGAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAADAAAAAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAwANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAIADQAAAAACAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAABIAAAAAAQASAAAAAAAAEgAAAAACAA0AAAAAAwANAAAAAAEADQAAAAABABIAAAAAAQASAAAAAAIAEgAAAAACAA0AAAAAAgANAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAQAUAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAADACAAAAAAAgAgAAAAAAIAAAAAAAAAAAAAAAAAAAANAAAAAAMAFAAAAAABABQAAAAAAAAUAAAAAAMAIwAAAAABACMAAAAAAwAjAAAAAAAAIwAAAAABACMAAAAAAwAjAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAADAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAA0AAAAAAQAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACABgAAAAAAgAYAAAAAAIAGAAAAAACABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAMAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAA0AAAAAAgAYAAAAAAIAGAAAAAAAABgAAAAAAwAYAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAANAAAAAAAAGAAAAAAAABgAAAAAAgAYAAAAAAIAGAAAAAADAA0AAAAAAwANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAIADQAAAAABAA0AAAAAAwAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAADQAAAAADABgAAAAAAgAYAAAAAAAAGAAAAAABABgAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAwAAAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAEAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAA0AAAAAAAAYAAAAAAMAGAAAAAAAABgAAAAAAAAYAAAAAAEAAAAAAAAAAA0AAAAAAQANAAAAAAMAAAAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIAGAAAAAAAABgAAAAAAwAYAAAAAAAAGAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAADAAAAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAEADQAAAAACAA0AAAAAAwANAAAAAAEADQAAAAABAA0AAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABABIAAAAAAwASAAAAAAEAEgAAAAADAA0AAAAAAAANAAAAAAEADQAAAAAAABIAAAAAAgASAAAAAAIAEgAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAADAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAIADQAAAAACAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACABQAAAAAAAAUAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAABACAAAAAAAwAgAAAAAAIAAAAAAAAAAAAAAAAAAAANAAAAAAIAFAAAAAACABQAAAAAAwAUAAAAAAAAIwAAAAABACMAAAAAAwAjAAAAAAIAIwAAAAADACMAAAAAAgAjAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAADAA== version: 7 0,-4: ind: 0,-4 - tiles: DQAAAAACAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAAAAABAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAAAAAQANAAAAAAMAAAAAAAAAABQAAAAAAQAUAAAAAAAAFAAAAAACABQAAAAAAgAUAAAAAAAAFAAAAAADABQAAAAAAAAUAAAAAAIAAAAAAAAAAAgAAAAAAwAIAAAAAAEACAAAAAACAAAAAAAAAAAaAAAAAAMADQAAAAABAAAAAAAAAAAUAAAAAAMAFAAAAAACABQAAAAAAgAUAAAAAAMAFAAAAAABABQAAAAAAgAUAAAAAAMAFAAAAAADAAAAAAAAAAAIAAAAAAMACAAAAAABAAgAAAAAAQAAAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAFAAAAAABABQAAAAAAQAUAAAAAAIAFAAAAAABABQAAAAAAgAUAAAAAAIAFAAAAAADABQAAAAAAgAAAAAAAAAACAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIAAAAAAAAAABQAAAAAAgAUAAAAAAMAFAAAAAACABQAAAAAAQAUAAAAAAMAFAAAAAABABQAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAQAIAAAAAAEACAAAAAABAAAAAAAAAAANAAAAAAMADQAAAAABAAAAAAAAAAAUAAAAAAMAFAAAAAADABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAIAAAAAAAAAAAgAAAAAAAAIAAAAAAMACAAAAAABAAgAAAAAAwAAAAAAAAAADQAAAAACAA0AAAAAAAAAAAAAAAAAFAAAAAADABQAAAAAAwAUAAAAAAIAFAAAAAABABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAIAAAAAAEACAAAAAABAAgAAAAAAAAIAAAAAAIAAAAAAAAAAA0AAAAAAAANAAAAAAMAAAAAAAAAAAAAAAAAAAAUAAAAAAMAFAAAAAAAABQAAAAAAQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAQAbAAAAAAQADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAIADQAAAAABAA0AAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAADABoAAAAAAwAaAAAAAAIAGgAAAAADAA0AAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAEADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAMAFAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAwAAAAAAAAAAFAAAAAAAABQAAAAAAwAUAAAAAAEAFAAAAAADABQAAAAAAwAAAAAAAAAAFAAAAAABABQAAAAAAgAAAAAAAAAAFAAAAAADABQAAAAAAQAUAAAAAAEAFAAAAAADAA== + tiles: DQAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAEAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAAAAAAANAAAAAAMAAAAAAAAAABQAAAAAAwAUAAAAAAMAFAAAAAACABQAAAAAAAAUAAAAAAMAFAAAAAABABQAAAAAAgAUAAAAAAAAAAAAAAAAAAgAAAAAAQAIAAAAAAEACAAAAAADAAAAAAAAAAAaAAAAAAIADQAAAAADAAAAAAAAAAAUAAAAAAAAFAAAAAABABQAAAAAAQAUAAAAAAMAFAAAAAABABQAAAAAAwAUAAAAAAIAFAAAAAACAAAAAAAAAAAIAAAAAAIACAAAAAABAAgAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAFAAAAAACABQAAAAAAAAUAAAAAAEAFAAAAAABABQAAAAAAAAUAAAAAAEAFAAAAAADABQAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAEAAAAAAAAAABQAAAAAAgAUAAAAAAEAFAAAAAADABQAAAAAAwAUAAAAAAIAFAAAAAACABQAAAAAAwAAAAAAAAAAAAAAAAAAAAgAAAAAAQAIAAAAAAMACAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAACAAAAAAAAAAAUAAAAAAIAFAAAAAAAABQAAAAAAgAUAAAAAAIAFAAAAAABABQAAAAAAwAUAAAAAAEAAAAAAAAAAAgAAAAAAAAIAAAAAAMACAAAAAADAAgAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAAAAAAAAAAAFAAAAAABABQAAAAAAQAUAAAAAAIAFAAAAAACABQAAAAAAwAUAAAAAAEAFAAAAAACAAAAAAAAAAAIAAAAAAAACAAAAAADAAgAAAAAAQAIAAAAAAEAAAAAAAAAAA0AAAAAAAANAAAAAAIAAAAAAAAAAAAAAAAAAAAUAAAAAAMAFAAAAAABABQAAAAAAwANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAwAbAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAABAA0AAAAAAwANAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAADABoAAAAAAwAaAAAAAAAAGgAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAACAA0AAAAAAQANAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAQANAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAEAFAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAwAAAAAAAAAAFAAAAAACABQAAAAAAAAUAAAAAAMAFAAAAAABABQAAAAAAQAAAAAAAAAAFAAAAAAAABQAAAAAAgAUAAAAAAEAFAAAAAACABQAAAAAAQAUAAAAAAMAAAAAAAAAAA== version: 7 1,-4: ind: 1,-4 - tiles: AAAAAAAAAAAAAAAAAAAeAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAHgAAAAABACQAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAABQAIAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAMACAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABABkAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAACAAgAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAAAEAAAAAAAAAAAIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACAAgAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAgAIAAAAAAEACAAAAAADAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAIACAAAAAADAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACAAgAAAAAAwAIAAAAAAMAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADABIAAAAAAAASAAAAAAEAEgAAAAADAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAgAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAQAbAAAAAAMAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAADQAAAAABABsAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIAEgAAAAAAAA0AAAAAAwAAAAAAAAAACAAAAAACAAgAAAAAAgAIAAAAAAEACAAAAAABAA== + tiles: AAAAAAAAAAAAAAAAAAAeAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAHgAAAAABACQAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAAwAIAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAwAIAAAAAAIACAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABABkAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAIACAAAAAACAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAAACAAAAAAAAAAAIAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABAAgAAAAAAAAIAAAAAAMAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAQAIAAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACAAgAAAAAAAAIAAAAAAMAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAEADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADABIAAAAAAgASAAAAAAEAEgAAAAADAA0AAAAAAQANAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAwAbAAAAAAIAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAMAFAAAAAADAAAAAAAAAAAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAACABQAAAAAAAAAAAAAAAAADQAAAAADABsAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIAEgAAAAAAAA0AAAAAAwAAAAAAAAAACAAAAAABAAgAAAAAAQAIAAAAAAMACAAAAAACAA== version: 7 3,-2: ind: 3,-2 - tiles: AAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAgABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAwAbAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAADAA0AAAAAAQAAAAAAAAAAAAAAAAAAAB4AAAAAAQAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAwANAAAAAAMADQAAAAABAAAAAAAAAAAeAAAAAAIAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAEAGwAAAAABAA0AAAAAAwAeAAAAAAIAAAAAAAAAAB4AAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAACAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAhAAAAAAAAIQAAAAABACEAAAAAAAAhAAAAAAEAIQAAAAADACEAAAAAAgAhAAAAAAAAIQAAAAABACEAAAAAAAAhAAAAAAIAIQAAAAACAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAEADQAAAAACAA0AAAAAAwANAAAAAAIADQAAAAAAACEAAAAAAQAhAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAgANAAAAAAMAIQAAAAAAACEAAAAAAgANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAIADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAgAhAAAAAAAAIQAAAAABACEAAAAAAgAhAAAAAAAAIQAAAAADAA0AAAAAAgANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAEADQAAAAAAAA0AAAAAAgANAAAAAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEAAAAAAgANAAAAAAEADQAAAAACAA0AAAAAAQANAAAAAAMADQAAAAABAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAMADQAAAAABACEAAAAAAAANAAAAAAEADQAAAAACAAAAAAAAAAAhAAAAAAMADQAAAAADAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAQANAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAAAhAAAAAAMADQAAAAACAA0AAAAAAAAAAAAAAAAAIQAAAAACAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAACAA0AAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAEAIQAAAAABAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAgANAAAAAAIADQAAAAABAA0AAAAAAQAAAAAAAAAADQAAAAAAAA0AAAAAAQAAAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAEADQAAAAABAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAEAAAAAAAAAAA0AAAAAAQANAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAQAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAADAAAAAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAwANAAAAAAIAAAAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAgAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAMADQAAAAABAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAgANAAAAAAEAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAQAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAEADQAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAAAAA0AAAAAAQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAhAAAAAAIAIQAAAAACACEAAAAAAAAhAAAAAAEAIQAAAAABACEAAAAAAgAhAAAAAAMAIQAAAAACACEAAAAAAQAhAAAAAAMAIQAAAAABACEAAAAAAwAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAIADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAAAACEAAAAAAwAhAAAAAAMAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAwANAAAAAAIAIQAAAAACACEAAAAAAgANAAAAAAEADQAAAAABAA0AAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAwANAAAAAAIADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAAAhAAAAAAIAIQAAAAACACEAAAAAAwAhAAAAAAEAIQAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAACAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAMAIQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEAAAAAAgANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAIADQAAAAACAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAgANAAAAAAMADQAAAAAAACEAAAAAAwANAAAAAAIADQAAAAABAAAAAAAAAAAhAAAAAAMADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAgAhAAAAAAAADQAAAAABAA0AAAAAAQAAAAAAAAAAIQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAgANAAAAAAAAIQAAAAACAA== version: 7 4,-2: ind: 4,-2 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 4,0: ind: 4,0 - tiles: AAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAAwAIAAAAAAMAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAIAAAAAAIAGQAAAAAFAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABABkAAAAAAwAIAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAQAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAsAAAAAAgALAAAAAAEAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAEACAAAAAADAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAAwAIAAAAAAIAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAIAAAAAAAAGQAAAAAGAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACABkAAAAAAQAIAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAIACwAAAAACAAsAAAAAAwAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAEAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== version: 7 4,-1: ind: 4,-1 @@ -288,55 +289,55 @@ entities: version: 7 3,1: ind: 3,1 - tiles: EwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAACEAAAAAAAAhAAAAAAAAAAAAAAAAAAgAAAAAAQAIAAAAAAIACAAAAAADAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAhAAAAAAMAIQAAAAACAAAAAAAAAAAIAAAAAAEACAAAAAACAAgAAAAAAAAIAAAAAAEAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAIQAAAAAAACEAAAAAAgAAAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAABACEAAAAAAwATAAAAAAAAEwAAAAAAACEAAAAAAgAhAAAAAAAAAAAAAAAAAAgAAAAAAgAIAAAAAAIACAAAAAABAAgAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAEACAAAAAABAAgAAAAAAwAIAAAAAAMAAAAAAAAAACQAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAABAA0AAAAAAQANAAAAAAEADQAAAAAAACEAAAAAAQAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAACEAAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAgAhAAAAAAMAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAhAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAIAIQAAAAACAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAIQAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAAAACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEAAAAAAQANAAAAAAIADQAAAAADAA0AAAAAAgAhAAAAAAMAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAQANAAAAAAMADQAAAAABABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAAA0AAAAAAgAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAQAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAANAAAAAAEAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAA== + tiles: EwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAACEAAAAAAQAhAAAAAAIAAAAAAAAAAAgAAAAAAgAIAAAAAAMACAAAAAACAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAhAAAAAAAAIQAAAAABAAAAAAAAAAAIAAAAAAAACAAAAAABAAgAAAAAAAAIAAAAAAMAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAIQAAAAABACEAAAAAAwAAAAAAAAAACAAAAAACAAgAAAAAAAAIAAAAAAIACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAACACEAAAAAAAATAAAAAAAAEwAAAAAAACEAAAAAAgAhAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAMACAAAAAAAAAgAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAIACAAAAAABAAgAAAAAAgAIAAAAAAEAAAAAAAAAACQAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAADAA0AAAAAAQANAAAAAAMADQAAAAACACEAAAAAAwAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAACEAAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAwAhAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAhAAAAAAEADQAAAAABAA0AAAAAAgANAAAAAAEAIQAAAAABAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAIQAAAAADAA0AAAAAAQANAAAAAAAADQAAAAADACEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAQAhAAAAAAIAFwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAQANAAAAAAIADQAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAABABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABcAAAAAAAAXAAAAAAAAFwAAAAAAAA0AAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAQAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAANAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAA== version: 7 4,1: ind: 4,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAsAAAAAAQALAAAAAAIAAAAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAsAAAAAAAALAAAAAAEACwAAAAACAAAAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAALAAAAAAIACwAAAAABAAsAAAAAAwAAAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAABAAsAAAAAAgALAAAAAAMAAAAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAACAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAA0AAAAAAQAAAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAADQAAAAADAAAAAAAAAAANAAAAAAAADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAwANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAgALAAAAAAAADQAAAAACAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAA0AAAAAAgAAAAAAAAAACwAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMAAAAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAQAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAABAAsAAAAAAQALAAAAAAMAAAAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAsAAAAAAQALAAAAAAEACwAAAAABAAAAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAALAAAAAAAACwAAAAACAAsAAAAAAwAAAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAABAAsAAAAAAAALAAAAAAIAAAAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAA0AAAAAAgAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAgALAAAAAAAADQAAAAABAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAACwAAAAABAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEAAAAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAwAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 3,-3: ind: 3,-3 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAAgAAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAA0AAAAAAwAAAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAIADQAAAAACAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAEAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAQANAAAAAAAADQAAAAABAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAADQAAAAADAAAAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAAADQAAAAAAAA0AAAAAAQAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAA0AAAAAAwAAAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAIADQAAAAACAA0AAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAQANAAAAAAIAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAANAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAABAA0AAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAAANAAAAAAEADQAAAAACAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAADQAAAAADAAAAAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAQAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAABAA0AAAAAAAANAAAAAAEAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAADAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAIADQAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAABAA0AAAAAAgAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAQANAAAAAAIAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAABAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAgAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== version: 7 2,-3: ind: 2,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAADAA0AAAAAAgAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAAAAA0AAAAAAgANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAAANAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAABAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAABAAAAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAQAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAADAA0AAAAAAQANAAAAAAIADQAAAAACAA0AAAAAAQANAAAAAAMADQAAAAACAAAAAAAAAAABAAAAAAAAAQAAAAAAAA0AAAAAAQANAAAAAAMAAAAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAwANAAAAAAEADQAAAAADAA0AAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAANAAAAAAAADQAAAAABAAAAAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAQANAAAAAAIADQAAAAABAA0AAAAAAAANAAAAAAIAAAAAAAAAAAEAAAAAAAABAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAIADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAACAAAAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAwANAAAAAAMADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAgAAAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAgANAAAAAAIADQAAAAABAA0AAAAAAwANAAAAAAEADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAwANAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAADABIAAAAAAQASAAAAAAMAEgAAAAABAA0AAAAAAQANAAAAAAMADQAAAAADABoAAAAAAQAaAAAAAAMAGgAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAACAAAAAAAAAAANAAAAAAAADQAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAAMAAAAAAAAAABsAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAgAAAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAEADQAAAAACAAAAAAAAAAAKAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAACAA0AAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAQANAAAAAAIAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAAAAAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAEAAAAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAACAA0AAAAAAwAAAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAIADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAEAAAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAACABIAAAAAAwASAAAAAAIAEgAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAADABoAAAAAAQAaAAAAAAEAGgAAAAACAA0AAAAAAwANAAAAAAMADQAAAAABAAAAAAAAAAANAAAAAAEADQAAAAADAA== version: 7 2,-4: ind: 2,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAALwAAAAAAAC8AAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAC8AAAAAAAAvAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAAALwAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAQANAAAAAAIADQAAAAACAA0AAAAAAgAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAQANAAAAAAIAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAABAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAgANAAAAAAIADQAAAAABAA0AAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAALwAAAAADAC8AAAAABQAwAAAAAAQAMAAAAAAEADAAAAAAAQAwAAAAAAUAMAAAAAACAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAC8AAAAAAAAvAAAAAAUAMAAAAAADADAAAAAABQAwAAAAAAUAMAAAAAABADAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAIALwAAAAAAADAAAAAABAAwAAAAAAEAMAAAAAABADAAAAAAAgAwAAAAAAIAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAALwAAAAADAC8AAAAAAAAvAAAAAAIALwAAAAADAC8AAAAAAQAvAAAAAAMALwAAAAAEAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAC8AAAAAAAAvAAAAAAUALwAAAAACAC8AAAAAAAAvAAAAAAIALwAAAAAAAC8AAAAAAwAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAvAAAAAAQALwAAAAABAC8AAAAAAAAvAAAAAAUALwAAAAAAAC8AAAAAAgAvAAAAAAEAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAAANAAAAAAMAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAQAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAMAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAA== version: 7 -3,-4: ind: -3,-4 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAABgAAAAAAwABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAABgAAAAAAwAYAAAAAAEAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAYAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAJAAAAAAAABcAAAAAAAAkAAAAAAAAFwAAAAAAAAAAAAAAAAANAAAAAAEAAAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAACAAAAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAwAAAAAAAAAAFwAAAAAAACQAAAAAAAAXAAAAAAAAJAAAAAAAABcAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAkAAAAAAAAFwAAAAAAACQAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAJAAAAAAAABcAAAAAAAAkAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAZAAAAAAQAAAAAAAAAAAgAAAAAAQAIAAAAAAEACAAAAAAAACQAAAAAAAAAAAAAAAAAFwAAAAAAACQAAAAAAAAXAAAAAAAAJAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAIACAAAAAACAAAAAAAAAAAZAAAAAAEAGQAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACABkAAAAAAgAAAAAAAAAAGQAAAAACAAgAAAAAAgAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAgAAAAAAgAAAAAAAAAADQAAAAABAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAADwAAAAADAA8AAAAAAwAPAAAAAAEADwAAAAAAAA8AAAAAAwAIAAAAAAAACAAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgAAAAAAAAAAAAAAAAAAABgAAAAAAAAYAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAwAAAAAAAAAADQAAAAABAAAAAAAAAAAAAAAAAAAADQAAAAABAAAAAAAAAAAYAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAJAAAAAAAABcAAAAAAAAkAAAAAAAAFwAAAAAAAAAAAAAAAAANAAAAAAIAAAAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAABAAAAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAwAAAAAAAAAAFwAAAAAAACQAAAAAAAAXAAAAAAAAJAAAAAAAABcAAAAAAAAAAAAAAAAADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAkAAAAAAAAFwAAAAAAACQAAAAAAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAJAAAAAAAABcAAAAAAAAkAAAAAAAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAQAZAAAAAAIAAAAAAAAAAAgAAAAAAwAIAAAAAAEACAAAAAABACQAAAAAAAAAAAAAAAAAFwAAAAAAACQAAAAAAAAXAAAAAAAAJAAAAAAAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAAAMACAAAAAABAAAAAAAAAAAZAAAAAAEAGQAAAAABAAAAAAAAAAAkAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABABkAAAAAAQAAAAAAAAAAGQAAAAABAAgAAAAAAwAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAgAAAAAAQAAAAAAAAAADQAAAAABAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAADwAAAAABAA8AAAAAAwAPAAAAAAIADwAAAAACAA8AAAAAAQAIAAAAAAAACAAAAAADAA== version: 7 -3,-3: ind: -3,-3 - tiles: AAAAAAAAAA0AAAAAAAANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAQAPAAAAAAAADwAAAAADAA8AAAAAAwAIAAAAAAIACAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAMACAAAAAAAAAgAAAAAAgAAAAAAAAAAAAAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAIADwAAAAAAAAgAAAAAAQAIAAAAAAMAGQAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAQAIAAAAAAEACAAAAAACAAgAAAAAAQAIAAAAAAIACAAAAAACABkAAAAAAwAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAADAAgAAAAAAgAIAAAAAAAACAAAAAADAAgAAAAAAAAIAAAAAAEACAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAgAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAIAAAAAAAAA0AAAAAAwASAAAAAAIADQAAAAABAA0AAAAAAgANAAAAAAEAGgAAAAABABoAAAAAAAAaAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAIAJAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMAEgAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAMADQAAAAABAAgAAAAAAQAIAAAAAAAACAAAAAABAAgAAAAAAQAAAAAAAAAADQAAAAAAABIAAAAAAQANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAADAAAAAAAAAAAnAAAAAAAAJwAAAAAAACcAAAAAAAAnAAAAAAAAAAAAAAAAACYAAAAAAAAmAAAAAAAALgAAAAAAAC4AAAAAAAAuAAAAAAAAFwAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAgAAAAAAAAAAJwAAAAAAACcAAAAAAAAnAAAAAAAAJwAAAAAAAAAAAAAAAAAmAAAAAAAAJgAAAAAAAA== + tiles: AAAAAAAAAA0AAAAAAwANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAgAPAAAAAAEADwAAAAABAA8AAAAAAAAIAAAAAAIACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAgAPAAAAAAIACAAAAAACAAgAAAAAAQAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAADAA8AAAAAAgAPAAAAAAEADwAAAAADAAgAAAAAAwAIAAAAAAEAGQAAAAAFAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAgAIAAAAAAEACAAAAAAAAAgAAAAAAQAIAAAAAAIACAAAAAACABkAAAAAAwAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAEACAAAAAABAAgAAAAAAAAIAAAAAAIACAAAAAABAAgAAAAAAQAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACAAgAAAAAAAAIAAAAAAMACAAAAAACAAgAAAAAAwAIAAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAIAAAAAABAA0AAAAAAgASAAAAAAEADQAAAAABAA0AAAAAAAANAAAAAAIAGgAAAAABABoAAAAAAQAaAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAIAJAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMAEgAAAAABAA0AAAAAAgANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAACAAgAAAAAAQAIAAAAAAIACAAAAAABAAgAAAAAAwAAAAAAAAAADQAAAAACABIAAAAAAAANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAABAAAAAAAAAAAnAAAAAAAAJwAAAAAAACcAAAAAAAAnAAAAAAAAAAAAAAAAACYAAAAAAAAmAAAAAAAALgAAAAADAC4AAAAAAwAuAAAAAAAAFwAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAAAAAAAAAAAAJwAAAAAAACcAAAAAAAAnAAAAAAAAJwAAAAAAAAAAAAAAAAAmAAAAAAAAJgAAAAAAAA== version: 7 -4,-3: ind: -4,-3 - tiles: AgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABABkAAAAABAAIAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAAAgAAAAAAQAAAAAAAAAAGQAAAAABAAAAAAAAAAAZAAAAAAMAGQAAAAAGAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAADAAgAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAABkAAAAAAQAIAAAAAAEACAAAAAAAABkAAAAAAwAZAAAAAAAAGQAAAAAFAAgAAAAAAgAZAAAAAAAACAAAAAABABkAAAAAAAAIAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAIAAAAAAMAGQAAAAAGAAgAAAAAAQAZAAAAAAMACAAAAAAAAAgAAAAAAwAIAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAGQAAAAACAAgAAAAAAgAZAAAAAAUACAAAAAADAAgAAAAAAQAIAAAAAAIAGQAAAAAEAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAABkAAAAAAQAZAAAAAAIACAAAAAADABkAAAAAAQAZAAAAAAAACAAAAAADAAgAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAMACAAAAAACAAgAAAAAAwAZAAAAAAQAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAHgAAAAACAB4AAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAABgAIAAAAAAMAGQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAACAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAZAAAAAAIAHgAAAAABAAAAAAAAAAAeAAAAAAEAAAAAAAAAAAAAAAAAAAAeAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAACAAAAAABABkAAAAAAQAZAAAAAAEAAAAAAAAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAALgAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAABAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABABkAAAAABQAIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAMAAAAAAAAAAAgAAAAAAQAAAAAAAAAAGQAAAAABAAAAAAAAAAAZAAAAAAQAGQAAAAADAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACAAgAAAAAAwACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAABkAAAAAAwAIAAAAAAAACAAAAAADABkAAAAAAAAZAAAAAAMAGQAAAAADAAgAAAAAAQAZAAAAAAUACAAAAAAAABkAAAAAAwAIAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAIAAAAAAAAGQAAAAAGAAgAAAAAAgAZAAAAAAMACAAAAAACAAgAAAAAAgAIAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAGQAAAAAFAAgAAAAAAwAZAAAAAAEACAAAAAADAAgAAAAAAQAIAAAAAAMAGQAAAAAGAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAABkAAAAAAAAZAAAAAAUACAAAAAACABkAAAAAAgAZAAAAAAUACAAAAAABAAgAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAMACAAAAAACAAgAAAAAAgAZAAAAAAQAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAHgAAAAACAB4AAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAAAAIAAAAAAAAGQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAABAAAAAAAAAAAIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAZAAAAAAUAHgAAAAAAAAAAAAAAAAAeAAAAAAEAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAACAAAAAAAABkAAAAAAAAZAAAAAAIAAAAAAAAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAuAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAALgAAAAAAAA== version: 7 3,2: ind: 3,2 - tiles: EwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAANAAAAAAAADQAAAAABAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAADQAAAAABAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAgANAAAAAAMAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAgAAAAAAAAAAFAAAAAACABQAAAAAAQAUAAAAAAMAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAEAAAAAAAAAABQAAAAAAwAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAADAAAAAAAAAAAUAAAAAAEAFAAAAAADABQAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAA== + tiles: EwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAXAAAAAAAAFwAAAAAAABcAAAAAAAANAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAFwAAAAAAABcAAAAAAAAXAAAAAAAADQAAAAACAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAABAA0AAAAAAQANAAAAAAIADQAAAAABAA0AAAAAAgANAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAABAAAAAAAAAAAAAAAAAAAAFAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAAAAAAAAAAAAFAAAAAADABQAAAAAAQAUAAAAAAIAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAEAAAAAAAAAABQAAAAAAgAUAAAAAAIAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAACAAAAAAAAAAAUAAAAAAAAFAAAAAABABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAA== version: 7 2,2: ind: 2,2 - tiles: DQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAQANAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAAADQAAAAADABEAAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAQANAAAAAAAADQAAAAACAA0AAAAAAwAGAAAAAAEABgAAAAACAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAIADQAAAAACAA0AAAAAAgANAAAAAAIADQAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAIAEQAAAAACAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAQAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAIACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAABEAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAEADQAAAAADAA0AAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAMADQAAAAABAA0AAAAAAAARAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAEAEQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAQAAAAAAAAAAAAAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAAAAAAAAAAAABEAAAAAAQANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAMADQAAAAAAAA0AAAAAAAAqAAAAAAIADQAAAAABAB8AAAAAAwAfAAAAAAMAHwAAAAABAA0AAAAAAwAqAAAAAAEADQAAAAAAAAAAAAAAAAARAAAAAAMADQAAAAADAAAAAAAAAAAbAAAAAAEADQAAAAADAA0AAAAAAwAAAAAAAAAADQAAAAAAAA0AAAAAAwAfAAAAAAEAHwAAAAAAAB8AAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAAAAAAAAAAAAEQAAAAADAA0AAAAAAgAeAAAAAAAAHgAAAAAAAA0AAAAAAwANAAAAAAAAAAAAAAAAACoAAAAAAgANAAAAAAIAHwAAAAACAB8AAAAAAwAfAAAAAAEADQAAAAACACoAAAAAAwANAAAAAAIAAAAAAAAAAA0AAAAAAgAAAAAAAAAAHgAAAAACAAAAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAACAB8AAAAAAgAfAAAAAAMAHwAAAAABAA0AAAAAAQANAAAAAAAADQAAAAAAAAAAAAAAAAANAAAAAAEAGwAAAAABAAAAAAAAAAAbAAAAAAMADQAAAAADAA0AAAAAAgAAAAAAAAAAKgAAAAABAA0AAAAAAAAfAAAAAAIAHwAAAAAAAB8AAAAAAQANAAAAAAAAKgAAAAACAA0AAAAAAgAAAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAQANAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIAHwAAAAACAB8AAAAAAQAfAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAEAAAAAAAAAAA0AAAAAAAANAAAAAAMAIAAAAAADACAAAAAAAAAgAAAAAAIAIAAAAAADAA0AAAAAAgAqAAAAAAEADQAAAAAAAB8AAAAAAwAfAAAAAAIAHwAAAAADAA0AAAAAAAAqAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAACAAAAAAAAAAAAAAAAAAAACAAAAAABAAgAAAAAAwAIAAAAAAIACAAAAAABAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: DQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAACAA0AAAAAAwANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAACABEAAAAAAwANAAAAAAMADQAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAAAGAAAAAAEABgAAAAAAAAYAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAQANAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAEAEQAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAABAA0AAAAAAgAJAAAAAAEACQAAAAADAAkAAAAAAgAJAAAAAAIADQAAAAACAA0AAAAAAQANAAAAAAMACQAAAAABAAkAAAAAAwAJAAAAAAEACQAAAAAAABEAAAAAAwANAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAQARAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAMADQAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAAANAAAAAAIAEQAAAAABAA0AAAAAAwANAAAAAAEADQAAAAADAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAEAAAAAAAAAABEAAAAAAQANAAAAAAIADQAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAABAA0AAAAAAQAqAAAAAAIADQAAAAABAB8AAAAAAQAfAAAAAAEAHwAAAAACAA0AAAAAAwAqAAAAAAMADQAAAAABAAAAAAAAAAARAAAAAAIADQAAAAACAAAAAAAAAAAbAAAAAAIADQAAAAADAA0AAAAAAQAAAAAAAAAADQAAAAACAA0AAAAAAAAfAAAAAAIAHwAAAAACAB8AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAwAAAAAAAAAAEQAAAAACAA0AAAAAAAAAAAAAAAAAHgAAAAACAA0AAAAAAgANAAAAAAMAAAAAAAAAACoAAAAAAgANAAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAMADQAAAAADACoAAAAAAAANAAAAAAIAAAAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAACAB8AAAAAAwAfAAAAAAIAHwAAAAABAA0AAAAAAAANAAAAAAAADQAAAAABAAAAAAAAAAANAAAAAAIAGwAAAAAEAAAAAAAAAAAbAAAAAAQADQAAAAACAA0AAAAAAwAAAAAAAAAAKgAAAAACAA0AAAAAAQAfAAAAAAEAHwAAAAABAB8AAAAAAAANAAAAAAAAKgAAAAADAA0AAAAAAgAAAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAEAAAAAAAAAAA0AAAAAAAANAAAAAAAAHwAAAAADAB8AAAAAAwAfAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAIAAAAAAAAAAA0AAAAAAgANAAAAAAAAIAAAAAACACAAAAAAAgAgAAAAAAAAIAAAAAAAAA0AAAAAAAAqAAAAAAMADQAAAAACAB8AAAAAAQAfAAAAAAIAHwAAAAADAA0AAAAAAAAqAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAACAAAAAACAAgAAAAAAAAIAAAAAAIACAAAAAADAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 2,3: ind: 2,3 - tiles: CAAAAAABAAgAAAAAAwAIAAAAAAIACAAAAAADAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAgAIAAAAAAIACAAAAAADAAgAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + tiles: CAAAAAACAAgAAAAAAwAIAAAAAAMACAAAAAADAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAQAIAAAAAAAACAAAAAACAAgAAAAAAQAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== version: 7 3,-1: ind: 3,-1 - tiles: DQAAAAACAA0AAAAAAgAAAAAAAAAAIQAAAAAAACEAAAAAAwAhAAAAAAAAIQAAAAADACEAAAAAAQAhAAAAAAEAIQAAAAADACEAAAAAAQAhAAAAAAEAIQAAAAADACEAAAAAAgAhAAAAAAEAIQAAAAADAA0AAAAAAwANAAAAAAAADQAAAAABACEAAAAAAAAhAAAAAAEAIQAAAAACACEAAAAAAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAAAAAAAAAAAhAAAAAAEAIQAAAAADACEAAAAAAAAhAAAAAAIAIQAAAAADAA0AAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAgAAAAAAAAAAIQAAAAAAACEAAAAAAgAhAAAAAAAAIQAAAAACACEAAAAAAwAAAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIAAAAAAAAAACEAAAAAAQAhAAAAAAAAIQAAAAABACEAAAAAAQAhAAAAAAMAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAADAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAAACEAAAAAAQAhAAAAAAIAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAIQAAAAADAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAEwAAAAAAACEAAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAEwAAAAAAABMAAAAAAAAhAAAAAAEADQAAAAADAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAA== + tiles: DQAAAAAAAA0AAAAAAQAAAAAAAAAAIQAAAAACACEAAAAAAgAhAAAAAAIAIQAAAAABACEAAAAAAQAhAAAAAAIAIQAAAAAAACEAAAAAAgAhAAAAAAAAIQAAAAABACEAAAAAAAAhAAAAAAEAIQAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAADACEAAAAAAwAhAAAAAAMAIQAAAAADACEAAAAAAwAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAAAAAAAAAAAAAAhAAAAAAEAIQAAAAABACEAAAAAAgAhAAAAAAEAIQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAwAAAAAAAAAAIQAAAAAAACEAAAAAAwAhAAAAAAMAIQAAAAADACEAAAAAAwAAAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAIADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAAAAAAAAAAACEAAAAAAAAhAAAAAAMAIQAAAAACACEAAAAAAgAhAAAAAAMAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAACACEAAAAAAQAhAAAAAAEAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAEwAAAAAAACEAAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAwANAAAAAAMADQAAAAACAA0AAAAAAwANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAIAAAAAAAAAAAAAAAAAAAAkAAAAAAAAEwAAAAAAABMAAAAAAAAhAAAAAAEADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAACAA0AAAAAAwANAAAAAAEADQAAAAACAAAAAAAAAAAAAAAAAAAAJAAAAAAAAA== version: 7 3,0: ind: 3,0 - tiles: EwAAAAAAABMAAAAAAAAhAAAAAAEADQAAAAACAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEAAAAAAwAhAAAAAAEAIQAAAAADAA0AAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAAACEAAAAAAAAhAAAAAAEAIQAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAABACEAAAAAAwAhAAAAAAIAIQAAAAACACEAAAAAAgAhAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAJAAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAQAAAAAAAAAAAAAAAAAAACEAAAAAAQATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAIQAAAAABAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAwANAAAAAAIAAAAAAAAAAAAAAAAAAAAhAAAAAAIAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAACACEAAAAAAAAAAAAAAAAAIQAAAAAAACEAAAAAAQAhAAAAAAMAIQAAAAACACEAAAAAAAAhAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAwANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAAAAAAAAAAAAAAhAAAAAAIAIQAAAAABACEAAAAAAwAhAAAAAAIAIQAAAAAAACEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAACACEAAAAAAwATAAAAAAAAIQAAAAABABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAhAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAACAA0AAAAAAwAhAAAAAAIAAAAAAAAAACEAAAAAAQATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAIQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAMAIQAAAAADAAAAAAAAAAAhAAAAAAIAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAACEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAACACEAAAAAAQAhAAAAAAEAIQAAAAADACEAAAAAAQAAAAAAAAAAIQAAAAADACEAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAAAAIAEwAAAAAAABMAAAAAAAATAAAAAAAAIQAAAAADAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAAAAIAIQAAAAACACEAAAAAAgAhAAAAAAEAIQAAAAADACEAAAAAAgAAAAAAAAAAIQAAAAAAACEAAAAAAQAhAAAAAAAAIQAAAAABACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAACEAAAAAAQAhAAAAAAEAAAAAAAAAAAAAAAAAAAAIAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: EwAAAAAAABMAAAAAAAAhAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEAAAAAAQAhAAAAAAEAIQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAEADQAAAAADAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAADACEAAAAAAQAhAAAAAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAAAACEAAAAAAQAhAAAAAAAAIQAAAAAAACEAAAAAAgAhAAAAAAEAAAAAAAAAACQAAAAAAAAAAAAAAAAAJAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAwAAAAAAAAAAAAAAAAAAACEAAAAAAQATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAIQAAAAACAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAQANAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAACEAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAACACEAAAAAAAAAAAAAAAAAIQAAAAAAACEAAAAAAgAhAAAAAAAAIQAAAAACACEAAAAAAQAhAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAgANAAAAAAIADQAAAAAAAAAAAAAAAAAhAAAAAAIAIQAAAAADACEAAAAAAQAhAAAAAAEAIQAAAAACACEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAAADQAAAAADACEAAAAAAgATAAAAAAAAIQAAAAACABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAAAhAAAAAAAAAAAAAAAAACEAAAAAAQATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAAAIQAAAAACAAAAAAAAAAAhAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAACEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIQAAAAACACEAAAAAAQAhAAAAAAMAIQAAAAACACEAAAAAAAAAAAAAAAAAIQAAAAACACEAAAAAAQATAAAAAAAAEwAAAAAAABMAAAAAAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAIQAAAAACAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAAAAMAIQAAAAADACEAAAAAAgAhAAAAAAMAIQAAAAAAACEAAAAAAAAAAAAAAAAAIQAAAAADACEAAAAAAQAhAAAAAAIAIQAAAAAAACEAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAACEAAAAAAAAhAAAAAAMAAAAAAAAAAAAAAAAAAAAIAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -4,3: ind: -4,3 @@ -348,35 +349,35 @@ entities: version: 7 -5,-1: ind: -5,-1 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAADAAYAAAAAAgAGAAAAAAIAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAgAGAAAAAAEABgAAAAADAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAGAAAAAAIABgAAAAAAAAYAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAACAAYAAAAAAAAGAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAgAGAAAAAAMABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAABgAAAAACAAYAAAAAAQAAAAAAAAAABgAAAAADAAYAAAAAAgAGAAAAAAIABgAAAAACAAYAAAAAAQAGAAAAAAEABgAAAAAAAAYAAAAAAAAGAAAAAAEABgAAAAAAAAYAAAAAAQAGAAAAAAMABgAAAAABAAYAAAAAAAAGAAAAAAAABgAAAAADAAYAAAAAAQAGAAAAAAAABgAAAAACAAYAAAAAAgAGAAAAAAIABgAAAAACAAYAAAAAAQAGAAAAAAIABgAAAAADAAYAAAAAAgAGAAAAAAAABgAAAAACAAYAAAAAAwAGAAAAAAIABgAAAAADAAYAAAAAAQAGAAAAAAEABgAAAAACAAYAAAAAAAAGAAAAAAAABgAAAAABAAYAAAAAAgAGAAAAAAAABgAAAAACAAYAAAAAAgAGAAAAAAAABgAAAAABAAYAAAAAAAAGAAAAAAMABgAAAAABAAYAAAAAAgAGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAABAAgAAAAAAgAZAAAAAAAACAAAAAACAAAAAAAAAAAIAAAAAAAACAAAAAADAAgAAAAAAAAZAAAAAAMACAAAAAABAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAACAAAAAAAABkAAAAAAAAZAAAAAAUACAAAAAABAAgAAAAAAAAAAAAAAAAACAAAAAABABkAAAAAAwAIAAAAAAIACAAAAAADAAgAAAAAAwAAAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAgAAAAAAAAZAAAAAAAACAAAAAABAAgAAAAAAAAIAAAAAAIAAAAAAAAAAAgAAAAAAwAIAAAAAAEACAAAAAAAAAgAAAAAAwAIAAAAAAEAAAAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACABkAAAAAAQAIAAAAAAEACAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAgAAAAAAQAIAAAAAAMACAAAAAAAABkAAAAAAgAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAABABkAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAgAGAAAAAAAABgAAAAADAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAGAAAAAAEABgAAAAACAAYAAAAAAQAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAACAAYAAAAAAgAGAAAAAAEAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAgAGAAAAAAMABgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAEABgAAAAABAAYAAAAAAwAAAAAAAAAABgAAAAABAAYAAAAAAQAGAAAAAAMABgAAAAADAAYAAAAAAwAGAAAAAAEABgAAAAADAAYAAAAAAgAGAAAAAAMABgAAAAAAAAYAAAAAAAAGAAAAAAEABgAAAAADAAYAAAAAAQAGAAAAAAEABgAAAAAAAAYAAAAAAAAGAAAAAAEABgAAAAADAAYAAAAAAQAGAAAAAAAABgAAAAAAAAYAAAAAAgAGAAAAAAIABgAAAAACAAYAAAAAAQAGAAAAAAIABgAAAAADAAYAAAAAAAAGAAAAAAEABgAAAAABAAYAAAAAAQAGAAAAAAMABgAAAAAAAAYAAAAAAAAGAAAAAAMABgAAAAAAAAYAAAAAAgAGAAAAAAIABgAAAAABAAYAAAAAAQAGAAAAAAMABgAAAAADAAYAAAAAAgAGAAAAAAAABgAAAAADAAYAAAAAAAAGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAADAAgAAAAAAAAZAAAAAAYACAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAABAAgAAAAAAwAZAAAAAAMACAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAACAAAAAADABkAAAAAAwAZAAAAAAAACAAAAAADAAgAAAAAAgAAAAAAAAAACAAAAAACABkAAAAABAAIAAAAAAIACAAAAAABAAgAAAAAAgAAAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAgAAAAAAgAZAAAAAAMACAAAAAACAAgAAAAAAAAIAAAAAAEAAAAAAAAAAAgAAAAAAwAIAAAAAAMACAAAAAABAAgAAAAAAgAIAAAAAAMAAAAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACABkAAAAAAwAIAAAAAAMACAAAAAACAAAAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAADABkAAAAAAQAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAAIACAAAAAACABkAAAAAAQAAAAAAAAAAAAAAAAAAAA== version: 7 -1,-5: ind: -1,-5 - tiles: AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAASAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAEgAAAAADAA0AAAAAAwANAAAAAAIADQAAAAACAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAASAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAMAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAEgAAAAADAA0AAAAAAwANAAAAAAEADQAAAAACAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAMADQAAAAAAAA0AAAAAAAANAAAAAAIAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACAAAAAAAABkAAAAABAAAAAAAAAAAEgAAAAABAA0AAAAAAgANAAAAAAEADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAwAgAAAAAAMAIAAAAAACACAAAAAAAAAgAAAAAAMAIAAAAAABACAAAAAAAAAgAAAAAAEAIAAAAAACACAAAAAAAwAZAAAAAAIACAAAAAACAAAAAAAAAAASAAAAAAEADQAAAAABAA0AAAAAAQANAAAAAAIADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAAACAAAAAACAAAAAAAAAAAAAAAAAAAAEgAAAAADABIAAAAAAAASAAAAAAMAEgAAAAACABIAAAAAAwASAAAAAAEAEgAAAAAAABIAAAAAAwASAAAAAAIAEgAAAAADABIAAAAAAwASAAAAAAIAEgAAAAACAA== + tiles: AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAASAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAMAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAEgAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAACAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAQAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAASAAAAAAEADQAAAAAAAA0AAAAAAQANAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAEgAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAADAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAIADQAAAAAAAA0AAAAAAAANAAAAAAMAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACAAAAAAAABkAAAAAAAAAAAAAAAAAEgAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAAAAgANAAAAAAIADQAAAAACAA0AAAAAAgAgAAAAAAEAIAAAAAADACAAAAAAAgAgAAAAAAMAIAAAAAABACAAAAAAAQAgAAAAAAMAIAAAAAACACAAAAAAAAAZAAAAAAMACAAAAAADAAAAAAAAAAASAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAMACAAAAAABAAAAAAAAAAAAAAAAAAAAEgAAAAACABIAAAAAAwASAAAAAAMAEgAAAAADABIAAAAAAAASAAAAAAIAEgAAAAAAABIAAAAAAAASAAAAAAMAEgAAAAABABIAAAAAAgASAAAAAAIAEgAAAAACAA== version: 7 0,-5: ind: 0,-5 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAMAEgAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAABABIAAAAAAgAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAwASAAAAAAEAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAIAEgAAAAACAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAACABIAAAAAAgAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAgASAAAAAAEAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAEgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAACABIAAAAAAAAAAAAAAAAAAQAAAAAAACAAAAAAAAAgAAAAAAEAIAAAAAADACAAAAAAAQAgAAAAAAEAIAAAAAADACAAAAAAAwAgAAAAAAEAIAAAAAABACAAAAAAAgANAAAAAAAADQAAAAACAA0AAAAAAQASAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAMAEgAAAAACAAAAAAAAAAAAAAAAAAAAEgAAAAABABIAAAAAAQASAAAAAAAAEgAAAAACABIAAAAAAwASAAAAAAEAEgAAAAACABIAAAAAAQASAAAAAAMAEgAAAAAAABIAAAAAAwASAAAAAAMAEgAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAEAEgAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAAAABIAAAAAAQAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAQASAAAAAAMAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAIAEgAAAAADAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAABABIAAAAAAgAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAAASAAAAAAIAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAEAEgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAAAABIAAAAAAgAAAAAAAAAAAQAAAAAAACAAAAAAAAAgAAAAAAIAIAAAAAAAACAAAAAAAwAgAAAAAAMAIAAAAAAAACAAAAAAAQAgAAAAAAIAIAAAAAACACAAAAAAAQANAAAAAAAADQAAAAAAAA0AAAAAAQASAAAAAAIAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAwANAAAAAAEADQAAAAACAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAQANAAAAAAEAEgAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAABABIAAAAAAQASAAAAAAIAEgAAAAABABIAAAAAAAASAAAAAAEAEgAAAAAAABIAAAAAAQASAAAAAAIAEgAAAAADABIAAAAAAgASAAAAAAAAEgAAAAAAABIAAAAAAQAAAAAAAAAAAAAAAAAAAA== version: 7 -5,1: ind: -5,1 - tiles: AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAADAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAADAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAABAA0AAAAAAgAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAIAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAEADQAAAAABAA0AAAAAAwACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAAANAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAIADQAAAAADAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAADAA0AAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAwANAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAA== + tiles: AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAEAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAACAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAwAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAIAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAgAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAQANAAAAAAMAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAwANAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAACAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAwACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAIAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAA== version: 7 -5,0: ind: -5,0 - tiles: AQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAZAAAAAAEACAAAAAABAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAACAAAAAABABkAAAAAAwAIAAAAAAMAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAgAAAAAAQAIAAAAAAAAGQAAAAAGAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAAAFAAgAAAAAAwAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAAADQAAAAADAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAgAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAEADQAAAAADAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAQAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAMAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAACAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAQAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAAAAAAAAAAAAA== + tiles: AQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAZAAAAAAUACAAAAAACAAgAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAACAAAAAACABkAAAAABgAIAAAAAAIAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAgAAAAAAQAIAAAAAAAAGQAAAAAGAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAAABAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAADAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAACAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAABAA0AAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAgANAAAAAAIAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAwAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAwAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAEAAAAAAAAAAA== version: 7 -5,-2: ind: -5,-2 - tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAMABgAAAAABAAYAAAAAAgAGAAAAAAEABgAAAAACAAYAAAAAAQAGAAAAAAMABgAAAAAAAAYAAAAAAAAGAAAAAAEABgAAAAAAAAYAAAAAAQAGAAAAAAEABgAAAAABAAYAAAAAAAAAAAAAAAAABgAAAAAAAAYAAAAAAwAGAAAAAAEABgAAAAABAAYAAAAAAQAGAAAAAAMABgAAAAAAAAYAAAAAAgAGAAAAAAIABgAAAAABAAYAAAAAAgAGAAAAAAIABgAAAAACAAYAAAAAAQAGAAAAAAAAAAAAAAAAAAYAAAAAAgAGAAAAAAIABgAAAAABAAYAAAAAAQAGAAAAAAEABgAAAAABAAYAAAAAAAAGAAAAAAEABgAAAAACAAYAAAAAAgAGAAAAAAAABgAAAAADAAYAAAAAAgAGAAAAAAAABgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAMABgAAAAADAAYAAAAAAgAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAACAAYAAAAAAgAGAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAgAGAAAAAAMABgAAAAACAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAGAAAAAAIABgAAAAADAAYAAAAAAQAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAACAAYAAAAAAAAGAAAAAAIAAAAAAAAAAA== + tiles: AQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAEABgAAAAAAAAYAAAAAAAAGAAAAAAEABgAAAAACAAYAAAAAAQAGAAAAAAAABgAAAAADAAYAAAAAAgAGAAAAAAMABgAAAAABAAYAAAAAAAAGAAAAAAEABgAAAAADAAYAAAAAAgAAAAAAAAAABgAAAAABAAYAAAAAAgAGAAAAAAIABgAAAAABAAYAAAAAAQAGAAAAAAIABgAAAAAAAAYAAAAAAwAGAAAAAAIABgAAAAABAAYAAAAAAAAGAAAAAAIABgAAAAACAAYAAAAAAgAGAAAAAAAAAAAAAAAAAAYAAAAAAAAGAAAAAAMABgAAAAAAAAYAAAAAAgAGAAAAAAIABgAAAAADAAYAAAAAAQAGAAAAAAAABgAAAAAAAAYAAAAAAgAGAAAAAAEABgAAAAACAAYAAAAAAQAGAAAAAAMABgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAABgAAAAABAAYAAAAAAQAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAABAAYAAAAAAwAGAAAAAAMAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAAAGAAAAAAMABgAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAGAAAAAAMABgAAAAADAAYAAAAAAQAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAABAAYAAAAAAQAGAAAAAAEAAAAAAAAAAA== version: 7 0,4: ind: 0,4 - tiles: BgAAAAACAAYAAAAAAQAGAAAAAAMAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAYAAAAAAwAGAAAAAAAABgAAAAADAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAAAGAAAAAAEABgAAAAADAAYAAAAAAwAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAYAAAAAAgAGAAAAAAMABgAAAAAAAAYAAAAAAAAGAAAAAAMAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAADAAYAAAAAAwAGAAAAAAAABgAAAAADAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: BgAAAAACAAYAAAAAAgAGAAAAAAEAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAYAAAAAAwAGAAAAAAEABgAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAYAAAAAAgAGAAAAAAAABgAAAAADAAYAAAAAAgAGAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAABAAYAAAAAAAAGAAAAAAIABgAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -1,4: ind: -1,4 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAGAAAAAAEABgAAAAAAAAYAAAAAAgAGAAAAAAEABgAAAAAAAAcAAAAAAAAGAAAAAAIABgAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAACAAYAAAAAAgAGAAAAAAIABgAAAAAAAAYAAAAAAAAHAAAAAAAABgAAAAACAAYAAAAAAwACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAQAGAAAAAAMABwAAAAAAAAYAAAAAAAAGAAAAAAIAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAMABgAAAAABAAcAAAAAAAAGAAAAAAMABgAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAADAAYAAAAAAQAHAAAAAAAABgAAAAADAAYAAAAAAwACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAwAGAAAAAAEABwAAAAAAAAYAAAAAAAAGAAAAAAEAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAABgAAAAAAAAYAAAAAAgAGAAAAAAEABgAAAAABAAAAAAAAAAAGAAAAAAEABgAAAAAAAAcAAAAAAAAGAAAAAAMABgAAAAADAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAQAGAAAAAAIABgAAAAADAAYAAAAAAwAGAAAAAAAABgAAAAABAAYAAAAAAQAHAAAAAAAABgAAAAADAAYAAAAAAgACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAGAAAAAAEABgAAAAAAAAYAAAAAAQAGAAAAAAEAAAAAAAAAAAYAAAAAAwAGAAAAAAMABwAAAAAAAAYAAAAAAAAGAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAGAAAAAAEABgAAAAADAAcAAAAAAAAGAAAAAAMABgAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAABwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAGAAAAAAAABgAAAAABAAYAAAAAAgAGAAAAAAIABgAAAAABAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAGAAAAAAEABgAAAAADAAYAAAAAAQAGAAAAAAIABgAAAAAAAAcAAAAAAAAGAAAAAAIABgAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAADAAYAAAAAAAAGAAAAAAEABgAAAAAAAAYAAAAAAwAHAAAAAAAABgAAAAADAAYAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAQAAAAAAAAAAAAAAAAAAAAYAAAAAAAAGAAAAAAAABwAAAAAAAAYAAAAAAgAGAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAMABgAAAAACAAcAAAAAAAAGAAAAAAEABgAAAAADAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAABAAYAAAAAAAAHAAAAAAAABgAAAAACAAYAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAGAAAAAAMABwAAAAAAAAYAAAAAAgAGAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAGAAAAAAIABgAAAAABAAcAAAAAAAAGAAAAAAMABgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAwAGAAAAAAEABgAAAAABAAYAAAAAAgAGAAAAAAIABgAAAAACAAYAAAAAAAAHAAAAAAAABgAAAAACAAYAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAGAAAAAAEABgAAAAADAAYAAAAAAgAGAAAAAAAAAAAAAAAAAAYAAAAAAQAGAAAAAAEABwAAAAAAAAYAAAAAAQAGAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAGAAAAAAIABgAAAAACAAcAAAAAAAAGAAAAAAAABgAAAAABAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAABwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAGAAAAAAAABgAAAAABAAYAAAAAAwAGAAAAAAMABgAAAAABAA== version: 7 0,5: ind: 0,5 @@ -384,15 +385,15 @@ entities: version: 7 -1,5: ind: -1,5 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAEABgAAAAABAAYAAAAAAAAGAAAAAAEABgAAAAABAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAGAAAAAAEABgAAAAACAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAMABgAAAAACAAYAAAAAAQAGAAAAAAEABgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAwAGAAAAAAAABgAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -6,-2: ind: -6,-2 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAABgAAAAABAAYAAAAAAAAAAAAAAAAABgAAAAADAAYAAAAAAAAGAAAAAAIAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAYAAAAAAgAGAAAAAAIABgAAAAAAAAYAAAAAAwAGAAAAAAIABgAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAGAAAAAAMABgAAAAADAAAAAAAAAAAGAAAAAAIABgAAAAABAAYAAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAABgAAAAABAAYAAAAAAwAAAAAAAAAABgAAAAADAAYAAAAAAwAGAAAAAAIAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAYAAAAAAQAGAAAAAAAABgAAAAABAAYAAAAAAAAGAAAAAAMABgAAAAADAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAGAAAAAAIABgAAAAADAAAAAAAAAAAGAAAAAAIABgAAAAADAAYAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -6,-1: ind: -6,-1 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAYAAAAAAwAGAAAAAAMAAAAAAAAAAAYAAAAAAwAGAAAAAAMABgAAAAABAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAwAGAAAAAAAABgAAAAAAAAYAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAABgAAAAACAAYAAAAAAgAAAAAAAAAABgAAAAABAAYAAAAAAAAGAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAYAAAAAAQAGAAAAAAEAAAAAAAAAAAYAAAAAAgAGAAAAAAMABgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAGAAAAAAIABgAAAAAAAAYAAAAAAQAGAAAAAAAABgAAAAAAAAYAAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAABgAAAAAAAAYAAAAAAgAAAAAAAAAABgAAAAADAAYAAAAAAgAGAAAAAAIAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -5,2: ind: -5,2 @@ -400,11 +401,11 @@ entities: version: 7 -1,-6: ind: -1,-6 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAQANAAAAAAMADQAAAAABABIAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAASAAAAAAIADQAAAAACAA0AAAAAAgASAAAAAAMAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAEgAAAAABAA0AAAAAAAANAAAAAAMAEgAAAAACAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAQANAAAAAAIADQAAAAADABIAAAAAAQAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAASAAAAAAMADQAAAAADAA0AAAAAAQASAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAEgAAAAABAA0AAAAAAwANAAAAAAIAEgAAAAABAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 0,-6: ind: 0,-6 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAIAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAASAAAAAAMADQAAAAABAA0AAAAAAwASAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAEgAAAAACAA0AAAAAAQANAAAAAAIAEgAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAwANAAAAAAIADQAAAAABABIAAAAAAAAAAAAAAAAAAQAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAQANAAAAAAIAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMADQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAASAAAAAAMADQAAAAADAA0AAAAAAAASAAAAAAMAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAEgAAAAADAA0AAAAAAAANAAAAAAAAEgAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAgANAAAAAAIADQAAAAADABIAAAAAAAAAAAAAAAAAAQAAAAAAAA== version: 7 3,3: ind: 3,3 @@ -412,15 +413,15 @@ entities: version: 7 1,-5: ind: 1,-5 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAHgAAAAACAAAAAAAAAAAeAAAAAAEAHgAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAHgAAAAABAAAAAAAAAAAeAAAAAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -2,-5: ind: -2,-5 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAALAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAIAHgAAAAACAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACAAAAAAAAAAAZAAAAAAIAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAgAeAAAAAAIADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABAAgAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAABAAZAAAAAAMACAAAAAAAAAgAAAAAAgAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACABkAAAAAAQAAAAAAAAAAGQAAAAAGAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAALAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAIAHgAAAAACAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABAAAAAAAAAAAZAAAAAAEAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAAAAgAeAAAAAAIADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABAAgAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAABQAZAAAAAAQACAAAAAABAAgAAAAAAwAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAADABkAAAAAAwAAAAAAAAAAGQAAAAAAAA== version: 7 4,2: ind: 4,2 - tiles: EAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAANAAAAAAEAAAAAAAAAAA0AAAAAAQANAAAAAAIAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABAAAAAAAAAeAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAeAAAAAAEAHgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAB4AAAAAAQAeAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAeAAAAAAAAHgAAAAACAB4AAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAB4AAAAAAgABAAAAAAAAHgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: EAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAANAAAAAAEAAAAAAAAAAA0AAAAAAAANAAAAAAMAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAABAAAAAAAAAeAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAeAAAAAAIAHgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAB4AAAAAAgAeAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAgAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAB4AAAAAAAABAAAAAAAAHgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 5,0: ind: 5,0 @@ -472,7 +473,15 @@ entities: version: 7 -4,-4: ind: -4,-4 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAACAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAADAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAANAAAAAAMAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + version: 7 + 3,-4: + ind: 3,-4 + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + version: 7 + 4,-3: + ind: 4,-3 + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 - type: Broadphase - type: Physics @@ -683,25 +692,6 @@ entities: 2001: -53,18 2002: -54,18 2003: -52,19 - 2121: 44,-47 - 2168: 42,-45 - 2169: 41,-45 - 2170: 43,-45 - 2171: 43,-44 - 2172: 41,-44 - 2173: 41,-43 - 2174: 43,-43 - 2175: 43,-42 - 2176: 42,-42 - 2177: 41,-42 - 2178: 42,-43 - 2179: 42,-44 - 2199: 33,-45 - 2200: 34,-45 - 2201: 35,-45 - 2202: 36,-45 - 2203: 37,-45 - 2204: 38,-45 2305: 54,-18 2309: 53,-18 2382: 47,26 @@ -774,6 +764,23 @@ entities: 4697: -45,33 4698: -45,32 4699: -44,32 + 4766: 53,-43 + 4767: 54,-43 + 4768: 54,-43 + 4769: 55,-43 + 4770: 56,-43 + 4771: 56,-42 + 4772: 55,-42 + 4773: 53,-42 + 4774: 53,-41 + 4775: 54,-41 + 4776: 54,-42 + 4777: 55,-41 + 4778: 56,-41 + 4973: 48,-42 + 4974: 48,-41 + 4975: 48,-40 + 4976: 48,-39 - node: cleanable: True color: '#FFFFFFFF' @@ -945,7 +952,6 @@ entities: color: '#52B4E996' id: BrickCornerOverlayNE decals: - 2004: 17,-47 2877: 6.467402,-45.4584 2878: 7,-46 - node: @@ -967,7 +973,6 @@ entities: color: '#52B4E996' id: BrickCornerOverlayNW decals: - 2005: 12,-47 2879: 3,-46 - node: color: '#79150096' @@ -982,11 +987,6 @@ entities: 4416: 13,5 4653: -20,11 4655: -13,21 - - node: - color: '#52B4E996' - id: BrickCornerOverlaySE - decals: - 2008: 17,-49 - node: color: '#79150096' id: BrickCornerOverlaySE @@ -999,11 +999,6 @@ entities: 4386: 5,6 4389: 10,3 4417: 23,4 - - node: - color: '#52B4E996' - id: BrickCornerOverlaySW - decals: - 2006: 12,-49 - node: color: '#79150096' id: BrickCornerOverlaySW @@ -1064,17 +1059,10 @@ entities: 4429: 23,6 4430: 23,5 4442: 21,8 - - node: - color: '#DE3A3A96' - id: BrickLineOverlayE - decals: - 2017: 17,-48 - node: color: '#52B4E996' id: BrickLineOverlayN decals: - 2011: 14,-47 - 2012: 15,-47 2880: 4,-46 2881: 5,-46 2882: 6,-46 @@ -1134,12 +1122,6 @@ entities: 4436: 19,5 4443: 22,7 4656: -12,21 - - node: - color: '#DE3A3A96' - id: BrickLineOverlayN - decals: - 2013: 13,-47 - 2014: 16,-47 - node: color: '#334E6DC8' id: BrickLineOverlayS @@ -1148,12 +1130,6 @@ entities: 4406: 15,8 4407: 13,8 4408: 14,8 - - node: - color: '#52B4E996' - id: BrickLineOverlayS - decals: - 2009: 14,-49 - 2010: 15,-49 - node: color: '#79150096' id: BrickLineOverlayS @@ -1209,12 +1185,6 @@ entities: 4426: 20,4 4427: 21,4 4428: 22,4 - - node: - color: '#DE3A3A96' - id: BrickLineOverlayS - decals: - 2015: 13,-49 - 2016: 16,-49 - node: color: '#334E6DC8' id: BrickLineOverlayW @@ -1263,11 +1233,6 @@ entities: 4651: -20,9 4652: -20,10 4657: -13,20 - - node: - color: '#DE3A3A96' - id: BrickLineOverlayW - decals: - 2018: 12,-48 - node: color: '#8D1C9996' id: BrickTileSteelCornerNe @@ -1517,6 +1482,7 @@ entities: 1538: -19,-45 1556: -3,-45 1657: 14,-40 + 4721: 13,-46 - node: color: '#870000FF' id: BrickTileWhiteCornerNe @@ -1532,11 +1498,11 @@ entities: color: '#A4610696' id: BrickTileWhiteCornerNe decals: - 2125: 44,-36 - 2185: 38,-45 2323: 49,-12 2389: 55,-12 2395: 63,-16 + 4842: 58,-33 + 4968: 48,-39 - node: color: '#DE3A3A96' id: BrickTileWhiteCornerNe @@ -1544,6 +1510,7 @@ entities: 1415: -8,-45 1442: -3,-39 1566: 7,-40 + 4731: 14,-45 - node: color: '#EFB34196' id: BrickTileWhiteCornerNe @@ -1575,6 +1542,7 @@ entities: 1658: 9,-40 2829: -16,-39 2950: -27,-45 + 4722: 10,-46 - node: color: '#79150096' id: BrickTileWhiteCornerNw @@ -1595,16 +1563,17 @@ entities: color: '#A4610696' id: BrickTileWhiteCornerNw decals: - 2186: 33,-45 2322: 46,-12 2388: 51,-12 2394: 46,-20 - 3522: 35,-36 + 4843: 49,-33 + 4969: 46,-39 - node: color: '#DE3A3A96' id: BrickTileWhiteCornerNw decals: 1565: 3,-40 + 4732: 9,-45 - node: color: '#EFB34196' id: BrickTileWhiteCornerNw @@ -1635,6 +1604,7 @@ entities: 1540: -19,-49 1554: -3,-48 1660: 14,-43 + 4723: 13,-48 - node: color: '#79150096' id: BrickTileWhiteCornerSe @@ -1656,12 +1626,11 @@ entities: color: '#A4610696' id: BrickTileWhiteCornerSe decals: - 2124: 44,-47 - 2187: 38,-47 2324: 49,-18 2390: 63,-22 - 2391: 62,-23 - 2392: 61,-24 + 4763: 62,-24 + 4844: 58,-44 + 4970: 48,-44 - node: color: '#DE3A3A96' id: BrickTileWhiteCornerSe @@ -1669,6 +1638,7 @@ entities: 1407: -8,-49 1441: -3,-43 2893: 7,-44 + 4733: 14,-49 - node: color: '#EFB34196' id: BrickTileWhiteCornerSe @@ -1703,6 +1673,7 @@ entities: 1659: 9,-43 2830: -16,-43 2951: -27,-49 + 4724: 10,-48 - node: color: '#79150096' id: BrickTileWhiteCornerSw @@ -1719,18 +1690,19 @@ entities: color: '#A4610696' id: BrickTileWhiteCornerSw decals: - 2123: 40,-47 - 2127: 35,-43 - 2188: 33,-47 2325: 46,-18 2393: 46,-24 3030: 51,-18 + 4841: 50,-44 + 4971: 45,-44 + 4972: 46,-44 - node: color: '#DE3A3A96' id: BrickTileWhiteCornerSw decals: 1406: -13,-49 2894: 3,-44 + 4734: 9,-49 - node: color: '#EFB34196' id: BrickTileWhiteCornerSw @@ -1767,7 +1739,7 @@ entities: decals: 2441: 55,-16 3707: 46,-18 - 3769: 36,-42 + 4797: 51,-40 - node: color: '#DE3A3A96' id: BrickTileWhiteInnerNe @@ -1804,7 +1776,7 @@ entities: decals: 3041: 52,-20 3706: 49,-18 - 3768: 41,-42 + 4798: 57,-40 - node: color: '#DE3A3A96' id: BrickTileWhiteInnerNw @@ -1830,9 +1802,8 @@ entities: id: BrickTileWhiteInnerSe decals: 2442: 62,-22 - 2443: 61,-23 3705: 46,-12 - 3767: 36,-37 + 4799: 51,-35 - node: color: '#DE3A3A96' id: BrickTileWhiteInnerSe @@ -1855,10 +1826,10 @@ entities: color: '#A4610696' id: BrickTileWhiteInnerSw decals: - 2158: 40,-43 3040: 52,-18 3704: 49,-12 - 3766: 41,-37 + 4800: 57,-35 + 4847: 50,-37 - node: color: '#DE3A3A96' id: BrickTileWhiteInnerSw @@ -1889,6 +1860,8 @@ entities: 2896: 7,-43 3668: 9,-41 3669: 9,-42 + 4745: 14,-46 + 4746: 14,-48 - node: color: '#79150096' id: BrickTileWhiteLineE @@ -1933,27 +1906,18 @@ entities: 2658: 54,11 2659: 54,10 2660: 54,9 - 3750: 36,-38 - 3751: 36,-39 - 3752: 36,-40 - 3753: 36,-41 4097: 52,9 4674: 60,0 4678: 59,-2 + 4784: 51,-36 + 4785: 51,-37 + 4786: 51,-38 + 4787: 51,-39 - node: color: '#A4610696' id: BrickTileWhiteLineE decals: 862: 60,-13 - 2128: 44,-46 - 2129: 44,-43 - 2130: 44,-42 - 2131: 44,-41 - 2132: 44,-40 - 2133: 44,-39 - 2134: 44,-38 - 2135: 44,-37 - 2189: 38,-46 2331: 49,-13 2332: 49,-14 2333: 49,-15 @@ -1972,6 +1936,21 @@ entities: 3686: 46,-15 3691: 46,-17 3692: 46,-16 + 4764: 62,-23 + 4860: 58,-43 + 4861: 58,-42 + 4862: 58,-41 + 4863: 58,-40 + 4864: 58,-39 + 4865: 58,-38 + 4866: 58,-37 + 4867: 58,-36 + 4868: 58,-35 + 4869: 58,-34 + 4963: 48,-43 + 4964: 48,-42 + 4965: 48,-41 + 4966: 48,-40 - node: color: '#DE3A3A96' id: BrickTileWhiteLineE @@ -1988,6 +1967,8 @@ entities: 2111: 3,-58 2112: 3,-59 2892: 7,-42 + 4730: 13,-47 + 4736: 14,-47 - node: color: '#EFB34196' id: BrickTileWhiteLineE @@ -2029,6 +2010,8 @@ entities: 1571: 6,-40 2954: -25,-45 2955: -26,-45 + 4743: 10,-45 + 4744: 13,-45 - node: cleanable: True color: '#52B4E996' @@ -2099,29 +2082,19 @@ entities: 2980: 53,29 2981: 54,29 2982: 55,29 - 3758: 37,-42 - 3759: 38,-42 - 3760: 39,-42 - 3761: 40,-42 4681: 58,1 4682: 59,1 + 4788: 52,-40 + 4789: 53,-40 + 4790: 54,-40 + 4791: 55,-40 + 4792: 56,-40 - node: color: '#A4610696' id: BrickTileWhiteLineN decals: 860: 58,-12 861: 59,-12 - 2136: 43,-36 - 2137: 42,-36 - 2138: 41,-36 - 2139: 40,-36 - 2140: 39,-36 - 2141: 38,-36 - 2142: 37,-36 - 2191: 34,-45 - 2192: 35,-45 - 2193: 36,-45 - 2194: 37,-45 2336: 47,-12 2337: 48,-12 2396: 62,-16 @@ -2139,9 +2112,17 @@ entities: 3031: 51,-20 3130: 56,-16 3131: 57,-16 - 3521: 36,-36 3697: 47,-18 3698: 48,-18 + 4870: 50,-33 + 4871: 52,-33 + 4872: 51,-33 + 4873: 53,-33 + 4874: 54,-33 + 4875: 55,-33 + 4876: 56,-33 + 4877: 57,-33 + 4967: 47,-39 - node: color: '#DE3A3A96' id: BrickTileWhiteLineN @@ -2170,6 +2151,10 @@ entities: 3661: 12,-43 3662: 10,-43 3663: 13,-43 + 4727: 11,-46 + 4728: 12,-46 + 4737: 12,-45 + 4738: 11,-45 - node: color: '#EFB34196' id: BrickTileWhiteLineN @@ -2223,6 +2208,8 @@ entities: 2898: 6,-44 2952: -26,-49 2953: -25,-49 + 4741: 10,-49 + 4742: 13,-49 - node: cleanable: True color: '#52B4E996' @@ -2277,23 +2264,17 @@ entities: 2977: 53,34 2978: 54,34 2979: 55,34 - 3762: 37,-37 - 3763: 38,-37 - 3764: 39,-37 - 3765: 40,-37 + 4779: 53,-35 + 4780: 54,-35 + 4781: 55,-35 + 4782: 56,-35 + 4783: 52,-35 - node: color: '#A4610696' id: BrickTileWhiteLineS decals: 858: 58,-14 859: 59,-14 - 2150: 36,-43 - 2151: 37,-43 - 2152: 38,-43 - 2195: 34,-47 - 2196: 35,-47 - 2197: 36,-47 - 2198: 37,-47 2338: 47,-18 2339: 48,-18 2421: 47,-24 @@ -2307,9 +2288,16 @@ entities: 2429: 58,-24 2430: 59,-24 2431: 60,-24 - 3513: 39,-43 3695: 47,-12 3696: 48,-12 + 4765: 61,-24 + 4845: 49,-37 + 4853: 51,-44 + 4854: 52,-44 + 4855: 53,-44 + 4858: 56,-44 + 4859: 57,-44 + 4962: 47,-44 - node: color: '#DE3A3A96' id: BrickTileWhiteLineS @@ -2340,6 +2328,10 @@ entities: 3665: 11,-40 3666: 12,-40 3667: 13,-40 + 4725: 11,-48 + 4726: 12,-48 + 4739: 11,-49 + 4740: 12,-49 - node: color: '#EFB34196' id: BrickTileWhiteLineS @@ -2380,7 +2372,6 @@ entities: 1325: 3,-48 1409: -13,-48 1411: -13,-46 - 1475: 15,-46 1578: 3,-41 2679: -13,-47 2831: -16,-41 @@ -2390,6 +2381,10 @@ entities: 2958: -27,-48 3670: 14,-41 3671: 14,-42 + 4747: 9,-46 + 4748: 9,-48 + 4749: 9,-46 + 4750: 9,-48 - node: color: '#79150096' id: BrickTileWhiteLineW @@ -2443,21 +2438,16 @@ entities: 2984: 56,32 2985: 56,31 2986: 56,30 - 3754: 41,-41 - 3755: 41,-40 - 3756: 41,-39 - 3757: 41,-38 4197: 47,7 + 4793: 57,-39 + 4794: 57,-38 + 4795: 57,-37 + 4796: 57,-36 - node: color: '#A4610696' id: BrickTileWhiteLineW decals: 863: 57,-13 - 2149: 35,-42 - 2155: 40,-44 - 2156: 40,-45 - 2157: 40,-46 - 2190: 33,-46 2328: 46,-15 2329: 46,-14 2330: 46,-13 @@ -2468,11 +2458,6 @@ entities: 2420: 46,-21 3039: 52,-19 3129: 51,-16 - 3516: 35,-41 - 3517: 35,-40 - 3518: 35,-39 - 3519: 35,-38 - 3520: 35,-37 3693: 46,-16 3694: 46,-17 3699: 49,-17 @@ -2480,6 +2465,18 @@ entities: 3701: 49,-15 3702: 49,-14 3703: 49,-13 + 4846: 50,-38 + 4848: 50,-39 + 4849: 50,-40 + 4850: 50,-41 + 4851: 50,-42 + 4852: 50,-43 + 4956: 49,-34 + 4957: 49,-35 + 4958: 46,-40 + 4959: 46,-41 + 4960: 46,-42 + 4961: 46,-43 - node: color: '#DE3A3A96' id: BrickTileWhiteLineW @@ -2497,6 +2494,8 @@ entities: 2832: -16,-40 2833: -16,-42 2891: 3,-42 + 4729: 10,-47 + 4735: 9,-47 - node: color: '#EFB34196' id: BrickTileWhiteLineW @@ -2541,99 +2540,115 @@ entities: 1019: 45,18 1058: 53,-4 - node: - color: '#79150096' + color: '#52B4E996' id: CheckerNESW decals: - 4455: 49,-33 - 4456: 50,-33 - 4457: 51,-33 - 4458: 51,-34 - 4459: 50,-34 - 4460: 49,-34 - 4461: 49,-35 - 4462: 50,-35 - 4463: 51,-35 - 4464: 49,-36 - 4465: 50,-36 - 4466: 49,-37 - 4467: 50,-37 - 4468: 49,-38 - 4469: 50,-38 - 4470: 49,-32 - 4471: 50,-32 - 4472: 51,-32 - 4494: 52,-35 - 4495: 53,-35 - 4496: 54,-35 - 4497: 52,-34 - 4498: 53,-34 - 4499: 54,-34 - 4500: 54,-33 - 4501: 53,-33 - 4502: 52,-33 - 4503: 52,-32 - 4504: 53,-32 - 4505: 54,-32 + 4705: 16,-46 + 4706: 16,-47 + 4707: 16,-48 + 4708: 16,-49 + 4709: 16,-50 - node: color: '#8D1C9996' id: CheckerNESW decals: - 3734: 37,-41 - 3735: 37,-40 - 3736: 37,-39 - 3737: 37,-38 - 3738: 38,-38 - 3739: 39,-38 - 3740: 40,-38 - 3741: 40,-39 - 3742: 39,-39 - 3743: 38,-39 - 3744: 38,-40 - 3745: 39,-40 - 3746: 40,-40 - 3747: 40,-41 - 3748: 39,-41 - 3749: 38,-41 + 4821: 52,-39 + 4822: 53,-39 + 4823: 54,-39 + 4824: 55,-39 + 4825: 56,-39 + 4826: 56,-38 + 4827: 55,-38 + 4828: 54,-38 + 4829: 53,-38 + 4830: 52,-38 + 4831: 52,-37 + 4832: 53,-37 + 4833: 54,-37 + 4834: 55,-37 + 4835: 56,-37 + 4836: 56,-36 + 4837: 55,-36 + 4838: 54,-36 + 4839: 53,-36 + 4840: 52,-36 - node: color: '#A4610696' id: CheckerNESW decals: - 2344: 49,-26 - 2345: 49,-27 - 2346: 49,-28 - 2349: 49,-30 - 2350: 49,-29 - 2351: 50,-30 - 2352: 50,-29 - 2353: 50,-28 - 2354: 50,-27 - 2355: 50,-26 - 2356: 51,-26 - 2357: 51,-27 - 2358: 51,-28 - 2359: 51,-29 - 2360: 51,-30 - 2361: 52,-30 - 2362: 52,-29 - 2363: 52,-28 - 2364: 52,-27 - 2365: 52,-26 - 2366: 53,-26 - 2367: 53,-27 - 2368: 53,-28 - 2369: 53,-29 - 2370: 53,-30 - 2371: 54,-30 - 2372: 54,-29 - 2373: 54,-28 - 2374: 54,-27 - 2375: 54,-26 - 2376: 55,-26 - 2377: 55,-28 - 2378: 55,-29 - 2379: 55,-30 - 2380: 56,-26 - 2381: 57,-26 + 4878: 56,-31 + 4879: 57,-31 + 4880: 56,-30 + 4881: 57,-30 + 4882: 56,-29 + 4883: 57,-29 + 4884: 56,-28 + 4885: 56,-27 + 4886: 56,-26 + 4887: 57,-26 + 4888: 57,-27 + 4889: 58,-26 + 4890: 58,-27 + 4891: 59,-26 + 4892: 59,-27 + 4893: 60,-26 + 4894: 60,-27 + 4895: 61,-26 + 4896: 61,-27 + 4897: 62,-26 + 4898: 62,-27 + 4899: 62,-28 + 4900: 61,-28 + 4901: 60,-28 + 4902: 59,-28 + 4903: 59,-29 + 4904: 60,-29 + 4905: 61,-29 + 4906: 62,-29 + 4907: 62,-30 + 4908: 61,-30 + 4909: 60,-30 + 4910: 59,-30 + 4911: 59,-31 + 4912: 61,-31 + 4913: 60,-31 + 4915: 62,-31 + 4977: 49,-31 + 4978: 49,-30 + 4979: 49,-29 + 4980: 49,-28 + 4981: 49,-27 + 4982: 49,-26 + 4983: 50,-26 + 4984: 50,-27 + 4985: 50,-28 + 4988: 50,-30 + 4989: 50,-31 + 4990: 50,-29 + 4991: 51,-29 + 4992: 51,-30 + 4993: 51,-31 + 4994: 52,-31 + 4995: 52,-30 + 4996: 52,-29 + 4997: 52,-28 + 4998: 51,-28 + 4999: 51,-27 + 5000: 51,-26 + 5001: 52,-26 + 5002: 52,-27 + 5003: 53,-27 + 5004: 53,-26 + 5005: 54,-26 + 5006: 54,-27 + 5009: 54,-29 + 5011: 53,-29 + 5012: 54,-28 + 5013: 53,-28 + 5014: 53,-30 + 5015: 54,-30 + 5016: 54,-31 + 5017: 53,-31 - node: color: '#EFB34196' id: CheckerNESW @@ -2669,11 +2684,6 @@ entities: color: '#52B4E996' id: CheckerNWSE decals: - 1694: 11,-45 - 1695: 12,-45 - 1696: 13,-45 - 1697: 14,-45 - 1698: 15,-45 3676: 10,-41 3677: 10,-42 3678: 11,-42 @@ -2682,6 +2692,11 @@ entities: 3681: 12,-42 3682: 13,-42 3683: 13,-41 + 4710: 17,-46 + 4711: 17,-47 + 4712: 17,-48 + 4713: 17,-49 + 4714: 17,-50 - node: color: '#79150096' id: CheckerNWSE @@ -2713,11 +2728,50 @@ entities: 2712: -59,16 2732: -60,19 2733: -59,19 + 4916: 56,-29 + 4917: 57,-29 + 4918: 57,-30 + 4919: 56,-30 + 4920: 56,-31 + 4921: 57,-31 + 4922: 56,-27 + 4923: 57,-27 + 4924: 57,-26 + 4925: 56,-26 + 4926: 56,-28 + 4927: 58,-27 + 4928: 58,-26 + 4929: 59,-26 + 4930: 59,-27 + 4931: 60,-27 + 4932: 60,-26 + 4933: 61,-26 + 4934: 62,-26 + 4935: 62,-27 + 4936: 61,-27 + 4937: 62,-28 + 4938: 61,-28 + 4939: 60,-28 + 4940: 60,-28 + 4941: 59,-28 + 4942: 59,-29 + 4943: 60,-29 + 4944: 61,-29 + 4945: 61,-29 + 4946: 62,-29 + 4947: 62,-30 + 4948: 61,-30 + 4949: 60,-30 + 4950: 60,-30 + 4951: 59,-30 + 4952: 59,-31 + 4953: 60,-31 + 4954: 61,-31 + 4955: 62,-31 - node: color: '#A4610696' id: CheckerNWSE decals: - 2240: 56,-26 3708: 47,-13 3709: 48,-14 3710: 47,-14 @@ -2728,52 +2782,26 @@ entities: 3715: 48,-16 3716: 47,-17 3717: 48,-17 - 3718: 37,-38 - 3719: 38,-38 - 3720: 39,-38 - 3721: 40,-38 - 3722: 40,-39 - 3723: 39,-39 - 3724: 38,-39 - 3725: 37,-39 - 3726: 37,-40 - 3727: 38,-40 - 3728: 39,-40 - 3729: 40,-40 - 3730: 40,-41 - 3731: 39,-41 - 3732: 38,-41 - 3733: 37,-41 - 4446: 50,-33 - 4447: 50,-34 - 4448: 50,-35 - 4449: 51,-35 - 4450: 51,-34 - 4451: 51,-33 - 4452: 49,-33 - 4453: 49,-34 - 4454: 49,-35 - 4473: 49,-32 - 4474: 50,-32 - 4475: 51,-32 - 4476: 49,-36 - 4477: 50,-36 - 4478: 49,-37 - 4479: 50,-37 - 4480: 49,-38 - 4481: 50,-38 - 4482: 52,-32 - 4483: 53,-32 - 4484: 54,-32 - 4485: 54,-33 - 4486: 53,-33 - 4487: 52,-33 - 4488: 52,-34 - 4489: 53,-34 - 4490: 54,-34 - 4491: 54,-35 - 4492: 53,-35 - 4493: 52,-35 + 4801: 56,-36 + 4802: 55,-36 + 4803: 54,-36 + 4804: 53,-36 + 4805: 52,-36 + 4806: 52,-37 + 4807: 53,-37 + 4808: 54,-37 + 4809: 55,-37 + 4810: 56,-37 + 4811: 56,-38 + 4812: 55,-38 + 4813: 54,-38 + 4814: 53,-38 + 4815: 52,-38 + 4816: 52,-39 + 4817: 53,-39 + 4818: 54,-39 + 4819: 55,-39 + 4820: 56,-39 - node: color: '#DE3A3A96' id: CheckerNWSE @@ -2810,6 +2838,53 @@ entities: 1760: -25,-57 1761: -22,-56 1762: -23,-57 + - node: + color: '#FFFFFFFF' + id: DarkSlatSingleE + decals: + 5040: -40,-3 + 5041: -40,-4 + 5042: -40,-5 + 5043: -40,-6 + 5044: -40,-7 + 5045: -40,-8 + 5046: -39,-10 + 5047: -40,-9 + 5048: -40,-10 + 5049: -40,-11 + - node: + color: '#FFFFFFFF' + id: DarkSlatSingleN + decals: + 5033: -45,-3 + 5035: -44,-3 + 5036: -43,-3 + 5037: -42,-3 + 5038: -40,-3 + 5039: -41,-3 + - node: + color: '#FFFFFFFF' + id: DarkSlatSingleS + decals: + 5050: -41,-11 + 5051: -40,-11 + 5052: -42,-11 + 5053: -43,-11 + 5054: -44,-11 + 5055: -45,-11 + - node: + color: '#FFFFFFFF' + id: DarkSlatSingleW + decals: + 5025: -45,-11 + 5026: -45,-10 + 5027: -45,-9 + 5028: -45,-8 + 5029: -45,-7 + 5030: -45,-6 + 5031: -45,-5 + 5032: -45,-4 + 5034: -45,-3 - node: color: '#FFFFFFFF' id: Delivery @@ -2835,8 +2910,6 @@ entities: 1993: -52,20 1994: -52,22 1995: -55,18 - 2165: 38,-43 - 2167: 44,-41 2814: -53,10 2815: -51,10 2816: -51,9 @@ -2854,11 +2927,13 @@ entities: 3347: 42,42 3348: 42,41 3349: 42,40 - 3512: 37,-43 4589: 5,-19 4590: 7,-19 4591: 8,-19 4592: 9,-19 + 5018: 58,-40 + 5019: 58,-39 + 5020: 50,-44 - node: cleanable: True color: '#FFFFFFFF' @@ -3117,7 +3192,6 @@ entities: 1207: 40,-34 1208: 38,-34 1209: 36,-34 - 1210: 34,-34 - node: cleanable: True color: '#FA750096' @@ -3200,9 +3274,6 @@ entities: 1204: 44,-26 1205: 44,-20 1211: 33,-35 - 1212: 33,-37 - 1213: 33,-39 - 1214: 33,-41 - node: cleanable: True color: '#FA750096' @@ -3352,15 +3423,9 @@ entities: 1704: 17,-44 1705: 17,-45 1712: 17,-40 - 1713: 10,-46 - 1714: 10,-47 - 1715: 10,-48 - 1716: 10,-49 - 1717: 10,-50 2118: -1,-51 2864: -5,-42 2871: -4,-42 - 3770: 10,-45 - node: color: '#820000FF' id: QuarterTileOverlayGreyscale @@ -3500,18 +3565,12 @@ entities: 697: -11,-46 703: -12,-47 704: -10,-47 - 1670: 10,-49 - 1671: 10,-48 - 1672: 10,-47 - 1673: 10,-46 - 1677: 10,-50 1682: 17,-45 1683: 17,-44 1684: 17,-43 1685: 17,-42 1686: 17,-41 1687: 17,-40 - 1700: 10,-45 2867: -5,-42 - node: color: '#820000FF' @@ -3549,12 +3608,6 @@ entities: 3109: 61,-20 3110: 62,-19 3117: 62,-21 - - node: - cleanable: True - color: '#A4610696' - id: QuarterTileOverlayGreyscale180 - decals: - 1216: 33,-34 - node: color: '#B02E26FF' id: QuarterTileOverlayGreyscale180 @@ -3659,12 +3712,6 @@ entities: 700: -11,-48 701: -12,-47 702: -10,-47 - 1674: 9,-49 - 1675: 9,-48 - 1676: 9,-50 - 1678: 9,-47 - 1679: 9,-46 - 1680: 9,-45 1688: 16,-45 1689: 16,-44 1690: 16,-43 @@ -3672,6 +3719,12 @@ entities: 1692: 16,-41 1693: 16,-40 2868: -5,-42 + 4751: 12,-47 + 4752: 11,-47 + 4753: 13,-47 + 4757: 11,-46 + 4758: 12,-46 + 4759: 13,-46 - node: color: '#820000FF' id: QuarterTileOverlayGreyscale270 @@ -3808,21 +3861,21 @@ entities: 693: -11,-48 705: -10,-47 706: -12,-47 - 1699: 9,-45 1706: 16,-45 1707: 16,-43 1708: 16,-44 1709: 16,-42 1710: 16,-41 1711: 16,-40 - 1718: 9,-49 - 1719: 9,-48 - 1720: 9,-47 - 1721: 9,-46 2119: 1,-51 2862: -5,-42 2870: -4,-42 - 3771: 9,-50 + 4754: 11,-47 + 4755: 12,-47 + 4756: 10,-47 + 4760: 10,-48 + 4761: 11,-48 + 4762: 12,-48 - node: cleanable: True color: '#52B4E996' @@ -3984,6 +4037,8 @@ entities: 4510: 50,30 4670: 58,-2 4704: -46,30 + 5023: 54,-44 + 5024: 55,-44 - node: cleanable: True color: '#FFFFFFFF' @@ -4008,12 +4063,6 @@ entities: 1004: 41,6 1005: 41,10 1006: 41,14 - - node: - angle: 4.71238898038469 rad - color: '#FFFFFFFF' - id: StandClear - decals: - 1299: 44.00437,-44.47961 - node: color: '#EFB34196' id: ThreeQuarterTileOverlayGreyscale @@ -4025,7 +4074,6 @@ entities: id: ThreeQuarterTileOverlayGreyscale180 decals: 1200: 44,-34 - 1215: 33,-43 - node: cleanable: True color: '#3EB38896' @@ -4183,8 +4231,6 @@ entities: id: WarnLineE decals: 877: 50,-23 - 1300: 44,-44 - 1301: 44,-45 1633: 6,18 1634: 6,19 1635: 6,20 @@ -4309,6 +4355,8 @@ entities: 4664: 57,-2 4665: 58,-2 4666: 59,-2 + 5021: 54,-44 + 5022: 55,-44 - node: cleanable: True color: '#FFFFFFFF' @@ -4974,7 +5022,9 @@ entities: 2,5: 0: 32767 3,4: - 0: 4368 + 2: 16 + 3: 256 + 0: 4096 3,5: 0: 17 3,6: @@ -5082,14 +5132,14 @@ entities: -9,0: 0: 255 -8,2: - 2: 4352 + 4: 4352 -9,2: - 2: 3140 - 3: 273 + 4: 3140 + 5: 273 -8,3: - 2: 4369 + 4: 4369 -8,4: - 2: 4369 + 4: 4369 -7,0: 0: 8959 -7,1: @@ -5201,24 +5251,24 @@ entities: 8,7: 0: 4093 -8,5: - 2: 4369 + 4: 4369 -8,6: - 2: 61713 + 4: 61713 -9,6: - 2: 65280 - 4: 7 + 4: 65280 + 6: 7 -8,7: 0: 13104 - 2: 34952 + 4: 34952 -9,7: 0: 65520 -8,8: 0: 13107 - 2: 34952 + 4: 34952 -7,7: - 2: 28945 + 4: 28945 -7,8: - 2: 63351 + 4: 63351 4,-5: 0: 2188 5,-6: @@ -5264,7 +5314,8 @@ entities: -6,-7: 0: 3863 -6,-9: - 0: 47887 + 0: 47375 + 7: 512 -5,-8: 0: 340 -5,-9: @@ -5272,21 +5323,21 @@ entities: -5,-6: 0: 25668 8,1: - 2: 8 + 4: 8 8,2: - 2: 8 + 4: 8 8,3: - 2: 8 + 4: 8 9,0: 0: 255 9,1: - 2: 7 + 4: 7 0: 2048 9,2: - 2: 7 + 4: 7 0: 2048 9,3: - 2: 7 + 4: 7 0: 2048 9,-1: 0: 61440 @@ -5345,23 +5396,23 @@ entities: 1,-13: 0: 61695 2,-12: - 0: 59006 + 0: 61182 2,-11: 0: 61408 2,-10: 0: 47886 2,-13: - 0: 26367 + 0: 59135 3,-12: - 0: 61695 + 0: 32631 3,-11: 0: 32624 3,-10: 0: 65287 3,-13: - 0: 61695 + 0: 28927 4,-12: - 0: 14523 + 0: 15291 4,-11: 0: 64443 4,-10: @@ -5400,27 +5451,27 @@ entities: 0: 65535 -10,0: 0: 12543 - 2: 16384 + 4: 16384 -10,3: 0: 4369 - 2: 17476 + 4: 17476 -10,-1: 0: 63711 -10,1: - 2: 11878 + 4: 11878 -10,2: - 2: 546 - 3: 2184 + 4: 546 + 5: 2184 -10,4: 0: 4369 - 2: 17476 + 4: 17476 -9,1: - 2: 18176 + 4: 18176 -9,3: - 3: 1799 + 5: 1799 -9,4: - 5: 7 - 3: 1792 + 8: 7 + 5: 1792 -12,-4: 0: 63675 -12,-5: @@ -5586,7 +5637,7 @@ entities: -5,-13: 0: 45311 4,-13: - 0: 45311 + 0: 46079 5,-12: 0: 30583 5,-11: @@ -5614,9 +5665,9 @@ entities: 7,-13: 0: 62207 8,-11: - 0: 48048 - 8,-10: 0: 48059 + 8,-10: + 0: 64435 8,-9: 0: 65339 8,-6: @@ -5630,13 +5681,13 @@ entities: 9,-9: 0: 65295 10,-8: - 0: 56783 + 0: 56799 10,-7: 0: 56797 10,-6: 0: 61135 10,-9: - 0: 65327 + 0: 65326 11,-8: 0: 56797 11,-7: @@ -5644,9 +5695,9 @@ entities: 11,-6: 0: 56797 11,-9: - 0: 56783 + 0: 56781 12,-7: - 0: 3838 + 0: 3823 12,-6: 0: 65535 12,-5: @@ -5693,7 +5744,7 @@ entities: 0: 35839 4,12: 0: 139 - 2: 32768 + 4: 32768 4,9: 0: 32768 5,9: @@ -5704,7 +5755,7 @@ entities: 0: 54783 5,12: 0: 3295 - 2: 4096 + 4: 4096 6,10: 0: 65286 6,11: @@ -5766,14 +5817,14 @@ entities: 3,12: 0: 4411 -4,8: - 2: 240 + 4: 240 -5,8: - 2: 29888 + 4: 29888 -4,9: 0: 65528 -5,9: 0: 65024 - 2: 22 + 4: 22 -4,10: 0: 65535 -5,10: @@ -5785,7 +5836,7 @@ entities: -4,12: 0: 65535 -3,8: - 2: 48 + 4: 48 0: 24576 -3,9: 0: 30583 @@ -5813,65 +5864,65 @@ entities: 0: 65535 -8,9: 0: 546 - 2: 63624 + 4: 63624 -9,9: 0: 255 - 2: 61440 + 4: 61440 -8,10: - 2: 143 + 4: 143 -9,10: - 2: 4383 + 4: 4383 -7,10: - 2: 17524 + 4: 17524 -7,9: - 2: 49152 + 4: 49152 -7,11: - 2: 17484 + 4: 17484 -7,12: - 2: 3140 + 4: 3140 -6,8: - 2: 61440 + 4: 61440 -6,9: - 2: 30993 + 4: 30993 -6,10: - 2: 18 + 4: 18 0: 61128 -6,11: 0: 52974 - 2: 4096 + 4: 4096 -6,12: - 2: 12098 + 4: 12098 0: 8 -5,12: 0: 3839 - 2: 4096 + 4: 4096 -6,13: - 2: 35042 + 4: 35042 -5,13: - 2: 62532 + 4: 62532 -4,13: - 2: 63488 + 4: 63488 0: 8 -3,13: 0: 103 -4,14: - 2: 2184 + 4: 2184 -3,14: - 2: 7936 + 4: 7936 -3,15: - 2: 4369 + 4: 4369 0: 34816 -3,16: - 2: 4369 + 4: 4369 0: 33856 -2,13: 0: 4095 -2,14: - 2: 6929 + 4: 6929 0: 17476 -2,15: 0: 60724 - 2: 1 + 4: 1 -2,16: 0: 45567 -1,13: @@ -5880,15 +5931,15 @@ entities: 0: 65314 -1,14: 0: 8738 - 2: 2048 + 4: 2048 -1,16: 0: 62207 0,14: 0: 4369 - 2: 11810 + 4: 11810 0,15: 0: 48417 - 2: 2 + 4: 2 0,13: 0: 3822 0,16: @@ -5896,36 +5947,36 @@ entities: 1,13: 0: 59 1,14: - 2: 4383 + 4: 4383 1,15: - 2: 4369 + 4: 4369 2,13: 0: 1 - 2: 32768 + 4: 32768 2,14: - 2: 15 + 4: 15 2,15: - 2: 51200 + 4: 51200 2,16: - 2: 310 + 4: 310 3,13: - 2: 40720 + 4: 40720 3,15: - 2: 306 + 4: 306 3,14: - 2: 25800 + 4: 25800 4,13: - 2: 3840 + 4: 3840 5,13: - 2: 3857 + 4: 3857 6,13: - 2: 3840 + 4: 3840 7,13: - 2: 3874 + 4: 3874 8,12: 0: 511 8,13: - 2: 3840 + 4: 3840 -13,4: 0: 56715 -12,5: @@ -5950,17 +6001,17 @@ entities: 0: 56797 -10,5: 0: 4369 - 2: 17476 + 4: 17476 -10,6: 0: 20753 - 2: 35908 + 4: 35908 -10,7: 0: 61121 -10,8: 0: 65535 -9,5: - 3: 7 - 6: 1792 + 5: 7 + 9: 1792 -12,9: 0: 30704 -13,9: @@ -5970,65 +6021,65 @@ entities: -13,10: 0: 4095 -12,11: - 2: 8784 + 4: 8784 0: 160 -13,11: - 2: 8912 + 4: 8912 0: 39 -12,12: 0: 2 - 2: 8749 + 4: 8749 -11,9: 0: 248 - 2: 61440 + 4: 61440 -11,10: - 2: 4369 + 4: 4369 0: 8738 - 3: 34944 + 5: 34944 -11,11: - 2: 26229 + 4: 26229 0: 2 -11,12: 0: 10 - 2: 58981 + 4: 58981 -10,9: 0: 255 - 2: 61440 + 4: 61440 -10,10: - 3: 13104 + 5: 13104 0: 34952 -10,11: 0: 4600 - 2: 11780 + 4: 11780 -10,12: 0: 4369 - 2: 8738 + 4: 8738 -9,11: - 2: 273 + 4: 273 -16,8: 0: 35771 -16,7: 0: 49072 -17,8: 0: 3327 - 2: 4096 + 4: 4096 -16,9: - 2: 4369 + 4: 4369 0: 52416 -17,9: - 2: 36623 + 4: 36623 -16,10: - 2: 4369 + 4: 4369 0: 3276 -17,10: - 2: 34952 + 4: 34952 -16,11: - 2: 8817 + 4: 8817 0: 142 -17,11: - 2: 136 + 4: 136 -16,12: - 2: 8738 + 4: 8738 -15,8: 0: 65535 -15,9: @@ -6037,18 +6088,18 @@ entities: 0: 1911 -15,11: 0: 23 - 2: 13280 + 4: 13280 -15,7: 0: 65532 -15,12: - 2: 13117 + 4: 13117 0: 2 -14,9: 0: 65268 -14,10: 0: 32767 -14,11: - 2: 8912 + 4: 8912 0: 32 -14,8: 0: 61166 @@ -6056,14 +6107,14 @@ entities: 0: 61408 -14,12: 0: 2 - 2: 8749 + 4: 8749 -13,8: 0: 30583 -13,7: 0: 30576 -13,12: 0: 28674 - 2: 557 + 4: 557 -16,4: 0: 48059 -16,3: @@ -6154,10 +6205,10 @@ entities: 0: 48059 -16,-8: 0: 32975 - 2: 256 + 4: 256 -17,-8: 0: 12 - 2: 3843 + 4: 3843 -16,-7: 0: 65528 -16,-6: @@ -6187,7 +6238,7 @@ entities: -8,-16: 0: 48048 -8,-17: - 2: 4375 + 4: 4375 -9,-16: 0: 56784 -8,-15: @@ -6243,7 +6294,8 @@ entities: -2,-16: 0: 12272 -2,-15: - 0: 30583 + 0: 30567 + 7: 16 -2,-14: 0: 61559 -2,-17: @@ -6288,7 +6340,7 @@ entities: 0: 61815 3,-17: 0: 48947 - 2: 8 + 4: 8 4,-16: 0: 40884 4,-15: @@ -6297,7 +6349,7 @@ entities: 0: 63931 4,-17: 0: 60928 - 2: 3 + 4: 3 5,-16: 0: 36816 5,-15: @@ -6306,7 +6358,7 @@ entities: 0: 61627 5,-17: 0: 63520 - 2: 8 + 4: 8 6,-16: 0: 54748 6,-15: @@ -6315,7 +6367,7 @@ entities: 0: 61695 6,-17: 0: 62208 - 2: 143 + 4: 143 7,-16: 0: 36600 7,-15: @@ -6324,7 +6376,7 @@ entities: 0: 62143 7,-17: 0: 34816 - 2: 762 + 4: 762 8,-16: 0: 52720 8,-15: @@ -6334,51 +6386,56 @@ entities: 8,-13: 0: 43771 12,-9: - 0: 65254 + 0: 65534 12,-8: - 0: 60942 + 0: 61152 13,-8: - 0: 65287 + 0: 30576 13,-7: - 0: 4095 + 0: 1911 13,-6: 0: 65535 13,-5: 0: 65535 13,-9: - 0: 30576 + 0: 65535 13,-4: 0: 65535 + 14,-8: + 0: 48048 + 14,-7: + 0: 36857 14,-6: 0: 65535 14,-5: 0: 65535 - 14,-8: - 0: 58912 - 2: 200 - 14,-7: - 0: 742 - 2: 2056 + 14,-9: + 0: 30583 14,-4: 0: 61199 - 14,-9: - 2: 34959 15,-8: - 2: 4113 + 0: 30576 15,-7: - 2: 34945 + 0: 1911 15,-6: - 0: 65395 + 0: 65399 15,-5: 0: 65535 15,-9: - 2: 4369 + 4: 65433 15,-4: 0: 56591 - 16,-5: - 0: 9991 + 16,-8: + 4: 4369 + 16,-7: + 4: 4369 16,-6: + 4: 35 0: 8192 + 16,-5: + 0: 9991 + 16,-9: + 4: 4096 16,0: 0: 61166 15,0: @@ -6405,7 +6462,7 @@ entities: 0: 13107 17,3: 0: 13059 - 2: 32768 + 4: 32768 16,4: 0: 48056 17,4: @@ -6413,42 +6470,42 @@ entities: 18,1: 0: 3856 18,3: - 2: 61440 + 4: 61440 18,0: - 2: 4369 + 4: 4369 18,-1: - 2: 4593 + 4: 4593 18,4: - 2: 4369 + 4: 4369 19,1: 0: 260 - 2: 36488 + 4: 36488 19,3: - 2: 63624 + 4: 63624 0: 68 19,0: 0: 17476 - 2: 34952 + 4: 34952 19,-1: 0: 16384 - 2: 35056 + 4: 35056 19,2: 0: 17476 - 2: 34952 + 4: 34952 20,0: 0: 21845 - 2: 34952 + 4: 34952 20,1: 0: 5 - 2: 36744 + 4: 36744 20,2: 0: 21845 - 2: 34952 + 4: 34952 20,3: 0: 85 - 2: 61576 + 4: 61576 16,-3: - 2: 224 + 4: 224 15,-3: 0: 65477 16,-2: @@ -6458,18 +6515,18 @@ entities: 15,-1: 0: 56554 17,-3: - 2: 240 + 4: 240 17,-2: 0: 4369 17,-1: 0: 273 - 2: 192 + 4: 192 18,-3: - 2: 4368 + 4: 4368 18,-2: - 2: 4369 + 4: 4369 20,-1: - 2: 33008 + 4: 33008 0: 20480 12,7: 0: 61166 @@ -6532,93 +6589,102 @@ entities: 18,7: 0: 28784 12,-12: - 2: 560 - 0: 61440 + 4: 3840 11,-12: - 2: 204 - 0: 61712 + 4: 3268 + 0: 512 12,-11: - 0: 15 - 2: 256 + 0: 56829 11,-11: - 0: 4383 - 2: 19456 + 0: 56781 12,-10: - 2: 15 - 0: 28160 + 0: 60637 11,-10: - 2: 12 - 0: 65297 + 0: 61663 13,-12: - 0: 61440 - 2: 3584 + 4: 273 + 0: 52428 13,-11: - 0: 15 - 2: 224 + 0: 65535 13,-10: - 2: 15 - 0: 30464 - 14,-12: - 2: 4352 + 0: 65535 + 13,-13: + 4: 12288 + 0: 52428 14,-11: - 2: 17 + 0: 30583 14,-10: - 2: 8739 + 0: 30583 + 14,-13: + 4: 61440 + 14,-12: + 4: 3618 + 15,-12: + 4: 39304 + 15,-11: + 4: 39327 + 15,-10: + 4: 39321 + 15,-13: + 4: 63624 8,-12: - 0: 61154 + 0: 36578 9,-12: - 0: 32624 + 0: 30576 9,-11: - 0: 65520 + 0: 65407 9,-10: - 0: 65535 + 0: 65520 9,-13: 0: 65535 10,-12: - 0: 65520 + 0: 65300 10,-11: - 0: 65535 + 0: 65295 10,-10: - 0: 65535 + 0: 61422 10,-13: 0: 4369 - 2: 50244 + 4: 50244 11,-13: - 2: 29764 + 4: 29764 8,-17: - 2: 8432 - 0: 3598 + 4: 57904 + 0: 14 9,-16: 0: 65520 9,-15: 0: 8191 9,-14: 0: 65535 + 9,-17: + 4: 61440 + 0: 15 10,-16: 0: 4368 - 2: 50244 + 4: 50244 10,-15: 0: 273 - 2: 19652 + 4: 19652 10,-14: 0: 4369 - 2: 19524 + 4: 19524 10,-17: - 2: 16624 - 0: 3855 + 4: 28672 + 0: 15 11,-16: - 2: 29764 + 4: 29764 11,-15: - 2: 9010 + 4: 9010 11,-14: - 2: 18210 + 4: 18210 11,-17: - 2: 17524 - 0: 257 + 4: 17476 + 0: 1 -12,-16: - 2: 36856 + 4: 36856 -13,-16: - 2: 16368 + 4: 16368 -12,-15: 0: 65520 -12,-14: @@ -6630,9 +6696,9 @@ entities: -12,-12: 0: 56343 -12,-17: - 2: 34952 + 4: 34952 -11,-16: - 2: 273 + 4: 273 0: 34944 -11,-15: 0: 24016 @@ -6641,7 +6707,7 @@ entities: -11,-13: 0: 47887 -11,-17: - 2: 21855 + 4: 21855 -11,-12: 0: 65291 -10,-16: @@ -6673,21 +6739,21 @@ entities: -10,-10: 0: 65359 -16,-12: - 2: 1228 + 4: 1228 -16,-13: - 2: 52428 + 4: 52428 -15,-12: - 2: 1 + 4: 1 0: 52428 -16,-11: - 2: 8 + 4: 8 -15,-11: 0: 52960 -15,-10: 0: 61133 -15,-13: 0: 49152 - 2: 34 + 4: 34 -14,-12: 0: 56793 -14,-11: @@ -6720,32 +6786,32 @@ entities: 0: 63799 14,11: 0: 141 - 2: 8704 + 4: 8704 14,9: 0: 26350 14,12: - 2: 57890 + 4: 57890 15,9: 0: 56797 15,10: 0: 65421 15,11: 0: 1 - 2: 17472 + 4: 17472 15,12: - 2: 29772 + 4: 29772 16,9: 0: 64443 16,10: 0: 1 - 2: 40960 + 4: 40960 9,9: 0: 46079 9,10: 0: 48059 9,11: 0: 187 - 2: 32768 + 4: 32768 10,9: 0: 62719 10,10: @@ -6753,57 +6819,57 @@ entities: 10,11: 0: 255 9,12: - 2: 35048 + 4: 35048 11,12: 0: 8 - 2: 48 + 4: 48 9,13: - 2: 36744 + 4: 36744 10,12: - 2: 240 + 4: 240 9,14: - 2: 34952 + 4: 34952 10,13: - 2: 61440 + 4: 61440 0: 3584 9,15: - 2: 34952 + 4: 34952 9,16: - 2: 34952 + 4: 34952 10,15: - 2: 61440 + 4: 61440 0: 3598 10,14: 0: 3598 - 2: 57344 + 4: 57344 10,16: 0: 3598 - 2: 57344 + 4: 57344 11,13: 0: 1792 - 2: 61440 + 4: 61440 11,14: 0: 1799 - 2: 61440 + 4: 61440 11,15: 0: 1799 - 2: 61440 + 4: 61440 11,16: 0: 1799 - 2: 61440 + 4: 61440 12,13: 0: 3073 - 2: 61712 + 4: 61712 12,14: - 2: 61713 + 4: 61713 0: 3084 12,15: - 2: 61713 + 4: 61713 0: 3084 13,-3: 0: 65327 13,-2: - 2: 112 + 4: 112 0: 28672 13,-1: 0: 65319 @@ -6814,7 +6880,7 @@ entities: 14,-1: 0: 65358 14,-2: - 2: 224 + 4: 224 0: 57344 14,0: 0: 61695 @@ -6827,110 +6893,110 @@ entities: 14,2: 0: 65535 -16,13: - 2: 8738 + 4: 8738 0: 8 -16,14: - 2: 8742 + 4: 8742 0: 17600 -16,15: - 2: 226 + 4: 226 0: 4 -15,13: - 2: 13117 + 4: 13117 0: 2 -15,14: - 2: 62269 + 4: 62269 0: 2 -15,15: - 2: 240 + 4: 240 -14,13: - 2: 8749 + 4: 8749 0: 2 -14,14: - 2: 53805 + 4: 53805 0: 8194 -14,15: - 2: 240 + 4: 240 -13,13: 0: 119 - 2: 8712 + 4: 8712 -13,14: - 2: 61997 + 4: 61997 0: 2 -13,15: - 2: 240 + 4: 240 -12,13: - 2: 8749 + 4: 8749 0: 2 -12,14: - 2: 53805 + 4: 53805 0: 8194 -12,15: - 2: 240 + 4: 240 -11,13: - 2: 26213 + 4: 26213 0: 2 -11,14: - 2: 13925 + 4: 13925 0: 16514 -11,15: - 2: 240 + 4: 240 -10,13: 0: 4369 - 2: 8738 + 4: 8738 -10,14: 0: 4369 - 2: 8738 + 4: 8738 -10,15: 0: 1 - 2: 50 + 4: 50 -20,-3: 0: 65280 -21,-3: 0: 65152 -20,-2: 0: 15 - 2: 30464 + 4: 30464 -21,-2: 0: 14 - 2: 65280 + 4: 65280 -20,-1: - 2: 7509 + 4: 7509 -20,0: - 2: 3857 + 4: 3857 -19,-3: 0: 65344 -19,-2: 0: 65295 -19,-1: 0: 15 - 2: 3840 + 4: 3840 -18,-3: 0: 65280 -18,-2: 0: 64847 -18,-1: 0: 34957 - 2: 8960 + 4: 8960 -18,0: - 2: 8994 + 4: 8994 0: 2184 -17,-4: 0: 30583 -17,-5: 0: 30583 -4,-18: - 2: 818 + 4: 818 0: 34952 -5,-18: - 2: 4080 + 4: 4080 -4,-20: 0: 57568 -4,-21: - 2: 8736 + 4: 8736 0: 34944 -4,-19: - 2: 8736 + 4: 8736 0: 34944 -3,-20: 0: 62451 @@ -6943,35 +7009,35 @@ entities: -2,-20: 0: 4112 -2,-19: - 2: 4368 + 4: 4368 -2,-18: - 2: 4369 + 4: 4369 -2,-21: - 2: 4368 + 4: 4368 2,-20: 0: 63736 2,-21: - 2: 4368 + 4: 4368 0: 52424 2,-19: - 2: 4368 + 4: 4368 0: 52424 2,-18: - 2: 4369 + 4: 4369 0: 52428 3,-20: 0: 61937 3,-19: 0: 13105 - 2: 34944 + 4: 34944 3,-18: 0: 13107 - 2: 34952 + 4: 34952 3,-21: 0: 13105 - 2: 34944 + 4: 34944 4,-18: - 2: 12288 + 4: 12288 -20,4: 0: 61166 -20,3: @@ -6982,27 +7048,27 @@ entities: 0: 3310 -19,4: 0: 30583 - 2: 2048 + 4: 2048 -19,5: 0: 30583 -19,6: 0: 887 - 2: 8 + 4: 8 -19,3: 0: 30583 - 2: 8 + 4: 8 -18,4: - 2: 10018 + 4: 10018 -18,6: - 2: 13111 + 4: 13111 -18,7: - 2: 13171 + 4: 13171 -18,8: - 2: 55091 + 4: 55091 -18,3: - 2: 8743 + 4: 8743 -18,5: - 2: 8738 + 4: 8738 -17,4: 0: 30583 -17,3: @@ -7012,47 +7078,47 @@ entities: -20,2: 0: 61166 -19,0: - 2: 12032 + 4: 12032 -19,1: 0: 30576 - 2: 2050 + 4: 2050 -19,2: 0: 30583 -18,1: - 2: 10018 + 4: 10018 -18,2: - 2: 8738 + 4: 8738 -17,2: 0: 30583 -20,-8: - 2: 36751 + 4: 36751 -21,-8: - 2: 7950 + 4: 7950 -20,-6: 0: 4095 -21,-6: 0: 36606 -20,-9: - 2: 34954 + 4: 34954 0: 1365 -19,-8: - 2: 3855 + 4: 3855 -20,-7: - 2: 2184 + 4: 2184 -19,-6: 0: 20479 -19,-9: - 2: 34954 + 4: 34954 0: 1365 -18,-8: - 2: 36751 + 4: 36751 -18,-6: 0: 4095 -18,-9: - 2: 34954 + 4: 34954 0: 1365 -18,-7: - 2: 2184 + 4: 2184 0,17: 0: 65038 -1,17: @@ -7069,16 +7135,16 @@ entities: 0: 274 1,16: 0: 272 - 2: 51200 + 4: 51200 1,17: 0: 4354 - 2: 1092 + 4: 1092 1,18: 0: 8209 1,19: 0: 18 -3,17: - 2: 273 + 4: 273 0: 52234 -3,18: 0: 41164 @@ -7095,39 +7161,39 @@ entities: -1,20: 0: 30847 -23,-7: - 2: 52416 + 4: 52416 -23,-6: - 2: 52428 + 4: 52428 -23,-5: - 2: 52428 + 4: 52428 -23,-4: - 2: 52428 + 4: 52428 -22,-7: - 2: 8184 + 4: 8184 -22,-6: - 2: 4369 + 4: 4369 0: 3308 -22,-8: - 2: 34952 + 4: 34952 -22,-9: - 2: 34816 + 4: 34816 -21,-7: - 2: 273 + 4: 273 -21,-9: - 2: 35227 + 4: 35227 0: 1092 -23,-3: - 2: 52428 + 4: 52428 -23,-2: - 2: 52428 + 4: 52428 -22,-3: - 2: 4368 + 4: 4368 0: 60416 -22,-2: - 2: 65297 + 4: 65297 0: 12 -18,9: - 2: 3857 + 4: 3857 -4,-22: 0: 57568 -4,-23: @@ -7149,244 +7215,256 @@ entities: 3,-22: 0: 61937 12,16: - 2: 61713 + 4: 61713 0: 3084 13,13: 0: 3840 - 2: 61440 + 4: 61440 13,14: 0: 3855 - 2: 61440 + 4: 61440 13,15: 0: 3855 - 2: 61440 + 4: 61440 13,16: 0: 3855 - 2: 61440 + 4: 61440 14,13: - 2: 12834 + 4: 12834 14,15: - 2: 12834 + 4: 12834 14,14: - 2: 8738 + 4: 8738 14,16: - 2: 8738 + 4: 8738 16,12: - 2: 1 + 4: 1 5,-18: - 2: 57344 + 4: 57344 6,-18: - 2: 61440 + 4: 61440 7,-18: - 2: 47850 + 4: 47850 7,-20: - 2: 43754 + 4: 43754 7,-21: - 2: 41696 + 4: 43682 7,-19: - 2: 43690 + 4: 43690 8,-20: - 2: 240 + 4: 61440 0: 3598 8,-19: - 2: 240 + 4: 61440 0: 3598 8,-18: - 2: 240 + 4: 61440 0: 3598 -8,-18: - 2: 24048 + 4: 24048 -9,-18: - 2: 63232 + 4: 63232 -9,-17: - 2: 15 + 4: 15 -7,-18: - 2: 304 + 4: 304 -6,-18: - 2: 2240 + 4: 2240 17,9: 0: 1911 16,11: - 2: 8 + 4: 8 17,11: - 2: 1 + 4: 1 18,9: - 2: 28672 + 4: 28672 18,10: - 2: 17476 + 4: 17476 18,11: - 2: 1092 + 4: 1092 21,0: 0: 21845 - 2: 34952 + 4: 34952 21,1: 0: 5 - 2: 36744 + 4: 36744 21,2: 0: 21845 - 2: 34952 + 4: 34952 21,3: 0: 85 - 2: 61576 + 4: 61576 21,-1: 0: 20480 - 2: 33008 + 4: 33008 22,0: 0: 21845 - 2: 34952 + 4: 34952 22,1: 0: 5 - 2: 36744 + 4: 36744 22,2: 0: 21845 - 2: 34952 + 4: 34952 22,3: 0: 85 - 2: 63624 + 4: 63624 22,-1: 0: 20480 - 2: 35056 + 4: 35056 23,0: 0: 4369 - 2: 58436 + 4: 58436 23,1: 0: 1 - 2: 1792 + 4: 1792 23,2: 0: 4369 - 2: 17632 + 4: 17632 23,3: 0: 17 - 2: 29764 + 4: 29764 23,-1: 0: 4096 - 2: 17520 + 4: 17520 24,0: - 2: 4096 + 4: 4096 24,2: - 2: 17 + 4: 17 -20,-12: - 2: 33008 + 4: 33008 0: 20480 -21,-12: - 2: 39408 + 4: 39408 0: 16384 -20,-11: 0: 21845 - 2: 35464 + 4: 35464 -21,-11: - 2: 39833 + 4: 39833 0: 17476 -20,-10: 0: 21845 - 2: 34952 + 4: 34952 -21,-10: - 2: 39321 + 4: 39321 0: 17476 -19,-12: - 2: 35056 + 4: 35056 0: 20480 -19,-11: 0: 21845 - 2: 35464 + 4: 35464 -19,-10: 0: 21845 - 2: 34952 + 4: 34952 -18,-12: - 2: 48 + 4: 48 0: 4096 -18,-11: 0: 21841 - 2: 35464 + 4: 35464 -18,-10: 0: 21845 - 2: 34952 + 4: 34952 -17,-11: 0: 4352 -17,-10: 0: 4369 -17,-9: 0: 273 - 2: 1094 + 4: 1094 + 7,-22: + 4: 57344 + 8,-22: + 4: 12288 8,-21: - 2: 3632 + 4: 61454 + 0: 3584 9,17: - 2: 34952 + 4: 34952 10,17: - 2: 63616 + 4: 63616 0: 14 11,17: 0: 7 - 2: 12288 + 4: 12288 11,18: - 2: 14 + 4: 14 12,18: - 2: 15 + 4: 15 12,17: - 2: 33041 + 4: 33041 0: 12 13,17: 0: 15 - 2: 61984 + 4: 61984 14,17: - 2: 12834 + 4: 12834 9,-20: 0: 3855 - 2: 4336 + 4: 61440 9,-19: 0: 3855 - 2: 4336 + 4: 61440 9,-18: 0: 3855 - 2: 4336 - 9,-17: - 0: 3855 - 2: 240 + 4: 61440 9,-21: - 2: 7936 + 4: 61455 + 0: 3840 10,-20: 0: 3855 - 2: 8432 + 4: 61440 10,-19: 0: 3855 - 2: 8432 + 4: 61440 10,-18: 0: 3855 - 2: 8432 + 4: 61440 10,-21: - 2: 12032 + 4: 61455 + 0: 3840 11,-20: 0: 257 - 2: 17524 + 4: 29764 11,-19: 0: 257 - 2: 17492 + 4: 29764 11,-18: 0: 257 - 2: 17492 + 4: 29764 11,-21: - 2: 18176 + 4: 29767 + 0: 256 24,1: - 2: 4369 + 4: 4369 -12,-18: - 2: 32768 + 4: 32768 -11,-18: - 2: 63488 + 4: 63488 -10,-18: - 2: 65280 + 4: 65280 -10,-17: - 2: 1 + 4: 1 -16,-14: - 2: 52224 + 4: 52224 -15,-14: - 2: 65280 + 4: 65280 -14,-14: - 2: 65280 + 4: 65280 -13,-14: - 2: 4915 + 4: 4915 0: 1024 -13,-15: - 2: 13111 + 4: 13111 + 13,-14: + 4: 544 + 0: 52416 + 14,-14: + 4: 286 + 15,-14: + 4: 36047 uniqueMixes: - volume: 2500 temperature: 293.15 @@ -7398,6 +7476,16 @@ entities: moles: Oxygen: 27.225372 Nitrogen: 102.419266 + - volume: 2500 + temperature: 293.14975 + moles: + Oxygen: 20.078888 + Nitrogen: 75.53487 + - volume: 2500 + temperature: 293.15 + moles: + Oxygen: 21.824873 + Nitrogen: 82.1031 - volume: 2500 immutable: True moles: {} @@ -7408,6 +7496,11 @@ entities: temperature: 293.15 moles: Oxygen: 6666.982 + - volume: 2500 + temperature: 293.15 + moles: + Oxygen: 21.813705 + Nitrogen: 82.06108 - volume: 2500 temperature: 293.15 moles: @@ -7610,6 +7703,24 @@ entities: - type: Action originalIconColor: '#FFFFFFFF' container: 12806 + - uid: 20971 + mapInit: true + paused: true + components: + - type: Transform + parent: 6339 + - type: Action + originalIconColor: '#FFFFFFFF' + container: 6339 + - uid: 20972 + mapInit: true + paused: true + components: + - type: Transform + parent: 6340 + - type: Action + originalIconColor: '#FFFFFFFF' + container: 6340 - uid: 23601 mapInit: true paused: true @@ -7648,15 +7759,6 @@ entities: - type: Action originalIconColor: '#FFFFFFFF' container: 5957 - - uid: 7580 - mapInit: true - paused: true - components: - - type: Transform - parent: 7578 - - type: Action - originalIconColor: '#FFFFFFFF' - container: 7578 - uid: 23596 mapInit: true paused: true @@ -7713,15 +7815,6 @@ entities: - type: Action originalIconColor: '#FFFFFFFF' container: 5957 - - uid: 7579 - mapInit: true - paused: true - components: - - type: Transform - parent: 7578 - - type: Action - originalIconColor: '#FFFFFFFF' - container: 7578 - uid: 23586 mapInit: true paused: true @@ -7760,15 +7853,6 @@ entities: - type: Action originalIconColor: '#FFFFFFFF' container: 6700 - - uid: 2783 - mapInit: true - paused: true - components: - - type: Transform - parent: 7608 - - type: Action - originalIconColor: '#FFFFFFFF' - container: 7608 - uid: 5380 mapInit: true paused: true @@ -7787,15 +7871,6 @@ entities: - type: Action originalIconColor: '#FFFFFFFF' container: 10908 - - uid: 5677 - mapInit: true - paused: true - components: - - type: Transform - parent: 7635 - - type: Action - originalIconColor: '#FFFFFFFF' - container: 7635 - uid: 5680 mapInit: true paused: true @@ -7832,15 +7907,6 @@ entities: - type: Action originalIconColor: '#FFFFFFFF' container: 6579 - - uid: 7600 - mapInit: true - paused: true - components: - - type: Transform - parent: 7599 - - type: Action - originalIconColor: '#FFFFFFFF' - container: 7599 - uid: 10515 mapInit: true paused: true @@ -8005,6 +8071,36 @@ entities: - 8912 - type: Fixtures fixtures: {} + - uid: 3802 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-26.5 + parent: 2 + - type: DeviceList + devices: + - 3675 + - 7517 + - 3678 + - 3686 + - 7797 + - type: Fixtures + fixtures: {} + - uid: 3818 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 58.5,-29.5 + parent: 2 + - type: DeviceList + devices: + - 784 + - 3674 + - 3673 + - 7589 + - 20707 + - type: Fixtures + fixtures: {} - uid: 3928 components: - type: Transform @@ -8050,6 +8146,19 @@ entities: - 20258 - type: Fixtures fixtures: {} + - uid: 4184 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 53.5,5.5 + parent: 2 + - type: DeviceList + devices: + - 20237 + - 18183 + - 19576 + - type: Fixtures + fixtures: {} - uid: 7398 components: - type: Transform @@ -8143,7 +8252,7 @@ entities: - 3392 - 21014 - 11927 - - 26165 + - 29002 - type: Fixtures fixtures: {} - uid: 11933 @@ -8277,6 +8386,8 @@ entities: - 14188 - 14185 - 14187 + - 838 + - 784 - type: Fixtures fixtures: {} - uid: 18630 @@ -9009,8 +9120,6 @@ entities: - 20145 - 20146 - 20147 - - 20403 - - 20402 - 20144 - 20190 - 20143 @@ -9073,19 +9182,21 @@ entities: parent: 2 - type: DeviceList devices: + - 7797 - 20698 - - 20696 - - 19170 - - 3729 - - 19171 + - 20699 - 20136 - - 20408 - - 20409 - - 20013 - - 20012 + - 19171 + - 3729 + - 19170 - 20011 + - 20012 + - 20013 - 3286 - - 3279 + - 20409 + - 20696 + - 20408 + - 25036 - type: Fixtures fixtures: {} - uid: 20521 @@ -9197,6 +9308,7 @@ entities: - 3392 - 749 - 11927 + - 29002 - type: Fixtures fixtures: {} - uid: 20529 @@ -9633,20 +9745,6 @@ entities: - 20132 - type: Fixtures fixtures: {} - - uid: 20559 - components: - - type: Transform - pos: 13.5,-45.5 - parent: 2 - - type: DeviceList - devices: - - 20130 - - 20402 - - 20403 - - 18090 - - 19267 - - type: Fixtures - fixtures: {} - uid: 20560 components: - type: Transform @@ -9655,17 +9753,17 @@ entities: parent: 2 - type: DeviceList devices: - - 20402 - - 20403 - 20129 - 18072 - 18071 - - 19267 - - 18090 - - 20130 - - 18136 - - 19302 + - 24640 - 23277 + - 24637 + - 24644 + - 24641 + - 24643 + - 24632 + - 24630 - type: Fixtures fixtures: {} - uid: 20561 @@ -9776,53 +9874,6 @@ entities: - type: DeviceList devices: - 20138 - - 17784 - - 17786 - - 20278 - - 20700 - - type: Fixtures - fixtures: {} - - uid: 20569 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 39.5,-43.5 - parent: 2 - - type: DeviceList - devices: - - 20700 - - 20278 - - 19479 - - 18127 - - 20195 - - 20196 - - 3286 - - type: Fixtures - fixtures: {} - - uid: 20570 - components: - - type: Transform - pos: 50.5,-30.5 - parent: 2 - - type: DeviceList - devices: - - 20194 - - 18144 - - 19497 - - 20704 - - type: Fixtures - fixtures: {} - - uid: 20571 - components: - - type: Transform - pos: 55.5,-24.5 - parent: 2 - - type: DeviceList - devices: - - 20197 - - 18145 - - 19509 - - 20703 - type: Fixtures fixtures: {} - uid: 20573 @@ -9837,7 +9888,7 @@ entities: - 20708 - 20707 - 19527 - - 18155 + - 838 - type: Fixtures fixtures: {} - uid: 20574 @@ -9881,18 +9932,11 @@ entities: parent: 2 - type: DeviceList devices: - - 20700 - - 20196 - - 20195 - - 20194 - - 20197 - - 19498 - - 18143 - - 18142 + - 7517 + - 3801 + - 20706 - 20701 - 20702 - - 20703 - - 20704 - 3279 - type: Fixtures fixtures: {} @@ -9952,18 +9996,6 @@ entities: - 20225 - type: Fixtures fixtures: {} - - uid: 20580 - components: - - type: Transform - pos: 56.5,7.5 - parent: 2 - - type: DeviceList - devices: - - 20237 - - 18183 - - 19576 - - type: Fixtures - fixtures: {} - uid: 20581 components: - type: Transform @@ -10598,7 +10630,7 @@ entities: devices: - 20879 - 20936 - - 20942 + - 29066 - type: Fixtures fixtures: {} - uid: 20738 @@ -10633,6 +10665,28 @@ entities: - 20680 - type: Fixtures fixtures: {} + - uid: 21933 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 49.5,-40.5 + parent: 2 + - type: DeviceList + devices: + - 23361 + - 23360 + - 22656 + - 9920 + - 22431 + - 17778 + - 23359 + - 21114 + - 21110 + - 7704 + - 17551 + - 3801 + - type: Fixtures + fixtures: {} - uid: 22739 components: - type: Transform @@ -10711,7 +10765,6 @@ entities: - 23321 - 11928 - 27469 - - 26165 - 21014 - type: Fixtures fixtures: {} @@ -10928,6 +10981,12 @@ entities: rot: -1.5707963267948966 rad pos: 32.5,33.5 parent: 2 + - uid: 29061 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 36.5,-42.5 + parent: 2 - proto: AirlockArmoryGlassLocked entities: - uid: 244 @@ -11043,11 +11102,11 @@ entities: rot: -1.5707963267948966 rad pos: 50.5,-14.5 parent: 2 - - uid: 7940 + - uid: 7575 components: - type: Transform rot: -1.5707963267948966 rad - pos: 48.5,-26.5 + pos: 48.5,-27.5 parent: 2 - proto: AirlockCargoLocked entities: @@ -11707,72 +11766,68 @@ entities: rot: 1.5707963267948966 rad pos: 64.5,-17.5 parent: 2 - - uid: 3678 + - uid: 6898 components: - type: Transform - pos: 48.5,-43.5 + rot: -1.5707963267948966 rad + pos: 55.5,-47.5 parent: 2 - type: DeviceLinkSink invokeCounter: 1 - type: DeviceLinkSource linkedPorts: - 3683: + 6906: - - DoorStatus - DoorBolt - 3680: + 14970: - - DoorStatus - DoorBolt - - uid: 3680 + - uid: 6906 components: - type: Transform rot: -1.5707963267948966 rad - pos: 45.5,-44.5 + pos: 54.5,-44.5 parent: 2 - type: DeviceLinkSink invokeCounter: 1 - type: DeviceLinkSource linkedPorts: - 3802: + 13652: - - DoorStatus - DoorBolt - 3678: + 6898: - - DoorStatus - DoorBolt - 21519: - - - DoorStatus - - InputB - - uid: 3683 + - uid: 13652 components: - type: Transform rot: -1.5707963267948966 rad - pos: 45.5,-43.5 + pos: 54.5,-47.5 parent: 2 - type: DeviceLinkSink invokeCounter: 1 - type: DeviceLinkSource linkedPorts: - 3802: + 14970: - - DoorStatus - DoorBolt - 3678: + 6906: - - DoorStatus - DoorBolt - 21519: - - - DoorStatus - - InputA - - uid: 3802 + - uid: 14970 components: - type: Transform - pos: 48.5,-44.5 + rot: -1.5707963267948966 rad + pos: 55.5,-44.5 parent: 2 - type: DeviceLinkSink invokeCounter: 1 - type: DeviceLinkSource linkedPorts: - 3680: + 13652: - - DoorStatus - DoorBolt - 3683: + 6898: - - DoorStatus - DoorBolt - proto: AirlockExternalGlassCommandLocked @@ -12315,6 +12370,12 @@ entities: parent: 2 - proto: AirlockMaintCargoLocked entities: + - uid: 7710 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 45.5,-36.5 + parent: 2 - uid: 21990 components: - type: Transform @@ -12452,11 +12513,6 @@ entities: rot: 3.141592653589793 rad pos: -38.5,-16.5 parent: 2 - - uid: 21960 - components: - - type: Transform - pos: -6.5,-60.5 - parent: 2 - uid: 22016 components: - type: Transform @@ -12615,6 +12671,17 @@ entities: rot: 3.141592653589793 rad pos: 27.5,38.5 parent: 2 + - uid: 23788 + components: + - type: Transform + pos: 40.5,-30.5 + parent: 2 + - uid: 25722 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 41.5,-34.5 + parent: 2 - uid: 27465 components: - type: Transform @@ -12627,6 +12694,11 @@ entities: parent: 2 - proto: AirlockMaintMedLocked entities: + - uid: 3375 + components: + - type: Transform + pos: -6.5,-60.5 + parent: 2 - uid: 5394 components: - type: Transform @@ -12677,6 +12749,12 @@ entities: rot: -1.5707963267948966 rad pos: 33.5,-47.5 parent: 2 + - uid: 22639 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 45.5,-39.5 + parent: 2 - proto: AirlockMaintServiceLocked entities: - uid: 21717 @@ -12696,11 +12774,6 @@ entities: - type: Transform pos: 20.5,-49.5 parent: 2 - - uid: 21959 - components: - - type: Transform - pos: -8.5,-57.5 - parent: 2 - proto: AirlockMedicalGlassLocked entities: - uid: 1673 @@ -12741,6 +12814,16 @@ entities: parent: 2 - proto: AirlockMedicalLocked entities: + - uid: 1662 + components: + - type: Transform + pos: 15.5,-45.5 + parent: 2 + - uid: 1709 + components: + - type: Transform + pos: -8.5,-57.5 + parent: 2 - uid: 21944 components: - type: Transform @@ -12756,11 +12839,6 @@ entities: - type: Transform pos: 8.5,-46.5 parent: 2 - - uid: 21954 - components: - - type: Transform - pos: 11.5,-47.5 - parent: 2 - uid: 21955 components: - type: Transform @@ -12796,17 +12874,19 @@ entities: parent: 2 - proto: AirlockQuartermasterGlassLocked entities: - - uid: 7651 + - uid: 7578 components: - type: Transform - pos: 48.5,-32.5 + rot: -1.5707963267948966 rad + pos: 59.5,-24.5 parent: 2 - proto: AirlockQuartermasterLocked entities: - - uid: 7652 + - uid: 3785 components: - type: Transform - pos: 51.5,-37.5 + rot: -1.5707963267948966 rad + pos: 56.5,-27.5 parent: 2 - proto: AirlockResearchDirectorGlassLocked entities: @@ -12838,34 +12918,32 @@ entities: parent: 2 - proto: AirlockSalvageGlassLocked entities: - - uid: 4010 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 41.5,-34.5 - parent: 2 - - uid: 6486 + - uid: 944 components: - type: Transform rot: -1.5707963267948966 rad - pos: 45.5,-36.5 + pos: 48.5,-33.5 parent: 2 - - uid: 6681 + - uid: 21112 components: - type: Transform rot: -1.5707963267948966 rad - pos: 45.5,-37.5 + pos: 48.5,-34.5 parent: 2 - proto: AirlockSalvageLocked entities: - - uid: 2042 + - uid: 3819 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 39.5,-45.5 + pos: 49.5,-42.5 parent: 2 - proto: AirlockScienceGlassLocked entities: + - uid: 3376 + components: + - type: Transform + pos: 53.5,9.5 + parent: 2 - uid: 20221 components: - type: Transform @@ -12921,12 +12999,6 @@ entities: rot: 1.5707963267948966 rad pos: 46.5,4.5 parent: 2 - - uid: 22004 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 53.5,9.5 - parent: 2 - proto: AirlockSecurityGlassLocked entities: - uid: 1094 @@ -13300,6 +13372,12 @@ entities: rot: 1.5707963267948966 rad pos: 66.5,14.5 parent: 2 + - uid: 23789 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 40.5,-37.5 + parent: 2 - uid: 24437 components: - type: Transform @@ -13414,6 +13492,11 @@ entities: rot: -1.5707963267948966 rad pos: 11.5,-1.5 parent: 2 + - uid: 842 + components: + - type: Transform + pos: 17.5,-49.5 + parent: 2 - uid: 1121 components: - type: Transform @@ -13520,6 +13603,12 @@ entities: - type: Transform pos: -49.5,-8.5 parent: 2 + - uid: 17508 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 34.5,-36.5 + parent: 2 - uid: 20042 components: - type: Transform @@ -13793,16 +13882,6 @@ entities: - type: Transform pos: -11.5,-49.5 parent: 2 - - uid: 21956 - components: - - type: Transform - pos: 9.5,-49.5 - parent: 2 - - uid: 21957 - components: - - type: Transform - pos: 10.5,-49.5 - parent: 2 - uid: 22014 components: - type: Transform @@ -13851,6 +13930,11 @@ entities: rot: -1.5707963267948966 rad pos: -9.5,-11.5 parent: 2 + - uid: 23784 + components: + - type: Transform + pos: 16.5,-49.5 + parent: 2 - uid: 25288 components: - type: Transform @@ -13918,6 +14002,26 @@ entities: parent: 2 - proto: AirSensor entities: + - uid: 784 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 61.5,-27.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 3818 + - 14190 + - uid: 3801 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 54.5,-38.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 21933 + - 20576 - uid: 3910 components: - type: Transform @@ -13958,6 +14062,26 @@ entities: deviceLists: - 28610 - 28620 + - uid: 7517 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 51.5,-27.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 20576 + - 3802 + - uid: 7797 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 47.5,-30.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 3802 + - 20520 - uid: 11758 components: - type: Transform @@ -14297,37 +14421,6 @@ entities: deviceLists: - 20520 - 20519 - - uid: 20700 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 41.5,-39.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20568 - - 20569 - - 20576 - - uid: 20703 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 54.5,-27.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20571 - - 20576 - - uid: 20704 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 50.5,-33.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20576 - - 20570 - uid: 20705 components: - type: Transform @@ -14352,6 +14445,7 @@ entities: - 26900 - 20573 - 14190 + - 20576 - uid: 20707 components: - type: Transform @@ -14363,6 +14457,7 @@ entities: - 26900 - 20573 - 14190 + - 3818 - uid: 20708 components: - type: Transform @@ -14684,16 +14779,6 @@ entities: - type: DeviceNetwork deviceLists: - 20483 - - uid: 26165 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -10.5,-5.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 23338 - - 11914 - uid: 27470 components: - type: Transform @@ -14715,6 +14800,15 @@ entities: - 13980 - 18630 - 20589 + - uid: 29002 + components: + - type: Transform + pos: -10.5,-6.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 20526 + - 11914 - proto: AirSensorFreezer entities: - uid: 20699 @@ -14726,6 +14820,7 @@ entities: - type: DeviceNetwork deviceLists: - 20522 + - 20520 - uid: 20709 components: - type: Transform @@ -14864,8 +14959,7 @@ entities: - uid: 6918 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 15.57291,-46.3183 + pos: 12.291926,-44.259228 parent: 2 - proto: APCBasic entities: @@ -14885,6 +14979,14 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 840 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-28.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 855 components: - type: Transform @@ -14909,6 +15011,14 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 5041 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 8.5,-45.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 5201 components: - type: Transform @@ -14917,6 +15027,21 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 7678 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 58.5,-28.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 7693 + components: + - type: Transform + pos: 50.5,-31.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 10312 components: - type: Transform @@ -14933,6 +15058,14 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 12595 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -50.5,-29.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 12755 components: - type: Transform @@ -15224,37 +15357,6 @@ entities: parent: 2 - type: Fixtures fixtures: {} - - uid: 12861 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 37.5,-47.5 - parent: 2 - - type: Fixtures - fixtures: {} - - uid: 12862 - components: - - type: Transform - pos: 42.5,-34.5 - parent: 2 - - type: Fixtures - fixtures: {} - - uid: 12863 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 51.5,-35.5 - parent: 2 - - type: Fixtures - fixtures: {} - - uid: 12864 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 48.5,-25.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 12865 components: - type: Transform @@ -15593,6 +15695,22 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 24754 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 8.5,-42.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 25949 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 37.5,-39.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 26351 components: - type: Transform @@ -15666,6 +15784,14 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 29073 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 50.5,-24.5 + parent: 2 + - type: Fixtures + fixtures: {} - proto: APCElectronics entities: - uid: 10855 @@ -15740,8 +15866,7 @@ entities: - uid: 7994 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -8.668182,73.59841 + pos: -8.537195,70.65707 parent: 2 - proto: Ash entities: @@ -15882,16 +16007,6 @@ entities: - type: Transform pos: -60.469177,19.60248 parent: 2 - - uid: 7575 - components: - - type: Transform - pos: 39.473785,-38.499756 - parent: 2 - - uid: 7690 - components: - - type: Transform - pos: 52.38997,-26.32006 - parent: 2 - uid: 10425 components: - type: Transform @@ -15907,11 +16022,22 @@ entities: - type: Transform pos: -5.05616,51.35117 parent: 2 + - uid: 21987 + components: + - type: Transform + pos: 54.280495,-36.520348 + parent: 2 - uid: 22473 components: - type: Transform pos: 40.890102,-4.9265594 parent: 2 + - uid: 24852 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 50.959293,-25.818462 + parent: 2 - uid: 25228 components: - type: Transform @@ -15938,8 +16064,7 @@ entities: - uid: 21586 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -8.136932,73.62966 + pos: -9.708774,73.47897 parent: 2 - proto: AtmosDeviceFanDirectional entities: @@ -16241,29 +16366,30 @@ entities: parent: 2 - proto: AtmosFixBlockerMarker entities: - - uid: 3829 + - uid: 2380 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,43.5 + pos: -38.5,42.5 parent: 2 - - uid: 3831 + - uid: 2655 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -38.5,41.5 + pos: -40.5,42.5 parent: 2 - - uid: 3858 + - uid: 2657 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -40.5,42.5 + pos: -40.5,43.5 parent: 2 - - uid: 3864 + - uid: 3829 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -40.5,43.5 + pos: -38.5,43.5 + parent: 2 + - uid: 3831 + components: + - type: Transform + pos: -39.5,42.5 parent: 2 - uid: 4023 components: @@ -16325,11 +16451,15 @@ entities: - type: Transform pos: -35.5,12.5 parent: 2 + - uid: 4822 + components: + - type: Transform + pos: -39.5,43.5 + parent: 2 - uid: 6192 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,42.5 + pos: -38.5,41.5 parent: 2 - uid: 17046 components: @@ -16361,28 +16491,14 @@ entities: - type: Transform pos: -35.5,8.5 parent: 2 - - uid: 25763 + - uid: 25876 components: - type: Transform - rot: -1.5707963267948966 rad pos: -39.5,41.5 parent: 2 - - uid: 25783 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -38.5,43.5 - parent: 2 - - uid: 25855 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -38.5,42.5 - parent: 2 - - uid: 25857 + - uid: 25888 components: - type: Transform - rot: -1.5707963267948966 rad pos: -40.5,41.5 parent: 2 - proto: AtmosFixFreezerMarker @@ -17888,6 +18004,18 @@ entities: - type: Transform pos: 18.5,-40.5 parent: 2 + - uid: 643 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -29.5,1.5 + parent: 2 + - uid: 846 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 32.5,-42.5 + parent: 2 - uid: 1042 components: - type: Transform @@ -17935,6 +18063,17 @@ entities: - type: Transform pos: 15.5,-65.5 parent: 2 + - uid: 17492 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 32.5,-43.5 + parent: 2 + - uid: 25030 + components: + - type: Transform + pos: 38.5,-31.5 + parent: 2 - uid: 25113 components: - type: Transform @@ -17975,26 +18114,11 @@ entities: - type: Transform pos: -0.5,-57.5 parent: 2 - - uid: 25129 - components: - - type: Transform - pos: 15.5,-50.5 - parent: 2 - uid: 25133 components: - type: Transform pos: 26.5,-51.5 parent: 2 - - uid: 25134 - components: - - type: Transform - pos: 32.5,-42.5 - parent: 2 - - uid: 25135 - components: - - type: Transform - pos: 32.5,-41.5 - parent: 2 - uid: 25142 components: - type: Transform @@ -18010,11 +18134,6 @@ entities: - type: Transform pos: -35.5,-0.5 parent: 2 - - uid: 25152 - components: - - type: Transform - pos: -35.5,0.5 - parent: 2 - uid: 25155 components: - type: Transform @@ -18112,12 +18231,6 @@ entities: rot: 1.5707963267948966 rad pos: 35.5,-33.5 parent: 2 - - uid: 27527 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 40.5,-31.5 - parent: 2 - uid: 27776 components: - type: Transform @@ -18368,11 +18481,6 @@ entities: parent: 2 - proto: Bed entities: - - uid: 944 - components: - - type: Transform - pos: 54.5,-37.5 - parent: 2 - uid: 1514 components: - type: Transform @@ -18463,6 +18571,11 @@ entities: - type: Transform pos: -30.5,-33.5 parent: 2 + - uid: 7940 + components: + - type: Transform + pos: 57.5,-30.5 + parent: 2 - uid: 8237 components: - type: Transform @@ -18658,10 +18771,11 @@ entities: parent: 2 - proto: BedsheetQM entities: - - uid: 7623 + - uid: 7806 components: - type: Transform - pos: 54.5,-37.5 + rot: -1.5707963267948966 rad + pos: 57.5,-30.5 parent: 2 - proto: BedsheetRD entities: @@ -19221,10 +19335,10 @@ entities: parent: 2 - proto: BookHowToRockAndStone entities: - - uid: 7576 + - uid: 7793 components: - type: Transform - pos: 38.577377,-46.431248 + pos: 46.42163,-41.889248 parent: 2 - proto: BookMedicalReferenceBook entities: @@ -19262,6 +19376,16 @@ entities: - type: Transform pos: -19.533676,-56.385487 parent: 2 + - uid: 27061 + components: + - type: Transform + pos: 39.334965,-35.412815 + parent: 2 + - uid: 27088 + components: + - type: Transform + pos: 39.66309,-35.412815 + parent: 2 - proto: BooksBag entities: - uid: 135 @@ -19291,6 +19415,11 @@ entities: - type: Transform pos: -13.5,-14.5 parent: 2 + - uid: 848 + components: + - type: Transform + pos: 35.5,-38.5 + parent: 2 - uid: 1003 components: - type: Transform @@ -19406,6 +19535,16 @@ entities: - type: Transform pos: -5.5,-2.5 parent: 2 + - uid: 23790 + components: + - type: Transform + pos: 36.5,-38.5 + parent: 2 + - uid: 25100 + components: + - type: Transform + pos: 39.5,-38.5 + parent: 2 - uid: 25577 components: - type: Transform @@ -19532,7 +19671,7 @@ entities: - uid: 6913 components: - type: Transform - pos: 13.5048895,-46.333755 + pos: 10.666926,-44.477978 parent: 2 - uid: 8623 components: @@ -19587,10 +19726,17 @@ entities: - type: Transform pos: -54.39993,11.5008955 parent: 2 - - uid: 7618 + - uid: 21976 components: - type: Transform - pos: 35.512676,-35.326195 + pos: 51.51487,-32.348473 + parent: 2 +- proto: BoxFolderBaseEmpty + entities: + - uid: 3521 + components: + - type: Transform + pos: -8.6988125,-4.385806 parent: 2 - proto: BoxFolderBlue entities: @@ -19636,11 +19782,6 @@ entities: - type: Transform pos: -61.544456,26.568323 parent: 2 - - uid: 7638 - components: - - type: Transform - pos: 52.625668,-33.126396 - parent: 2 - uid: 10822 components: - type: Transform @@ -19666,6 +19807,11 @@ entities: rot: 1.5707963267948966 rad pos: 35.13011,49.5 parent: 2 + - uid: 3683 + components: + - type: Transform + pos: 60.2423,-28.445177 + parent: 2 - uid: 28631 components: - type: Transform @@ -19711,11 +19857,6 @@ entities: - type: Transform pos: -17.38752,-6.618937 parent: 2 - - uid: 25157 - components: - - type: Transform - pos: -8.732664,-4.329373 - parent: 2 - proto: BoxingBell entities: - uid: 10379 @@ -19806,6 +19947,23 @@ entities: - type: Transform pos: 46.47997,-3.4583685 parent: 2 +- proto: BoxTrashbag + entities: + - uid: 24456 + components: + - type: Transform + pos: -27.393347,-26.247396 + parent: 2 + - uid: 25157 + components: + - type: Transform + pos: -2.483945,-23.593346 + parent: 2 + - uid: 28990 + components: + - type: Transform + pos: -48.431614,-4.3847523 + parent: 2 - proto: BoxZiptie entities: - uid: 5045 @@ -19861,13 +20019,22 @@ entities: - type: Transform pos: 6.514065,-0.35504913 parent: 26470 +- proto: BrokenEnergyShield + entities: + - uid: 715 + components: + - type: Transform + parent: 5971 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 5971 - proto: BruteAutoInjector entities: - uid: 6921 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 15.455723,-46.29486 + pos: 12.260676,-44.102978 parent: 2 - proto: Brutepack entities: @@ -19898,8 +20065,7 @@ entities: - uid: 1365 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 15.729109,-46.285255 + pos: 12.104426,-44.477978 parent: 2 - proto: ButtonFrameCaution entities: @@ -20082,6 +20248,11 @@ entities: - type: Transform pos: -54.5,31.5 parent: 2 + - uid: 613 + components: + - type: Transform + pos: 54.5,-38.5 + parent: 2 - uid: 620 components: - type: Transform @@ -20147,6 +20318,26 @@ entities: - type: Transform pos: 1.5,18.5 parent: 2 + - uid: 782 + components: + - type: Transform + pos: 58.5,-38.5 + parent: 2 + - uid: 785 + components: + - type: Transform + pos: 49.5,-28.5 + parent: 2 + - uid: 786 + components: + - type: Transform + pos: 49.5,-27.5 + parent: 2 + - uid: 794 + components: + - type: Transform + pos: 50.5,-42.5 + parent: 2 - uid: 856 components: - type: Transform @@ -20192,10 +20383,15 @@ entities: - type: Transform pos: -69.5,-5.5 parent: 2 - - uid: 1290 + - uid: 1128 components: - type: Transform - pos: 56.5,-26.5 + pos: 52.5,-30.5 + parent: 2 + - uid: 1287 + components: + - type: Transform + pos: 56.5,-38.5 parent: 2 - uid: 1303 components: @@ -20207,21 +20403,46 @@ entities: - type: Transform pos: -7.5,-5.5 parent: 2 - - uid: 1307 + - uid: 1320 + components: + - type: Transform + pos: -49.5,29.5 + parent: 2 + - uid: 1324 + components: + - type: Transform + pos: 60.5,-25.5 + parent: 2 + - uid: 1337 components: - type: Transform pos: 56.5,-27.5 parent: 2 - - uid: 1320 + - uid: 1340 components: - type: Transform - pos: -49.5,29.5 + pos: 7.5,-43.5 + parent: 2 + - uid: 1350 + components: + - type: Transform + pos: 10.5,-41.5 + parent: 2 + - uid: 1351 + components: + - type: Transform + pos: 9.5,-45.5 parent: 2 - uid: 1451 components: - type: Transform pos: -4.5,-7.5 parent: 2 + - uid: 1489 + components: + - type: Transform + pos: 9.5,-48.5 + parent: 2 - uid: 1510 components: - type: Transform @@ -20232,6 +20453,21 @@ entities: - type: Transform pos: -49.5,23.5 parent: 2 + - uid: 1558 + components: + - type: Transform + pos: 9.5,-47.5 + parent: 2 + - uid: 1564 + components: + - type: Transform + pos: 11.5,-48.5 + parent: 2 + - uid: 1565 + components: + - type: Transform + pos: 10.5,-48.5 + parent: 2 - uid: 1578 components: - type: Transform @@ -20242,6 +20478,11 @@ entities: - type: Transform pos: -47.5,-33.5 parent: 2 + - uid: 1602 + components: + - type: Transform + pos: 12.5,-48.5 + parent: 2 - uid: 1643 components: - type: Transform @@ -20327,6 +20568,31 @@ entities: - type: Transform pos: -38.5,9.5 parent: 2 + - uid: 2042 + components: + - type: Transform + pos: 55.5,-52.5 + parent: 2 + - uid: 2113 + components: + - type: Transform + pos: 55.5,-49.5 + parent: 2 + - uid: 2310 + components: + - type: Transform + pos: 55.5,-50.5 + parent: 2 + - uid: 2336 + components: + - type: Transform + pos: 55.5,-53.5 + parent: 2 + - uid: 2379 + components: + - type: Transform + pos: -39.5,43.5 + parent: 2 - uid: 2534 components: - type: Transform @@ -20452,16 +20718,6 @@ entities: - type: Transform pos: -38.5,12.5 parent: 2 - - uid: 3674 - components: - - type: Transform - pos: 53.5,-43.5 - parent: 2 - - uid: 3676 - components: - - type: Transform - pos: 54.5,-43.5 - parent: 2 - uid: 3717 components: - type: Transform @@ -20512,6 +20768,11 @@ entities: - type: Transform pos: -38.5,15.5 parent: 2 + - uid: 3799 + components: + - type: Transform + pos: 50.5,-29.5 + parent: 2 - uid: 3800 components: - type: Transform @@ -20532,11 +20793,31 @@ entities: - type: Transform pos: -38.5,14.5 parent: 2 + - uid: 3807 + components: + - type: Transform + pos: 56.5,-28.5 + parent: 2 - uid: 3808 components: - type: Transform pos: -38.5,23.5 parent: 2 + - uid: 3809 + components: + - type: Transform + pos: 56.5,-29.5 + parent: 2 + - uid: 3812 + components: + - type: Transform + pos: 56.5,-30.5 + parent: 2 + - uid: 3813 + components: + - type: Transform + pos: 56.5,-26.5 + parent: 2 - uid: 3816 components: - type: Transform @@ -20952,6 +21233,201 @@ entities: - type: Transform pos: -44.5,20.5 parent: 2 + - uid: 7569 + components: + - type: Transform + pos: 55.5,-54.5 + parent: 2 + - uid: 7570 + components: + - type: Transform + pos: 55.5,-47.5 + parent: 2 + - uid: 7621 + components: + - type: Transform + pos: 59.5,-29.5 + parent: 2 + - uid: 7622 + components: + - type: Transform + pos: 59.5,-28.5 + parent: 2 + - uid: 7623 + components: + - type: Transform + pos: 60.5,-30.5 + parent: 2 + - uid: 7624 + components: + - type: Transform + pos: 58.5,-28.5 + parent: 2 + - uid: 7625 + components: + - type: Transform + pos: 59.5,-30.5 + parent: 2 + - uid: 7627 + components: + - type: Transform + pos: 54.5,-27.5 + parent: 2 + - uid: 7628 + components: + - type: Transform + pos: 62.5,-30.5 + parent: 2 + - uid: 7629 + components: + - type: Transform + pos: 52.5,-25.5 + parent: 2 + - uid: 7630 + components: + - type: Transform + pos: 53.5,-25.5 + parent: 2 + - uid: 7631 + components: + - type: Transform + pos: 54.5,-25.5 + parent: 2 + - uid: 7632 + components: + - type: Transform + pos: 61.5,-30.5 + parent: 2 + - uid: 7634 + components: + - type: Transform + pos: 54.5,-26.5 + parent: 2 + - uid: 7635 + components: + - type: Transform + pos: 49.5,-25.5 + parent: 2 + - uid: 7636 + components: + - type: Transform + pos: 49.5,-26.5 + parent: 2 + - uid: 7637 + components: + - type: Transform + pos: 50.5,-26.5 + parent: 2 + - uid: 7638 + components: + - type: Transform + pos: 62.5,-29.5 + parent: 2 + - uid: 7639 + components: + - type: Transform + pos: 51.5,-25.5 + parent: 2 + - uid: 7640 + components: + - type: Transform + pos: 62.5,-25.5 + parent: 2 + - uid: 7641 + components: + - type: Transform + pos: 62.5,-27.5 + parent: 2 + - uid: 7643 + components: + - type: Transform + pos: 62.5,-28.5 + parent: 2 + - uid: 7644 + components: + - type: Transform + pos: 62.5,-26.5 + parent: 2 + - uid: 7645 + components: + - type: Transform + pos: 51.5,-29.5 + parent: 2 + - uid: 7646 + components: + - type: Transform + pos: 49.5,-29.5 + parent: 2 + - uid: 7647 + components: + - type: Transform + pos: 57.5,-25.5 + parent: 2 + - uid: 7648 + components: + - type: Transform + pos: 61.5,-25.5 + parent: 2 + - uid: 7649 + components: + - type: Transform + pos: 54.5,-48.5 + parent: 2 + - uid: 7650 + components: + - type: Transform + pos: 56.5,-25.5 + parent: 2 + - uid: 7651 + components: + - type: Transform + pos: 58.5,-25.5 + parent: 2 + - uid: 7652 + components: + - type: Transform + pos: 59.5,-25.5 + parent: 2 + - uid: 7658 + components: + - type: Transform + pos: 53.5,-43.5 + parent: 2 + - uid: 7661 + components: + - type: Transform + pos: 58.5,-37.5 + parent: 2 + - uid: 7674 + components: + - type: Transform + pos: 54.5,-34.5 + parent: 2 + - uid: 7675 + components: + - type: Transform + pos: 8.5,-45.5 + parent: 2 + - uid: 7677 + components: + - type: Transform + pos: 54.5,-30.5 + parent: 2 + - uid: 7682 + components: + - type: Transform + pos: 55.5,-28.5 + parent: 2 + - uid: 7687 + components: + - type: Transform + pos: 54.5,-37.5 + parent: 2 + - uid: 7716 + components: + - type: Transform + pos: 54.5,-29.5 + parent: 2 - uid: 7726 components: - type: Transform @@ -21202,6 +21678,11 @@ entities: - type: Transform pos: -45.5,16.5 parent: 2 + - uid: 10537 + components: + - type: Transform + pos: 53.5,-38.5 + parent: 2 - uid: 11138 components: - type: Transform @@ -21337,6 +21818,46 @@ entities: - type: Transform pos: -45.5,29.5 parent: 2 + - uid: 12596 + components: + - type: Transform + pos: -49.5,-29.5 + parent: 2 + - uid: 12597 + components: + - type: Transform + pos: -50.5,-29.5 + parent: 2 + - uid: 12598 + components: + - type: Transform + pos: 24.5,6.5 + parent: 2 + - uid: 12599 + components: + - type: Transform + pos: 25.5,6.5 + parent: 2 + - uid: 12600 + components: + - type: Transform + pos: 25.5,7.5 + parent: 2 + - uid: 12607 + components: + - type: Transform + pos: 46.5,-39.5 + parent: 2 + - uid: 12608 + components: + - type: Transform + pos: 51.5,-38.5 + parent: 2 + - uid: 12609 + components: + - type: Transform + pos: 53.5,-30.5 + parent: 2 - uid: 12795 components: - type: Transform @@ -21347,6 +21868,11 @@ entities: - type: Transform pos: 49.5,46.5 parent: 2 + - uid: 13639 + components: + - type: Transform + pos: 55.5,-51.5 + parent: 2 - uid: 13982 components: - type: Transform @@ -24012,11 +24538,6 @@ entities: - type: Transform pos: -32.5,-42.5 parent: 2 - - uid: 14656 - components: - - type: Transform - pos: 8.5,-40.5 - parent: 2 - uid: 14657 components: - type: Transform @@ -24052,26 +24573,11 @@ entities: - type: Transform pos: 3.5,-42.5 parent: 2 - - uid: 14664 - components: - - type: Transform - pos: 4.5,-42.5 - parent: 2 - - uid: 14665 - components: - - type: Transform - pos: 6.5,-42.5 - parent: 2 - uid: 14666 components: - type: Transform pos: 7.5,-42.5 parent: 2 - - uid: 14667 - components: - - type: Transform - pos: 5.5,-42.5 - parent: 2 - uid: 14668 components: - type: Transform @@ -24137,11 +24643,6 @@ entities: - type: Transform pos: 10.5,-42.5 parent: 2 - - uid: 14681 - components: - - type: Transform - pos: 9.5,-42.5 - parent: 2 - uid: 14682 components: - type: Transform @@ -24227,41 +24728,11 @@ entities: - type: Transform pos: 7.5,-48.5 parent: 2 - - uid: 14699 - components: - - type: Transform - pos: 8.5,-46.5 - parent: 2 - uid: 14700 components: - type: Transform pos: 9.5,-46.5 parent: 2 - - uid: 14701 - components: - - type: Transform - pos: 10.5,-46.5 - parent: 2 - - uid: 14702 - components: - - type: Transform - pos: 10.5,-47.5 - parent: 2 - - uid: 14703 - components: - - type: Transform - pos: 11.5,-47.5 - parent: 2 - - uid: 14704 - components: - - type: Transform - pos: 12.5,-47.5 - parent: 2 - - uid: 14705 - components: - - type: Transform - pos: 13.5,-47.5 - parent: 2 - uid: 14706 components: - type: Transform @@ -24272,21 +24743,6 @@ entities: - type: Transform pos: 14.5,-48.5 parent: 2 - - uid: 14708 - components: - - type: Transform - pos: 16.5,-48.5 - parent: 2 - - uid: 14709 - components: - - type: Transform - pos: 17.5,-48.5 - parent: 2 - - uid: 14710 - components: - - type: Transform - pos: 15.5,-48.5 - parent: 2 - uid: 14711 components: - type: Transform @@ -25347,480 +25803,40 @@ entities: - type: Transform pos: 31.5,-45.5 parent: 2 - - uid: 14937 - components: - - type: Transform - pos: 37.5,-47.5 - parent: 2 - - uid: 14938 - components: - - type: Transform - pos: 37.5,-46.5 - parent: 2 - - uid: 14939 - components: - - type: Transform - pos: 39.5,-45.5 - parent: 2 - - uid: 14940 - components: - - type: Transform - pos: 38.5,-45.5 - parent: 2 - - uid: 14941 - components: - - type: Transform - pos: 36.5,-45.5 - parent: 2 - - uid: 14942 - components: - - type: Transform - pos: 35.5,-45.5 - parent: 2 - - uid: 14943 - components: - - type: Transform - pos: 34.5,-45.5 - parent: 2 - - uid: 14944 - components: - - type: Transform - pos: 33.5,-45.5 - parent: 2 - - uid: 14945 - components: - - type: Transform - pos: 37.5,-45.5 - parent: 2 - - uid: 14946 - components: - - type: Transform - pos: 33.5,-46.5 - parent: 2 - uid: 14947 components: - type: Transform pos: 33.5,-47.5 parent: 2 - - uid: 14948 - components: - - type: Transform - pos: 42.5,-34.5 - parent: 2 - - uid: 14949 - components: - - type: Transform - pos: 42.5,-35.5 - parent: 2 - - uid: 14950 - components: - - type: Transform - pos: 45.5,-36.5 - parent: 2 - - uid: 14951 - components: - - type: Transform - pos: 44.5,-36.5 - parent: 2 - - uid: 14952 - components: - - type: Transform - pos: 43.5,-36.5 - parent: 2 - - uid: 14953 - components: - - type: Transform - pos: 42.5,-36.5 - parent: 2 - - uid: 14954 - components: - - type: Transform - pos: 40.5,-36.5 - parent: 2 - - uid: 14955 - components: - - type: Transform - pos: 39.5,-36.5 - parent: 2 - - uid: 14956 - components: - - type: Transform - pos: 38.5,-36.5 - parent: 2 - - uid: 14957 - components: - - type: Transform - pos: 37.5,-36.5 - parent: 2 - - uid: 14958 - components: - - type: Transform - pos: 36.5,-36.5 - parent: 2 - - uid: 14959 - components: - - type: Transform - pos: 41.5,-36.5 - parent: 2 - - uid: 14960 - components: - - type: Transform - pos: 36.5,-37.5 - parent: 2 - - uid: 14961 - components: - - type: Transform - pos: 36.5,-38.5 - parent: 2 - - uid: 14962 - components: - - type: Transform - pos: 36.5,-40.5 - parent: 2 - - uid: 14963 - components: - - type: Transform - pos: 36.5,-41.5 - parent: 2 - - uid: 14964 - components: - - type: Transform - pos: 36.5,-39.5 - parent: 2 - - uid: 14965 - components: - - type: Transform - pos: 35.5,-39.5 - parent: 2 - - uid: 14966 - components: - - type: Transform - pos: 34.5,-39.5 - parent: 2 - - uid: 14967 - components: - - type: Transform - pos: 34.5,-38.5 - parent: 2 - - uid: 14968 - components: - - type: Transform - pos: 34.5,-37.5 - parent: 2 - - uid: 14969 - components: - - type: Transform - pos: 38.5,-35.5 - parent: 2 - - uid: 14970 - components: - - type: Transform - pos: 38.5,-34.5 - parent: 2 - - uid: 14971 - components: - - type: Transform - pos: 37.5,-34.5 - parent: 2 - - uid: 14972 - components: - - type: Transform - pos: 37.5,-41.5 - parent: 2 - - uid: 14973 - components: - - type: Transform - pos: 38.5,-41.5 - parent: 2 - - uid: 14974 - components: - - type: Transform - pos: 40.5,-41.5 - parent: 2 - - uid: 14975 - components: - - type: Transform - pos: 41.5,-41.5 - parent: 2 - - uid: 14976 - components: - - type: Transform - pos: 42.5,-41.5 - parent: 2 - - uid: 14977 - components: - - type: Transform - pos: 43.5,-41.5 - parent: 2 - - uid: 14978 - components: - - type: Transform - pos: 39.5,-41.5 - parent: 2 - - uid: 14979 - components: - - type: Transform - pos: 43.5,-40.5 - parent: 2 - - uid: 14980 - components: - - type: Transform - pos: 43.5,-38.5 - parent: 2 - - uid: 14981 - components: - - type: Transform - pos: 43.5,-37.5 - parent: 2 - - uid: 14982 - components: - - type: Transform - pos: 43.5,-39.5 - parent: 2 - - uid: 14983 - components: - - type: Transform - pos: 41.5,-42.5 - parent: 2 - - uid: 14984 - components: - - type: Transform - pos: 41.5,-44.5 - parent: 2 - - uid: 14985 - components: - - type: Transform - pos: 41.5,-45.5 - parent: 2 - - uid: 14986 - components: - - type: Transform - pos: 41.5,-43.5 - parent: 2 - - uid: 14987 - components: - - type: Transform - pos: 42.5,-45.5 - parent: 2 - - uid: 14988 - components: - - type: Transform - pos: 43.5,-45.5 - parent: 2 - - uid: 14989 - components: - - type: Transform - pos: 43.5,-44.5 - parent: 2 - - uid: 14990 - components: - - type: Transform - pos: 43.5,-43.5 - parent: 2 - - uid: 14991 - components: - - type: Transform - pos: 43.5,-42.5 - parent: 2 - - uid: 14992 - components: - - type: Transform - pos: 44.5,-43.5 - parent: 2 - - uid: 14993 - components: - - type: Transform - pos: 45.5,-43.5 - parent: 2 - - uid: 14994 - components: - - type: Transform - pos: 46.5,-43.5 - parent: 2 - - uid: 14995 - components: - - type: Transform - pos: 48.5,-43.5 - parent: 2 - - uid: 14996 - components: - - type: Transform - pos: 49.5,-43.5 - parent: 2 - uid: 14997 components: - type: Transform - pos: 50.5,-43.5 + pos: 55.5,-43.5 parent: 2 - uid: 14998 components: - type: Transform - pos: 51.5,-43.5 + pos: 57.5,-43.5 parent: 2 - uid: 14999 components: - type: Transform - pos: 52.5,-43.5 - parent: 2 - - uid: 15000 - components: - - type: Transform - pos: 47.5,-43.5 - parent: 2 - - uid: 15001 - components: - - type: Transform - pos: 51.5,-35.5 - parent: 2 - - uid: 15002 - components: - - type: Transform - pos: 50.5,-35.5 - parent: 2 - - uid: 15003 - components: - - type: Transform - pos: 50.5,-36.5 - parent: 2 - - uid: 15004 - components: - - type: Transform - pos: 50.5,-37.5 - parent: 2 - - uid: 15005 - components: - - type: Transform - pos: 51.5,-37.5 - parent: 2 - - uid: 15006 - components: - - type: Transform - pos: 53.5,-37.5 + pos: 50.5,-40.5 parent: 2 - uid: 15007 components: - type: Transform - pos: 52.5,-37.5 + pos: 49.5,-35.5 parent: 2 - uid: 15008 components: - type: Transform - pos: 51.5,-34.5 - parent: 2 - - uid: 15009 - components: - - type: Transform - pos: 51.5,-33.5 - parent: 2 - - uid: 15010 - components: - - type: Transform - pos: 51.5,-32.5 - parent: 2 - - uid: 15011 - components: - - type: Transform - pos: 50.5,-32.5 - parent: 2 - - uid: 15012 - components: - - type: Transform - pos: 49.5,-32.5 - parent: 2 - - uid: 15013 - components: - - type: Transform - pos: 48.5,-32.5 - parent: 2 - - uid: 15014 - components: - - type: Transform - pos: 48.5,-33.5 - parent: 2 - - uid: 15015 - components: - - type: Transform - pos: 48.5,-35.5 - parent: 2 - - uid: 15016 - components: - - type: Transform - pos: 48.5,-34.5 - parent: 2 - - uid: 15017 - components: - - type: Transform - pos: 51.5,-31.5 - parent: 2 - - uid: 15018 - components: - - type: Transform - pos: 51.5,-30.5 - parent: 2 - - uid: 15019 - components: - - type: Transform - pos: 52.5,-30.5 - parent: 2 - - uid: 15020 - components: - - type: Transform - pos: 53.5,-30.5 - parent: 2 - - uid: 15021 - components: - - type: Transform - pos: 52.5,-32.5 - parent: 2 - - uid: 15022 - components: - - type: Transform - pos: 53.5,-32.5 - parent: 2 - - uid: 15023 - components: - - type: Transform - pos: 54.5,-32.5 - parent: 2 - - uid: 15024 - components: - - type: Transform - pos: 55.5,-32.5 - parent: 2 - - uid: 15025 - components: - - type: Transform - pos: 55.5,-33.5 - parent: 2 - - uid: 15026 - components: - - type: Transform - pos: 47.5,-32.5 - parent: 2 - - uid: 15027 - components: - - type: Transform - pos: 47.5,-30.5 - parent: 2 - - uid: 15028 - components: - - type: Transform - pos: 47.5,-29.5 + pos: 50.5,-36.5 parent: 2 - uid: 15029 components: - type: Transform - pos: 47.5,-31.5 - parent: 2 - - uid: 15030 - components: - - type: Transform - pos: 47.5,-27.5 - parent: 2 - - uid: 15031 - components: - - type: Transform - pos: 47.5,-28.5 + pos: 54.5,-43.5 parent: 2 - uid: 15032 components: @@ -25842,100 +25858,15 @@ entities: - type: Transform pos: -58.5,24.5 parent: 2 - - uid: 15038 - components: - - type: Transform - pos: 48.5,-25.5 - parent: 2 - - uid: 15039 - components: - - type: Transform - pos: 50.5,-25.5 - parent: 2 - uid: 15040 components: - type: Transform - pos: 51.5,-25.5 - parent: 2 - - uid: 15041 - components: - - type: Transform - pos: 52.5,-25.5 - parent: 2 - - uid: 15042 - components: - - type: Transform - pos: 53.5,-25.5 - parent: 2 - - uid: 15043 - components: - - type: Transform - pos: 54.5,-25.5 - parent: 2 - - uid: 15044 - components: - - type: Transform - pos: 55.5,-25.5 - parent: 2 - - uid: 15045 - components: - - type: Transform - pos: 49.5,-25.5 + pos: 58.5,-39.5 parent: 2 - uid: 15046 components: - type: Transform - pos: 56.5,-25.5 - parent: 2 - - uid: 15054 - components: - - type: Transform - pos: 56.5,-28.5 - parent: 2 - - uid: 15055 - components: - - type: Transform - pos: 55.5,-28.5 - parent: 2 - - uid: 15056 - components: - - type: Transform - pos: 54.5,-28.5 - parent: 2 - - uid: 15057 - components: - - type: Transform - pos: 53.5,-28.5 - parent: 2 - - uid: 15058 - components: - - type: Transform - pos: 52.5,-28.5 - parent: 2 - - uid: 15059 - components: - - type: Transform - pos: 51.5,-28.5 - parent: 2 - - uid: 15060 - components: - - type: Transform - pos: 50.5,-28.5 - parent: 2 - - uid: 15061 - components: - - type: Transform - pos: 49.5,-27.5 - parent: 2 - - uid: 15062 - components: - - type: Transform - pos: 49.5,-28.5 - parent: 2 - - uid: 15063 - components: - - type: Transform - pos: 49.5,-26.5 + pos: 51.5,-30.5 parent: 2 - uid: 15064 components: @@ -26157,11 +26088,6 @@ entities: - type: Transform pos: 53.5,-12.5 parent: 2 - - uid: 15110 - components: - - type: Transform - pos: 47.5,-25.5 - parent: 2 - uid: 15111 components: - type: Transform @@ -26355,7 +26281,7 @@ entities: - uid: 15149 components: - type: Transform - pos: 50.5,-22.5 + pos: 51.5,-23.5 parent: 2 - uid: 15150 components: @@ -26365,12 +26291,12 @@ entities: - uid: 15151 components: - type: Transform - pos: 48.5,-22.5 + pos: 51.5,-26.5 parent: 2 - uid: 15152 components: - type: Transform - pos: 49.5,-22.5 + pos: 47.5,-25.5 parent: 2 - uid: 15153 components: @@ -31502,11 +31428,6 @@ entities: - type: Transform pos: 26.5,6.5 parent: 2 - - uid: 16240 - components: - - type: Transform - pos: 26.5,7.5 - parent: 2 - uid: 16241 components: - type: Transform @@ -34582,11 +34503,36 @@ entities: - type: Transform pos: -35.5,8.5 parent: 2 + - uid: 17488 + components: + - type: Transform + pos: 49.5,-33.5 + parent: 2 + - uid: 17549 + components: + - type: Transform + pos: 50.5,-38.5 + parent: 2 + - uid: 17550 + components: + - type: Transform + pos: 51.5,-43.5 + parent: 2 + - uid: 17777 + components: + - type: Transform + pos: 48.5,-45.5 + parent: 2 - uid: 18132 components: - type: Transform pos: -40.5,12.5 parent: 2 + - uid: 18140 + components: + - type: Transform + pos: 55.5,-44.5 + parent: 2 - uid: 18434 components: - type: Transform @@ -34602,6 +34548,21 @@ entities: - type: Transform pos: 49.5,43.5 parent: 2 + - uid: 18802 + components: + - type: Transform + pos: 50.5,-43.5 + parent: 2 + - uid: 18817 + components: + - type: Transform + pos: 58.5,-43.5 + parent: 2 + - uid: 18818 + components: + - type: Transform + pos: 56.5,-43.5 + parent: 2 - uid: 18941 components: - type: Transform @@ -34615,13 +34576,153 @@ entities: - uid: 19174 components: - type: Transform - pos: 46.5,-32.5 + pos: 50.5,-37.5 parent: 2 - uid: 19177 components: - type: Transform pos: 45.5,-23.5 parent: 2 + - uid: 19267 + components: + - type: Transform + pos: 49.5,-36.5 + parent: 2 + - uid: 19274 + components: + - type: Transform + pos: 55.5,-38.5 + parent: 2 + - uid: 19275 + components: + - type: Transform + pos: 52.5,-38.5 + parent: 2 + - uid: 19279 + components: + - type: Transform + pos: 56.5,-32.5 + parent: 2 + - uid: 19282 + components: + - type: Transform + pos: 58.5,-35.5 + parent: 2 + - uid: 19283 + components: + - type: Transform + pos: 58.5,-34.5 + parent: 2 + - uid: 19297 + components: + - type: Transform + pos: 53.5,-32.5 + parent: 2 + - uid: 19298 + components: + - type: Transform + pos: 47.5,-40.5 + parent: 2 + - uid: 19302 + components: + - type: Transform + pos: 58.5,-32.5 + parent: 2 + - uid: 19304 + components: + - type: Transform + pos: 55.5,-32.5 + parent: 2 + - uid: 19305 + components: + - type: Transform + pos: 48.5,-42.5 + parent: 2 + - uid: 19306 + components: + - type: Transform + pos: 47.5,-41.5 + parent: 2 + - uid: 19307 + components: + - type: Transform + pos: 52.5,-32.5 + parent: 2 + - uid: 19308 + components: + - type: Transform + pos: 58.5,-33.5 + parent: 2 + - uid: 19309 + components: + - type: Transform + pos: 51.5,-32.5 + parent: 2 + - uid: 19466 + components: + - type: Transform + pos: 47.5,-42.5 + parent: 2 + - uid: 19467 + components: + - type: Transform + pos: 57.5,-32.5 + parent: 2 + - uid: 19468 + components: + - type: Transform + pos: 49.5,-42.5 + parent: 2 + - uid: 19469 + components: + - type: Transform + pos: 54.5,-32.5 + parent: 2 + - uid: 19476 + components: + - type: Transform + pos: 57.5,-38.5 + parent: 2 + - uid: 19477 + components: + - type: Transform + pos: 54.5,-35.5 + parent: 2 + - uid: 19478 + components: + - type: Transform + pos: 54.5,-33.5 + parent: 2 + - uid: 19489 + components: + - type: Transform + pos: 55.5,-48.5 + parent: 2 + - uid: 19490 + components: + - type: Transform + pos: 55.5,-46.5 + parent: 2 + - uid: 19491 + components: + - type: Transform + pos: 55.5,-45.5 + parent: 2 + - uid: 19497 + components: + - type: Transform + pos: 52.5,-48.5 + parent: 2 + - uid: 19498 + components: + - type: Transform + pos: 53.5,-48.5 + parent: 2 + - uid: 19500 + components: + - type: Transform + pos: 58.5,-36.5 + parent: 2 - uid: 19552 components: - type: Transform @@ -34632,25 +34733,25 @@ entities: - type: Transform pos: 37.5,37.5 parent: 2 - - uid: 20008 + - uid: 20039 components: - type: Transform - pos: 45.5,-32.5 + pos: 50.5,-45.5 parent: 2 - - uid: 20009 + - uid: 20095 components: - type: Transform - pos: 45.5,-31.5 + pos: -40.5,9.5 parent: 2 - - uid: 20010 + - uid: 20130 components: - type: Transform - pos: 45.5,-30.5 + pos: 52.5,-46.5 parent: 2 - - uid: 20095 + - uid: 20193 components: - type: Transform - pos: -40.5,9.5 + pos: 49.5,-45.5 parent: 2 - uid: 20641 components: @@ -35177,16 +35278,26 @@ entities: - type: Transform pos: -43.5,15.5 parent: 2 - - uid: 21373 + - uid: 21115 components: - type: Transform - pos: -39.5,43.5 + pos: 58.5,-41.5 parent: 2 - uid: 21397 components: - type: Transform pos: -39.5,42.5 parent: 2 + - uid: 21433 + components: + - type: Transform + pos: 54.5,-28.5 + parent: 2 + - uid: 21436 + components: + - type: Transform + pos: 54.5,-36.5 + parent: 2 - uid: 21624 components: - type: Transform @@ -35207,11 +35318,36 @@ entities: - type: Transform pos: -40.5,43.5 parent: 2 + - uid: 21805 + components: + - type: Transform + pos: 47.5,-45.5 + parent: 2 - uid: 21898 components: - type: Transform pos: -30.5,-58.5 parent: 2 + - uid: 21954 + components: + - type: Transform + pos: 52.5,-47.5 + parent: 2 + - uid: 21975 + components: + - type: Transform + pos: 49.5,-34.5 + parent: 2 + - uid: 21982 + components: + - type: Transform + pos: 50.5,-32.5 + parent: 2 + - uid: 21984 + components: + - type: Transform + pos: 49.5,-32.5 + parent: 2 - uid: 22012 components: - type: Transform @@ -35235,7 +35371,12 @@ entities: - uid: 22376 components: - type: Transform - pos: 46.5,-44.5 + pos: 58.5,-42.5 + parent: 2 + - uid: 22385 + components: + - type: Transform + pos: 58.5,-40.5 parent: 2 - uid: 22502 components: @@ -35307,6 +35448,16 @@ entities: - type: Transform pos: -39.5,38.5 parent: 2 + - uid: 22655 + components: + - type: Transform + pos: 52.5,-43.5 + parent: 2 + - uid: 22658 + components: + - type: Transform + pos: 50.5,-31.5 + parent: 2 - uid: 22681 components: - type: Transform @@ -35907,6 +36058,16 @@ entities: - type: Transform pos: 37.5,43.5 parent: 2 + - uid: 23878 + components: + - type: Transform + pos: 52.5,-45.5 + parent: 2 + - uid: 23880 + components: + - type: Transform + pos: 51.5,-45.5 + parent: 2 - uid: 23891 components: - type: Transform @@ -36247,6 +36408,21 @@ entities: - type: Transform pos: -2.5,-51.5 parent: 2 + - uid: 24110 + components: + - type: Transform + pos: 50.5,-39.5 + parent: 2 + - uid: 24112 + components: + - type: Transform + pos: 50.5,-41.5 + parent: 2 + - uid: 24117 + components: + - type: Transform + pos: 47.5,-39.5 + parent: 2 - uid: 24156 components: - type: Transform @@ -36352,6 +36528,46 @@ entities: - type: Transform pos: 11.5,23.5 parent: 2 + - uid: 24378 + components: + - type: Transform + pos: 9.5,-44.5 + parent: 2 + - uid: 24381 + components: + - type: Transform + pos: 10.5,-44.5 + parent: 2 + - uid: 24384 + components: + - type: Transform + pos: 11.5,-44.5 + parent: 2 + - uid: 24386 + components: + - type: Transform + pos: 12.5,-44.5 + parent: 2 + - uid: 24388 + components: + - type: Transform + pos: 13.5,-44.5 + parent: 2 + - uid: 24422 + components: + - type: Transform + pos: 14.5,-44.5 + parent: 2 + - uid: 24446 + components: + - type: Transform + pos: 14.5,-45.5 + parent: 2 + - uid: 24470 + components: + - type: Transform + pos: 14.5,-46.5 + parent: 2 - uid: 24491 components: - type: Transform @@ -36362,6 +36578,36 @@ entities: - type: Transform pos: -38.5,40.5 parent: 2 + - uid: 24522 + components: + - type: Transform + pos: 14.5,-47.5 + parent: 2 + - uid: 24755 + components: + - type: Transform + pos: 8.5,-42.5 + parent: 2 + - uid: 24781 + components: + - type: Transform + pos: 6.5,-43.5 + parent: 2 + - uid: 24782 + components: + - type: Transform + pos: 5.5,-43.5 + parent: 2 + - uid: 24783 + components: + - type: Transform + pos: 4.5,-43.5 + parent: 2 + - uid: 24784 + components: + - type: Transform + pos: 3.5,-43.5 + parent: 2 - uid: 24906 components: - type: Transform @@ -36727,6 +36973,16 @@ entities: - type: Transform pos: -36.5,35.5 parent: 2 + - uid: 25950 + components: + - type: Transform + pos: 37.5,-39.5 + parent: 2 + - uid: 25951 + components: + - type: Transform + pos: 37.5,-38.5 + parent: 2 - uid: 26020 components: - type: Transform @@ -36737,6 +36993,61 @@ entities: - type: Transform pos: 43.5,45.5 parent: 2 + - uid: 26060 + components: + - type: Transform + pos: 36.5,-38.5 + parent: 2 + - uid: 26061 + components: + - type: Transform + pos: 35.5,-38.5 + parent: 2 + - uid: 26062 + components: + - type: Transform + pos: 35.5,-37.5 + parent: 2 + - uid: 26063 + components: + - type: Transform + pos: 35.5,-36.5 + parent: 2 + - uid: 26064 + components: + - type: Transform + pos: 35.5,-35.5 + parent: 2 + - uid: 26065 + components: + - type: Transform + pos: 36.5,-35.5 + parent: 2 + - uid: 26066 + components: + - type: Transform + pos: 37.5,-35.5 + parent: 2 + - uid: 26067 + components: + - type: Transform + pos: 39.5,-35.5 + parent: 2 + - uid: 26068 + components: + - type: Transform + pos: 38.5,-35.5 + parent: 2 + - uid: 26069 + components: + - type: Transform + pos: 39.5,-36.5 + parent: 2 + - uid: 26076 + components: + - type: Transform + pos: 39.5,-37.5 + parent: 2 - uid: 26119 components: - type: Transform @@ -37117,6 +37428,16 @@ entities: - type: Transform pos: 11.5,0.5 parent: 26470 + - uid: 26896 + components: + - type: Transform + pos: 39.5,-38.5 + parent: 2 + - uid: 26901 + components: + - type: Transform + pos: 38.5,-38.5 + parent: 2 - uid: 26971 components: - type: Transform @@ -37682,6 +38003,11 @@ entities: - type: Transform pos: 37.5,40.5 parent: 2 + - uid: 27663 + components: + - type: Transform + pos: 48.5,-23.5 + parent: 2 - uid: 27684 components: - type: Transform @@ -37722,6 +38048,16 @@ entities: - type: Transform pos: 37.5,39.5 parent: 2 + - uid: 27764 + components: + - type: Transform + pos: 47.5,-27.5 + parent: 2 + - uid: 27766 + components: + - type: Transform + pos: 46.5,-27.5 + parent: 2 - uid: 27825 components: - type: Transform @@ -37882,6 +38218,11 @@ entities: - type: Transform pos: -9.5,-60.5 parent: 2 + - uid: 28080 + components: + - type: Transform + pos: 45.5,-27.5 + parent: 2 - uid: 28100 components: - type: Transform @@ -37987,11 +38328,56 @@ entities: - type: Transform pos: -20.5,-6.5 parent: 2 + - uid: 28331 + components: + - type: Transform + pos: 47.5,-26.5 + parent: 2 + - uid: 28332 + components: + - type: Transform + pos: 47.5,-28.5 + parent: 2 + - uid: 28333 + components: + - type: Transform + pos: 47.5,-29.5 + parent: 2 - uid: 28340 components: - type: Transform pos: -20.5,-7.5 parent: 2 + - uid: 28351 + components: + - type: Transform + pos: 47.5,-30.5 + parent: 2 + - uid: 28352 + components: + - type: Transform + pos: 47.5,-31.5 + parent: 2 + - uid: 28353 + components: + - type: Transform + pos: 47.5,-32.5 + parent: 2 + - uid: 28354 + components: + - type: Transform + pos: 47.5,-33.5 + parent: 2 + - uid: 28355 + components: + - type: Transform + pos: 47.5,-34.5 + parent: 2 + - uid: 28356 + components: + - type: Transform + pos: 47.5,-35.5 + parent: 2 - uid: 28358 components: - type: Transform @@ -38097,6 +38483,11 @@ entities: - type: Transform pos: -14.5,-8.5 parent: 2 + - uid: 28730 + components: + - type: Transform + pos: 47.5,-36.5 + parent: 2 - uid: 28736 components: - type: Transform @@ -38107,11 +38498,26 @@ entities: - type: Transform pos: -53.5,11.5 parent: 2 + - uid: 28756 + components: + - type: Transform + pos: 46.5,-36.5 + parent: 2 + - uid: 28759 + components: + - type: Transform + pos: 43.5,-31.5 + parent: 2 - uid: 28775 components: - type: Transform pos: -13.5,-8.5 parent: 2 + - uid: 28814 + components: + - type: Transform + pos: 43.5,-29.5 + parent: 2 - uid: 28815 components: - type: Transform @@ -38122,6 +38528,11 @@ entities: - type: Transform pos: -13.5,-5.5 parent: 2 + - uid: 28833 + components: + - type: Transform + pos: 43.5,-28.5 + parent: 2 - uid: 28849 components: - type: Transform @@ -38242,8 +38653,49 @@ entities: - type: Transform pos: 40.5,-59.5 parent: 2 + - uid: 28986 + components: + - type: Transform + pos: 43.5,-27.5 + parent: 2 + - uid: 28987 + components: + - type: Transform + pos: 43.5,-30.5 + parent: 2 + - uid: 28988 + components: + - type: Transform + pos: 52.5,-18.5 + parent: 2 + - uid: 28989 + components: + - type: Transform + pos: 61.5,-18.5 + parent: 2 + - uid: 29070 + components: + - type: Transform + pos: 50.5,-24.5 + parent: 2 + - uid: 29071 + components: + - type: Transform + pos: 49.5,-23.5 + parent: 2 + - uid: 29072 + components: + - type: Transform + pos: 50.5,-23.5 + parent: 2 - proto: CableApcStack entities: + - uid: 1348 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -44.523376,-33.273617 + parent: 2 - uid: 7136 components: - type: Transform @@ -46900,6 +47352,16 @@ entities: - type: Transform pos: 22.5,47.5 parent: 2 + - uid: 5040 + components: + - type: Transform + pos: 8.5,-45.5 + parent: 2 + - uid: 5382 + components: + - type: Transform + pos: 10.5,-44.5 + parent: 2 - uid: 5806 components: - type: Transform @@ -46995,6 +47457,11 @@ entities: - type: Transform pos: 52.5,-18.5 parent: 2 + - uid: 7706 + components: + - type: Transform + pos: 55.5,-23.5 + parent: 2 - uid: 7782 components: - type: Transform @@ -47195,11 +47662,21 @@ entities: - type: Transform pos: -48.5,20.5 parent: 2 + - uid: 11981 + components: + - type: Transform + pos: -50.5,-29.5 + parent: 2 - uid: 12528 components: - type: Transform pos: 62.5,28.5 parent: 2 + - uid: 12594 + components: + - type: Transform + pos: -51.5,-29.5 + parent: 2 - uid: 12835 components: - type: Transform @@ -50080,11 +50557,6 @@ entities: - type: Transform pos: 11.5,-44.5 parent: 2 - - uid: 13549 - components: - - type: Transform - pos: 10.5,-44.5 - parent: 2 - uid: 13550 components: - type: Transform @@ -50095,11 +50567,6 @@ entities: - type: Transform pos: 9.5,-45.5 parent: 2 - - uid: 13552 - components: - - type: Transform - pos: 9.5,-46.5 - parent: 2 - uid: 13553 components: - type: Transform @@ -50500,171 +50967,6 @@ entities: - type: Transform pos: 33.5,-47.5 parent: 2 - - uid: 13633 - components: - - type: Transform - pos: 33.5,-46.5 - parent: 2 - - uid: 13634 - components: - - type: Transform - pos: 34.5,-46.5 - parent: 2 - - uid: 13635 - components: - - type: Transform - pos: 35.5,-46.5 - parent: 2 - - uid: 13636 - components: - - type: Transform - pos: 36.5,-46.5 - parent: 2 - - uid: 13637 - components: - - type: Transform - pos: 37.5,-46.5 - parent: 2 - - uid: 13638 - components: - - type: Transform - pos: 37.5,-47.5 - parent: 2 - - uid: 13639 - components: - - type: Transform - pos: 37.5,-45.5 - parent: 2 - - uid: 13640 - components: - - type: Transform - pos: 38.5,-45.5 - parent: 2 - - uid: 13641 - components: - - type: Transform - pos: 39.5,-45.5 - parent: 2 - - uid: 13642 - components: - - type: Transform - pos: 40.5,-45.5 - parent: 2 - - uid: 13643 - components: - - type: Transform - pos: 41.5,-45.5 - parent: 2 - - uid: 13644 - components: - - type: Transform - pos: 42.5,-45.5 - parent: 2 - - uid: 13645 - components: - - type: Transform - pos: 42.5,-44.5 - parent: 2 - - uid: 13646 - components: - - type: Transform - pos: 42.5,-43.5 - parent: 2 - - uid: 13647 - components: - - type: Transform - pos: 42.5,-42.5 - parent: 2 - - uid: 13648 - components: - - type: Transform - pos: 42.5,-40.5 - parent: 2 - - uid: 13649 - components: - - type: Transform - pos: 42.5,-39.5 - parent: 2 - - uid: 13650 - components: - - type: Transform - pos: 42.5,-38.5 - parent: 2 - - uid: 13651 - components: - - type: Transform - pos: 42.5,-37.5 - parent: 2 - - uid: 13652 - components: - - type: Transform - pos: 42.5,-36.5 - parent: 2 - - uid: 13653 - components: - - type: Transform - pos: 42.5,-35.5 - parent: 2 - - uid: 13654 - components: - - type: Transform - pos: 42.5,-41.5 - parent: 2 - - uid: 13655 - components: - - type: Transform - pos: 42.5,-34.5 - parent: 2 - - uid: 13656 - components: - - type: Transform - pos: 51.5,-35.5 - parent: 2 - - uid: 13657 - components: - - type: Transform - pos: 50.5,-35.5 - parent: 2 - - uid: 13658 - components: - - type: Transform - pos: 49.5,-35.5 - parent: 2 - - uid: 13659 - components: - - type: Transform - pos: 48.5,-35.5 - parent: 2 - - uid: 13660 - components: - - type: Transform - pos: 47.5,-35.5 - parent: 2 - - uid: 13661 - components: - - type: Transform - pos: 46.5,-35.5 - parent: 2 - - uid: 13662 - components: - - type: Transform - pos: 46.5,-36.5 - parent: 2 - - uid: 13663 - components: - - type: Transform - pos: 45.5,-36.5 - parent: 2 - - uid: 13664 - components: - - type: Transform - pos: 44.5,-36.5 - parent: 2 - - uid: 13665 - components: - - type: Transform - pos: 43.5,-36.5 - parent: 2 - uid: 13666 components: - type: Transform @@ -50815,26 +51117,6 @@ entities: - type: Transform pos: 53.5,-14.5 parent: 2 - - uid: 13696 - components: - - type: Transform - pos: 50.5,-25.5 - parent: 2 - - uid: 13697 - components: - - type: Transform - pos: 49.5,-25.5 - parent: 2 - - uid: 13698 - components: - - type: Transform - pos: 48.5,-25.5 - parent: 2 - - uid: 13699 - components: - - type: Transform - pos: 50.5,-24.5 - parent: 2 - uid: 13700 components: - type: Transform @@ -52340,6 +52622,26 @@ entities: - type: Transform pos: -8.5,47.5 parent: 2 + - uid: 15002 + components: + - type: Transform + pos: 58.5,-28.5 + parent: 2 + - uid: 15003 + components: + - type: Transform + pos: 59.5,-26.5 + parent: 2 + - uid: 15004 + components: + - type: Transform + pos: 52.5,-23.5 + parent: 2 + - uid: 15012 + components: + - type: Transform + pos: 59.5,-24.5 + parent: 2 - uid: 15414 components: - type: Transform @@ -52350,6 +52652,41 @@ entities: - type: Transform pos: 49.5,44.5 parent: 2 + - uid: 17773 + components: + - type: Transform + pos: 58.5,-23.5 + parent: 2 + - uid: 17774 + components: + - type: Transform + pos: 59.5,-27.5 + parent: 2 + - uid: 17775 + components: + - type: Transform + pos: 53.5,-23.5 + parent: 2 + - uid: 18143 + components: + - type: Transform + pos: 59.5,-25.5 + parent: 2 + - uid: 18144 + components: + - type: Transform + pos: 59.5,-28.5 + parent: 2 + - uid: 18155 + components: + - type: Transform + pos: 51.5,-23.5 + parent: 2 + - uid: 18157 + components: + - type: Transform + pos: 59.5,-23.5 + parent: 2 - uid: 18559 components: - type: Transform @@ -52680,6 +53017,21 @@ entities: - type: Transform pos: -15.5,-37.5 parent: 2 + - uid: 22697 + components: + - type: Transform + pos: 57.5,-23.5 + parent: 2 + - uid: 22701 + components: + - type: Transform + pos: 54.5,-23.5 + parent: 2 + - uid: 22702 + components: + - type: Transform + pos: 56.5,-23.5 + parent: 2 - uid: 22725 components: - type: Transform @@ -52895,6 +53247,11 @@ entities: - type: Transform pos: 11.5,23.5 parent: 2 + - uid: 24756 + components: + - type: Transform + pos: 8.5,-42.5 + parent: 2 - uid: 25195 components: - type: Transform @@ -53045,11 +53402,221 @@ entities: - type: Transform pos: 52.5,-19.5 parent: 2 + - uid: 25925 + components: + - type: Transform + pos: 33.5,-46.5 + parent: 2 + - uid: 25927 + components: + - type: Transform + pos: 34.5,-46.5 + parent: 2 + - uid: 25928 + components: + - type: Transform + pos: 35.5,-46.5 + parent: 2 + - uid: 25930 + components: + - type: Transform + pos: 36.5,-46.5 + parent: 2 + - uid: 25931 + components: + - type: Transform + pos: 37.5,-46.5 + parent: 2 + - uid: 25932 + components: + - type: Transform + pos: 37.5,-45.5 + parent: 2 + - uid: 25933 + components: + - type: Transform + pos: 37.5,-44.5 + parent: 2 + - uid: 25934 + components: + - type: Transform + pos: 37.5,-43.5 + parent: 2 + - uid: 25935 + components: + - type: Transform + pos: 37.5,-42.5 + parent: 2 + - uid: 25936 + components: + - type: Transform + pos: 37.5,-41.5 + parent: 2 + - uid: 25937 + components: + - type: Transform + pos: 37.5,-40.5 + parent: 2 + - uid: 25940 + components: + - type: Transform + pos: 39.5,-40.5 + parent: 2 + - uid: 25941 + components: + - type: Transform + pos: 40.5,-40.5 + parent: 2 + - uid: 25942 + components: + - type: Transform + pos: 41.5,-40.5 + parent: 2 + - uid: 25943 + components: + - type: Transform + pos: 38.5,-40.5 + parent: 2 + - uid: 25947 + components: + - type: Transform + pos: 41.5,-39.5 + parent: 2 + - uid: 25948 + components: + - type: Transform + pos: 37.5,-39.5 + parent: 2 + - uid: 25952 + components: + - type: Transform + pos: 41.5,-38.5 + parent: 2 + - uid: 25953 + components: + - type: Transform + pos: 41.5,-37.5 + parent: 2 + - uid: 25963 + components: + - type: Transform + pos: 41.5,-36.5 + parent: 2 + - uid: 25964 + components: + - type: Transform + pos: 42.5,-36.5 + parent: 2 + - uid: 25965 + components: + - type: Transform + pos: 43.5,-36.5 + parent: 2 + - uid: 25966 + components: + - type: Transform + pos: 44.5,-36.5 + parent: 2 + - uid: 25968 + components: + - type: Transform + pos: 46.5,-36.5 + parent: 2 + - uid: 25970 + components: + - type: Transform + pos: 47.5,-36.5 + parent: 2 + - uid: 25973 + components: + - type: Transform + pos: 45.5,-36.5 + parent: 2 + - uid: 25974 + components: + - type: Transform + pos: 47.5,-35.5 + parent: 2 + - uid: 25975 + components: + - type: Transform + pos: 47.5,-34.5 + parent: 2 + - uid: 25976 + components: + - type: Transform + pos: 48.5,-34.5 + parent: 2 + - uid: 25977 + components: + - type: Transform + pos: 49.5,-34.5 + parent: 2 + - uid: 25978 + components: + - type: Transform + pos: 50.5,-34.5 + parent: 2 + - uid: 25985 + components: + - type: Transform + pos: 50.5,-33.5 + parent: 2 + - uid: 25990 + components: + - type: Transform + pos: 52.5,-24.5 + parent: 2 + - uid: 25993 + components: + - type: Transform + pos: 50.5,-31.5 + parent: 2 + - uid: 25994 + components: + - type: Transform + pos: 50.5,-32.5 + parent: 2 + - uid: 25995 + components: + - type: Transform + pos: 52.5,-26.5 + parent: 2 + - uid: 25998 + components: + - type: Transform + pos: 52.5,-27.5 + parent: 2 + - uid: 26000 + components: + - type: Transform + pos: 52.5,-28.5 + parent: 2 + - uid: 26007 + components: + - type: Transform + pos: 52.5,-25.5 + parent: 2 - uid: 26017 components: - type: Transform pos: 44.5,37.5 parent: 2 + - uid: 26057 + components: + - type: Transform + pos: 53.5,-28.5 + parent: 2 + - uid: 26058 + components: + - type: Transform + pos: 54.5,-28.5 + parent: 2 + - uid: 26059 + components: + - type: Transform + pos: 55.5,-28.5 + parent: 2 - uid: 26120 components: - type: Transform @@ -53635,6 +54202,11 @@ entities: - type: Transform pos: 31.5,-53.5 parent: 2 + - uid: 29074 + components: + - type: Transform + pos: 50.5,-24.5 + parent: 2 - proto: CableMVStack entities: - uid: 7137 @@ -53794,20 +54366,16 @@ entities: - type: Transform pos: -3.5,38.5 parent: 2 - - uid: 957 - components: - - type: Transform - pos: 18.5,-9.5 - parent: 2 - - uid: 4416 + - uid: 819 components: - type: Transform - pos: 52.5,-37.5 + rot: -1.5707963267948966 rad + pos: 57.5,-28.5 parent: 2 - - uid: 4835 + - uid: 957 components: - type: Transform - pos: 52.5,-36.5 + pos: 18.5,-9.5 parent: 2 - uid: 5605 components: @@ -53864,6 +54432,12 @@ entities: - type: Transform pos: -15.5,4.5 parent: 2 + - uid: 7718 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 60.5,-27.5 + parent: 2 - uid: 8375 components: - type: Transform @@ -53921,6 +54495,66 @@ entities: rot: 3.141592653589793 rad pos: -16.5,-7.5 parent: 2 + - uid: 13552 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 61.5,-29.5 + parent: 2 + - uid: 13648 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 61.5,-27.5 + parent: 2 + - uid: 13649 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 61.5,-28.5 + parent: 2 + - uid: 13655 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 57.5,-29.5 + parent: 2 + - uid: 13656 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 60.5,-29.5 + parent: 2 + - uid: 14705 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 56.5,-30.5 + parent: 2 + - uid: 14708 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 56.5,-28.5 + parent: 2 + - uid: 14709 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 56.5,-29.5 + parent: 2 + - uid: 14939 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 60.5,-28.5 + parent: 2 + - uid: 14940 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 57.5,-30.5 + parent: 2 - uid: 21416 components: - type: Transform @@ -54071,55 +54705,181 @@ entities: rot: 3.141592653589793 rad pos: -16.5,-6.5 parent: 2 - - uid: 25718 + - uid: 26904 components: - type: Transform - pos: 53.5,-37.5 + rot: 3.141592653589793 rad + pos: 36.5,-36.5 parent: 2 - - uid: 25719 + - uid: 26905 components: - type: Transform - pos: 53.5,-36.5 + rot: 3.141592653589793 rad + pos: 36.5,-37.5 parent: 2 - - uid: 25720 + - uid: 26906 components: - type: Transform - pos: 54.5,-37.5 + rot: 3.141592653589793 rad + pos: 37.5,-36.5 parent: 2 - - uid: 25721 + - uid: 26980 components: - type: Transform - pos: 54.5,-36.5 + rot: 3.141592653589793 rad + pos: 37.5,-37.5 parent: 2 - - uid: 25722 + - uid: 26981 components: - type: Transform - pos: 52.5,-32.5 + rot: 3.141592653589793 rad + pos: 38.5,-37.5 parent: 2 - - uid: 25723 + - uid: 27002 components: - type: Transform - pos: 52.5,-33.5 + rot: 3.141592653589793 rad + pos: 38.5,-36.5 parent: 2 - - uid: 25724 + - uid: 28995 components: - type: Transform - pos: 53.5,-32.5 + pos: -7.5,-3.5 parent: 2 - - uid: 25725 + - uid: 28996 components: - type: Transform - pos: 53.5,-33.5 + pos: -10.5,-5.5 parent: 2 - - uid: 25726 + - uid: 28997 components: - type: Transform - pos: 54.5,-32.5 + pos: -11.5,-4.5 parent: 2 - - uid: 25727 + - uid: 28998 components: - type: Transform - pos: 54.5,-33.5 + pos: -8.5,-3.5 + parent: 2 + - uid: 28999 + components: + - type: Transform + pos: -11.5,-5.5 + parent: 2 + - uid: 29000 + components: + - type: Transform + pos: -8.5,-2.5 + parent: 2 + - uid: 29001 + components: + - type: Transform + pos: -10.5,-4.5 + parent: 2 + - uid: 29003 + components: + - type: Transform + pos: -7.5,-2.5 + parent: 2 + - uid: 29004 + components: + - type: Transform + pos: -9.5,-2.5 + parent: 2 + - uid: 29005 + components: + - type: Transform + pos: -9.5,-3.5 + parent: 2 + - uid: 29036 + components: + - type: Transform + pos: 1.5,35.5 + parent: 2 + - uid: 29037 + components: + - type: Transform + pos: 1.5,34.5 + parent: 2 + - uid: 29038 + components: + - type: Transform + pos: 1.5,33.5 + parent: 2 + - uid: 29039 + components: + - type: Transform + pos: 2.5,35.5 + parent: 2 + - uid: 29040 + components: + - type: Transform + pos: 2.5,33.5 + parent: 2 + - uid: 29041 + components: + - type: Transform + pos: 2.5,34.5 + parent: 2 + - uid: 29042 + components: + - type: Transform + pos: -5.5,35.5 + parent: 2 + - uid: 29043 + components: + - type: Transform + pos: -5.5,34.5 + parent: 2 + - uid: 29044 + components: + - type: Transform + pos: -4.5,35.5 + parent: 2 + - uid: 29045 + components: + - type: Transform + pos: -4.5,34.5 + parent: 2 + - uid: 29046 + components: + - type: Transform + pos: -3.5,34.5 + parent: 2 + - uid: 29047 + components: + - type: Transform + pos: -2.5,35.5 + parent: 2 + - uid: 29048 + components: + - type: Transform + pos: -2.5,34.5 + parent: 2 + - uid: 29049 + components: + - type: Transform + pos: -3.5,35.5 + parent: 2 + - uid: 29050 + components: + - type: Transform + pos: -5.5,33.5 + parent: 2 + - uid: 29051 + components: + - type: Transform + pos: -4.5,33.5 + parent: 2 + - uid: 29052 + components: + - type: Transform + pos: -3.5,33.5 + parent: 2 + - uid: 29053 + components: + - type: Transform + pos: -2.5,33.5 parent: 2 - proto: CarpetBlack entities: @@ -54337,8 +55097,94 @@ entities: - type: Transform pos: -14.5,10.5 parent: 2 + - uid: 29018 + components: + - type: Transform + pos: -15.5,-16.5 + parent: 2 + - uid: 29019 + components: + - type: Transform + pos: -15.5,-17.5 + parent: 2 + - uid: 29020 + components: + - type: Transform + pos: -15.5,-18.5 + parent: 2 + - uid: 29021 + components: + - type: Transform + pos: -14.5,-16.5 + parent: 2 + - uid: 29022 + components: + - type: Transform + pos: -14.5,-17.5 + parent: 2 + - uid: 29023 + components: + - type: Transform + pos: -14.5,-18.5 + parent: 2 + - uid: 29024 + components: + - type: Transform + pos: -13.5,-16.5 + parent: 2 + - uid: 29025 + components: + - type: Transform + pos: -13.5,-18.5 + parent: 2 + - uid: 29026 + components: + - type: Transform + pos: -13.5,-17.5 + parent: 2 + - uid: 29027 + components: + - type: Transform + pos: -12.5,-16.5 + parent: 2 + - uid: 29028 + components: + - type: Transform + pos: -12.5,-17.5 + parent: 2 + - uid: 29029 + components: + - type: Transform + pos: -12.5,-18.5 + parent: 2 + - uid: 29030 + components: + - type: Transform + pos: -15.5,-19.5 + parent: 2 + - uid: 29031 + components: + - type: Transform + pos: -14.5,-19.5 + parent: 2 + - uid: 29032 + components: + - type: Transform + pos: -13.5,-19.5 + parent: 2 + - uid: 29033 + components: + - type: Transform + pos: -12.5,-19.5 + parent: 2 - proto: CarpetBlue entities: + - uid: 5013 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -37.5,-25.5 + parent: 2 - uid: 5584 components: - type: Transform @@ -54460,6 +55306,36 @@ entities: rot: 3.141592653589793 rad pos: 39.5,-58.5 parent: 2 + - uid: 29006 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -37.5,-26.5 + parent: 2 + - uid: 29007 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -36.5,-25.5 + parent: 2 + - uid: 29008 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -36.5,-26.5 + parent: 2 + - uid: 29009 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -35.5,-25.5 + parent: 2 + - uid: 29010 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -35.5,-26.5 + parent: 2 - proto: CarpetChapel entities: - uid: 818 @@ -54870,25 +55746,23 @@ entities: rot: 3.141592653589793 rad pos: -20.5,-3.5 parent: 2 -- proto: CartridgePistolSpent - entities: - - uid: 643 + - uid: 29054 components: - type: Transform - rot: 3.141592653589793 rad - pos: 42.5986,0.42496866 + pos: 27.5,48.5 parent: 2 - - uid: 712 + - uid: 29055 components: - type: Transform - rot: 3.141592653589793 rad - pos: 42.957973,0.86246866 + pos: 27.5,47.5 parent: 2 - - uid: 715 +- proto: CartridgePistolSpent + entities: + - uid: 712 components: - type: Transform rot: 3.141592653589793 rad - pos: 42.582973,0.29996866 + pos: 42.957973,0.86246866 parent: 2 - uid: 5053 components: @@ -55195,71 +56069,26 @@ entities: - type: Transform pos: 20.317749,-47.726925 parent: 2 - - uid: 23778 - components: - - type: Transform - pos: 20.161499,-47.86755 - parent: 2 - uid: 23779 components: - type: Transform pos: 19.786499,-48.195675 parent: 2 - - uid: 23780 - components: - - type: Transform - pos: 19.833374,-47.5863 - parent: 2 - - uid: 23781 - components: - - type: Transform - pos: 19.864624,-47.61755 - parent: 2 - uid: 23782 components: - type: Transform pos: 20.052124,-47.74255 parent: 2 - - uid: 23783 - components: - - type: Transform - pos: 20.036499,-47.80505 - parent: 2 - - uid: 23784 - components: - - type: Transform - pos: 20.239624,-47.539425 - parent: 2 - uid: 23785 components: - type: Transform pos: 20.755249,-45.6488 parent: 2 - - uid: 23786 - components: - - type: Transform - pos: 21.052124,-45.883175 - parent: 2 - uid: 23787 components: - type: Transform pos: 21.223999,-46.195675 parent: 2 - - uid: 23788 - components: - - type: Transform - pos: 21.302124,-46.476925 - parent: 2 - - uid: 23789 - components: - - type: Transform - pos: 21.333374,-46.820675 - parent: 2 - - uid: 23790 - components: - - type: Transform - pos: 21.364624,-47.476925 - parent: 2 - uid: 23791 components: - type: Transform @@ -55275,21 +56104,11 @@ entities: - type: Transform pos: 21.317749,-47.7113 parent: 2 - - uid: 23794 - components: - - type: Transform - pos: 21.083374,-43.74255 - parent: 2 - uid: 23795 components: - type: Transform pos: 20.661499,-43.74255 parent: 2 - - uid: 23796 - components: - - type: Transform - pos: 20.973999,-43.945675 - parent: 2 - uid: 23797 components: - type: Transform @@ -55335,11 +56154,6 @@ entities: - type: Transform pos: -40.54774,-32.311657 parent: 2 - - uid: 24107 - components: - - type: Transform - pos: -40.57899,-32.436657 - parent: 2 - uid: 24108 components: - type: Transform @@ -55350,31 +56164,16 @@ entities: - type: Transform pos: -40.70399,-33.092907 parent: 2 - - uid: 24110 - components: - - type: Transform - pos: -40.92274,-33.733532 - parent: 2 - uid: 24111 components: - type: Transform pos: -41.032116,-34.296032 parent: 2 - - uid: 24112 - components: - - type: Transform - pos: -41.04774,-34.499157 - parent: 2 - uid: 24113 components: - type: Transform pos: -41.250866,-35.014782 parent: 2 - - uid: 24114 - components: - - type: Transform - pos: -41.532116,-35.530407 - parent: 2 - uid: 24115 components: - type: Transform @@ -55385,36 +56184,16 @@ entities: - type: Transform pos: -41.89149,-36.811657 parent: 2 - - uid: 24117 - components: - - type: Transform - pos: -41.86024,-36.577282 - parent: 2 - - uid: 24366 - components: - - type: Transform - pos: -51.320763,-21.601313 - parent: 2 - uid: 24367 components: - type: Transform pos: -51.492638,-21.460688 parent: 2 - - uid: 24368 - components: - - type: Transform - pos: -51.648888,-21.835688 - parent: 2 - uid: 24369 components: - type: Transform pos: -51.211388,-22.023188 parent: 2 - - uid: 24370 - components: - - type: Transform - pos: -51.992638,-22.335688 - parent: 2 - uid: 24371 components: - type: Transform @@ -55435,26 +56214,11 @@ entities: - type: Transform pos: -51.852013,-22.210688 parent: 2 - - uid: 24375 - components: - - type: Transform - pos: -57.624035,-8.242752 - parent: 2 - - uid: 24376 - components: - - type: Transform - pos: -56.093014,-8.774113 - parent: 2 - uid: 24377 components: - type: Transform pos: -57.530514,-8.742863 parent: 2 - - uid: 24378 - components: - - type: Transform - pos: -58.35864,-8.742863 - parent: 2 - uid: 24379 components: - type: Transform @@ -55465,11 +56229,6 @@ entities: - type: Transform pos: -59.63989,-8.102238 parent: 2 - - uid: 24381 - components: - - type: Transform - pos: -59.63989,-8.102238 - parent: 2 - uid: 24382 components: - type: Transform @@ -55480,31 +56239,16 @@ entities: - type: Transform pos: -60.311764,-8.102238 parent: 2 - - uid: 24384 - components: - - type: Transform - pos: -61.093014,-8.211613 - parent: 2 - uid: 24385 components: - type: Transform pos: -61.030514,-8.430363 parent: 2 - - uid: 24386 - components: - - type: Transform - pos: -61.54614,-8.445988 - parent: 2 - uid: 24387 components: - type: Transform pos: -61.92114,-8.524113 parent: 2 - - uid: 24388 - components: - - type: Transform - pos: -55.218014,-8.352238 - parent: 2 - uid: 24389 components: - type: Transform @@ -55735,26 +56479,11 @@ entities: - type: Transform pos: -0.7129698,6.491503 parent: 2 - - uid: 24630 - components: - - type: Transform - pos: -0.9785948,7.257128 - parent: 2 - uid: 24631 components: - type: Transform pos: -0.00984478,7.179003 parent: 2 - - uid: 24632 - components: - - type: Transform - pos: -1.0098448,7.038378 - parent: 2 - - uid: 24633 - components: - - type: Transform - pos: -1.0098448,7.038378 - parent: 2 - uid: 24634 components: - type: Transform @@ -55765,16 +56494,6 @@ entities: - type: Transform pos: -1.2910948,7.241503 parent: 2 - - uid: 24636 - components: - - type: Transform - pos: -1.3692198,7.147753 - parent: 2 - - uid: 24637 - components: - - type: Transform - pos: -1.4473448,6.897753 - parent: 2 - uid: 24638 components: - type: Transform @@ -55785,31 +56504,11 @@ entities: - type: Transform pos: -4.46297,6.507128 parent: 2 - - uid: 24640 - components: - - type: Transform - pos: -4.24422,6.991503 - parent: 2 - - uid: 24641 - components: - - type: Transform - pos: -5.52547,7.163378 - parent: 2 - uid: 24642 components: - type: Transform pos: -5.52547,6.850878 parent: 2 - - uid: 24643 - components: - - type: Transform - pos: -4.947345,7.069628 - parent: 2 - - uid: 24644 - components: - - type: Transform - pos: -5.58797,7.819628 - parent: 2 - uid: 24645 components: - type: Transform @@ -55840,16 +56539,6 @@ entities: - type: Transform pos: -4.603595,7.600878 parent: 2 - - uid: 24651 - components: - - type: Transform - pos: -5.572345,8.429003 - parent: 2 - - uid: 24652 - components: - - type: Transform - pos: -4.86922,7.585253 - parent: 2 - uid: 24653 components: - type: Transform @@ -55885,16 +56574,6 @@ entities: - type: Transform pos: -6.9414406,13.225469 parent: 2 - - uid: 24660 - components: - - type: Transform - pos: -0.8933039,11.896955 - parent: 2 - - uid: 24661 - components: - - type: Transform - pos: -1.2526789,11.646955 - parent: 2 - uid: 24662 components: - type: Transform @@ -55905,11 +56584,6 @@ entities: - type: Transform pos: -0.23705387,11.678205 parent: 2 - - uid: 24664 - components: - - type: Transform - pos: -1.1745539,11.16258 - parent: 2 - uid: 24665 components: - type: Transform @@ -55955,16 +56629,6 @@ entities: - type: Transform pos: -52.532627,-17.299026 parent: 2 - - uid: 24694 - components: - - type: Transform - pos: -52.251377,-17.299026 - parent: 2 - - uid: 24695 - components: - - type: Transform - pos: -52.235752,-17.392776 - parent: 2 - uid: 24696 components: - type: Transform @@ -55975,31 +56639,11 @@ entities: - type: Transform pos: -52.142002,-17.095901 parent: 2 - - uid: 24698 - components: - - type: Transform - pos: -52.204502,-17.174026 - parent: 2 - - uid: 24699 - components: - - type: Transform - pos: -52.188877,-17.220901 - parent: 2 - - uid: 24700 - components: - - type: Transform - pos: 4.2372465,14.633656 - parent: 2 - uid: 24701 components: - type: Transform pos: 4.1747465,14.758656 parent: 2 - - uid: 24702 - components: - - type: Transform - pos: 3.9716218,14.758656 - parent: 2 - uid: 24703 components: - type: Transform @@ -56010,16 +56654,6 @@ entities: - type: Transform pos: 3.4403718,14.868031 parent: 2 - - uid: 24705 - components: - - type: Transform - pos: 3.2841218,14.868031 - parent: 2 - - uid: 24706 - components: - - type: Transform - pos: 2.8466218,14.868031 - parent: 2 - uid: 24707 components: - type: Transform @@ -56030,11 +56664,6 @@ entities: - type: Transform pos: 2.6747468,14.868031 parent: 2 - - uid: 24709 - components: - - type: Transform - pos: 2.6747468,14.868031 - parent: 2 - uid: 24710 components: - type: Transform @@ -56050,11 +56679,6 @@ entities: - type: Transform pos: 1.2997468,15.008656 parent: 2 - - uid: 24713 - components: - - type: Transform - pos: 0.7528718,14.711781 - parent: 2 - uid: 24714 components: - type: Transform @@ -56065,51 +56689,21 @@ entities: - type: Transform pos: 0.7997468,14.920928 parent: 2 - - uid: 24716 - components: - - type: Transform - pos: 0.7997468,14.920928 - parent: 2 - uid: 24717 components: - type: Transform pos: 1.0184968,14.655303 parent: 2 - - uid: 24718 - components: - - type: Transform - pos: 0.9872468,14.874053 - parent: 2 - uid: 24719 components: - type: Transform pos: 0.8622468,14.749053 parent: 2 - - uid: 24720 - components: - - type: Transform - pos: 0.9403718,14.545928 - parent: 2 - uid: 24721 components: - type: Transform pos: 0.7841218,14.608428 parent: 2 - - uid: 24722 - components: - - type: Transform - pos: 0.8466218,14.952178 - parent: 2 - - uid: 24723 - components: - - type: Transform - pos: 0.7216218,14.733428 - parent: 2 - - uid: 24724 - components: - - type: Transform - pos: 0.8466218,14.561553 - parent: 2 - uid: 24725 components: - type: Transform @@ -56120,11 +56714,6 @@ entities: - type: Transform pos: 4.1147203,14.263381 parent: 2 - - uid: 24727 - components: - - type: Transform - pos: 1.1747468,14.749053 - parent: 2 - uid: 24728 components: - type: Transform @@ -56135,21 +56724,11 @@ entities: - type: Transform pos: 0.4716218,14.717803 parent: 2 - - uid: 24730 - components: - - type: Transform - pos: 0.8309968,14.577178 - parent: 2 - uid: 24731 components: - type: Transform pos: 8.415404,12.363458 parent: 2 - - uid: 24732 - components: - - type: Transform - pos: 8.806029,12.191583 - parent: 2 - uid: 24733 components: - type: Transform @@ -56165,31 +56744,11 @@ entities: - type: Transform pos: 9.337279,11.644708 parent: 2 - - uid: 24736 - components: - - type: Transform - pos: 9.509154,11.879083 - parent: 2 - uid: 24737 components: - type: Transform pos: 9.790404,11.738458 parent: 2 - - uid: 24738 - components: - - type: Transform - pos: 13.368529,10.394708 - parent: 2 - - uid: 24739 - components: - - type: Transform - pos: 13.602904,10.613458 - parent: 2 - - uid: 24740 - components: - - type: Transform - pos: 13.352904,10.613458 - parent: 2 - uid: 24741 components: - type: Transform @@ -56245,31 +56804,11 @@ entities: - type: Transform pos: 10.962279,12.144708 parent: 2 - - uid: 24752 - components: - - type: Transform - pos: 10.962279,12.144708 - parent: 2 - uid: 24753 components: - type: Transform pos: 11.602904,12.082208 parent: 2 - - uid: 24754 - components: - - type: Transform - pos: 11.852904,11.879083 - parent: 2 - - uid: 24755 - components: - - type: Transform - pos: 8.665404,12.082208 - parent: 2 - - uid: 24756 - components: - - type: Transform - pos: 8.524779,12.082208 - parent: 2 - uid: 24757 components: - type: Transform @@ -56390,36 +56929,11 @@ entities: - type: Transform pos: 7.4622793,21.346066 parent: 2 - - uid: 24781 - components: - - type: Transform - pos: -1.6271136,11.638884 - parent: 2 - - uid: 24782 - components: - - type: Transform - pos: -1.2208637,11.576384 - parent: 2 - - uid: 24783 - components: - - type: Transform - pos: -1.2208637,11.482634 - parent: 2 - - uid: 24784 - components: - - type: Transform - pos: -1.3614887,11.545134 - parent: 2 - uid: 24785 components: - type: Transform pos: -1.6739886,11.498259 parent: 2 - - uid: 24786 - components: - - type: Transform - pos: -1.3146137,11.185759 - parent: 2 - uid: 24787 components: - type: Transform @@ -56450,56 +56964,16 @@ entities: - type: Transform pos: -3.537694,43.889595 parent: 2 - - uid: 24818 - components: - - type: Transform - pos: -3.709569,43.84272 - parent: 2 - - uid: 24819 - components: - - type: Transform - pos: -3.662694,43.59272 - parent: 2 - uid: 24820 components: - type: Transform pos: -4.178319,43.59272 parent: 2 - - uid: 24821 - components: - - type: Transform - pos: -3.865819,43.608345 - parent: 2 - uid: 24822 components: - type: Transform pos: -3.990819,43.795845 parent: 2 - - uid: 24823 - components: - - type: Transform - pos: -3.725194,43.764595 - parent: 2 - - uid: 24824 - components: - - type: Transform - pos: -3.912694,43.62397 - parent: 2 - - uid: 24825 - components: - - type: Transform - pos: -3.709569,43.62397 - parent: 2 - - uid: 24826 - components: - - type: Transform - pos: -3.881444,43.65522 - parent: 2 - - uid: 24827 - components: - - type: Transform - pos: -3.428319,43.87397 - parent: 2 - uid: 24828 components: - type: Transform @@ -56515,11 +56989,6 @@ entities: - type: Transform pos: -0.912694,44.702095 parent: 2 - - uid: 24831 - components: - - type: Transform - pos: -0.11581898,44.920845 - parent: 2 - uid: 24832 components: - type: Transform @@ -56550,11 +57019,6 @@ entities: - type: Transform pos: -0.30331898,45.295845 parent: 2 - - uid: 24838 - components: - - type: Transform - pos: -0.912694,45.170845 - parent: 2 - uid: 24839 components: - type: Transform @@ -56570,11 +57034,6 @@ entities: - type: Transform pos: -3.162694,46.40522 parent: 2 - - uid: 24842 - components: - - type: Transform - pos: -3.490819,46.62397 - parent: 2 - uid: 24843 components: - type: Transform @@ -56585,11 +57044,6 @@ entities: - type: Transform pos: -3.615819,46.702095 parent: 2 - - uid: 24845 - components: - - type: Transform - pos: -3.865819,46.74897 - parent: 2 - uid: 24846 components: - type: Transform @@ -56610,46 +57064,21 @@ entities: - type: Transform pos: 4.2605886,44.545845 parent: 2 - - uid: 24850 - components: - - type: Transform - pos: 4.5574636,44.545845 - parent: 2 - uid: 24851 components: - type: Transform pos: 4.8855886,44.545845 parent: 2 - - uid: 24852 - components: - - type: Transform - pos: 5.2293386,44.53022 - parent: 2 - uid: 24853 components: - type: Transform pos: 5.3855886,44.53022 parent: 2 - - uid: 24854 - components: - - type: Transform - pos: 5.5418386,44.452095 - parent: 2 - - uid: 24855 - components: - - type: Transform - pos: 6.0262136,44.545845 - parent: 2 - uid: 24856 components: - type: Transform pos: 6.1980886,44.28022 parent: 2 - - uid: 24857 - components: - - type: Transform - pos: 6.2918386,44.21772 - parent: 2 - uid: 24858 components: - type: Transform @@ -56660,51 +57089,16 @@ entities: - type: Transform pos: 6.7918386,43.90522 parent: 2 - - uid: 24860 - components: - - type: Transform - pos: 8.073089,44.327095 - parent: 2 - - uid: 24861 - components: - - type: Transform - pos: 7.6512136,44.43647 - parent: 2 - - uid: 24862 - components: - - type: Transform - pos: 7.8543386,44.24897 - parent: 2 - uid: 24863 components: - type: Transform pos: 7.8699636,44.31147 parent: 2 - - uid: 24864 - components: - - type: Transform - pos: 7.8699636,44.31147 - parent: 2 - - uid: 24865 - components: - - type: Transform - pos: 8.088714,44.40522 - parent: 2 - uid: 24866 components: - type: Transform pos: 7.6668386,44.420845 parent: 2 - - uid: 24867 - components: - - type: Transform - pos: 7.6668386,44.28022 - parent: 2 - - uid: 24868 - components: - - type: Transform - pos: 7.9012136,44.56147 - parent: 2 - uid: 24869 components: - type: Transform @@ -56715,11 +57109,6 @@ entities: - type: Transform pos: 8.354339,44.608345 parent: 2 - - uid: 24871 - components: - - type: Transform - pos: 8.010589,44.577095 - parent: 2 - uid: 24872 components: - type: Transform @@ -56730,11 +57119,6 @@ entities: - type: Transform pos: 8.135589,44.389595 parent: 2 - - uid: 24874 - components: - - type: Transform - pos: 7.8074636,44.56147 - parent: 2 - uid: 24875 components: - type: Transform @@ -56785,36 +57169,11 @@ entities: - type: Transform pos: 15.551246,44.945328 parent: 2 - - uid: 24894 - components: - - type: Transform - pos: 15.935853,45.50549 - parent: 2 - - uid: 24895 - components: - - type: Transform - pos: 16.232727,45.302364 - parent: 2 - uid: 24896 components: - type: Transform pos: 16.217102,45.521114 parent: 2 - - uid: 24897 - components: - - type: Transform - pos: 16.029602,45.44299 - parent: 2 - - uid: 24898 - components: - - type: Transform - pos: 15.873353,45.333614 - parent: 2 - - uid: 24921 - components: - - type: Transform - pos: -4.764084,-52.293144 - parent: 2 - uid: 24922 components: - type: Transform @@ -56830,21 +57189,6 @@ entities: - type: Transform pos: -4.607834,-51.80877 parent: 2 - - uid: 24925 - components: - - type: Transform - pos: -5.154709,-51.84002 - parent: 2 - - uid: 24926 - components: - - type: Transform - pos: -4.935959,-51.74627 - parent: 2 - - uid: 24927 - components: - - type: Transform - pos: -5.170334,-51.77752 - parent: 2 - uid: 24928 components: - type: Transform @@ -56860,16 +57204,6 @@ entities: - type: Transform pos: -3.9515839,-52.52752 parent: 2 - - uid: 24931 - components: - - type: Transform - pos: -4.295334,-52.230644 - parent: 2 - - uid: 24932 - components: - - type: Transform - pos: -4.701584,-52.34002 - parent: 2 - uid: 24933 components: - type: Transform @@ -56885,36 +57219,16 @@ entities: - type: Transform pos: -6.607834,-52.355644 parent: 2 - - uid: 24936 - components: - - type: Transform - pos: -6.842209,-52.355644 - parent: 2 - uid: 24937 components: - type: Transform pos: -6.826584,-52.24627 parent: 2 - - uid: 24938 - components: - - type: Transform - pos: -6.748459,-52.27752 - parent: 2 - - uid: 24939 - components: - - type: Transform - pos: -6.920334,-52.293144 - parent: 2 - uid: 24940 components: - type: Transform pos: -7.217209,-52.355644 parent: 2 - - uid: 24941 - components: - - type: Transform - pos: -6.998459,-52.34002 - parent: 2 - uid: 24942 components: - type: Transform @@ -56935,26 +57249,6 @@ entities: - type: Transform pos: 0.75672925,-52.65336 parent: 2 - - uid: 24946 - components: - - type: Transform - pos: 0.47547925,-52.65336 - parent: 2 - - uid: 24947 - components: - - type: Transform - pos: 0.61610425,-52.93461 - parent: 2 - - uid: 24948 - components: - - type: Transform - pos: 0.80360425,-53.293983 - parent: 2 - - uid: 24949 - components: - - type: Transform - pos: 1.2098542,-53.71586 - parent: 2 - uid: 24950 components: - type: Transform @@ -56975,21 +57269,11 @@ entities: - type: Transform pos: 1.2723542,-54.731483 parent: 2 - - uid: 24954 - components: - - type: Transform - pos: 0.78797925,-52.99711 - parent: 2 - uid: 24955 components: - type: Transform pos: 0.88172925,-52.52836 parent: 2 - - uid: 24956 - components: - - type: Transform - pos: 0.72547925,-52.137733 - parent: 2 - uid: 24957 components: - type: Transform @@ -57005,31 +57289,16 @@ entities: - type: Transform pos: 0.44422925,-50.65336 parent: 2 - - uid: 24960 - components: - - type: Transform - pos: 0.91297925,-51.168983 - parent: 2 - uid: 24961 components: - type: Transform pos: 1.1473542,-51.77836 parent: 2 - - uid: 24962 - components: - - type: Transform - pos: 0.27235425,-51.37211 - parent: 2 - uid: 24963 components: - type: Transform pos: 0.53797925,-51.87211 parent: 2 - - uid: 24964 - components: - - type: Transform - pos: 0.75672925,-51.481483 - parent: 2 - uid: 24965 components: - type: Transform @@ -57045,41 +57314,16 @@ entities: - type: Transform pos: 0.85047925,-50.293983 parent: 2 - - uid: 24968 - components: - - type: Transform - pos: 0.61610425,-52.856483 - parent: 2 - uid: 24969 components: - type: Transform pos: 0.35047925,-52.77836 parent: 2 - - uid: 24970 - components: - - type: Transform - pos: 0.49110425,-52.62211 - parent: 2 - - uid: 24971 - components: - - type: Transform - pos: 0.36610425,-52.543983 - parent: 2 - uid: 24972 components: - type: Transform pos: 0.22547925,-52.37211 parent: 2 - - uid: 24973 - components: - - type: Transform - pos: 0.64735425,-52.793983 - parent: 2 - - uid: 24974 - components: - - type: Transform - pos: 1.2411042,-55.287304 - parent: 2 - uid: 24975 components: - type: Transform @@ -57090,11 +57334,6 @@ entities: - type: Transform pos: 1.0067292,-56.756054 parent: 2 - - uid: 24977 - components: - - type: Transform - pos: 1.0067292,-57.45918 - parent: 2 - uid: 24978 components: - type: Transform @@ -57155,31 +57394,16 @@ entities: - type: Transform pos: 20.663498,-50.800842 parent: 2 - - uid: 24996 - components: - - type: Transform - pos: 21.382248,-50.644592 - parent: 2 - uid: 24997 components: - type: Transform pos: 20.772873,-50.113342 parent: 2 - - uid: 24998 - components: - - type: Transform - pos: 21.210373,-50.378967 - parent: 2 - uid: 24999 components: - type: Transform pos: 21.507248,-50.519592 parent: 2 - - uid: 25000 - components: - - type: Transform - pos: 21.350998,-50.566467 - parent: 2 - uid: 25001 components: - type: Transform @@ -57190,71 +57414,26 @@ entities: - type: Transform pos: 21.678852,-43.485214 parent: 2 - - uid: 25003 - components: - - type: Transform - pos: 26.844816,-39.889545 - parent: 2 - uid: 25004 components: - type: Transform pos: 27.079191,-40.108295 parent: 2 - - uid: 25005 - components: - - type: Transform - pos: 27.204191,-39.889545 - parent: 2 - uid: 25006 components: - type: Transform pos: 27.016691,-39.608295 parent: 2 - - uid: 25007 - components: - - type: Transform - pos: 27.016691,-39.983295 - parent: 2 - - uid: 25008 - components: - - type: Transform - pos: 26.907316,-39.74892 - parent: 2 - - uid: 25009 - components: - - type: Transform - pos: 27.063566,-39.858295 - parent: 2 - uid: 25010 components: - type: Transform pos: 26.688566,-39.920795 parent: 2 - - uid: 25011 - components: - - type: Transform - pos: 26.704191,-39.99892 - parent: 2 - uid: 25012 components: - type: Transform pos: 26.844816,-40.170795 parent: 2 - - uid: 25013 - components: - - type: Transform - pos: 26.876066,-40.03017 - parent: 2 - - uid: 25014 - components: - - type: Transform - pos: 27.563566,-39.858295 - parent: 2 - - uid: 25015 - components: - - type: Transform - pos: 27.719816,-39.764545 - parent: 2 - uid: 25016 components: - type: Transform @@ -57265,21 +57444,11 @@ entities: - type: Transform pos: 28.532316,-39.577045 parent: 2 - - uid: 25018 - components: - - type: Transform - pos: 27.829191,-39.639545 - parent: 2 - uid: 25019 components: - type: Transform pos: 27.485441,-39.670795 parent: 2 - - uid: 25020 - components: - - type: Transform - pos: 30.829191,-39.983295 - parent: 2 - uid: 25021 components: - type: Transform @@ -57305,31 +57474,16 @@ entities: - type: Transform pos: 25.985441,-42.43642 parent: 2 - - uid: 25026 - components: - - type: Transform - pos: 24.563566,-40.608295 - parent: 2 - uid: 25027 components: - type: Transform pos: 24.782316,-42.233295 parent: 2 - - uid: 25028 - components: - - type: Transform - pos: 25.235441,-42.40517 - parent: 2 - uid: 25029 components: - type: Transform pos: 24.485441,-40.014545 parent: 2 - - uid: 25030 - components: - - type: Transform - pos: 31.799347,-37.25001 - parent: 2 - uid: 25031 components: - type: Transform @@ -57350,16 +57504,6 @@ entities: - type: Transform pos: 31.486847,-33.336308 parent: 2 - - uid: 25035 - components: - - type: Transform - pos: 32.986847,-33.383183 - parent: 2 - - uid: 25036 - components: - - type: Transform - pos: 33.080597,-33.101933 - parent: 2 - uid: 25037 components: - type: Transform @@ -57380,61 +57524,21 @@ entities: - type: Transform pos: 43.53143,-24.979889 parent: 2 - - uid: 25041 - components: - - type: Transform - pos: 44.015804,-25.308014 - parent: 2 - - uid: 25042 - components: - - type: Transform - pos: 44.359554,-25.901764 - parent: 2 - uid: 25043 components: - type: Transform pos: 43.93768,-25.870514 parent: 2 - - uid: 25044 - components: - - type: Transform - pos: 44.21893,-25.542389 - parent: 2 - uid: 25045 components: - type: Transform pos: 43.703304,-25.401764 parent: 2 - - uid: 25046 - components: - - type: Transform - pos: 43.797054,-25.292389 - parent: 2 - - uid: 25047 - components: - - type: Transform - pos: 44.00018,-25.448639 - parent: 2 - - uid: 25048 - components: - - type: Transform - pos: 43.84393,-25.448639 - parent: 2 - uid: 25049 components: - type: Transform pos: 44.359554,-25.526764 parent: 2 - - uid: 25050 - components: - - type: Transform - pos: 44.640804,-25.979889 - parent: 2 - - uid: 25051 - components: - - type: Transform - pos: 44.640804,-26.667389 - parent: 2 - uid: 25052 components: - type: Transform @@ -57470,31 +57574,11 @@ entities: - type: Transform pos: -14.243463,0.2846713 parent: 2 - - uid: 25080 - components: - - type: Transform - pos: -14.305963,0.0034213066 - parent: 2 - uid: 25081 components: - type: Transform pos: -14.384088,0.019046307 parent: 2 - - uid: 25082 - components: - - type: Transform - pos: -14.790338,0.050296307 - parent: 2 - - uid: 25083 - components: - - type: Transform - pos: -14.821588,-0.3403287 - parent: 2 - - uid: 25084 - components: - - type: Transform - pos: -14.430963,-0.059078693 - parent: 2 - uid: 25085 components: - type: Transform @@ -57505,11 +57589,6 @@ entities: - type: Transform pos: -15.977837,0.034671307 parent: 2 - - uid: 25087 - components: - - type: Transform - pos: -14.915338,-0.3715787 - parent: 2 - uid: 25088 components: - type: Transform @@ -57540,26 +57619,6 @@ entities: - type: Transform pos: -7.3215876,1.0034213 parent: 2 - - uid: 25094 - components: - - type: Transform - pos: -6.9778376,0.8627963 - parent: 2 - - uid: 25095 - components: - - type: Transform - pos: -7.2903376,0.8002963 - parent: 2 - - uid: 25096 - components: - - type: Transform - pos: -7.7903376,1.0034213 - parent: 2 - - uid: 25097 - components: - - type: Transform - pos: -7.3684626,0.9721713 - parent: 2 - uid: 25098 components: - type: Transform @@ -57570,51 +57629,16 @@ entities: - type: Transform pos: -7.7278376,0.7846713 parent: 2 - - uid: 25100 - components: - - type: Transform - pos: -6.8215876,1.0190463 - parent: 2 - - uid: 25101 - components: - - type: Transform - pos: -6.6340876,1.0659213 - parent: 2 - uid: 25102 components: - type: Transform pos: -7.2278376,0.9409213 parent: 2 - - uid: 25103 - components: - - type: Transform - pos: -7.1965876,0.9409213 - parent: 2 - - uid: 25104 - components: - - type: Transform - pos: -7.0247126,0.9721713 - parent: 2 - uid: 25105 components: - type: Transform pos: -6.8684626,1.0346713 parent: 2 - - uid: 25106 - components: - - type: Transform - pos: -7.1809626,0.9252963 - parent: 2 - - uid: 25107 - components: - - type: Transform - pos: -6.9778376,0.8315463 - parent: 2 - - uid: 25108 - components: - - type: Transform - pos: -6.7590876,1.0190463 - parent: 2 - uid: 25109 components: - type: Transform @@ -57640,11 +57664,6 @@ entities: - type: Transform pos: 34.03853,42.809082 parent: 2 - - uid: 25172 - components: - - type: Transform - pos: 32.96028,42.934082 - parent: 2 - uid: 25173 components: - type: Transform @@ -57655,11 +57674,6 @@ entities: - type: Transform pos: 35.35103,43.996582 parent: 2 - - uid: 25175 - components: - - type: Transform - pos: 34.241653,43.559082 - parent: 2 - uid: 25176 components: - type: Transform @@ -57705,46 +57719,16 @@ entities: - type: Transform pos: 38.136494,30.102514 parent: 2 - - uid: 25187 - components: - - type: Transform - pos: 37.27712,33.68863 - parent: 2 - uid: 25188 components: - type: Transform pos: 35.15212,33.079254 parent: 2 - - uid: 25197 - components: - - type: Transform - pos: 35.431316,33.282597 - parent: 2 - - uid: 25198 - components: - - type: Transform - pos: 37.275555,33.42322 - parent: 2 - - uid: 25199 - components: - - type: Transform - pos: 37.29118,33.42322 - parent: 2 - uid: 25200 components: - type: Transform pos: 37.66618,33.376347 parent: 2 - - uid: 25201 - components: - - type: Transform - pos: 37.66618,33.376347 - parent: 2 - - uid: 25202 - components: - - type: Transform - pos: 38.10368,33.407597 - parent: 2 - uid: 25203 components: - type: Transform @@ -57760,94 +57744,18 @@ entities: - type: Transform pos: 37.57243,27.580051 parent: 2 - - uid: 25206 - components: - - type: Transform - pos: 37.85368,27.298801 - parent: 2 - - uid: 25207 - components: - - type: Transform - pos: 37.63493,27.017551 - parent: 2 - - uid: 25925 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.62985,0.15934366 - parent: 2 - uid: 25926 components: - type: Transform rot: 3.141592653589793 rad pos: 42.895473,0.19059366 parent: 2 - - uid: 25927 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.926723,0.56559366 - parent: 2 - - uid: 25928 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.989223,0.54996866 - parent: 2 - uid: 25929 components: - type: Transform rot: 3.141592653589793 rad pos: 42.707973,0.37809366 parent: 2 - - uid: 25930 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.895473,0.31559366 - parent: 2 - - uid: 25931 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.895473,0.31559366 - parent: 2 - - uid: 25932 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.75485,0.54996866 - parent: 2 - - uid: 25933 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.75485,0.54996866 - parent: 2 - - uid: 25934 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.895473,0.37809366 - parent: 2 - - uid: 25935 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.895473,0.37809366 - parent: 2 - - uid: 25936 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.62985,0.29996866 - parent: 2 - - uid: 25937 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.6611,0.20621866 - parent: 2 - uid: 25938 components: - type: Transform @@ -57860,30 +57768,6 @@ entities: rot: 3.141592653589793 rad pos: 43.739223,0.14371866 parent: 2 - - uid: 25940 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.62985,0.14371866 - parent: 2 - - uid: 25941 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.9736,0.23746866 - parent: 2 - - uid: 25942 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 43.114223,0.59684366 - parent: 2 - - uid: 25943 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 43.50485,0.87809366 - parent: 2 - uid: 25944 components: - type: Transform @@ -57902,48 +57786,6 @@ entities: rot: 3.141592653589793 rad pos: 42.87985,1.1280937 parent: 2 - - uid: 25947 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 41.864223,5.3312187 - parent: 2 - - uid: 25948 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.051723,5.3155937 - parent: 2 - - uid: 25949 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 41.582973,5.0499687 - parent: 2 - - uid: 25950 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 41.9111,5.0187187 - parent: 2 - - uid: 25951 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.395473,5.0187187 - parent: 2 - - uid: 25952 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.426723,5.3155937 - parent: 2 - - uid: 25953 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 41.94235,5.3312187 - parent: 2 - uid: 25954 components: - type: Transform @@ -57998,54 +57840,18 @@ entities: rot: 3.141592653589793 rad pos: 42.520473,3.2530937 parent: 2 - - uid: 25963 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.707973,4.4874687 - parent: 2 - - uid: 25964 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.81735,5.5812187 - parent: 2 - - uid: 25965 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.9736,5.9405937 - parent: 2 - - uid: 25966 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 43.2236,6.2843437 - parent: 2 - uid: 25967 components: - type: Transform rot: 3.141592653589793 rad pos: 43.270473,6.6437187 parent: 2 - - uid: 25968 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.926723,5.9562187 - parent: 2 - uid: 25969 components: - type: Transform rot: 3.141592653589793 rad pos: 42.6611,5.6437187 parent: 2 - - uid: 25970 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.25485,5.3624687 - parent: 2 - uid: 25971 components: - type: Transform @@ -58058,42 +57864,6 @@ entities: rot: 3.141592653589793 rad pos: 41.895473,4.8780937 parent: 2 - - uid: 25973 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.0361,5.1905937 - parent: 2 - - uid: 25974 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.2861,5.0968437 - parent: 2 - - uid: 25975 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.2236,4.8155937 - parent: 2 - - uid: 25976 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.426723,4.9874687 - parent: 2 - - uid: 25977 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.06735,5.0812187 - parent: 2 - - uid: 25978 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 41.739223,5.2687187 - parent: 2 - uid: 25979 components: - type: Transform @@ -58130,12 +57900,6 @@ entities: rot: 3.141592653589793 rad pos: 43.770473,8.02004 parent: 2 - - uid: 25985 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 43.051723,8.066915 - parent: 2 - uid: 25986 components: - type: Transform @@ -58160,12 +57924,6 @@ entities: rot: 3.141592653589793 rad pos: 38.30003,0.69883204 parent: 2 - - uid: 25990 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 37.14378,0.44883204 - parent: 2 - uid: 25991 components: - type: Transform @@ -58178,24 +57936,6 @@ entities: rot: 3.141592653589793 rad pos: 37.878155,0.37070704 parent: 2 - - uid: 25993 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 37.878155,0.37070704 - parent: 2 - - uid: 25994 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 37.01878,-0.14491796 - parent: 2 - - uid: 25995 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 37.096905,0.41758204 - parent: 2 - uid: 25996 components: - type: Transform @@ -58208,24 +57948,12 @@ entities: rot: 3.141592653589793 rad pos: 37.26878,0.089457035 parent: 2 - - uid: 25998 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 38.003155,-0.082417965 - parent: 2 - uid: 25999 components: - type: Transform rot: 3.141592653589793 rad pos: 38.58128,-0.12929296 parent: 2 - - uid: 26000 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 38.940655,0.089457035 - parent: 2 - uid: 26001 components: - type: Transform @@ -58262,12 +57990,6 @@ entities: rot: 3.141592653589793 rad pos: 40.471905,1.261332 parent: 2 - - uid: 26007 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 40.815655,0.37070704 - parent: 2 - uid: 26706 components: - type: Transform @@ -58316,11 +58038,6 @@ entities: rot: 1.5707963267948966 rad pos: -4.350046,-0.8219223 parent: 26470 - - uid: 27099 - components: - - type: Transform - pos: -6.625,0.671875 - parent: 2 - uid: 27758 components: - type: Transform @@ -58357,24 +58074,12 @@ entities: rot: 3.141592653589793 rad pos: 39.41961,34.734303 parent: 2 - - uid: 27764 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 39.76336,33.609303 - parent: 2 - uid: 27765 components: - type: Transform rot: 3.141592653589793 rad pos: 40.73211,32.703053 parent: 2 - - uid: 27766 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 39.247734,33.390553 - parent: 2 - uid: 27767 components: - type: Transform @@ -58515,18 +58220,47 @@ entities: rot: 1.5707963267948966 rad pos: 31.5,-58.5 parent: 2 + - uid: 815 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-54.5 + parent: 2 + - uid: 816 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,-45.5 + parent: 2 + - uid: 817 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 57.5,-45.5 + parent: 2 - uid: 834 components: - type: Transform rot: 1.5707963267948966 rad pos: -56.5,-31.5 parent: 2 + - uid: 835 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-49.5 + parent: 2 - uid: 841 components: - type: Transform rot: 1.5707963267948966 rad pos: 32.5,-56.5 parent: 2 + - uid: 853 + components: + - type: Transform + pos: 40.5,-30.5 + parent: 2 - uid: 924 components: - type: Transform @@ -58571,6 +58305,12 @@ entities: rot: -1.5707963267948966 rad pos: 11.5,34.5 parent: 2 + - uid: 1707 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 49.5,-45.5 + parent: 2 - uid: 1984 components: - type: Transform @@ -58581,6 +58321,24 @@ entities: - type: Transform pos: -12.5,-84.5 parent: 2 + - uid: 2331 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 52.5,-47.5 + parent: 2 + - uid: 2335 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 56.5,-48.5 + parent: 2 + - uid: 2337 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 57.5,-47.5 + parent: 2 - uid: 2681 components: - type: Transform @@ -58664,36 +58422,6 @@ entities: - type: Transform pos: 62.5,19.5 parent: 2 - - uid: 3669 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 50.5,-43.5 - parent: 2 - - uid: 3670 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 51.5,-43.5 - parent: 2 - - uid: 3672 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 48.5,-44.5 - parent: 2 - - uid: 3673 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 51.5,-44.5 - parent: 2 - - uid: 3675 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 50.5,-44.5 - parent: 2 - uid: 3727 components: - type: Transform @@ -58706,78 +58434,12 @@ entities: rot: -1.5707963267948966 rad pos: -48.5,-21.5 parent: 2 - - uid: 3795 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 55.5,-43.5 - parent: 2 - - uid: 3798 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 48.5,-43.5 - parent: 2 - - uid: 3799 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 53.5,-43.5 - parent: 2 - - uid: 3801 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 54.5,-44.5 - parent: 2 - - uid: 3807 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 54.5,-43.5 - parent: 2 - - uid: 3818 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 49.5,-44.5 - parent: 2 - - uid: 3819 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 55.5,-44.5 - parent: 2 - uid: 3820 components: - type: Transform rot: -1.5707963267948966 rad pos: -37.5,23.5 parent: 2 - - uid: 3823 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 52.5,-44.5 - parent: 2 - - uid: 3825 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 53.5,-44.5 - parent: 2 - - uid: 3827 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 52.5,-43.5 - parent: 2 - - uid: 3830 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 49.5,-43.5 - parent: 2 - uid: 3890 components: - type: Transform @@ -60055,6 +59717,12 @@ entities: - type: Transform pos: -12.5,-31.5 parent: 2 + - uid: 6909 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-51.5 + parent: 2 - uid: 7056 components: - type: Transform @@ -60206,12 +59874,54 @@ entities: rot: -1.5707963267948966 rad pos: -37.5,17.5 parent: 2 + - uid: 7518 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 57.5,-46.5 + parent: 2 + - uid: 7527 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 52.5,-48.5 + parent: 2 - uid: 7557 components: - type: Transform rot: -1.5707963267948966 rad pos: 5.5,33.5 parent: 2 + - uid: 7565 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-48.5 + parent: 2 + - uid: 7566 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 51.5,-45.5 + parent: 2 + - uid: 7567 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 50.5,-45.5 + parent: 2 + - uid: 7571 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 46.5,-46.5 + parent: 2 + - uid: 7603 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-50.5 + parent: 2 - uid: 7633 components: - type: Transform @@ -60223,12 +59933,6 @@ entities: rot: -1.5707963267948966 rad pos: -37.5,15.5 parent: 2 - - uid: 7658 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 52.5,-43.5 - parent: 2 - uid: 7731 components: - type: Transform @@ -60337,11 +60041,6 @@ entities: - type: Transform pos: 2.5,-21.5 parent: 2 - - uid: 8413 - components: - - type: Transform - pos: 46.5,-43.5 - parent: 2 - uid: 8422 components: - type: Transform @@ -60357,11 +60056,6 @@ entities: - type: Transform pos: -64.5,21.5 parent: 2 - - uid: 8480 - components: - - type: Transform - pos: 46.5,-44.5 - parent: 2 - uid: 8564 components: - type: Transform @@ -64697,6 +64391,24 @@ entities: - type: Transform pos: -50.5,-53.5 parent: 2 + - uid: 12676 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,-47.5 + parent: 2 + - uid: 12677 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,-46.5 + parent: 2 + - uid: 12862 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 48.5,-45.5 + parent: 2 - uid: 13160 components: - type: Transform @@ -64720,6 +64432,12 @@ entities: rot: -1.5707963267948966 rad pos: -37.5,16.5 parent: 2 + - uid: 13661 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 47.5,-45.5 + parent: 2 - uid: 13716 components: - type: Transform @@ -64742,6 +64460,41 @@ entities: rot: -1.5707963267948966 rad pos: 8.5,33.5 parent: 2 + - uid: 14961 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 52.5,-45.5 + parent: 2 + - uid: 14964 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 46.5,-45.5 + parent: 2 + - uid: 14978 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 52.5,-46.5 + parent: 2 + - uid: 14985 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 57.5,-48.5 + parent: 2 + - uid: 15021 + components: + - type: Transform + pos: 55.5,-44.5 + parent: 2 + - uid: 15110 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,-48.5 + parent: 2 - uid: 15674 components: - type: Transform @@ -64918,6 +64671,24 @@ entities: - type: Transform pos: 31.5,-10.5 parent: 2 + - uid: 17797 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-46.5 + parent: 2 + - uid: 17798 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-45.5 + parent: 2 + - uid: 17799 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-47.5 + parent: 2 - uid: 17807 components: - type: Transform @@ -64991,6 +64762,12 @@ entities: - type: Transform pos: 36.5,-10.5 parent: 2 + - uid: 19480 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-48.5 + parent: 2 - uid: 19528 components: - type: Transform @@ -65634,30 +65411,6 @@ entities: - type: Transform pos: -50.5,-61.5 parent: 2 - - uid: 21432 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 47.5,-44.5 - parent: 2 - - uid: 21433 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 47.5,-43.5 - parent: 2 - - uid: 21436 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 45.5,-44.5 - parent: 2 - - uid: 21437 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 45.5,-43.5 - parent: 2 - uid: 21439 components: - type: Transform @@ -65850,6 +65603,18 @@ entities: - type: Transform pos: -47.5,-61.5 parent: 2 + - uid: 21977 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,-52.5 + parent: 2 + - uid: 21980 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,-50.5 + parent: 2 - uid: 21991 components: - type: Transform @@ -65877,12 +65642,30 @@ entities: - type: Transform pos: -45.5,-61.5 parent: 2 + - uid: 22271 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,-53.5 + parent: 2 - uid: 22287 components: - type: Transform rot: -1.5707963267948966 rad pos: -28.5,36.5 parent: 2 + - uid: 22299 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,-54.5 + parent: 2 + - uid: 22307 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,-51.5 + parent: 2 - uid: 22386 components: - type: Transform @@ -65894,6 +65677,17 @@ entities: - type: Transform pos: -44.5,-61.5 parent: 2 + - uid: 22657 + components: + - type: Transform + pos: 54.5,-44.5 + parent: 2 + - uid: 22659 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,-49.5 + parent: 2 - uid: 22699 components: - type: Transform @@ -66049,6 +65843,18 @@ entities: - type: Transform pos: 3.5,-35.5 parent: 2 + - uid: 24366 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-52.5 + parent: 2 + - uid: 24368 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-53.5 + parent: 2 - uid: 24494 components: - type: Transform @@ -66162,17 +65968,323 @@ entities: - type: Transform pos: -47.5,45.5 parent: 2 + - uid: 24936 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 58.5,-45.5 + parent: 2 + - uid: 24938 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 59.5,-45.5 + parent: 2 + - uid: 24939 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 60.5,-45.5 + parent: 2 + - uid: 24941 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 60.5,-44.5 + parent: 2 + - uid: 24946 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 60.5,-43.5 + parent: 2 + - uid: 24947 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 60.5,-42.5 + parent: 2 + - uid: 24948 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 60.5,-41.5 + parent: 2 + - uid: 24949 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 60.5,-40.5 + parent: 2 + - uid: 24954 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 60.5,-39.5 + parent: 2 + - uid: 24956 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 60.5,-38.5 + parent: 2 + - uid: 24960 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 60.5,-37.5 + parent: 2 + - uid: 24962 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 60.5,-35.5 + parent: 2 + - uid: 24964 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 60.5,-34.5 + parent: 2 + - uid: 24968 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 60.5,-33.5 + parent: 2 + - uid: 24970 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 60.5,-32.5 + parent: 2 + - uid: 24971 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 60.5,-36.5 + parent: 2 + - uid: 24973 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 61.5,-32.5 + parent: 2 + - uid: 24974 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 62.5,-32.5 + parent: 2 + - uid: 24977 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 64.5,-32.5 + parent: 2 + - uid: 24996 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-32.5 + parent: 2 + - uid: 24998 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 65.5,-23.5 + parent: 2 + - uid: 25000 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 64.5,-23.5 + parent: 2 + - uid: 25003 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 64.5,-24.5 + parent: 2 + - uid: 25005 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 64.5,-25.5 + parent: 2 + - uid: 25007 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 64.5,-27.5 + parent: 2 + - uid: 25008 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 64.5,-28.5 + parent: 2 + - uid: 25009 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 64.5,-29.5 + parent: 2 + - uid: 25011 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 64.5,-30.5 + parent: 2 + - uid: 25013 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 64.5,-31.5 + parent: 2 + - uid: 25014 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 64.5,-26.5 + parent: 2 + - uid: 25015 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 65.5,-22.5 + parent: 2 + - uid: 25035 + components: + - type: Transform + pos: 41.5,-34.5 + parent: 2 + - uid: 25041 + components: + - type: Transform + pos: 33.5,-46.5 + parent: 2 + - uid: 25042 + components: + - type: Transform + pos: 41.5,-35.5 + parent: 2 + - uid: 25044 + components: + - type: Transform + pos: 41.5,-36.5 + parent: 2 + - uid: 25046 + components: + - type: Transform + pos: 42.5,-36.5 + parent: 2 + - uid: 25047 + components: + - type: Transform + pos: 43.5,-36.5 + parent: 2 + - uid: 25048 + components: + - type: Transform + pos: 44.5,-36.5 + parent: 2 + - uid: 25108 + components: + - type: Transform + pos: 34.5,-46.5 + parent: 2 + - uid: 25129 + components: + - type: Transform + pos: 35.5,-46.5 + parent: 2 - uid: 25132 components: - type: Transform rot: -1.5707963267948966 rad pos: -63.5,-20.5 parent: 2 + - uid: 25134 + components: + - type: Transform + pos: 36.5,-46.5 + parent: 2 + - uid: 25135 + components: + - type: Transform + pos: 37.5,-46.5 + parent: 2 + - uid: 25152 + components: + - type: Transform + pos: 37.5,-45.5 + parent: 2 + - uid: 25153 + components: + - type: Transform + pos: 37.5,-44.5 + parent: 2 - uid: 25160 components: - type: Transform pos: -33.5,9.5 parent: 2 + - uid: 25161 + components: + - type: Transform + pos: 37.5,-43.5 + parent: 2 + - uid: 25165 + components: + - type: Transform + pos: 37.5,-42.5 + parent: 2 + - uid: 25172 + components: + - type: Transform + pos: 37.5,-40.5 + parent: 2 + - uid: 25175 + components: + - type: Transform + pos: 37.5,-41.5 + parent: 2 + - uid: 25187 + components: + - type: Transform + pos: 38.5,-40.5 + parent: 2 + - uid: 25196 + components: + - type: Transform + pos: 39.5,-40.5 + parent: 2 + - uid: 25197 + components: + - type: Transform + pos: 40.5,-40.5 + parent: 2 + - uid: 25198 + components: + - type: Transform + pos: 41.5,-40.5 + parent: 2 + - uid: 25199 + components: + - type: Transform + pos: 41.5,-37.5 + parent: 2 + - uid: 25201 + components: + - type: Transform + pos: 41.5,-38.5 + parent: 2 + - uid: 25202 + components: + - type: Transform + pos: 41.5,-39.5 + parent: 2 - uid: 25208 components: - type: Transform @@ -66419,6 +66531,30 @@ entities: rot: 1.5707963267948966 rad pos: -23.5,6.5 parent: 2 + - uid: 25723 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 42.5,-39.5 + parent: 2 + - uid: 25724 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 43.5,-39.5 + parent: 2 + - uid: 25725 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 44.5,-39.5 + parent: 2 + - uid: 25726 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 45.5,-39.5 + parent: 2 - uid: 25753 components: - type: Transform @@ -67773,21 +67909,6 @@ entities: - type: Transform pos: 15.5,-74.5 parent: 2 - - uid: 28331 - components: - - type: Transform - pos: 48.5,-46.5 - parent: 2 - - uid: 28332 - components: - - type: Transform - pos: 47.5,-46.5 - parent: 2 - - uid: 28333 - components: - - type: Transform - pos: 47.5,-47.5 - parent: 2 - uid: 28334 components: - type: Transform @@ -67863,21 +67984,6 @@ entities: - type: Transform pos: 42.5,-57.5 parent: 2 - - uid: 28354 - components: - - type: Transform - pos: 48.5,-46.5 - parent: 2 - - uid: 28355 - components: - - type: Transform - pos: 49.5,-46.5 - parent: 2 - - uid: 28356 - components: - - type: Transform - pos: 49.5,-45.5 - parent: 2 - uid: 28393 components: - type: Transform @@ -68095,36 +68201,6 @@ entities: - type: Transform pos: -18.5,-46.5 parent: 2 - - uid: 7664 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 51.5,-33.5 - parent: 2 - - uid: 7687 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 53.5,-25.5 - parent: 2 - - uid: 7693 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 53.5,-26.5 - parent: 2 - - uid: 7718 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 50.5,-25.5 - parent: 2 - - uid: 7719 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 50.5,-26.5 - parent: 2 - uid: 7742 components: - type: Transform @@ -68765,29 +68841,6 @@ entities: rot: -1.5707963267948966 rad pos: -60.000427,15.88373 parent: 2 - - uid: 7595 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 37.645515,-39.020584 - parent: 2 - - uid: 7596 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 37.645515,-40.309647 - parent: 2 - - uid: 7597 - components: - - type: Transform - pos: 39.778328,-37.66121 - parent: 2 - - uid: 7598 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 40.41114,-39.184647 - parent: 2 - uid: 7766 components: - type: Transform @@ -68939,6 +68992,12 @@ entities: rot: 1.5707963267948966 rad pos: 69.70807,36.65481 parent: 2 + - uid: 12601 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 52.520878,-36.78113 + parent: 2 - uid: 13877 components: - type: Transform @@ -68951,6 +69010,41 @@ entities: rot: -1.5707963267948966 rad pos: 33.577248,38.883427 parent: 2 + - uid: 14993 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 54.020878,-38.421757 + parent: 2 + - uid: 15051 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 52.46354,-26.395433 + parent: 2 + - uid: 15053 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 49.674477,-26.254808 + parent: 2 + - uid: 18339 + components: + - type: Transform + pos: 55.052128,-35.351444 + parent: 2 + - uid: 20008 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 52.36979,-25.434496 + parent: 2 + - uid: 21109 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 55.427128,-38.234257 + parent: 2 - uid: 21480 components: - type: Transform @@ -68975,6 +69069,12 @@ entities: rot: -1.5707963267948966 rad pos: 33.670998,37.14905 parent: 2 + - uid: 24821 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 49.510414,-25.29387 + parent: 2 - uid: 25595 components: - type: Transform @@ -69101,6 +69201,24 @@ entities: rot: 3.141592653589793 rad pos: 26.154697,40.60575 parent: 2 + - uid: 24823 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 54.361977,-29.395433 + parent: 2 + - uid: 24824 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 54.61979,-29.254808 + parent: 2 + - uid: 24825 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 54.3151,-29.067308 + parent: 2 - proto: ChairOfficeDark entities: - uid: 674 @@ -69145,6 +69263,12 @@ entities: rot: -1.5707963267948966 rad pos: -32.567295,-25.47457 parent: 2 + - uid: 7027 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -34.634415,-25.893414 + parent: 2 - uid: 7176 components: - type: Transform @@ -69163,12 +69287,6 @@ entities: rot: -1.5707963267948966 rad pos: -48.427975,4.7114573 parent: 2 - - uid: 7631 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 53.46852,-33.209354 - parent: 2 - uid: 7863 components: - type: Transform @@ -69306,11 +69424,11 @@ entities: rot: 1.5707963267948966 rad pos: -14.459107,-46.355114 parent: 2 - - uid: 6909 + - uid: 24375 components: - type: Transform rot: -1.5707963267948966 rad - pos: 13.5110235,-48.32742 + pos: 10.526301,-48.306103 parent: 2 - proto: ChairPilotSeat entities: @@ -69810,43 +69928,28 @@ entities: parent: 2 - proto: CigarCase entities: - - uid: 5844 + - uid: 624 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -18.388071,6.2206964 + pos: 56.483402,-25.335213 parent: 2 - - uid: 5845 + - uid: 5844 components: - type: Transform rot: -1.5707963267948966 rad pos: -18.388071,6.2206964 parent: 2 - - uid: 7663 + - uid: 5845 components: - type: Transform rot: -1.5707963267948966 rad - pos: 49.526848,-37.46439 + pos: -18.388071,6.2206964 parent: 2 - uid: 10946 components: - type: Transform pos: -65.43893,-5.155668 parent: 2 -- proto: CigaretteLipolicide - entities: - - uid: 3649 - components: - - type: Transform - pos: 51.865196,-26.037785 - parent: 2 -- proto: CigaretteSaline - entities: - - uid: 3647 - components: - - type: Transform - pos: 51.833946,-26.381535 - parent: 2 - proto: CigaretteSpent entities: - uid: 3687 @@ -69854,10 +69957,10 @@ entities: - type: Transform pos: -47.401806,-48.671127 parent: 2 - - uid: 7606 + - uid: 14992 components: - type: Transform - pos: 39.630035,-38.781006 + pos: 55.54612,-36.918785 parent: 2 - uid: 27813 components: @@ -69871,22 +69974,29 @@ entities: - type: Transform pos: -47.495556,-48.280502 parent: 2 - - uid: 7604 + - uid: 22302 components: - type: Transform - pos: 39.192535,-38.531006 + pos: 55.311745,-36.918785 parent: 2 - - uid: 7605 + - uid: 24854 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 51.17023,-26.380962 + parent: 2 + - uid: 24855 components: - type: Transform - pos: 39.098785,-38.35913 + rot: 3.141592653589793 rad + pos: 51.404606,-26.099712 parent: 2 - proto: CigarGold entities: - - uid: 7637 + - uid: 2769 components: - type: Transform - pos: 53.62477,-32.396854 + pos: 60.71105,-28.351427 parent: 2 - uid: 8149 components: @@ -70873,6 +70983,16 @@ entities: - type: Transform pos: -64.5,3.5 parent: 2 + - uid: 27662 + components: + - type: Transform + pos: 44.5,-41.5 + parent: 2 + - uid: 29056 + components: + - type: Transform + pos: 33.5,-45.5 + parent: 2 - proto: ClosetRadiationSuitFilled entities: - uid: 6467 @@ -71096,7 +71216,7 @@ entities: - uid: 6914 components: - type: Transform - pos: 14.418952,-46.333755 + pos: 11.651301,-44.337353 parent: 2 - proto: ClothingBeltMedicalFilled entities: @@ -71333,20 +71453,6 @@ entities: - type: Transform pos: 12.626191,10.628712 parent: 2 -- proto: ClothingEyesHudSyndicateAgent - entities: - - uid: 24456 - components: - - type: MetaData - desc: a professional heads-up display of ones medical status, manufactured by Interdyne, way cooler than NT's medhuds - name: Interdyne medical visor - - type: Transform - pos: -7.0783577,-42.579384 - parent: 2 - missingComponents: - - ShowSyndicateIcons - - ShowMindShieldIcons - - ShowCriminalRecordIcons - proto: ClothingHandsGlovesBoxingBlue entities: - uid: 10373 @@ -71650,7 +71756,7 @@ entities: - uid: 6430 components: - type: Transform - pos: 58.290775,3.7135549 + pos: 58.41087,3.4997673 parent: 2 - proto: ClothingHeadHatWeldingMaskPainted entities: @@ -71701,30 +71807,6 @@ entities: - type: Transform pos: 5.2519917,20.579002 parent: 2 -- proto: ClothingHeadHelmetSwat - entities: - - uid: 5040 - components: - - type: Transform - pos: 5.6074333,21.55672 - parent: 2 - - uid: 5041 - components: - - type: Transform - pos: 5.3225026,21.453316 - parent: 2 -- proto: ClothingHeadHelmetSwatSyndicate - entities: - - uid: 5968 - components: - - type: Transform - pos: 5.408435,19.389397 - parent: 2 - - uid: 5969 - components: - - type: Transform - pos: 5.627185,19.467522 - parent: 2 - proto: ClothingHeadHelmetSyndicate entities: - uid: 7486 @@ -71734,6 +71816,11 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + - uid: 7502 + components: + - type: Transform + pos: 46.491943,-40.318935 + parent: 2 - uid: 7615 components: - type: Transform @@ -71772,11 +71859,6 @@ entities: canCollide: False - type: InsideEntityStorage storage: 20651 - - uid: 23879 - components: - - type: Transform - pos: 37.73674,-46.318054 - parent: 2 - uid: 27700 components: - type: Transform @@ -71855,15 +71937,15 @@ entities: - type: InsideEntityStorage - proto: ClothingHeadsetMining entities: - - uid: 7573 + - uid: 14952 components: - type: Transform - pos: 37.08049,-46.411804 + pos: 46.32788,-41.326748 parent: 2 - - uid: 7574 + - uid: 14981 components: - type: Transform - pos: 37.48674,-46.45868 + pos: 46.72632,-41.326748 parent: 2 - proto: ClothingHeadWehcellentCap entities: @@ -72215,6 +72297,11 @@ entities: - type: Transform pos: 12.320706,21.46917 parent: 2 + - uid: 29035 + components: + - type: Transform + pos: 12.538252,21.46586 + parent: 2 - proto: ClothingOuterArmorRiot entities: - uid: 6330 @@ -72438,6 +72525,16 @@ entities: canCollide: False - type: InsideEntityStorage storage: 5996 +- proto: ClothingOuterHardsuitSpatio + entities: + - uid: 7724 + components: + - type: Transform + parent: 7723 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 7723 - proto: ClothingOuterNunRobe entities: - uid: 25642 @@ -72497,16 +72594,6 @@ entities: - type: Transform pos: 30.692593,35.610783 parent: 2 -- proto: ClothingOuterVestWeb - entities: - - uid: 5972 - components: - - type: Transform - parent: 5971 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 5971 - proto: ClothingOuterWinterMime entities: - uid: 24453 @@ -73100,12 +73187,12 @@ entities: - uid: 6902 components: - type: Transform - pos: 17.398571,-47.454643 + pos: 14.3011055,-47.399853 parent: 2 - uid: 6903 components: - type: Transform - pos: 17.703259,-47.454643 + pos: 14.6136055,-47.399853 parent: 2 - uid: 22880 components: @@ -73399,12 +73486,28 @@ entities: - type: Transform pos: -3.5,36.5 parent: 2 + - uid: 25101 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 37.5,-38.5 + parent: 2 - uid: 25127 components: - type: Transform rot: 1.5707963267948966 rad pos: -20.5,-5.5 parent: 2 + - uid: 25911 + components: + - type: Transform + pos: 38.5,-35.5 + parent: 2 + - uid: 25912 + components: + - type: Transform + pos: 36.5,-35.5 + parent: 2 - uid: 26144 components: - type: Transform @@ -73416,8 +73519,7 @@ entities: - uid: 21595 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -8.621307,73.59841 + pos: -9.630649,70.57272 parent: 2 - proto: CommsComputerCircuitboard entities: @@ -73611,11 +73713,11 @@ entities: parent: 2 - proto: ComputerCargoOrders entities: - - uid: 7632 + - uid: 2733 components: - type: Transform - rot: 3.141592653589793 rad - pos: 53.5,-34.5 + rot: 1.5707963267948966 rad + pos: 59.5,-29.5 parent: 2 - uid: 7738 components: @@ -73664,6 +73766,12 @@ entities: rot: 1.5707963267948966 rad pos: -14.5,40.5 parent: 2 + - uid: 17780 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 9.5,-48.5 + parent: 2 - proto: ComputerCargoOrdersScience entities: - uid: 6364 @@ -73755,17 +73863,17 @@ entities: rot: 3.141592653589793 rad pos: -15.5,-48.5 parent: 2 - - uid: 6908 + - uid: 8521 components: - type: Transform rot: 1.5707963267948966 rad - pos: 12.5,-48.5 + pos: -14.5,41.5 parent: 2 - - uid: 8521 + - uid: 10769 components: - type: Transform rot: 1.5707963267948966 rad - pos: -14.5,41.5 + pos: 9.5,-47.5 parent: 2 - proto: ComputerCriminalRecords entities: @@ -73819,11 +73927,11 @@ entities: rot: 1.5707963267948966 rad pos: -16.5,46.5 parent: 2 - - uid: 738 + - uid: 7584 components: - type: Transform - rot: 3.141592653589793 rad - pos: 54.5,-34.5 + rot: 1.5707963267948966 rad + pos: 59.5,-30.5 parent: 2 - proto: ComputerId entities: @@ -73904,12 +74012,6 @@ entities: rot: 1.5707963267948966 rad pos: -12.5,42.5 parent: 2 - - uid: 7496 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 44.5,-39.5 - parent: 2 - uid: 9234 components: - type: Transform @@ -73922,18 +74024,24 @@ entities: rot: 3.141592653589793 rad pos: -66.5,25.5 parent: 2 + - uid: 14963 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 54.5,-54.5 + parent: 2 + - uid: 20571 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 51.5,-43.5 + parent: 2 - uid: 26314 components: - type: Transform rot: 1.5707963267948966 rad pos: -8.5,-1.5 parent: 26286 - - uid: 28730 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 55.5,-44.5 - parent: 2 - proto: ComputerResearchAndDevelopment entities: - uid: 6365 @@ -73987,19 +74095,19 @@ entities: parent: 2 - proto: ComputerSalvageExpedition entities: - - uid: 7610 + - uid: 7496 components: - type: Transform rot: -1.5707963267948966 rad - pos: 44.5,-38.5 + pos: 58.5,-37.5 parent: 2 - proto: ComputerSalvageJobBoard entities: - - uid: 25896 + - uid: 20570 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 39.5,-42.5 + rot: -1.5707963267948966 rad + pos: 58.5,-36.5 parent: 2 - proto: ComputerShuttleCargo entities: @@ -74108,6 +74216,11 @@ entities: parent: 2 - proto: ComputerTelevision entities: + - uid: 4349 + components: + - type: Transform + pos: 26.5,50.5 + parent: 2 - uid: 6202 components: - type: Transform @@ -74162,12 +74275,6 @@ entities: rot: 1.5707963267948966 rad pos: -44.5,-42.5 parent: 2 - - uid: 1564 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 41.5,-46.5 - parent: 2 - uid: 2962 components: - type: Transform @@ -74191,17 +74298,11 @@ entities: rot: 1.5707963267948966 rad pos: -42.5,-42.5 parent: 2 - - uid: 7592 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 43.5,-46.5 - parent: 2 - - uid: 7609 + - uid: 7662 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 42.5,-46.5 + rot: 3.141592653589793 rad + pos: 50.5,-39.5 parent: 2 - uid: 7877 components: @@ -74239,12 +74340,30 @@ entities: rot: 1.5707963267948966 rad pos: 65.5,-20.5 parent: 2 + - uid: 13699 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 50.5,-38.5 + parent: 2 + - uid: 14664 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 50.5,-40.5 + parent: 2 - uid: 14831 components: - type: Transform rot: -1.5707963267948966 rad pos: 64.5,-16.5 parent: 2 + - uid: 19501 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 50.5,-37.5 + parent: 2 - uid: 21754 components: - type: Transform @@ -74316,8 +74435,7 @@ entities: - uid: 21585 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -8.402557,73.59841 + pos: -8.58407,73.48519 parent: 2 - proto: CrateArtifactContainer entities: @@ -74333,19 +74451,6 @@ entities: parent: 2 - proto: CrateCommandSecure entities: - - uid: 1709 - components: - - type: Transform - pos: 33.5,47.5 - parent: 2 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14673 - moles: - Oxygen: 1.7459903 - Nitrogen: 6.568249 - uid: 4120 components: - type: MetaData @@ -75108,11 +75213,6 @@ entities: parent: 2 - proto: CrateLockBoxService entities: - - uid: 9591 - components: - - type: Transform - pos: 26.5,50.5 - parent: 2 - uid: 12580 components: - type: Transform @@ -75131,8 +75231,8 @@ entities: immutable: False temperature: 293.14673 moles: - Oxygen: 1.8856695 - Nitrogen: 7.0937095 + Oxygen: 1.8968438 + Nitrogen: 7.1357465 - uid: 7455 components: - type: Transform @@ -75197,14 +75297,22 @@ entities: - type: Transform pos: 12.5,17.5 parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + Oxygen: 1.7459903 + Nitrogen: 6.568249 - type: ContainerContainer containers: entity_storage: !type:Container showEnts: False occludes: True ents: - - 5961 - 5962 + - 5961 paper_label: !type:ContainerSlot showEnts: False occludes: True @@ -75406,29 +75514,29 @@ entities: immutable: False temperature: 293.14673 moles: - Oxygen: 1.8856695 - Nitrogen: 7.0937095 + Oxygen: 1.8968438 + Nitrogen: 7.1357465 - type: ContainerContainer containers: entity_storage: !type:Container showEnts: False occludes: True ents: - - 12353 - 12365 - - 12372 - - 12364 - - 12354 - - 12362 - - 12360 - - 12359 - - 12361 - - 12358 - - 12352 - - 12351 - - 12356 - - 12355 - 12357 + - 12355 + - 12356 + - 12351 + - 12352 + - 12358 + - 12361 + - 12359 + - 12360 + - 12362 + - 12354 + - 12364 + - 12372 + - 12353 paper_label: !type:ContainerSlot showEnts: False occludes: True @@ -75479,8 +75587,8 @@ entities: immutable: False temperature: 293.14673 moles: - Oxygen: 1.8977377 - Nitrogen: 7.139109 + Oxygen: 1.8978151 + Nitrogen: 7.1394 - type: ContainerContainer containers: entity_storage: !type:Container @@ -75488,7 +75596,7 @@ entities: occludes: True ents: - 118 - - 5972 + - 715 - 25 paper_label: !type:ContainerSlot showEnts: False @@ -75624,12 +75732,10 @@ entities: moles: Oxygen: 1.7459903 Nitrogen: 6.568249 - - uid: 21980 + - uid: 24561 components: - - type: MetaData - name: Donk pocket crate - type: Transform - pos: 49.5,-25.5 + pos: 52.5,-13.5 parent: 2 - type: EntityStorage air: @@ -75637,25 +75743,14 @@ entities: immutable: False temperature: 293.14673 moles: - Oxygen: 1.8856695 - Nitrogen: 7.0937095 - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 21984 - - 21981 - - 21982 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - - uid: 24561 + Oxygen: 1.7459903 + Nitrogen: 6.568249 + - uid: 24831 components: + - type: MetaData + name: Donk co. Crate - type: Transform - pos: 52.5,-13.5 + pos: 54.5,-28.5 parent: 2 - type: EntityStorage air: @@ -75665,6 +75760,19 @@ entities: moles: Oxygen: 1.7459903 Nitrogen: 6.568249 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 24838 + - 24842 + - 24845 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null - proto: CrateTechBoardRandom entities: - uid: 28680 @@ -75891,6 +75999,42 @@ entities: rot: -1.5707963267948966 rad pos: 29.5,41.5 parent: 2 +- proto: CurtainsPurpleOpen + entities: + - uid: 3668 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 34.5,-38.5 + parent: 2 + - uid: 3669 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 34.5,-37.5 + parent: 2 + - uid: 26902 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 37.5,-34.5 + parent: 2 + - uid: 26903 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 38.5,-34.5 + parent: 2 + - uid: 27671 + components: + - type: Transform + pos: 55.5,7.5 + parent: 2 + - uid: 27920 + components: + - type: Transform + pos: 56.5,7.5 + parent: 2 - proto: CurtainsRed entities: - uid: 4298 @@ -75943,6 +76087,20 @@ entities: rot: 1.5707963267948966 rad pos: 20.5,-53.5 parent: 2 +- proto: CurtainsSkyBlueOpen + entities: + - uid: 29016 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -35.5,-27.5 + parent: 2 + - uid: 29017 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -34.5,-27.5 + parent: 2 - proto: CurtainsWhiteOpen entities: - uid: 5703 @@ -76396,13 +76554,6 @@ entities: - type: Transform pos: 20.5,-57.5 parent: 2 -- proto: DefaultStationBeaconQMRoom - entities: - - uid: 26980 - components: - - type: Transform - pos: 51.5,-33.5 - parent: 2 - proto: DefaultStationBeaconRDRoom entities: - uid: 26977 @@ -76424,13 +76575,6 @@ entities: - type: Transform pos: 52.5,29.5 parent: 2 -- proto: DefaultStationBeaconSalvage - entities: - - uid: 26981 - components: - - type: Transform - pos: 41.5,-40.5 - parent: 2 - proto: DefaultStationBeaconScience entities: - uid: 721 @@ -76545,17 +76689,17 @@ entities: parent: 2 - type: Fixtures fixtures: {} - - uid: 10245 + - uid: 24128 components: - type: Transform - pos: 16.5,-45.5 + pos: -8.5,-37.5 parent: 2 - type: Fixtures fixtures: {} - - uid: 24128 + - uid: 24633 components: - type: Transform - pos: -8.5,-37.5 + pos: 14.5,-43.5 parent: 2 - type: Fixtures fixtures: {} @@ -76599,6 +76743,12 @@ entities: rot: -1.5707963267948966 rad pos: -8.5,-11.5 parent: 2 + - uid: 3672 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,-43.5 + parent: 2 - uid: 3867 components: - type: Transform @@ -76641,6 +76791,12 @@ entities: rot: 1.5707963267948966 rad pos: -17.5,-11.5 parent: 2 + - uid: 7604 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,-23.5 + parent: 2 - uid: 8080 components: - type: Transform @@ -76783,18 +76939,6 @@ entities: rot: -1.5707963267948966 rad pos: 13.5,-18.5 parent: 2 - - uid: 12607 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 13.5,-44.5 - parent: 2 - - uid: 12608 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,-44.5 - parent: 2 - uid: 12612 components: - type: Transform @@ -76953,12 +77097,6 @@ entities: rot: 1.5707963267948966 rad pos: 46.5,-22.5 parent: 2 - - uid: 12677 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 46.5,-35.5 - parent: 2 - uid: 12680 components: - type: Transform @@ -76971,6 +77109,17 @@ entities: rot: 3.141592653589793 rad pos: -26.5,-46.5 parent: 2 + - uid: 13646 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 61.5,-25.5 + parent: 2 + - uid: 14979 + components: + - type: Transform + pos: 61.5,-22.5 + parent: 2 - uid: 16938 components: - type: Transform @@ -76983,6 +77132,12 @@ entities: rot: -1.5707963267948966 rad pos: 0.5,-64.5 parent: 2 + - uid: 18966 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 53.5,-23.5 + parent: 2 - proto: DisposalJunction entities: - uid: 2344 @@ -76996,6 +77151,12 @@ entities: - type: Transform pos: 42.5,21.5 parent: 2 + - uid: 3677 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-30.5 + parent: 2 - uid: 3977 components: - type: Transform @@ -77023,6 +77184,12 @@ entities: rot: -1.5707963267948966 rad pos: 2.5,14.5 parent: 2 + - uid: 7748 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 13.5,-51.5 + parent: 2 - uid: 11881 components: - type: Transform @@ -77040,12 +77207,6 @@ entities: rot: -1.5707963267948966 rad pos: -5.5,-51.5 parent: 2 - - uid: 12609 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 10.5,-51.5 - parent: 2 - uid: 12670 components: - type: Transform @@ -77089,6 +77250,11 @@ entities: rot: -1.5707963267948966 rad pos: -46.5,-8.5 parent: 2 + - uid: 7501 + components: + - type: Transform + pos: 13.5,-44.5 + parent: 2 - uid: 9717 components: - type: Transform @@ -77172,12 +77338,6 @@ entities: rot: -1.5707963267948966 rad pos: 47.5,4.5 parent: 2 - - uid: 12676 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 54.5,-22.5 - parent: 2 - proto: DisposalPipe entities: - uid: 303 @@ -77327,12 +77487,6 @@ entities: rot: 3.141592653589793 rad pos: -8.5,-10.5 parent: 2 - - uid: 2495 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 44.5,-35.5 - parent: 2 - uid: 2551 components: - type: Transform @@ -77378,12 +77532,30 @@ entities: - type: Transform pos: 0.5,-17.5 parent: 2 + - uid: 2754 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 55.5,-22.5 + parent: 2 + - uid: 2755 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 56.5,-22.5 + parent: 2 - uid: 2762 components: - type: Transform rot: -1.5707963267948966 rad pos: -9.5,-11.5 parent: 2 + - uid: 2765 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 57.5,-22.5 + parent: 2 - uid: 2772 components: - type: Transform @@ -77395,6 +77567,18 @@ entities: rot: 1.5707963267948966 rad pos: 43.5,-15.5 parent: 2 + - uid: 2784 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-24.5 + parent: 2 + - uid: 2790 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-25.5 + parent: 2 - uid: 3043 components: - type: Transform @@ -77414,10 +77598,22 @@ entities: pos: 48.5,4.5 parent: 2 - uid: 3512 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-40.5 + parent: 2 + - uid: 3663 components: - type: Transform rot: 1.5707963267948966 rad - pos: 43.5,-35.5 + pos: 59.5,-22.5 + parent: 2 + - uid: 3779 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 10.5,-51.5 parent: 2 - uid: 4660 components: @@ -78823,12 +79019,6 @@ entities: rot: -1.5707963267948966 rad pos: 12.5,-51.5 parent: 2 - - uid: 5375 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 13.5,-51.5 - parent: 2 - uid: 5376 components: - type: Transform @@ -78859,18 +79049,6 @@ entities: rot: -1.5707963267948966 rad pos: 20.5,-51.5 parent: 2 - - uid: 5382 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 10.5,-50.5 - parent: 2 - - uid: 5383 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 10.5,-49.5 - parent: 2 - uid: 5384 components: - type: Transform @@ -79636,6 +79814,11 @@ entities: rot: -1.5707963267948966 rad pos: -24.5,-51.5 parent: 2 + - uid: 6910 + components: + - type: Transform + pos: 13.5,-46.5 + parent: 2 - uid: 6924 components: - type: Transform @@ -79778,6 +79961,11 @@ entities: rot: 1.5707963267948966 rad pos: 46.5,4.5 parent: 2 + - uid: 7014 + components: + - type: Transform + pos: 13.5,-49.5 + parent: 2 - uid: 7143 components: - type: Transform @@ -79790,12 +79978,49 @@ entities: rot: 3.141592653589793 rad pos: -46.5,-9.5 parent: 2 + - uid: 7467 + components: + - type: Transform + pos: 13.5,-48.5 + parent: 2 + - uid: 7484 + components: + - type: Transform + pos: 13.5,-47.5 + parent: 2 + - uid: 7485 + components: + - type: Transform + pos: 13.5,-50.5 + parent: 2 - uid: 7564 components: - type: Transform rot: -1.5707963267948966 rad pos: 23.5,-39.5 parent: 2 + - uid: 7599 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-41.5 + parent: 2 + - uid: 7600 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-42.5 + parent: 2 + - uid: 7601 + components: + - type: Transform + pos: 13.5,-45.5 + parent: 2 + - uid: 7602 + components: + - type: Transform + pos: 13.5,-43.5 + parent: 2 - uid: 7614 components: - type: Transform @@ -79820,6 +80045,12 @@ entities: rot: -1.5707963267948966 rad pos: 24.5,-39.5 parent: 2 + - uid: 7722 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-39.5 + parent: 2 - uid: 7761 components: - type: Transform @@ -79850,12 +80081,6 @@ entities: rot: -1.5707963267948966 rad pos: 50.5,-14.5 parent: 2 - - uid: 7770 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 54.5,-23.5 - parent: 2 - uid: 7772 components: - type: Transform @@ -79916,57 +80141,6 @@ entities: rot: 1.5707963267948966 rad pos: 51.5,-14.5 parent: 2 - - uid: 7785 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 45.5,-35.5 - parent: 2 - - uid: 7786 - components: - - type: Transform - pos: 46.5,-34.5 - parent: 2 - - uid: 7787 - components: - - type: Transform - pos: 46.5,-32.5 - parent: 2 - - uid: 7788 - components: - - type: Transform - pos: 46.5,-31.5 - parent: 2 - - uid: 7789 - components: - - type: Transform - pos: 46.5,-30.5 - parent: 2 - - uid: 7790 - components: - - type: Transform - pos: 46.5,-29.5 - parent: 2 - - uid: 7791 - components: - - type: Transform - pos: 46.5,-33.5 - parent: 2 - - uid: 7792 - components: - - type: Transform - pos: 46.5,-28.5 - parent: 2 - - uid: 7793 - components: - - type: Transform - pos: 46.5,-27.5 - parent: 2 - - uid: 7794 - components: - - type: Transform - pos: 46.5,-26.5 - parent: 2 - uid: 7795 components: - type: Transform @@ -79977,11 +80151,6 @@ entities: - type: Transform pos: 46.5,-23.5 parent: 2 - - uid: 7797 - components: - - type: Transform - pos: 46.5,-25.5 - parent: 2 - uid: 7798 components: - type: Transform @@ -81126,53 +81295,6 @@ entities: rot: -1.5707963267948966 rad pos: -17.5,0.5 parent: 2 - - uid: 12595 - components: - - type: Transform - pos: 13.5,-43.5 - parent: 2 - - uid: 12596 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 12.5,-44.5 - parent: 2 - - uid: 12597 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 11.5,-44.5 - parent: 2 - - uid: 12598 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 10.5,-45.5 - parent: 2 - - uid: 12599 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 10.5,-47.5 - parent: 2 - - uid: 12600 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 10.5,-48.5 - parent: 2 - - uid: 12601 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 10.5,-46.5 - parent: 2 - - uid: 12674 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 54.5,-24.5 - parent: 2 - uid: 12681 components: - type: Transform @@ -81377,6 +81499,40 @@ entities: rot: -1.5707963267948966 rad pos: 21.5,0.5 parent: 2 + - uid: 13647 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 60.5,-22.5 + parent: 2 + - uid: 14704 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 58.5,-22.5 + parent: 2 + - uid: 14710 + components: + - type: Transform + pos: 61.5,-24.5 + parent: 2 + - uid: 14966 + components: + - type: Transform + pos: 61.5,-23.5 + parent: 2 + - uid: 15055 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-28.5 + parent: 2 + - uid: 15056 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-31.5 + parent: 2 - uid: 16931 components: - type: Transform @@ -81481,12 +81637,42 @@ entities: rot: -1.5707963267948966 rad pos: -3.5,-64.5 parent: 2 + - uid: 17485 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-37.5 + parent: 2 - uid: 17937 components: - type: Transform rot: 1.5707963267948966 rad pos: 39.5,21.5 parent: 2 + - uid: 18128 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-34.5 + parent: 2 + - uid: 18136 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-36.5 + parent: 2 + - uid: 18138 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-38.5 + parent: 2 + - uid: 18139 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-33.5 + parent: 2 - uid: 18171 components: - type: Transform @@ -81499,6 +81685,18 @@ entities: rot: 3.141592653589793 rad pos: -51.5,-6.5 parent: 2 + - uid: 19277 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-29.5 + parent: 2 + - uid: 19507 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-26.5 + parent: 2 - uid: 19636 components: - type: Transform @@ -81509,6 +81707,18 @@ entities: - type: Transform pos: 42.5,19.5 parent: 2 + - uid: 21519 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-35.5 + parent: 2 + - uid: 22698 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-27.5 + parent: 2 - uid: 24008 components: - type: Transform @@ -81530,35 +81740,11 @@ entities: - type: Transform pos: 13.5,40.5 parent: 2 - - uid: 24470 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 42.5,-35.5 - parent: 2 - - uid: 25165 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 41.5,-35.5 - parent: 2 - - uid: 25912 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 40.5,-35.5 - parent: 2 - - uid: 27061 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 39.5,-35.5 - parent: 2 - - uid: 27108 + - uid: 24370 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 38.5,-35.5 + rot: 3.141592653589793 rad + pos: 53.5,-32.5 parent: 2 - uid: 27379 components: @@ -81602,6 +81788,12 @@ entities: rot: 1.5707963267948966 rad pos: 38.5,21.5 parent: 2 + - uid: 3670 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,-30.5 + parent: 2 - uid: 3730 components: - type: Transform @@ -81648,6 +81840,23 @@ entities: rot: -1.5707963267948966 rad pos: -7.5,-48.5 parent: 2 + - uid: 7468 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 14.5,-44.5 + parent: 2 + - uid: 7475 + components: + - type: Transform + pos: 13.5,-42.5 + parent: 2 + - uid: 9442 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 52.5,-43.5 + parent: 2 - uid: 11879 components: - type: Transform @@ -81740,11 +81949,6 @@ entities: rot: 3.141592653589793 rad pos: -39.5,-12.5 parent: 2 - - uid: 12594 - components: - - type: Transform - pos: 13.5,-42.5 - parent: 2 - uid: 12635 components: - type: Transform @@ -81791,11 +81995,11 @@ entities: rot: 3.141592653589793 rad pos: -17.5,38.5 parent: 2 - - uid: 12673 + - uid: 14703 components: - type: Transform - rot: 3.141592653589793 rad - pos: 54.5,-25.5 + rot: -1.5707963267948966 rad + pos: 62.5,-25.5 parent: 2 - uid: 16937 components: @@ -81820,12 +82024,6 @@ entities: rot: 3.141592653589793 rad pos: 47.5,-17.5 parent: 2 - - uid: 24253 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 37.5,-35.5 - parent: 2 - uid: 24275 components: - type: Transform @@ -81860,6 +82058,11 @@ entities: - type: Transform pos: 24.5,50.5 parent: 2 + - uid: 2796 + components: + - type: Transform + pos: 62.5,-25.5 + parent: 2 - uid: 2859 components: - type: Transform @@ -81965,11 +82168,6 @@ entities: - type: Transform pos: -16.5,-59.5 parent: 2 - - uid: 6825 - components: - - type: Transform - pos: 37.5,-35.5 - parent: 2 - uid: 7226 components: - type: Transform @@ -81980,15 +82178,15 @@ entities: - type: Transform pos: -54.5,-0.5 parent: 2 - - uid: 7654 + - uid: 7483 components: - type: Transform - pos: -45.5,7.5 + pos: 14.5,-44.5 parent: 2 - - uid: 7748 + - uid: 7654 components: - type: Transform - pos: 54.5,-25.5 + pos: -45.5,7.5 parent: 2 - uid: 7816 components: @@ -82040,6 +82238,11 @@ entities: - type: Transform pos: 13.5,-42.5 parent: 2 + - uid: 15000 + components: + - type: Transform + pos: 52.5,-43.5 + parent: 2 - uid: 16930 components: - type: Transform @@ -82050,6 +82253,11 @@ entities: - type: Transform pos: -12.5,-64.5 parent: 2 + - uid: 18146 + components: + - type: Transform + pos: 54.5,-30.5 + parent: 2 - uid: 20654 components: - type: Transform @@ -82077,6 +82285,12 @@ entities: parent: 2 - proto: DisposalXJunction entities: + - uid: 7721 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 54.5,-22.5 + parent: 2 - uid: 12558 components: - type: Transform @@ -82136,15 +82350,15 @@ entities: - type: Transform pos: -16.5,11.5 parent: 2 - - uid: 7625 + - uid: 8235 components: - type: Transform - pos: 52.5,-36.5 + pos: 0.5,38.5 parent: 2 - - uid: 8235 + - uid: 8928 components: - type: Transform - pos: 0.5,38.5 + pos: 57.5,-29.5 parent: 2 - uid: 17169 components: @@ -82199,22 +82413,20 @@ entities: - type: Transform pos: -56.5,15.5 parent: 2 -- proto: DoubleEmergencyNitrogenTank +- proto: DoubleEmergencyNitrogenTankFilled entities: - - uid: 7515 + - uid: 14976 components: - type: Transform - pos: 44.421257,-40.343613 + pos: 56.801468,-43.53508 parent: 2 -- proto: DoubleEmergencyOxygenTank +- proto: DoubleEmergencyOxygenTankFilled entities: - - uid: 7611 + - uid: 7788 components: - type: Transform - pos: 44.702507,-40.515488 + pos: 56.473343,-43.44133 parent: 2 -- proto: DoubleEmergencyOxygenTankFilled - entities: - uid: 10499 components: - type: Transform @@ -82314,10 +82526,10 @@ entities: parent: 2 - proto: DresserQuarterMasterFilled entities: - - uid: 1707 + - uid: 8480 components: - type: Transform - pos: 54.5,-36.5 + pos: 56.5,-30.5 parent: 2 - proto: DresserResearchDirectorFilled entities: @@ -82694,27 +82906,6 @@ entities: parent: 2 - proto: DrinkShotGlass entities: - - uid: 7722 - components: - - type: Transform - parent: 7720 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 7723 - components: - - type: Transform - parent: 7720 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 7724 - components: - - type: Transform - parent: 7720 - - type: Physics - canCollide: False - - type: InsideEntityStorage - uid: 10427 components: - type: Transform @@ -82821,13 +83012,6 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage - - uid: 7721 - components: - - type: Transform - parent: 7720 - - type: Physics - canCollide: False - - type: InsideEntityStorage - uid: 10430 components: - type: Transform @@ -83463,20 +83647,17 @@ entities: - uid: 6915 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 15.127598,-46.3183 + pos: 12.198176,-44.352978 parent: 2 - uid: 6916 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 15.315098,-46.341736 + pos: 12.276301,-44.431103 parent: 2 - uid: 6917 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 15.057285,-46.341736 + pos: 12.213801,-44.587353 parent: 2 - proto: EmergencyNitrogenTankFilled entities: @@ -83530,12 +83711,12 @@ entities: - uid: 6911 components: - type: Transform - pos: 12.4267645,-46.28688 + pos: 9.463801,-44.446728 parent: 2 - uid: 6912 components: - type: Transform - pos: 12.450202,-46.497818 + pos: 9.323176,-44.384228 parent: 2 - proto: Emitter entities: @@ -83691,6 +83872,13 @@ entities: fixtures: {} - proto: ExtinguisherCabinetFilled entities: + - uid: 24636 + components: + - type: Transform + pos: 15.5,-44.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 27486 components: - type: Transform @@ -83795,13 +83983,6 @@ entities: parent: 2 - type: Fixtures fixtures: {} - - uid: 28833 - components: - - type: Transform - pos: 15.5,-45.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 28835 components: - type: Transform @@ -83893,6 +84074,13 @@ entities: parent: 2 - type: FaxMachine name: Interdyne front + - uid: 2602 + components: + - type: Transform + pos: 59.5,-28.5 + parent: 2 + - type: FaxMachine + name: Donk co. Qm's office - uid: 4790 components: - type: Transform @@ -83949,13 +84137,6 @@ entities: parent: 2 - type: FaxMachine name: Engineering - - uid: 7634 - components: - - type: Transform - pos: 52.5,-34.5 - parent: 2 - - type: FaxMachine - name: QM's office - uid: 8077 components: - type: Transform @@ -84014,25 +84195,15 @@ entities: - type: Transform pos: 27.328705,50.5 parent: 2 - - uid: 5013 - components: - - type: Transform - pos: -36.5,-24.5 - parent: 2 - uid: 5846 components: - type: Transform pos: -20.5,3.5 parent: 2 - - uid: 7660 - components: - - type: Transform - pos: 49.5,-31.5 - parent: 2 - - uid: 7661 + - uid: 7572 components: - type: Transform - pos: 50.5,-31.5 + pos: 61.5,-25.5 parent: 2 - uid: 7743 components: @@ -84071,25 +84242,30 @@ entities: parent: 2 - proto: filingCabinetRandom entities: - - uid: 366 + - uid: 3724 components: - type: Transform - pos: -8.465225,-2.5 + pos: 60.936527,-25.5 parent: 2 - - uid: 6151 + - uid: 4350 components: - type: Transform - pos: 27.859955,50.5 + pos: -6.771121,-2.5 parent: 2 - - uid: 7027 + - uid: 4386 components: - type: Transform - pos: -35.5,-24.5 + pos: -6.317996,-2.5 parent: 2 - - uid: 7662 + - uid: 6151 components: - type: Transform - pos: 49.5,-36.5 + pos: 27.859955,50.5 + parent: 2 + - uid: 7573 + components: + - type: Transform + pos: 60.514652,-25.5 parent: 2 - uid: 8396 components: @@ -84111,21 +84287,6 @@ entities: - type: Transform pos: -6.2700534,41.5 parent: 2 - - uid: 11984 - components: - - type: Transform - pos: -8.04335,-2.5 - parent: 2 - - uid: 11987 - components: - - type: Transform - pos: -9.23085,-2.5 - parent: 2 - - uid: 27920 - components: - - type: Transform - pos: -8.85585,-2.5 - parent: 2 - proto: filingCabinetTallRandom entities: - uid: 8541 @@ -84853,7 +85014,6 @@ entities: parent: 2 - type: DeviceNetwork deviceLists: - - 20520 - 20576 - uid: 3286 components: @@ -84864,7 +85024,6 @@ entities: - type: DeviceNetwork deviceLists: - 20520 - - 20569 - uid: 3390 components: - type: Transform @@ -85010,6 +85169,15 @@ entities: deviceLists: - 20628 - 20564 + - uid: 3686 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 48.5,-27.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 3802 - uid: 3729 components: - type: Transform @@ -85126,6 +85294,23 @@ entities: deviceLists: - 20587 - 20586 + - uid: 7589 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 59.5,-24.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 3818 + - uid: 7704 + components: + - type: Transform + pos: 48.5,-32.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 21933 - uid: 7811 components: - type: Transform @@ -85348,6 +85533,14 @@ entities: - type: DeviceNetwork deviceLists: - 20577 + - uid: 17551 + components: + - type: Transform + pos: 49.5,-42.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 21933 - uid: 17567 components: - type: Transform @@ -87098,16 +87291,6 @@ entities: deviceLists: - 8418 - 20560 - - uid: 20130 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 11.5,-47.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20559 - - 20560 - uid: 20131 components: - type: Transform @@ -87604,52 +87787,6 @@ entities: rot: -1.5707963267948966 rad pos: 21.5,-61.5 parent: 2 - - uid: 20193 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 51.5,-37.5 - parent: 2 - - uid: 20194 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 48.5,-32.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20576 - - 20570 - - uid: 20195 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 45.5,-37.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20569 - - 20576 - - uid: 20196 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 45.5,-36.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20569 - - 20576 - - uid: 20197 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 48.5,-26.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20576 - - 20571 - uid: 20198 components: - type: Transform @@ -87853,7 +87990,7 @@ entities: - type: DeviceNetwork deviceLists: - 20581 - - 20580 + - 4184 - uid: 20238 components: - type: Transform @@ -88060,15 +88197,6 @@ entities: - type: Transform pos: -3.5,-60.5 parent: 2 - - uid: 20278 - components: - - type: Transform - pos: 39.5,-45.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20568 - - 20569 - uid: 20279 components: - type: Transform @@ -88121,26 +88249,6 @@ entities: deviceLists: - 20534 - 20618 - - uid: 20402 - components: - - type: Transform - pos: 10.5,-49.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20517 - - 20559 - - 20560 - - uid: 20403 - components: - - type: Transform - pos: 9.5,-49.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20517 - - 20559 - - 20560 - uid: 20603 components: - type: Transform @@ -88267,6 +88375,22 @@ entities: deviceLists: - 20624 - 20625 + - uid: 21110 + components: + - type: Transform + pos: 48.5,-33.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 21933 + - uid: 21114 + components: + - type: Transform + pos: 48.5,-34.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 21933 - uid: 21120 components: - type: Transform @@ -88373,6 +88497,14 @@ entities: - type: DeviceNetwork deviceLists: - 13980 + - uid: 22656 + components: + - type: Transform + pos: 45.5,-39.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 21933 - uid: 22875 components: - type: Transform @@ -88463,6 +88595,59 @@ entities: - type: DeviceNetwork deviceLists: - 20577 + - uid: 24637 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 9.5,-49.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 20560 + - uid: 24640 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 10.5,-49.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 20560 + - uid: 24641 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 16.5,-49.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 20560 + - uid: 24643 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 17.5,-49.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 20560 + - uid: 24644 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 15.5,-45.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 20560 + - uid: 25036 + components: + - type: Transform + pos: 40.5,-30.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 20520 - uid: 25411 components: - type: Transform @@ -88603,44 +88788,16 @@ entities: parent: 2 - proto: Floodlight entities: - - uid: 7599 + - uid: 15031 components: - type: Transform - pos: 42.77151,-35.302544 + pos: 58.592995,-41.55941 parent: 2 - - type: HandheldLight - toggleActionEntity: 7600 - - type: ContainerContainer - containers: - cell_slot: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - actions: !type:Container - showEnts: False - occludes: True - ents: - - 7600 - - type: ActionsContainer - - uid: 7608 + - uid: 17784 components: - type: Transform - pos: 42.36526,-35.427544 + pos: 58.311745,-41.981285 parent: 2 - - type: HandheldLight - toggleActionEntity: 2783 - - type: ContainerContainer - containers: - cell_slot: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - actions: !type:Container - showEnts: False - occludes: True - ents: - - 2783 - - type: ActionsContainer - proto: FloorDrain entities: - uid: 2552 @@ -89457,41 +89614,43 @@ entities: - type: Transform pos: 66.24272,23.728798 parent: 2 +- proto: FoodBoxDonkpocketBerry + entities: + - uid: 24845 + components: + - type: Transform + parent: 24831 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 24831 - proto: FoodBoxDonkpocketDink entities: - - uid: 21981 + - uid: 24842 components: - type: Transform - parent: 21980 + parent: 24831 - type: Physics canCollide: False - type: InsideEntityStorage - storage: 21980 + storage: 24831 - proto: FoodBoxDonkpocketMoth entities: - - uid: 21982 + - uid: 24838 components: - type: Transform - parent: 21980 + parent: 24831 - type: Physics canCollide: False - type: InsideEntityStorage - storage: 21980 + storage: 24831 - proto: FoodBoxDonkpocketTeriyaki entities: - - uid: 7593 + - uid: 9617 components: - type: Transform - pos: 39.237225,-39.63322 + pos: 54.79612,-36.59066 parent: 2 - - uid: 21984 - components: - - type: Transform - parent: 21980 - - type: Physics - canCollide: False - - type: InsideEntityStorage - storage: 21980 - proto: FoodBoxDonut entities: - uid: 5072 @@ -89499,6 +89658,19 @@ entities: - type: Transform pos: -7.578285,19.630724 parent: 2 + - uid: 6420 + components: + - type: Transform + pos: 55.509937,14.471465 + parent: 2 +- proto: FoodBreadBaguette + entities: + - uid: 24251 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -35.4647,-31.796291 + parent: 2 - proto: FoodBreadPlain entities: - uid: 24287 @@ -89603,6 +89775,18 @@ entities: - type: Transform pos: 56.61404,10.597787 parent: 2 + - uid: 7337 + components: + - type: Transform + pos: -57.451885,15.70558 + parent: 2 +- proto: FoodDonutBluePumpkin + entities: + - uid: 20569 + components: + - type: Transform + pos: -57.28001,15.564955 + parent: 2 - proto: FoodFrozenPopsicleBerry entities: - uid: 22744 @@ -89682,7 +89866,7 @@ entities: - uid: 24286 components: - type: Transform - pos: -9.482482,47.823654 + pos: -9.380111,49.08585 parent: 2 - proto: FoodMeat entities: @@ -89867,8 +90051,7 @@ entities: - uid: 21587 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -7.9338074,73.61404 + pos: -8.568445,70.26644 parent: 2 - proto: GasAnalyzer entities: @@ -90274,12 +90457,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 10233 + - uid: 10244 components: - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-41.5 + rot: -1.5707963267948966 rad + pos: 55.5,-35.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 10319 components: - type: Transform @@ -90341,6 +90526,12 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 13643 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,-41.5 + parent: 2 - uid: 14287 components: - type: Transform @@ -90357,6 +90548,44 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 14960 + components: + - type: Transform + pos: 59.5,-20.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 14971 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,-38.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 15059 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 47.5,-28.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 15063 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 47.5,-33.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 16240 + components: + - type: Transform + pos: 54.5,-33.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 17003 components: - type: Transform @@ -90426,11 +90655,17 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17795 + - uid: 17788 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 40.5,-45.5 + pos: 51.5,-34.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 17793 + components: + - type: Transform + pos: 55.5,-36.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' @@ -90541,22 +90776,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 18088 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 11.5,-44.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 18089 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,-44.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 18102 components: - type: Transform @@ -90605,13 +90824,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 18126 - components: - - type: Transform - pos: 40.5,-38.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 18137 components: - type: Transform @@ -90620,13 +90832,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 18138 - components: - - type: Transform - pos: 47.5,-27.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 18148 components: - type: Transform @@ -91162,14 +91367,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19269 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 15.5,-48.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19299 components: - type: Transform @@ -91186,14 +91383,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19304 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 16.5,-40.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19444 components: - type: Transform @@ -91232,10 +91421,11 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19466 + - uid: 19474 components: - type: Transform - pos: 41.5,-37.5 + rot: 3.141592653589793 rad + pos: 58.5,-20.5 parent: 2 - type: AtmosPipeColor color: '#FF1212FF' @@ -91255,19 +91445,11 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19489 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 46.5,-34.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19499 + - uid: 19488 components: - type: Transform rot: 1.5707963267948966 rad - pos: 46.5,-26.5 + pos: 50.5,-38.5 parent: 2 - type: AtmosPipeColor color: '#FF1212FF' @@ -91472,6 +91654,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 20009 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 46.5,-26.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20165 components: - type: Transform @@ -91487,6 +91677,22 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 20195 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 51.5,-42.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 20196 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 47.5,-42.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20425 components: - type: Transform @@ -91556,30 +91762,29 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 20971 + - uid: 21437 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -6.5,70.5 + pos: 60.5,-18.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 20972 + - uid: 23850 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,71.5 + rot: 3.141592653589793 rad + pos: 50.5,3.5 parent: 2 - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 23850 + color: '#FF1212FF' + - uid: 23877 components: - type: Transform rot: 3.141592653589793 rad - pos: 50.5,3.5 + pos: 46.5,-34.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#0335FCFF' - uid: 24052 components: - type: Transform @@ -91618,6 +91823,53 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 24723 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 9.5,-47.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 24724 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 12.5,-47.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 24727 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 11.5,-48.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 24730 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 10.5,-48.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 24739 + components: + - type: Transform + pos: 17.5,-44.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 24740 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 16.5,-43.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 25673 components: - type: Transform @@ -91706,6 +91958,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 7503 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 50.5,-42.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 9870 components: - type: Transform @@ -91728,6 +91988,16 @@ entities: rot: -1.5707963267948966 rad pos: -51.5,30.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 13650 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 47.5,-42.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 19042 components: - type: Transform @@ -91791,14 +92061,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19274 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,-44.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19746 components: - type: Transform @@ -91894,14 +92156,6 @@ entities: color: '#FF1212FF' - proto: GasPipeBendAlt2 entities: - - uid: 17793 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 41.5,-45.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 18708 components: - type: Transform @@ -92169,18 +92423,11 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 17785 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 35.5,-45.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 17792 + - uid: 14942 components: - type: Transform - pos: 41.5,-44.5 + rot: 3.141592653589793 rad + pos: 50.5,-41.5 parent: 2 - type: AtmosPipeColor color: '#FF1212FF' @@ -92200,22 +92447,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 18820 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 8.5,-50.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 18821 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 11.5,-50.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19018 components: - type: Transform @@ -92272,14 +92503,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19297 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 13.5,-44.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19584 components: - type: Transform @@ -92345,6 +92568,13 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 281 + components: + - type: Transform + pos: 60.5,-24.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 332 components: - type: Transform @@ -92353,6 +92583,20 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 571 + components: + - type: Transform + pos: 59.5,-25.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 623 + components: + - type: Transform + pos: 59.5,-24.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 644 components: - type: Transform @@ -92365,6 +92609,14 @@ entities: rot: -1.5707963267948966 rad pos: -36.5,12.5 parent: 2 + - uid: 822 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 50.5,-40.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 845 components: - type: Transform @@ -92403,6 +92655,13 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 1271 + components: + - type: Transform + pos: 60.5,-22.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 1396 components: - type: Transform @@ -92417,6 +92676,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 1690 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 51.5,-38.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 1871 components: - type: Transform @@ -92567,12 +92834,28 @@ entities: rot: -1.5707963267948966 rad pos: -36.5,25.5 parent: 2 + - uid: 3647 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 52.5,-33.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 3648 components: - type: Transform rot: -1.5707963267948966 rad pos: -36.5,23.5 parent: 2 + - uid: 3649 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,-33.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 3651 components: - type: Transform @@ -92609,6 +92892,14 @@ entities: rot: -1.5707963267948966 rad pos: -38.5,21.5 parent: 2 + - uid: 3662 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 54.5,-34.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 3664 components: - type: Transform @@ -93054,6 +93345,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 5383 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 10.5,-50.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 5395 components: - type: Transform @@ -93275,6 +93574,22 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 6742 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 11.5,-50.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 6744 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 8.5,-50.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 6822 components: - type: Transform @@ -93327,6 +93642,66 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 7568 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 50.5,-39.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 7663 + components: + - type: Transform + pos: 60.5,-23.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 7664 + components: + - type: Transform + pos: 60.5,-25.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 7672 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 50.5,-28.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 7673 + components: + - type: Transform + pos: 60.5,-20.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 7683 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 47.5,-29.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 7684 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 48.5,-28.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 7686 + components: + - type: Transform + pos: 47.5,-31.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 7767 components: - type: Transform @@ -93414,6 +93789,12 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 9241 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -7.5,71.5 + parent: 2 - uid: 9285 components: - type: Transform @@ -93422,12 +93803,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 9442 + - uid: 9603 components: - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-41.5 + rot: 1.5707963267948966 rad + pos: 45.5,-31.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 10164 components: - type: Transform @@ -93493,11 +93876,15 @@ entities: rot: 3.141592653589793 rad pos: -53.5,30.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 11915 components: - type: Transform pos: -16.5,-7.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 12295 components: - type: Transform @@ -93510,6 +93897,18 @@ entities: rot: 3.141592653589793 rad pos: 59.5,-2.5 parent: 2 + - uid: 12863 + components: + - type: Transform + pos: 60.5,-19.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 12864 + components: + - type: Transform + pos: -4.5,-41.5 + parent: 2 - uid: 12877 components: - type: Transform @@ -93518,6 +93917,22 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 13634 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 18.5,-50.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 13645 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 54.5,-37.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 13842 components: - type: Transform @@ -93604,6 +94019,118 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 14667 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 16.5,-50.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 14702 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 54.5,-36.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 14941 + components: + - type: Transform + pos: 33.5,-38.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 14943 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 52.5,-38.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 14965 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 45.5,-30.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 14972 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 15.5,-50.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 14973 + components: + - type: Transform + pos: 31.5,-37.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 15025 + components: + - type: Transform + pos: 46.5,-29.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 15026 + components: + - type: Transform + pos: 59.5,-22.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 15030 + components: + - type: Transform + pos: 46.5,-28.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 15057 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 49.5,-28.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 15058 + components: + - type: Transform + pos: 59.5,-21.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 15060 + components: + - type: Transform + pos: 60.5,-21.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 15061 + components: + - type: Transform + pos: 59.5,-26.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 15062 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 51.5,-33.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 15201 components: - type: Transform @@ -96185,13 +96712,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17478 - components: - - type: Transform - pos: 10.5,-51.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 17479 components: - type: Transform @@ -96215,79 +96735,11 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17482 - components: - - type: Transform - pos: 10.5,-50.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17483 - components: - - type: Transform - pos: 10.5,-49.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17484 - components: - - type: Transform - pos: 10.5,-48.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17485 - components: - - type: Transform - pos: 10.5,-45.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17486 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 11.5,-43.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 17487 components: - type: Transform - rot: 3.141592653589793 rad - pos: 11.5,-42.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17489 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 11.5,-47.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17490 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 12.5,-47.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17491 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 14.5,-47.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17492 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 13.5,-47.5 + rot: 1.5707963267948966 rad + pos: 49.5,-26.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' @@ -96338,14 +96790,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17508 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 16.5,-52.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 17510 components: - type: Transform @@ -96590,46 +97034,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17546 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 34.5,-38.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17547 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 35.5,-38.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17548 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 36.5,-38.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17550 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 39.5,-38.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17551 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 38.5,-38.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 17552 components: - type: Transform @@ -98176,173 +98580,89 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17770 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 45.5,-31.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17771 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 46.5,-31.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 17772 components: - type: Transform rot: 1.5707963267948966 rad - pos: 48.5,-32.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17773 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 49.5,-32.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17774 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 50.5,-32.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17775 - components: - - type: Transform - pos: 40.5,-39.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17776 - components: - - type: Transform - pos: 40.5,-40.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17777 - components: - - type: Transform - pos: 40.5,-42.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17778 - components: - - type: Transform - pos: 40.5,-43.5 + pos: 50.5,-34.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - uid: 17779 components: - type: Transform - pos: 40.5,-44.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17780 - components: - - type: Transform - pos: 40.5,-41.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17781 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 39.5,-45.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17782 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 38.5,-45.5 + pos: 55.5,-37.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17783 + - uid: 17785 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 37.5,-45.5 + pos: 51.5,-35.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17794 + - uid: 17786 components: - type: Transform rot: 3.141592653589793 rad - pos: 41.5,-43.5 + pos: 51.5,-40.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 17796 + color: '#0335FCFF' + - uid: 17787 components: - type: Transform - rot: 3.141592653589793 rad - pos: 47.5,-30.5 + rot: 1.5707963267948966 rad + pos: 49.5,-34.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17797 + - uid: 17789 components: - type: Transform - rot: 3.141592653589793 rad - pos: 47.5,-29.5 + rot: 1.5707963267948966 rad + pos: 49.5,-42.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17798 + - uid: 17790 components: - type: Transform rot: 1.5707963267948966 rad - pos: 48.5,-28.5 + pos: 50.5,-42.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17799 + - uid: 17791 components: - type: Transform rot: 1.5707963267948966 rad - pos: 49.5,-28.5 + pos: 48.5,-42.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17800 + - uid: 17794 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 51.5,-28.5 + rot: 3.141592653589793 rad + pos: 51.5,-38.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17801 + - uid: 17795 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 52.5,-28.5 + rot: 3.141592653589793 rad + pos: 51.5,-41.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17802 + - uid: 17796 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 50.5,-28.5 + rot: 3.141592653589793 rad + pos: 51.5,-37.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' @@ -99848,27 +100168,26 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 18152 + - uid: 18142 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 55.5,-13.5 + pos: 60.5,-26.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 18156 + - uid: 18152 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 50.5,-21.5 + rot: 1.5707963267948966 rad + pos: 55.5,-13.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 18157 + - uid: 18156 components: - type: Transform rot: -1.5707963267948966 rad - pos: 58.5,-18.5 + pos: 50.5,-21.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' @@ -102926,22 +103245,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 18801 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 16.5,-50.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 18802 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 17.5,-50.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 18804 components: - type: Transform @@ -104813,13 +105116,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19282 - components: - - type: Transform - pos: 15.5,-49.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19287 components: - type: Transform @@ -104860,54 +105156,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19298 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 14.5,-44.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19303 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 15.5,-44.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19306 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 16.5,-43.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19307 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 16.5,-42.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19308 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 16.5,-41.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19309 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 17.5,-40.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19310 components: - type: Transform @@ -105884,244 +106132,68 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19467 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 33.5,-37.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19468 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 34.5,-37.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19469 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 35.5,-37.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19470 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 36.5,-37.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19471 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 38.5,-37.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19472 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 39.5,-37.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19473 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 40.5,-37.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19474 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 37.5,-37.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19475 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 41.5,-42.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19476 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 41.5,-41.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19477 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 41.5,-40.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19478 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 41.5,-39.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19481 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 32.5,-37.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19486 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 44.5,-30.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19487 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 45.5,-30.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19490 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 46.5,-33.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19491 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 47.5,-34.5 + pos: 59.5,-23.5 parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - uid: 19492 components: - type: Transform - rot: 3.141592653589793 rad - pos: 46.5,-32.5 + rot: 1.5707963267948966 rad + pos: 54.5,-36.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#0335FCFF' - uid: 19493 components: - type: Transform - rot: 3.141592653589793 rad - pos: 46.5,-31.5 + rot: 1.5707963267948966 rad + pos: 50.5,-26.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#0335FCFF' - uid: 19494 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 48.5,-34.5 + rot: 3.141592653589793 rad + pos: 51.5,-39.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#0335FCFF' - uid: 19495 components: - type: Transform rot: 1.5707963267948966 rad - pos: 49.5,-34.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19500 - components: - - type: Transform - pos: 46.5,-28.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19501 - components: - - type: Transform - pos: 46.5,-27.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19502 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 47.5,-26.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19503 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 48.5,-26.5 + pos: 52.5,-36.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#0335FCFF' - uid: 19504 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 50.5,-26.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19505 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 51.5,-26.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19506 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 52.5,-26.5 + rot: 1.5707963267948966 rad + pos: 44.5,-30.5 parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19507 + - uid: 19508 components: - type: Transform rot: -1.5707963267948966 rad - pos: 53.5,-26.5 + pos: 46.5,-30.5 parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19508 + - uid: 19509 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 49.5,-26.5 + pos: 46.5,-27.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#0335FCFF' - uid: 19512 components: - type: Transform @@ -106186,14 +106258,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19522 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 58.5,-19.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19523 components: - type: Transform @@ -107910,6 +107974,14 @@ entities: pipeLayer: Tertiary - type: AtmosPipeColor color: '#FF1212FF' + - uid: 20010 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 48.5,-26.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20074 components: - type: Transform @@ -107940,6 +108012,13 @@ entities: rot: -1.5707963267948966 rad pos: -37.5,8.5 parent: 2 + - uid: 20197 + components: + - type: Transform + pos: 46.5,-30.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20201 components: - type: Transform @@ -107989,6 +108068,20 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 20270 + components: + - type: Transform + pos: 53.5,-35.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 20278 + components: + - type: Transform + pos: 55.5,-38.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20332 components: - type: Transform @@ -108337,6 +108430,12 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 20942 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,71.5 + parent: 2 - uid: 20944 components: - type: Transform @@ -108443,19 +108542,9 @@ entities: - uid: 20962 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -8.5,70.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 20963 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -7.5,70.5 + rot: 1.5707963267948966 rad + pos: -8.5,71.5 parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 20964 components: - type: Transform @@ -108496,6 +108585,13 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 21131 + components: + - type: Transform + pos: 47.5,-32.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 21145 components: - type: Transform @@ -108514,6 +108610,14 @@ entities: rot: 3.141592653589793 rad pos: -38.5,38.5 parent: 2 + - uid: 21432 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 48.5,-33.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 21516 components: - type: Transform @@ -108528,6 +108632,30 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 21956 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 47.5,-26.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 21957 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 59.5,-18.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 21974 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 49.5,-33.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 22063 components: - type: Transform @@ -108701,6 +108829,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 23879 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 46.5,-32.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 24050 components: - type: Transform @@ -108725,6 +108861,30 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 24065 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 46.5,-33.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 24067 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 48.5,-34.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 24107 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 47.5,-34.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 24132 components: - type: Transform @@ -108805,6 +108965,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 24253 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 50.5,-33.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 24281 components: - type: Transform @@ -108854,6 +109022,173 @@ entities: rot: -1.5707963267948966 rad pos: -37.5,10.5 parent: 2 + - uid: 24652 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 16.5,-51.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 24660 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 16.5,-50.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 24661 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 16.5,-49.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 24664 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 16.5,-47.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 24694 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 16.5,-46.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 24695 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 16.5,-45.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 24698 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 16.5,-48.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 24699 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 16.5,-44.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 24700 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 17.5,-49.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 24702 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 17.5,-48.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 24705 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 17.5,-45.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 24706 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 17.5,-46.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 24709 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 17.5,-47.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 24713 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 9.5,-49.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 24716 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 9.5,-48.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 24718 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 10.5,-51.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 24720 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 10.5,-50.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 24722 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 10.5,-49.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 24732 + components: + - type: Transform + pos: 11.5,-47.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 24736 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 11.5,-47.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 24738 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,-47.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 25124 components: - type: Transform @@ -109040,14 +109375,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 3779 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 12.5,-42.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 3849 components: - type: Transform @@ -109080,6 +109407,22 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 7504 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 49.5,-42.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 7515 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 48.5,-42.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 9157 components: - type: Transform @@ -109102,18 +109445,12 @@ entities: rot: -1.5707963267948966 rad pos: -52.5,30.5 parent: 2 - - uid: 18645 - components: - - type: Transform - pos: -57.5,-10.5 - parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 18817 + - uid: 18645 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 9.5,-50.5 + pos: -57.5,-10.5 parent: 2 - type: AtmosPipeColor color: '#FF1212FF' @@ -109373,56 +109710,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19271 - components: - - type: Transform - pos: 12.5,-43.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19273 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 11.5,-44.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19275 - components: - - type: Transform - pos: 10.5,-45.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19276 - components: - - type: Transform - pos: 10.5,-46.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19277 - components: - - type: Transform - pos: 10.5,-47.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19279 - components: - - type: Transform - pos: 10.5,-49.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19283 - components: - - type: Transform - pos: 10.5,-48.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19712 components: - type: Transform @@ -109754,46 +110041,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 17787 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 36.5,-45.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 17788 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 37.5,-45.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 17789 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 38.5,-45.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 17790 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 39.5,-45.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 17791 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 40.5,-45.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 18691 components: - type: Transform @@ -110373,6 +110620,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 10233 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 54.5,-35.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 10881 components: - type: Transform @@ -110721,12 +110976,16 @@ entities: rot: 1.5707963267948966 rad pos: -17.5,-6.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 11971 components: - type: Transform rot: -1.5707963267948966 rad pos: -16.5,-4.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 12303 components: - type: Transform @@ -110765,6 +111024,30 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 13641 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 10.5,-52.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 13642 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 9.5,-50.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 13644 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 16.5,-52.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 13882 components: - type: Transform @@ -110795,6 +111078,52 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 14665 + components: + - type: Transform + pos: 58.5,-19.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 14681 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 17.5,-50.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 14701 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 44.5,-31.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 14967 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 43.5,-30.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 14974 + components: + - type: Transform + pos: 53.5,-38.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 14984 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 47.5,-30.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 15588 components: - type: Transform @@ -110938,21 +111267,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17488 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 10.5,-46.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17549 - components: - - type: Transform - pos: 37.5,-38.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 17605 components: - type: Transform @@ -110985,6 +111299,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 17792 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-36.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 17860 components: - type: Transform @@ -111159,22 +111481,6 @@ entities: rot: -1.5707963267948966 rad pos: -2.5,-39.5 parent: 2 - - uid: 18091 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,-47.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 18093 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 10.5,-52.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 18094 components: - type: Transform @@ -111220,46 +111526,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 18128 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 33.5,-38.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 18139 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 47.5,-28.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 18140 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 47.5,-31.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 18141 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 47.5,-32.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 18146 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 44.5,-31.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 18150 components: - type: Transform @@ -111687,14 +111953,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 18800 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 15.5,-50.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 18807 components: - type: Transform @@ -111717,14 +111975,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 18841 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 31.5,-37.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 18865 components: - type: Transform @@ -111757,14 +112007,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 18966 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 43.5,-30.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 18970 components: - type: Transform @@ -111921,14 +112163,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19305 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 16.5,-44.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19338 components: - type: Transform @@ -112007,30 +112241,22 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19480 + - uid: 19475 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 41.5,-38.5 + rot: 3.141592653589793 rad + pos: 58.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19488 + color: '#0335FCFF' + - uid: 19499 components: - type: Transform rot: -1.5707963267948966 rad - pos: 46.5,-30.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19496 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 46.5,-29.5 + pos: 46.5,-31.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#0335FCFF' - uid: 19521 components: - type: Transform @@ -112263,6 +112489,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 20194 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 51.5,-36.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20224 components: - type: Transform @@ -112358,14 +112592,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 18818 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 10.5,-50.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19021 components: - type: Transform @@ -112388,14 +112614,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19272 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 12.5,-44.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 20979 components: - type: Transform @@ -112557,6 +112775,8 @@ entities: rot: -1.5707963267948966 rad pos: -45.5,26.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 13983 components: - type: MetaData @@ -112607,12 +112827,6 @@ entities: - type: Transform pos: -48.5,16.5 parent: 2 - - uid: 11981 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -44.5,-33.5 - parent: 2 - uid: 17497 components: - type: Transform @@ -112665,6 +112879,17 @@ entities: parent: 2 - proto: GasVentPump entities: + - uid: 838 + components: + - type: Transform + pos: 58.5,-17.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 20573 + - 14190 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 1992 components: - type: Transform @@ -112675,6 +112900,28 @@ entities: - 22739 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 3674 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 60.5,-27.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 3818 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 3678 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 51.5,-26.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 3802 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 6376 components: - type: Transform @@ -112739,6 +112986,17 @@ entities: - 20490 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 9920 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 55.5,-39.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 21933 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 10325 components: - type: Transform @@ -112756,6 +113014,8 @@ entities: rot: -1.5707963267948966 rad pos: -16.5,-6.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - type: DeviceNetwork deviceLists: - 11914 @@ -112911,15 +113171,14 @@ entities: - 20554 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17786 + - uid: 17778 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 36.5,-45.5 + pos: 53.5,-34.5 parent: 2 - type: DeviceNetwork deviceLists: - - 20568 + - 21933 - type: AtmosPipeColor color: '#0335FCFF' - uid: 17987 @@ -113169,18 +113428,6 @@ entities: - 20558 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 18090 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 15.5,-47.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20559 - - 20560 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 18097 components: - type: Transform @@ -113240,72 +113487,6 @@ entities: - 20567 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 18127 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 37.5,-39.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20569 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 18136 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 9.5,-46.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20560 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 18142 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 47.5,-33.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20576 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 18143 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 46.5,-27.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20576 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 18144 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 51.5,-32.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20570 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 18145 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 53.5,-28.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20571 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 18149 components: - type: Transform @@ -113340,17 +113521,6 @@ entities: - 14190 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 18155 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 59.5,-18.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20573 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 18162 components: - type: Transform @@ -113403,7 +113573,7 @@ entities: parent: 2 - type: DeviceNetwork deviceLists: - - 20580 + - 4184 - type: AtmosPipeColor color: '#0335FCFF' - uid: 18185 @@ -114421,36 +114591,53 @@ entities: - type: DeviceNetwork deviceLists: - 20738 - - uid: 20942 + - uid: 20943 components: - type: Transform rot: 1.5707963267948966 rad - pos: -9.5,70.5 + pos: -3.5,69.5 parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - type: DeviceNetwork deviceLists: - - 20737 - - uid: 20943 + - 28610 + - uid: 23001 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,69.5 + pos: 57.5,19.5 parent: 2 + - type: DeviceNetwork + deviceLists: + - 20582 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 23361 + components: + - type: Transform + pos: 47.5,-41.5 + parent: 2 - type: DeviceNetwork deviceLists: - - 28610 - - uid: 23001 + - 21933 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 24630 components: - type: Transform - pos: 57.5,19.5 + pos: 11.5,-46.5 parent: 2 - type: DeviceNetwork deviceLists: - - 20582 + - 20560 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 24651 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 17.5,-43.5 + parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - uid: 25762 @@ -114475,6 +114662,15 @@ entities: - 20561 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 29066 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -9.5,71.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 20737 - proto: GasVentScrubber entities: - uid: 306 @@ -114525,6 +114721,28 @@ entities: - type: DeviceNetwork deviceLists: - 20574 + - uid: 3673 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 59.5,-27.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 3818 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 3675 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 51.5,-28.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 3802 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 3880 components: - type: Transform @@ -114593,6 +114811,8 @@ entities: rot: 3.141592653589793 rad pos: 6.5,-20.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - type: DeviceNetwork deviceLists: - 20564 @@ -114613,6 +114833,8 @@ entities: rot: 1.5707963267948966 rad pos: -17.5,-4.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - type: DeviceNetwork deviceLists: - 11914 @@ -114637,15 +114859,12 @@ entities: - type: DeviceNetwork deviceLists: - 20564 - - uid: 17784 + - uid: 14987 components: - type: Transform rot: 1.5707963267948966 rad - pos: 34.5,-45.5 + pos: 16.5,-44.5 parent: 2 - - type: DeviceNetwork - deviceLists: - - 20568 - type: AtmosPipeColor color: '#FF1212FF' - uid: 18058 @@ -115120,18 +115339,6 @@ entities: - 1786 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19267 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 16.5,-48.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20559 - - 20560 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19284 components: - type: Transform @@ -115154,17 +115361,6 @@ entities: - 20561 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19302 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 17.5,-44.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20560 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19312 components: - type: Transform @@ -115252,50 +115448,6 @@ entities: - 278 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19479 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 42.5,-38.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20569 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19497 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 50.5,-34.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20570 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19498 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 47.5,-29.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20576 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19509 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 54.5,-26.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20571 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19526 components: - type: Transform @@ -115347,7 +115499,7 @@ entities: parent: 2 - type: DeviceNetwork deviceLists: - - 20580 + - 4184 - type: AtmosPipeLayers pipeLayer: Tertiary - type: AtmosPipeColor @@ -116277,6 +116429,40 @@ entities: deviceLists: - 18630 - 13980 + - uid: 22431 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 53.5,-39.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 21933 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 23359 + components: + - type: Transform + pos: 55.5,-34.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 21933 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 23360 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 47.5,-43.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 21933 + - type: AtmosPipeLayers + pipeLayer: Secondary + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 23978 components: - type: Transform @@ -116288,6 +116474,16 @@ entities: - 20483 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 24632 + components: + - type: Transform + pos: 12.5,-46.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 20560 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 25224 components: - type: Transform @@ -116533,6 +116729,21 @@ entities: - type: Transform pos: -62.5,17.5 parent: 2 + - uid: 27641 + components: + - type: Transform + pos: 43.5,-37.5 + parent: 2 + - uid: 27657 + components: + - type: Transform + pos: 35.5,-43.5 + parent: 2 + - uid: 27658 + components: + - type: Transform + pos: 36.5,-43.5 + parent: 2 - proto: GlassBoxLaserFilled entities: - uid: 8271 @@ -116940,10 +117151,11 @@ entities: rot: 1.5707963267948966 rad pos: -2.5,8.5 parent: 2 - - uid: 846 + - uid: 810 components: - type: Transform - pos: 53.5,-30.5 + rot: 3.141592653589793 rad + pos: 63.5,-53.5 parent: 2 - uid: 858 components: @@ -117011,11 +117223,6 @@ entities: - type: Transform pos: -3.5,59.5 parent: 2 - - uid: 1262 - components: - - type: Transform - pos: 51.5,-30.5 - parent: 2 - uid: 1308 components: - type: Transform @@ -117065,11 +117272,6 @@ entities: - type: Transform pos: -1.5,59.5 parent: 2 - - uid: 1602 - components: - - type: Transform - pos: 52.5,-30.5 - parent: 2 - uid: 1628 components: - type: Transform @@ -117094,6 +117296,12 @@ entities: rot: 3.141592653589793 rad pos: 46.5,11.5 parent: 2 + - uid: 1665 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 15.5,-46.5 + parent: 2 - uid: 1698 components: - type: Transform @@ -117284,31 +117492,6 @@ entities: - type: Transform pos: 2.5,32.5 parent: 2 - - uid: 2310 - components: - - type: Transform - pos: 55.5,-32.5 - parent: 2 - - uid: 2335 - components: - - type: Transform - pos: 55.5,-33.5 - parent: 2 - - uid: 2336 - components: - - type: Transform - pos: 48.5,-34.5 - parent: 2 - - uid: 2337 - components: - - type: Transform - pos: 48.5,-35.5 - parent: 2 - - uid: 2338 - components: - - type: Transform - pos: 48.5,-33.5 - parent: 2 - uid: 2370 components: - type: Transform @@ -117565,35 +117748,35 @@ entities: - type: Transform pos: -53.5,28.5 parent: 2 - - uid: 3668 + - uid: 3676 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 56.5,-43.5 + rot: 3.141592653589793 rad + pos: 60.5,-24.5 parent: 2 - - uid: 3686 + - uid: 3688 components: - type: Transform rot: -1.5707963267948966 rad - pos: 47.5,-45.5 + pos: 63.5,-29.5 parent: 2 - - uid: 3688 + - uid: 3795 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 46.5,-45.5 + rot: 3.141592653589793 rad + pos: 48.5,-26.5 parent: 2 - - uid: 3690 + - uid: 3797 components: - type: Transform rot: -1.5707963267948966 rad - pos: 47.5,-42.5 + pos: 63.5,-28.5 parent: 2 - - uid: 3809 + - uid: 3798 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 56.5,-44.5 + rot: -1.5707963267948966 rad + pos: 63.5,-27.5 parent: 2 - uid: 3852 components: @@ -117805,12 +117988,6 @@ entities: - type: Transform pos: -54.5,-6.5 parent: 2 - - uid: 5353 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 15.5,-49.5 - parent: 2 - uid: 5364 components: - type: Transform @@ -117918,11 +118095,6 @@ entities: rot: 3.141592653589793 rad pos: -49.5,-12.5 parent: 2 - - uid: 6167 - components: - - type: Transform - pos: 48.5,-42.5 - parent: 2 - uid: 6216 components: - type: Transform @@ -117972,12 +118144,6 @@ entities: - type: Transform pos: 55.5,35.5 parent: 2 - - uid: 6574 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 63.5,11.5 - parent: 2 - uid: 6719 components: - type: Transform @@ -117995,6 +118161,11 @@ entities: - type: Transform pos: -1.5,-45.5 parent: 2 + - uid: 6764 + components: + - type: Transform + pos: 53.5,-31.5 + parent: 2 - uid: 6844 components: - type: Transform @@ -118036,6 +118207,11 @@ entities: rot: 1.5707963267948966 rad pos: 22.5,51.5 parent: 2 + - uid: 6908 + components: + - type: Transform + pos: 59.5,-41.5 + parent: 2 - uid: 7195 components: - type: Transform @@ -118051,6 +118227,16 @@ entities: - type: Transform pos: 12.5,-43.5 parent: 2 + - uid: 7489 + components: + - type: Transform + pos: 59.5,-34.5 + parent: 2 + - uid: 7499 + components: + - type: Transform + pos: 59.5,-35.5 + parent: 2 - uid: 7508 components: - type: Transform @@ -118071,20 +118257,15 @@ entities: - type: Transform pos: 53.5,-24.5 parent: 2 - - uid: 7672 - components: - - type: Transform - pos: 48.5,-28.5 - parent: 2 - - uid: 7677 + - uid: 7609 components: - type: Transform - pos: 48.5,-29.5 + pos: 52.5,-31.5 parent: 2 - - uid: 7678 + - uid: 7618 components: - type: Transform - pos: 50.5,-24.5 + pos: 51.5,-31.5 parent: 2 - uid: 7755 components: @@ -118472,12 +118653,6 @@ entities: rot: 3.141592653589793 rad pos: 34.5,-37.5 parent: 2 - - uid: 9617 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 34.5,-39.5 - parent: 2 - uid: 9622 components: - type: Transform @@ -118691,12 +118866,6 @@ entities: - type: Transform pos: -51.5,-37.5 parent: 2 - - uid: 10244 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 54.5,-24.5 - parent: 2 - uid: 10281 components: - type: Transform @@ -119655,11 +119824,28 @@ entities: rot: 3.141592653589793 rad pos: -17.5,-68.5 parent: 2 + - uid: 12736 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 55.5,7.5 + parent: 2 + - uid: 12818 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 56.5,7.5 + parent: 2 - uid: 12856 components: - type: Transform pos: 58.5,15.5 parent: 2 + - uid: 12861 + components: + - type: Transform + pos: 59.5,-39.5 + parent: 2 - uid: 12872 components: - type: Transform @@ -119798,6 +119984,16 @@ entities: - type: Transform pos: 66.5,-21.5 parent: 2 + - uid: 14954 + components: + - type: Transform + pos: 59.5,-40.5 + parent: 2 + - uid: 14959 + components: + - type: Transform + pos: 59.5,-33.5 + parent: 2 - uid: 15248 components: - type: Transform @@ -119924,6 +120120,54 @@ entities: rot: 1.5707963267948966 rad pos: 50.5,-13.5 parent: 2 + - uid: 17484 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 48.5,-28.5 + parent: 2 + - uid: 17546 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 15.5,-47.5 + parent: 2 + - uid: 17547 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-54.5 + parent: 2 + - uid: 17548 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-51.5 + parent: 2 + - uid: 17776 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 18.5,-47.5 + parent: 2 + - uid: 17800 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,-47.5 + parent: 2 + - uid: 17801 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 56.5,-45.5 + parent: 2 + - uid: 17802 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 56.5,-46.5 + parent: 2 - uid: 17938 components: - type: Transform @@ -119936,6 +120180,36 @@ entities: rot: 3.141592653589793 rad pos: 45.5,-32.5 parent: 2 + - uid: 18088 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 56.5,-47.5 + parent: 2 + - uid: 18126 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,-46.5 + parent: 2 + - uid: 18820 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 12.5,-49.5 + parent: 2 + - uid: 19276 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,-45.5 + parent: 2 + - uid: 19503 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-55.5 + parent: 2 - uid: 19967 components: - type: Transform @@ -119952,12 +120226,6 @@ entities: rot: 3.141592653589793 rad pos: 22.5,-66.5 parent: 2 - - uid: 20270 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 46.5,-42.5 - parent: 2 - uid: 20288 components: - type: Transform @@ -120442,12 +120710,30 @@ entities: rot: -1.5707963267948966 rad pos: 32.5,-11.5 parent: 2 + - uid: 22237 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 61.5,-24.5 + parent: 2 + - uid: 22238 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-55.5 + parent: 2 - uid: 22243 components: - type: Transform rot: 3.141592653589793 rad pos: -35.5,-7.5 parent: 2 + - uid: 22298 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,-55.5 + parent: 2 - uid: 22401 components: - type: Transform @@ -121565,61 +121851,6 @@ entities: - type: Transform pos: 46.5,-49.5 parent: 2 - - uid: 23355 - components: - - type: Transform - pos: 57.5,-38.5 - parent: 2 - - uid: 23356 - components: - - type: Transform - pos: 57.5,-37.5 - parent: 2 - - uid: 23357 - components: - - type: Transform - pos: 57.5,-35.5 - parent: 2 - - uid: 23358 - components: - - type: Transform - pos: 57.5,-36.5 - parent: 2 - - uid: 23359 - components: - - type: Transform - pos: 58.5,-35.5 - parent: 2 - - uid: 23360 - components: - - type: Transform - pos: 59.5,-35.5 - parent: 2 - - uid: 23361 - components: - - type: Transform - pos: 60.5,-35.5 - parent: 2 - - uid: 23363 - components: - - type: Transform - pos: 60.5,-31.5 - parent: 2 - - uid: 23364 - components: - - type: Transform - pos: 60.5,-32.5 - parent: 2 - - uid: 23365 - components: - - type: Transform - pos: 60.5,-33.5 - parent: 2 - - uid: 23372 - components: - - type: Transform - pos: 63.5,-24.5 - parent: 2 - uid: 23374 components: - type: Transform @@ -122482,12 +122713,24 @@ entities: - type: Transform pos: 65.5,-21.5 parent: 2 + - uid: 23763 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 58.5,-24.5 + parent: 2 - uid: 23774 components: - type: Transform rot: 3.141592653589793 rad pos: -37.5,9.5 parent: 2 + - uid: 23781 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 18.5,-46.5 + parent: 2 - uid: 24325 components: - type: Transform @@ -122499,6 +122742,66 @@ entities: - type: Transform pos: -0.5,66.5 parent: 2 + - uid: 24864 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-50.5 + parent: 2 + - uid: 24865 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-49.5 + parent: 2 + - uid: 24867 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-48.5 + parent: 2 + - uid: 24868 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-47.5 + parent: 2 + - uid: 24871 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-45.5 + parent: 2 + - uid: 24874 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-44.5 + parent: 2 + - uid: 24894 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-42.5 + parent: 2 + - uid: 24895 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-41.5 + parent: 2 + - uid: 24897 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-39.5 + parent: 2 + - uid: 24898 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-40.5 + parent: 2 - uid: 24903 components: - type: Transform @@ -122514,6 +122817,60 @@ entities: - type: Transform pos: -17.5,36.5 parent: 2 + - uid: 24921 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-43.5 + parent: 2 + - uid: 24925 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-33.5 + parent: 2 + - uid: 24926 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-34.5 + parent: 2 + - uid: 24927 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-35.5 + parent: 2 + - uid: 24931 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-36.5 + parent: 2 + - uid: 24932 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 63.5,-37.5 + parent: 2 + - uid: 25018 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 62.5,-53.5 + parent: 2 + - uid: 25020 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 62.5,-54.5 + parent: 2 + - uid: 25026 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 62.5,-55.5 + parent: 2 - uid: 25151 components: - type: Transform @@ -123211,11 +123568,6 @@ entities: - type: Transform pos: -33.5,-68.5 parent: 2 - - uid: 28351 - components: - - type: Transform - pos: 48.5,-45.5 - parent: 2 - uid: 28539 components: - type: Transform @@ -123727,13 +124079,6 @@ entities: - type: Transform pos: 8.5,19.5 parent: 2 -- proto: Gyroscope - entities: - - uid: 27524 - components: - - type: Transform - pos: 41.5,-42.5 - parent: 2 - proto: GyroscopeMachineCircuitboard entities: - uid: 26536 @@ -123749,6 +124094,11 @@ entities: rot: 1.5707963267948966 rad pos: -63.5,34.5 parent: 2 + - uid: 14958 + components: + - type: Transform + pos: 56.5,-41.5 + parent: 2 - proto: Handcuffs entities: - uid: 5044 @@ -123787,10 +124137,11 @@ entities: parent: 2 - proto: HandHeldMassScanner entities: - - uid: 25913 + - uid: 7498 components: - type: Transform - pos: 40.67296,-35.40432 + rot: 1.5707963267948966 rad + pos: 49.46553,-36.433517 parent: 2 - uid: 26631 components: @@ -123890,7 +124241,7 @@ entities: parent: 2 - proto: HighSecArmoryLocked entities: - - uid: 4822 + - uid: 12402 components: - type: Transform pos: 8.5,16.5 @@ -123982,6 +124333,13 @@ entities: - type: Transform pos: 55.5,-0.5 parent: 2 + - uid: 20703 + components: + - type: MetaData + name: Interdyne - Paramedics + - type: Transform + pos: 10.5,-45.5 + parent: 2 - uid: 21661 components: - type: MetaData @@ -124031,13 +124389,6 @@ entities: - type: Transform pos: -3.5,-46.5 parent: 2 - - uid: 21933 - components: - - type: MetaData - name: Interdyne - paramedics - - type: Transform - pos: 14.5,-47.5 - parent: 2 - uid: 21934 components: - type: MetaData @@ -124087,27 +124438,6 @@ entities: - type: Transform pos: 53.5,-17.5 parent: 2 - - uid: 21974 - components: - - type: MetaData - name: Donk co. - breakroom - - type: Transform - pos: 53.5,-27.5 - parent: 2 - - uid: 21975 - components: - - type: MetaData - name: Donk co. - QM - - type: Transform - pos: 50.5,-32.5 - parent: 2 - - uid: 21976 - components: - - type: MetaData - name: Donk co. - salvage - - type: Transform - pos: 40.5,-40.5 - parent: 2 - uid: 21992 components: - type: MetaData @@ -124206,6 +124536,29 @@ entities: - type: Transform pos: 61.5,-17.5 parent: 2 +- proto: HolopadCargoSalvageBay + entities: + - uid: 15022 + components: + - type: MetaData + name: Donk co. - Salvage + - type: Transform + pos: 54.5,-39.5 + parent: 2 + - uid: 18801 + components: + - type: MetaData + name: Donk co. - Qm's office + - type: Transform + pos: 60.5,-26.5 + parent: 2 + - uid: 24862 + components: + - type: MetaData + name: Donk co. - breakroom + - type: Transform + pos: 52.5,-28.5 + parent: 2 - proto: HolopadCommandBridge entities: - uid: 21794 @@ -124393,6 +124746,13 @@ entities: - type: Transform pos: -44.5,-8.5 parent: 2 + - uid: 27089 + components: + - type: MetaData + name: Reading Room + - type: Transform + pos: 37.5,-36.5 + parent: 2 - proto: HolopadGeneralTheater entities: - uid: 18560 @@ -124734,6 +125094,13 @@ entities: - type: Transform pos: 4.3894825,41.518726 parent: 2 +- proto: Igniter + entities: + - uid: 3858 + components: + - type: Transform + pos: -38.944836,42.388733 + parent: 2 - proto: Implanter entities: - uid: 24406 @@ -124770,21 +125137,6 @@ entities: rot: -1.5707963267948966 rad pos: 18.5,-66.5 parent: 2 - - uid: 7682 - components: - - type: Transform - pos: 56.5,-28.5 - parent: 2 - - uid: 7683 - components: - - type: Transform - pos: 56.5,-27.5 - parent: 2 - - uid: 7684 - components: - - type: Transform - pos: 56.5,-26.5 - parent: 2 - uid: 8471 components: - type: Transform @@ -124795,11 +125147,6 @@ entities: - type: Transform pos: -58.5,-40.5 parent: 2 - - uid: 15047 - components: - - type: Transform - pos: 56.5,-25.5 - parent: 2 - uid: 15049 components: - type: Transform @@ -124810,6 +125157,16 @@ entities: - type: Transform pos: 17.5,-63.5 parent: 2 + - uid: 22291 + components: + - type: Transform + pos: 45.5,-47.5 + parent: 2 + - uid: 22300 + components: + - type: Transform + pos: 43.5,-47.5 + parent: 2 - uid: 22432 components: - type: Transform @@ -124828,6 +125185,16 @@ entities: rot: -1.5707963267948966 rad pos: 16.5,-64.5 parent: 2 + - uid: 23355 + components: + - type: Transform + pos: 45.5,-46.5 + parent: 2 + - uid: 23356 + components: + - type: Transform + pos: 44.5,-47.5 + parent: 2 - uid: 23459 components: - type: Transform @@ -124844,10 +125211,35 @@ entities: rot: -1.5707963267948966 rad pos: 21.5,-65.5 parent: 2 - - uid: 24065 + - uid: 25051 components: - type: Transform - pos: 56.5,-29.5 + pos: 44.5,-46.5 + parent: 2 + - uid: 25080 + components: + - type: Transform + pos: 44.5,-45.5 + parent: 2 + - uid: 25082 + components: + - type: Transform + pos: 44.5,-44.5 + parent: 2 + - uid: 25083 + components: + - type: Transform + pos: 43.5,-46.5 + parent: 2 + - uid: 25084 + components: + - type: Transform + pos: 42.5,-46.5 + parent: 2 + - uid: 25087 + components: + - type: Transform + pos: 41.5,-46.5 parent: 2 - uid: 26291 components: @@ -125329,11 +125721,6 @@ entities: - type: Transform pos: 30.5,-8.5 parent: 2 - - uid: 4184 - components: - - type: Transform - pos: -9.5,-20.5 - parent: 2 - uid: 4186 components: - type: Transform @@ -125494,11 +125881,6 @@ entities: - type: Transform pos: 21.5,-22.5 parent: 2 - - uid: 4256 - components: - - type: Transform - pos: 33.5,4.5 - parent: 2 - uid: 4260 components: - type: Transform @@ -125629,11 +126011,6 @@ entities: - type: Transform pos: 9.5,-28.5 parent: 2 - - uid: 4331 - components: - - type: Transform - pos: -4.5,-25.5 - parent: 2 - uid: 4332 components: - type: Transform @@ -125699,16 +126076,6 @@ entities: - type: Transform pos: 16.5,17.5 parent: 2 - - uid: 4349 - components: - - type: Transform - pos: -5.5,-25.5 - parent: 2 - - uid: 4350 - components: - - type: Transform - pos: -6.5,-25.5 - parent: 2 - uid: 4351 components: - type: Transform @@ -125749,11 +126116,6 @@ entities: - type: Transform pos: -25.5,6.5 parent: 2 - - uid: 4386 - components: - - type: Transform - pos: -2.5,-25.5 - parent: 2 - uid: 4390 components: - type: Transform @@ -126109,11 +126471,6 @@ entities: - type: Transform pos: 15.5,23.5 parent: 2 - - uid: 4513 - components: - - type: Transform - pos: -3.5,-25.5 - parent: 2 - uid: 4521 components: - type: Transform @@ -126759,11 +127116,6 @@ entities: - type: Transform pos: -29.5,9.5 parent: 2 - - uid: 4804 - components: - - type: Transform - pos: -9.5,-21.5 - parent: 2 - uid: 4813 components: - type: Transform @@ -126854,11 +127206,6 @@ entities: - type: Transform pos: -16.5,-30.5 parent: 2 - - uid: 6264 - components: - - type: Transform - pos: -7.5,-25.5 - parent: 2 - uid: 6267 components: - type: Transform @@ -127399,26 +127746,6 @@ entities: - type: Transform pos: 24.5,-23.5 parent: 2 - - uid: 12733 - components: - - type: Transform - pos: -8.5,-25.5 - parent: 2 - - uid: 12734 - components: - - type: Transform - pos: -9.5,-23.5 - parent: 2 - - uid: 12736 - components: - - type: Transform - pos: -9.5,-24.5 - parent: 2 - - uid: 12818 - components: - - type: Transform - pos: -9.5,-25.5 - parent: 2 - uid: 12911 components: - type: Transform @@ -127948,11 +128275,6 @@ entities: - type: Transform pos: 7.5,-28.5 parent: 2 - - uid: 1489 - components: - - type: Transform - pos: 32.5,3.5 - parent: 2 - uid: 2225 components: - type: Transform @@ -129027,6 +129349,12 @@ entities: parent: 2 - proto: JanitorialTrolley entities: + - uid: 1342 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,-21.5 + parent: 2 - uid: 4771 components: - type: Transform @@ -129061,26 +129389,15 @@ entities: canCollide: False - type: InsideEntityStorage storage: 4120 - - uid: 7578 + - uid: 19968 components: - type: Transform - pos: 35.56981,-39.494194 + pos: 42.52,42.512203 parent: 2 - - type: GasTank - toggleActionEntity: 7580 - - type: Jetpack - toggleActionEntity: 7579 - - type: ActionsContainer - - type: ContainerContainer - containers: - actions: !type:Container - ents: - - 7579 - - 7580 - - uid: 19968 + - uid: 21981 components: - type: Transform - pos: 42.52,42.512203 + pos: 55.499245,-32.442223 parent: 2 - uid: 22395 components: @@ -129154,6 +129471,21 @@ entities: parent: 2 - proto: KitchenMicrowave entities: + - uid: 866 + components: + - type: Transform + pos: -22.5,-44.5 + parent: 2 + - uid: 5869 + components: + - type: Transform + pos: -3.5,17.5 + parent: 2 + - uid: 6036 + components: + - type: Transform + pos: 19.5,8.5 + parent: 2 - uid: 6164 components: - type: Transform @@ -129389,6 +129721,12 @@ entities: - type: Physics canCollide: True - type: ActionsContainer + - uid: 2661 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 61.507923,-28.04674 + parent: 2 - uid: 4038 components: - type: Transform @@ -129421,27 +129759,6 @@ entities: - type: Transform pos: -19.560867,-10.193181 parent: 2 - - uid: 7635 - components: - - type: Transform - pos: 52.60484,-32.458576 - parent: 2 - - type: HandheldLight - toggleActionEntity: 5677 - - type: ContainerContainer - containers: - cell_slot: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - actions: !type:Container - showEnts: False - occludes: True - ents: - - 5677 - - type: Physics - canCollide: True - - type: ActionsContainer - uid: 7869 components: - type: Transform @@ -129463,6 +129780,12 @@ entities: - type: Physics canCollide: True - type: ActionsContainer + - uid: 25913 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 35.51571,-35.204514 + parent: 2 - uid: 28840 components: - type: Transform @@ -129543,8 +129866,7 @@ entities: - uid: 21588 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -7.7150574,73.59841 + pos: -9.099399,70.26022 parent: 2 - proto: LockableButtonArmory entities: @@ -129958,21 +130280,11 @@ entities: - type: Transform pos: 15.5,-16.5 parent: 2 -- proto: LockerBotanistLoot - entities: - - uid: 10443 + - uid: 12019 components: - type: Transform pos: 68.5,19.5 parent: 2 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14673 - moles: - Oxygen: 1.606311 - Nitrogen: 6.042789 - proto: LockerCaptainFilledNoLaser entities: - uid: 8243 @@ -130207,35 +130519,6 @@ entities: - type: Transform pos: -25.5,-48.5 parent: 2 - - uid: 7720 - components: - - type: Transform - pos: 52.5,-29.5 - parent: 2 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14673 - moles: - Oxygen: 1.7459903 - Nitrogen: 6.568249 - - type: Lock - locked: False - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 7723 - - 7721 - - 7722 - - 7724 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - uid: 22771 components: - type: Transform @@ -130260,6 +130543,11 @@ entities: showEnts: False occludes: True ent: null + - uid: 24826 + components: + - type: Transform + pos: 54.5,-27.5 + parent: 2 - proto: LockerFreezerVaultFilled entities: - uid: 3639 @@ -130421,15 +130709,15 @@ entities: ent: null - proto: LockerParamedicFilled entities: - - uid: 281 + - uid: 19273 components: - type: Transform - pos: 17.5,-46.5 + pos: 14.5,-48.5 parent: 2 - - uid: 6764 + - uid: 20704 components: - type: Transform - pos: 17.5,-48.5 + pos: 14.5,-46.5 parent: 2 - proto: LockerPrisoner entities: @@ -130489,10 +130777,10 @@ entities: parent: 2 - proto: LockerQuarterMasterFilled entities: - - uid: 7624 + - uid: 7723 components: - type: Transform - pos: 53.5,-36.5 + pos: 57.5,-28.5 parent: 2 - type: EntityStorage air: @@ -130502,6 +130790,17 @@ entities: moles: Oxygen: 1.7459903 Nitrogen: 6.568249 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 7724 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null - proto: LockerResearchDirectorFilled entities: - uid: 6506 @@ -130575,25 +130874,25 @@ entities: isPlaceable: True - proto: LockerSalvageSpecialistFilled entities: - - uid: 842 + - uid: 5972 components: - type: Transform - pos: 36.5,-44.5 + pos: 48.5,-39.5 parent: 2 - - uid: 7504 + - uid: 7594 components: - type: Transform - pos: 33.5,-44.5 + pos: 48.5,-41.5 parent: 2 - - uid: 7517 + - uid: 13653 components: - type: Transform - pos: 35.5,-44.5 + pos: 48.5,-40.5 parent: 2 - - uid: 7518 + - uid: 13654 components: - type: Transform - pos: 34.5,-44.5 + pos: 48.5,-38.5 parent: 2 - proto: LockerScienceFilled entities: @@ -130855,6 +131154,11 @@ entities: showEnts: False occludes: True ent: null + - uid: 15054 + components: + - type: Transform + pos: -49.5,-50.5 + parent: 2 - proto: LockerSyndicateShipGearBasic entities: - uid: 25581 @@ -130883,19 +131187,6 @@ entities: moles: Oxygen: 1.7459903 Nitrogen: 6.568249 - - uid: 25583 - components: - - type: Transform - pos: -49.5,-50.5 - parent: 2 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14673 - moles: - Oxygen: 1.7459903 - Nitrogen: 6.568249 - uid: 25628 components: - type: Transform @@ -130928,22 +131219,6 @@ entities: - type: Transform pos: 15.5,41.5 parent: 2 -- proto: LogicGateOr - entities: - - uid: 21519 - components: - - type: Transform - pos: 46.5,-43.5 - parent: 2 - - type: DeviceLinkSink - invokeCounter: 1 - - uid: 25153 - components: - - type: Transform - pos: 46.5,-44.5 - parent: 2 - - type: DeviceLinkSink - invokeCounter: 1 - proto: LootSpawnerEncryptionKey entities: - uid: 10714 @@ -132068,6 +132343,14 @@ entities: - type: Transform pos: -21.5,-28.5 parent: 2 +- proto: MaintsRoomMarker + entities: + - uid: 25095 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 40.5,-43.5 + parent: 2 - proto: MaterialBones1 entities: - uid: 3171 @@ -132405,7 +132688,7 @@ entities: - uid: 24232 components: - type: Transform - pos: -7.5314827,-42.298134 + pos: -7.2850556,-42.499928 parent: 2 - proto: Medkit entities: @@ -132419,11 +132702,6 @@ entities: storage: 10492 - proto: MedkitAdvancedFilled entities: - - uid: 4569 - components: - - type: Transform - pos: 38.5373,-38.45565 - parent: 2 - uid: 5902 components: - type: Transform @@ -132439,6 +132717,11 @@ entities: - type: Transform pos: -9.48308,39.748554 parent: 2 + - uid: 20403 + components: + - type: Transform + pos: 53.553932,-36.450035 + parent: 2 - proto: MedkitBruteFilled entities: - uid: 6797 @@ -132626,6 +132909,12 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + - uid: 29015 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -36.512184,-24.471539 + parent: 2 - proto: MindShieldImplanter entities: - uid: 5961 @@ -132635,6 +132924,7 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + storage: 5960 - uid: 5962 components: - type: Transform @@ -132642,6 +132932,17 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + storage: 5960 +- proto: MirrorModern + entities: + - uid: 20963 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 34.5,-42.5 + parent: 2 + - type: Fixtures + fixtures: {} - proto: MMI entities: - uid: 6548 @@ -132687,6 +132988,16 @@ entities: - type: Transform pos: -5.5,-24.5 parent: 2 + - uid: 25896 + components: + - type: Transform + pos: -12.5,52.5 + parent: 2 + - uid: 28993 + components: + - type: Transform + pos: 37.5,44.5 + parent: 2 - proto: MopItem entities: - uid: 3303 @@ -132699,6 +133010,21 @@ entities: - type: Transform pos: 12.464294,6.548893 parent: 2 + - uid: 24786 + components: + - type: Transform + pos: -3.565198,-21.557863 + parent: 2 + - uid: 26161 + components: + - type: Transform + pos: -12.529471,52.41582 + parent: 2 + - uid: 28994 + components: + - type: Transform + pos: 37.475826,44.512386 + parent: 2 - proto: Morgue entities: - uid: 17 @@ -132811,11 +133137,6 @@ entities: parent: 2 - proto: Multitool entities: - - uid: 2784 - components: - - type: Transform - pos: 40.085472,-35.414886 - parent: 2 - uid: 5253 components: - type: Transform @@ -132826,7 +133147,7 @@ entities: - uid: 6431 components: - type: Transform - pos: 58.853275,3.6198049 + pos: 58.84837,3.5466423 parent: 2 - uid: 7122 components: @@ -132848,10 +133169,16 @@ entities: - type: Transform pos: 65.31867,-1.9230018 parent: 2 + - uid: 13698 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 49.418655,-36.03508 + parent: 2 - uid: 24501 components: - type: Transform - pos: 61.9831,-22.414852 + pos: 62.64419,-22.849232 parent: 2 - proto: MysteryFigureBox entities: @@ -132926,10 +133253,10 @@ entities: - type: Transform pos: 24.5,-54.5 parent: 2 - - uid: 7485 + - uid: 7787 components: - type: Transform - pos: 44.5,-42.5 + pos: 58.5,-43.5 parent: 2 - uid: 7884 components: @@ -133113,7 +133440,7 @@ entities: - uid: 6432 components: - type: Transform - pos: 59.532963,3.9713674 + pos: 59.520245,4.3747673 parent: 2 - uid: 6481 components: @@ -133125,8 +133452,7 @@ entities: - uid: 21589 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -7.449432,73.62966 + pos: -8.55282,73.79769 parent: 2 - proto: NTFlag entities: @@ -133187,8 +133513,7 @@ entities: - uid: 21590 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -7.246307,73.61404 + pos: -9.130649,70.65085 parent: 2 - proto: OffsetCaneMime entities: @@ -133234,15 +133559,10 @@ entities: parent: 2 - proto: OreBag entities: - - uid: 7581 - components: - - type: Transform - pos: 35.50731,-37.494194 - parent: 2 - - uid: 7582 + - uid: 17770 components: - type: Transform - pos: 35.35106,-37.556694 + pos: 53.530495,-32.46566 parent: 2 - uid: 25339 components: @@ -133261,15 +133581,15 @@ entities: parent: 2 - proto: OreBox entities: - - uid: 7612 + - uid: 9291 components: - type: Transform - pos: 42.5,-42.5 + pos: 53.5,-40.5 parent: 2 - - uid: 7613 + - uid: 14957 components: - type: Transform - pos: 42.5,-43.5 + pos: 55.5,-41.5 parent: 2 - uid: 25338 components: @@ -133278,10 +133598,10 @@ entities: parent: 2 - proto: OreProcessor entities: - - uid: 25336 + - uid: 4416 components: - type: Transform - pos: -23.5,-5.5 + pos: 48.5,-32.5 parent: 2 - type: TechnologyDatabase supportedDisciplines: @@ -133289,10 +133609,10 @@ entities: - Arsenal - Experimental - CivilianServices - - uid: 27635 + - uid: 25336 components: - type: Transform - pos: 45.5,-35.5 + pos: -23.5,-5.5 parent: 2 - type: TechnologyDatabase supportedDisciplines: @@ -133433,11 +133753,6 @@ entities: - type: Transform pos: 63.5,17.5 parent: 2 - - uid: 7483 - components: - - type: Transform - pos: 44.5,-41.5 - parent: 2 - uid: 7888 components: - type: Transform @@ -133463,6 +133778,11 @@ entities: - type: Transform pos: -60.5,-28.5 parent: 2 + - uid: 13651 + components: + - type: Transform + pos: 57.5,-43.5 + parent: 2 - uid: 19793 components: - type: Transform @@ -133685,8 +134005,7 @@ entities: - uid: 21592 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -7.8869324,73.56716 + pos: -9.115024,73.5571 parent: 2 - proto: Paper entities: @@ -134107,15 +134426,15 @@ entities: parent: 2 - proto: Pickaxe entities: - - uid: 2769 + - uid: 4526 components: - type: Transform - pos: 38.060837,-46.408768 + pos: 17.550608,18.702074 parent: 2 - - uid: 4526 + - uid: 13637 components: - type: Transform - pos: 17.550608,18.702074 + pos: 46.491943,-42.311123 parent: 2 - uid: 25351 components: @@ -134141,10 +134460,10 @@ entities: - type: Transform pos: 16.985565,10.699024 parent: 2 - - uid: 9920 + - uid: 7794 components: - type: Transform - pos: 38.192387,-46.582386 + pos: 46.72632,-41.748623 parent: 2 - proto: PillSpaceDrugs entities: @@ -134223,6 +134542,11 @@ entities: - type: Transform pos: -33.5,16.5 parent: 2 + - uid: 25096 + components: + - type: Transform + pos: -46.5,32.5 + parent: 2 - uid: 28733 components: - type: Transform @@ -134826,6 +135150,12 @@ entities: parent: 2 - proto: PlasmaWindowDirectional entities: + - uid: 7495 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 50.5,-37.5 + parent: 2 - uid: 11894 components: - type: Transform @@ -135396,6 +135726,14 @@ entities: fixtures: {} - proto: PosterContrabandBeachStarYamamoto entities: + - uid: 7711 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 49.5,-39.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 28757 components: - type: Transform @@ -135534,14 +135872,6 @@ entities: parent: 2 - type: Fixtures fixtures: {} - - uid: 21987 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 55.5,-31.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 21988 components: - type: Transform @@ -135716,6 +136046,14 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 24752 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 11.5,-49.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 26367 components: - type: Transform @@ -135978,16 +136316,6 @@ entities: parent: 2 - type: Fixtures fixtures: {} -- proto: PosterLegitCarpMount - entities: - - uid: 28756 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 36.5,-43.5 - parent: 2 - - type: Fixtures - fixtures: {} - proto: PosterLegitIan entities: - uid: 17307 @@ -136094,11 +136422,10 @@ entities: fixtures: {} - proto: PosterLegitThereIsNoGasGiant entities: - - uid: 25918 + - uid: 6750 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -42.5,31.5 + pos: -48.5,29.5 parent: 2 - type: Fixtures fixtures: {} @@ -136118,17 +136445,24 @@ entities: parent: 2 - type: Fixtures fixtures: {} +- proto: PottedPlant14 + entities: + - uid: 29014 + components: + - type: Transform + pos: -32.5,-24.5 + parent: 2 - proto: PottedPlantRandom entities: - - uid: 4395 + - uid: 4331 components: - type: Transform - pos: 47.5,28.5 + pos: 24.5,48.5 parent: 2 - - uid: 20272 + - uid: 4395 components: - type: Transform - pos: 22.5,47.5 + pos: 47.5,28.5 parent: 2 - uid: 22351 components: @@ -136140,11 +136474,6 @@ entities: - type: Transform pos: 52.5,24.5 parent: 2 - - uid: 23876 - components: - - type: Transform - pos: 38.5,-37.5 - parent: 2 - uid: 24248 components: - type: Transform @@ -136160,11 +136489,6 @@ entities: - type: Transform pos: 14.5,-54.5 parent: 2 - - uid: 24251 - components: - - type: Transform - pos: 14.5,-48.5 - parent: 2 - uid: 24252 components: - type: Transform @@ -136215,6 +136539,11 @@ entities: - type: Transform pos: -60.5,-12.5 parent: 2 + - uid: 24376 + components: + - type: Transform + pos: 11.5,-48.5 + parent: 2 - uid: 24519 components: - type: Transform @@ -136273,11 +136602,11 @@ entities: - type: Transform pos: 45.5,-12.5 parent: 2 - - uid: 2790 + - uid: 3823 components: - type: Transform - rot: 3.141592653589793 rad - pos: 39.5,-35.5 + rot: -1.5707963267948966 rad + pos: 62.5,-23.5 parent: 2 - uid: 3941 components: @@ -136331,11 +136660,11 @@ entities: - type: Transform pos: -53.5,6.5 parent: 2 - - uid: 7707 + - uid: 7692 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 50.5,-29.5 + rot: 3.141592653589793 rad + pos: 54.5,-26.5 parent: 2 - uid: 7736 components: @@ -136370,6 +136699,12 @@ entities: rot: -1.5707963267948966 rad pos: -66.5,27.5 parent: 2 + - uid: 13697 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 49.5,-35.5 + parent: 2 - uid: 16964 components: - type: Transform @@ -136405,12 +136740,6 @@ entities: - type: Transform pos: -3.5,10.5 parent: 2 - - uid: 25870 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 61.5,-22.5 - parent: 2 - proto: PowerCellSmallPrinted entities: - uid: 24534 @@ -136737,15 +137066,22 @@ entities: rot: 3.141592653589793 rad pos: 42.5,-33.5 parent: 2 - - uid: 2378 + - uid: 2742 components: - type: Transform - pos: 43.5,-35.5 + pos: 55.5,-11.5 parent: 2 - - uid: 2742 + - uid: 3786 components: - type: Transform - pos: 55.5,-11.5 + rot: 1.5707963267948966 rad + pos: 50.5,-37.5 + parent: 2 + - uid: 3787 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 48.5,-39.5 parent: 2 - uid: 4614 components: @@ -136770,6 +137106,17 @@ entities: rot: 3.141592653589793 rad pos: 50.5,24.5 parent: 2 + - uid: 7574 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 58.5,-41.5 + parent: 2 + - uid: 7705 + components: + - type: Transform + pos: 54.5,-25.5 + parent: 2 - uid: 7744 components: - type: Transform @@ -136842,18 +137189,64 @@ entities: rot: -1.5707963267948966 rad pos: -12.5,-17.5 parent: 2 + - uid: 13657 + components: + - type: Transform + pos: 54.5,-32.5 + parent: 2 + - uid: 13658 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 49.5,-30.5 + parent: 2 + - uid: 13659 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 46.5,-42.5 + parent: 2 + - uid: 13660 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 52.5,-43.5 + parent: 2 + - uid: 13664 + components: + - type: Transform + pos: 57.5,-25.5 + parent: 2 - uid: 13791 components: - type: Transform rot: -1.5707963267948966 rad pos: -30.5,30.5 parent: 2 + - uid: 14937 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 61.5,-30.5 + parent: 2 + - uid: 14938 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 58.5,-33.5 + parent: 2 - uid: 15655 components: - type: Transform rot: 1.5707963267948966 rad pos: -7.5,53.5 parent: 2 + - uid: 17783 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 46.5,-28.5 + parent: 2 - uid: 17849 components: - type: Transform @@ -137608,11 +138001,6 @@ entities: rot: 3.141592653589793 rad pos: 10.5,-52.5 parent: 2 - - uid: 22233 - components: - - type: Transform - pos: 16.5,-50.5 - parent: 2 - uid: 22234 components: - type: Transform @@ -137625,18 +138013,6 @@ entities: rot: 1.5707963267948966 rad pos: 24.5,-46.5 parent: 2 - - uid: 22237 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 33.5,-42.5 - parent: 2 - - uid: 22238 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 33.5,-36.5 - parent: 2 - uid: 22239 components: - type: Transform @@ -137763,11 +138139,6 @@ entities: - type: Transform pos: 5.5,-39.5 parent: 2 - - uid: 22271 - components: - - type: Transform - pos: 14.5,-46.5 - parent: 2 - uid: 22275 components: - type: Transform @@ -137825,47 +138196,12 @@ entities: - type: Transform pos: -12.5,-64.5 parent: 2 - - uid: 22295 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 44.5,-40.5 - parent: 2 - - uid: 22296 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 42.5,-46.5 - parent: 2 - uid: 22297 components: - type: Transform rot: 1.5707963267948966 rad pos: 46.5,-33.5 parent: 2 - - uid: 22298 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 47.5,-27.5 - parent: 2 - - uid: 22299 - components: - - type: Transform - pos: 49.5,-31.5 - parent: 2 - - uid: 22301 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 53.5,-34.5 - parent: 2 - - uid: 22302 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 54.5,-29.5 - parent: 2 - uid: 22304 components: - type: Transform @@ -137883,12 +138219,6 @@ entities: rot: -1.5707963267948966 rad pos: 49.5,-11.5 parent: 2 - - uid: 22307 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 57.5,-23.5 - parent: 2 - uid: 22308 components: - type: Transform @@ -137926,11 +138256,6 @@ entities: rot: -1.5707963267948966 rad pos: 52.5,12.5 parent: 2 - - uid: 22325 - components: - - type: Transform - pos: 55.5,6.5 - parent: 2 - uid: 22326 components: - type: Transform @@ -138145,6 +138470,23 @@ entities: rot: -1.5707963267948966 rad pos: -39.5,-2.5 parent: 2 + - uid: 23364 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 56.5,-23.5 + parent: 2 + - uid: 23786 + components: + - type: Transform + pos: 15.5,-50.5 + parent: 2 + - uid: 23794 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 33.5,-43.5 + parent: 2 - uid: 23855 components: - type: Transform @@ -138190,6 +138532,12 @@ entities: - type: Transform pos: -48.5,-7.5 parent: 2 + - uid: 24523 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 14.5,-48.5 + parent: 2 - uid: 24562 components: - type: Transform @@ -138243,6 +138591,12 @@ entities: - type: Transform pos: -12.5,21.5 parent: 2 + - uid: 25720 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 33.5,-35.5 + parent: 2 - uid: 25752 components: - type: Transform @@ -138266,6 +138620,17 @@ entities: rot: 3.141592653589793 rad pos: -35.5,29.5 parent: 2 + - uid: 25918 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 39.5,-36.5 + parent: 2 + - uid: 26165 + components: + - type: Transform + pos: 54.5,6.5 + parent: 2 - uid: 27127 components: - type: Transform @@ -138346,12 +138711,6 @@ entities: rot: 3.141592653589793 rad pos: 39.5,39.5 parent: 2 - - uid: 27661 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 36.5,-42.5 - parent: 2 - uid: 27675 components: - type: Transform @@ -138403,29 +138762,35 @@ entities: parent: 2 - proto: PoweredLightPostSmall entities: + - uid: 1720 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 47.5,-46.5 + parent: 2 - uid: 8930 components: - type: Transform rot: -1.5707963267948966 rad pos: -69.5,12.5 parent: 2 - - uid: 22384 + - uid: 13663 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 46.5,-41.5 + rot: 3.141592653589793 rad + pos: 53.5,-54.5 parent: 2 - - uid: 22385 + - uid: 14962 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 46.5,-46.5 + rot: 3.141592653589793 rad + pos: 56.5,-54.5 parent: 2 - - uid: 22387 + - uid: 14975 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 55.5,-45.5 + rot: 3.141592653589793 rad + pos: 57.5,-48.5 parent: 2 - uid: 22501 components: @@ -138459,6 +138824,12 @@ entities: parent: 2 - proto: PoweredlightRed entities: + - uid: 7332 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -49.5,-51.5 + parent: 2 - uid: 25613 components: - type: Transform @@ -138536,6 +138907,12 @@ entities: rot: -1.5707963267948966 rad pos: -17.5,-38.5 parent: 2 + - uid: 3794 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 56.5,-29.5 + parent: 2 - uid: 4119 components: - type: Transform @@ -138879,12 +139256,6 @@ entities: rot: -1.5707963267948966 rad pos: 17.5,-44.5 parent: 2 - - uid: 22272 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 19.5,-46.5 - parent: 2 - uid: 22273 components: - type: Transform @@ -138907,23 +139278,12 @@ entities: - type: Transform pos: 16.5,-39.5 parent: 2 - - uid: 22291 - components: - - type: Transform - pos: 35.5,-44.5 - parent: 2 - uid: 22292 components: - type: Transform rot: 3.141592653589793 rad pos: 30.5,-48.5 parent: 2 - - uid: 22300 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 53.5,-37.5 - parent: 2 - uid: 22310 components: - type: Transform @@ -139067,6 +139427,12 @@ entities: - type: Transform pos: -56.5,-34.5 parent: 2 + - uid: 23780 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 19.5,-45.5 + parent: 2 - uid: 24192 components: - type: Transform @@ -139079,6 +139445,12 @@ entities: rot: -1.5707963267948966 rad pos: 54.5,-3.5 parent: 2 + - uid: 24625 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 16.5,-48.5 + parent: 2 - uid: 25154 components: - type: Transform @@ -139383,12 +139755,6 @@ entities: rot: 3.141592653589793 rad pos: 41.5,0.5 parent: 2 - - uid: 25895 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 43.5,0.5 - parent: 2 - uid: 27751 components: - type: Transform @@ -139782,11 +140148,6 @@ entities: rot: 1.5707963267948966 rad pos: 29.5,32.5 parent: 2 - - uid: 1128 - components: - - type: Transform - pos: 35.5,-39.5 - parent: 2 - uid: 1353 components: - type: Transform @@ -139879,6 +140240,11 @@ entities: rot: -1.5707963267948966 rad pos: -46.5,-5.5 parent: 2 + - uid: 5353 + components: + - type: Transform + pos: 53.5,-32.5 + parent: 2 - uid: 5915 components: - type: Transform @@ -139938,16 +140304,6 @@ entities: - type: Transform pos: 5.5,21.5 parent: 2 - - uid: 6402 - components: - - type: Transform - pos: 54.5,6.5 - parent: 2 - - uid: 6403 - components: - - type: Transform - pos: 55.5,6.5 - parent: 2 - uid: 6542 components: - type: Transform @@ -139959,6 +140315,11 @@ entities: rot: -1.5707963267948966 rad pos: 57.5,32.5 parent: 2 + - uid: 6748 + components: + - type: Transform + pos: -44.5,-33.5 + parent: 2 - uid: 6763 components: - type: Transform @@ -139979,21 +140340,6 @@ entities: - type: Transform pos: 3.5,-40.5 parent: 2 - - uid: 6898 - components: - - type: Transform - pos: 17.5,-47.5 - parent: 2 - - uid: 6906 - components: - - type: Transform - pos: 12.5,-46.5 - parent: 2 - - uid: 6907 - components: - - type: Transform - pos: 13.5,-46.5 - parent: 2 - uid: 6996 components: - type: Transform @@ -140086,12 +140432,6 @@ entities: - type: Transform pos: -22.5,-54.5 parent: 2 - - uid: 7495 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 44.5,-40.5 - parent: 2 - uid: 7536 components: - type: Transform @@ -140133,11 +140473,6 @@ entities: rot: 1.5707963267948966 rad pos: -63.5,32.5 parent: 2 - - uid: 7711 - components: - - type: Transform - pos: 53.5,-29.5 - parent: 2 - uid: 7729 components: - type: Transform @@ -140153,6 +140488,11 @@ entities: - type: Transform pos: 48.5,-11.5 parent: 2 + - uid: 7791 + components: + - type: Transform + pos: 57.5,-32.5 + parent: 2 - uid: 8037 components: - type: Transform @@ -140535,6 +140875,11 @@ entities: - type: Transform pos: 10.5,-62.5 parent: 2 + - uid: 12734 + components: + - type: Transform + pos: 54.5,6.5 + parent: 2 - uid: 12757 components: - type: Transform @@ -140556,6 +140901,11 @@ entities: - type: Transform pos: -55.5,-12.5 parent: 2 + - uid: 13696 + components: + - type: Transform + pos: 56.5,-43.5 + parent: 2 - uid: 13707 components: - type: Transform @@ -140572,16 +140922,36 @@ entities: - type: Transform pos: -71.5,-3.5 parent: 2 - - uid: 15480 + - uid: 14969 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 49.5,37.5 + pos: 51.5,-32.5 parent: 2 - - uid: 18339 + - uid: 14989 components: - type: Transform - pos: 35.5,-41.5 + pos: 55.5,-32.5 + parent: 2 + - uid: 15027 + components: + - type: Transform + pos: 14.5,-47.5 + parent: 2 + - uid: 15038 + components: + - type: Transform + pos: 58.5,-38.5 + parent: 2 + - uid: 15041 + components: + - type: Transform + pos: 58.5,-39.5 + parent: 2 + - uid: 15480 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 49.5,37.5 parent: 2 - uid: 19708 components: @@ -140651,15 +141021,15 @@ entities: - type: Transform pos: 34.5,27.5 parent: 2 - - uid: 23877 + - uid: 23874 components: - type: Transform - pos: 35.5,-37.5 + pos: 9.5,-44.5 parent: 2 - - uid: 23878 + - uid: 23876 components: - type: Transform - pos: 38.5,-42.5 + pos: 10.5,-44.5 parent: 2 - uid: 24026 components: @@ -140794,11 +141164,6 @@ entities: rot: -1.5707963267948966 rad pos: -5.5,1.5 parent: 26286 - - uid: 27111 - components: - - type: Transform - pos: 37.5,-42.5 - parent: 2 - uid: 27484 components: - type: Transform @@ -140819,11 +141184,6 @@ entities: - type: Transform pos: -62.5,-16.5 parent: 2 - - uid: 27639 - components: - - type: Transform - pos: 35.5,-35.5 - parent: 2 - uid: 27660 components: - type: Transform @@ -140876,8 +141236,7 @@ entities: - uid: 6920 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 15.877598,-46.38861 + pos: 12.416926,-44.212353 parent: 2 - proto: RadiationCollectorNoTank entities: @@ -141010,6 +141369,12 @@ entities: - type: Transform pos: 46.5,36.5 parent: 2 + - uid: 793 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 51.5,-32.5 + parent: 2 - uid: 2964 components: - type: Transform @@ -141316,6 +141681,24 @@ entities: rot: 3.141592653589793 rad pos: 37.5,34.5 parent: 2 + - uid: 15001 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-32.5 + parent: 2 + - uid: 15006 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,-32.5 + parent: 2 + - uid: 15024 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 57.5,-32.5 + parent: 2 - uid: 15682 components: - type: Transform @@ -141345,6 +141728,12 @@ entities: rot: -1.5707963267948966 rad pos: -39.5,14.5 parent: 2 + - uid: 18145 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 55.5,-32.5 + parent: 2 - uid: 18173 components: - type: Transform @@ -141381,22 +141770,23 @@ entities: rot: -1.5707963267948966 rad pos: -39.5,19.5 parent: 2 - - uid: 18756 + - uid: 19028 components: - type: Transform rot: 3.141592653589793 rad - pos: 35.5,-37.5 + pos: 40.5,34.5 parent: 2 - - uid: 18765 + - uid: 19271 components: - type: Transform - pos: 35.5,-35.5 + rot: -1.5707963267948966 rad + pos: 57.5,-32.5 parent: 2 - - uid: 19028 + - uid: 19272 components: - type: Transform - rot: 3.141592653589793 rad - pos: 40.5,34.5 + rot: 1.5707963267948966 rad + pos: 53.5,-32.5 parent: 2 - uid: 19484 components: @@ -141465,12 +141855,6 @@ entities: rot: 1.5707963267948966 rad pos: 43.5,35.5 parent: 2 - - uid: 25161 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 35.5,-39.5 - parent: 2 - uid: 25460 components: - type: Transform @@ -141494,27 +141878,6 @@ entities: - type: Transform pos: 45.5,36.5 parent: 2 - - uid: 27657 - components: - - type: Transform - pos: 35.5,-39.5 - parent: 2 - - uid: 27658 - components: - - type: Transform - pos: 35.5,-41.5 - parent: 2 - - uid: 27662 - components: - - type: Transform - pos: 35.5,-37.5 - parent: 2 - - uid: 27663 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 35.5,-41.5 - parent: 2 - uid: 27664 components: - type: Transform @@ -141891,11 +142254,6 @@ entities: - type: Transform pos: -41.5,-6.5 parent: 2 - - uid: 7708 - components: - - type: Transform - pos: 52.5,-25.5 - parent: 2 - uid: 22471 components: - type: Transform @@ -142010,11 +142368,6 @@ entities: - type: Transform pos: 54.5,20.5 parent: 2 - - uid: 24446 - components: - - type: Transform - pos: 53.5,-35.5 - parent: 2 - uid: 24448 components: - type: Transform @@ -142043,6 +142396,18 @@ entities: - type: Transform pos: 8.5,-23.5 parent: 2 + - uid: 24860 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 48.5,-29.5 + parent: 2 + - uid: 24861 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 55.5,-27.5 + parent: 2 - uid: 25227 components: - type: Transform @@ -142159,16 +142524,6 @@ entities: - type: Transform pos: -38.5,-10.5 parent: 2 - - uid: 27088 - components: - - type: Transform - pos: 54.5,-30.5 - parent: 2 - - uid: 27089 - components: - - type: Transform - pos: 48.5,-27.5 - parent: 2 - uid: 27090 components: - type: Transform @@ -142202,12 +142557,30 @@ entities: - type: Transform pos: 39.5,-8.5 parent: 2 + - uid: 7707 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 49.5,-31.5 + parent: 2 - uid: 13156 components: - type: Transform rot: 3.141592653589793 rad pos: -45.5,-15.5 parent: 2 + - uid: 17490 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 57.5,-44.5 + parent: 2 + - uid: 19505 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 59.5,-37.5 + parent: 2 - uid: 23871 components: - type: Transform @@ -142373,20 +142746,15 @@ entities: - type: Transform pos: 44.5,-34.5 parent: 2 - - uid: 28759 - components: - - type: Transform - pos: 48.5,-30.5 - parent: 2 - uid: 28760 components: - type: Transform pos: 36.5,-34.5 parent: 2 - - uid: 28761 + - uid: 29062 components: - type: Transform - pos: 34.5,-42.5 + pos: 34.5,-43.5 parent: 2 - proto: RandomPosterLegit entities: @@ -142754,71 +143122,6 @@ entities: - type: Transform pos: 52.5,-12.5 parent: 2 - - uid: 26057 - components: - - type: Transform - pos: 51.5,-28.5 - parent: 2 - - uid: 26058 - components: - - type: Transform - pos: 51.5,-27.5 - parent: 2 - - uid: 26059 - components: - - type: Transform - pos: 59.5,-28.5 - parent: 2 - - uid: 26060 - components: - - type: Transform - pos: 50.5,-26.5 - parent: 2 - - uid: 26061 - components: - - type: Transform - pos: 53.5,-26.5 - parent: 2 - - uid: 26062 - components: - - type: Transform - pos: 50.5,-28.5 - parent: 2 - - uid: 26063 - components: - - type: Transform - pos: 46.5,-35.5 - parent: 2 - - uid: 26064 - components: - - type: Transform - pos: 49.5,-33.5 - parent: 2 - - uid: 26065 - components: - - type: Transform - pos: 40.5,-40.5 - parent: 2 - - uid: 26066 - components: - - type: Transform - pos: 42.5,-38.5 - parent: 2 - - uid: 26067 - components: - - type: Transform - pos: 40.5,-37.5 - parent: 2 - - uid: 26068 - components: - - type: Transform - pos: 43.5,-42.5 - parent: 2 - - uid: 26069 - components: - - type: Transform - pos: 35.5,-45.5 - parent: 2 - uid: 26070 components: - type: Transform @@ -142849,11 +143152,6 @@ entities: - type: Transform pos: 31.5,-47.5 parent: 2 - - uid: 26076 - components: - - type: Transform - pos: 13.5,-47.5 - parent: 2 - uid: 26077 components: - type: Transform @@ -143782,11 +144080,10 @@ entities: parent: 2 - proto: Recycler entities: - - uid: 1558 + - uid: 14656 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 43.5,-46.5 + pos: 50.5,-38.5 parent: 2 - uid: 20557 components: @@ -143794,15 +144091,18 @@ entities: rot: 1.5707963267948966 rad pos: -44.5,-42.5 parent: 2 -- proto: RefuelingWelder +- proto: ReinforcedGirder entities: - - uid: 24079 + - uid: 22387 components: - type: Transform - pos: -33.701878,1.0955396 + pos: 42.5,-47.5 + parent: 2 + - uid: 23357 + components: + - type: Transform + pos: 45.5,-45.5 parent: 2 -- proto: ReinforcedGirder - entities: - uid: 26287 components: - type: Transform @@ -143837,6 +144137,12 @@ entities: - type: Transform pos: 46.5,11.5 parent: 2 + - uid: 366 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 56.5,7.5 + parent: 2 - uid: 373 components: - type: Transform @@ -144011,51 +144317,27 @@ entities: rot: -1.5707963267948966 rad pos: 56.5,-12.5 parent: 2 - - uid: 3662 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 46.5,-42.5 - parent: 2 - - uid: 3663 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 46.5,-45.5 - parent: 2 - uid: 3702 components: - type: Transform pos: 12.5,35.5 parent: 2 - - uid: 3724 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 47.5,-45.5 - parent: 2 - uid: 3772 components: - type: Transform pos: 9.5,32.5 parent: 2 - - uid: 3785 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 56.5,-43.5 - parent: 2 - - uid: 3794 + - uid: 3827 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 56.5,-44.5 + rot: -1.5707963267948966 rad + pos: 63.5,-28.5 parent: 2 - - uid: 3797 + - uid: 3830 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 47.5,-42.5 + rot: -1.5707963267948966 rad + pos: 63.5,-27.5 parent: 2 - uid: 3960 components: @@ -144086,6 +144368,12 @@ entities: rot: 3.141592653589793 rad pos: -39.5,10.5 parent: 2 + - uid: 4256 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 48.5,-28.5 + parent: 2 - uid: 4552 components: - type: Transform @@ -144321,45 +144609,17 @@ entities: - type: Transform pos: 12.5,36.5 parent: 2 - - uid: 7643 - components: - - type: Transform - pos: 51.5,-30.5 - parent: 2 - - uid: 7644 - components: - - type: Transform - pos: 52.5,-30.5 - parent: 2 - - uid: 7645 - components: - - type: Transform - pos: 53.5,-30.5 - parent: 2 - - uid: 7646 - components: - - type: Transform - pos: 55.5,-32.5 - parent: 2 - - uid: 7647 - components: - - type: Transform - pos: 55.5,-33.5 - parent: 2 - - uid: 7648 - components: - - type: Transform - pos: 48.5,-33.5 - parent: 2 - - uid: 7649 + - uid: 7579 components: - type: Transform - pos: 48.5,-35.5 + rot: 3.141592653589793 rad + pos: 58.5,-24.5 parent: 2 - - uid: 7650 + - uid: 7610 components: - type: Transform - pos: 48.5,-34.5 + rot: 3.141592653589793 rad + pos: 48.5,-26.5 parent: 2 - uid: 7808 components: @@ -144668,11 +144928,6 @@ entities: - type: Transform pos: 14.5,-49.5 parent: 2 - - uid: 9291 - components: - - type: Transform - pos: 15.5,-49.5 - parent: 2 - uid: 9292 components: - type: Transform @@ -145069,6 +145324,54 @@ entities: rot: -1.5707963267948966 rad pos: -38.5,-5.5 parent: 2 + - uid: 14699 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 18.5,-46.5 + parent: 2 + - uid: 14949 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 63.5,-29.5 + parent: 2 + - uid: 15011 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,-24.5 + parent: 2 + - uid: 15014 + components: + - type: Transform + pos: 51.5,-31.5 + parent: 2 + - uid: 15015 + components: + - type: Transform + pos: 59.5,-35.5 + parent: 2 + - uid: 15016 + components: + - type: Transform + pos: 52.5,-31.5 + parent: 2 + - uid: 15017 + components: + - type: Transform + pos: 59.5,-33.5 + parent: 2 + - uid: 15018 + components: + - type: Transform + pos: 59.5,-41.5 + parent: 2 + - uid: 15019 + components: + - type: Transform + pos: 59.5,-34.5 + parent: 2 - uid: 15036 components: - type: Transform @@ -145079,6 +145382,12 @@ entities: - type: Transform pos: -58.5,25.5 parent: 2 + - uid: 15044 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 15.5,-47.5 + parent: 2 - uid: 15752 components: - type: Transform @@ -145109,6 +145418,12 @@ entities: rot: 3.141592653589793 rad pos: -2.5,13.5 parent: 2 + - uid: 17771 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 60.5,-24.5 + parent: 2 - uid: 17876 components: - type: Transform @@ -145127,6 +145442,36 @@ entities: rot: 3.141592653589793 rad pos: -39.5,8.5 parent: 2 + - uid: 18089 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 56.5,-46.5 + parent: 2 + - uid: 18090 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 56.5,-45.5 + parent: 2 + - uid: 18091 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,-47.5 + parent: 2 + - uid: 18093 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 56.5,-47.5 + parent: 2 + - uid: 18127 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,-45.5 + parent: 2 - uid: 18181 components: - type: Transform @@ -145181,6 +145526,35 @@ entities: rot: -1.5707963267948966 rad pos: 41.5,38.5 parent: 2 + - uid: 19479 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,-46.5 + parent: 2 + - uid: 19481 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 15.5,-46.5 + parent: 2 + - uid: 19496 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 18.5,-47.5 + parent: 2 + - uid: 19506 + components: + - type: Transform + pos: 59.5,-40.5 + parent: 2 + - uid: 20272 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 55.5,7.5 + parent: 2 - uid: 20351 components: - type: Transform @@ -145431,48 +145805,18 @@ entities: rot: 1.5707963267948966 rad pos: 58.5,-14.5 parent: 2 - - uid: 21109 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 54.5,-24.5 - parent: 2 - - uid: 21110 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 53.5,-24.5 - parent: 2 - uid: 21111 components: - type: Transform rot: 1.5707963267948966 rad pos: 52.5,-24.5 parent: 2 - - uid: 21112 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 50.5,-24.5 - parent: 2 - uid: 21113 components: - type: Transform rot: 1.5707963267948966 rad pos: 51.5,-24.5 parent: 2 - - uid: 21114 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 48.5,-29.5 - parent: 2 - - uid: 21115 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 48.5,-28.5 - parent: 2 - uid: 21119 components: - type: Transform @@ -145521,12 +145865,6 @@ entities: rot: 1.5707963267948966 rad pos: 37.5,-34.5 parent: 2 - - uid: 21131 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 34.5,-39.5 - parent: 2 - uid: 21132 components: - type: Transform @@ -146667,6 +147005,23 @@ entities: rot: 1.5707963267948966 rad pos: -1.5,-39.5 parent: 2 + - uid: 22295 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 54.5,-55.5 + parent: 2 + - uid: 22296 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-55.5 + parent: 2 + - uid: 22384 + components: + - type: Transform + pos: 53.5,-31.5 + parent: 2 - uid: 22404 components: - type: Transform @@ -146947,6 +147302,11 @@ entities: rot: -1.5707963267948966 rad pos: -38.5,-7.5 parent: 2 + - uid: 23363 + components: + - type: Transform + pos: 59.5,-39.5 + parent: 2 - uid: 23369 components: - type: Transform @@ -146957,6 +147317,18 @@ entities: - type: Transform pos: 65.5,-21.5 parent: 2 + - uid: 23778 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 61.5,-24.5 + parent: 2 + - uid: 23783 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 12.5,-49.5 + parent: 2 - uid: 23894 components: - type: Transform @@ -147273,16 +147645,6 @@ entities: - type: Transform pos: -20.5,9.5 parent: 2 - - uid: 28352 - components: - - type: Transform - pos: 48.5,-45.5 - parent: 2 - - uid: 28353 - components: - - type: Transform - pos: 48.5,-42.5 - parent: 2 - uid: 28534 components: - type: Transform @@ -147749,6 +148111,11 @@ entities: parent: 2 - proto: RemoteSignaller entities: + - uid: 3864 + components: + - type: Transform + pos: -35.49171,34.544983 + parent: 2 - uid: 7148 components: - type: Transform @@ -147785,13 +148152,29 @@ entities: - uid: 6339 components: - type: Transform - pos: 7.3038583,20.546959 + pos: 5.694502,21.418985 parent: 2 + - type: Blocking + blockingToggleActionEntity: 20971 + - type: ActionsContainer + - type: ContainerContainer + containers: + actions: !type:Container + ents: + - 20971 - uid: 6340 components: - type: Transform - pos: 7.6319833,20.546959 + pos: 5.272627,21.43461 parent: 2 + - type: Blocking + blockingToggleActionEntity: 20972 + - type: ActionsContainer + - type: ContainerContainer + containers: + actions: !type:Container + ents: + - 20972 - proto: RiotLaserShield entities: - uid: 6343 @@ -147832,23 +148215,32 @@ entities: - type: Transform pos: 7.7726083,20.562584 parent: 2 + - uid: 29034 + components: + - type: Transform + pos: 7.569502,20.49711 + parent: 2 - proto: RobocopCircuitBoard entities: - uid: 21593 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -8.230682,73.67654 + pos: -9.130649,73.82272 parent: 2 - proto: RollerBed entities: - - uid: 6910 + - uid: 7694 components: - type: Transform - pos: 15.484231,-48.42117 + pos: 13.64172,-44.21803 parent: 2 - proto: RubberStampApproved entities: + - uid: 3680 + components: + - type: Transform + pos: 61.109486,-28.163927 + parent: 2 - uid: 24520 components: - type: Transform @@ -147857,11 +148249,6 @@ entities: - type: CollisionWake enabled: False - type: Conveyed - - uid: 24522 - components: - - type: Transform - pos: 52.297543,-32.626396 - parent: 2 - uid: 24524 components: - type: Transform @@ -147869,15 +148256,15 @@ entities: parent: 2 - proto: RubberStampDenied entities: - - uid: 24521 + - uid: 7581 components: - type: Transform - pos: 49.535725,-17.445164 + pos: 61.27355,-28.492052 parent: 2 - - uid: 24523 + - uid: 24521 components: - type: Transform - pos: 52.328793,-32.73577 + pos: 49.535725,-17.445164 parent: 2 - uid: 24525 components: @@ -147954,20 +148341,28 @@ entities: rot: 1.5707963267948966 rad pos: 3.5,4.5 parent: 26470 -- proto: SalvageLootSpawner +- proto: SalvageMagnet entities: - - uid: 7713 + - uid: 13662 components: - type: Transform - pos: 53.5,-29.5 + pos: 55.5,-54.5 parent: 2 -- proto: SalvageMagnet +- proto: SalvageSpawnerScrapCommon entities: - - uid: 3786 + - uid: 27524 components: - type: Transform rot: 1.5707963267948966 rad - pos: 55.5,-43.5 + pos: 41.5,-45.5 + parent: 2 +- proto: SalvageSpawnerScrapValuable75 + entities: + - uid: 27527 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 43.5,-43.5 parent: 2 - proto: Saw entities: @@ -148057,11 +148452,6 @@ entities: parent: 2 - proto: ScrapCamera entities: - - uid: 1287 - components: - - type: Transform - pos: 59.60926,-26.709564 - parent: 2 - uid: 24046 components: - type: Transform @@ -148094,11 +148484,6 @@ entities: parent: 26286 - proto: ScrapCloset entities: - - uid: 9603 - components: - - type: Transform - pos: 58.51551,-28.63144 - parent: 2 - uid: 17853 components: - type: Transform @@ -148114,11 +148499,6 @@ entities: - type: Transform pos: 67.49752,41.701756 parent: 2 - - uid: 24067 - components: - - type: Transform - pos: 57.76551,-25.897064 - parent: 1 - uid: 24802 components: - type: Transform @@ -148183,6 +148563,13 @@ entities: - type: Transform pos: 17.473934,46.218113 parent: 2 +- proto: ScrapGeneratorPlasma + entities: + - uid: 27635 + components: + - type: Transform + pos: 40.5,-46.5 + parent: 2 - proto: ScrapGlass entities: - uid: 24417 @@ -148235,16 +148622,6 @@ entities: parent: 26286 - proto: ScrapSteel entities: - - uid: 782 - components: - - type: Transform - pos: 59.593636,-31.709564 - parent: 2 - - uid: 1271 - components: - - type: Transform - pos: 57.73426,-26.28769 - parent: 2 - uid: 3342 components: - type: Transform @@ -148587,31 +148964,6 @@ entities: parent: 2 - proto: ShardGlassPlasma entities: - - uid: 1351 - components: - - type: Transform - pos: 55.60926,-26.678314 - parent: 2 - - uid: 1720 - components: - - type: Transform - pos: 57.593636,-29.928314 - parent: 2 - - uid: 2113 - components: - - type: Transform - pos: 60.468636,-30.490814 - parent: 2 - - uid: 2661 - components: - - type: Transform - pos: 58.53533,-27.300344 - parent: 2 - - uid: 7527 - components: - - type: Transform - pos: 55.17176,-27.490814 - parent: 2 - uid: 9293 components: - type: Transform @@ -148642,16 +148994,6 @@ entities: - type: Transform pos: 20.040804,-41.59796 parent: 2 - - uid: 10537 - components: - - type: Transform - pos: 55.499886,-28.41269 - parent: 2 - - uid: 10769 - components: - - type: Transform - pos: 57.906136,-26.75644 - parent: 2 - uid: 11840 components: - type: Transform @@ -148667,18 +149009,6 @@ entities: - type: Transform pos: -41.76837,-0.58632684 parent: 2 - - uid: 21805 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -12.584422,45.753834 - parent: 2 - - uid: 21808 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -13.709422,46.30071 - parent: 2 - uid: 23261 components: - type: Transform @@ -148889,17 +149219,6 @@ entities: rot: 1.5707963267948966 rad pos: -20.145008,40.52833 parent: 2 - - uid: 24422 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -19.441883,42.18458 - parent: 2 - - uid: 24625 - components: - - type: Transform - pos: -4.4299264,7.4896183 - parent: 2 - uid: 24626 components: - type: Transform @@ -149012,12 +149331,12 @@ entities: - uid: 6434 components: - type: Transform - pos: 54.289257,6.60191 + pos: 52.748756,11.515392 parent: 2 - uid: 6435 components: - type: Transform - pos: 54.593945,6.6253476 + pos: 52.436256,11.156017 parent: 2 - uid: 6584 components: @@ -149145,7 +149464,7 @@ entities: - uid: 6436 components: - type: Transform - pos: 54.45332,6.5784726 + pos: 52.280006,11.499767 parent: 2 - uid: 6758 components: @@ -149211,20 +149530,15 @@ entities: - type: Transform pos: 5.4082417,18.625877 parent: 2 - - uid: 6437 - components: - - type: Transform - pos: 55.367382,6.5315976 - parent: 2 - uid: 6438 components: - type: Transform - pos: 55.789257,6.4847226 + pos: 52.76438,10.827892 parent: 2 - uid: 6439 components: - type: Transform - pos: 55.601757,6.461285 + pos: 52.38938,10.624767 parent: 2 - uid: 6583 components: @@ -149236,11 +149550,6 @@ entities: - type: Transform pos: -52.63497,20.533602 parent: 2 - - uid: 7332 - components: - - type: Transform - pos: -60.617302,6.6463737 - parent: 2 - uid: 7333 components: - type: Transform @@ -149303,21 +149612,6 @@ entities: parent: 2 - proto: SheetSteel1 entities: - - uid: 1324 - components: - - type: Transform - pos: 59.48426,-30.615814 - parent: 2 - - uid: 1342 - components: - - type: Transform - pos: 58.613457,-27.84722 - parent: 2 - - uid: 1690 - components: - - type: Transform - pos: 55.45301,-27.772064 - parent: 2 - uid: 7679 components: - type: Transform @@ -149328,26 +149622,11 @@ entities: - type: Transform pos: -25.45158,-66.27137 parent: 2 - - uid: 7716 - components: - - type: Transform - pos: 57.95301,-28.928314 - parent: 2 - - uid: 8928 - components: - - type: Transform - pos: 57.656136,-27.56894 - parent: 2 - uid: 9509 components: - type: Transform pos: 17.938139,-62.583115 parent: 2 - - uid: 22431 - components: - - type: Transform - pos: 58.656136,-26.459564 - parent: 2 - uid: 24022 components: - type: Transform @@ -150451,6 +150730,13 @@ entities: fixtures: {} - proto: SignCans entities: + - uid: 6749 + components: + - type: Transform + pos: -42.5,31.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 23557 components: - type: Transform @@ -150528,6 +150814,13 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 12733 + components: + - type: Transform + pos: -9.5,-14.5 + parent: 2 + - type: Fixtures + fixtures: {} - proto: SignChem entities: - uid: 16351 @@ -150986,6 +151279,14 @@ entities: fixtures: {} - proto: SignDirectionalHop entities: + - uid: 15214 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 39.501858,2.8842359 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 23588 components: - type: Transform @@ -151018,14 +151319,6 @@ entities: parent: 2 - type: Fixtures fixtures: {} - - uid: 23772 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 39.51229,2.909207 - parent: 2 - - type: Fixtures - fixtures: {} - proto: SignDirectionalHydro entities: - uid: 23595 @@ -151217,6 +151510,14 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 12488 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 39.486233,2.7123609 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 23589 components: - type: Transform @@ -151248,14 +151549,6 @@ entities: parent: 2 - type: Fixtures fixtures: {} - - uid: 23635 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 39.51229,2.721707 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 27630 components: - type: Transform @@ -152187,34 +152480,34 @@ entities: fixtures: {} - proto: SignSalvage entities: - - uid: 7494 + - uid: 738 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 45.5,-34.5 + rot: -1.5707963267948966 rad + pos: 45.5,-33.5 parent: 2 - type: Fixtures fixtures: {} - - uid: 23555 + - uid: 7713 components: - type: Transform - pos: 34.5,-48.5 + rot: 1.5707963267948966 rad + pos: 45.5,-38.5 parent: 2 - type: Fixtures fixtures: {} - - uid: 27499 + - uid: 23358 components: - type: Transform rot: -1.5707963267948966 rad - pos: 40.5,-34.5 + pos: 48.5,-35.5 parent: 2 - type: Fixtures fixtures: {} - - uid: 27500 + - uid: 23555 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 34.5,-40.5 + pos: 34.5,-48.5 parent: 2 - type: Fixtures fixtures: {} @@ -152450,6 +152743,12 @@ entities: rot: 3.141592653589793 rad pos: -40.5,-17.5 parent: 2 + - uid: 29060 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 35.5,-42.5 + parent: 2 - proto: SinkWide entities: - uid: 682 @@ -154832,6 +155131,16 @@ entities: parent: 2 - proto: SpaceCash100 entities: + - uid: 2773 + components: + - type: Transform + pos: 61.53136,-28.70299 + parent: 2 + - uid: 2781 + components: + - type: Transform + pos: 61.414173,-28.820177 + parent: 2 - uid: 5100 components: - type: Transform @@ -154859,35 +155168,10 @@ entities: - type: Transform pos: -59.391052,19.024355 parent: 2 - - uid: 7601 - components: - - type: Transform - pos: 38.51994,-38.98271 - parent: 2 - - uid: 7602 - components: - - type: Transform - pos: 38.684002,-39.146774 - parent: 2 - - uid: 7603 - components: - - type: Transform - pos: 38.566814,-39.310837 - parent: 2 - - uid: 7628 - components: - - type: Transform - pos: 52.46852,-33.803104 - parent: 2 - - uid: 7640 - components: - - type: Transform - pos: 52.46852,-33.521854 - parent: 2 - - uid: 7641 + - uid: 7582 components: - type: Transform - pos: 52.671646,-33.803104 + pos: 61.43761,-28.98424 parent: 2 - uid: 10419 components: @@ -154924,6 +155208,21 @@ entities: - type: Transform pos: -68.34518,1.5005822 parent: 2 + - uid: 14995 + components: + - type: Transform + pos: 53.553932,-37.200035 + parent: 2 + - uid: 14996 + components: + - type: Transform + pos: 53.624245,-37.364098 + parent: 2 + - uid: 20402 + components: + - type: Transform + pos: 53.57737,-36.96566 + parent: 2 - proto: SpaceCash1000 entities: - uid: 8208 @@ -155149,10 +155448,10 @@ entities: parent: 2 - proto: SpawnMobRaccoonMorticia entities: - - uid: 7710 + - uid: 8413 components: - type: Transform - pos: 52.5,-27.5 + pos: 59.5,-26.5 parent: 2 - proto: SpawnMobShiva entities: @@ -155269,11 +155568,6 @@ entities: - type: Transform pos: 59.5,-13.5 parent: 2 - - uid: 28814 - components: - - type: Transform - pos: 50.5,-25.5 - parent: 2 - proto: SpawnPointChaplain entities: - uid: 26875 @@ -155361,6 +155655,16 @@ entities: parent: 2 - proto: SpawnPointJanitor entities: + - uid: 24818 + components: + - type: Transform + pos: -3.5,-22.5 + parent: 2 + - uid: 24819 + components: + - type: Transform + pos: -3.5,-23.5 + parent: 2 - uid: 26873 components: - type: Transform @@ -155464,15 +155768,15 @@ entities: parent: 2 - proto: SpawnPointParamedic entities: - - uid: 26905 + - uid: 17486 components: - type: Transform - pos: 16.5,-46.5 + pos: 13.5,-46.5 parent: 2 - - uid: 26906 + - uid: 17782 components: - type: Transform - pos: 16.5,-48.5 + pos: 13.5,-48.5 parent: 2 - proto: SpawnPointPassenger entities: @@ -155508,10 +155812,10 @@ entities: parent: 2 - proto: SpawnPointQuartermaster entities: - - uid: 26896 + - uid: 13638 components: - type: Transform - pos: 53.5,-37.5 + pos: 56.5,-29.5 parent: 2 - proto: SpawnPointReporter entities: @@ -155546,25 +155850,25 @@ entities: parent: 2 - proto: SpawnPointSalvageSpecialist entities: - - uid: 26901 + - uid: 3690 components: - type: Transform - pos: 36.5,-45.5 + pos: 47.5,-40.5 parent: 2 - - uid: 26902 + - uid: 13549 components: - type: Transform - pos: 34.5,-45.5 + pos: 47.5,-39.5 parent: 2 - - uid: 26903 + - uid: 13640 components: - type: Transform - pos: 33.5,-45.5 + pos: 47.5,-38.5 parent: 2 - - uid: 26904 + - uid: 25028 components: - type: Transform - pos: 35.5,-45.5 + pos: 47.5,-41.5 parent: 2 - proto: SpawnPointScientist entities: @@ -155938,15 +156242,16 @@ entities: parent: 2 - proto: StationAiUploadComputer entities: - - uid: 9217 + - uid: 9218 components: - type: Transform - pos: -9.5,73.5 + pos: -6.5,73.5 parent: 2 - - uid: 9218 + - uid: 29063 components: - type: Transform - pos: -6.5,73.5 + rot: 3.141592653589793 rad + pos: -6.5,70.5 parent: 2 - proto: StationAnchor entities: @@ -155960,8 +156265,7 @@ entities: - uid: 21594 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -8.293182,73.55154 + pos: -9.661899,73.85397 parent: 2 - proto: StationMap entities: @@ -156299,6 +156603,18 @@ entities: - type: Transform pos: -53.5,-39.5 parent: 2 + - uid: 29012 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -37.5,-24.5 + parent: 2 + - uid: 29013 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -35.5,-24.5 + parent: 2 - proto: StorageCanister entities: - uid: 1781 @@ -156986,25 +157302,25 @@ entities: parent: 2 - proto: SuitStorageSalv entities: - - uid: 25196 + - uid: 821 components: - type: Transform - pos: 35.5,-40.5 + pos: 56.5,-32.5 parent: 2 - - uid: 25676 + - uid: 4569 components: - type: Transform - pos: 35.5,-36.5 + pos: 58.5,-32.5 parent: 2 - - uid: 25876 + - uid: 4835 components: - type: Transform - pos: 35.5,-42.5 + pos: 54.5,-32.5 parent: 2 - - uid: 25911 + - uid: 5375 components: - type: Transform - pos: 35.5,-38.5 + pos: 52.5,-32.5 parent: 2 - proto: SuitStorageSec entities: @@ -157739,6 +158055,27 @@ entities: id: power storage - proto: SurveillanceCameraGeneral entities: + - uid: 824 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 39.5,-36.5 + parent: 2 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraGeneral + nameSet: True + id: reading room + - uid: 2338 + components: + - type: Transform + pos: 40.5,-33.5 + parent: 2 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraGeneral + nameSet: True + id: Hallway southeast 2 - uid: 9922 components: - type: Transform @@ -157961,6 +158298,27 @@ entities: - SurveillanceCameraGeneral nameSet: True id: plaza south + - uid: 27108 + components: + - type: Transform + pos: 30.5,-43.5 + parent: 2 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraGeneral + nameSet: True + id: Hallway southeast 1 + - uid: 27111 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 42.5,-22.5 + parent: 2 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraGeneral + nameSet: True + id: hallway southeast 3 - uid: 27988 components: - type: Transform @@ -158137,6 +158495,17 @@ entities: - SurveillanceCameraMedical nameSet: True id: medical supply closet + - uid: 14986 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 9.5,-45.5 + parent: 2 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraMedical + nameSet: True + id: Interyne - Paramedics - uid: 20207 components: - type: Transform @@ -158180,17 +158549,6 @@ entities: - SurveillanceCameraMedical nameSet: True id: west surgery - - uid: 22639 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 16.5,-46.5 - parent: 2 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraMedical - nameSet: True - id: 'Paramedics ' - uid: 22641 components: - type: Transform @@ -158290,47 +158648,6 @@ entities: - SurveillanceCameraMedical nameSet: True id: general hall 6 - - uid: 22697 - components: - - type: Transform - pos: 30.5,-43.5 - parent: 2 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraMedical - nameSet: True - id: general junction - - uid: 22698 - components: - - type: Transform - pos: 31.5,-48.5 - parent: 2 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraMedical - nameSet: True - id: east breakroom - - uid: 22701 - components: - - type: Transform - pos: 39.5,-33.5 - parent: 2 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraMedical - nameSet: True - id: general hall 7 - - uid: 22702 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 42.5,-24.5 - parent: 2 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraMedical - nameSet: True - id: general hall 8 - uid: 22715 components: - type: Transform @@ -158352,6 +158669,17 @@ entities: - SurveillanceCameraMedical nameSet: True id: Interdyne locker room + - uid: 27519 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,-31.5 + parent: 2 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraMedical + nameSet: True + id: asteroid south bridge - uid: 27522 components: - type: Transform @@ -158374,6 +158702,13 @@ entities: - SurveillanceCameraMedical nameSet: True id: hall west med +- proto: SurveillanceCameraRouterCircuitboard + entities: + - uid: 1344 + components: + - type: Transform + pos: -44.50775,-33.586117 + parent: 2 - proto: SurveillanceCameraRouterCommand entities: - uid: 11982 @@ -158995,6 +159330,27 @@ entities: - SurveillanceCameraService nameSet: True id: asteroid center south + - uid: 27499 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -20.5,-4.5 + parent: 2 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraService + nameSet: True + id: Courtroom + - uid: 27500 + components: + - type: Transform + pos: -8.5,-5.5 + parent: 2 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraService + nameSet: True + id: Cybersun legal department - uid: 28065 components: - type: Transform @@ -159019,81 +159375,69 @@ entities: - SurveillanceCameraSupply nameSet: True id: DONK co. cargo bay - - uid: 7717 - components: - - type: Transform - pos: 50.5,-29.5 - parent: 2 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraSupply - nameSet: True - id: DONK. co breakroom - - uid: 22655 + - uid: 7590 components: - type: Transform rot: 3.141592653589793 rad - pos: 35.5,-44.5 + pos: 47.5,-38.5 parent: 2 - type: SurveillanceCamera setupAvailableNetworks: - SurveillanceCameraSupply nameSet: True - id: Salvage lockers - - uid: 22656 + id: Salvage locker room + - uid: 13635 components: - type: Transform rot: -1.5707963267948966 rad - pos: 40.5,-44.5 + pos: 59.5,-27.5 parent: 2 - type: SurveillanceCamera setupAvailableNetworks: - SurveillanceCameraSupply nameSet: True - id: salvage bay south - - uid: 22657 + id: Donk co. - Qm's office + - uid: 15020 components: - type: Transform - rot: 3.141592653589793 rad - pos: 43.5,-35.5 + rot: 1.5707963267948966 rad + pos: 58.5,-38.5 parent: 2 - type: SurveillanceCamera setupAvailableNetworks: - SurveillanceCameraSupply nameSet: True - id: salvage bay north - - uid: 22658 + id: Donk co. - salvage + - uid: 22661 components: - type: Transform rot: 1.5707963267948966 rad - pos: 47.5,-31.5 + pos: 49.5,-15.5 parent: 2 - type: SurveillanceCamera setupAvailableNetworks: - SurveillanceCameraSupply nameSet: True - id: Donk co. south hall - - uid: 22659 + id: Donk co. front + - uid: 23365 components: + - type: MetaData + name: Donk co. - salvage arm - type: Transform - pos: 51.5,-34.5 + rot: 1.5707963267948966 rad + pos: 55.5,-52.5 parent: 2 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraSupply - nameSet: True - id: QM's office - - uid: 22661 + - uid: 24857 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 49.5,-15.5 + rot: -1.5707963267948966 rad + pos: 49.5,-29.5 parent: 2 - type: SurveillanceCamera setupAvailableNetworks: - SurveillanceCameraSupply nameSet: True - id: Donk co. front + id: Donk co. breakroom - uid: 25786 components: - type: Transform @@ -159116,16 +159460,17 @@ entities: - SurveillanceCameraSupply nameSet: True id: DONK co. cargo dock - - uid: 28080 + - uid: 27099 components: - type: Transform - pos: 53.5,-44.5 + rot: 1.5707963267948966 rad + pos: 47.5,-31.5 parent: 2 - type: SurveillanceCamera setupAvailableNetworks: - SurveillanceCameraSupply nameSet: True - id: salvage dock + id: Donk co. hall - proto: SurveillanceCameraWirelessRouterConstructed entities: - uid: 7024 @@ -159142,10 +159487,10 @@ entities: parent: 2 - proto: SurvivalKnife entities: - - uid: 7584 + - uid: 18756 components: - type: Transform - pos: 38.468285,-40.032074 + pos: 54.350807,-37.410973 parent: 2 - proto: SyndicateBusinessCard entities: @@ -159182,52 +159527,22 @@ entities: parent: 2 - proto: SyndicateMicrowave entities: - - uid: 866 - components: - - type: Transform - pos: -22.5,-44.5 - parent: 2 - - uid: 5869 - components: - - type: Transform - pos: -3.5,17.5 - parent: 2 - - uid: 6036 - components: - - type: Transform - pos: 19.5,8.5 - parent: 2 - uid: 6165 components: - type: Transform pos: 6.5,-9.5 parent: 2 - - uid: 6420 - components: - - type: Transform - pos: 55.5,14.5 - parent: 2 - - uid: 7337 - components: - - type: Transform - pos: -57.5,15.5 - parent: 2 - - uid: 7594 - components: - - type: Transform - pos: 39.5,-40.5 - parent: 2 - - uid: 21977 + - uid: 7688 components: - type: Transform - pos: 49.5,-29.5 + pos: 54.5,-25.5 parent: 2 - proto: SyndicateShuttleConsoleCircuitboard entities: - - uid: 7572 + - uid: 7792 components: - type: Transform - pos: 36.510086,-46.425686 + pos: 46.468506,-40.74081 parent: 2 - uid: 10820 components: @@ -159349,6 +159664,11 @@ entities: rot: 3.141592653589793 rad pos: 62.5,39.5 parent: 2 + - uid: 820 + components: + - type: Transform + pos: 53.5,-37.5 + parent: 2 - uid: 1463 components: - type: Transform @@ -159360,12 +159680,6 @@ entities: - type: Transform pos: 46.5,8.5 parent: 2 - - uid: 1662 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 40.5,-35.5 - parent: 2 - uid: 1704 components: - type: Transform @@ -159388,12 +159702,6 @@ entities: rot: 1.5707963267948966 rad pos: -58.5,-2.5 parent: 2 - - uid: 2781 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 39.5,-35.5 - parent: 2 - uid: 3202 components: - type: Transform @@ -159804,23 +160112,25 @@ entities: rot: -1.5707963267948966 rad pos: -2.5,-57.5 parent: 2 - - uid: 7484 + - uid: 7490 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 36.5,-46.5 + pos: 54.5,-36.5 parent: 2 - - uid: 7497 + - uid: 7491 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 38.5,-46.5 + pos: 54.5,-37.5 parent: 2 - - uid: 7498 + - uid: 7493 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 37.5,-46.5 + pos: 55.5,-37.5 + parent: 2 + - uid: 7497 + components: + - type: Transform + pos: 49.5,-35.5 parent: 2 - uid: 7522 components: @@ -159833,65 +160143,23 @@ entities: - type: Transform pos: 45.5,-14.5 parent: 2 - - uid: 7565 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 38.5,-38.5 - parent: 2 - - uid: 7566 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 38.5,-39.5 - parent: 2 - - uid: 7567 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 38.5,-40.5 - parent: 2 - - uid: 7568 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 39.5,-38.5 - parent: 2 - - uid: 7569 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 39.5,-40.5 - parent: 2 - - uid: 7570 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 39.5,-39.5 - parent: 2 - - uid: 7674 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 52.5,-25.5 - parent: 2 - - uid: 7688 + - uid: 7595 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 51.5,-26.5 + rot: -1.5707963267948966 rad + pos: 46.5,-41.5 parent: 2 - - uid: 7692 + - uid: 7596 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 51.5,-25.5 + rot: -1.5707963267948966 rad + pos: 46.5,-42.5 parent: 2 - - uid: 7694 + - uid: 7690 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 52.5,-26.5 + rot: 3.141592653589793 rad + pos: 50.5,-25.5 parent: 2 - uid: 7701 components: @@ -159899,17 +160167,11 @@ entities: rot: 1.5707963267948966 rad pos: 45.5,-13.5 parent: 2 - - uid: 7705 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 49.5,-29.5 - parent: 2 - - uid: 7706 + - uid: 7720 components: - type: Transform rot: -1.5707963267948966 rad - pos: 50.5,-29.5 + pos: 46.5,-40.5 parent: 2 - uid: 7728 components: @@ -160100,6 +160362,11 @@ entities: - type: Transform pos: 65.5,24.5 parent: 2 + - uid: 13633 + components: + - type: Transform + pos: 49.5,-36.5 + parent: 2 - uid: 13792 components: - type: Transform @@ -160110,12 +160377,64 @@ entities: - type: Transform pos: 9.5,-34.5 parent: 2 + - uid: 14983 + components: + - type: Transform + pos: 55.5,-36.5 + parent: 2 + - uid: 14991 + components: + - type: Transform + pos: 53.5,-36.5 + parent: 2 + - uid: 15023 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 62.5,-23.5 + parent: 2 + - uid: 15045 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 9.5,-49.5 + parent: 2 + - uid: 15047 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 51.5,-26.5 + parent: 2 + - uid: 15052 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 50.5,-26.5 + parent: 2 + - uid: 17478 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 54.5,-25.5 + parent: 2 + - uid: 17482 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 54.5,-26.5 + parent: 2 - uid: 18772 components: - type: Transform rot: -1.5707963267948966 rad pos: 48.5,27.5 parent: 2 + - uid: 19486 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 10.5,-49.5 + parent: 2 - uid: 20662 components: - type: Transform @@ -160146,6 +160465,12 @@ entities: rot: 3.141592653589793 rad pos: 66.5,33.5 parent: 2 + - uid: 24114 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 51.5,-25.5 + parent: 2 - uid: 24308 components: - type: Transform @@ -160204,12 +160529,6 @@ entities: rot: 3.141592653589793 rad pos: 62.5,-22.5 parent: 2 - - uid: 27519 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 61.5,-22.5 - parent: 2 - uid: 28683 components: - type: Transform @@ -160573,16 +160892,6 @@ entities: rot: 1.5707963267948966 rad pos: -13.5,-46.5 parent: 2 - - uid: 6904 - components: - - type: Transform - pos: 15.5,-46.5 - parent: 2 - - uid: 6905 - components: - - type: Transform - pos: 14.5,-46.5 - parent: 2 - uid: 6962 components: - type: Transform @@ -160595,6 +160904,11 @@ entities: rot: 3.141592653589793 rad pos: 7.5,-43.5 parent: 2 + - uid: 7719 + components: + - type: Transform + pos: 11.5,-44.5 + parent: 2 - uid: 7992 components: - type: Transform @@ -160617,6 +160931,11 @@ entities: - type: Transform pos: -3.5,6.5 parent: 2 + - uid: 23796 + components: + - type: Transform + pos: 12.5,-44.5 + parent: 2 - uid: 24357 components: - type: Transform @@ -161193,6 +161512,11 @@ entities: rot: 1.5707963267948966 rad pos: 50.5,28.5 parent: 2 + - uid: 20580 + components: + - type: Transform + pos: -7.5,-15.5 + parent: 2 - uid: 21420 components: - type: Transform @@ -161221,11 +161545,31 @@ entities: - type: Transform pos: -1.5,48.5 parent: 2 + - uid: 21959 + components: + - type: Transform + pos: -8.5,-9.5 + parent: 2 + - uid: 21960 + components: + - type: Transform + pos: -8.5,-8.5 + parent: 2 + - uid: 22004 + components: + - type: Transform + pos: -8.5,-10.5 + parent: 2 - uid: 22293 components: - type: Transform pos: 34.5,49.5 parent: 2 + - uid: 22325 + components: + - type: Transform + pos: -8.5,-15.5 + parent: 2 - uid: 22389 components: - type: Transform @@ -161314,6 +161658,18 @@ entities: - type: Transform pos: -51.5,-44.5 parent: 2 + - uid: 25857 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 52.5,10.5 + parent: 2 + - uid: 25870 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 52.5,11.5 + parent: 2 - uid: 26031 components: - type: Transform @@ -161564,11 +161920,6 @@ entities: - type: Transform pos: -8.5,73.5 parent: 2 - - uid: 9241 - components: - - type: Transform - pos: -7.5,73.5 - parent: 2 - uid: 9247 components: - type: Transform @@ -161592,6 +161943,12 @@ entities: - type: Transform pos: 4.5,-53.5 parent: 2 + - uid: 21579 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -9.5,70.5 + parent: 2 - uid: 28609 components: - type: Transform @@ -161612,6 +161969,24 @@ entities: - type: Transform pos: -4.5,72.5 parent: 2 + - uid: 28761 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -9.5,73.5 + parent: 2 + - uid: 29011 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -36.5,-24.5 + parent: 2 + - uid: 29067 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -8.5,70.5 + parent: 2 - proto: TableReinforcedGlass entities: - uid: 4014 @@ -161652,35 +162027,6 @@ entities: rot: 1.5707963267948966 rad pos: -7.5,-45.5 parent: 2 -- proto: TableStone - entities: - - uid: 3521 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -8.5,-9.5 - parent: 2 - - uid: 6292 - components: - - type: Transform - pos: -8.5,-15.5 - parent: 2 - - uid: 6293 - components: - - type: Transform - pos: -7.5,-15.5 - parent: 2 - - uid: 12019 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -8.5,-10.5 - parent: 2 - - uid: 27671 - components: - - type: Transform - pos: -8.5,-8.5 - parent: 2 - proto: TableWood entities: - uid: 151 @@ -161747,6 +162093,18 @@ entities: rot: 1.5707963267948966 rad pos: -6.5,-19.5 parent: 2 + - uid: 2378 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 60.5,-28.5 + parent: 2 + - uid: 2775 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 61.5,-29.5 + parent: 2 - uid: 3073 components: - type: Transform @@ -162029,31 +162387,17 @@ entities: rot: 1.5707963267948966 rad pos: -42.5,-6.5 parent: 2 - - uid: 7627 - components: - - type: Transform - pos: 52.5,-34.5 - parent: 2 - - uid: 7629 - components: - - type: Transform - pos: 52.5,-32.5 - parent: 2 - - uid: 7630 - components: - - type: Transform - pos: 53.5,-32.5 - parent: 2 - - uid: 7639 + - uid: 7576 components: - type: Transform - pos: 52.5,-33.5 + rot: -1.5707963267948966 rad + pos: 59.5,-28.5 parent: 2 - - uid: 7659 + - uid: 7588 components: - type: Transform rot: -1.5707963267948966 rad - pos: 49.5,-37.5 + pos: 61.5,-28.5 parent: 2 - uid: 7827 components: @@ -162280,6 +162624,12 @@ entities: - type: Transform pos: -7.5,-4.5 parent: 2 + - uid: 14988 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 56.5,-25.5 + parent: 2 - uid: 15658 components: - type: Transform @@ -162291,6 +162641,12 @@ entities: - type: Transform pos: -1.5,51.5 parent: 2 + - uid: 18800 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 39.5,-35.5 + parent: 2 - uid: 20104 components: - type: Transform @@ -162332,6 +162688,18 @@ entities: rot: 1.5707963267948966 rad pos: 3.5,-19.5 parent: 2 + - uid: 25097 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 38.5,-38.5 + parent: 2 + - uid: 25106 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 35.5,-35.5 + parent: 2 - uid: 25128 components: - type: Transform @@ -162804,17 +163172,15 @@ entities: parent: 26470 - proto: ThrusterMachineCircuitboard entities: - - uid: 7588 + - uid: 7659 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 38.378864,-42.341984 + pos: 58.522682,-39.285973 parent: 2 - - uid: 7589 + - uid: 7660 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 38.61324,-42.506046 + pos: 58.569557,-39.473473 parent: 2 - uid: 10852 components: @@ -162899,6 +163265,13 @@ entities: - type: Transform pos: 60.5,40.5 parent: 2 +- proto: ToiletEmpty + entities: + - uid: 29058 + components: + - type: Transform + pos: 35.5,-40.5 + parent: 2 - proto: ToiletGoldenDirtyWater entities: - uid: 8256 @@ -162997,7 +163370,7 @@ entities: - uid: 6433 components: - type: Transform - pos: 59.603275,4.557305 + pos: 54.426495,6.6247673 parent: 2 - uid: 7068 components: @@ -163101,10 +163474,10 @@ entities: parent: 2 - proto: ToyFigurineCargoTech entities: - - uid: 7806 + - uid: 24850 components: - type: Transform - pos: 51.627125,-25.491184 + pos: 50.53742,-26.12315 parent: 2 - proto: ToyFigurineChaplain entities: @@ -163270,7 +163643,7 @@ entities: - uid: 6953 components: - type: Transform - pos: 14.6487665,-46.388256 + pos: 11.198176,-44.181103 parent: 2 - proto: ToyFigurinePassenger entities: @@ -163281,10 +163654,10 @@ entities: parent: 2 - proto: ToyFigurineQuartermaster entities: - - uid: 7636 + - uid: 2783 components: - type: Transform - pos: 53.202896,-32.31873 + pos: 61.507923,-29.382677 parent: 2 - proto: ToyFigurineResearchDirector entities: @@ -163295,17 +163668,17 @@ entities: parent: 2 - proto: ToyFigurineSalvage entities: - - uid: 7591 + - uid: 20559 components: - type: Transform - pos: 39.518475,-39.180096 + pos: 54.23362,-36.87191 parent: 2 - proto: ToyFigurineScientist entities: - uid: 6429 components: - type: Transform - pos: 59.298588,3.5963674 + pos: 59.520245,3.5622673 parent: 2 - proto: ToyFigurineSecurity entities: @@ -163338,7 +163711,7 @@ entities: - uid: 6234 components: - type: Transform - pos: -13.715132,-16.458387 + pos: -13.601688,-16.461807 parent: 2 - proto: ToyFigurineThief entities: @@ -163384,6 +163757,23 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage +- proto: TrashBag + entities: + - uid: 25895 + components: + - type: Transform + pos: -9.551986,47.71085 + parent: 2 + - uid: 28991 + components: + - type: Transform + pos: 37.46164,41.652687 + parent: 2 + - uid: 28992 + components: + - type: Transform + pos: 28.492565,-41.111927 + parent: 2 - proto: TrashMimanaPeel entities: - uid: 10887 @@ -163648,40 +164038,46 @@ entities: - Reverse - - Middle - Off - - uid: 23763 + - uid: 19522 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 42.5,-45.5 + pos: 51.5,-39.5 parent: 2 - type: DeviceLinkSource linkedPorts: - 1564: + 14664: - - Left - Reverse - - Right - Forward - - Middle - Off - 7609: + 7662: - - Left - Reverse - - Right - Forward - - Middle - Off - 7592: + 13699: - - Left - Reverse - - Right - Forward - - Middle - Off - 1558: + 19501: - - Left + - Reverse + - - Right - Forward + - - Middle + - Off + 14656: - - Right - Reverse + - - Left + - Forward - - Middle - Off - uid: 23764 @@ -163897,20 +164293,20 @@ entities: parent: 2 - proto: VendingMachineCargoDrobe entities: - - uid: 7571 + - uid: 7732 components: - type: Transform - pos: 35.5,-46.5 + pos: 54.5,-11.5 parent: 2 - - uid: 7732 + - uid: 14945 components: - type: Transform - pos: 54.5,-11.5 + pos: 46.5,-43.5 parent: 2 - - uid: 25219 + - uid: 19502 components: - type: Transform - pos: 54.5,-29.5 + pos: 49.5,-30.5 parent: 2 - proto: VendingMachineCart entities: @@ -163968,6 +164364,11 @@ entities: - type: Transform pos: -54.5,1.5 parent: 2 + - uid: 1262 + components: + - type: Transform + pos: 50.5,-30.5 + parent: 2 - uid: 2555 components: - type: Transform @@ -163978,11 +164379,6 @@ entities: - type: Transform pos: 24.5,4.5 parent: 2 - - uid: 7686 - components: - - type: Transform - pos: 55.5,-29.5 - parent: 2 - uid: 10830 components: - type: Transform @@ -164211,10 +164607,10 @@ entities: parent: 2 - proto: VendingMachineSalvage entities: - - uid: 7491 + - uid: 7593 components: - type: Transform - pos: 38.5,-44.5 + pos: 46.5,-38.5 parent: 2 - proto: VendingMachineSciDrobe entities: @@ -164294,10 +164690,10 @@ entities: - type: Transform pos: -56.5,13.5 parent: 2 - - uid: 7749 + - uid: 7494 components: - type: Transform - pos: 38.5,-35.5 + pos: 50.5,-43.5 parent: 2 - uid: 10835 components: @@ -164376,17 +164772,22 @@ entities: parent: 2 - proto: WaffleCoFlippo entities: - - uid: 27002 + - uid: 14994 + components: + - type: Transform + pos: 55.405495,-37.457848 + parent: 2 + - uid: 18765 components: - type: Transform - pos: 38.74111,-40.363083 + pos: 55.405495,-37.457848 parent: 2 - proto: WallmountGeneratorAPUElectronics entities: - - uid: 7590 + - uid: 15039 components: - type: Transform - pos: 37.49776,-42.428486 + pos: 58.499245,-38.37191 parent: 2 - proto: WallmountTelescreen entities: @@ -165065,11 +165466,6 @@ entities: - type: Transform pos: -34.5,-20.5 parent: 2 - - uid: 571 - components: - - type: Transform - pos: 48.5,-30.5 - parent: 2 - uid: 572 components: - type: Transform @@ -165175,30 +165571,16 @@ entities: - type: Transform pos: -2.5,16.5 parent: 2 - - uid: 613 - components: - - type: Transform - pos: 49.5,-30.5 - parent: 2 - uid: 618 components: - type: Transform pos: -29.5,-63.5 parent: 2 - - uid: 623 - components: - - type: Transform - pos: 48.5,-38.5 - parent: 2 - - uid: 624 - components: - - type: Transform - pos: 47.5,-38.5 - parent: 2 - uid: 627 components: - type: Transform - pos: 50.5,-30.5 + rot: -1.5707963267948966 rad + pos: 55.5,-27.5 parent: 2 - uid: 646 components: @@ -165394,21 +165776,6 @@ entities: - type: Transform pos: 62.5,-24.5 parent: 2 - - uid: 784 - components: - - type: Transform - pos: 56.5,-30.5 - parent: 2 - - uid: 785 - components: - - type: Transform - pos: 55.5,-31.5 - parent: 2 - - uid: 786 - components: - - type: Transform - pos: 55.5,-30.5 - parent: 2 - uid: 788 components: - type: Transform @@ -165420,16 +165787,6 @@ entities: - type: Transform pos: 56.5,37.5 parent: 2 - - uid: 793 - components: - - type: Transform - pos: 62.5,-23.5 - parent: 2 - - uid: 794 - components: - - type: Transform - pos: 61.5,-24.5 - parent: 2 - uid: 795 components: - type: Transform @@ -165450,66 +165807,11 @@ entities: - type: Transform pos: 33.5,-53.5 parent: 2 - - uid: 807 - components: - - type: Transform - pos: 50.5,-38.5 - parent: 2 - uid: 809 components: - type: Transform pos: 34.5,-55.5 parent: 2 - - uid: 810 - components: - - type: Transform - pos: 55.5,-38.5 - parent: 2 - - uid: 815 - components: - - type: Transform - pos: 45.5,-41.5 - parent: 2 - - uid: 816 - components: - - type: Transform - pos: 45.5,-47.5 - parent: 2 - - uid: 817 - components: - - type: Transform - pos: 52.5,-38.5 - parent: 2 - - uid: 819 - components: - - type: Transform - pos: 51.5,-38.5 - parent: 2 - - uid: 820 - components: - - type: Transform - pos: 54.5,-38.5 - parent: 2 - - uid: 821 - components: - - type: Transform - pos: 53.5,-38.5 - parent: 2 - - uid: 822 - components: - - type: Transform - pos: 45.5,-46.5 - parent: 2 - - uid: 824 - components: - - type: Transform - pos: 45.5,-42.5 - parent: 2 - - uid: 826 - components: - - type: Transform - pos: 54.5,-30.5 - parent: 2 - uid: 828 components: - type: Transform @@ -165521,31 +165823,6 @@ entities: rot: 1.5707963267948966 rad pos: 45.5,-8.5 parent: 2 - - uid: 835 - components: - - type: Transform - pos: 45.5,-40.5 - parent: 2 - - uid: 838 - components: - - type: Transform - pos: 49.5,-38.5 - parent: 2 - - uid: 840 - components: - - type: Transform - pos: 48.5,-36.5 - parent: 2 - - uid: 848 - components: - - type: Transform - pos: 55.5,-37.5 - parent: 2 - - uid: 853 - components: - - type: Transform - pos: 48.5,-37.5 - parent: 2 - uid: 857 components: - type: Transform @@ -166505,12 +166782,22 @@ entities: - type: Transform pos: 39.5,20.5 parent: 2 + - uid: 1290 + components: + - type: Transform + pos: 59.5,-43.5 + parent: 2 - uid: 1292 components: - type: Transform rot: 1.5707963267948966 rad pos: -1.5,9.5 parent: 2 + - uid: 1307 + components: + - type: Transform + pos: 59.5,-42.5 + parent: 2 - uid: 1314 components: - type: Transform @@ -166616,12 +166903,6 @@ entities: - type: Transform pos: 36.5,46.5 parent: 2 - - uid: 1565 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 45.5,-45.5 - parent: 2 - uid: 1567 components: - type: Transform @@ -166830,21 +167111,11 @@ entities: - type: Transform pos: 51.5,20.5 parent: 2 - - uid: 1665 - components: - - type: Transform - pos: 45.5,-38.5 - parent: 2 - uid: 1669 components: - type: Transform pos: -56.5,-33.5 parent: 2 - - uid: 1677 - components: - - type: Transform - pos: 45.5,-39.5 - parent: 2 - uid: 1681 components: - type: Transform @@ -167419,26 +167690,11 @@ entities: - type: Transform pos: 34.5,50.5 parent: 2 - - uid: 2331 - components: - - type: Transform - pos: 48.5,-31.5 - parent: 2 - uid: 2340 components: - type: Transform pos: -53.5,-33.5 parent: 2 - - uid: 2379 - components: - - type: Transform - pos: -39.5,44.5 - parent: 2 - - uid: 2380 - components: - - type: Transform - pos: -37.5,43.5 - parent: 2 - uid: 2410 components: - type: Transform @@ -167502,6 +167758,12 @@ entities: rot: 1.5707963267948966 rad pos: 14.5,-60.5 parent: 2 + - uid: 2495 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 51.5,-44.5 + parent: 2 - uid: 2539 components: - type: Transform @@ -167579,11 +167841,6 @@ entities: - type: Transform pos: 60.5,4.5 parent: 2 - - uid: 2602 - components: - - type: Transform - pos: 55.5,-36.5 - parent: 2 - uid: 2603 components: - type: Transform @@ -167683,16 +167940,6 @@ entities: rot: 1.5707963267948966 rad pos: 54.5,14.5 parent: 2 - - uid: 2655 - components: - - type: Transform - pos: -37.5,42.5 - parent: 2 - - uid: 2657 - components: - - type: Transform - pos: -38.5,44.5 - parent: 2 - uid: 2684 components: - type: Transform @@ -167746,16 +167993,6 @@ entities: - type: Transform pos: 31.5,-53.5 parent: 2 - - uid: 2754 - components: - - type: Transform - pos: 55.5,-35.5 - parent: 2 - - uid: 2755 - components: - - type: Transform - pos: 55.5,-34.5 - parent: 2 - uid: 2756 components: - type: Transform @@ -167786,11 +168023,6 @@ entities: rot: 1.5707963267948966 rad pos: 54.5,16.5 parent: 2 - - uid: 2765 - components: - - type: Transform - pos: 46.5,-38.5 - parent: 2 - uid: 2766 components: - type: Transform @@ -168928,12 +169160,6 @@ entities: rot: 3.141592653589793 rad pos: 2.5,47.5 parent: 2 - - uid: 3677 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 53.5,-45.5 - parent: 2 - uid: 3710 components: - type: Transform @@ -169004,12 +169230,6 @@ entities: - type: Transform pos: -34.5,23.5 parent: 2 - - uid: 3787 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 56.5,-42.5 - parent: 2 - uid: 3788 components: - type: Transform @@ -169020,18 +169240,6 @@ entities: - type: Transform pos: -32.5,22.5 parent: 2 - - uid: 3812 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 56.5,-45.5 - parent: 2 - - uid: 3813 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 53.5,-42.5 - parent: 2 - uid: 3814 components: - type: Transform @@ -169754,6 +169962,12 @@ entities: - type: Transform pos: -21.5,21.5 parent: 2 + - uid: 5677 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,-44.5 + parent: 2 - uid: 5749 components: - type: Transform @@ -169817,8 +170031,8 @@ entities: - uid: 5938 components: - type: Transform - rot: 3.141592653589793 rad - pos: 44.5,-47.5 + rot: -1.5707963267948966 rad + pos: 57.5,-44.5 parent: 2 - uid: 5943 components: @@ -169910,6 +170124,12 @@ entities: rot: -1.5707963267948966 rad pos: 6.5,-60.5 parent: 2 + - uid: 6167 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 58.5,-44.5 + parent: 2 - uid: 6208 components: - type: Transform @@ -169992,6 +170212,12 @@ entities: rot: 1.5707963267948966 rad pos: 56.5,-2.5 parent: 2 + - uid: 6486 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-29.5 + parent: 2 - uid: 6503 components: - type: Transform @@ -170016,6 +170242,12 @@ entities: rot: 1.5707963267948966 rad pos: 50.5,23.5 parent: 2 + - uid: 6574 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-28.5 + parent: 2 - uid: 6588 components: - type: Transform @@ -170056,6 +170288,12 @@ entities: - type: Transform pos: -60.5,47.5 parent: 2 + - uid: 6681 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-25.5 + parent: 2 - uid: 6687 components: - type: Transform @@ -170084,6 +170322,30 @@ entities: rot: 1.5707963267948966 rad pos: 13.5,-57.5 parent: 2 + - uid: 6747 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-26.5 + parent: 2 + - uid: 6751 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-30.5 + parent: 2 + - uid: 6752 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 60.5,-31.5 + parent: 2 + - uid: 6753 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 61.5,-31.5 + parent: 2 - uid: 6871 components: - type: Transform @@ -170095,6 +170357,17 @@ entities: rot: -1.5707963267948966 rad pos: 8.5,-60.5 parent: 2 + - uid: 6904 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 47.5,-44.5 + parent: 2 + - uid: 6907 + components: + - type: Transform + pos: 59.5,-32.5 + parent: 2 - uid: 6923 components: - type: Transform @@ -170206,16 +170479,6 @@ entities: - type: Transform pos: 44.5,20.5 parent: 2 - - uid: 7467 - components: - - type: Transform - pos: 43.5,-47.5 - parent: 2 - - uid: 7468 - components: - - type: Transform - pos: 42.5,-47.5 - parent: 2 - uid: 7469 components: - type: Transform @@ -170271,35 +170534,46 @@ entities: - type: Transform pos: -68.5,4.5 parent: 2 - - uid: 7607 + - uid: 7580 components: - type: Transform - pos: -33.5,17.5 + rot: 3.141592653589793 rad + pos: 57.5,-24.5 parent: 2 - - uid: 7617 + - uid: 7598 components: - type: Transform - pos: 51.5,-36.5 + rot: -1.5707963267948966 rad + pos: 50.5,-44.5 parent: 2 - - uid: 7619 + - uid: 7607 components: - type: Transform - pos: 51.5,-35.5 + pos: -33.5,17.5 parent: 2 - - uid: 7620 + - uid: 7612 components: - type: Transform - pos: 52.5,-35.5 + rot: -1.5707963267948966 rad + pos: 56.5,-31.5 parent: 2 - - uid: 7621 + - uid: 7613 components: - type: Transform - pos: 54.5,-35.5 + rot: -1.5707963267948966 rad + pos: 57.5,-31.5 parent: 2 - - uid: 7622 + - uid: 7619 components: - type: Transform - pos: 53.5,-35.5 + rot: -1.5707963267948966 rad + pos: 62.5,-31.5 + parent: 2 + - uid: 7620 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 58.5,-31.5 parent: 2 - uid: 7670 components: @@ -170317,6 +170591,42 @@ entities: - type: Transform pos: 62.5,-14.5 parent: 2 + - uid: 7717 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 59.5,-31.5 + parent: 2 + - uid: 7770 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 52.5,-44.5 + parent: 2 + - uid: 7785 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 63.5,-31.5 + parent: 2 + - uid: 7786 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 48.5,-44.5 + parent: 2 + - uid: 7789 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 58.5,-30.5 + parent: 2 + - uid: 7790 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 45.5,-44.5 + parent: 2 - uid: 7819 components: - type: Transform @@ -172324,16 +172634,6 @@ entities: rot: 1.5707963267948966 rad pos: -23.5,10.5 parent: 2 - - uid: 12402 - components: - - type: Transform - pos: -37.5,41.5 - parent: 2 - - uid: 12488 - components: - - type: Transform - pos: -37.5,40.5 - parent: 2 - uid: 12525 components: - type: Transform @@ -172363,6 +172663,18 @@ entities: rot: 3.141592653589793 rad pos: 48.5,29.5 parent: 2 + - uid: 12673 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 63.5,-25.5 + parent: 2 + - uid: 12674 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 56.5,-44.5 + parent: 2 - uid: 12679 components: - type: Transform @@ -172447,6 +172759,18 @@ entities: rot: 1.5707963267948966 rad pos: -45.5,2.5 parent: 2 + - uid: 13636 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 63.5,-30.5 + parent: 2 + - uid: 13665 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 58.5,-27.5 + parent: 2 - uid: 13724 components: - type: Transform @@ -172495,25 +172819,80 @@ entities: - type: Transform pos: 66.5,-18.5 parent: 2 - - uid: 15051 + - uid: 14944 components: - type: Transform - pos: 58.5,-24.5 + rot: -1.5707963267948966 rad + pos: 63.5,-26.5 parent: 2 - - uid: 15052 + - uid: 14946 components: - type: Transform - pos: 59.5,-24.5 + rot: -1.5707963267948966 rad + pos: 46.5,-44.5 parent: 2 - - uid: 15053 + - uid: 14950 components: - type: Transform - pos: 55.5,-24.5 + rot: -1.5707963267948966 rad + pos: 59.5,-44.5 parent: 2 - - uid: 15214 + - uid: 14953 components: - type: Transform - pos: -37.5,44.5 + pos: 59.5,-36.5 + parent: 2 + - uid: 14955 + components: + - type: Transform + pos: 59.5,-38.5 + parent: 2 + - uid: 14956 + components: + - type: Transform + pos: 59.5,-37.5 + parent: 2 + - uid: 14968 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 58.5,-29.5 + parent: 2 + - uid: 14977 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 58.5,-28.5 + parent: 2 + - uid: 14980 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 49.5,-44.5 + parent: 2 + - uid: 14990 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 57.5,-27.5 + parent: 2 + - uid: 15013 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,-52.5 + parent: 2 + - uid: 15042 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 33.5,4.5 + parent: 2 + - uid: 15043 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 32.5,3.5 parent: 2 - uid: 15259 components: @@ -172786,6 +173165,24 @@ entities: rot: 3.141592653589793 rad pos: 46.5,-7.5 parent: 2 + - uid: 19471 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,-55.5 + parent: 2 + - uid: 19472 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 56.5,-55.5 + parent: 2 + - uid: 19487 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 56.5,-52.5 + parent: 2 - uid: 19510 components: - type: Transform @@ -172835,11 +173232,6 @@ entities: rot: -1.5707963267948966 rad pos: -21.5,-24.5 parent: 2 - - uid: 20039 - components: - - type: Transform - pos: 57.5,-24.5 - parent: 2 - uid: 20114 components: - type: Transform @@ -173135,6 +173527,11 @@ entities: rot: 3.141592653589793 rad pos: -38.5,11.5 parent: 2 + - uid: 21373 + components: + - type: Transform + pos: -37.5,42.5 + parent: 2 - uid: 21444 components: - type: Transform @@ -173229,16 +173626,17 @@ entities: - type: Transform pos: -35.5,13.5 parent: 2 - - uid: 22294 + - uid: 22233 components: - type: Transform - rot: 3.141592653589793 rad - pos: -35.5,-4.5 + rot: -1.5707963267948966 rad + pos: 63.5,-24.5 parent: 2 - - uid: 22303 + - uid: 22294 components: - type: Transform - pos: 60.5,-24.5 + rot: 3.141592653589793 rad + pos: -35.5,-4.5 parent: 2 - uid: 22350 components: @@ -173279,8 +173677,7 @@ entities: - uid: 22652 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -41.5,40.5 + pos: -38.5,44.5 parent: 2 - uid: 22768 components: @@ -173456,8 +173853,7 @@ entities: - uid: 23221 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -41.5,41.5 + pos: -39.5,44.5 parent: 2 - uid: 23272 components: @@ -173465,6 +173861,11 @@ entities: rot: -1.5707963267948966 rad pos: -37.5,7.5 parent: 2 + - uid: 23635 + components: + - type: Transform + pos: -37.5,43.5 + parent: 2 - uid: 23694 components: - type: Transform @@ -173476,6 +173877,11 @@ entities: - type: Transform pos: -34.5,25.5 parent: 2 + - uid: 23772 + components: + - type: Transform + pos: -40.5,44.5 + parent: 2 - uid: 23888 components: - type: Transform @@ -173543,6 +173949,11 @@ entities: rot: 1.5707963267948966 rad pos: 1.5,16.5 parent: 2 + - uid: 25107 + components: + - type: Transform + pos: -41.5,44.5 + parent: 2 - uid: 25186 components: - type: Transform @@ -173623,7 +174034,7 @@ entities: - uid: 25483 components: - type: Transform - pos: -41.5,44.5 + pos: -37.5,44.5 parent: 2 - uid: 25485 components: @@ -173706,6 +174117,16 @@ entities: rot: 1.5707963267948966 rad pos: -24.5,7.5 parent: 2 + - uid: 25721 + components: + - type: Transform + pos: -41.5,43.5 + parent: 2 + - uid: 25727 + components: + - type: Transform + pos: -41.5,42.5 + parent: 2 - uid: 25746 components: - type: Transform @@ -173731,7 +174152,12 @@ entities: - uid: 25756 components: - type: Transform - pos: -40.5,44.5 + pos: -37.5,40.5 + parent: 2 + - uid: 25763 + components: + - type: Transform + pos: -37.5,41.5 parent: 2 - uid: 25768 components: @@ -173748,6 +174174,11 @@ entities: - type: Transform pos: -41.5,38.5 parent: 2 + - uid: 25783 + components: + - type: Transform + pos: -41.5,40.5 + parent: 2 - uid: 25784 components: - type: Transform @@ -173771,6 +174202,11 @@ entities: rot: 3.141592653589793 rad pos: -38.5,28.5 parent: 2 + - uid: 25855 + components: + - type: Transform + pos: -41.5,41.5 + parent: 2 - uid: 25859 components: - type: Transform @@ -173783,18 +174219,6 @@ entities: rot: -1.5707963267948966 rad pos: -40.5,4.5 parent: 2 - - uid: 25888 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -41.5,43.5 - parent: 2 - - uid: 26161 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -41.5,42.5 - parent: 2 - uid: 26276 components: - type: Transform @@ -175254,6 +175678,12 @@ entities: rot: -1.5707963267948966 rad pos: 7.5,-44.5 parent: 2 + - uid: 826 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 48.5,-36.5 + parent: 2 - uid: 830 components: - type: Transform @@ -175662,11 +176092,6 @@ entities: - type: Transform pos: 18.5,-45.5 parent: 2 - - uid: 1337 - components: - - type: Transform - pos: 18.5,-47.5 - parent: 2 - uid: 1338 components: - type: Transform @@ -175677,11 +176102,6 @@ entities: - type: Transform pos: 18.5,-49.5 parent: 2 - - uid: 1340 - components: - - type: Transform - pos: 18.5,-46.5 - parent: 2 - uid: 1341 components: - type: Transform @@ -175692,21 +176112,6 @@ entities: - type: Transform pos: 11.5,-49.5 parent: 2 - - uid: 1344 - components: - - type: Transform - pos: 12.5,-49.5 - parent: 2 - - uid: 1348 - components: - - type: Transform - pos: 16.5,-49.5 - parent: 2 - - uid: 1350 - components: - - type: Transform - pos: 17.5,-49.5 - parent: 2 - uid: 1357 components: - type: Transform @@ -176504,6 +176909,11 @@ entities: rot: 1.5707963267948966 rad pos: 25.5,-53.5 parent: 2 + - uid: 1677 + components: + - type: Transform + pos: 15.5,-44.5 + parent: 2 - uid: 1679 components: - type: Transform @@ -177622,11 +178032,6 @@ entities: - type: Transform pos: 64.5,5.5 parent: 2 - - uid: 2733 - components: - - type: Transform - pos: 40.5,-30.5 - parent: 2 - uid: 2735 components: - type: Transform @@ -177698,21 +178103,11 @@ entities: rot: 3.141592653589793 rad pos: 28.5,-49.5 parent: 2 - - uid: 2773 - components: - - type: Transform - pos: 34.5,-36.5 - parent: 2 - uid: 2774 components: - type: Transform pos: 34.5,-42.5 parent: 2 - - uid: 2775 - components: - - type: Transform - pos: 32.5,-43.5 - parent: 2 - uid: 2776 components: - type: Transform @@ -177733,11 +178128,6 @@ entities: - type: Transform pos: 34.5,-35.5 parent: 2 - - uid: 2796 - components: - - type: Transform - pos: 33.5,-43.5 - parent: 2 - uid: 2797 components: - type: Transform @@ -178263,16 +178653,6 @@ entities: - type: Transform pos: 54.5,7.5 parent: 2 - - uid: 3375 - components: - - type: Transform - pos: 55.5,7.5 - parent: 2 - - uid: 3376 - components: - - type: Transform - pos: 56.5,7.5 - parent: 2 - uid: 3377 components: - type: Transform @@ -178322,6 +178702,12 @@ entities: rot: 3.141592653589793 rad pos: -53.5,-0.5 parent: 2 + - uid: 3825 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 48.5,-37.5 + parent: 2 - uid: 3893 components: - type: Transform @@ -178458,6 +178844,12 @@ entities: rot: 1.5707963267948966 rad pos: -16.5,-41.5 parent: 2 + - uid: 4010 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 48.5,-29.5 + parent: 2 - uid: 4043 components: - type: Transform @@ -178567,6 +178959,11 @@ entities: rot: 1.5707963267948966 rad pos: -53.5,-6.5 parent: 2 + - uid: 4513 + components: + - type: Transform + pos: -9.5,-20.5 + parent: 2 - uid: 4532 components: - type: Transform @@ -178607,6 +179004,11 @@ entities: rot: 1.5707963267948966 rad pos: -56.5,-20.5 parent: 2 + - uid: 4804 + components: + - type: Transform + pos: -4.5,-25.5 + parent: 2 - uid: 4870 components: - type: Transform @@ -178885,11 +179287,26 @@ entities: - type: Transform pos: -15.5,-9.5 parent: 2 + - uid: 6264 + components: + - type: Transform + pos: -5.5,-25.5 + parent: 2 - uid: 6266 components: - type: Transform pos: -18.5,-31.5 parent: 2 + - uid: 6292 + components: + - type: Transform + pos: -6.5,-25.5 + parent: 2 + - uid: 6293 + components: + - type: Transform + pos: -2.5,-25.5 + parent: 2 - uid: 6357 components: - type: Transform @@ -178914,6 +179331,21 @@ entities: rot: 3.141592653589793 rad pos: 31.5,-49.5 parent: 2 + - uid: 6402 + components: + - type: Transform + pos: -3.5,-25.5 + parent: 2 + - uid: 6403 + components: + - type: Transform + pos: -9.5,-21.5 + parent: 2 + - uid: 6437 + components: + - type: Transform + pos: -7.5,-25.5 + parent: 2 - uid: 6609 components: - type: Transform @@ -178994,16 +179426,6 @@ entities: - type: Transform pos: 8.5,-47.5 parent: 2 - - uid: 6742 - components: - - type: Transform - pos: 11.5,-48.5 - parent: 2 - - uid: 6744 - components: - - type: Transform - pos: 11.5,-46.5 - parent: 2 - uid: 6745 components: - type: Transform @@ -179014,41 +179436,6 @@ entities: - type: Transform pos: 8.5,-44.5 parent: 2 - - uid: 6747 - components: - - type: Transform - pos: 11.5,-45.5 - parent: 2 - - uid: 6748 - components: - - type: Transform - pos: 12.5,-45.5 - parent: 2 - - uid: 6749 - components: - - type: Transform - pos: 13.5,-45.5 - parent: 2 - - uid: 6750 - components: - - type: Transform - pos: 14.5,-45.5 - parent: 2 - - uid: 6751 - components: - - type: Transform - pos: 15.5,-45.5 - parent: 2 - - uid: 6752 - components: - - type: Transform - pos: 17.5,-45.5 - parent: 2 - - uid: 6753 - components: - - type: Transform - pos: 16.5,-45.5 - parent: 2 - uid: 6756 components: - type: Transform @@ -179059,6 +179446,12 @@ entities: - type: Transform pos: 16.5,-17.5 parent: 2 + - uid: 6825 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 49.5,-39.5 + parent: 2 - uid: 6834 components: - type: Transform @@ -179097,6 +179490,12 @@ entities: rot: 3.141592653589793 rad pos: -38.5,-10.5 parent: 2 + - uid: 6905 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 45.5,-43.5 + parent: 2 - uid: 6986 components: - type: Transform @@ -179239,12 +179638,6 @@ entities: rot: -1.5707963267948966 rad pos: 35.5,-47.5 parent: 2 - - uid: 7475 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 35.5,-43.5 - parent: 2 - uid: 7476 components: - type: Transform @@ -179257,97 +179650,99 @@ entities: rot: -1.5707963267948966 rad pos: 36.5,-47.5 parent: 2 - - uid: 7489 + - uid: 7507 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 39.5,-46.5 + pos: 50.5,-17.5 parent: 2 - - uid: 7490 + - uid: 7510 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 39.5,-43.5 + pos: 49.5,-18.5 parent: 2 - - uid: 7493 + - uid: 7513 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 39.5,-44.5 + pos: 50.5,-15.5 parent: 2 - - uid: 7501 + - uid: 7516 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 37.5,-43.5 + pos: 45.5,-16.5 parent: 2 - - uid: 7502 + - uid: 7519 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 36.5,-43.5 + pos: 50.5,-11.5 parent: 2 - - uid: 7503 + - uid: 7523 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 38.5,-43.5 + pos: 45.5,-17.5 parent: 2 - - uid: 7507 + - uid: 7524 components: - type: Transform - pos: 50.5,-17.5 + pos: 45.5,-11.5 parent: 2 - - uid: 7510 + - uid: 7559 components: - type: Transform - pos: 49.5,-18.5 + pos: 49.5,-24.5 parent: 2 - - uid: 7513 + - uid: 7591 components: - type: Transform - pos: 50.5,-15.5 + rot: -1.5707963267948966 rad + pos: 48.5,-35.5 parent: 2 - - uid: 7516 + - uid: 7592 components: - type: Transform - pos: 45.5,-16.5 + rot: -1.5707963267948966 rad + pos: 47.5,-37.5 parent: 2 - - uid: 7519 + - uid: 7597 components: - type: Transform - pos: 50.5,-11.5 + rot: -1.5707963267948966 rad + pos: 45.5,-38.5 parent: 2 - - uid: 7523 + - uid: 7605 components: - type: Transform - pos: 45.5,-17.5 + rot: -1.5707963267948966 rad + pos: 48.5,-30.5 parent: 2 - - uid: 7524 + - uid: 7606 components: - type: Transform - pos: 45.5,-11.5 + rot: -1.5707963267948966 rad + pos: 48.5,-31.5 parent: 2 - - uid: 7559 + - uid: 7608 components: - type: Transform - pos: 49.5,-24.5 + rot: -1.5707963267948966 rad + pos: 49.5,-37.5 parent: 2 - - uid: 7669 + - uid: 7611 components: - type: Transform - rot: 3.141592653589793 rad - pos: -27.5,-46.5 + rot: -1.5707963267948966 rad + pos: 48.5,-25.5 parent: 2 - - uid: 7673 + - uid: 7617 components: - type: Transform - pos: 48.5,-27.5 + rot: -1.5707963267948966 rad + pos: 54.5,-31.5 parent: 2 - - uid: 7675 + - uid: 7669 components: - type: Transform - pos: 48.5,-25.5 + rot: 3.141592653589793 rad + pos: -27.5,-46.5 parent: 2 - uid: 7676 components: @@ -179371,6 +179766,12 @@ entities: rot: 3.141592653589793 rad pos: -27.5,-45.5 parent: 2 + - uid: 7708 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 45.5,-35.5 + parent: 2 - uid: 7712 components: - type: Transform @@ -179382,6 +179783,12 @@ entities: - type: Transform pos: 62.5,6.5 parent: 2 + - uid: 7749 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 54.5,-24.5 + parent: 2 - uid: 7750 components: - type: Transform @@ -179974,6 +180381,11 @@ entities: - type: Transform pos: -20.5,-34.5 parent: 2 + - uid: 9217 + components: + - type: Transform + pos: 36.5,-40.5 + parent: 2 - uid: 9301 components: - type: Transform @@ -180014,6 +180426,11 @@ entities: - type: Transform pos: -52.5,-36.5 parent: 2 + - uid: 9591 + components: + - type: Transform + pos: -8.5,-25.5 + parent: 2 - uid: 9592 components: - type: Transform @@ -180618,6 +181035,11 @@ entities: - type: Transform pos: 12.5,-23.5 parent: 2 + - uid: 10443 + components: + - type: Transform + pos: -9.5,-23.5 + parent: 2 - uid: 10490 components: - type: Transform @@ -180781,6 +181203,16 @@ entities: rot: 3.141592653589793 rad pos: -21.5,-9.5 parent: 2 + - uid: 11984 + components: + - type: Transform + pos: -9.5,-24.5 + parent: 2 + - uid: 11987 + components: + - type: Transform + pos: -9.5,-25.5 + parent: 2 - uid: 11998 components: - type: Transform @@ -180994,6 +181426,35 @@ entities: rot: -1.5707963267948966 rad pos: -38.5,-4.5 parent: 2 + - uid: 14951 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 49.5,-43.5 + parent: 2 + - uid: 14982 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,-31.5 + parent: 2 + - uid: 15005 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 15.5,-49.5 + parent: 2 + - uid: 15009 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 50.5,-24.5 + parent: 2 + - uid: 15010 + components: + - type: Transform + pos: 34.5,-39.5 + parent: 2 - uid: 15607 components: - type: Transform @@ -181161,6 +181622,23 @@ entities: - type: Transform pos: 48.5,44.5 parent: 2 + - uid: 17483 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 49.5,-41.5 + parent: 2 + - uid: 17489 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 46.5,-37.5 + parent: 2 + - uid: 17491 + components: + - type: Transform + pos: 15.5,-48.5 + parent: 2 - uid: 18607 components: - type: Transform @@ -181179,6 +181657,18 @@ entities: rot: 1.5707963267948966 rad pos: 29.5,36.5 parent: 2 + - uid: 18821 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 49.5,-31.5 + parent: 2 + - uid: 18841 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 50.5,-31.5 + parent: 2 - uid: 18886 components: - type: Transform @@ -181191,6 +181681,23 @@ entities: rot: 1.5707963267948966 rad pos: 30.5,36.5 parent: 2 + - uid: 19269 + components: + - type: Transform + pos: 35.5,-39.5 + parent: 2 + - uid: 19303 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 49.5,-40.5 + parent: 2 + - uid: 19470 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 49.5,-38.5 + parent: 2 - uid: 19748 components: - type: Transform @@ -181213,6 +181720,12 @@ entities: - type: Transform pos: -21.5,-32.5 parent: 2 + - uid: 20700 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 45.5,-37.5 + parent: 2 - uid: 21071 components: - type: Transform @@ -181249,6 +181762,24 @@ entities: rot: 1.5707963267948966 rad pos: -27.5,-34.5 parent: 2 + - uid: 22272 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 45.5,-41.5 + parent: 2 + - uid: 22301 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 45.5,-42.5 + parent: 2 + - uid: 22303 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 45.5,-40.5 + parent: 2 - uid: 22497 components: - type: Transform @@ -181578,6 +182109,12 @@ entities: - type: Transform pos: -42.5,-58.5 parent: 2 + - uid: 23372 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 55.5,-24.5 + parent: 2 - uid: 23753 components: - type: Transform @@ -181657,12 +182194,49 @@ entities: rot: 1.5707963267948966 rad pos: 63.5,6.5 parent: 2 + - uid: 25050 + components: + - type: Transform + pos: 36.5,-39.5 + parent: 2 + - uid: 25094 + components: + - type: Transform + pos: 39.5,-46.5 + parent: 2 + - uid: 25103 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 33.5,-44.5 + parent: 2 + - uid: 25104 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 34.5,-44.5 + parent: 2 - uid: 25138 components: - type: Transform rot: -1.5707963267948966 rad pos: -65.5,6.5 parent: 2 + - uid: 25206 + components: + - type: Transform + pos: 37.5,-39.5 + parent: 2 + - uid: 25207 + components: + - type: Transform + pos: 38.5,-39.5 + parent: 2 + - uid: 25219 + components: + - type: Transform + pos: 40.5,-35.5 + parent: 2 - uid: 25230 components: - type: Transform @@ -181717,6 +182291,11 @@ entities: rot: -1.5707963267948966 rad pos: -1.5,-48.5 parent: 2 + - uid: 25583 + components: + - type: Transform + pos: 40.5,-36.5 + parent: 2 - uid: 25616 components: - type: Transform @@ -181753,6 +182332,21 @@ entities: - type: Transform pos: -51.5,-47.5 parent: 2 + - uid: 25676 + components: + - type: Transform + pos: 39.5,-39.5 + parent: 2 + - uid: 25718 + components: + - type: Transform + pos: 40.5,-39.5 + parent: 2 + - uid: 25719 + components: + - type: Transform + pos: 40.5,-38.5 + parent: 2 - uid: 25750 components: - type: Transform @@ -181896,6 +182490,11 @@ entities: - type: Transform pos: -63.5,20.5 parent: 2 + - uid: 27639 + components: + - type: Transform + pos: 44.5,-37.5 + parent: 2 - uid: 27727 components: - type: Transform @@ -181968,6 +182567,11 @@ entities: - type: Transform pos: 60.5,-7.5 parent: 2 + - uid: 29057 + components: + - type: Transform + pos: 36.5,-41.5 + parent: 2 - proto: WallWood entities: - uid: 26471 @@ -182367,6 +182971,11 @@ entities: - type: Transform pos: 50.5,-19.5 parent: 2 + - uid: 14948 + components: + - type: Transform + pos: 48.5,-43.5 + parent: 2 - proto: WardrobeChapelFilled entities: - uid: 3278 @@ -182544,13 +183153,6 @@ entities: moles: Oxygen: 1.8856695 Nitrogen: 7.0937095 -- proto: WardrobeSalvageFilled - entities: - - uid: 7499 - components: - - type: Transform - pos: 37.5,-44.5 - parent: 2 - proto: WardrobeSecurity entities: - uid: 1668 @@ -182698,11 +183300,6 @@ entities: fixtures: {} - proto: WaterCooler entities: - - uid: 7704 - components: - - type: Transform - pos: 51.5,-29.5 - parent: 2 - uid: 10562 components: - type: Transform @@ -182723,6 +183320,11 @@ entities: - type: Transform pos: -25.5,-44.5 parent: 2 + - uid: 24827 + components: + - type: Transform + pos: 53.5,-30.5 + parent: 2 - uid: 25140 components: - type: Transform @@ -182804,13 +183406,6 @@ entities: - type: Transform pos: -43.5,34.5 parent: 2 -- proto: WeaponBaguette - entities: - - uid: 7014 - components: - - type: Transform - pos: -35.449036,-31.720577 - parent: 2 - proto: WeaponCapacitorRecharger entities: - uid: 458 @@ -183077,10 +183672,10 @@ entities: - Gun - proto: WeaponProtoKineticAccelerator entities: - - uid: 23880 + - uid: 21808 components: - type: Transform - pos: 35.554184,-41.462944 + pos: 57.538307,-32.489098 parent: 2 - proto: WeaponShotgunEnforcer entities: @@ -183179,6 +183774,11 @@ entities: parent: 2 - proto: WelderIndustrial entities: + - uid: 24079 + components: + - type: Transform + pos: -33.67942,0.8259667 + parent: 2 - uid: 28749 components: - type: Transform @@ -183406,11 +184006,11 @@ entities: parent: 2 - proto: WindoorSecureCargoLocked entities: - - uid: 23874 + - uid: 807 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 45.5,-35.5 + rot: -1.5707963267948966 rad + pos: 48.5,-32.5 parent: 2 - proto: WindoorSecureHeadOfPersonnelLocked entities: @@ -183440,6 +184040,18 @@ entities: rot: 3.141592653589793 rad pos: -15.5,-45.5 parent: 2 + - uid: 17781 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 9.5,-49.5 + parent: 2 + - uid: 18141 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 10.5,-49.5 + parent: 2 - uid: 21967 components: - type: Transform @@ -183480,33 +184092,46 @@ entities: parent: 2 - proto: WindoorSecureResearchDirectorLocked entities: - - uid: 21579 + - uid: 21580 components: - type: Transform - pos: -9.5,73.5 + pos: -8.5,73.5 parent: 2 - - uid: 21580 + - uid: 21582 components: - type: Transform - pos: -8.5,73.5 + pos: -6.5,73.5 parent: 2 - - uid: 21581 + - uid: 21583 components: - type: Transform - pos: -7.5,73.5 + rot: 3.141592653589793 rad + pos: -8.5,70.5 parent: 2 - - uid: 21582 + - uid: 27661 components: - type: Transform - pos: -6.5,73.5 + rot: 3.141592653589793 rad + pos: -9.5,70.5 + parent: 2 + - uid: 29065 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -6.5,70.5 + parent: 2 + - uid: 29069 + components: + - type: Transform + pos: -9.5,73.5 parent: 2 - proto: WindoorSecureSalvageLocked entities: - - uid: 27641 + - uid: 10245 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 45.5,-35.5 + rot: 1.5707963267948966 rad + pos: 48.5,-32.5 parent: 2 - proto: Window entities: @@ -183588,10 +184213,10 @@ entities: rot: -1.5707963267948966 rad pos: -5.5,-38.5 parent: 2 - - uid: 21583 + - uid: 21581 components: - type: Transform - rot: -1.5707963267948966 rad + rot: 1.5707963267948966 rad pos: -8.5,73.5 parent: 2 - uid: 21584 @@ -183606,6 +184231,18 @@ entities: rot: 1.5707963267948966 rad pos: -12.5,-42.5 parent: 2 + - uid: 29064 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -7.5,70.5 + parent: 2 + - uid: 29068 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -8.5,70.5 + parent: 2 - proto: Wirecutter entities: - uid: 1480 @@ -183677,6 +184314,11 @@ entities: - type: Transform pos: -25.5,-33.5 parent: 2 + - uid: 29059 + components: + - type: Transform + pos: 35.5,-41.5 + parent: 2 - proto: WoodenBench entities: - uid: 10250 @@ -183826,4 +184468,11 @@ entities: - type: Transform pos: -20.048641,-40.379498 parent: 2 +- proto: XenoBasherGlass + entities: + - uid: 15028 + components: + - type: Transform + pos: 54.79612,-37.223473 + parent: 2 ... From f98be0df723cf085a993fab30dad4b90fc798b9e Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 7 Mar 2026 20:27:17 +0000 Subject: [PATCH 480/603] Automatic changelog update --- Resources/Changelog/Maps.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Resources/Changelog/Maps.yml b/Resources/Changelog/Maps.yml index 720788dfde6..7de5017effe 100644 --- a/Resources/Changelog/Maps.yml +++ b/Resources/Changelog/Maps.yml @@ -1055,4 +1055,11 @@ id: 128 time: '2026-03-04T09:08:04.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43007 +- author: TytosB + changes: + - message: several changes to Serpentcrest, salv area rework. + type: Tweak + id: 129 + time: '2026-03-07T20:26:06.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43102 Order: 2 From e00c8bdee4272155dd16199c5ddcef05fc04292e Mon Sep 17 00:00:00 2001 From: Minemoder5000 Date: Sat, 7 Mar 2026 14:26:25 -0700 Subject: [PATCH 481/603] Vulpkanin Gauze (#43096) * gauze sprites, yml, and ftl * blank space --- Resources/Locale/en-US/markings/gauze.ftl | 47 ++++- .../Mobs/Customization/Markings/gauze.yml | 196 +++++++++++++++++- .../gauze.rsi/gauze_vulp_abdomen.png | Bin 0 -> 6657 bytes .../gauze.rsi/gauze_vulp_blindfold.png | Bin 0 -> 6636 bytes .../gauze.rsi/gauze_vulp_boxerwrap_l.png | Bin 0 -> 6700 bytes .../gauze.rsi/gauze_vulp_boxerwrap_r.png | Bin 0 -> 6706 bytes .../gauze.rsi/gauze_vulp_head.png | Bin 0 -> 6641 bytes .../gauze.rsi/gauze_vulp_leftarm.png | Bin 0 -> 6753 bytes .../gauze.rsi/gauze_vulp_lefteye_2.png | Bin 0 -> 6710 bytes .../gauze.rsi/gauze_vulp_lowerarm_r.png | Bin 0 -> 6565 bytes .../gauze.rsi/gauze_vulp_lowerleg_l.png | Bin 0 -> 6674 bytes .../gauze.rsi/gauze_vulp_lowerleg_r.png | Bin 0 -> 6645 bytes .../gauze.rsi/gauze_vulp_righteye_2.png | Bin 0 -> 6622 bytes .../gauze.rsi/gauze_vulp_shoulder.png | Bin 0 -> 6744 bytes .../gauze.rsi/gauze_vulp_upperarm_r.png | Bin 0 -> 6591 bytes .../gauze.rsi/gauze_vulp_upperleg_l.png | Bin 0 -> 6639 bytes .../gauze.rsi/gauze_vulp_upperleg_r.png | Bin 0 -> 6755 bytes .../Mobs/Customization/gauze.rsi/meta.json | 64 +++++- 18 files changed, 298 insertions(+), 9 deletions(-) create mode 100644 Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_abdomen.png create mode 100644 Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_blindfold.png create mode 100644 Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_boxerwrap_l.png create mode 100644 Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_boxerwrap_r.png create mode 100644 Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_head.png create mode 100644 Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_leftarm.png create mode 100644 Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_lefteye_2.png create mode 100644 Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_lowerarm_r.png create mode 100644 Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_lowerleg_l.png create mode 100644 Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_lowerleg_r.png create mode 100644 Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_righteye_2.png create mode 100644 Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_shoulder.png create mode 100644 Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_upperarm_r.png create mode 100644 Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_upperleg_l.png create mode 100644 Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_upperleg_r.png diff --git a/Resources/Locale/en-US/markings/gauze.ftl b/Resources/Locale/en-US/markings/gauze.ftl index 7ed35a90ba1..8b5ad5595a9 100644 --- a/Resources/Locale/en-US/markings/gauze.ftl +++ b/Resources/Locale/en-US/markings/gauze.ftl @@ -92,7 +92,7 @@ marking-GauzeMothUpperArmLeft-gauze_moth_upperarm_l = Insectoid Gauze Forearm Wr marking-GauzeMothUpperArmLeft = Insectoid Gauze Forearm Wrap (Left) marking-GauzeMothUpperLegRight-gauze_moth_upperleg_r = Insectoid Gauze Thigh Wrap (Right) -marking-GauzeMothUpperLegRight = Insectoid Insectoid Gauze Thigh Wrap (Right) +marking-GauzeMothUpperLegRight = Insectoid Gauze Thigh Wrap (Right) marking-GauzeMothUpperLegLeft-gauze_moth_upperleg_l = Insectoid Gauze Thigh Wrap (Left) marking-GauzeMothUpperLegLeft = Insectoid Gauze Thigh Wrap (Left) @@ -103,3 +103,48 @@ marking-GauzeMothLowerLegRight = Insectoid Gauze Shin Wrap (Right) marking-GauzeMothLowerLegLeft-gauze_moth_lowerleg_l = Insectoid Gauze Shin Wrap (Left) marking-GauzeMothLowerLegLeft = Insectoid Gauze Shin Wrap (Left) +marking-GauzeVulpStomach-gauze_vulp_abdomen = Vulpkanin Gauze Stomach Wrap +marking-GauzeVulpStomach = Vulpkanin Gauze Stomach Wrap + +marking-GauzeVulpBlindfold-gauze_vulp_blindfold = Vulpkanin Blindfold +marking-GauzeVulpBlindfold = Vulpkanin Blindfold + +marking-GauzeVulpBoxerwrapLeft-gauze_vulp_boxerwrap_l = Vulpkanin Gauze Hand Wrap (Left) +marking-GauzeVulpBoxerwrapLeft = Vulpkanin Gauze Hand Wrap (Left) + +marking-GauzeVulpBoxerwrapRight-gauze_vulp_boxerwrap_r = Vulpkanin Gauze Hand Wrap (Right) +marking-GauzeVulpBoxerwrapRight = Vulpkanin Gauze Hand Wrap (Right) + +marking-GauzeVulpHead-gauze_vulp_head = Vulpkanin Gauze Head Wrap +marking-GauzeVulpHead = Vulpkanin Gauze Head Wrap + +marking-GauzeVulpLeftArm-gauze_vulp_leftarm = Vulpkanin Gauze Arm Wrap (Left) +marking-GauzeVulpLeftArm = Vulpkanin Gauze Arm Wrap (Left) + +marking-GauzeVulpLefteyePatch-gauze_vulp_lefteye_2 = Vulpkanin Gauze Eyepatch (Left) +marking-GauzeVulpLefteyePatch = Vulpkanin Gauze Eyepatch (Left) + +marking-GauzeVulpLowerArmRight-gauze_vulp_lowerarm_r = Vulpkanin Gauze Wrist Wrap (Right) +marking-GauzeVulpLowerArmRight = Vulpkanin Gauze Wrist Wrap (Right) + +marking-GauzeVulpLowerLegLeft-gauze_vulp_lowerleg_l = Vulpkanin Gauze Ankle Wrap (Left) +marking-GauzeVulpLowerLegLeft = Vulpkanin Gauze Ankle Wrap (Left) + +marking-GauzeVulpLowerLegRight-gauze_vulp_lowerleg_r = Vulpkanin Gauze Ankle Wrap (Right) +marking-GauzeVulpLowerLegRight = Vulpkanin Gauze Ankle Wrap (Right) + +marking-GauzeVulpRighteyePatch-gauze_vulp_righteye_2 = Vulpkanin Gauze Eyepatch (Right) +marking-GauzeVulpRighteyePatch = Vulpkanin Gauze Eyepatch (Right) + +marking-GauzeVulpShoulder-gauze_vulp_shoulder = Vulpkanin Gauze Shoulder Sling +marking-GauzeVulpShoulder = Vulpkanin Gauze Shoulder Sling + +marking-GauzeVulpUpperArmRight-gauze_vulp_upperarm_r = Vulpkanin Gauze Forearm Wrap (Right) +marking-GauzeVulpUpperArmRight = Vulpkanin Gauze Forearm Wrap (Right) + +marking-GauzeVulpUpperLegLeft-gauze_vulp_upperleg_l = Vulpkanin Gauze Thigh Wrap (Left) +marking-GauzeVulpUpperLegLeft = Vulpkanin Gauze Thigh Wrap (Left) + +marking-GauzeVulpUpperLegRight-gauze_vulp_upperleg_r = Vulpkanin Gauze Thigh Wrap (Right) +marking-GauzeVulpUpperLegRight = Vulpkanin Gauze Thigh Wrap (Right) + diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml index d2509475e97..ee90a43aae2 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/gauze.yml @@ -1,3 +1,4 @@ +# Generic Markings - type: marking id: GauzeLefteyePatch bodyPart: Eyes @@ -14,7 +15,7 @@ - type: marking id: GauzeLefteyePad bodyPart: Eyes - groupWhitelist: [Human, Reptilian, Arachnid] + groupWhitelist: [Human, Reptilian, Arachnid, Vulpkanin] coloring: default: type: @@ -40,7 +41,7 @@ - type: marking id: GauzeRighteyePad bodyPart: Eyes - groupWhitelist: [Human, Reptilian, Arachnid] + groupWhitelist: [Human, Reptilian, Arachnid, Vulpkanin] coloring: default: type: @@ -75,7 +76,7 @@ sprites: - sprite: Mobs/Customization/gauze.rsi state: gauze_shoulder - + - type: marking id: GauzeStomach bodyPart: Chest @@ -166,7 +167,7 @@ sprites: - sprite: Mobs/Customization/gauze.rsi state: gauze_upperleg_r - + - type: marking id: GauzeLowerLegRight bodyPart: RFoot @@ -179,7 +180,7 @@ sprites: - sprite: Mobs/Customization/gauze.rsi state: gauze_lowerleg_r - + - type: marking id: GauzeBoxerWrapRight bodyPart: RHand @@ -192,7 +193,7 @@ sprites: - sprite: Mobs/Customization/gauze.rsi state: gauze_boxerwrap_r - + - type: marking id: GauzeBoxerWrapLeft bodyPart: LHand @@ -454,3 +455,186 @@ sprites: - sprite: Mobs/Customization/gauze.rsi state: gauze_moth_lowerleg_l + +# Vulpkanin Specific Markings +- type: marking + id: GauzeVulpStomach + bodyPart: Chest + groupWhitelist: [Vulpkanin] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Mobs/Customization/gauze.rsi + state: gauze_vulp_abdomen + +- type: marking + id: GauzeVulpBlindfold + bodyPart: Eyes + groupWhitelist: [Vulpkanin] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Mobs/Customization/gauze.rsi + state: gauze_vulp_blindfold + +- type: marking + id: GauzeVulpBoxerwrapLeft + bodyPart: LHand + groupWhitelist: [Vulpkanin] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Mobs/Customization/gauze.rsi + state: gauze_vulp_boxerwrap_l + +- type: marking + id: GauzeVulpBoxerwrapRight + bodyPart: RHand + groupWhitelist: [Vulpkanin] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Mobs/Customization/gauze.rsi + state: gauze_vulp_boxerwrap_r + +- type: marking + id: GauzeVulpHead + bodyPart: Head + groupWhitelist: [Vulpkanin] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Mobs/Customization/gauze.rsi + state: gauze_vulp_head + +- type: marking + id: GauzeVulpLeftArm + bodyPart: LArm + groupWhitelist: [Vulpkanin] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Mobs/Customization/gauze.rsi + state: gauze_vulp_leftarm + +- type: marking + id: GauzeVulpLefteyePatch + bodyPart: Eyes + groupWhitelist: [Vulpkanin] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Mobs/Customization/gauze.rsi + state: gauze_vulp_lefteye_2 + +- type: marking + id: GauzeVulpLowerArmRight + bodyPart: RHand + groupWhitelist: [Vulpkanin] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Mobs/Customization/gauze.rsi + state: gauze_vulp_lowerarm_r + +- type: marking + id: GauzeVulpLowerLegLeft + bodyPart: LFoot + groupWhitelist: [Vulpkanin] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Mobs/Customization/gauze.rsi + state: gauze_vulp_lowerleg_l + +- type: marking + id: GauzeVulpLowerLegRight + bodyPart: RFoot + groupWhitelist: [Vulpkanin] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Mobs/Customization/gauze.rsi + state: gauze_vulp_lowerleg_r + +- type: marking + id: GauzeVulpRighteyePatch + bodyPart: Eyes + groupWhitelist: [Vulpkanin] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Mobs/Customization/gauze.rsi + state: gauze_vulp_righteye_2 + +- type: marking + id: GauzeVulpShoulder + bodyPart: Chest + groupWhitelist: [Vulpkanin] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Mobs/Customization/gauze.rsi + state: gauze_vulp_shoulder + +- type: marking + id: GauzeVulpUpperLegLeft + bodyPart: LLeg + groupWhitelist: [Vulpkanin] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Mobs/Customization/gauze.rsi + state: gauze_vulp_upperleg_l + +- type: marking + id: GauzeVulpUpperLegRight + bodyPart: RLeg + groupWhitelist: [Vulpkanin] + coloring: + default: + type: + !type:SimpleColoring + color: "#FFFFFF" + sprites: + - sprite: Mobs/Customization/gauze.rsi + state: gauze_vulp_upperleg_r diff --git a/Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_abdomen.png b/Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_abdomen.png new file mode 100644 index 0000000000000000000000000000000000000000..9ece5b3f546e517c74b23139022c3b6e23ec08c2 GIT binary patch literal 6657 zcmeHMdo?*Qxs*sk>2>6m zTT~~va?PzoH+3RHB82Mq9Xi!nzjv*7oweTgzh>6#?{`1@c|OnceD<^V+I!6@>jS2e z5}PF;5QwC?8POJe8VG)?MZva!=JOPM6bINl@oY(cP&S7}rO^Q>&z}uI0X~fif$$%@ zS`SDHtE^q@klk`ZFBG+|*XF7sZ%K6Z%oVlwC4UkP7H=MXH)0@{n5J{~OxV5{*#ZZz zH1%yBiBe+q8e_ld(!=QWDgHOAs)O5n6kF{JV{kd;N?ALy4mMR{*>9FZ))~v{g{{G)~ zZXC;pKqPQ9BO`0Bt*If@+}H?<*2QAs7z7#&JmW%&pS@lG#;A^3T&?x#4KZgry}fLO z%p_~gk`O!5;u|b(CqiIYqCJ~vla#j_qy9WJ$0(^77ISiyP4U<-3d9~Cwya``Ii*nH z*-ih+w)4-F=YqYnYCE2IP6qW=LlT$5MgG|DBp$jp+e!Ata6@!_tf#x!s8%^8DRd$KZ5H$n`v+yni8zL6d{Hj;*q; z`4rXWj)cUN)cLLp^4VG)=w@3#r0Kcq+Tfsz<*F=i4dlq=Le{zvqoaWxwslV?|0MCJ zlkul{Xd^cqlNyjmtZ!}~Vt-uwIxA{kS?sg#){Rn2s&&!GGseW0y#3JqDdk6+WuisW z4I>Tav(C-0zx(-ee^tt<$MaI1DNaJUDw_?0w?fo+N;3`yf5- z!eU3*=OD+*{hymRs)i(xO^KLFX`A-9=a!s>w4o4V1L08v#Svkd+rQknEma9w|6EvT zpL+B!KJMt}VX}#zs1I&X6|MAE3@qK%jIf?R;uHk5eY9p~#(bdgf`gZR}65%PELy~E&@5n&a#&$5LB zH%vqvyqo%5%1L7HiF~Qh4N`LPS8E6&=^O`D|Y%9p-*Wn zMzVo(-Gh$4A#r@eap~hCyAy)Kw+->wH}FSY^bSPtsz3DHnZ1MU$d;*8xGDW~!(`n0 zhUs@LQ^34Q;QHXzdlRx$)Mette~&OT+)09GpYAllTUJ`~_o+&Mh(1uyz7$#+>13`) z)H|r8R;OlTMpeaXoKRI^sEqHp0DA(fg(lxKp{(cV9p3-ckhwie<=Ku~HWzm~?fgak zovg#I9(CSM7aM+Fw4=8DjJ?ah(u$n2`9vSHsjJd%_smWe*4sGe+UM}>-$ZtmVGi}1 z=-TTV`ImBH-;4ZdDy!KLJ!JI4CPsZx-BX=xA5m}+u&e6v?J*fWJc^ez(#jL*w58>i zvAn{|G~{ApE?AUVWLm`E_mR`slCAhac;w9tW`VTeyRiEZ{LsNeb)(yRvAw$rih5sP z@xL!4liIIPX3%*&9p6vBYSkaA!>hFd8Ut(sP6mtz%*}`|Xns=tv}K`o!A_JQsv;^P zS}0l}ITfjSSN5)Jj;T}UZHV>39j11jLwMS5Q-=hm4ng5NKGqS$^kgbjS^%A^@5+_ZhzgvV}#c;ef@V1 zzYTo!QC>dJ@|WF>bL_zNSM>Vb?|8~O z`Aj3EEF|#@_KV^w=T(EDuS2gIG~GUXB52>`iz54a_pJ|W3p2i>ufjHSZ=Ox8nU)-0 zGwgRVtTVK8JbUhsxVtGQgOn4**RLrO57|VLvDxt8R%o^Ry|5IKB3Lb~1vW`cCz@Xh z$dSvDxpY3~XcNEbOp_V8(8ICOEv7qKrrx)S{4(d|`JsII1# z)vE1hcj#LjvwE7Tmp+tfoAloP_D1_PnfVL(eYtf9)>sW>&1&dxuhkb$O-l2zH5(+{+ZZBm@Zj8~;t#=NM`Gn-j2m#+O8S+7=*Q}h@RhWQyaFp_OTL=C zWufIRi)XCY%)0rrZH{M;20cDq23&8=rgu2BI=tu`8yKwEqV9<3Kq?PxEve;-kxlO< zr0!0Ad()caXj2h;-Lk~eS;3{>6|gQZ9}V)g_+S?AXmz}hI-d9VVU2%H(c7s<-46MO z9G&NwMedVr0k;;~MROu!g3^L?7q?&-fwTPa5ghSosyHTZN)jqqc^epCA8lcVE=;->xT=1$oZ9GQ`Sr zF3XI%Jk{+z+od+1Ft&BiW`0>kQ*Qpt<1LeO%H8@7T$exj{o;R|x+Ifz;B{8Up0mEA zZ{ED>Cf8a9OlF+Y=N2Mwvfj}<`=^HkJ1)GLd%M^F>4&A_HSO{VZWPzI)vwrBxwnHa zz7$(jCWvkk-5sSARgK*3I-!t>3ml4BJlpM9Ta;O|kv-nkyp;4}%;q8Msad5;?Y)|h zBMu9N!xda+$KYYEd{D)!%&yv)#dC9t!P=jST}Pq%dq(vM@7(W%?Fetg*I-gx;mb#11 zAH8zx(U-0XV3PM}=98mB5!EgArcDU z1q;tbOfUY%rtSpK#m8vi`Pa#6KY`3*AV?IJ2Y}!+*x@Fwe0V0-sS=;C6e_`%Xz~>T?CHb2 zcsw=%iS+aHL-=VSSR79zT31&WiNYW;7&xc_=lU~wBtD$U-6nuo!5{)$GKa?I(O68V z0F&gw^5yBnVBk3PulN{jE30qtOzu|}Kt7Os5*vv|ppXm(@<$6U&-fS!@-?7;Yr(Y# zuMtRFfXnjbkOAXk0F$@vM+ge}n?2i?LtjpZLPi2~fB~vu<3MMwZk0F%Z!F8}8q<|H^$?8Pu|}A`n?*UqN{0M17dRKY_v` z(S{SaBVyq2lvn->%gg69$MNSXcSpnN9PBKgB%)Il_dI)Q3;?ZAe4>{ zhD@abIJh>3;sMu2>!9EsI1d~gMb*;rz@exptOtG>ib5usus947IGr>G$rC`bnV!o7 z0>TOVtj+ad7{p58%MxokiAMzuz%@W)QdoZ6@5=Tx24Ke{3HU_ga2RbZG!~D;;I+|c z^mio(fWrlAQGkj@A+)rYM+6f?0Mh}fB?&4O1Xz}X*$|940Ex%q*t1x4eV8BwsKD~u zuobwVC?p<3WMcYPLxM)m(s+JfZ+)mxc#Ga484 z@4qZsSyOg^&q{BlOQ$U_CMa}ySrAC%l@z$7V*q8@FNn1=MD`*vJppk4_*$@k$!Y(l z7%*t87C3h#u!^+7dLm)SaJ&wg3@4MdbSPL|6c&YADTZ(8To#q*N8$kcJV72ouD}9a z<_fC*b*eP}9*v(DAeaY`GB`>L{+%)$4EZ%#q+rMRD_cF}|Kme%S>cB*2DDp|fm;{2 z6C%HDgH0?u{3GR`)%BCEf5gB)QvO+8|24WK zzF(#QCU^q!1FuS9gQt+-HA~dP(v-M-;evcLstEz##Mx$txe&-28NqKAc6U)mn4nK70P-@yBS(y9S#Yr*<$bVl=i`^!DECS4lKZ)C~5* z-N|K#pMMU8<*BR+e~9hsYUJ8UDH+l?ez`SOIhR?JS~IS?>^d~0(c9TQ&c`&_da@>7 z^u>!|ehLtCsd->7G9Jw&%=S(Te+c&(TQU*BJ#=JlI>6g7qh>Dr<=UXbZg{Gtnt4gZ z_NCU4fu7CrCZ{j={+jE1Xmn|)#HQ{Ug_9|NZmU?qShlK00=cMVY+>L9wKRQzS#f_l z3@5pgx1bG~nEKq8OB;#pIcC}CKmG8KMvYUMTNA71 ocHn1CZ^p2s*MgLgz_@M^ax&R@KIz=4azWSJ_yF;DL-(-%1NK6&$^ZZW literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_blindfold.png b/Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_blindfold.png new file mode 100644 index 0000000000000000000000000000000000000000..4d9c84d65021a5b3f0567303d449a0e2decb2902 GIT binary patch literal 6636 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 R+)*L9m6;v+*FC;*{{yyxr4s-E literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_leftarm.png b/Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_leftarm.png new file mode 100644 index 0000000000000000000000000000000000000000..edc9362e0b351f456d4f2a249619377a9d246c38 GIT binary patch literal 6753 zcmeHMcTiJXw+|py=}m0Jh>A*jNJs=h5+Hz)DosE_3gk+PNs!QyF71j1L8+pEdbx;z z2ndJ>s7MW>C@P`?VnGEJ!SYVf>-En2X5QSH_xK2*?Y3zal4JO z(lR9w2&8OFCOHFd3(2D(2mGF4?Rfya&WE{r2%V`RU>={#WCbz6!cZOq%n-4dAdu*; zkK>RsarKhu8yUD<##A*yT02Kw}JMy`Up`P9*H%z@M514d&@%?dryx|lI} ze$SJdag{uc2l7)FE*CD^(T+ZXZx-E^E7lS|VpeB~r?rBVf}*VjnboOFyNuJ{_J=B9 z9B$q!IJb*DsS|#o@qS)!{H}WGlK48M{Wdy%m1Hl{hO&M%?aw{3Eh@5?S-U1QxBXs` zWX1=9lyEE}(NW-RV+ppkB4UwvEEbA_Apy^G^Rhx*U50d$dKz(!jtA9J4)^X3be1M7 zHpi>_ zI@NXjq5g-c-35(3_XDOP2kSuxKE=si+2)}bv!uvF>(O{ya(ZfjpS;wP*C3f7&qB7Dd-+$ynZsg{&6~9qbV)ZPfvGT zVYUv{w2l@hv`w^V=RT>_i`b3@86F&ljR{=nK~UO3LsTsEaVThne0|sJez?cY9?eeG zw(gr=Fb#v!WW9CXE{W-fG*ch-^ialA+ioIMaOrDCk#}Bk9k!zITtxQ3jnWVbl!GC9zrBAfM+_jt!ra zy8Pgvl=Dr&Dv^6u)kpX`UmZ0H*mQPy*xO#JVD|?2#ME4YN;Gj-M2~aR{i&x^(expc zgF+mKEOTryUWG^;QFC3uyN`X_^?WcXn#QfJ9F@V2a)o!2yzWpgYO zEoKXj&8oJ3IXP69wg2v{dT*A8^r_X$ETUF{3^%HS6~pP9dZ!{6x7)~k>`Lv+$Y|2I_lsknyreN;kd=kZq{Z?H8O_U!E?ic>2vQx9k=|;U zyl9UfawJykfD{R=s})mIxb$#rx!?LSx!^)|OdOWCRJe~ef-#YY?d$YgG%V$eP|1(k z@LK7ng<5>VH8pMLBq5l1ZN>Qnj|0n}$jB1a9akJySWC1dOKV#^FLW+jaVBxHh&i!y z!ce%Z9;8gHEp!Uhn9~lEUxQFAY4JLz9wb}k=U}3c5wF{F{WZ!&9~N7C`3O%YLhV(& zL+jBIbq^);eWmI#YU+d&sR(tQE7q2oA_GPB)n^ZAoRnr++&!@Bq<&orIkWWIPAxer zE2QJL!;5d|YbT7J$SQIx!WN%#l6TB2+cL0Y!0GXgDak=D7W#? z`3E5{D21zqYlO>g&WMa#Gb-d=Fxlm8x;=T*)g2>Vy!AYHp5{fpOBxT_1yNrlC!R0^~3eePK6siHZC%Jt>w09 zz)-l++euWC?2d7rarOQqyTYSLMA}1sb6UgqI(dKjRVS}guEj#vXNmpQs2xMrcvn0z zw2GhlR`#ilmQh>sDDja~is8IrfFaE_{)_{|rEVa2z;~@MvL1MF8a)s>AReea9di1i*n*YKir@X@w-4p&zD7cXBvs~@$XNn?C7A_6jl+(Pj=H1m0AyF zc9+p-kR?Ln;LpKp>)+MK)uY4O!<@nr!d`}bm{FWF`fTudOC zn?$2ltyZ7J&xsZ3Y3crH*rmaGW+*qb3ZfgwF>cyziQR+qWcK^LGP!#licG%Do zY!%KPc^0`GmDIKJrtDZlR}!>WXS`3(240H(;)27ds=Rj{?Xn%j#`>prGy0hbZdm=djoQ~Riv=DLr zZ~FetElsz-#KjfIT`TIM_V-;z_EiqPkxOk?qOqBIA(op%@#T97V>5$8EuJqT?tIkM zEwMjlpW0a*+CDuyy=*+aZnBQ={oLmiXGtxowvpo;;uDe)9yc$e8mXFZbEqS}^mM?P z@vS`pzJtDy3YCi6K>_dW-f!Suz1P!lHM}=zRP(9JOTk0;9^6pvt&kf%54Z^rH$+!Q zANY#>x?IXjYB**r=Cnn}AXwW0K zX?9klZEfya8;!pG$ox$c?%m{T?Or5A%d+$(s$!E9Zlnat75>^-hz^%BK-R1JC> zl~i@JDy8aVXYSFL-q^KD8paIbQ0n=HHq21ZK+ILrd0*7A$5}3irq|&JAISOqd<568 zZs;wgbN$=M>1N-3UM)U-I}3N7yWl50HGX4mNAHGo*w`Mu%Vm4@!H9=QI!Rp%Q8@-&<48AmrC zeR0W=>h4sVdd~j5y_cT%kPpMLre-oS*zO%U-JKF%&U{&N_jW^QL&b|Xcf@X`JKViK za4P(!y26_0y5))!QzEk?@$;*&*0}f4U32wyw#BEbpS4Ckih8y$Sthb8qpJ&g49Y0y zojn=+*6&J7=R;An_-l6I7h@QM>A6}S;K6v-3a&fnAhA-XcMg0@rX~E^F!pHLS z`UJU^a+{M@B-O(=`@GW2$3={$%pVcEH&)~~=*40Uv!YM7gNJfT+srq8^`5`^WGJLr^a+K~-faBEd*+k4;`pwz z<~v{eUoobHcV<4j>s2s)k6v<$7K}ijv%fZEhiIbfrYfg4nP*2$d|W#7=2dB$LqU|x zhxqCF-+9c9z`=Mg3pfCKP__|hTsDkK=lU~XA~p{=8G}Hk<{}=IwwoaY`!fPq95cvN zLo)=-qMJe7jVTBUkH`pQk;C{5m$2=ww6NVYJRM@bMafh|007twAr&lQ2XO=hkr`wG zmjLu7!*B?AK}ERR4B|m?1QWS@1{edwzz|R?5o<3BvPB7O%BM34&Lr#a5WtriBv2^i z5#aEUkPui18ph=Zz>#=79*#i4Q79;&0TqODgj5lfBUmGW_=Z7Z2xxp3PsrkOz!FTV zKQ~xt27v%_@L&G1c@)YIc#hyZ3jiN*5tRo=!Vqva8~(F}KxnlW0Qv6Ff3y&|0`~~G zGef`)=F=Efdl?+znx7%)v>*1oV1Cd-ICL7E5yW5vssdnE&z58ck<3q^b7?F( zVWEr0;E;GG3JaxS5lAQo#Y8~;=@=6z7DYpv&~Ruhp33|Q%9bM#QaLn+1PTC$u>c$s z6ATtZ^T$DH##nzS2FXN0@l-0%^T(NB(HIjX21ok|!hz2Ms*)P?vsV%*Isk>n(GVzx z32+@kNuUr|Dilxi$3y81oG~7Q!21I}EkMy}1ZyszO$E})Vp9Vca2_XMK_DTVu+`Dl z41$6o{vL4*q6(RS0k8&G96C2d@VCg7#b&q&sS-YsI2;OtL8FZ^7!wp8gZo>_jlmZH zwJ1SFB4B9Df<%%S0uT;BEmcyf0KmdH5DkIIXHbP)zAKj-WCoEq1(sO;5L18!MW+g> zB&v`BfFe*>0s>7ypj;6s0t!VyqoD{K0r8VQm(F5_{$JXXp0L&k{F!XIr zxiI#8`}+17#9CNPVDQ4SAW&)FLJ&~*GUy9_0$ATfv_L8+fC20u-wXDyan^q*1||kg zXBs0gPz)Xj0{8*y$sd7$qOll^F%D&dVq(74(+_k3mnjUP@)=tL03HFZfC63M3T*g2 zRU7{4O-LX^k_Uh?C<37A2W1!t{Clu)$&T??w5IU?#fRyF!cSWaVE1hd*t&q75dLE; z{LUBP>wmL-&%=Ln3NZNBB>#%vUv&MV>t8YOuatjP*Dt#M6$AfD`B!!QztN@i_hpK~ z0Zu?6z*Xsm*13G(nkDCNZ$kp!UqK+7d%qt9dWt-Qwp4#Y8asu%>4+HFhP>MFYXa;Vv^)p4opYw_J|L;oX6Djdsu6xkLVUa-J9KBFl; zwK!S9Qm!(UsEr|zQ%6SD8B$mVr=7wMIUhP0wsH>Syez4A`rcGWNY7`ScTBRR8OmK? z+dm$&Yxk_;hr-yMhrjl53GY)L$)_Yp&xl(+mJRk~JiReVh(%aHq|3~_gZ!2Z6CS8!W@5~?Gq~YPt}=*>k57$6^BvFDGEI{J7)P*prHSp4hRdNuW*n$(4lMu0c%@7j6`DxVoR zT>9sEJX|-nVEH`*o8n-qv%sDf2;=#4nJixbCJ5pIFhIy+LLkD&?zVSj zYtTz(_9P^GCVtROPAoGb^iQ2F!fA=P=Nds%CxULgZhKjLVE?2RKLx(<9*dN z&mj42BSvc3)|-bQa6E;|qu8b7EyilTh|DobxeQO(FJgCja1oT!>Bm!Am1@Z-gg(C> zG}3hHx!Pp-p3JJ2r`{uBT@{c+v(e(Ww>e8iF3EOQdf8VOe=yP8Q&MEfC`8N`@`6`f zY`lEROf*e2^ih&;n&Om7RmD=+rYm%k>A`4jK1#Ccy*AZP@R7k6RS@Kb#ob+_?I`E_EsBkD zb!K9IhF*c| zJtC5bXf}dft=SpjK6~o$Z*SE>V+hWV|j2=%b9?bY_)bfKrm%}OM5j~1$bWIA(cgvqYZ7W?X_BmdBZV@HUG z1sD?#0*4u#N2$Hj+{^p4MEXoi z)R!=)vTa}PEMFgyOgE=s%M|RI-<_Ow6~)0Irbc1|MyvY86mKrNc2m9#BKJZ}bc<&E zB0o>eizuZ-A{3a4QsmXF6-T2AJvGir1Z2tMqVc>Hf_?NCIHDwSU!&)u9ua%=(u_#0 zQR(|e%VPH5S*C0sCxDsUQN6O?`OvD@V&W$9wyH-LtD6{Gh$_CqQ{LZuCN?#5UCp%Eh9^(Bf4c$)x?z`XpN3W#_-iU8;i#vUUEK zynHd&q(hd4D1?aXC5J_?>lN^>5qG)iZ;#(pyW@o`PlM;gQ!ImCS9rE;BuTDrY_#z` zFl81h7rxjqIdiS1Vv^Lw7z^W#G(`5{Rx_einU!$MdWDbi+iQ7eBFkc(E%hn-Hmd5? z>UI{)^?0p)>({c^4r!#rpTetPNA8+2uT;qma)<)-zi!?`-95;1p z3O2gg3G?EeaMW?C+utXOoU?@#Ka2P06+G@*94M@{b3IGV5m4X8wwGXcbeoZ=B$J?G z|HKdC|ClRj*TwgmytGTuoYC~wq*G%GYygMy&VWv{0ha-ytcgyZc&k0@YzfyVx+)h5>eb{soRn+}-P+kx0&v!i-o!vp+-O$9{{-kb|M_x{1w z&c_eTI-i}_=?v@a=qx=Sc>Z~Z5$gmiX3y*0@7jnL-V2tplN(isPah`5_4Rbc=r-Zj z;hcPiJ5*awceQtY=(yKj&`!?zNIi9NC_BBN%48;HB6sPI25a-IVw1kyW_ql2&5@Mm zbBu9Jo*MD9;T{Z0>L6%r6AudrUQ7ZdB zR=Y;2#y$3PY|+7_gI-Da6#-BKtfS6SbTfgYTfN5^??-T9wtMIO^*|i-JjgUc9YG=AYo$Ge8 ziw8=lec0S|&QqVThFC8}9|xZf`q+iSG{nPe^%IZXKDa$EztFe0C5+?EX()X{5A4X; zt>$&(R`tU#(a|~4ce0yk?QJ(PZI`>=OC;7y)7i}QKx4fiQsG|moAIvhTQ2WHAAM3$ z$+J3XmDrdQR6jN~wzBVF`9Qh9+o1bd&XQ6}X%)vl&^<6YBzi_nE=(@N{76Gg{(0|$ zzAY`@9$g;rqNPO-eZ42PPH1s!pR`oghP1}@D*odz#DDJ8Lg+4i5O}ZU8F&A4t%#C{ zLv#4KRU)n;J&|uB&l@$|Jhm@vOKz6i#gbWGOkBBB_WKG)22*Z8st-Jnu%OiWkAF;EnJRN*cxTOmL2Jj^de9 zIlCH!4M!U+=!ITR^&SZw@rtzp4fIzzuTJ&mt4wS6l=Jj&ZO$gXoQA(L4N636cR8P~ zo|;mqQ$MY4uF!S>a{zH*gp_?+qItYM^6XWs{4(ERdax=mI9)iB~G?aNRAPk+qa79@vwwQXP(rZ6J^*Ei(Kw&|J^* z?hn?D8Xv;OZg}i-z2)AvGi&FiYo3C$efOq!v=*Gb5bQKqgmg8iuID!GyBc$qwI@Qe z1gVV*Ek`olZBiWDPM*2^F??`mqH=<19RXkFd+tg6W6ejzGS+Zjfwh{IP+i5U&}!4x z=iE1(>ZxN*PRDkIJw99lT)Lm_+v0fN@nzTGlb+Jmnoh_Tl-iRuSE~4ubo0B($MufC zyKYN!vMWuzWOc>L73$XQ4%lA3IuI7H^`pf>C+mTt~8;p95W zDe@d?3cfMjERhqN5OyMrG_wY8Mwp0bnyx6f%sF53wkG^#_}hK)Vqs0mO-+cC2%wO6 zAvfTI=j~gK&xH{kPwRazaPv!#uMv$~AGapr)YQ<&nk{i5e_cv03G<$EXG>nq$yFS1 zdq#S2tX+L5d2r3n_?H=n3ZApJS`OYxt*~i(-GR-Q<9t`()6|Z^c`8UI}UP;cV zktJ43=*6kVRiO0ThoKpS(B6cZV;xRaMH!XLc|+}YW>a1c+CAhxvnX3zb+__UzvFaa zUn!r{(&NHc2`hb_(O#7>b8>Q3IPUXh_W_u}<^copsOPO{J$lb&4MSjVJp6k9+E28) zm}bh@x+mrh8^SbDh8|PGS<9{?Y58@Ao95hR?!WF1ydj*$qLuY@zqpOhb`+i3b?(Na zx%OdTMDS?*vlFz4>2dtJT?GFHVvs#oc_L6zr+nn{$R@)R;r*XhjK3ewPqN7j7n_V3 zoB4~!+z6hG_p-nfu(S0xGM&pt(imJX04Zeiz@sq)qHieV(dc^s0n7{VW^oMQBb7Jc zFc!lA?xbstw&s}tJ}ir1f50JlJCz>1hfZR^4L3{c3&|h=8xYW7Lbfl5PZk=$7jVg7 ze|{JRhb^cG_87pOt!-f@Tz>$DL*kHVgsG6V7YpAk4b%5$Fv<25vu_aKp8?!QAmEWv zsKCHLWS|a`>+g-ikVqsH8jHeW5ugTwAH)&Rga{6Q-8{rs3<|)f`?Gig7MBB?$E102 z0|W+eI4Fnx>mQqEZT%gd!~ezt$OlSDXke{cOP(nC=BZzB%+CE%;RMB7w38 z_}l=0I$*jN;0V_J48fp(x90`;`!0mTprZg^fDNkh!C5iCOlfXuZTsC~o&s+co3~&E zlKqROfW`bl)-S%zOBTZU*%8qEJMJ&q|Hi(c3~E_hlPO$!z`T2w6a)DD{A31~&SH=k zx?TVS!@%Ob5DYIS6M@rZU=Ut(0v17Hk{AGy0ieAI%%7kvIeY<)LkH%eKyV}r#KGYS z3_1o)L(nh;Gy)t_fR6EE zATR{b5gZziMR=icItUz*NkkJ#1U!v^U4UZH$!1)CHVs@(7Mtb`pm-eb1;ISwAA{bR(|mnL9>2H+lGaTwe{{tpqA#ReP%w0S-;1OgU^)6pf7bZ`W;F7bzwBjC>m zb8#LOgGTD$79{fvLk7bEsin= zpiyW700c#2@np0P8I7f)v1G8XLqMPjWb{w^Tn397^nYp3Zy%Wc*G0Er@xl3n7KXm= zDF?vs>)+R3U)I8Ag25KH1(`Fi zrR$<`2%HxI{9qV(1W^ZzK@b5tjflY$&~ygvS9Cs?DF~$b16#a79zm|a1YO_?rul8D zw0_kO^a1AA0i+Cp) zfC9m*lG9Y*PVkx~;bmn`0oyqU#Qe!$hryl{&%%WdfygM%zao&6r&oZ3k^)O>Q^^4_ zQK^+0NmMEf0ueE^q->!I9}hh?u(@rk6#25Fy}vifFj_<+`amr4N`Lb%zQU{4Te*42 zlQ<$Z7N5ON%#U}wHp^I5`=1JD2R%#m!q!Qbd#yW%KUG+55`|b@K{y=SEah<{|9bd{ zo_wEo{>Gx$8gqnaRy0$ntmM7QN~)<6EC_K?v1e64NLY5l!0q-7nYoR^r8LmLug~k6 z%as-EG_%yJ(-Mogn(Aus52--a#6#IylvaMrU+udCORkH`g*vIESWwQmR^N_#L{#-<)X1?)c*kBN5!uI literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_lowerarm_r.png b/Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_lowerarm_r.png new file mode 100644 index 0000000000000000000000000000000000000000..56abcd14f125066a204f1bf605b74777ba35cbb3 GIT binary patch literal 6565 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 CL3!W+ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_lowerleg_l.png b/Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_lowerleg_l.png new file mode 100644 index 0000000000000000000000000000000000000000..9f20fe4fff02b512f83f7af23b894faa41661f6c GIT binary patch literal 6674 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 W$`P^(_;&{cVr902{FjMO%>Mw?WudeH literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_righteye_2.png b/Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_righteye_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9a62258ff5ac6902fdd971e7c71461c8b5b4aba3 GIT binary patch literal 6622 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%0DveEisH`teq%{hwYy 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_upperarm_r.png b/Resources/Textures/Mobs/Customization/gauze.rsi/gauze_vulp_upperarm_r.png new file mode 100644 index 0000000000000000000000000000000000000000..ae2e43a8b48204ec3efd441c43efcf003779de2e GIT binary patch literal 6591 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/gauze.rsi/meta.json b/Resources/Textures/Mobs/Customization/gauze.rsi/meta.json index bd7d1ed4eb4..1d7aca27782 100644 --- a/Resources/Textures/Mobs/Customization/gauze.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/gauze.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Gauze sprites by Github KittenColony / Discord kittencolony (297865728374210561), gauze_head by github:DreamlyJack(624946166152298517)", + "copyright": "Gauze sprites by Github KittenColony / Discord kittencolony (297865728374210561), gauze_head by github:DreamlyJack(624946166152298517), Vulpkanin gauze sprites modified by Minemoder5000 on Github", "size": { "x": 32, "y": 32 @@ -146,6 +146,66 @@ { "name": "gauze_head", "directions": 4 + }, + { + "name": "gauze_vulp_abdomen", + "directions": 4 + }, + { + "name": "gauze_vulp_blindfold", + "directions": 4 + }, + { + "name": "gauze_vulp_boxerwrap_l", + "directions": 4 + }, + { + "name": "gauze_vulp_boxerwrap_r", + "directions": 4 + }, + { + "name": "gauze_vulp_head", + "directions": 4 + }, + { + "name": "gauze_vulp_leftarm", + "directions": 4 + }, + { + "name": "gauze_vulp_lefteye_2", + "directions": 4 + }, + { + "name": "gauze_vulp_lowerarm_r", + "directions": 4 + }, + { + "name": "gauze_vulp_lowerleg_l", + "directions": 4 + }, + { + "name": "gauze_vulp_lowerleg_r", + "directions": 4 + }, + { + "name": "gauze_vulp_righteye_2", + "directions": 4 + }, + { + "name": "gauze_vulp_shoulder", + "directions": 4 + }, + { + "name": "gauze_vulp_upperarm_r", + "directions": 4 + }, + { + "name": "gauze_vulp_upperleg_l", + "directions": 4 + }, + { + "name": "gauze_vulp_upperleg_r", + "directions": 4 } ] -} \ No newline at end of file +} From 9148b0ec692ee0758a35601f046caefe849d4e0b Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Sun, 8 Mar 2026 04:35:18 +0700 Subject: [PATCH 482/603] meow2 --- Content.Server/GuideGenerator/ReagentEntry.cs | 2 +- Content.Server/Zombies/ZombieSystem.Transform.cs | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Content.Server/GuideGenerator/ReagentEntry.cs b/Content.Server/GuideGenerator/ReagentEntry.cs index a14ab55d102..4a0e1042052 100644 --- a/Content.Server/GuideGenerator/ReagentEntry.cs +++ b/Content.Server/GuideGenerator/ReagentEntry.cs @@ -42,7 +42,7 @@ public ReagentEntry(ReagentPrototype proto) Description = proto.LocalizedDescription; PhysicalDescription = proto.LocalizedPhysicalDescription; SubstanceColor = proto.SubstanceColor.ToHex(); - Metabolisms = proto.Metabolisms?.ToDictionary(x => x.Key.Id, x => x.Value); + Metabolisms = proto.Metabolisms?.Metabolisms.ToDictionary(x => x.Key.Id, x => x.Value); } } diff --git a/Content.Server/Zombies/ZombieSystem.Transform.cs b/Content.Server/Zombies/ZombieSystem.Transform.cs index e403e0e7d53..55b52b304f4 100644 --- a/Content.Server/Zombies/ZombieSystem.Transform.cs +++ b/Content.Server/Zombies/ZombieSystem.Transform.cs @@ -20,7 +20,6 @@ using Content.Shared.CombatMode.Pacification; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; -using Content.Shared.CombatMode.Pacification; using Content.Shared.Humanoid; using Content.Shared.Interaction.Components; using Content.Shared.Mobs; From 12f25e2f45fec8176261bbaf6570f682745ff4be Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 7 Mar 2026 21:40:22 +0000 Subject: [PATCH 483/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 890a505552c..bfe5e04cc2d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: SlamBamActionman - changes: - - message: Disablers, temperature guns and tasers can now hit holo mobs. - type: Fix - id: 9057 - time: '2025-10-08T21:59:39.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40782 - author: Centronias changes: - message: You can now attach paper labels to wrapped parcels. @@ -4003,3 +3996,10 @@ id: 9567 time: '2026-03-07T04:26:52.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43103 +- author: Minemoder + changes: + - message: Vulpkanins can now use Gauze markings. + type: Add + id: 9568 + time: '2026-03-07T21:39:13.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43096 From e630dcd7744969ea6d25cf47f6c2d94627c4e49b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 7 Mar 2026 16:52:16 -0800 Subject: [PATCH 484/603] Update Credits (#43140) Co-authored-by: PJBot --- Resources/Credits/GitHub.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Credits/GitHub.txt b/Resources/Credits/GitHub.txt index 65c02cc3c19..905f5540414 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -0-Anon, 0leshe, 0tito, 0x6273, 11belowstudio, 12rabbits, 1337dakota, 13spacemen, 154942, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 27alaing, 2DSiggy, 3nderall, 4310v343k, 4dplanner, 5tickman, 612git, 778b, 96flo, aaron, abadaba695, Ablankmann, abregado, Absolute-Potato, Absotively, achookh, Acruid, ActiveMammmoth, actually-reb, ada-please, adamsong, Adeinitas, adm2play, Admiral-Obvious-001, adrian, Adrian16199, Ady4ik, Aearo-Deepwater, Aerocrux, Aeshus, Aexolott, Aexxie, africalimedrop, afrokada, AftrLite, AgentSmithRadio, Agoichi, ahandleman, Ahion, aiden, Aidenkrz, aidenkrz, Aisu9, ajcm, AJCM-git, AjexRose, Alekshhh, alexalexmax, alexkar598, AlexMorgan3817, alexum418, alexumandxgabriel08x, Alice4267, Alithsko, Alkheemist, alliephante, ALMv1, Alpaccalypse, Alpha-Two, AlphaQwerty, Altoids1, amatwiedle, amylizzle, Andre19926, Andrew-Fall, AndrewEyeke, AndrewFenriz, AndreyCamper, anri, Anzarot121, ApolloVector, Appiah, april-gras, ar4ill, Arcane-Waffle, archee1, ArchPigeon, ArchRBX, areitpog, Arendian, areyouconfused, arimah, Arkanic, ArkiveDev, armoks, Arteben, arthropodia, ArthurMousatov, ArtisticRoomba, artur, Artxmisery, ArZarLordOfMango, as334, AshBats, AsikKEsel, AsnDen, asperger-sind, aspiringLich, astriloqua, Atakku, Ataman, august-sun, AutoOtter, AverageNotDoingAnythingEnjoyer, avghdev, AwareFoxy, Awlod, Axionyxx, azloserbits, AzzyIsNotHere, azzyisnothere, B-Kirill, B3CKDOOR, baa14453, BackeTako, BadaBoomie, Bakke, BananaFlambe, Baptr0b0t, BarryNorfolk, BasedUser, bebr3ght, beck-thompson, beesterman, bellwetherlogic, ben, benbryant0, benev0, benjamin-burges, BGare, bhespiritu, bibbly, BigfootBravo, BIGZi0348, bingojohnson, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, blitzthesquishy, Blobadoodle, bloodrizer, Bloody2372, blueDev2, Boaz1111, BobdaBiscuit, BobTheSleder, boiled-water-tsar, Bokser815, bolantej, BombasterDS, Booblesnoot42, Boolean-Buckeye, botanySupremist, brainfood1183, BramvanZijp, Brandon-Huu, breeplayx3, BriBrooo, BRINGit34, brndd, bryce0110, BubblegumBlue, buletsponge, buntobaggins, buunie099, bvelliquette, BWTCK, byondfuckery, c0rigin, c4llv07e, CaasGit, Caconym27, Calecute, Callmore, Camdot, cammusubi, capnsockless, CaptainMaru, captainsqrbeard, Carbonhell, Carolyn3114, Carou02, carteblanche4me, catdotjs, catlord, Catofquestionableethics, CatTheSystem, CawsForConcern, CDWimmer, Centronias, Chaboricks, chairbender, chaisftw, Chaoticaa, Charlese2, charlie, chartman, ChaseFlorom, chavonadelal, Cheackraze, CheddaCheez, cheesePizza2, CheesePlated, Chief-Engineer, chillyconmor, christhirtle, chromiumboy, Chronophylos, Chubbicous, Chubbygummibear, Ciac32, ciaran, citrea, civilCornball, claustro305, Clement-O, cloudyias, clyf, Clyybber, CMDR-Piboy314, cnv41, coco, cohanna, Cohnway, Cojoke-dot, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, Compilatron144, CookieMasterT, coolboy911, CoolioDudio, coolmankid12345, Coolsurf6, cooperwallace, corentt, CormosLemming, CrafterKolyan, CraftyRenter, crazybrain23, Crazydave91920, CrazyPhantom779, creadth, CrigCrag, CroilBird, Crotalus, CrudeWax, cryals, CrzyPotato, cubixthree, cutemoongod, Cyberboss, d34d10cc, DaCookieCakes, DadeKuma, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, dan, dangerrevolution, daniel-cr, DanSAussieITS, Daracke, Darkie, DaturoDewitt, david, DawBla, Daxxi3, dch-GH, ddeegan, de0rix, Deahaka, dean, DEATHB4DEFEAT, Deatherd, deathride58, debugok, Decappi, Decortex, Deeeeja, deepdarkdepths, DeepwaterCreations, Deerstop, degradka, Delete69, deltanedas, DenisShvalov, DerbyX, derek, dersheppard, Deserty0, Detintinto, DevilishMilk, devinschubert14, dexlerxd, dffdff2423, DieselMohawk, DieselMohawkTheSequel, digitalic, Dimastra, dimmoon1, DinnerCalzone, DinoWattz, Disp-Dev, DisposableCrewmember42, dissidentbullet, DjfjdfofdjfjD, doc-michael, docnite, Doctor-Cpu, DogZeroX, dolgovmi, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, DR-DOCTOR-EVIL-EVIL, Dragonjspider, dragonryan06, drakewill-CRL, Drayff, dreamlyjack, DrEnzyme, dribblydrone, DrMelon, drongood12, DrSingh, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, DuckManZach, Duddino, dukevanity, duskyjay, Dutch-VanDerLinde, dvir001, dylanstrategie, dylanwhittingham, Dynexust, Easypoller, echo, EchoOfNothing, eclips_e, eden077, EEASAS, Efruit, efzapa, Ekkosangen, ElectroSR, elsie, elthundercloud, Elysium206, emberwinters, Emisse, emmafornash, EmoGarbage404, Endecc, EnrichedCaramel, Entvari, eoineoineoin, ephememory, eris, erohrs2, erorr404v1, Errant-4, ertanic, esguard, estacaoespacialpirata, eternally-confused, eugene, ewokswagger, exincore, exp111, f0x-n3rd, F1restar4, FacePluslll, Fahasor, FairlySadPanda, farrellka-dev, FATFSAAM2, Feluk6174, ficcialfaint, Fiftyllama, Fildrance, fillervk, FinnishPaladin, firenamefn, Firewars763, FirinMaLazors, Fishfish458, fl-oz, Flareguy, flashgnash, FlipBrooke, FluffiestFloof, FluffMe, FluidRock, flymo5678, foboscheshir, FoLoKe, fooberticus, ForestNoises, forgotmyotheraccount, forkeyboards, forthbridge, Fortune117, foxhorn, freeman2651, freeze2222, frobnic8, Froffy025, Fromoriss, froozigiusz, FrostMando, FrostRibbon, Fruitsalad, Funce, FungiFellow, FunkySphere, FunTust, Futuristic-OK, GalacticChimp, gamer3107, Gamewar360, gansulalan, GaussiArson, Gaxeer, gbasood, gcoremans, Geekyhobo, genderGeometries, GeneralGaws, Genkail, Gentleman-Bird, geraeumig, Ghagliiarghii, Git-Nivrak, githubuser508, GitHubUser53123, gituhabu, GlassEclipse, GnarpGnarp, GNF54, godisdeadLOL, goet, GoldenCan, Goldminermac, Golinth, golubgik, GoodWheatley, Gorox221, GR1231, gradientvera, graevy, GraniteSidewalk, GreaseMonk, greenrock64, GreyMario, GrownSamoyedDog, GTRsound, gusxyz, Gyrandola, h3half, hamurlik, Hanzdegloker, HappyRoach, happyrobot33, Hardly3D, harikattar, Hayden, he1acdvv, Hebi, Helix-ctrl, helm4142, Henry, HerCoyote23, Hi-Im-Shot, HighTechPuddle, Hitlinemoss, hiucko, hivehum, Hmeister-fake, Hmeister-real, Hobbitmax, hobnob, HoidC, Holinka4ever, holyssss, HoofedEar, Hoolny, hord-brayden, hoshizora-sayo, Hreno, Hrosts, htmlsystem, Huaqas, hubismal, Hugal31, Hyenh, hyperb1, hyperDelegate, hyphenationc, i-justuser-i, iaada, iacore, IamVelcroboy, Ian321, icekot8, icesickleone, iczero, iglov, IgorAnt028, igorsaux, ike709, illersaver, Illiux, Ilushkins33, Ilya246, IlyaElDunaev, imatsoup, IMCB, impubbi, imrenq, imweax, indeano, Injazz, Insineer, insoPL, IntegerTempest, Interrobang01, Intoxicating-Innocence, IProduceWidgets, itsmethom, Itzbenz, iztokbajcar, Jackal298, Jackrost, JackRyd3r, jacksonzck, JackspajfMain, Jacktastic09, Jackw2As, jacob, jamessimo, janekvap-havok, Jark255, Jarmer123, Jaskanbe, JasperJRoth, jbox144, JCGWE30, jerryimmouse, JerryImMouse, Jessetriesagain, jessicamaybe, JesterX666, Jewelots, Jezithyr, jicksaw, JiimBob, JimGamemaster, jimmy12or, JIPDawg, jjtParadox, jkwookee, jmcb, JohnGinnane, johnjjohn, johnku1, Jophire, Jopogrechkin, joshepvodka, JpegOfAFrog, jproads, JrInventor05, Jrpl, jukereise, juliangiebel, JustArt1m, JustCone14, justdie12, justin, justintether, JustinTrotter, JustinWinningham, justtne, K-Dynamic, k3yw, Kadeo64, Kaga-404, kaiserbirch, KaiShibaa, kalane15, kalanosh, KamTheSythe, Kanashi-Panda, katzenminer, kbailey-git, Keelin, Keer-Sar, KEEYNy, keikiru, Kelrak, kerisargit, keronshb, KeTuFaisPiKiNut, KIBORG04, KieueCaprie, Kimpes, kin98, KingFroozy, kipdotnet, kira-er, kiri-yoshikage, Kirillcas, Kirus59, Kistras, Kit, Kit0vras, KittenColony, Kittygyat, klaypexx, kleinerstation13, Kmc2000, Ko4ergaPunk, kognise, kokoc9n, komunre, KonstantinAngelov, kontakt, korczoczek, koteq, kotobdev, Kowlin, KrasnoshchekovPavel, Krosus777, Krunklehorn, Kryyto, Kupie, kxvvv, Kyoth25f, kyupolaris, kzhanik, LaCumbiaDelCoronavirus, lajolico, Lamrr, lanedon, LankLTE, laok233, lapatison, larryrussian, lawdog4817, Lazzi0706, Le-Arctic-Fox, leahcat, leander-0, leonardo-dabepis, leonidussaks, leonsfriedrich, LeoSantich, LetterN, lettern, Level10Cybermancer, LEVELcat, lever1209, LevitatingTree, Lgibb18, lgruthes, liem161, LightVillet, lilazero, liltenhead, linkbro1, linkuyx, Litraxx, little-meow-meow, LittleBuilderJane, LittleNorthStar, LittleNyanCat, lizelive, ljm862, lmsnoise, localcc, lokachop, lolman360, Lomcastar, Lordbrandon12, LordCarve, LordEclipse, lucas, LucasTheDrgn, luckyshotpictures, LudwigVonChesterfield, luegamer, luizwritescode, LukaSlade, luminight, lunarcomets, Lusatia, Luxeator, lvvova1, Lyndomen, lyroth001, lyxcaster, lzimann, lzk228, M1tht1c, M3739, M4rchy-S, M87S, mac6na6na, MACMAN2003, Macoron, magicalus, magmodius, magnnusson, magnuscrowe, maland1, malchanceux, MaloTV, manelnavola, ManelNavola, Mangohydra, marboww, Markek1, MarkerWicker, marlyn, matt, Matz05, max, MaxNox7, maylokana, mdrkrg, MDuch369, meara1179, meganerobot, MehimoNemo, Mehnix, MeltedPixel, memeproof, MendaxxDev, Menshin, Mephisto72, MerrytheManokit, Mervill, metalgearsloth, MetalSage, MFMessage, mhamsterr, michaelcu, micheel665, mifia, mikeysaurus, MilenVolf, MilonPL, Minemoder5000, Minty642, minus1over12, Mirino97, mirrorcult, misandrie, MishaUnity, MissKay1994, MisterImp, MisterMecky, Mith-randalf, Mixelz, mjarduk, MjrLandWhale, mkanke-real, MLGTASTICa, mnva0, moderatelyaware, modern-nm, mohamedwidar, mokiros, momo, Moneyl, monotheonist, Moomoobeef, moony, Morb0, MossyGreySlope, mqole, mr-bo-jangles, Mr0maks, MrFippik, MrPersival, mrrobdemo, mtrs163, muburu, MureixloI, murolem, murphyneko, musicmanvr, MWKane, Myakot, Myctai, N3X15, nabegator, nails-n-tape, Nairodian, Naive817, NakataRin, namespace-Memory, Nannek, NazrinNya, neborsh, nekokiwa, neomoth, neutrino-laser, NickPowers43, nikitosych, nikthechampiongr, Nimfar11, ninruB, Nirnael, NIXC, nkokic, NkoKirkto, nmajask, noctyrnal, noelkathegod, noirogen, nok-ko, NonchalantNoob, NoobyLegion, Nopey, NoreUhh, not-gavnaed, notafet, notquitehadouken, notsodana, noudoit, noverd, Nox38, NuclearWinter, Nuggets219, nukashimika, nuke-haus, NULL882, nullarmo, nyeogmi, Nylux, Nyranu, Nyxilath, och-och, OctoRocket, Ohelig, OldDanceJacket, OliverOtter, onesch, OneZerooo0, OnsenCapy, OnyxTheBrave, opl-, Orange-Winds, OrangeMoronage9622, OrbitSystem07, Orsoniks, osjarw, Ostaf, othymer, OttoMaticode, Owai-Seek, packmore, PAFFhassoocks, paige404, paigemaeforrest, pali6, Palladinium, Pangogie, panzer-iv1, partyaddict, patrikturi, PaulRitter, pavlockblaine03, peccneck, Peptide90, peptron1, perryprog, PeterFuto, PetMudstone, pewter-wiz, pgraycs, PGrayCS, Pgriha, phantom-lily, pheenty, philingham, Phill101, Phooooooooooooooooooooooooooooooosphate, phunnyguy, PicklOH, PilgrimViis, Pill-U, pinkbat5, Piras314, Pireax, Pissachu, pissdemon, Pixel8-dev, PixeltheAertistContrib, PixelTheKermit, PJB3005, Plasmaguy, plinyvic, Plykiya, poeMota, pofitlo, pointer-to-null, Pok27, poklj, PolterTzi, PoorMansDreams, PopGamer45, portfiend, potato1234x, PotentiallyTom, PotRoastPiggy, Princess-Cheeseballs, ProfanedBane, Prole0, ProPandaBear, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykana, psykzz, PuceTint, pumkin69, PuroSlavKing, PursuitInAshes, Putnam3145, py01, Pyrovi, qrtDaniil, qrwas, Quantum-cross, quasr-9, quatre, QueerNB, QuietlyWhisper, qwerltaz, Radezolid, RadioMull, Radosvik, Radrark, Rainbeon, Rainfey, Raitononai, Ramlik, RamZ, randy10122, Rane, Ranger6012, Rapidgame7, ravage123321, rbertoche, RedBookcase, Redfire1331, Redict, RedlineTriad, redmushie, RednoWCirabrab, Redrover1760, redspyy, ReeZer2, RemberBM, RemieRichards, RemTim, rene-descartes2021, Renlou, retequizzle, rewafflution, rhailrake, rhsvenson, rich-dunne, RieBi, riggleprime, RIKELOLDABOSS, rinary1, Rinkashikachi, riolume, rlebell33, RobbyTheFish, robinthedragon, robinthegirlthing, Rockdtben, Rohesie, rok-povsic, rokudara-sen, rolfero, RomanNovo, roryflowers, rosieposieeee, Roudenn, router, ruddygreat, rumaks-xyz, RumiTiger, Ruzihm, rwrv, S1rFl0, S1ss3l, Saakra, SabreML, Sadie-silly, saga3152, saintmuntzer, salarua, Salex08, sam, samgithubaccount, Samuka-C, SaphireLattice, SapphicOverload, sarahon, sativaleanne, SaveliyM360, sBasalto, ScalyChimp, ScarKy0, ScholarNZL, schrodinger71, scrato, Scribbles0, scrivoy, scruq445, scuffedjays, ScumbagDog, SeamLesss, Segonist, semensponge, sephtasm, ser1-1y, Serkket, sewerpig, SG6732, sh18rw, Shaddap1, ShadeAware, ShadowCommander, shadowtheprotogen546, shaeone, shampunj, shariathotpatrol, SharkSnake98, Shegare, shepardtothestars, shibechef, Siginanto, signalsender, SignalWalker, siigiil, silicon14wastaken, Silverfur-underscore, Simyon264, sirdragooon, Sirionaut, SirWarock, Sk1tch, SkaldetSkaeg, Skarletto, skeeka-dev, skrybl, Skybailey-dev, skye, Skyedra, SlamBamActionman, slarticodefast, Slava0135, sleepyyapril, slimmslamm, Slyfox333, Smugman, SnappingOpossum, snebl, snicket, sniperchance, Snowni, snowsignal, SolidSyn, SolidusSnek, solstar2, SomegnihT, SonarZeBat, SonicHDC, SoulFN, SoulSloth, Soundwavesghost, soupkilove, southbridge-fur, sowelipililimute, Soydium, SpaceLizard24, SpaceLizardSky, SpaceManiac, SpaceRox1244, SpaceyLady, Spangs04, spanky-spanky, Sparlight, spartak, SpartanKadence, spderman3333, SpeltIncorrectyl, Spessmann, SphiraI, SplinterGP, spoogemonster, sporekto, sporkyz, ssdaniel24, stalengd, stanberytrask, Stanislav4ix, StanTheCarpenter, starbuckss14, Stealthbomber16, steel, Steffo99, stellar-novas, stewie523, stomf, Stop-Signs, stopbreaking, stopka-html, StrawberryMoses, Stray-Pyramid, strO0pwafel, Strol20, StStevens, Subversionary, sunbear-dev, SuperGDPWYL, superjj18, Supernorn, SurrealShibe, SweetAplle, SweptWasTaken, SyaoranFox, Sybil, SYNCHRONIC, Synthestra, Szunti, t, Tainakov, takemysoult, taonewt, tap, TaralGit, Taran, taurie, Tayrtahn, tday93, teamaki, TeenSarlacc, TekuNut, telavivgamers, telyonok, temm1ie, TemporalOroboros, tentekal, terezi4real, Terraspark4941, texcruize, Tezzaide, TGODiamond, TGRCdev, tgrkzus, thanosdegraf, ThatGuyUSA, ThatOneGoblin25, thatrandomcanadianguy, TheArturZh, TheBlueYowie, thecopbennet, TheCze, TheDarkElites, thedraccx, TheEmber, theexetron, TheFlyingSentry, thefoty, TheGrimbeeper, TheIntoxicatedCat, thekilk, themias, theomund, TheProNoob678, TherapyGoth, ThereDrD0, TheSecondLord, TheShuEd, thetolbean, thevinter, TheWaffleJesus, Thinbug0, ThunderBear2006, timothyteakettle, TimrodDX, timurjavid, tin-man-tim, TiniestShark, Titian3, tk-a369, tkdrg, tmtmtl30, ToastEnjoyer, Toby222, TokenStyle, Tollhouse, Toly65, tom-leys, tomasalves8, Tomeno, Tonydatguy, topy, tornado-technology, TornadoTechnology, tosatur, TotallyLemon, ToxicSonicFan04, Tr1bute, travis-g-reid, treytipton, TriviaSolari, trixxedbit, TrixxedHeart, tropicalhibi, truepaintgit, Truoizys, Tryded, TsjipTsjip, tuchila-adi-bogdan, Tunguso4ka, TurboTrackerss14, TVK-04, tyashley, Tyler-IN, TytosB, Tyzemol, UbaserB, Uberration, ubis1, UBlueberry, uhbg, UKNOWH, UltimateJester, Unbelievable-Salmon, underscorex5, UnicornOnLSD, Unisol, Unkn0wnGh0st333, unusualcrow, Uriende, UristMcDorf, user424242420, Utmanarn, Vaaankas, valentfingerov, valquaint, Varen, Vasilis, VasilisThePikachu, veliebm, Velken, VelonacepsCalyxEggs, veprolet, VerinSenpai, veritable-calamity, Veritius, Vermidia, vero5123, verslebas, vexerot, vgskye, viceemargo, VigersRay, violet754, Visne, vitopigno, vitusveit, vlad, vlados1408, VMSolidus, vmzd, VoidMeticulous, voidnull000, volotomite, volundr-, Voomra, Vordenburg, vorkathbruh, Vortebo, vulppine, wachte1, wafehling, walksanatora, Warentan, WarMechanic, Watermelon914, weaversam8, wertanchik, whateverusername0, whatston3, widgetbeck, Will-Oliver-Br, Willhelm53, WilliamECrew, willicassi, Winkarst-cpu, wirdal, wixoaGit, WlarusFromDaSpace, Wolfkey-SomeoneElseTookMyUsername, Worldwaker, wrexbe, wtcwr68, xeri7, xkreksx, xprospero, xRiriq, xsainteer, YanehCheck, yathxyz, Ygg01, YotaXP, youarereadingthis, YoungThugSS14, Yousifb26, youtissoum, yunii, YuriyKiss, yuriykiss, zach-hill, Zadeon, Zalycon, zamp, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zero, ZeroDiamond, ZeWaka, zHonys, zionnBE, ZNixian, Zokkie, ZoldorfTheWizard, zonespace27, Zylofan, Zymem, zzylex +0-Anon, 0leshe, 0tito, 0x6273, 11belowstudio, 12rabbits, 1337dakota, 13spacemen, 154942, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 27alaing, 2DSiggy, 3nderall, 4310v343k, 4dplanner, 5tickman, 612git, 778b, 96flo, aaron, abadaba695, Ablankmann, abregado, Absolute-Potato, Absotively, achookh, Acruid, ActiveMammmoth, actually-reb, ada-please, adamsong, Adeinitas, adm2play, Admiral-Obvious-001, adrian, Adrian16199, Ady4ik, Aearo-Deepwater, Aerocrux, Aeshus, Aexolott, Aexxie, AffleWaffle, africalimedrop, afrokada, AftrLite, AgentSmithRadio, Agoichi, ahandleman, Ahion, aiden, Aidenkrz, aidenkrz, Aisu9, ajcm, AJCM-git, AjexRose, Alekshhh, alexalexmax, alexkar598, AlexMorgan3817, alexum418, alexumandxgabriel08x, Alice4267, Alithsko, Alkheemist, alliephante, ALMv1, Alpaccalypse, Alpha-Two, AlphaQwerty, Altoids1, amatwiedle, amylizzle, Andre19926, Andrew-Fall, AndrewEyeke, AndrewFenriz, AndreyCamper, anri, Anzarot121, ApolloVector, Appiah, april-gras, ar4ill, Arcane-Waffle, archee1, ArchPigeon, ArchRBX, areitpog, Arendian, areyouconfused, arimah, Arkanic, ArkiveDev, armoks, Arteben, arthropodia, ArthurMousatov, ArtisticRoomba, artur, Artxmisery, ArZarLordOfMango, as334, AshBats, AsikKEsel, AsnDen, asperger-sind, aspiringLich, astriloqua, Atakku, Ataman, august-sun, AutoOtter, AverageNotDoingAnythingEnjoyer, avghdev, AwareFoxy, Awlod, Axionyxx, azloserbits, azzyisnothere, AzzyIsNotHere, B-Kirill, B3CKDOOR, baa14453, BackeTako, BadaBoomie, Bakke, BananaFlambe, Baptr0b0t, BarryNorfolk, BasedUser, bebr3ght, beck-thompson, beesterman, bellwetherlogic, ben, benbryant0, benev0, benjamin-burges, BGare, bhespiritu, bibbly, BigfootBravo, BIGZi0348, bingojohnson, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, blitzthesquishy, Blobadoodle, bloodrizer, Bloody2372, blueDev2, Boaz1111, BobdaBiscuit, BobTheSleder, boiled-water-tsar, Bokser815, bolantej, BombasterDS, Booblesnoot42, Boolean-Buckeye, botanySupremist, brainfood1183, BramvanZijp, Brandon-Huu, breeplayx3, BriBrooo, BRINGit34, brndd, bryce0110, BubblegumBlue, buletsponge, buntobaggins, buunie099, bvelliquette, BWTCK, byondfuckery, c0rigin, c4llv07e, CaasGit, Caconym27, Calecute, Callmore, Camdot, cammusubi, capnsockless, CaptainMaru, captainsqrbeard, Carbonhell, Carolyn3114, Carou02, carteblanche4me, catdotjs, catlord, Catofquestionableethics, CatTheSystem, CawsForConcern, CDWimmer, Centronias, Chaboricks, chairbender, chaisftw, Chaoticaa, Charlese2, charlie, chartman, ChaseFlorom, chavonadelal, Cheackraze, CheddaCheez, cheesePizza2, CheesePlated, Chief-Engineer, chillyconmor, christhirtle, chromiumboy, Chronophylos, Chubbicous, Chubbygummibear, Ciac32, ciaran, citrea, civilCornball, claustro305, Clement-O, cloudyias, clyf, Clyybber, CMDR-Piboy314, cnv41, coco, cohanna, Cohnway, Cojoke-dot, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, Compilatron144, CookieMasterT, coolboy911, CoolioDudio, coolmankid12345, Coolsurf6, cooperwallace, corentt, CormosLemming, CrafterKolyan, CraftyRenter, crazybrain23, Crazydave91920, CrazyPhantom779, creadth, CrigCrag, CroilBird, Crotalus, CrudeWax, cryals, CrzyPotato, cubixthree, cutemoongod, Cyberboss, d34d10cc, DaCookieCakes, DadeKuma, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, dan, dangerrevolution, daniel-cr, DanSAussieITS, Daracke, Darkie, DaturoDewitt, david, DawBla, Daxxi3, dch-GH, ddeegan, de0rix, Deahaka, dean, DEATHB4DEFEAT, Deatherd, deathride58, debugok, Decappi, Decortex, Deeeeja, deepdarkdepths, DeepwaterCreations, Deerstop, degradka, Delete69, deltanedas, DenisShvalov, DerbyX, derek, dersheppard, Deserty0, Detintinto, DevilishMilk, devinschubert14, dexlerxd, dffdff2423, DieselMohawk, DieselMohawkTheSequel, digitalic, Dimastra, dimmoon1, DinnerCalzone, DinoWattz, Disp-Dev, DisposableCrewmember42, dissidentbullet, DjfjdfofdjfjD, doc-michael, docnite, Doctor-Cpu, DogZeroX, dolgovmi, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, DR-DOCTOR-EVIL-EVIL, Dragonjspider, dragonryan06, drakewill-CRL, Drayff, dreamlyjack, DrEnzyme, dribblydrone, DrMelon, drongood12, DrSingh, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, DuckManZach, Duddino, dukevanity, duskyjay, Dutch-VanDerLinde, dvir001, dylanstrategie, dylanwhittingham, Dynexust, Easypoller, echo, EchoOfNothing, eclips_e, eden077, EEASAS, Efruit, efzapa, Ekkosangen, ElectroSR, elsie, elthundercloud, Elysium206, emberwinters, Emisse, emmafornash, EmoGarbage404, Endecc, EnrichedCaramel, Entvari, eoineoineoin, ephememory, eris, erohrs2, erorr404v1, Errant-4, ertanic, esguard, estacaoespacialpirata, eternally-confused, eugene, ewokswagger, exincore, exp111, f0x-n3rd, F1restar4, FacePluslll, Fahasor, FairlySadPanda, farrellka-dev, FATFSAAM2, Feluk6174, ficcialfaint, Fiftyllama, Fildrance, fillervk, FinnishPaladin, firenamefn, Firewars763, FirinMaLazors, Fishfish458, fl-oz, Flareguy, flashgnash, FlipBrooke, FluffiestFloof, FluffMe, FluidRock, flymo5678, foboscheshir, FoLoKe, fooberticus, ForestNoises, forgotmyotheraccount, forkeyboards, forthbridge, Fortune117, foxhorn, freeman2651, freeze2222, frobnic8, Froffy025, Fromoriss, froozigiusz, FrostMando, FrostRibbon, Fruitsalad, Funce, FungiFellow, FunkySphere, FunTust, Futuristic-OK, GalacticChimp, gamer3107, Gamewar360, gansulalan, GaussiArson, Gaxeer, gbasood, gcoremans, Geekyhobo, genderGeometries, GeneralGaws, Genkail, Gentleman-Bird, geraeumig, Ghagliiarghii, Git-Nivrak, githubuser508, GitHubUser53123, gituhabu, GlassEclipse, GnarpGnarp, GNF54, godisdeadLOL, goet, GoldenCan, Goldminermac, Golinth, golubgik, GoodWheatley, Gorox221, GR1231, gradientvera, graevy, GraniteSidewalk, GreaseMonk, greenrock64, GreyMario, GrownSamoyedDog, GTRsound, gusxyz, Gyrandola, h3half, hamurlik, Hanzdegloker, HappyRoach, happyrobot33, Hardly3D, harikattar, Hayden, he1acdvv, Hebi, Helix-ctrl, helm4142, Henry, HerCoyote23, Hi-Im-Shot, HighTechPuddle, Hitlinemoss, hiucko, hivehum, Hmeister-fake, Hmeister-real, Hobbitmax, hobnob, HoidC, Holinka4ever, holyssss, HoofedEar, Hoolny, hord-brayden, hoshizora-sayo, Hreno, Hrosts, htmlsystem, Huaqas, hubismal, Hugal31, Hyenh, hyperb1, hyperDelegate, hyphenationc, i-justuser-i, iaada, iacore, IamVelcroboy, Ian321, icekot8, icesickleone, iczero, iglov, IgorAnt028, igorsaux, ike709, illersaver, Illiux, Ilushkins33, Ilya246, IlyaElDunaev, imatsoup, IMCB, impubbi, imrenq, imweax, indeano, Injazz, Insineer, insoPL, IntegerTempest, Interrobang01, Intoxicating-Innocence, IProduceWidgets, itsmethom, Itzbenz, iztokbajcar, Jackal298, Jackrost, JackRyd3r, jacksonzck, JackspajfMain, Jacktastic09, Jackw2As, jacob, jamessimo, janekvap-havok, Jark255, Jarmer123, Jaskanbe, JasperJRoth, jbox144, JCGWE30, jerryimmouse, JerryImMouse, Jessetriesagain, jessicamaybe, JesterX666, Jewelots, Jezithyr, jicksaw, JiimBob, JimGamemaster, jimmy12or, JIPDawg, jjtParadox, jkwookee, jmcb, JohnGinnane, johnjjohn, johnku1, Jophire, Jopogrechkin, joshepvodka, JpegOfAFrog, jproads, JrInventor05, Jrpl, jukereise, juliangiebel, JustArt1m, JustCone14, justdie12, justin, justintether, JustinTrotter, JustinWinningham, justtne, K-Dynamic, k3yw, Kadeo64, Kaga-404, kaiserbirch, KaiShibaa, kalane15, kalanosh, KamTheSythe, Kanashi-Panda, katzenminer, kbailey-git, Keelin, Keer-Sar, KEEYNy, keikiru, Kelrak, kerisargit, keronshb, KeTuFaisPiKiNut, KIBORG04, KieueCaprie, Kimpes, kin98, KingFroozy, kipdotnet, kira-er, kiri-yoshikage, Kirillcas, Kirus59, Kistras, Kit, Kit0vras, KittenColony, Kittygyat, klaypexx, kleinerstation13, Kmc2000, Ko4ergaPunk, kognise, kokoc9n, komunre, KonstantinAngelov, kontakt, korczoczek, koteq, kotobdev, Kowlin, KrasnoshchekovPavel, Krosus777, Krunklehorn, Kryyto, Kupie, kxvvv, Kyoth25f, kyupolaris, kzhanik, LaCumbiaDelCoronavirus, lajolico, Lamrr, lanedon, LankLTE, laok233, lapatison, larryrussian, lawdog4817, Lazzi0706, Le-Arctic-Fox, leahcat, leander-0, leonardo-dabepis, leonidussaks, leonsfriedrich, LeoSantich, lettern, LetterN, Level10Cybermancer, LEVELcat, lever1209, LevitatingTree, Lgibb18, lgruthes, liem161, LightVillet, lilazero, liltenhead, linkbro1, linkuyx, Litraxx, little-meow-meow, LittleBuilderJane, LittleNorthStar, LittleNyanCat, lizelive, ljm862, lmsnoise, localcc, lokachop, lolman360, Lomcastar, Lordbrandon12, LordCarve, LordEclipse, lucas, LucasTheDrgn, luckyshotpictures, LudwigVonChesterfield, luegamer, luizwritescode, LukaSlade, luminight, lunarcomets, Lusatia, Luxeator, lvvova1, Lyndomen, lyroth001, lyxcaster, lzimann, lzk228, M1tht1c, M3739, M4rchy-S, M87S, mac6na6na, MACMAN2003, Macoron, magicalus, magmodius, magnnusson, magnuscrowe, maland1, malchanceux, MaloTV, manelnavola, ManelNavola, Mangohydra, marboww, Markek1, MarkerWicker, marlyn, matt, Matz05, max, MaxNox7, maylokana, mdrkrg, MDuch369, meara1179, meganerobot, MehimoNemo, Mehnix, MeltedPixel, memeproof, MendaxxDev, Menshin, Mephisto72, MerrytheManokit, Mervill, metalgearsloth, MetalSage, MFMessage, mhamsterr, michaelcu, micheel665, mifia, mikeysaurus, MilenVolf, MilonPL, Minemoder5000, Minty642, minus1over12, Mirino97, mirrorcult, misandrie, MishaUnity, MissKay1994, MisterImp, MisterMecky, Mith-randalf, Mixelz, mjarduk, MjrLandWhale, mkanke-real, MLGTASTICa, mnva0, moderatelyaware, modern-nm, mohamedwidar, mokiros, momo, Moneyl, monotheonist, Moomoobeef, moony, Morb0, MossyGreySlope, mqole, mr-bo-jangles, Mr0maks, MrFippik, MrPersival, mrrobdemo, mtrs163, muburu, MureixloI, murolem, murphyneko, musicmanvr, MWKane, Myakot, Myctai, N3X15, nabegator, nails-n-tape, Nairodian, Naive817, NakataRin, namespace-Memory, Nannek, NazrinNya, neborsh, nekokiwa, neomoth, neutrino-laser, NickPowers43, nikitosych, nikthechampiongr, Nimfar11, ninruB, Nirnael, NIXC, nkokic, NkoKirkto, nmajask, noctyrnal, noelkathegod, noirogen, nok-ko, NonchalantNoob, NoobyLegion, Nopey, NoreUhh, not-gavnaed, notafet, notquitehadouken, notsodana, noudoit, noverd, Nox38, NuclearWinter, Nuggets219, nukashimika, nuke-haus, NULL882, nullarmo, nyeogmi, Nylux, Nyranu, Nyxilath, och-och, OctoRocket, Ohelig, OldDanceJacket, OliverOtter, onesch, OneZerooo0, OnsenCapy, OnyxTheBrave, opl-, Orange-Winds, OrangeMoronage9622, OrbitSystem07, Orsoniks, osjarw, Ostaf, othymer, OttoMaticode, Owai-Seek, packmore, PAFFhassoocks, paige404, paigemaeforrest, pali6, Palladinium, Pangogie, panzer-iv1, partyaddict, patrikturi, PaulRitter, pavlockblaine03, peccneck, Peptide90, peptron1, perryprog, PeterFuto, PetMudstone, pewter-wiz, PGrayCS, pgraycs, Pgriha, phantom-lily, Pharaz4, pheenty, philingham, Phill101, Phooooooooooooooooooooooooooooooosphate, phunnyguy, PicklOH, PilgrimViis, Pill-U, pinkbat5, Piras314, Pireax, Pissachu, pissdemon, Pixel8-dev, PixeltheAertistContrib, PixelTheKermit, PJB3005, Plasmaguy, plinyvic, Plykiya, poeMota, pofitlo, pointer-to-null, Pok27, poklj, PolterTzi, PoorMansDreams, PopGamer45, portfiend, potato1234x, PotentiallyTom, PotRoastPiggy, Princess-Cheeseballs, ProfanedBane, Prole0, ProPandaBear, ProPeperos, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykana, psykzz, PuceTint, pumkin69, PuroSlavKing, PursuitInAshes, Putnam3145, py01, Pyrovi, qrtDaniil, qrwas, Quantum-cross, quasr-9, quatre, QueerNB, QuietlyWhisper, qwerltaz, Radezolid, RadioMull, Radosvik, Radrark, Rainbeon, Rainfey, Raitononai, Ramlik, RamZ, randy10122, Rane, Ranger6012, Rapidgame7, ravage123321, rbertoche, RedBookcase, Redfire1331, Redict, RedlineTriad, redmushie, RednoWCirabrab, Redrover1760, redspyy, ReeZer2, RemberBM, RemieRichards, RemTim, rene-descartes2021, Renlou, retequizzle, rewafflution, rhailrake, rhsvenson, rich-dunne, RieBi, riggleprime, RIKELOLDABOSS, rinary1, Rinkashikachi, riolume, rlebell33, RobbyTheFish, robinthedragon, robinthegirlthing, Rockdtben, Rohesie, rok-povsic, rokudara-sen, rolfero, RomanNovo, roryflowers, rosieposieeee, Roudenn, router, ruddygreat, rumaks-xyz, RumiTiger, Ruzihm, rwrv, S1rFl0, S1ss3l, Saakra, SabreML, Sadie-silly, saga3152, saintmuntzer, salarua, Salex08, sam, samgithubaccount, Samuka-C, SaphireLattice, SapphicOverload, sarahon, sativaleanne, SaveliyM360, sBasalto, ScalyChimp, ScarKy0, ScholarNZL, schrodinger71, scrato, Scribbles0, scrivoy, scruq445, scuffedjays, ScumbagDog, SeamLesss, Segonist, semensponge, sephtasm, ser1-1y, Serkket, sewerpig, SG6732, sh18rw, Shaddap1, ShadeAware, ShadowCommander, shadowtheprotogen546, shaeone, shampunj, shariathotpatrol, SharkSnake98, Shegare, shepardtothestars, shibechef, Siginanto, signalsender, SignalWalker, siigiil, silicon14wastaken, Silverfur-underscore, Simyon264, sirdragooon, Sirionaut, SirWarock, Sk1tch, SkaldetSkaeg, Skarletto, skeeka-dev, skrybl, Skybailey-dev, skye, Skyedra, SlamBamActionman, slarticodefast, Slava0135, sleepyyapril, slimmslamm, Slyfox333, Smugman, SnappingOpossum, snebl, snicket, sniperchance, Snowni, snowsignal, SolidSyn, SolidusSnek, solstar2, SomegnihT, SonarZeBat, SonicHDC, SoulFN, SoulSloth, Soundwavesghost, soupkilove, southbridge-fur, sowelipililimute, Soydium, SpaceLizard24, SpaceLizardSky, SpaceManiac, SpaceRox1244, SpaceyLady, Spangs04, spanky-spanky, Sparlight, spartak, SpartanKadence, spderman3333, SpeltIncorrectyl, Spessmann, SphiraI, SplinterGP, spoogemonster, sporekto, sporkyz, ssdaniel24, stalengd, stanberytrask, Stanislav4ix, StanTheCarpenter, starbuckss14, Stealthbomber16, steel, Steffo99, stellar-novas, stewie523, stomf, Stop-Signs, stopbreaking, stopka-html, StrawberryMoses, Stray-Pyramid, strO0pwafel, Strol20, StStevens, Subversionary, sunbear-dev, SuperGDPWYL, superjj18, Supernorn, SurrealShibe, SweetAplle, SweptWasTaken, SyaoranFox, Sybil, SYNCHRONIC, Synthestra, Szunti, t, Tainakov, takemysoult, taonewt, tap, TaralGit, Taran, taurie, Tayrtahn, tday93, teamaki, TeenSarlacc, TekuNut, telavivgamers, telyonok, temm1ie, TemporalOroboros, tentekal, terezi4real, Terraspark4941, texcruize, Tezzaide, TGODiamond, TGRCdev, tgrkzus, thanosdegraf, ThatGuyUSA, ThatOneGoblin25, thatrandomcanadianguy, TheArturZh, TheBlueYowie, thecopbennet, TheCze, TheDarkElites, thedraccx, TheEmber, theexetron, TheFlyingSentry, thefoty, TheGrimbeeper, TheIntoxicatedCat, thekilk, themias, theomund, TheProNoob678, TherapyGoth, ThereDrD0, TheSecondLord, TheShuEd, thetolbean, thevinter, TheWaffleJesus, Thinbug0, ThunderBear2006, timothyteakettle, TimrodDX, timurjavid, tin-man-tim, TiniestShark, Titian3, tk-a369, tkdrg, tmtmtl30, ToastEnjoyer, Toby222, TokenStyle, Tollhouse, Toly65, tom-leys, tomasalves8, Tomeno, Tonydatguy, topy, tornado-technology, TornadoTechnology, tosatur, TotallyLemon, ToxicSonicFan04, Tr1bute, travis-g-reid, treytipton, TriviaSolari, trixxedbit, TrixxedHeart, tropicalhibi, truepaintgit, Truoizys, Tryded, TsjipTsjip, tuchila-adi-bogdan, Tunguso4ka, TurboTrackerss14, TVK-04, tyashley, Tyler-IN, TytosB, Tyzemol, UbaserB, Uberration, ubis1, UBlueberry, uhbg, UKNOWH, UltimateJester, Unbelievable-Salmon, underscorex5, UnicornOnLSD, Unisol, Unkn0wnGh0st333, unusualcrow, Uriende, UristMcDorf, user424242420, Utmanarn, Vaaankas, valentfingerov, valquaint, Varen, Vasilis, VasilisThePikachu, veliebm, Velken, VelonacepsCalyxEggs, veprolet, VerinSenpai, veritable-calamity, Veritius, Vermidia, vero5123, verslebas, vexerot, vgskye, viceemargo, VigersRay, violet754, Visne, vitopigno, vitusveit, vlad, vlados1408, VMSolidus, vmzd, VoidMeticulous, voidnull000, volotomite, volundr-, Voomra, Vordenburg, vorkathbruh, Vortebo, vulppine, wachte1, wafehling, walksanatora, Warentan, WarMechanic, Watermelon914, weaversam8, wertanchik, whateverusername0, whatston3, widgetbeck, Will-Oliver-Br, Willhelm53, WilliamECrew, willicassi, Winkarst-cpu, wirdal, wixoaGit, WlarusFromDaSpace, Wolfkey-SomeoneElseTookMyUsername, Worldwaker, wrexbe, wtcwr68, xeri7, xkreksx, xprospero, xRiriq, xsainteer, YanehCheck, yathxyz, Ygg01, YotaXP, youarereadingthis, YoungThugSS14, Yousifb26, youtissoum, yunii, YuriyKiss, yuriykiss, zach-hill, Zadeon, Zalycon, zamp, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zero, ZeroDiamond, ZeWaka, zHonys, zionnBE, ZNixian, Zokkie, ZoldorfTheWizard, zonespace27, Zylofan, Zymem, zzylex From 05843d05c295727eee461c2cf16b484ec4b2038a Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Sat, 7 Mar 2026 19:40:48 -0500 Subject: [PATCH 485/603] Mix xenoborg_scream.ogg to mono (#43132) --- .../Audio/Voice/Xenoborg/xenoborg_scream.ogg | Bin 21785 -> 16751 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Resources/Audio/Voice/Xenoborg/xenoborg_scream.ogg b/Resources/Audio/Voice/Xenoborg/xenoborg_scream.ogg index 9ac12637fb38372c83b86feda7fdf84028d3c62f..40ed94f556c89a707e4938e6cf6933c432a35aa2 100644 GIT binary patch delta 15313 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 nQ#KTD*GiP?PHLpS8MYlc%_-;^5PakqRU|v literal 21785 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 Date: Sun, 8 Mar 2026 00:48:05 +0000 Subject: [PATCH 486/603] Fixing issue 42759, air grenades cannot be re-triggered. (#42866) Fixed #42759 - air grenades cannot be re-triggered --- .../Objects/Weapons/Throwable/canister_grenades.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/canister_grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/canister_grenades.yml index 255bb884c31..f65869d9dd2 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/canister_grenades.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/canister_grenades.yml @@ -115,3 +115,10 @@ enabled: True: { state: active } False: { state: spent } + - type: RemoveComponentsOnTrigger # should prevent it from being re-triggered + keysIn: + - timer + triggerOnce: true + components: + - type: TriggerOnUse + - type: TimerTrigger From 1821d1e4eca97ca732cfda43a2c502eb35e0b6ec Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 8 Mar 2026 01:06:32 +0000 Subject: [PATCH 487/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index bfe5e04cc2d..cd480ed757a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Centronias - changes: - - message: You can now attach paper labels to wrapped parcels. - type: Add - id: 9058 - time: '2025-10-08T22:27:58.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40783 - author: ToastEnjoyer changes: - message: On fland, the wardens enforcer has been removed. @@ -4003,3 +3996,10 @@ id: 9568 time: '2026-03-07T21:39:13.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43096 +- author: 11BelowStudio + changes: + - message: Spent air grenades cannot be re-triggered. + type: Fix + id: 9569 + time: '2026-03-08T01:05:24.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42866 From dd051d017c573954a14356b0cb255e72ff0ac06c Mon Sep 17 00:00:00 2001 From: Coco Date: Sun, 8 Mar 2026 06:35:23 -0400 Subject: [PATCH 488/603] Nukie guidebook improvements (#43131) * improve nukie guidebook (getting to the station, arming procedure) * removed show vessel from IFF Computer guidebook text --- .../Antagonist/Nuclear Operatives.xml | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/Resources/ServerInfo/Guidebook/Antagonist/Nuclear Operatives.xml b/Resources/ServerInfo/Guidebook/Antagonist/Nuclear Operatives.xml index 83288140c10..fe0adf57780 100644 --- a/Resources/ServerInfo/Guidebook/Antagonist/Nuclear Operatives.xml +++ b/Resources/ServerInfo/Guidebook/Antagonist/Nuclear Operatives.xml @@ -71,25 +71,31 @@ ## Getting to the Station You've got the plan, you've got the gear. Now, execute. - Grab a [bold]jetpack[/bold] from your armory and go with your other operatives to your [color=cyan]shuttle[/color]. - Among other things you may need, you'll find an [bold]IFF Computer[/bold] on the shuttle. It allows you to hide from other ships and mass scanners when [italic]Show IFF[/italic] and [italic]Show Vessel[/italic] are toggled off. + Go with your other operatives to your [color=cyan]shuttle[/color]. + Onboard, you'll find a folder with the [color=cyan]nuclear authentication code[/color]. + Memorize the code, then [bold]check to see if the nuke ID matches the nuke on your shuttle.[/bold] If it doesn't, you'll be arming the station's nuke instead. - When everyone is ready, FTL to the station and fly to it with a jetpack. Don't forget the code, your pinpointers and the nuke if you're taking it. + The shuttle is equipped with an [color=cyan]IFF Computer[/color]. It allows you to hide from other ships and mass scanners when [italic]Show IFF[/italic] is toggled off. + + When everyone is ready, FTL to the station and fly to it using the [color=cyan]jetpacks[/color] on the shuttle. Don't forget the code, your pinpointers, and the nuke if you're taking it. - + + ## The Nuke & Arming Procedure - You have a paper with the [color=cyan]nuclear authentication codes[/color] on your shuttle. [bold]Check to see if the nuke ID matches the one on your shuttle.[/bold] If it doesn't, you'll be arming the station's nuke instead. + You've made it this far. Finish the job. - Obtain the [bold]nuclear authentication disk[/bold] and insert it into the nuke. - Type in the [bold]nuclear authentication code[/bold] and press "[bold]E[/bold]" on the keypad to Enter. - - [bold]To begin the self-destruct sequence, press [color=#EB2D3A]ARM[/color][/bold]. After 300 seconds, the nuke will explode. - - [bold]Defend the nuke[/bold], even if it's at the cost of your lives! The mission requirements do not include your return. - - It takes 30 seconds for someone to [bold]disarm[/bold] the nuke. Re-arming it is possible, but the chance of mission success drops if you let it happen. - - Should the nuke be re-armed, the timer will start from where it left off. + - [bold]Anchor[/bold] the nuke on solid floor inside the station. + - [bold]To begin the detonation sequence, press [color=#EB2D3A]ARM[/color][/bold]. After 300 seconds, the nuke will explode. + - [bold]Defend the nuke from NT employees and cyborgs[/bold], even if it's at the cost of your lives! The mission requirements [italic]do not include your return[/italic]. + + It takes 30 seconds to [bold]disarm[/bold] the nuke. Re-arming it is possible, but the chance of mission success drops if you allow the countdown to be interrupted. + Should the nuke be re-armed, the timer will continue from where it left off. From 601e5721880418ce5f03fa45cef6374614182e3a Mon Sep 17 00:00:00 2001 From: Moony Date: Sun, 8 Mar 2026 23:27:45 +0100 Subject: [PATCH 489/603] Make map tests more fine-grained. (#42977) * Make map tests more fine-grained. * ..typo. * fix example * exclude Empty. * Adjust a scrounger test & fix it. * It does respect ignored prototypes, after I realized making it do so was really easy. * Fix it for real this time. * General scrounger enhancements for a GameRules test set. * Fix linter for real. * Address reviews. --- .../Tests/PostMapInitTest.cs | 190 ++++----- .../Tests/Utility/ScroungerTests.cs | 49 +++ .../Utility/GameDataScrounger.Files.cs | 100 +++++ .../Utility/GameDataScrounger.cs | 369 ++++++++++++++++++ Content.YAMLLinter/Program.cs | 2 + 5 files changed, 597 insertions(+), 113 deletions(-) create mode 100644 Content.IntegrationTests/Tests/Utility/ScroungerTests.cs create mode 100644 Content.IntegrationTests/Utility/GameDataScrounger.Files.cs create mode 100644 Content.IntegrationTests/Utility/GameDataScrounger.cs diff --git a/Content.IntegrationTests/Tests/PostMapInitTest.cs b/Content.IntegrationTests/Tests/PostMapInitTest.cs index c73af87e7d2..6147fb6e174 100644 --- a/Content.IntegrationTests/Tests/PostMapInitTest.cs +++ b/Content.IntegrationTests/Tests/PostMapInitTest.cs @@ -2,6 +2,7 @@ using System.IO; using System.Linq; using System.Text.RegularExpressions; +using Content.IntegrationTests.Utility; using YamlDotNet.RepresentationModel; using Content.Server.Administration.Systems; using Content.Server.GameTicking; @@ -82,28 +83,9 @@ public sealed class PostMapInitTest .Select(glob => new Regex(GlobToRegex(glob), RegexOptions.IgnoreCase | RegexOptions.Compiled)) .ToArray(); - private static readonly string[] GameMaps = - { - "Dev", - "TestTeg", - "Fland", - "Packed", - "Bagel", - "CentComm", - "Box", - "Marathon", - "MeteorArena", - "Saltern", - "Reach", - "Oasis", - "Plasma", - "Elkridge", - "Relic", - "dm01-entryway", - "Exo", - "Snowball", - "Serpentcrest", - }; + private static readonly string[] GameMaps = GameDataScrounger.PrototypesOfKind().Where(x => x != PoolManager.TestMap).ToArray(); + private static readonly ResPath[] AllMapFiles = GameDataScrounger.FilesInDirectoryInVfs("/Maps", "*.yml"); + private static readonly ResPath[] ShuttleMapFiles = GameDataScrounger.FilesInDirectoryInVfs("/Maps/Shuttles", "*.yml"); private static readonly ProtoId DoNotMapCategory = "DoNotMap"; @@ -146,53 +128,45 @@ await server.WaitPost(() => /// Asserts that shuttles are loadable and have been saved as grids and not maps. ///
[Test] - public async Task ShuttlesLoadableTest() + [TestCaseSource(nameof(ShuttleMapFiles))] + public async Task ShuttlesLoadableTest(ResPath path) { await using var pair = await PoolManager.GetServerClient(); var server = pair.Server; var entManager = server.ResolveDependency(); - var resMan = server.ResolveDependency(); var mapLoader = entManager.System(); var mapSystem = entManager.System(); var cfg = server.ResolveDependency(); Assert.That(cfg.GetCVar(CCVars.GridFill), Is.False); - var shuttleFolder = new ResPath("/Maps/Shuttles"); - var shuttles = resMan - .ContentFindFiles(shuttleFolder) - .Where(filePath => - filePath.Extension == "yml" && !filePath.Filename.StartsWith(".", StringComparison.Ordinal)) - .ToArray(); - await server.WaitPost(() => { Assert.Multiple(() => { - foreach (var path in shuttles) + mapSystem.CreateMap(out var mapId); + try { - mapSystem.CreateMap(out var mapId); - try - { - Assert.That(mapLoader.TryLoadGrid(mapId, path, out _), - $"Failed to load shuttle {path}, was it saved as a map instead of a grid?"); - } - catch (Exception ex) - { - throw new Exception($"Failed to load shuttle {path}, was it saved as a map instead of a grid?", - ex); - } - mapSystem.DeleteMap(mapId); + Assert.That(mapLoader.TryLoadGrid(mapId, path, out _), + $"Failed to load shuttle {path}, was it saved as a map instead of a grid?"); + } + catch (Exception ex) + { + throw new Exception($"Failed to load shuttle {path}, was it saved as a map instead of a grid?", + ex); } + mapSystem.DeleteMap(mapId); }); }); + await server.WaitRunTicks(1); await pair.CleanReturnAsync(); } [Test] - public async Task NoSavedPostMapInitTest() + [TestCaseSource(nameof(AllMapFiles))] + public async Task NoSavedPostMapInitTest(ResPath map) { await using var pair = await PoolManager.GetServerClient(); var server = pair.Server; @@ -201,47 +175,41 @@ public async Task NoSavedPostMapInitTest() var protoManager = server.ResolveDependency(); var loader = server.System(); - var mapFolder = new ResPath("/Maps"); - var maps = resourceManager - .ContentFindFiles(mapFolder) - .Where(filePath => filePath.Extension == "yml" && !filePath.Filename.StartsWith(".", StringComparison.Ordinal)) - .ToArray(); + var rootedPath = map.ToRootedPath(); - var v7Maps = new List(); - foreach (var map in maps) - { - var rootedPath = map.ToRootedPath(); + var isV7Map = false; - // ReSharper disable once RedundantLogicalConditionalExpressionOperand - if (SkipTestMaps && rootedPath.ToString().StartsWith(TestMapsPath, StringComparison.Ordinal)) - { - continue; - } + // ReSharper disable once RedundantLogicalConditionalExpressionOperand + if (SkipTestMaps && rootedPath.ToString().StartsWith(TestMapsPath, StringComparison.Ordinal)) + { + await pair.CleanReturnAsync(); + return; // We just pass immediately. + } - if (!resourceManager.TryContentFileRead(rootedPath, out var fileStream)) - { - Assert.Fail($"Map not found: {rootedPath}"); - } + if (!resourceManager.TryContentFileRead(rootedPath, out var fileStream)) + { + Assert.Fail($"Map not found: {rootedPath}"); + } - using var reader = new StreamReader(fileStream); - var yamlStream = new YamlStream(); + using var reader = new StreamReader(fileStream); + var yamlStream = new YamlStream(); - yamlStream.Load(reader); + yamlStream.Load(reader); - var root = yamlStream.Documents[0].RootNode; - var meta = root["meta"]; - var version = meta["format"].AsInt(); + var root = yamlStream.Documents[0].RootNode; + var meta = root["meta"]; + var version = meta["format"].AsInt(); - // TODO MAP TESTS - // Move this to some separate test? - CheckDoNotMap(map, root, protoManager); - - if (version >= 7) - { - v7Maps.Add(map); - continue; - } + // TODO MAP TESTS + // Move this to some separate test? + CheckDoNotMap(map, root, protoManager); + if (version >= 7) + { + isV7Map = true; + } + else + { var postMapInit = meta["postmapinit"].AsBool(); Assert.That(postMapInit, Is.False, $"Map {map.Filename} was saved postmapinit"); } @@ -250,7 +218,7 @@ public async Task NoSavedPostMapInitTest() var ev = new BeforeEntityReadEvent(); server.EntMan.EventBus.RaiseEvent(EventSource.Local, ev); - foreach (var map in v7Maps) + if (isV7Map) { Assert.That(IsPreInit(map, loader, deps, ev.RenamedPrototypes, ev.DeletedPrototypes)); } @@ -523,7 +491,8 @@ public async Task AllMapsTested() } [Test] - public async Task NonGameMapsLoadableTest() + [TestCaseSource(nameof(AllMapFiles))] + public async Task NonGameMapsLoadableTest(ResPath mapPath) { await using var pair = await PoolManager.GetServerClient(); var server = pair.Server; @@ -536,24 +505,21 @@ public async Task NonGameMapsLoadableTest() var gameMaps = protoManager.EnumeratePrototypes().Select(o => o.MapPath).ToHashSet(); - var mapFolder = new ResPath("/Maps"); - var maps = resourceManager - .ContentFindFiles(mapFolder) - .Where(filePath => filePath.Extension == "yml" && !filePath.Filename.StartsWith(".", StringComparison.Ordinal)) - .ToArray(); - var mapPaths = new List(); - foreach (var map in maps) + if (gameMaps.Contains(mapPath)) { - if (gameMaps.Contains(map)) - continue; + // TODO: You might be able to save like, 1-2 seconds of test time if you eliminate these before + // actually needing a pair. + await pair.CleanReturnAsync(); + return; + } - var rootedPath = map.ToRootedPath(); - if (SkipTestMaps && rootedPath.ToString().StartsWith(TestMapsPath, StringComparison.Ordinal)) - { - continue; - } - mapPaths.Add(rootedPath); + var rootedPath = mapPath.ToRootedPath(); + + if (SkipTestMaps && rootedPath.ToString().StartsWith(TestMapsPath, StringComparison.Ordinal)) + { + await pair.CleanReturnAsync(); + return; } await server.WaitPost(() => @@ -572,29 +538,27 @@ await server.WaitPost(() => }; HashSet> maps; - foreach (var path in mapPaths) + + try { - try - { - Assert.That(mapLoader.TryLoadGeneric(path, out maps, out _, opts)); - } - catch (Exception ex) - { - throw new Exception($"Failed to load map {path}", ex); - } + Assert.That(mapLoader.TryLoadGeneric(mapPath, out maps, out _, opts)); + } + catch (Exception ex) + { + throw new Exception($"Failed to load map {mapPath}", ex); + } - try - { - foreach (var map in maps) - { - server.EntMan.DeleteEntity(map); - } - } - catch (Exception ex) + try + { + foreach (var map in maps) { - throw new Exception($"Failed to delete map {path}", ex); + server.EntMan.DeleteEntity(map); } } + catch (Exception ex) + { + throw new Exception($"Failed to delete map {mapPath}", ex); + } }); }); diff --git a/Content.IntegrationTests/Tests/Utility/ScroungerTests.cs b/Content.IntegrationTests/Tests/Utility/ScroungerTests.cs new file mode 100644 index 00000000000..9bfadc284d5 --- /dev/null +++ b/Content.IntegrationTests/Tests/Utility/ScroungerTests.cs @@ -0,0 +1,49 @@ +using Content.IntegrationTests.Utility; +using Robust.Shared.Prototypes; +using Robust.Shared.Utility; + +namespace Content.IntegrationTests.Tests.Utility; + +[TestOf(typeof(GameDataScrounger))] +public sealed class ScroungerTests +{ + [Test] + [Description("Assert that the data scrounger finds prototypes by type successfully.")] + public void ScroungeByType() + { + var scrounged = GameDataScrounger.PrototypesOfKind(); + Assert.That(scrounged, Is.Not.Empty); + } + + [Test] + [Description("Assert that the data scrounger finds all files by pattern in a directory successfully.")] + [TestCase("*.yml")] + [TestCase("*.txt")] + public void ScroungeByPattern(string pattern) + { + var files = GameDataScrounger.FilesInDirectory("/", pattern); + + Assert.That(files, Is.Not.Empty); + } + + [Test] + [Description("Assert that the data scrounger finds all files by pattern in a directory successfully, and returns valid VFS paths.")] + public void ScroungeByPatternInVfs() + { + var files = GameDataScrounger.FilesInDirectoryInVfs("/Maps", "*.yml"); + + Assert.That(files, Is.Not.Empty); + + Assert.That(files[0].IsRooted, Is.True); + Assert.That(files[0].ToString(), Does.StartWith("/Maps/")); + } + + [Test] + [Description("Assert that the data scrounger finds entities by component successfully.")] + public void ScroungeByComponent() + { + var items = GameDataScrounger.EntitiesWithComponent("Item"); + + Assert.That(items, Is.Not.Empty); + } +} diff --git a/Content.IntegrationTests/Utility/GameDataScrounger.Files.cs b/Content.IntegrationTests/Utility/GameDataScrounger.Files.cs new file mode 100644 index 00000000000..4236494b4a9 --- /dev/null +++ b/Content.IntegrationTests/Utility/GameDataScrounger.Files.cs @@ -0,0 +1,100 @@ +using System.IO; +using System.Linq; +using Robust.Shared.ContentPack; +using Robust.Shared.Utility; + +namespace Content.IntegrationTests.Utility; + +public static partial class GameDataScrounger +{ + /// + /// Returns all files in a given content location that match a pattern. + /// + /// The directory within the VFS to search + /// A glob pattern to use as a filter + /// Whether to search directories within the given directory. + /// A list of all files within the VFS directory matching the pattern. + public static string[] FilesInDirectory(string location, string pattern, bool recursive = true) + { + var path = GetContentPathOnDisk(location); + + return Directory.EnumerateFiles(path, + pattern ?? "*", + recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly) + .ToArray(); + } + + /// + /// Returns all files in a given content location that match a pattern, as their VFS paths. + /// + /// The directory within the VFS to search + /// A glob pattern to use as a filter + /// Whether to search directories within the given directory. + /// A list of all file paths within the VFS directory matching the pattern. + public static ResPath[] FilesInDirectoryInVfs(string location, string pattern, bool recursive = true) + { + var path = GetContentPathOnDisk(location.TrimEnd('/')); + var resBasePath = ContentResources(); + + return Directory.EnumerateFiles(path, + pattern ?? "*", + recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly) + .Select(x => new ResPath(x.Remove(0, resBasePath.Length))) + .ToArray(); + } + + /// + /// Get the full directory path that the executable is located in. + /// + private static string GetExecutableDirectory() + { + // TODO: remove this shitty hack, either through making it less hardcoded into shared, + // or by making our file structure less spaghetti somehow. + var assembly = typeof(IResourceManager).Assembly; + var location = assembly.Location; + if (location == string.Empty) + { + // See https://docs.microsoft.com/en-us/dotnet/api/system.reflection.assembly.location?view=net-5.0#remarks + // This doesn't apply to us really because we don't do that kind of publishing, but whatever. + throw new InvalidOperationException("Cannot find path of executable."); + } + + return Path.GetDirectoryName(location)!; + } + + /// + /// Turns a relative path from the executable directory into a full path. + /// + private static string ExecutableRelativeFile(string file) + { + return Path.GetFullPath(Path.Combine(GetExecutableDirectory(), file)); + } + + /// + /// Mirrors a function in the engine for ease of maintenance. + /// + private static string FindContentRootDir() + { + return "../../"; + } + + /// + /// Mirrors a function in the engine for ease of maintenance. + /// + private static string ContentResources() + { + return ExecutableRelativeFile($"{FindContentRootDir()}Resources"); + } + + /// + /// Gets the real path of a path within the VFS. + /// + /// The path to get the real filesystem path of. + /// The real filesystem path. + public static string GetContentPathOnDisk(string path) + { + Assert.That(path, Does.StartWith("/"), "Path must be rooted."); + + return $"{ContentResources()}{path.ToString()}"; + } +} diff --git a/Content.IntegrationTests/Utility/GameDataScrounger.cs b/Content.IntegrationTests/Utility/GameDataScrounger.cs new file mode 100644 index 00000000000..764fd9dd9ab --- /dev/null +++ b/Content.IntegrationTests/Utility/GameDataScrounger.cs @@ -0,0 +1,369 @@ +#nullable enable +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Threading; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.Manager; +using Robust.Shared.Utility; +using YamlDotNet.RepresentationModel; + +namespace Content.IntegrationTests.Utility; + +/// +/// A helper class for when you need prototype or VFS data particularly early, like for test source lists. +/// +/// +/// +/// This does not include engine prototypes, nor anything generated at runtime, as it's made to be simple and fast +/// for usage during test framework startup where we cannot afford to initialize all of . +/// +/// +/// No initialization is required, it initializes itself on usage and all methods can be called immediately. +/// +/// +/// +/// +/// public static readonly string[] Maps = GameDataScrounger.PrototypesOfKind<GameMapPrototype>(); +/// +/// +public static partial class GameDataScrounger +{ + + /// + /// + /// YAML Linter, for Reasons, depends on the entirety of the test suite. + /// As such, scrounging erroring out due to bad YAML can make the linter fail spectacularly. + /// We do not want that, so the linter sets this, and we refuse to do any yaml-ing ourselves so the nicer set of + /// errors get to it. + /// + /// + /// Also, this means obviously bad YAML causes the main test suite to exit early. This is probably a pro, honestly. + /// + /// + /// + /// This should not be set mid-run, as some methods will return data and others will not depending on their implementation. + /// Set it before any operations that would call into GameDataScrounger. + /// + public static bool NoScrounging = false; + + /// + /// Prototype type to ID index. + /// + private static Dictionary>? _prototypeIndex = null; + + /// + /// Component type to prototype ID index. + /// + private static Dictionary>? _entitiesWithComponentIndex = null; + + /// + /// Entity proto to metadata index. + /// + private static Dictionary? _entitiesMetaIndex = null; + + private sealed class EntityMetadata + { + public required string Id; + public required HashSet Components; + public required List Parents; + public required bool Abstract; + } + + /// + /// Lock used to synchronize access to the prototype index. + /// + private static readonly Lock DataLock = new(); + + /// + /// Gets all prototypes of the given type kind. + /// + public static string[] PrototypesOfKind() + where T : IPrototype + { + if (typeof(T).GetCustomAttribute() is { Type: { } ty }) + return PrototypesOfKind(ty); + + return PrototypesOfKind(PrototypeUtility.CalculatePrototypeName(typeof(T).Name)); + } + + /// + /// Gets all prototypes of the given string kind. + /// + public static string[] PrototypesOfKind(string kind) + { + if (NoScrounging) + return Array.Empty(); + + lock (DataLock) + { + Scrounge(); + + return _prototypeIndex[kind].ToArray(); + } + } + + /// + /// Returns all entities with the given component. + /// + /// + /// This does not accept components by type due to a non-public engine API that needs unsealed. + /// When that is done, this will be removed and usages of it upstream will be refactored to go by type. + /// + /// The name (like one would put in YAML) of the component to look for. + /// A list of entity prototype IDs that have the given component. + public static string[] EntitiesWithComponent(string componentId) + { + if (NoScrounging) + return Array.Empty(); + + lock (DataLock) + { + if (_entitiesWithComponentIndex is { } index) + { + return index[componentId].ToArray(); + } + else + { + Scrounge(); + + return _entitiesWithComponentIndex[componentId].ToArray(); + } + } + } + + /// + /// Ensures that the internal indices are initialized and not null. + /// This will not do anything if they're initialized, and will initialize them to be empty if + /// is set. + /// + [MemberNotNull(nameof(_prototypeIndex))] + [MemberNotNull(nameof(_entitiesWithComponentIndex))] + [MemberNotNull(nameof(_entitiesMetaIndex))] + private static void Scrounge() + { + if (_prototypeIndex is not null && _entitiesWithComponentIndex is not null && _entitiesMetaIndex is not null) + return; + + // Initialize regardless of if we actually fill them out. + // As we promise they will not be null, and various methods rely on this even if they're mpty. + _prototypeIndex = new(); + _entitiesWithComponentIndex = new(); + _entitiesMetaIndex = new(); + + if (NoScrounging) + return; + + var resDir = ContentResources(); + Assert.That(Directory.Exists($"{resDir}/Prototypes")); + + var ignoreList = GetIgnoredPrototypes(resDir); + + // Start with our root directory. We use this as a stack of directories to traverse. + var explorationStack = new List() { $"{resDir}/Prototypes" }; + + while (explorationStack.Count > 0) + { + // Take a directory off the stack. + var dir = explorationStack.Pop(); + + if (ignoreList.Contains(dir)) + continue; // It's all abstract anyway. + + explorationStack.AddRange(Directory.EnumerateDirectories(dir)); + + foreach (var file in Directory.EnumerateFiles(dir, "*.yml")) + { + if (ignoreList.Contains(file)) + continue; // It's all abstract anyway. + + foreach (var (kind, id) in IndexPrototypesIn(file)) + { + // alternate universe where .net has rust's Entry api. + if (!_prototypeIndex.TryGetValue(kind, out var list)) + { + _prototypeIndex[kind] = new(); + list = _prototypeIndex[kind]; + } + + list.Add(id); + } + } + } + + PushInheritanceAndIndex(); + } + + private static readonly YamlScalarNode IdNode = new("id"); + private static readonly YamlScalarNode TypeNode = new("type"); + + /// + /// Indexes all prototypes in a folder, adding them to as necessary and + /// yielding all (type, id) pairs. + /// + /// The file to index. + /// An enumerator of all prototypes in the file, regardless of kind. + private static IEnumerable<(string type, string id)> IndexPrototypesIn(string file) + { + var stream = new YamlStream(); + + stream.Load(File.OpenText(file)); + + foreach (var document in stream) + { + Assert.That(document.RootNode, Is.AssignableTo()); + var node = (YamlSequenceNode)document.RootNode; + + foreach (var entry in node.Children) + { + Assert.That(entry, Is.AssignableTo()); + var entryMapping = (YamlMappingNode)entry; + + var id = entryMapping[IdNode]; + var type = entryMapping[TypeNode]; + var @abstract = false; + if (entryMapping.TryGetNode("abstract", out YamlScalarNode? abstractNode)) + { + // TODO: This technically will exclude prototypes that use the abstract field for their own stuff, + // and not for parenting. However no such prototype exists in the game as of writing and solving + // this is mildly nontrivial. + + // We use exact equality to match what serialization does. + if (abstractNode.Value == "true") + @abstract = true; + } + + if (!@abstract) + yield return (((YamlScalarNode)type).Value!, ((YamlScalarNode)id).Value!); + + // If we're an entity prototype.. + if (type is not YamlScalarNode { Value: "entity" }) + continue; + + // then do some metadata indexing that's feasible w/o serializationmanager. + + entryMapping.TryGetNode("components", out YamlSequenceNode? components); + + var parents = new List(); + + if (entryMapping.TryGetNode("parent", out var parentNode)) + { + switch (parentNode) + { + case YamlScalarNode scalar: + { + parents.Add(scalar.Value!); + break; + } + case YamlSequenceNode seq: + { + parents.AddRange(seq.Children.Select(x => x.AsString())); + break; + } + } + } + + + // Assemble metadata for this entity prototype w/o needing serializationmanager. + var entity = new EntityMetadata() + { + Abstract = @abstract, + Components = components?.Children.Select(x => x["type"].ToString()).ToHashSet() ?? new(), + Parents = parents, + Id = id.AsString(), + }; + + _entitiesMetaIndex![id.AsString()] = entity; + } + } + } + + /// + /// Iterates through , filling out + /// as it works and ensuring all inheritance-provided components are found. + /// + private static void PushInheritanceAndIndex() + { + var visitedEntities = new HashSet(); + + foreach (var entity in _entitiesMetaIndex!.Values) + { + VisitEntity(entity, visitedEntities); + + if (entity.Abstract) + continue; // We don't index abstract entities here. + + foreach (var component in entity.Components) + { + if (!_entitiesWithComponentIndex!.TryGetValue(component, out var list)) + { + list = new(); + _entitiesWithComponentIndex[component] = list; + } + + list.Add(entity.Id); + } + } + } + + /// + /// Visits the given entity, potentially recursively in order to discover all of its components. + /// + /// The entity to 'visit' and gather metadata on. + /// The set of all visited entities. + private static void VisitEntity(EntityMetadata entity, in HashSet visitedEntities) + { + // Return if we've visited already. + if (!visitedEntities.Add(entity.Id)) + return; + + foreach (var parent in entity.Parents) + { + var parentMeta = _entitiesMetaIndex![parent]; + VisitEntity(parentMeta, visitedEntities); + + entity.Components.UnionWith(parentMeta.Components); + } + } + + // Did you know there's no way to find the resources folder in the real filesystem + // from content? Makes sense, but ough. So this is unfortunately copy-pasted from engine. + // I don't think it's worth it to add an API for this to engine due to the security implications for sandboxed + // content. + + // This is indeed, unfortunately, a replica of Content.Shared/Entry/EntryPoint.cs:129 + // That code relies on engine tools we can't use here, because we can't even spin up engine. + private static HashSet GetIgnoredPrototypes(string resDir) + { + var ignores = new HashSet(); + var ignoredProtosPath = $"{resDir}/IgnoredPrototypes"; + + if (!Directory.Exists(ignoredProtosPath)) + return ignores; // Nothing to do. + + foreach (var path in Directory.EnumerateFiles($"{resDir}/IgnoredPrototypes")) + { + var stream = new YamlStream(); + + stream.Load(File.OpenText(path)); + + foreach (var document in stream) + { + if (document.RootNode is not YamlSequenceNode seq) + throw new Exception($"The ignored prototypes file at {path} isn't a valid yaml sequence/list."); + + foreach (var entry in seq) + { + if (entry is not YamlScalarNode { Value: {} value }) + throw new Exception($"An entry in {path} is not a valid YAML scalar/string literal. Entry: {entry}"); + + ignores.Add(value); + } + } + } + + return ignores; + } +} diff --git a/Content.YAMLLinter/Program.cs b/Content.YAMLLinter/Program.cs index d37acff8e0d..8351c226674 100644 --- a/Content.YAMLLinter/Program.cs +++ b/Content.YAMLLinter/Program.cs @@ -4,6 +4,7 @@ using System.Reflection; using System.Threading.Tasks; using Content.IntegrationTests; +using Content.IntegrationTests.Utility; using Robust.Shared.Prototypes; using Robust.Shared.Reflection; using Robust.Shared.Serialization.Markdown.Validation; @@ -17,6 +18,7 @@ internal static class Program { private static async Task Main(string[] _) { + GameDataScrounger.NoScrounging = true; // Ugly hack for YAML Linter. PoolManager.Startup(); var stopwatch = new Stopwatch(); stopwatch.Start(); From 1b5011152b6e1e4e5d871a251d6ba5618db02df1 Mon Sep 17 00:00:00 2001 From: Red <96445749+TheShuEd@users.noreply.github.com> Date: Mon, 9 Mar 2026 02:28:48 +0300 Subject: [PATCH 490/603] Weather entities (#41427) * weather status effect entities * proto port + fixes * Update weather.yml * fix visuals * Update SharedWeatherSystem.cs * Update SharedWeatherSystem.cs * Update WeatherSystem.cs * Thanks Slarti, thats a much better * Update WeatherSystem.cs * Update StencilOverlay.Weather.cs * Update Content.Client/Overlays/StencilOverlay.Weather.cs Co-authored-by: Pok <113675512+Pok27@users.noreply.github.com> * Update Content.Shared/StatusEffectNew/Components/StatusEffectComponent.cs Co-authored-by: Pok <113675512+Pok27@users.noreply.github.com> * Update Content.Client/Overlays/StencilOverlay.Weather.cs Co-authored-by: Pok <113675512+Pok27@users.noreply.github.com> * Revise weather command help descriptions Updated weather command help texts for clarity. * Merge branch 'master' into ed-14-11-2025-weather-entities * Tayrtahn review apply * fixes and cleanup --------- Co-authored-by: Pok <113675512+Pok27@users.noreply.github.com> Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- .../Overlays/StencilOverlay.Weather.cs | 72 +++-- Content.Client/Overlays/StencilOverlay.cs | 22 +- .../Overlays/StencilOverlaySystem.cs | 4 +- Content.Client/Weather/WeatherSystem.cs | 202 ++++++------- .../Weather/Commands/WeatherAddCommand.cs | 89 ++++++ .../Weather/Commands/WeatherRemoveCommand.cs | 82 +++++ .../Weather/Commands/WeatherSetCommand.cs | 91 ++++++ Content.Server/Weather/WeatherSystem.cs | 84 +---- .../Modifiers/SalvageWeatherMod.cs | 6 +- .../Components/StatusEffectComponent.cs | 6 + .../StatusEffectNew/StatusEffectsSystem.cs | 2 +- .../Effects/WeatherOnTriggerComponent.cs | 4 +- .../Trigger/Systems/WeatherTriggerSystem.cs | 4 +- Content.Shared/Weather/SharedWeatherSystem.cs | 286 ++++++++---------- Content.Shared/Weather/WeatherComponent.cs | 53 ---- Content.Shared/Weather/WeatherPrototype.cs | 23 -- .../Weather/WeatherStatusEffectComponent.cs | 46 +++ Resources/Locale/en-US/weather/weather.ftl | 19 +- .../Entities/StatusEffects/weather.yml | 178 +++++++++++ .../Prototypes/SoundCollections/weather.yml | 5 + Resources/Prototypes/weather.yml | 138 --------- 21 files changed, 794 insertions(+), 622 deletions(-) create mode 100644 Content.Server/Weather/Commands/WeatherAddCommand.cs create mode 100644 Content.Server/Weather/Commands/WeatherRemoveCommand.cs create mode 100644 Content.Server/Weather/Commands/WeatherSetCommand.cs delete mode 100644 Content.Shared/Weather/WeatherComponent.cs delete mode 100644 Content.Shared/Weather/WeatherPrototype.cs create mode 100644 Content.Shared/Weather/WeatherStatusEffectComponent.cs create mode 100644 Resources/Prototypes/Entities/StatusEffects/weather.yml create mode 100644 Resources/Prototypes/SoundCollections/weather.yml delete mode 100644 Resources/Prototypes/weather.yml diff --git a/Content.Client/Overlays/StencilOverlay.Weather.cs b/Content.Client/Overlays/StencilOverlay.Weather.cs index 66a6a799a76..2a46dbecd52 100644 --- a/Content.Client/Overlays/StencilOverlay.Weather.cs +++ b/Content.Client/Overlays/StencilOverlay.Weather.cs @@ -1,9 +1,9 @@ using System.Numerics; using Content.Shared.Light.Components; +using Content.Shared.StatusEffectNew.Components; using Content.Shared.Weather; using Robust.Client.Graphics; using Robust.Shared.Map.Components; -using Robust.Shared.Physics.Components; namespace Content.Client.Overlays; @@ -14,8 +14,7 @@ public sealed partial class StencilOverlay private void DrawWeather( in OverlayDrawArgs args, CachedResources res, - WeatherPrototype weatherProto, - float alpha, + HashSet> weathers, Matrix3x2 invMatrix) { var worldHandle = args.WorldHandle; @@ -27,47 +26,58 @@ private void DrawWeather( // Cut out the irrelevant bits via stencil // This is why we don't just use parallax; we might want specific tiles to get drawn over // particularly for planet maps or stations. - worldHandle.RenderInRenderTarget(res.Blep!, () => - { - var xformQuery = _entManager.GetEntityQuery(); - _grids.Clear(); - - // idk if this is safe to cache in a field and clear sloth help - _mapManager.FindGridsIntersecting(mapId, worldAABB, ref _grids); - - foreach (var grid in _grids) + worldHandle.RenderInRenderTarget(res.Blep!, + () => { - var matrix = _transform.GetWorldMatrix(grid, xformQuery); - var matty = Matrix3x2.Multiply(matrix, invMatrix); - worldHandle.SetTransform(matty); - _entManager.TryGetComponent(grid.Owner, out RoofComponent? roofComp); + var xformQuery = _entManager.GetEntityQuery(); + _grids.Clear(); - foreach (var tile in _map.GetTilesIntersecting(grid.Owner, grid, worldAABB)) + // idk if this is safe to cache in a field and clear sloth help + _mapManager.FindGridsIntersecting(mapId, worldAABB, ref _grids); + + foreach (var grid in _grids) { - // Ignored tiles for stencil - if (_weather.CanWeatherAffect(grid.Owner, grid, tile, roofComp)) + var matrix = _transform.GetWorldMatrix(grid, xformQuery); + var matty = Matrix3x2.Multiply(matrix, invMatrix); + worldHandle.SetTransform(matty); + _entManager.TryGetComponent(grid.Owner, out RoofComponent? roofComp); + + foreach (var tile in _map.GetTilesIntersecting(grid.Owner, grid, worldAABB)) { - continue; - } + // Ignored tiles for stencil + if (_weather.CanWeatherAffect((grid.Owner, grid, roofComp), tile)) + continue; - var gridTile = new Box2(tile.GridIndices * grid.Comp.TileSize, - (tile.GridIndices + Vector2i.One) * grid.Comp.TileSize); + var gridTile = new Box2(tile.GridIndices * grid.Comp.TileSize, + (tile.GridIndices + Vector2i.One) * grid.Comp.TileSize); - worldHandle.DrawRect(gridTile, Color.White); + worldHandle.DrawRect(gridTile, Color.White); + } } - } - - }, Color.Transparent); + }, + Color.Transparent); worldHandle.SetTransform(Matrix3x2.Identity); worldHandle.UseShader(_protoManager.Index(StencilMask).Instance()); worldHandle.DrawTextureRect(res.Blep!.Texture, worldBounds); var curTime = _timing.RealTime; - var sprite = _sprite.GetFrame(weatherProto.Sprite, curTime); - // Draw the rain - worldHandle.UseShader(_protoManager.Index(StencilDraw).Instance()); - _parallax.DrawParallax(worldHandle, worldAABB, sprite, curTime, position, Vector2.Zero, modulate: (weatherProto.Color ?? Color.White).WithAlpha(alpha)); + + foreach (var (uid, weather, status) in weathers) + { + var alpha = _weather.GetWeatherPercent((uid, status)); + var sprite = _sprite.GetFrame(weather.Sprite, curTime); + + // Draw the rain + worldHandle.UseShader(_protoManager.Index(StencilDraw).Instance()); + _parallax.DrawParallax(worldHandle, + worldAABB, + sprite, + curTime, + position, + weather.Scrolling ?? Vector2.Zero, + modulate: (weather.Color ?? Color.White).WithAlpha(alpha)); + } worldHandle.SetTransform(Matrix3x2.Identity); worldHandle.UseShader(null); diff --git a/Content.Client/Overlays/StencilOverlay.cs b/Content.Client/Overlays/StencilOverlay.cs index 276181468bc..3f4adaa4a1a 100644 --- a/Content.Client/Overlays/StencilOverlay.cs +++ b/Content.Client/Overlays/StencilOverlay.cs @@ -3,6 +3,8 @@ using Content.Client.Parallax; using Content.Client.Weather; using Content.Shared.Salvage; +using Content.Shared.StatusEffectNew; +using Content.Shared.StatusEffectNew.Components; using Content.Shared.Weather; using Robust.Client.GameObjects; using Robust.Client.Graphics; @@ -32,6 +34,8 @@ public sealed partial class StencilOverlay : Overlay private readonly SharedMapSystem _map; private readonly SpriteSystem _sprite; private readonly WeatherSystem _weather; + private readonly StatusEffectsSystem _statusEffects; + private HashSet>? _weatherSet = new(); public override OverlaySpace Space => OverlaySpace.WorldSpaceBelowFOV; @@ -39,7 +43,7 @@ public sealed partial class StencilOverlay : Overlay private readonly ShaderInstance _shader; - public StencilOverlay(ParallaxSystem parallax, SharedTransformSystem transform, SharedMapSystem map, SpriteSystem sprite, WeatherSystem weather) + public StencilOverlay(ParallaxSystem parallax, SharedTransformSystem transform, SharedMapSystem map, SpriteSystem sprite, WeatherSystem weather, StatusEffectsSystem statusEffects) { ZIndex = ParallaxSystem.ParallaxZIndex + 1; _parallax = parallax; @@ -47,6 +51,7 @@ public StencilOverlay(ParallaxSystem parallax, SharedTransformSystem transform, _map = map; _sprite = sprite; _weather = weather; + _statusEffects = statusEffects; IoCManager.InjectDependencies(this); _shader = _protoManager.Index(CircleShader).InstanceUnique(); } @@ -64,22 +69,11 @@ protected override void Draw(in OverlayDrawArgs args) res.Blep = _clyde.CreateRenderTarget(args.Viewport.Size, new RenderTargetFormatParameters(RenderTargetColorFormat.Rgba8Srgb), name: "weather-stencil"); } - if (_entManager.TryGetComponent(mapUid, out var comp)) - { - foreach (var (proto, weather) in comp.Weather) - { - if (!_protoManager.Resolve(proto, out var weatherProto)) - continue; - - var alpha = _weather.GetPercent(weather, mapUid); - DrawWeather(args, res, weatherProto, alpha, invMatrix); - } - } + if (_statusEffects.TryEffectsWithComp(mapUid, out _weatherSet)) + DrawWeather(args, res, _weatherSet, invMatrix); if (_entManager.TryGetComponent(mapUid, out var restrictedRangeComponent)) - { DrawRestrictedRange(args, res, restrictedRangeComponent, invMatrix); - } args.WorldHandle.UseShader(null); args.WorldHandle.SetTransform(Matrix3x2.Identity); diff --git a/Content.Client/Overlays/StencilOverlaySystem.cs b/Content.Client/Overlays/StencilOverlaySystem.cs index 364ec0fddbf..95243fe6f99 100644 --- a/Content.Client/Overlays/StencilOverlaySystem.cs +++ b/Content.Client/Overlays/StencilOverlaySystem.cs @@ -1,5 +1,6 @@ using Content.Client.Parallax; using Content.Client.Weather; +using Content.Shared.StatusEffectNew; using Robust.Client.GameObjects; using Robust.Client.Graphics; @@ -13,11 +14,12 @@ public sealed class StencilOverlaySystem : EntitySystem [Dependency] private readonly SharedMapSystem _map = default!; [Dependency] private readonly SpriteSystem _sprite = default!; [Dependency] private readonly WeatherSystem _weather = default!; + [Dependency] private readonly StatusEffectsSystem _status = default!; public override void Initialize() { base.Initialize(); - _overlay.AddOverlay(new StencilOverlay(_parallax, _transform, _map, _sprite, _weather)); + _overlay.AddOverlay(new StencilOverlay(_parallax, _transform, _map, _sprite, _weather, _status)); } public override void Shutdown() diff --git a/Content.Client/Weather/WeatherSystem.cs b/Content.Client/Weather/WeatherSystem.cs index 26def25a15f..4b63c059913 100644 --- a/Content.Client/Weather/WeatherSystem.cs +++ b/Content.Client/Weather/WeatherSystem.cs @@ -1,15 +1,15 @@ using System.Numerics; using Content.Shared.Light.Components; +using Content.Shared.StatusEffectNew.Components; using Content.Shared.Weather; using Robust.Client.Audio; using Robust.Client.GameObjects; using Robust.Client.Player; +using Robust.Shared.Audio.Components; using Robust.Shared.Audio.Systems; -using Robust.Shared.GameStates; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Player; -using AudioComponent = Robust.Shared.Audio.Components.AudioComponent; namespace Content.Client.Weather; @@ -20,149 +20,121 @@ public sealed class WeatherSystem : SharedWeatherSystem [Dependency] private readonly MapSystem _mapSystem = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; + private EntityQuery _audioQuery; + private EntityQuery _gridQuery; + private EntityQuery _roofQuery; + public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnWeatherHandleState); + + SubscribeLocalEvent(OnComponentShutdown); + + _audioQuery = GetEntityQuery(); + _gridQuery = GetEntityQuery(); + _roofQuery = GetEntityQuery(); } - protected override void Run(EntityUid uid, WeatherData weather, WeatherPrototype weatherProto, float frameTime) + private void OnComponentShutdown(Entity ent, ref ComponentShutdown args) { - base.Run(uid, weather, weatherProto, frameTime); + ent.Comp.Stream = _audio.Stop(ent.Comp.Stream); + } - var ent = _playerManager.LocalEntity; + public override void Update(float frameTime) + { + base.Update(frameTime); - if (ent == null) + if (!Timing.IsFirstTimePredicted) return; - var mapUid = Transform(uid).MapUid; - var entXform = Transform(ent.Value); + var player = _playerManager.LocalEntity; - // Maybe have the viewports manage this? - if (mapUid == null || entXform.MapUid != mapUid) - { - weather.Stream = _audio.Stop(weather.Stream); + if (player == null) return; - } - if (!Timing.IsFirstTimePredicted || weatherProto.Sound == null) - return; + var playerXform = Transform(player.Value); + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var weather, out var status)) + { + if (weather.Sound == null || status.AppliedTo != playerXform.MapUid) + { + weather.Stream = _audio.Stop(weather.Stream); + return; + } - weather.Stream ??= _audio.PlayGlobal(weatherProto.Sound, Filter.Local(), true)?.Entity; + weather.Stream ??= _audio.PlayGlobal(weather.Sound, Filter.Local(), true)?.Entity; - if (!TryComp(weather.Stream, out AudioComponent? comp)) - return; + if (!_audioQuery.TryComp(weather.Stream, out var audio)) + return; - var occlusion = 0f; + var occlusion = 0f; - // Work out tiles nearby to determine volume. - if (TryComp(entXform.GridUid, out var grid)) - { - TryComp(entXform.GridUid, out RoofComponent? roofComp); - var gridId = entXform.GridUid.Value; - // FloodFill to the nearest tile and use that for audio. - var seed = _mapSystem.GetTileRef(gridId, grid, entXform.Coordinates); - var frontier = new Queue(); - frontier.Enqueue(seed); - // If we don't have a nearest node don't play any sound. - EntityCoordinates? nearestNode = null; - var visited = new HashSet(); - - while (frontier.TryDequeue(out var node)) + // Work out tiles nearby to determine volume. + if (_gridQuery.TryComp(playerXform.GridUid, out var grid)) { - if (!visited.Add(node.GridIndices)) - continue; - - if (!CanWeatherAffect(entXform.GridUid.Value, grid, node, roofComp)) + _roofQuery.TryComp(playerXform.GridUid, out var roofComp); + var gridId = playerXform.GridUid.Value; + // FloodFill to the nearest tile and use that for audio. + var seed = _mapSystem.GetTileRef(gridId, grid, playerXform.Coordinates); + var frontier = new Queue(); + frontier.Enqueue(seed); + // If we don't have a nearest node don't play any sound. + EntityCoordinates? nearestNode = null; + var visited = new HashSet(); + + while (frontier.TryDequeue(out var node)) { - // Add neighbors - // TODO: Ideally we pick some deterministically random direction and use that - // We can't just do that naively here because it will flicker between nearby tiles. - for (var x = -1; x <= 1; x++) + if (!visited.Add(node.GridIndices)) + continue; + + if (!CanWeatherAffect((playerXform.GridUid.Value, grid, roofComp), node)) { - for (var y = -1; y <= 1; y++) + // Add neighbors + // TODO: Ideally we pick some deterministically random direction and use that + // We can't just do that naively here because it will flicker between nearby tiles. + for (var x = -1; x <= 1; x++) { - if (Math.Abs(x) == 1 && Math.Abs(y) == 1 || - x == 0 && y == 0 || - (new Vector2(x, y) + node.GridIndices - seed.GridIndices).Length() > 3) + for (var y = -1; y <= 1; y++) { - continue; + if (Math.Abs(x) == 1 && Math.Abs(y) == 1 || + x == 0 && y == 0 || + (new Vector2(x, y) + node.GridIndices - seed.GridIndices).Length() > 3) + { + continue; + } + + frontier.Enqueue(_mapSystem.GetTileRef(gridId, grid, new Vector2i(x, y) + node.GridIndices)); } - - frontier.Enqueue(_mapSystem.GetTileRef(gridId, grid, new Vector2i(x, y) + node.GridIndices)); } + + continue; } - continue; + nearestNode = new EntityCoordinates(playerXform.GridUid.Value, + node.GridIndices + grid.TileSizeHalfVector); + break; } - nearestNode = new EntityCoordinates(entXform.GridUid.Value, - node.GridIndices + grid.TileSizeHalfVector); - break; - } - - // Get occlusion to the targeted node if it exists, otherwise set a default occlusion. - if (nearestNode != null) - { - var entPos = _transform.GetMapCoordinates(entXform); - var nodePosition = _transform.ToMapCoordinates(nearestNode.Value).Position; - var delta = nodePosition - entPos.Position; - var distance = delta.Length(); - occlusion = _audio.GetOcclusion(entPos, delta, distance); - } - else - { - occlusion = 3f; - } - } - - var alpha = GetPercent(weather, uid); - alpha *= SharedAudioSystem.VolumeToGain(weatherProto.Sound.Params.Volume); - _audio.SetGain(weather.Stream, alpha, comp); - comp.Occlusion = occlusion; - } - - protected override bool SetState(EntityUid uid, WeatherState state, WeatherComponent comp, WeatherData weather, WeatherPrototype weatherProto) - { - if (!base.SetState(uid, state, comp, weather, weatherProto)) - return false; - - if (!Timing.IsFirstTimePredicted) - return true; - - // TODO: Fades (properly) - weather.Stream = _audio.Stop(weather.Stream); - weather.Stream = _audio.PlayGlobal(weatherProto.Sound, Filter.Local(), true)?.Entity; - return true; - } - - private void OnWeatherHandleState(EntityUid uid, WeatherComponent component, ref ComponentHandleState args) - { - if (args.Current is not WeatherComponentState state) - return; - - foreach (var (proto, weather) in component.Weather) - { - // End existing one - if (!state.Weather.TryGetValue(proto, out var stateData)) - { - EndWeather(uid, component, proto); - continue; + // Get occlusion to the targeted node if it exists, otherwise set a default occlusion. + if (nearestNode != null) + { + var entPos = _transform.GetMapCoordinates(playerXform); + var nodePosition = _transform.ToMapCoordinates(nearestNode.Value).Position; + var delta = nodePosition - entPos.Position; + var distance = delta.Length(); + occlusion = _audio.GetOcclusion(entPos, delta, distance); + } + else + { + occlusion = 3f; + } } - // Data update? - weather.StartTime = stateData.StartTime; - weather.EndTime = stateData.EndTime; - weather.State = stateData.State; - } - - foreach (var (proto, weather) in state.Weather) - { - if (component.Weather.ContainsKey(proto)) - continue; - - // New weather - StartWeather(uid, component, ProtoMan.Index(proto), weather.EndTime); + var alpha = GetWeatherPercent((uid, status)); + alpha *= SharedAudioSystem.VolumeToGain(weather.Sound.Params.Volume); + _audio.SetGain(weather.Stream, alpha, audio); + audio.Occlusion = occlusion; } } } diff --git a/Content.Server/Weather/Commands/WeatherAddCommand.cs b/Content.Server/Weather/Commands/WeatherAddCommand.cs new file mode 100644 index 00000000000..6054012db0c --- /dev/null +++ b/Content.Server/Weather/Commands/WeatherAddCommand.cs @@ -0,0 +1,89 @@ +using Content.Server.Administration; +using Content.Shared.Administration; +using Content.Shared.Prototypes; +using Content.Shared.Weather; +using Robust.Shared.Console; +using Robust.Shared.Map; +using Robust.Shared.Prototypes; + +namespace Content.Server.Weather.Commands; + +/// +/// Add specific weather to map. +/// +[AdminCommand(AdminFlags.Fun)] +public sealed class WeatherAddCommand : LocalizedEntityCommands +{ + [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly SharedMapSystem _map = default!; + [Dependency] private readonly WeatherSystem _weather = default!; + [Dependency] private readonly IComponentFactory _compFactory = default!; + + public override string Command => "weatheradd"; + + public override void Execute(IConsoleShell shell, string argStr, string[] args) + { + if (args.Length < 2) + { + shell.WriteError(Loc.GetString("cmd-weather-error-no-arguments")); + return; + } + + //MapId parse + if (!int.TryParse(args[0], out var mapInt)) + return; + + var mapId = new MapId(mapInt); + + if (!_map.MapExists(mapId)) + { + shell.WriteError(Loc.GetString("cmd-weather-error-wrong-map", ("id", mapId.ToString()))); + return; + } + + //Weather proto parse + EntProtoId weatherProto = args[1]; + if (!_proto.TryIndex(weatherProto, out _)) + { + shell.WriteError(Loc.GetString("cmd-weather-error-unknown-proto")); + return; + } + + //Time parsing + TimeSpan? duration = null; + if (args.Length == 3) + { + if (int.TryParse(args[2], out var durationInt)) + duration = TimeSpan.FromSeconds(durationInt); + else + shell.WriteError(Loc.GetString("cmd-weather-error-wrong-time")); + } + + _weather.TryAddWeather(mapId, weatherProto, out _, duration); + } + + + public override CompletionResult GetCompletion(IConsoleShell shell, string[] args) + { + if (args.Length == 1) + return CompletionResult.FromHintOptions(CompletionHelper.MapIds(EntityManager), Loc.GetString("cmd-weather-hint-map-id")); + + if (args.Length == 2) + { + var opts = new List(); + foreach (var proto in _proto.EnumeratePrototypes()) + { + if (!proto.HasComponent(_compFactory)) + continue; + + opts.Add(new CompletionOption(proto.ID, proto.Name)); + } + return CompletionResult.FromHintOptions(opts, Loc.GetString("cmd-weather-hint-prototype")); + } + + if (args.Length == 3) + return CompletionResult.FromHint(Loc.GetString("cmd-weather-hint-time")); + + return CompletionResult.Empty; + } +} diff --git a/Content.Server/Weather/Commands/WeatherRemoveCommand.cs b/Content.Server/Weather/Commands/WeatherRemoveCommand.cs new file mode 100644 index 00000000000..df8f91003f0 --- /dev/null +++ b/Content.Server/Weather/Commands/WeatherRemoveCommand.cs @@ -0,0 +1,82 @@ +using Content.Server.Administration; +using Content.Shared.Administration; +using Content.Shared.Prototypes; +using Content.Shared.Weather; +using Robust.Shared.Console; +using Robust.Shared.Map; +using Robust.Shared.Prototypes; + +namespace Content.Server.Weather.Commands; + +/// +/// Remove specific weather from map. +/// +[AdminCommand(AdminFlags.Fun)] +public sealed class WeatherRemoveCommand : LocalizedEntityCommands +{ + [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly SharedMapSystem _map = default!; + [Dependency] private readonly WeatherSystem _weather = default!; + [Dependency] private readonly IComponentFactory _compFactory = default!; + + public override string Command => "weatherremove"; + + public override void Execute(IConsoleShell shell, string argStr, string[] args) + { + if (args.Length < 2) + { + shell.WriteError(Loc.GetString("cmd-weather-error-no-arguments")); + return; + } + + //MapId parse + if (!int.TryParse(args[0], out var mapInt)) + return; + + var mapId = new MapId(mapInt); + + if (!_map.MapExists(mapId)) + { + shell.WriteError(Loc.GetString("cmd-weather-error-wrong-map", ("id", mapId.ToString()))); + return; + } + + //Weather proto parse + EntProtoId weatherProto = args[1]; + if (!_proto.TryIndex(weatherProto, out _)) + { + shell.WriteError(Loc.GetString("cmd-weather-error-unknown-proto")); + return; + } + + if (!_weather.HasWeather(mapId, weatherProto)) + { + shell.WriteError(Loc.GetString("cmd-weather-error-no-weather")); + return; + } + + _weather.TryRemoveWeather(mapId, weatherProto); + } + + + public override CompletionResult GetCompletion(IConsoleShell shell, string[] args) + { + if (args.Length == 1) + return CompletionResult.FromHintOptions(CompletionHelper.MapIds(EntityManager), Loc.GetString("cmd-weather-hint-map-id")); + + if (args.Length == 2) //TODO: dont show ALL weathers here, only weathers applied to selected map + { + var opts = new List(); + foreach (var proto in _proto.EnumeratePrototypes()) + { + if (!proto.HasComponent(_compFactory)) + continue; + + opts.Add(new CompletionOption(proto.ID, proto.Name)); + } + return CompletionResult.FromHintOptions(opts, Loc.GetString("cmd-weather-hint-prototype")); + } + + return CompletionResult.Empty; + } +} diff --git a/Content.Server/Weather/Commands/WeatherSetCommand.cs b/Content.Server/Weather/Commands/WeatherSetCommand.cs new file mode 100644 index 00000000000..77e8ed786d7 --- /dev/null +++ b/Content.Server/Weather/Commands/WeatherSetCommand.cs @@ -0,0 +1,91 @@ +using Content.Server.Administration; +using Content.Shared.Administration; +using Content.Shared.Prototypes; +using Content.Shared.Weather; +using Robust.Shared.Console; +using Robust.Shared.Map; +using Robust.Shared.Prototypes; + +namespace Content.Server.Weather.Commands; + +/// +/// Removes all weather except the specified one. If the specified weather does not exist on the map, it adds it. +/// +[AdminCommand(AdminFlags.Fun)] +public sealed class WeatherSetCommand : LocalizedEntityCommands +{ + [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly SharedMapSystem _map = default!; + [Dependency] private readonly WeatherSystem _weather = default!; + [Dependency] private readonly IComponentFactory _compFactory = default!; + + public override string Command => "weatherset"; + + public override void Execute(IConsoleShell shell, string argStr, string[] args) + { + if (args.Length < 2) + { + shell.WriteError(Loc.GetString("cmd-weather-error-no-arguments")); + return; + } + + //MapId parse + if (!int.TryParse(args[0], out var mapInt)) + return; + + var mapId = new MapId(mapInt); + + if (!_map.MapExists(mapId)) + { + shell.WriteError(Loc.GetString("cmd-weather-error-wrong-map", ("id", mapId.ToString()))); + return; + } + + //Weather proto parse + EntProtoId? weatherProto = args[1]; + if (args[1] == "null") + weatherProto = null; + else if (!_proto.TryIndex(weatherProto, out _)) + { + shell.WriteError(Loc.GetString("cmd-weather-error-unknown-proto")); + return; + } + + //Time parsing + TimeSpan? duration = null; + if (args.Length == 3) + { + if (int.TryParse(args[2], out var durationInt)) + duration = TimeSpan.FromSeconds(durationInt); + else + shell.WriteError(Loc.GetString("cmd-weather-error-wrong-time")); + } + + _weather.TrySetWeather(mapId, weatherProto, out _, duration); + } + + + public override CompletionResult GetCompletion(IConsoleShell shell, string[] args) + { + if (args.Length == 1) + return CompletionResult.FromHintOptions(CompletionHelper.MapIds(EntityManager), Loc.GetString("cmd-weather-hint-map-id")); + + if (args.Length == 2) + { + var opts = new List(); + foreach (var proto in _proto.EnumeratePrototypes()) + { + if (!proto.HasComponent(_compFactory)) + continue; + + opts.Add(new CompletionOption(proto.ID, proto.Name)); + } + return CompletionResult.FromHintOptions(opts, Loc.GetString("cmd-weather-hint-prototype")); + } + + if (args.Length == 3) + return CompletionResult.FromHint(Loc.GetString("cmd-weather-hint-time")); + + return CompletionResult.Empty; + } +} diff --git a/Content.Server/Weather/WeatherSystem.cs b/Content.Server/Weather/WeatherSystem.cs index 1ed61b8626b..58e1eb2b988 100644 --- a/Content.Server/Weather/WeatherSystem.cs +++ b/Content.Server/Weather/WeatherSystem.cs @@ -1,92 +1,30 @@ -using Content.Server.Administration; -using Content.Shared.Administration; using Content.Shared.Weather; -using Robust.Shared.Console; -using Robust.Shared.GameStates; -using Robust.Shared.Map; -using System.Linq; +using Robust.Server.GameStates; namespace Content.Server.Weather; public sealed class WeatherSystem : SharedWeatherSystem { - [Dependency] private readonly IConsoleHost _console = default!; - [Dependency] private readonly SharedMapSystem _mapSystem = default!; + //I dont really like to PVS override weather entities, but map status effect containers dont PVS-ing out of the box + [Dependency] private readonly PvsOverrideSystem _pvs = default!; public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnWeatherGetState); - _console.RegisterCommand("weather", - Loc.GetString("cmd-weather-desc"), - Loc.GetString("cmd-weather-help"), - WeatherTwo, - WeatherCompletion); - } - private void OnWeatherGetState(EntityUid uid, WeatherComponent component, ref ComponentGetState args) - { - args.State = new WeatherComponentState(component.Weather); + SubscribeLocalEvent(OnCompInit); + SubscribeLocalEvent(OnCompShutdown); } - [AdminCommand(AdminFlags.Fun)] - private void WeatherTwo(IConsoleShell shell, string argStr, string[] args) + private void OnCompInit(Entity ent, ref ComponentInit args) { - if (args.Length < 2) - { - shell.WriteError(Loc.GetString("cmd-weather-error-no-arguments")); - return; - } - - if (!int.TryParse(args[0], out var mapInt)) - return; - - var mapId = new MapId(mapInt); - - if (!_mapSystem.MapExists(mapId)) - return; - - if (!_mapSystem.TryGetMap(mapId, out var mapUid)) - return; - - var weatherComp = EnsureComp(mapUid.Value); - - //Weather Proto parsing - WeatherPrototype? weather = null; - if (!args[1].Equals("null")) - { - if (!ProtoMan.TryIndex(args[1], out weather)) - { - shell.WriteError(Loc.GetString("cmd-weather-error-unknown-proto")); - return; - } - } - - //Time parsing - TimeSpan? endTime = null; - if (args.Length == 3) - { - var curTime = Timing.CurTime; - if (int.TryParse(args[2], out var durationInt)) - { - endTime = curTime + TimeSpan.FromSeconds(durationInt); - } - else - { - shell.WriteError(Loc.GetString("cmd-weather-error-wrong-time")); - } - } - - SetWeather(mapId, weather, endTime); + // The map entitiy itself is networked by PVS if the player is on that map but not anything inside a container, + // So we need to add an overridce to make sure the client sees it. + _pvs.AddGlobalOverride(ent); } - private CompletionResult WeatherCompletion(IConsoleShell shell, string[] args) + private void OnCompShutdown(Entity ent, ref ComponentShutdown args) { - if (args.Length == 1) - return CompletionResult.FromHintOptions(CompletionHelper.MapIds(EntityManager), "Map Id"); - - var a = CompletionHelper.PrototypeIDs(true, ProtoMan); - var b = a.Concat(new[] { new CompletionOption("null", Loc.GetString("cmd-weather-null")) }); - return CompletionResult.FromHintOptions(b, Loc.GetString("cmd-weather-hint")); + _pvs.RemoveGlobalOverride(ent); } } diff --git a/Content.Shared/Salvage/Expeditions/Modifiers/SalvageWeatherMod.cs b/Content.Shared/Salvage/Expeditions/Modifiers/SalvageWeatherMod.cs index 8bf0614b46d..c16660335c8 100644 --- a/Content.Shared/Salvage/Expeditions/Modifiers/SalvageWeatherMod.cs +++ b/Content.Shared/Salvage/Expeditions/Modifiers/SalvageWeatherMod.cs @@ -20,8 +20,8 @@ public sealed partial class SalvageWeatherMod : IPrototype, IBiomeSpecificMod public List>? Biomes { get; private set; } = null; /// - /// Weather prototype to use on the planet. + /// Weather status effect prototype to use on the planet. /// - [DataField("weather", required: true, customTypeSerializer:typeof(PrototypeIdSerializer))] - public string WeatherPrototype = string.Empty; + [DataField("weather", required: true)] + public EntProtoId WeatherPrototype = string.Empty; } diff --git a/Content.Shared/StatusEffectNew/Components/StatusEffectComponent.cs b/Content.Shared/StatusEffectNew/Components/StatusEffectComponent.cs index a7c772434c5..28becccee21 100644 --- a/Content.Shared/StatusEffectNew/Components/StatusEffectComponent.cs +++ b/Content.Shared/StatusEffectNew/Components/StatusEffectComponent.cs @@ -50,4 +50,10 @@ public sealed partial class StatusEffectComponent : Component ///
[DataField] public EntityWhitelist? Blacklist; + + /// + /// QoL function, returns total duration of this status effect. + /// + [ViewVariables] + public TimeSpan Duration => EndEffectTime == null ? TimeSpan.MaxValue : EndEffectTime.Value - StartEffectTime; } diff --git a/Content.Shared/StatusEffectNew/StatusEffectsSystem.cs b/Content.Shared/StatusEffectNew/StatusEffectsSystem.cs index c80de1aaddb..512285eaf34 100644 --- a/Content.Shared/StatusEffectNew/StatusEffectsSystem.cs +++ b/Content.Shared/StatusEffectNew/StatusEffectsSystem.cs @@ -227,7 +227,7 @@ private bool TryAddStatusEffect( var endTime = delay == null ? _timing.CurTime + duration : _timing.CurTime + delay + duration; SetStatusEffectEndTime((effect.Value, effectComp), endTime); - var startTime = delay == null ? TimeSpan.Zero : _timing.CurTime + delay.Value; + var startTime = delay == null ? _timing.CurTime : _timing.CurTime + delay.Value; SetStatusEffectStartTime(effect.Value, startTime); TryApplyStatusEffect((statusEffect.Value, effectComp)); diff --git a/Content.Shared/Trigger/Components/Effects/WeatherOnTriggerComponent.cs b/Content.Shared/Trigger/Components/Effects/WeatherOnTriggerComponent.cs index 44ce576f7b6..68ffeed04e5 100644 --- a/Content.Shared/Trigger/Components/Effects/WeatherOnTriggerComponent.cs +++ b/Content.Shared/Trigger/Components/Effects/WeatherOnTriggerComponent.cs @@ -12,10 +12,10 @@ namespace Content.Shared.Trigger.Components.Effects; public sealed partial class WeatherOnTriggerComponent : BaseXOnTriggerComponent { /// - /// Weather type. Null to clear the weather. + /// Weather status effect proto. Null to clear the weather. /// [DataField, AutoNetworkedField] - public ProtoId? Weather; + public EntProtoId? Weather; /// /// How long the weather should last. Null for forever. diff --git a/Content.Shared/Trigger/Systems/WeatherTriggerSystem.cs b/Content.Shared/Trigger/Systems/WeatherTriggerSystem.cs index 3a64f94f676..c9b7de87d0e 100644 --- a/Content.Shared/Trigger/Systems/WeatherTriggerSystem.cs +++ b/Content.Shared/Trigger/Systems/WeatherTriggerSystem.cs @@ -17,13 +17,13 @@ protected override void OnTrigger(Entity ent, EntityU if (ent.Comp.Weather == null) //Clear weather if nothing is set { - _weather.SetWeather(xform.MapID, null, null); + _weather.TrySetWeather(xform.MapID, null, out _); return; } var endTime = ent.Comp.Duration == null ? null : ent.Comp.Duration + _timing.CurTime; if (_prototypeManager.Resolve(ent.Comp.Weather, out var weatherPrototype)) - _weather.SetWeather(xform.MapID, weatherPrototype, endTime); + _weather.TrySetWeather(xform.MapID, weatherPrototype, out _, endTime); } } diff --git a/Content.Shared/Weather/SharedWeatherSystem.cs b/Content.Shared/Weather/SharedWeatherSystem.cs index b5378849504..d2270cf5c0e 100644 --- a/Content.Shared/Weather/SharedWeatherSystem.cs +++ b/Content.Shared/Weather/SharedWeatherSystem.cs @@ -1,11 +1,13 @@ +using System.Diagnostics.CodeAnalysis; using Content.Shared.Light.Components; using Content.Shared.Light.EntitySystems; using Content.Shared.Maps; +using Content.Shared.StatusEffectNew; +using Content.Shared.StatusEffectNew.Components; using Robust.Shared.Audio.Systems; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Prototypes; -using Robust.Shared.Serialization; using Robust.Shared.Timing; namespace Content.Shared.Weather; @@ -14,231 +16,193 @@ public abstract class SharedWeatherSystem : EntitySystem { [Dependency] protected readonly IGameTiming Timing = default!; [Dependency] protected readonly IPrototypeManager ProtoMan = default!; + [Dependency] protected readonly SharedAudioSystem Audio = default!; [Dependency] private readonly ITileDefinitionManager _tileDefManager = default!; - [Dependency] private readonly MetaDataSystem _metadata = default!; - [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedMapSystem _mapSystem = default!; [Dependency] private readonly SharedRoofSystem _roof = default!; + [Dependency] private readonly StatusEffectsSystem _statusEffects = default!; private EntityQuery _blockQuery; + private EntityQuery _weatherQuery; + + public static readonly TimeSpan StartupTime = TimeSpan.FromSeconds(15); + public static readonly TimeSpan ShutdownTime = TimeSpan.FromSeconds(15); public override void Initialize() { base.Initialize(); - _blockQuery = GetEntityQuery(); - SubscribeLocalEvent(OnWeatherUnpaused); - } - - private void OnWeatherUnpaused(EntityUid uid, WeatherComponent component, ref EntityUnpausedEvent args) - { - foreach (var weather in component.Weather.Values) - { - weather.StartTime += args.PausedTime; - if (weather.EndTime != null) - weather.EndTime = weather.EndTime.Value + args.PausedTime; - } + _blockQuery = GetEntityQuery(); + _weatherQuery = GetEntityQuery(); } - public bool CanWeatherAffect(EntityUid uid, MapGridComponent grid, TileRef tileRef, RoofComponent? roofComp = null) + public bool CanWeatherAffect(Entity ent, TileRef tileRef) { if (tileRef.Tile.IsEmpty) return true; - if (Resolve(uid, ref roofComp, false) && _roof.IsRooved((uid, grid, roofComp), tileRef.GridIndices)) + if (!Resolve(ent, ref ent.Comp1)) + return false; + + if (Resolve(ent, ref ent.Comp2, false) && _roof.IsRooved((ent, ent.Comp1, ent.Comp2), tileRef.GridIndices)) return false; - var tileDef = (ContentTileDefinition) _tileDefManager[tileRef.Tile.TypeId]; + var tileDef = (ContentTileDefinition)_tileDefManager[tileRef.Tile.TypeId]; if (!tileDef.Weather) return false; - var anchoredEntities = _mapSystem.GetAnchoredEntitiesEnumerator(uid, grid, tileRef.GridIndices); + var anchoredEntities = _mapSystem.GetAnchoredEntitiesEnumerator(ent, ent.Comp1, tileRef.GridIndices); - while (anchoredEntities.MoveNext(out var ent)) + while (anchoredEntities.MoveNext(out var anchored)) { - if (_blockQuery.HasComponent(ent.Value)) + if (_blockQuery.HasComponent(anchored.Value)) return false; } return true; - } - public float GetPercent(WeatherData component, EntityUid mapUid) + /// + /// Calculates the current “strength” of the specified weather based on the duration of the status effect. + /// Between 0 and 1. + /// + public float GetWeatherPercent(Entity ent) { - var pauseTime = _metadata.GetPauseTime(mapUid); - var elapsed = Timing.CurTime - (component.StartTime + pauseTime); - var duration = component.Duration; + var elapsed = Timing.CurTime - ent.Comp.StartEffectTime; + var duration = ent.Comp.Duration; var remaining = duration - elapsed; - float alpha; - if (remaining < WeatherComponent.ShutdownTime) - { - alpha = (float) (remaining / WeatherComponent.ShutdownTime); - } - else if (elapsed < WeatherComponent.StartupTime) - { - alpha = (float) (elapsed / WeatherComponent.StartupTime); - } + if (remaining < ShutdownTime) + return (float)(remaining / ShutdownTime); + else if (elapsed < StartupTime) + return (float)(elapsed / StartupTime); else - { - alpha = 1f; - } - - return alpha; + return 1f; } - - public override void Update(float frameTime) + /// + /// Attempts to add a new weather status effect to the specified map. + /// Does not remove or replace any other existing weather effects on the map. + /// If the specified weather effect already exists, its duration will be overridden. + /// + /// The of the target map to apply the weather effect to. + /// The prototype ID () of the weather status effect to add. + /// When this method returns, contains the of the weather entity if the operation succeeded; otherwise, null. + /// Optional. The duration for which the weather should exist on the map. If null, the weather will persist indefinitely. + /// true if the weather was successfully added or updated; otherwise, false. + public bool TryAddWeather(MapId mapId, EntProtoId weatherProto, [NotNullWhen(true)] out EntityUid? weatherEnt, TimeSpan? duration = null) { - base.Update(frameTime); - - if (!Timing.IsFirstTimePredicted) - return; + weatherEnt = null; - var curTime = Timing.CurTime; - - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var comp)) - { - if (comp.Weather.Count == 0) - continue; - - foreach (var (proto, weather) in comp.Weather) - { - var endTime = weather.EndTime; - - // Ended - if (endTime != null && endTime < curTime) - { - EndWeather(uid, comp, proto); - continue; - } - - var remainingTime = endTime - curTime; - - // Admin messed up or the likes. - if (!ProtoMan.TryIndex(proto, out var weatherProto)) - { - Log.Error($"Unable to find weather prototype for {comp.Weather}, ending!"); - EndWeather(uid, comp, proto); - continue; - } - - // Shutting down - if (endTime != null && remainingTime < WeatherComponent.ShutdownTime) - { - SetState(uid, WeatherState.Ending, comp, weather, weatherProto); - } - // Starting up - else - { - var startTime = weather.StartTime; - var elapsed = Timing.CurTime - startTime; + if (!_mapSystem.TryGetMap(mapId, out var mapUid)) + return false; - if (elapsed < WeatherComponent.StartupTime) - { - SetState(uid, WeatherState.Starting, comp, weather, weatherProto); - } - } + return TryAddWeather(mapUid.Value, weatherProto, out weatherEnt, duration); + } - // Run whatever code we need. - Run(uid, weather, weatherProto, frameTime); - } - } + /// + /// Adds a new weather to a map. Does not remove other existing weathers. If this type of weather already exists, it simply overrides its duration. + /// + /// Target map entity + /// EntProtoId of weather status effect + /// When this method returns, contains the of the weather entity if the operation succeeded; otherwise, null. + /// How long this weather should exist on the map? If null - infinite duration + public bool TryAddWeather(EntityUid mapUid, EntProtoId weatherProto, [NotNullWhen(true)] out EntityUid? weatherEnt, TimeSpan? duration = null) + { + return _statusEffects.TrySetStatusEffectDuration(mapUid, weatherProto, out weatherEnt, duration); } /// - /// Shuts down all existing weather and starts the new one if applicable. + /// Checks if a specific weather exists on the given map. /// - public void SetWeather(MapId mapId, WeatherPrototype? proto, TimeSpan? endTime) + /// Target mapId + /// EntProtoId of weather status effect + /// True if the weather exists, otherwise false + public bool HasWeather(MapId mapId, EntProtoId weatherProto) { if (!_mapSystem.TryGetMap(mapId, out var mapUid)) - return; - - var weatherComp = EnsureComp(mapUid.Value); - - foreach (var (eProto, weather) in weatherComp.Weather) - { - // if we turn off the weather, we don't want endTime = null - if (proto == null) - endTime ??= Timing.CurTime + WeatherComponent.ShutdownTime; - - // Reset cooldown if it's an existing one. - if (proto is not null && eProto == proto.ID) - { - weather.EndTime = endTime; - if (weather.State == WeatherState.Ending) - weather.State = WeatherState.Running; - - Dirty(mapUid.Value, weatherComp); - continue; - } - - // Speedrun - var end = Timing.CurTime + WeatherComponent.ShutdownTime; - - if (weather.EndTime == null || weather.EndTime > end) - { - weather.EndTime = end; - Dirty(mapUid.Value, weatherComp); - } - } + return false; - if (proto != null) - StartWeather(mapUid.Value, weatherComp, proto, endTime); + return _statusEffects.TryGetStatusEffect(mapUid.Value, weatherProto, out _); } /// - /// Run every tick when the weather is running. + /// Slowly remove weather from a map. It should be gone after seconds. /// - protected virtual void Run(EntityUid uid, WeatherData weather, WeatherPrototype weatherProto, float frameTime) { } - - protected void StartWeather(EntityUid uid, WeatherComponent component, WeatherPrototype weather, TimeSpan? endTime) + /// Target mapId + /// EntProtoId of weather status effect + public bool TryRemoveWeather(MapId mapId, EntProtoId weatherProto) { - if (component.Weather.ContainsKey(weather.ID)) - return; - - var data = new WeatherData() - { - StartTime = Timing.CurTime, - EndTime = endTime, - }; + if (!_mapSystem.TryGetMap(mapId, out var mapUid)) + return false; - component.Weather.Add(weather.ID, data); - Dirty(uid, component); + return TryRemoveWeather(mapUid.Value, weatherProto); } - protected virtual void EndWeather(EntityUid uid, WeatherComponent component, string proto) + /// + /// Slowly remove weather from map. It should be gone after seconds. + /// + /// Target entity map + /// EntProtoId of weather status effect + public bool TryRemoveWeather(EntityUid mapUid, EntProtoId weatherProto) { - if (!component.Weather.TryGetValue(proto, out var data)) - return; + if (!_statusEffects.TryGetStatusEffect(mapUid, weatherProto, out var weatherEnt)) + return false; + + if (!_weatherQuery.HasComp(weatherEnt)) + return false; - _audio.Stop(data.Stream); - data.Stream = null; - component.Weather.Remove(proto); - Dirty(uid, component); + return _statusEffects.TrySetStatusEffectDuration(mapUid, weatherProto, ShutdownTime); } - protected virtual bool SetState(EntityUid uid, WeatherState state, WeatherComponent component, WeatherData weather, WeatherPrototype weatherProto) + /// + /// Removes all weather conditions except the specified one. If the specified weather does not exist on the map, it adds it. + /// Returns true if the specified weather is present or was added, false otherwise. + /// + /// Target mapId + /// EntProtoId of weather status effect + /// When this method returns, contains the of the weather entity if the operation succeeded; otherwise, null. + /// How long this weather should exist on map? If null - infinite duration + /// true if the specified weather is present or was added; otherwise, false. + public bool TrySetWeather(MapId mapId, EntProtoId? weatherProto, out EntityUid? weatherEnt, TimeSpan? duration = null) { - if (weather.State.Equals(state)) + weatherEnt = null; + if (!_mapSystem.TryGetMap(mapId, out var mapUid)) return false; - weather.State = state; - Dirty(uid, component); - return true; - } + // Remove all other weather effects except the specified one + if (_statusEffects.TryEffectsWithComp(mapUid, out var effects)) + { + foreach (var effect in effects) + { + var effectProto = Prototype(effect); + if (effectProto is null) + continue; - [Serializable, NetSerializable] - protected sealed class WeatherComponentState : ComponentState - { - public Dictionary, WeatherData> Weather; + if (effectProto != weatherProto) + { + TryRemoveWeather(mapUid.Value, effectProto); + } + else + { + weatherEnt = effect; + } + } + } + + // If weatherProto is null, we just removed all weather and return true + if (weatherProto is null) + return true; - public WeatherComponentState(Dictionary, WeatherData> weather) + // If the specified weather already exists, just update its duration + if (weatherEnt != null) { - Weather = weather; + TryAddWeather(mapUid.Value, weatherProto.Value, out weatherEnt, duration); + return true; } + + // Otherwise, add the specified weather + return TryAddWeather(mapUid.Value, weatherProto.Value, out weatherEnt, duration); } } diff --git a/Content.Shared/Weather/WeatherComponent.cs b/Content.Shared/Weather/WeatherComponent.cs deleted file mode 100644 index eaf901fb424..00000000000 --- a/Content.Shared/Weather/WeatherComponent.cs +++ /dev/null @@ -1,53 +0,0 @@ -using Robust.Shared.GameStates; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; - -namespace Content.Shared.Weather; - -[RegisterComponent, NetworkedComponent] -public sealed partial class WeatherComponent : Component -{ - /// - /// Currently running weathers - /// - [DataField] - public Dictionary, WeatherData> Weather = new(); - - public static readonly TimeSpan StartupTime = TimeSpan.FromSeconds(15); - public static readonly TimeSpan ShutdownTime = TimeSpan.FromSeconds(15); -} - -[DataDefinition, Serializable, NetSerializable] -public sealed partial class WeatherData -{ - // Client audio stream. - [NonSerialized] - public EntityUid? Stream; - - /// - /// When the weather started if relevant. - /// - [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] //TODO: Remove Custom serializer - public TimeSpan StartTime = TimeSpan.Zero; - - /// - /// When the applied weather will end. - /// - [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] //TODO: Remove Custom serializer - public TimeSpan? EndTime; - - [ViewVariables] - public TimeSpan Duration => EndTime == null ? TimeSpan.MaxValue : EndTime.Value - StartTime; - - [DataField] - public WeatherState State = WeatherState.Invalid; -} - -public enum WeatherState : byte -{ - Invalid = 0, - Starting, - Running, - Ending, -} diff --git a/Content.Shared/Weather/WeatherPrototype.cs b/Content.Shared/Weather/WeatherPrototype.cs deleted file mode 100644 index 246e929dcef..00000000000 --- a/Content.Shared/Weather/WeatherPrototype.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Robust.Shared.Audio; -using Robust.Shared.Prototypes; -using Robust.Shared.Utility; - -namespace Content.Shared.Weather; - -[Prototype] -public sealed partial class WeatherPrototype : IPrototype -{ - [IdDataField] public string ID { get; private set; } = default!; - - [ViewVariables(VVAccess.ReadWrite), DataField("sprite", required: true)] - public SpriteSpecifier Sprite = default!; - - [ViewVariables(VVAccess.ReadWrite), DataField("color")] - public Color? Color; - - /// - /// Sound to play on the affected areas. - /// - [ViewVariables(VVAccess.ReadWrite), DataField("sound")] - public SoundSpecifier? Sound; -} diff --git a/Content.Shared/Weather/WeatherStatusEffectComponent.cs b/Content.Shared/Weather/WeatherStatusEffectComponent.cs new file mode 100644 index 00000000000..e82c728515d --- /dev/null +++ b/Content.Shared/Weather/WeatherStatusEffectComponent.cs @@ -0,0 +1,46 @@ +using System.Numerics; +using Content.Shared.StatusEffectNew.Components; +using Robust.Shared.Audio; +using Robust.Shared.GameStates; +using Robust.Shared.Utility; + +namespace Content.Shared.Weather; + +/// +/// Used only in conjure with for status effects applied to map entities. +/// Contains basic information about all types of weather effects. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedWeatherSystem))] +public sealed partial class WeatherStatusEffectComponent : Component +{ + /// + /// A texture that will tile and render as a weather effect across the entire map. + /// + [DataField(required: true)] + public SpriteSpecifier Sprite = default!; + + /// + /// Tint that will be applied to the weather texture. + /// + [DataField] + public Color? Color; + + /// + /// Weather scrolling speed. + /// + [DataField] + public Vector2? Scrolling; + + /// + /// Sound to play on the affected areas. + /// + [DataField] + public SoundSpecifier? Sound; + + /// + /// Client audio stream. + /// Not used on the server. + /// + [ViewVariables] + public EntityUid? Stream; +} diff --git a/Resources/Locale/en-US/weather/weather.ftl b/Resources/Locale/en-US/weather/weather.ftl index 0c67b6f66bf..146364136fe 100644 --- a/Resources/Locale/en-US/weather/weather.ftl +++ b/Resources/Locale/en-US/weather/weather.ftl @@ -1,8 +1,17 @@ -cmd-weather-desc = Sets the weather for the current map. -cmd-weather-help = weather -cmd-weather-hint = Weather prototype -cmd-weather-null = Clears the weather +cmd-weatherremove-desc = Remove specific weather from map. +cmd-weatherset-desc = Removes all weather except the specified one. If the specified weather does not exist on the map, it adds it. +cmd-weatheradd-desc = Add specific weather to map. + +cmd-weatherremove-help = weatherremove +cmd-weatherset-help = weatherset +cmd-weatheradd-help = weatheradd cmd-weather-error-no-arguments = Not enough arguments! cmd-weather-error-unknown-proto = Unknown Weather prototype! -cmd-weather-error-wrong-time = Time is in the wrong format! \ No newline at end of file +cmd-weather-error-wrong-time = Time is in the wrong format! +cmd-weather-error-wrong-map = Map with MapId {$id} doesn't exist! +cmd-weather-error-no-weather = This weather does not exist on the selected map! + +cmd-weather-hint-map-id = Map Id +cmd-weather-hint-prototype = Weather entity prototype +cmd-weather-hint-time = Duration in seconds (leave empty for infinite duration) diff --git a/Resources/Prototypes/Entities/StatusEffects/weather.yml b/Resources/Prototypes/Entities/StatusEffects/weather.yml new file mode 100644 index 00000000000..5c75565fb05 --- /dev/null +++ b/Resources/Prototypes/Entities/StatusEffects/weather.yml @@ -0,0 +1,178 @@ +- type: entity + parent: StatusEffectBase + id: WeatherBase + abstract: true + components: + - type: WeatherStatusEffect + - type: StatusEffect + whitelist: + components: + - Map + +- type: entity + parent: WeatherBase + id: WeatherRain + components: + - type: WeatherStatusEffect + sprite: + sprite: /Textures/Effects/weather.rsi + state: rain + sound: + collection: Rain + params: + loop: true + volume: -6 + +- type: entity + parent: WeatherBase + id: WeatherAshfall + components: + - type: WeatherStatusEffect + sprite: + sprite: /Textures/Effects/weather.rsi + state: ashfall + sound: + path: /Audio/Effects/Weather/snowstorm_weak.ogg + params: + loop: true + volume: -6 + +- type: entity + parent: WeatherBase + id: WeatherAshfallLight + components: + - type: WeatherStatusEffect + sprite: + sprite: /Textures/Effects/weather.rsi + state: ashfall_light + sound: + path: /Audio/Effects/Weather/snowstorm_weak.ogg + params: + loop: true + volume: -6 + +- type: entity + parent: WeatherBase + id: WeatherAshfallHeavy + components: + - type: WeatherStatusEffect + sprite: + sprite: /Textures/Effects/weather.rsi + state: ashfall_heavy + sound: + path: /Audio/Effects/Weather/snowstorm.ogg + params: + loop: true + volume: -6 + +- type: entity + parent: WeatherBase + id: WeatherFallout + components: + - type: WeatherStatusEffect + sprite: + sprite: /Textures/Effects/weather.rsi + state: fallout + sound: + path: /Audio/Effects/Weather/snowstorm_weak.ogg + params: + loop: true + volume: -6 + +- type: entity + parent: WeatherBase + id: WeatherHail + components: + - type: WeatherStatusEffect + sprite: + sprite: /Textures/Effects/weather.rsi + state: hail + sound: + path: /Audio/Effects/Weather/rain.ogg + params: + loop: true + volume: -6 + +- type: entity + parent: WeatherBase + id: WeatherSandstorm + components: + - type: WeatherStatusEffect + sprite: + sprite: /Textures/Effects/weather.rsi + state: sandstorm + sound: + path: /Audio/Effects/Weather/snowstorm_weak.ogg + params: + loop: true + volume: -6 + +- type: entity + parent: WeatherBase + id: WeatherSandstormHeavy + components: + - type: WeatherStatusEffect + sprite: + sprite: /Textures/Effects/weather.rsi + state: sandstorm_heavy + sound: + path: /Audio/Effects/Weather/snowstorm.ogg + params: + loop: true + volume: -6 + +- type: entity + parent: WeatherBase + id: WeatherSnowfallLight + components: + - type: WeatherStatusEffect + sprite: + sprite: /Textures/Effects/weather.rsi + state: snowfall_light + sound: + path: /Audio/Effects/Weather/snowstorm_weak.ogg + params: + loop: true + volume: -6 + +- type: entity + parent: WeatherBase + id: WeatherSnowfallMedium + components: + - type: WeatherStatusEffect + sprite: + sprite: /Textures/Effects/weather.rsi + state: snowfall_med + sound: + path: /Audio/Effects/Weather/snowstorm_weak.ogg + params: + loop: true + volume: -6 + +- type: entity + parent: WeatherBase + id: WeatherSnowfallHeavy + components: + - type: WeatherStatusEffect + sprite: + sprite: /Textures/Effects/weather.rsi + state: snowfall_heavy + sound: + path: /Audio/Effects/Weather/snowstorm.ogg + params: + loop: true + volume: -6 + +- type: entity + parent: WeatherBase + id: WeatherStorm + components: + - type: WeatherStatusEffect + sprite: + sprite: /Textures/Effects/weather.rsi + state: storm + sound: + path: /Audio/Effects/Weather/rain_heavy.ogg + params: + loop: true + volume: -6 diff --git a/Resources/Prototypes/SoundCollections/weather.yml b/Resources/Prototypes/SoundCollections/weather.yml new file mode 100644 index 00000000000..64efea8c613 --- /dev/null +++ b/Resources/Prototypes/SoundCollections/weather.yml @@ -0,0 +1,5 @@ +- type: soundCollection + id: Rain + files: + - /Audio/Effects/Weather/rain.ogg + - /Audio/Effects/Weather/rain2.ogg diff --git a/Resources/Prototypes/weather.yml b/Resources/Prototypes/weather.yml deleted file mode 100644 index a71e59354af..00000000000 --- a/Resources/Prototypes/weather.yml +++ /dev/null @@ -1,138 +0,0 @@ -- type: weather - id: Ashfall - sprite: - sprite: /Textures/Effects/weather.rsi - state: ashfall - sound: - path: /Audio/Effects/Weather/snowstorm_weak.ogg - params: - loop: true - volume: -6 - -- type: weather - id: AshfallLight - sprite: - sprite: /Textures/Effects/weather.rsi - state: ashfall_light - sound: - path: /Audio/Effects/Weather/snowstorm_weak.ogg - params: - loop: true - volume: -6 - -- type: weather - id: AshfallHeavy - sprite: - sprite: /Textures/Effects/weather.rsi - state: ashfall_heavy - sound: - path: /Audio/Effects/Weather/snowstorm.ogg - params: - loop: true - volume: -6 - -- type: weather - id: Fallout - sprite: - sprite: /Textures/Effects/weather.rsi - state: fallout - sound: - path: /Audio/Effects/Weather/snowstorm_weak.ogg - params: - loop: true - volume: -6 - -- type: weather - id: Hail - sprite: - sprite: /Textures/Effects/weather.rsi - state: hail - sound: - path: - /Audio/Effects/Weather/rain.ogg - params: - loop: true - volume: -6 - -- type: weather - id: Rain - sprite: - sprite: /Textures/Effects/weather.rsi - state: rain - sound: - collection: Rain - params: - loop: true - volume: -6 - -- type: soundCollection - id: Rain - files: - - /Audio/Effects/Weather/rain.ogg - - /Audio/Effects/Weather/rain2.ogg - -- type: weather - id: Sandstorm - sprite: - sprite: /Textures/Effects/weather.rsi - state: sandstorm - sound: - path: /Audio/Effects/Weather/snowstorm_weak.ogg - params: - loop: true - volume: -6 - -- type: weather - id: SandstormHeavy - sprite: - sprite: /Textures/Effects/weather.rsi - state: sandstorm_heavy - sound: - path: /Audio/Effects/Weather/snowstorm.ogg - params: - loop: true - volume: -6 - -- type: weather - id: SnowfallLight - sprite: - sprite: /Textures/Effects/weather.rsi - state: snowfall_light - sound: - path: /Audio/Effects/Weather/snowstorm_weak.ogg - params: - loop: true - volume: -6 - -- type: weather - id: SnowfallMedium - sprite: - sprite: /Textures/Effects/weather.rsi - state: snowfall_med - sound: - path: /Audio/Effects/Weather/snowstorm_weak.ogg - params: - loop: true - volume: -6 - -- type: weather - id: SnowfallHeavy - sprite: - sprite: /Textures/Effects/weather.rsi - state: snowfall_heavy - sound: - path: /Audio/Effects/Weather/snowstorm.ogg - params: - loop: true - volume: -6 - -- type: weather - id: Storm - sprite: - sprite: /Textures/Effects/weather.rsi - state: storm - sound: - path: /Audio/Effects/Weather/rain_heavy.ogg - params: - loop: true - volume: -6 From 24382dd3959d552cdc1cfb676a3a52386dbfbb01 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 8 Mar 2026 23:42:50 +0000 Subject: [PATCH 491/603] Automatic changelog update --- Resources/Changelog/Admin.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index de7aec97e16..dcaae63db74 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -1682,5 +1682,14 @@ Entries: id: 205 time: '2026-03-07T04:26:52.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43103 +- author: TheShuEd + changes: + - message: Added the "weatheradd", "weatherremove" and "weatherset" console commands. + type: Add + - message: Removed the "weather" console command. + type: Remove + id: 206 + time: '2026-03-08T23:41:39.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/41427 Name: Admin Order: 3 From 4cdef6ac92ee8de549b24c2a57cfbdbe7bbce9c0 Mon Sep 17 00:00:00 2001 From: Moony Date: Tue, 10 Mar 2026 15:11:53 +0100 Subject: [PATCH 492/603] Patch for engine ComponentFilter (#43168) * Patch for engine ComponentFilter * Poke --- Content.Server/NPC/Systems/NPCUtilitySystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/NPC/Systems/NPCUtilitySystem.cs b/Content.Server/NPC/Systems/NPCUtilitySystem.cs index fe3dc26c91c..89b49cbbe9f 100644 --- a/Content.Server/NPC/Systems/NPCUtilitySystem.cs +++ b/Content.Server/NPC/Systems/NPCUtilitySystem.cs @@ -507,7 +507,7 @@ private void Filter(NPCBlackboard blackboard, HashSet entities, Utili { switch (filter) { - case ComponentFilter compFilter: + case Content.Server.NPC.Queries.Queries.ComponentFilter compFilter: { _entityList.Clear(); From 8e0a27199a6e21ada363a340707fbe70d9d9c0e6 Mon Sep 17 00:00:00 2001 From: Moony Date: Tue, 10 Mar 2026 19:22:17 +0100 Subject: [PATCH 493/603] Refactor guide entry tests. (#43159) * Add 204 more tests. * better plan. --- .../Guidebook/GuideEntryPrototypeTests.cs | 26 +++++++++---------- Content.Shared/Guidebook/GuideEntry.cs | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Content.IntegrationTests/Tests/Guidebook/GuideEntryPrototypeTests.cs b/Content.IntegrationTests/Tests/Guidebook/GuideEntryPrototypeTests.cs index ae64eace9a2..13d0ad1497e 100644 --- a/Content.IntegrationTests/Tests/Guidebook/GuideEntryPrototypeTests.cs +++ b/Content.IntegrationTests/Tests/Guidebook/GuideEntryPrototypeTests.cs @@ -2,8 +2,9 @@ using Content.Client.Guidebook.Richtext; using Robust.Shared.ContentPack; using Robust.Shared.Prototypes; -using System.Linq; +using Content.IntegrationTests.Utility; using Content.Shared.Guidebook; +using Robust.Shared.Localization; namespace Content.IntegrationTests.Tests.Guidebook; @@ -13,8 +14,12 @@ namespace Content.IntegrationTests.Tests.Guidebook; [TestOf(typeof(DocumentParsingManager))] public sealed class GuideEntryPrototypeTests { + private static string[] _guideEntries = GameDataScrounger.PrototypesOfKind(); + [Test] - public async Task ValidatePrototypeContents() + [TestCaseSource(nameof(_guideEntries))] + [Description("Ensures a given guidebook entry is valid, checking the document/etc.")] + public async Task Validate(string protoKey) { await using var pair = await PoolManager.GetServerClient(new PoolSettings { Connected = true }); var client = pair.Client; @@ -22,20 +27,15 @@ public async Task ValidatePrototypeContents() var protoMan = client.ResolveDependency(); var resMan = client.ResolveDependency(); var parser = client.ResolveDependency(); - var prototypes = protoMan.EnumeratePrototypes().ToList(); + var proto = protoMan.Index(protoKey); - foreach (var proto in prototypes) + await client.WaitAssertion(() => { - await client.WaitAssertion(() => - { - using var reader = resMan.ContentFileReadText(proto.Text); - var text = reader.ReadToEnd(); - Assert.That(parser.TryAddMarkup(new Document(), text), $"Failed to parse guidebook: {proto.Id}"); - }); + using var reader = resMan.ContentFileReadText(proto.Text); + var text = reader.ReadToEnd(); - // Avoid styleguide update limit - await client.WaitRunTicks(1); - } + Assert.That(parser.TryAddMarkup(new Document(), text), $"Failed to parse the guide entry's document."); + }); await pair.CleanReturnAsync(); } diff --git a/Content.Shared/Guidebook/GuideEntry.cs b/Content.Shared/Guidebook/GuideEntry.cs index fdbdd50288c..7ee43afd323 100644 --- a/Content.Shared/Guidebook/GuideEntry.cs +++ b/Content.Shared/Guidebook/GuideEntry.cs @@ -26,7 +26,7 @@ public class GuideEntry /// /// The name of this guide. This gets localized. /// - [DataField(required: true)] public string Name = default!; + [DataField(required: true)] public LocId Name = default!; /// /// The "children" of this guide for when guides are shown in a tree / table of contents. From b01d2ec5cb18e2d51bb6d548634b2c7d9ee9a505 Mon Sep 17 00:00:00 2001 From: Moony Date: Tue, 10 Mar 2026 20:56:10 +0100 Subject: [PATCH 494/603] Refactor explosion prototype tests. (#43158) Add 9 more tests. --- .../Tests/Explosion/ExplosionPrototypeTest.cs | 38 ++++++++++++++----- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/Content.IntegrationTests/Tests/Explosion/ExplosionPrototypeTest.cs b/Content.IntegrationTests/Tests/Explosion/ExplosionPrototypeTest.cs index 54ff61c0c4b..01f52f7d838 100644 --- a/Content.IntegrationTests/Tests/Explosion/ExplosionPrototypeTest.cs +++ b/Content.IntegrationTests/Tests/Explosion/ExplosionPrototypeTest.cs @@ -1,27 +1,45 @@ +using Content.IntegrationTests.Utility; using Content.Shared.Explosion; namespace Content.IntegrationTests.Tests.Explosion; public sealed class ExplosionPrototypeTest { + private static string[] _explosionKinds = GameDataScrounger.PrototypesOfKind(); + [Test] - public async Task ValidateExplosionPrototypes() + [TestOf(typeof(ExplosionPrototype))] + [TestCaseSource(nameof(_explosionKinds))] + [Description("Ensures various properties of ExplosionPrototype are correctly configured.")] + public async Task Validate(string protoKey) { await using var pair = await PoolManager.GetServerClient(); var server = pair.Server; - var entMan = server.EntMan; var protoMan = server.ProtoMan; - var protos = protoMan.EnumeratePrototypes(); + var proto = protoMan.Index(protoKey); - Assert.Multiple(() => + using (Assert.EnterMultipleScope()) { - foreach (var proto in protos) - { - Assert.That(proto._tileBreakChance, Is.Not.Empty, $"Empty tile break chance definitions for explosion prototype: {proto.ID}"); - Assert.That(proto._tileBreakChance, Has.Length.EqualTo(proto._tileBreakIntensity.Length), $"Malformed tile break chance definitions for explosion prototype: {proto.ID}"); - } - }); + Assert.That(proto._tileBreakChance, Is.Not.Empty, $"Tile break chances cannot be empty."); + // this diagnostic is broken. +#pragma warning disable NUnit2041 + Assert.That(proto._tileBreakChance, + Has.All.GreaterThanOrEqualTo(0.0f).And.LessThanOrEqualTo(1.0f), + "Tile break chances are probabilities and must be in the range [0, 1]"); +#pragma warning restore NUnit2041 + Assert.That(proto._tileBreakChance, + Has.Length.EqualTo(proto._tileBreakIntensity.Length), + $"Tile break chances don't match the tile break intensities."); + + Assert.That(proto.FireStacks, Is.Null.Or.Positive); + Assert.That(proto.Temperature, Is.Null.Or.Positive); + Assert.That(proto.TileBreakRerollReduction, Is.Positive.Or.Zero); + Assert.That(proto.SmallSoundIterationThreshold, Is.Positive.Or.Zero); + Assert.That(proto.MaxCombineDistance, Is.Positive.Or.Zero); + Assert.That(proto.IntensityPerState, Is.Positive); + Assert.That(proto.FireStates, Is.Positive); + } await pair.CleanReturnAsync(); } From 5eba73c5d873efdac7908b9871dbef290189eb65 Mon Sep 17 00:00:00 2001 From: Moony Date: Tue, 10 Mar 2026 20:56:13 +0100 Subject: [PATCH 495/603] Refactor Device Linking tests. (#43157) * Add 416 more tests. * fixes. --- .../Tests/DeviceLinking/DeviceLinkingTest.cs | 85 ++++++++----------- 1 file changed, 37 insertions(+), 48 deletions(-) diff --git a/Content.IntegrationTests/Tests/DeviceLinking/DeviceLinkingTest.cs b/Content.IntegrationTests/Tests/DeviceLinking/DeviceLinkingTest.cs index 6ce6d5d78e0..c62b46ab6d4 100644 --- a/Content.IntegrationTests/Tests/DeviceLinking/DeviceLinkingTest.cs +++ b/Content.IntegrationTests/Tests/DeviceLinking/DeviceLinkingTest.cs @@ -1,12 +1,9 @@ -using System.Collections.Generic; -using System.Linq; +using Content.IntegrationTests.Utility; using Content.Server.DeviceLinking.Systems; using Content.Shared.DeviceLinking; -using Content.Shared.Prototypes; using Robust.Shared.GameObjects; using Robust.Shared.Map; using Robust.Shared.Maths; -using Robust.Shared.Prototypes; namespace Content.IntegrationTests.Tests.DeviceLinking; @@ -24,69 +21,61 @@ public sealed class DeviceLinkingTest - Output "; - /// - /// Spawns every entity that has a - /// and sends a signal to every port to make sure nothing causes an error. - /// + private static string[] _entitiesWithDeviceLinkSink = GameDataScrounger.EntitiesWithComponent("DeviceLinkSink"); + [Test] - public async Task AllDeviceLinkSinksWorkTest() + [TestOf(typeof(DeviceLinkSinkComponent))] + [TestCaseSource(nameof(_entitiesWithDeviceLinkSink))] + [Description("Ensures all devices that can sink signals will not cause exceptions when signaled.")] + public async Task DeviceLinkSinkAllPortsTest(string protoKey) { await using var pair = await PoolManager.GetServerClient(); var server = pair.Server; + var protoMan = server.ProtoMan; var compFact = server.ResolveDependency(); var mapMan = server.ResolveDependency(); var mapSys = server.System(); var deviceLinkSys = server.System(); - var prototypes = server.ProtoMan.EnumeratePrototypes(); - await server.WaitAssertion(() => { - Assert.Multiple(() => + using (Assert.EnterMultipleScope()) { - foreach (var proto in prototypes) - { - if (proto.Abstract || pair.IsTestPrototype(proto)) - continue; + var proto = protoMan.Index(protoKey); + Assert.That(proto.TryGetComponent(out var protoSinkComp, compFact)); - if (!proto.TryGetComponent(out var protoSinkComp, compFact)) - continue; - - foreach (var port in protoSinkComp.Ports) - { - // Create a map for each entity/port combo so they can't interfere - mapSys.CreateMap(out var mapId); - var grid = mapMan.CreateGridEntity(mapId); - mapSys.SetTile(grid.Owner, grid.Comp, Vector2i.Zero, new Tile(1)); - var coord = new EntityCoordinates(grid.Owner, 0, 0); + foreach (var port in protoSinkComp!.Ports) + { + // Create a map for each entity/port combo so they can't interfere + mapSys.CreateMap(out var mapId); + var grid = mapMan.CreateGridEntity(mapId); + mapSys.SetTile(grid.Owner, grid.Comp, Vector2i.Zero, new Tile(1)); + var coord = new EntityCoordinates(grid.Owner, 0, 0); - // Spawn the sink entity - var sinkEnt = server.EntMan.SpawnEntity(proto.ID, coord); - // Get the actual sink component, since the one we got from the prototype doesn't have its owner set up - Assert.That(server.EntMan.TryGetComponent(sinkEnt, out var sinkComp), - $"{proto.ID} does not have a DeviceLinkSinkComponent!"); + // Spawn the sink entity + var sinkEnt = server.EntMan.SpawnEntity(proto.ID, coord); + // Get the actual sink component, since the one we got from the prototype isn't initialized. + var sinkComp = server.EntMan.GetComponent(sinkEnt); - // Spawn the tester - var sourceEnt = server.EntMan.SpawnEntity(PortTesterProtoId, coord); - Assert.That(server.EntMan.TryGetComponent(sourceEnt, out var sourceComp), - $"Tester prototype does not have a DeviceLinkSourceComponent!"); + // Spawn the tester + var sourceEnt = server.EntMan.SpawnEntity(PortTesterProtoId, coord); + var sourceComp = server.EntMan.GetComponent(sourceEnt); - // Create a link from the tester's output to the target port on the sink - deviceLinkSys.SaveLinks(null, - sourceEnt, - sinkEnt, - [("Output", port.Id)], - sourceComp, - sinkComp); + // Create a link from the tester's output to the target port on the sink + deviceLinkSys.SaveLinks(null, + sourceEnt, + sinkEnt, + [("Output", port.Id)], + sourceComp, + sinkComp); - // Send a signal to the port - Assert.DoesNotThrow(() => { deviceLinkSys.InvokePort(sourceEnt, "Output", null, sourceComp); }, - $"Exception thrown while triggering port {port.Id} of sink device {proto.ID}"); + // Send a signal to the port + Assert.DoesNotThrow(() => { deviceLinkSys.InvokePort(sourceEnt, "Output", null, sourceComp); }, + $"Exception thrown while triggering port {port.Id} of the sink device."); - mapSys.DeleteMap(mapId); - } + mapSys.DeleteMap(mapId); } - }); + } }); await pair.CleanReturnAsync(); From be8bd66f67feb17e78ba63cfb597c35a5798f83c Mon Sep 17 00:00:00 2001 From: Moony Date: Tue, 10 Mar 2026 20:56:23 +0100 Subject: [PATCH 496/603] Refactor construction tests (#43155) Introduce 2681 more tests. --- .../Construction/ConstructionPrototypeTest.cs | 151 +++++------------- 1 file changed, 44 insertions(+), 107 deletions(-) diff --git a/Content.IntegrationTests/Tests/Construction/ConstructionPrototypeTest.cs b/Content.IntegrationTests/Tests/Construction/ConstructionPrototypeTest.cs index 75281e63cb0..9441443b225 100644 --- a/Content.IntegrationTests/Tests/Construction/ConstructionPrototypeTest.cs +++ b/Content.IntegrationTests/Tests/Construction/ConstructionPrototypeTest.cs @@ -1,9 +1,7 @@ -using System.Numerics; +using Content.IntegrationTests.Utility; using Content.Server.Construction.Components; using Content.Shared.Construction.Prototypes; using Robust.Shared.GameObjects; -using Robust.Shared.Map; -using Robust.Shared.Maths; using Robust.Shared.Prototypes; namespace Content.IntegrationTests.Tests.Construction @@ -15,109 +13,40 @@ public sealed class ConstructionPrototypeTest // TODO: Create serialization validators for these? // Top test definitely can be but writing a serializer takes ages. + private static string[] _constructablePrototypes = GameDataScrounger.EntitiesWithComponent("Construction"); + private static string[] _constructions = GameDataScrounger.PrototypesOfKind(); + /// /// Checks every entity prototype with a construction component has a valid start node. /// [Test] - public async Task TestStartNodeValid() + [TestOf(typeof(ConstructionComponent))] + [TestCaseSource(nameof(_constructablePrototypes))] + [Description("Tests that a given entity specifies a valid node for construction, and optionally a valid one for deconstruction.")] + public async Task ConstructionComponentValid(string protoKey) { await using var pair = await PoolManager.GetServerClient(); var server = pair.Server; - var entMan = server.ResolveDependency(); var protoMan = server.ResolveDependency(); - var map = await pair.CreateTestMap(); - await server.WaitAssertion(() => { - foreach (var proto in protoMan.EnumeratePrototypes()) - { - if (!proto.Components.ContainsKey("Construction")) - continue; - - var ent = entMan.SpawnEntity(proto.ID, new MapCoordinates(Vector2.Zero, map.MapId)); - var construction = entMan.GetComponent(ent); - - var graph = protoMan.Index(construction.Graph); - entMan.DeleteEntity(ent); - - Assert.That(graph.Nodes.ContainsKey(construction.Node), - $"Found no startNode \"{construction.Node}\" on graph \"{graph.ID}\" for entity \"{proto.ID}\"!"); - } - }); - - await pair.CleanReturnAsync(); - } - - [Test] - public async Task TestStartIsValid() - { - await using var pair = await PoolManager.GetServerClient(); - var server = pair.Server; + var proto = protoMan.Index(protoKey); + var construction = (ConstructionComponent)proto.Components["Construction"].Component; - var protoMan = server.ResolveDependency(); + var graph = protoMan.Index(construction.Graph); - await server.WaitAssertion(() => - { - foreach (var proto in protoMan.EnumeratePrototypes()) + using (Assert.EnterMultipleScope()) { - var start = proto.StartNode; - var graph = protoMan.Index(proto.Graph); - - Assert.That(graph.Nodes.ContainsKey(start), - $"Found no startNode \"{start}\" on graph \"{graph.ID}\" for construction prototype \"{proto.ID}\"!"); - } - }); - await pair.CleanReturnAsync(); - } - - [Test] - public async Task TestTargetIsValid() - { - await using var pair = await PoolManager.GetServerClient(); - var server = pair.Server; - - var protoMan = server.ResolveDependency(); + Assert.That(graph.Nodes.ContainsKey(construction.Node), + $"Found no node \"{construction.Node}\" on graph \"{graph.ID}\" for entity \"{proto.ID}\"!"); - await server.WaitAssertion(() => - { - foreach (var proto in protoMan.EnumeratePrototypes()) - { - var target = proto.TargetNode; - var graph = protoMan.Index(proto.Graph); + if (construction.DeconstructionNode is not { } target) + return; Assert.That(graph.Nodes.ContainsKey(target), - $"Found no targetNode \"{target}\" on graph \"{graph.ID}\" for construction prototype \"{proto.ID}\"!"); - } - }); - await pair.CleanReturnAsync(); - } - - [Test] - public async Task DeconstructionIsValid() - { - await using var pair = await PoolManager.GetServerClient(); - var server = pair.Server; - - var protoMan = server.ResolveDependency(); - var compFact = server.ResolveDependency(); - - var name = compFact.GetComponentName(); - Assert.Multiple(() => - { - foreach (var proto in protoMan.EnumeratePrototypes()) - { - if (proto.Abstract || pair.IsTestPrototype(proto) || !proto.Components.TryGetValue(name, out var reg)) - continue; - - var comp = (ConstructionComponent) reg.Component; - var target = comp.DeconstructionNode; - if (target == null) - continue; - - var graph = protoMan.Index(comp.Graph); - Assert.That(graph.Nodes.ContainsKey(target), $"Invalid deconstruction node \"{target}\" on graph \"{graph.ID}\" for construction entity \"{proto.ID}\"!"); + $"Invalid deconstruction node \"{target}\" on graph \"{graph.ID}\" for construction entity \"{proto.ID}\"!"); } }); @@ -125,7 +54,10 @@ public async Task DeconstructionIsValid() } [Test] - public async Task TestStartReachesValidTarget() + [TestOf(typeof(ConstructionPrototype))] + [TestCaseSource(nameof(_constructions))] + [Description("Tests that a given construction prototype has a valid starting and target node, and a valid path between them.")] + public async Task ConstructionFormsValidGraph(string protoKey) { await using var pair = await PoolManager.GetServerClient(); var server = pair.Server; @@ -135,29 +67,34 @@ public async Task TestStartReachesValidTarget() await server.WaitAssertion(() => { - foreach (var proto in protoMan.EnumeratePrototypes()) + var proto = protoMan.Index(protoKey); + var start = proto.StartNode; + var target = proto.TargetNode; + var graph = protoMan.Index(proto.Graph); + + using (Assert.EnterMultipleScope()) { - var start = proto.StartNode; - var target = proto.TargetNode; - var graph = protoMan.Index(proto.Graph); + Assert.That(graph.Nodes.ContainsKey(start), + $"Found no startNode \"{start}\" on graph \"{graph.ID}\"!"); + Assert.That(graph.Nodes.ContainsKey(target), + $"Found no targetNode \"{target}\" on graph \"{graph.ID}\"!"); + } #pragma warning disable NUnit2045 // Interdependent assertions. - Assert.That(graph.TryPath(start, target, out var path), - $"Unable to find path from \"{start}\" to \"{target}\" on graph \"{graph.ID}\""); - Assert.That(path, Has.Length.GreaterThanOrEqualTo(1), - $"Unable to find path from \"{start}\" to \"{target}\" on graph \"{graph.ID}\"."); - var next = path[0]; - var nextId = next.Entity.GetId(null, null, new(entMan)); - Assert.That(nextId, Is.Not.Null, - $"The next node ({next.Name}) in the path from the start node ({start}) to the target node ({target}) must specify an entity! Graph: {graph.ID}"); - Assert.That(protoMan.TryIndex(nextId, out EntityPrototype entity), - $"The next node ({next.Name}) in the path from the start node ({start}) to the target node ({target}) specified an invalid entity prototype ({nextId} [{next.Entity}])"); - Assert.That(entity.Components.ContainsKey("Construction"), - $"The next node ({next.Name}) in the path from the start node ({start}) to the target node ({target}) specified an entity prototype ({next.Entity}) without a ConstructionComponent."); + Assert.That(graph.TryPath(start, target, out var path), + $"Unable to find path from \"{start}\" to \"{target}\" on graph \"{graph.ID}\""); + Assert.That(path, Has.Length.GreaterThanOrEqualTo(1), + $"Unable to find path from \"{start}\" to \"{target}\" on graph \"{graph.ID}\"."); + var next = path![0]; + var nextId = next.Entity.GetId(null, null, new(entMan)); + Assert.That(nextId, Is.Not.Null, + $"The next node ({next.Name}) in the path from the start node ({start}) to the target node ({target}) must specify an entity! Graph: {graph.ID}"); + Assert.That(protoMan.TryIndex(nextId, out EntityPrototype entity), + $"The next node ({next.Name}) in the path from the start node ({start}) to the target node ({target}) specified an invalid entity prototype ({nextId} [{next.Entity}])"); + Assert.That(entity!.Components.ContainsKey("Construction"), + $"The next node ({next.Name}) in the path from the start node ({start}) to the target node ({target}) specified an entity prototype ({next.Entity}) without a ConstructionComponent."); #pragma warning restore NUnit2045 - } }); - await pair.CleanReturnAsync(); } } From 87a37874ae5d2d921b610e7d25a3d9b3c5108aed Mon Sep 17 00:00:00 2001 From: Moony Date: Tue, 10 Mar 2026 20:56:26 +0100 Subject: [PATCH 497/603] Add exception tolerance to SharedDoAfterSystem. (#43088) --- .../DoAfter/SharedDoAfterSystem.Update.cs | 52 +++++++++++++++++-- 1 file changed, 49 insertions(+), 3 deletions(-) diff --git a/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs b/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs index 283a08df084..0bc75d9e631 100644 --- a/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs +++ b/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs @@ -2,14 +2,16 @@ using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction; -using Content.Shared.Physics; -using Robust.Shared.Utility; +using Robust.Shared.Exceptions; +using Robust.Shared.Network; namespace Content.Shared.DoAfter; public abstract partial class SharedDoAfterSystem : EntitySystem { [Dependency] private readonly IDynamicTypeFactory _factory = default!; + [Dependency] private readonly INetManager _netManager = default!; + [Dependency] private readonly IRuntimeLog _runtimeLog = default!; [Dependency] private readonly SharedGravitySystem _gravity = default!; [Dependency] private readonly SharedInteractionSystem _interaction = default!; [Dependency] private readonly SharedHandsSystem _hands = default!; @@ -27,7 +29,51 @@ public override void Update(float frameTime) var enumerator = EntityQueryEnumerator(); while (enumerator.MoveNext(out var uid, out var active, out var comp)) { - Update(uid, active, comp, time, xformQuery, handsQuery); + + try + { + Update(uid, active, comp, time, xformQuery, handsQuery); + } + // ReSharper disable once RedundantCatchClause + catch (Exception e) + { +#if EXCEPTION_TOLERANCE + // Doafter in question failed to complete.. + // Doafters are kind of a critical game mechanic, so we specially handle failure. + _runtimeLog.LogException(e, $"{nameof(SharedDoAfterSystem)} on {ToPrettyString(uid)}"); + + if (_netManager.IsClient) + continue; // Move along, we can't cancel these ourselves and just need to not completely die. + + // Cancel all the doafters for this entity to avoid repeats. + // We don't try to remove them ourselves to keep the logic reasonable. + foreach (var (key, doAfter) in comp.DoAfters) + { + try + { + InternalCancel(doAfter, comp); + } + catch (Exception e2) + { + _runtimeLog.LogException(e2, $"{nameof(SharedDoAfterSystem)} failed to cleanup {doAfter} @ {key} while handling a failure."); + // REMARK: As written, InternalCancel will always do the necessary side effect of + // configuring the cancellation time. We need this side effect, so dear reader + // if you ever make it so InternalCancel can throw an exception before that + // happens, update this to set cancel time itself in a finally block. + // + // If the doafter is one using async, this CAN result in that task leaking forever. + // So we check that here, too. + if (comp.AwaitedDoAfters.Remove(doAfter.Index, out var tcs)) + { + tcs.TrySetCanceled(); + } + } + } +#else + throw; // No tolerance, just rethrow. +#endif + } + } } From b07fc5f4c1daba7bac966d270b8ec9819425dc7a Mon Sep 17 00:00:00 2001 From: Moony Date: Tue, 10 Mar 2026 20:56:30 +0100 Subject: [PATCH 498/603] Reactions test cleanup. (#42979) * Make TryAllReactionsTest use a scrounged reagent list. * naming * Poke --- .../Tests/Chemistry/TryAllReactionsTest.cs | 125 ++++++++++-------- 1 file changed, 72 insertions(+), 53 deletions(-) diff --git a/Content.IntegrationTests/Tests/Chemistry/TryAllReactionsTest.cs b/Content.IntegrationTests/Tests/Chemistry/TryAllReactionsTest.cs index 14f32e01617..0037670556f 100644 --- a/Content.IntegrationTests/Tests/Chemistry/TryAllReactionsTest.cs +++ b/Content.IntegrationTests/Tests/Chemistry/TryAllReactionsTest.cs @@ -5,6 +5,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Utility; using System.Linq; +using Content.IntegrationTests.Utility; using Content.Shared.Chemistry.EntitySystems; namespace Content.IntegrationTests.Tests.Chemistry @@ -24,8 +25,13 @@ public sealed class TryAllReactionsTest maxVol: 50 canMix: true"; + private static string[] _reactions = GameDataScrounger.PrototypesOfKind(); + [Test] - public async Task TryAllTest() + [TestCaseSource(nameof(_reactions))] + [TestOf(typeof(ReactionPrototype))] + [Description("Tries an individual reaction to see if it succeeds.")] + public async Task TryReaction(string reaction) { await using var pair = await PoolManager.GetServerClient(); var server = pair.Server; @@ -36,87 +42,100 @@ public async Task TryAllTest() var coordinates = testMap.GridCoords; var solutionContainerSystem = entityManager.System(); - foreach (var reactionPrototype in prototypeManager.EnumeratePrototypes()) - { - //since i have no clue how to isolate each loop assert-wise im just gonna throw this one in for good measure - Console.WriteLine($"Testing {reactionPrototype.ID}"); + var reactionPrototype = prototypeManager.Index(reaction); - EntityUid beaker = default; - Entity? solutionEnt = default!; - Solution solution = null; + EntityUid beaker = default; + Solution solution = null; + Entity? solutionEnt = default!; await server.WaitAssertion(() => { beaker = entityManager.SpawnEntity("TestSolutionContainer", coordinates); Assert.That(solutionContainerSystem .TryGetSolution(beaker, "beaker", out solutionEnt, out solution)); - solutionContainerSystem.SetCanReact(solutionEnt.Value, false); + solutionContainerSystem.SetCanReact(solutionEnt!.Value, false); foreach (var (id, reactant) in reactionPrototype.Reactants) { #pragma warning disable NUnit2045 - Assert.That(solutionContainerSystem - .TryAddReagent(solutionEnt.Value, id, reactant.Amount, out var quantity, reactionPrototype.MinimumTemperature)); - Assert.That(reactant.Amount, Is.EqualTo(quantity)); + Assert.That(solutionContainerSystem + .TryAddReagent(solutionEnt.Value, + id, + reactant.Amount, + out var quantity, + reactionPrototype.MinimumTemperature)); + Assert.That(reactant.Amount, Is.EqualTo(quantity)); #pragma warning restore NUnit2045 - } + } - //Get all possible reactions with the current reagents - var possibleReactions = prototypeManager.EnumeratePrototypes() - .Where(x => x.Reactants.All(id => solution.Contents.Any(s => s.Reagent.Prototype == id.Key))) - .ToList(); + //Get all possible reactions with the current reagents + var possibleReactions = prototypeManager.EnumeratePrototypes() + .Where(x => x.Reactants.All(id => solution.Contents.Any(s => s.Reagent.Prototype == id.Key))) + .ToList(); - //Check if the reaction is the first to occur when heated - foreach (var possibleReaction in possibleReactions.OrderBy(r => r.MinimumTemperature)) + //Check if the reaction is the first to occur when heated + foreach (var possibleReaction in possibleReactions.OrderBy(r => r.MinimumTemperature)) + { + if (possibleReaction.Priority >= reactionPrototype.Priority && + possibleReaction.MinimumTemperature < reactionPrototype.MinimumTemperature && + possibleReaction.MixingCategories == reactionPrototype.MixingCategories) { - if (possibleReaction.Priority >= reactionPrototype.Priority && possibleReaction.MinimumTemperature < reactionPrototype.MinimumTemperature && possibleReaction.MixingCategories == reactionPrototype.MixingCategories) - { - Assert.Fail($"The {possibleReaction.ID} reaction may occur before {reactionPrototype.ID} when heated."); - } + Assert.Fail( + $"The {possibleReaction.ID} reaction may occur before {reactionPrototype.ID} when heated."); } + } - //Check if the reaction is the first to occur when freezing - foreach (var possibleReaction in possibleReactions.OrderBy(r => r.MaximumTemperature)) + //Check if the reaction is the first to occur when freezing + foreach (var possibleReaction in possibleReactions.OrderBy(r => r.MaximumTemperature)) + { + if (possibleReaction.Priority >= reactionPrototype.Priority && + possibleReaction.MaximumTemperature > reactionPrototype.MaximumTemperature && + possibleReaction.MixingCategories == reactionPrototype.MixingCategories) { - if (possibleReaction.Priority >= reactionPrototype.Priority && possibleReaction.MaximumTemperature > reactionPrototype.MaximumTemperature && possibleReaction.MixingCategories == reactionPrototype.MixingCategories) - { - Assert.Fail($"The {possibleReaction.ID} reaction may occur before {reactionPrototype.ID} when freezing."); - } + Assert.Fail( + $"The {possibleReaction.ID} reaction may occur before {reactionPrototype.ID} when freezing."); } + } //Now safe set the temperature and mix the reagents solutionContainerSystem.SetTemperature(solutionEnt.Value, reactionPrototype.MinimumTemperature); solutionContainerSystem.SetCanReact(solutionEnt.Value, true); - if (reactionPrototype.MixingCategories != null) - { - var dummyEntity = entityManager.SpawnEntity(null, MapCoordinates.Nullspace); - var mixerComponent = entityManager.AddComponent(dummyEntity); - mixerComponent.ReactionTypes = reactionPrototype.MixingCategories; - solutionContainerSystem.UpdateChemicals(solutionEnt.Value, true, mixerComponent); - } - }); + if (reactionPrototype.MixingCategories != null) + { + var dummyEntity = entityManager.SpawnEntity(null, MapCoordinates.Nullspace); + var mixerComponent = entityManager.AddComponent(dummyEntity); + mixerComponent.ReactionTypes = reactionPrototype.MixingCategories; + solutionContainerSystem.UpdateChemicals(solutionEnt.Value, true, mixerComponent); + } + }); - await server.WaitIdleAsync(); + await server.WaitIdleAsync(); - await server.WaitAssertion(() => + await server.WaitAssertion(() => + { + //you just got linq'd fool + //(i'm sorry) + var foundProductsMap = reactionPrototype.Products + .Concat(reactionPrototype.Reactants + .Where(x => x.Value.Catalyst) + .ToDictionary(x => x.Key, x => x.Value.Amount) + ) + .ToDictionary(x => x, _ => false); + + foreach (var (reagent, quantity) in solution.Contents) { - //you just got linq'd fool - //(i'm sorry) - var foundProductsMap = reactionPrototype.Products - .Concat(reactionPrototype.Reactants.Where(x => x.Value.Catalyst).ToDictionary(x => x.Key, x => x.Value.Amount)) - .ToDictionary(x => x, _ => false); - foreach (var (reagent, quantity) in solution.Contents) - { - Assert.That(foundProductsMap.TryFirstOrNull(x => x.Key.Key == reagent.Prototype && x.Key.Value == quantity, out var foundProduct)); - foundProductsMap[foundProduct.Value.Key] = true; - } + Assert.That(foundProductsMap.TryFirstOrNull( + x => x.Key.Key == reagent.Prototype && x.Key.Value == quantity, + out var foundProduct)); + foundProductsMap[foundProduct!.Value.Key] = true; + } + + Assert.That(foundProductsMap.All(x => x.Value)); - Assert.That(foundProductsMap.All(x => x.Value)); - }); + server.EntMan.DeleteEntity(beaker); + }); - } await pair.CleanReturnAsync(); } } - } From 229ce3e3f0eb3bab3b67d13a045a0c9b701b5fff Mon Sep 17 00:00:00 2001 From: Moony Date: Tue, 10 Mar 2026 21:12:56 +0100 Subject: [PATCH 499/603] Refactor MobThresholds and Stamina tests. (#43156) Add 561 more tests. --- .../Tests/Damageable/MobThresholdsTest.cs | 33 +++++++------- .../Tests/Damageable/StaminaComponentTest.cs | 43 ++++++++++++++----- 2 files changed, 49 insertions(+), 27 deletions(-) diff --git a/Content.IntegrationTests/Tests/Damageable/MobThresholdsTest.cs b/Content.IntegrationTests/Tests/Damageable/MobThresholdsTest.cs index e2f841fc596..b359f055690 100644 --- a/Content.IntegrationTests/Tests/Damageable/MobThresholdsTest.cs +++ b/Content.IntegrationTests/Tests/Damageable/MobThresholdsTest.cs @@ -1,3 +1,4 @@ +using Content.IntegrationTests.Utility; using Content.Shared.Alert; using Content.Shared.Mobs.Components; @@ -5,33 +6,31 @@ namespace Content.IntegrationTests.Tests.Damageable; public sealed class MobThresholdsTest { - /// - /// Inspects every entity prototype with a and makes - /// sure that every possible mob state is mapped to an . - /// + private static string[] _entitiesWithThresholds = GameDataScrounger.EntitiesWithComponent("MobThresholds"); + [Test] - public async Task ValidateMobThresholds() + [TestOf(typeof(MobThresholdsComponent))] + [TestCaseSource(nameof(_entitiesWithThresholds))] + [Description("Ensures every entity with mob thresholds has valid mob state configuration corresponding to some AlertPrototype.")] + public async Task ValidateMobThresholds(string protoKey) { await using var pair = await PoolManager.GetServerClient(); var server = pair.Server; - var entMan = server.EntMan; var protoMan = server.ProtoMan; - var protos = pair.GetPrototypesWithComponent(); - Assert.Multiple(() => { - foreach (var (proto, comp) in protos) + var proto = protoMan.Index(protoKey); + var comp = (MobThresholdsComponent)proto.Components["MobThresholds"].Component; + + // See which mob states are mapped to alerts + var alertStates = comp.StateAlertDict.Keys; + // Check each mob state that this mob can be in + foreach (var (_, state) in comp.Thresholds) { - // See which mob states are mapped to alerts - var alertStates = comp.StateAlertDict.Keys; - // Check each mob state that this mob can be in - foreach (var (_, state) in comp.Thresholds) - { - // Make sure that an alert exists for each possible mob state - Assert.That(alertStates, Does.Contain(state), $"{proto.ID} does not have an alert state for mob state {state}"); - } + // Make sure that an alert exists for each possible mob state + Assert.That(alertStates, Does.Contain(state), $"{proto.ID} does not have an alert state for mob state {state}"); } }); diff --git a/Content.IntegrationTests/Tests/Damageable/StaminaComponentTest.cs b/Content.IntegrationTests/Tests/Damageable/StaminaComponentTest.cs index f0a594dbd46..09be373a4c1 100644 --- a/Content.IntegrationTests/Tests/Damageable/StaminaComponentTest.cs +++ b/Content.IntegrationTests/Tests/Damageable/StaminaComponentTest.cs @@ -1,27 +1,50 @@ +using System.Linq; +using Content.IntegrationTests.Utility; using Content.Shared.Damage.Components; +using Content.Shared.FixedPoint; namespace Content.IntegrationTests.Tests.Damageable; public sealed class StaminaComponentTest { + private static string[] _entitiesWithStamina = GameDataScrounger.EntitiesWithComponent("Stamina"); + [Test] - public async Task ValidatePrototypes() + [TestOf(typeof(StaminaComponent))] + [TestCaseSource(nameof(_entitiesWithStamina))] + [Description("Ensures every entity with Stamina has a valid stamina configuration.")] + public async Task ValidateStamina(string protoKey) { await using var pair = await PoolManager.GetServerClient(); var server = pair.Server; - - var protos = pair.GetPrototypesWithComponent(); + var protoMan = server.ProtoMan; await server.WaitAssertion(() => { - Assert.Multiple(() => + using (Assert.EnterMultipleScope()) { - foreach (var (proto, comp) in protos) - { - Assert.That(comp.AnimationThreshold, Is.LessThan(comp.CritThreshold), - $"Animation threshold on {proto.ID} must be less than its crit threshold."); - } - }); + var proto = protoMan.Index(protoKey); + var comp = (StaminaComponent)proto.Components["Stamina"].Component; + + Assert.That(comp.AnimationThreshold, + Is.LessThan(comp.CritThreshold), + $"Animation threshold on {proto.ID} must be less than its crit threshold."); + + // TODO(Kaylie): "value is in range" serializer. Needs some serializationmanager improvements. + Assert.That(comp.Decay, Is.Positive.Or.Zero, "Negative decay results in nonsensical behavior."); + Assert.That(comp.Cooldown, Is.Positive.Or.Zero, "Negative cooldown results in nonsensical behavior"); + Assert.That(comp.BaseCritThreshold, Is.Positive); + Assert.That(comp.CritThreshold, Is.Positive); + Assert.That(comp.AfterCritDecayMultiplier, Is.Positive); + Assert.That(comp.ForceStandStamina, Is.Positive); + + // NUnit's analyzer is defective here. Cool. +#pragma warning disable NUnit2041 + Assert.That(comp.StunModifierThresholds.Keys, + Has.All.GreaterThanOrEqualTo(FixedPoint2.Zero).And.LessThanOrEqualTo(FixedPoint2.New(1.0f)), + "The stun thresholds are percentages and should be in the [0, 1.0] range."); +#pragma warning restore NUnit2041 + } }); await pair.CleanReturnAsync(); From c83077f436a23ee09e83c39f76c39755359dc917 Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Tue, 10 Mar 2026 17:25:45 -0400 Subject: [PATCH 500/603] Update `NodeHelpers` and `Node.GetReachableNodes` to use `Entity` and `Entity` (#37734) * Add overloads for NodeHelpers methods, obsolete old ones * Pass in SharedMapSystem instead of IEntityManager * Change GetReachableNodes signature, deal with aftermath * Allow non-grid nodes * Change GetReachableNodes to also take Entity * Remove vestigial ReSharper hint Co-authored-by: Tayrtahn * Formatting --------- Co-authored-by: TemporalOroboros --- .../Electrocution/ElectrocutionNode.cs | 5 +- .../EntitySystems/NodeGroupSystem.cs | 4 +- .../NodeContainer/Nodes/AdjacentNode.cs | 13 ++--- .../NodeContainer/Nodes/NodeHelpers.cs | 47 +++++++++++++++---- .../NodeContainer/Nodes/PipeNode.cs | 32 ++++++++----- .../NodeContainer/Nodes/PortPipeNode.cs | 12 +++-- .../NodeContainer/Nodes/PortablePipeNode.cs | 12 +++-- .../Power/Generation/Teg/TegNodeGroup.cs | 26 +++++----- Content.Server/Power/Nodes/CableDeviceNode.cs | 13 ++--- Content.Server/Power/Nodes/CableNode.cs | 14 +++--- .../Power/Nodes/CableTerminalNode.cs | 14 +++--- .../Power/Nodes/CableTerminalPortNode.cs | 14 +++--- Content.Shared/NodeContainer/Node.cs | 5 +- 13 files changed, 130 insertions(+), 81 deletions(-) diff --git a/Content.Server/Electrocution/ElectrocutionNode.cs b/Content.Server/Electrocution/ElectrocutionNode.cs index ddf09fcce74..3f53e7718fc 100644 --- a/Content.Server/Electrocution/ElectrocutionNode.cs +++ b/Content.Server/Electrocution/ElectrocutionNode.cs @@ -14,10 +14,11 @@ public sealed partial class ElectrocutionNode : Node [DataField("node")] public string? NodeName; - public override IEnumerable GetReachableNodes(TransformComponent xform, + public override IEnumerable GetReachableNodes( + Entity xform, EntityQuery nodeQuery, EntityQuery xformQuery, - MapGridComponent? grid, + Entity? grid, IEntityManager entMan) { if (CableEntity == null || NodeName == null) diff --git a/Content.Server/NodeContainer/EntitySystems/NodeGroupSystem.cs b/Content.Server/NodeContainer/EntitySystems/NodeGroupSystem.cs index ee72f89abbc..219f87805d3 100644 --- a/Content.Server/NodeContainer/EntitySystems/NodeGroupSystem.cs +++ b/Content.Server/NodeContainer/EntitySystems/NodeGroupSystem.cs @@ -350,12 +350,12 @@ private List FloodFillNode(Node rootNode) private IEnumerable GetCompatibleNodes(Node node, EntityQuery xformQuery, EntityQuery nodeQuery) { var xform = xformQuery.GetComponent(node.Owner); - TryComp(xform.GridUid, out var grid); + Entity? gridEnt = TryComp(xform.GridUid, out var grid) ? (xform.GridUid.Value, grid) : null; if (!node.Connectable(EntityManager, xform)) yield break; - foreach (var reachable in node.GetReachableNodes(xform, nodeQuery, xformQuery, grid, EntityManager)) + foreach (var reachable in node.GetReachableNodes((node.Owner, xform), nodeQuery, xformQuery, gridEnt, EntityManager)) { DebugTools.Assert(reachable != node, "GetReachableNodes() should not include self."); diff --git a/Content.Server/NodeContainer/Nodes/AdjacentNode.cs b/Content.Server/NodeContainer/Nodes/AdjacentNode.cs index d719ccbff07..0a4e9fe4a12 100644 --- a/Content.Server/NodeContainer/Nodes/AdjacentNode.cs +++ b/Content.Server/NodeContainer/Nodes/AdjacentNode.cs @@ -1,5 +1,4 @@ using Content.Shared.NodeContainer; -using Robust.Shared.Map; using Robust.Shared.Map.Components; namespace Content.Server.NodeContainer.Nodes @@ -10,18 +9,20 @@ namespace Content.Server.NodeContainer.Nodes [DataDefinition] public sealed partial class AdjacentNode : Node { - public override IEnumerable GetReachableNodes(TransformComponent xform, + public override IEnumerable GetReachableNodes( + Entity xform, EntityQuery nodeQuery, EntityQuery xformQuery, - MapGridComponent? grid, + Entity? grid, IEntityManager entMan) { - if (!xform.Anchored || grid == null) + if (!xform.Comp.Anchored || grid is not { } gridEnt) yield break; - var gridIndex = grid.TileIndicesFor(xform.Coordinates); + var mapSystem = entMan.System(); + var gridIndex = mapSystem.TileIndicesFor(gridEnt, xform.Comp.Coordinates); - foreach (var (_, node) in NodeHelpers.GetCardinalNeighborNodes(nodeQuery, grid, gridIndex)) + foreach (var (_, node) in NodeHelpers.GetCardinalNeighborNodes(nodeQuery, gridEnt, gridIndex, mapSystem)) { if (node != this) yield return node; diff --git a/Content.Server/NodeContainer/Nodes/NodeHelpers.cs b/Content.Server/NodeContainer/Nodes/NodeHelpers.cs index c2345fff760..10d29c31200 100644 --- a/Content.Server/NodeContainer/Nodes/NodeHelpers.cs +++ b/Content.Server/NodeContainer/Nodes/NodeHelpers.cs @@ -10,9 +10,9 @@ namespace Content.Server.NodeContainer.Nodes /// public static class NodeHelpers { - public static IEnumerable GetNodesInTile(EntityQuery nodeQuery, MapGridComponent grid, Vector2i coords) + public static IEnumerable GetNodesInTile(EntityQuery nodeQuery, Entity grid, Vector2i coords, SharedMapSystem mapSystem) { - foreach (var entityUid in grid.GetAnchoredEntities(coords)) + foreach (var entityUid in mapSystem.GetAnchoredEntities(grid, coords)) { if (!nodeQuery.TryGetComponent(entityUid, out var container)) continue; @@ -24,13 +24,20 @@ public static IEnumerable GetNodesInTile(EntityQuery and SharedMapSystem")] + public static IEnumerable GetNodesInTile(EntityQuery nodeQuery, MapGridComponent grid, Vector2i coords) + { + return GetNodesInTile(nodeQuery, (grid.Owner, grid), coords, IoCManager.Resolve().System()); + } + public static IEnumerable<(Direction dir, Node node)> GetCardinalNeighborNodes( EntityQuery nodeQuery, - MapGridComponent grid, + Entity grid, Vector2i coords, + SharedMapSystem mapSystem, bool includeSameTile = true) { - foreach (var (dir, entityUid) in GetCardinalNeighborCells(grid, coords, includeSameTile)) + foreach (var (dir, entityUid) in GetCardinalNeighborCells(grid, coords, mapSystem, includeSameTile)) { if (!nodeQuery.TryGetComponent(entityUid, out var container)) continue; @@ -42,29 +49,49 @@ public static IEnumerable GetNodesInTile(EntityQuery and SharedMapSystem")] + public static IEnumerable<(Direction dir, Node node)> GetCardinalNeighborNodes( + EntityQuery nodeQuery, + MapGridComponent grid, + Vector2i coords, + bool includeSameTile = true) + { + return GetCardinalNeighborNodes(nodeQuery, (grid.Owner, grid), coords, IoCManager.Resolve().System(), includeSameTile); + } + [SuppressMessage("ReSharper", "EnforceForeachStatementBraces")] public static IEnumerable<(Direction dir, EntityUid entity)> GetCardinalNeighborCells( - MapGridComponent grid, + Entity grid, Vector2i coords, + SharedMapSystem mapSystem, bool includeSameTile = true) { if (includeSameTile) { - foreach (var uid in grid.GetAnchoredEntities(coords)) + foreach (var uid in mapSystem.GetAnchoredEntities(grid, coords)) yield return (Direction.Invalid, uid); } - foreach (var uid in grid.GetAnchoredEntities(coords + (0, 1))) + foreach (var uid in mapSystem.GetAnchoredEntities(grid, coords + (0, 1))) yield return (Direction.North, uid); - foreach (var uid in grid.GetAnchoredEntities(coords + (0, -1))) + foreach (var uid in mapSystem.GetAnchoredEntities(grid, coords + (0, -1))) yield return (Direction.South, uid); - foreach (var uid in grid.GetAnchoredEntities(coords + (1, 0))) + foreach (var uid in mapSystem.GetAnchoredEntities(grid, coords + (1, 0))) yield return (Direction.East, uid); - foreach (var uid in grid.GetAnchoredEntities(coords + (-1, 0))) + foreach (var uid in mapSystem.GetAnchoredEntities(grid, coords + (-1, 0))) yield return (Direction.West, uid); } + + [Obsolete("Use the overload that passes in Entity and SharedMapSystem")] + public static IEnumerable<(Direction dir, EntityUid entity)> GetCardinalNeighborCells( + MapGridComponent grid, + Vector2i coords, + bool includeSameTile = true) + { + return GetCardinalNeighborCells((grid.Owner, grid), coords, IoCManager.Resolve().System(), includeSameTile); + } } } diff --git a/Content.Server/NodeContainer/Nodes/PipeNode.cs b/Content.Server/NodeContainer/Nodes/PipeNode.cs index 3a76666a2c0..23a2c217506 100644 --- a/Content.Server/NodeContainer/Nodes/PipeNode.cs +++ b/Content.Server/NodeContainer/Nodes/PipeNode.cs @@ -156,10 +156,11 @@ public override void OnAnchorStateChanged(IEntityManager entityManager, bool anc CurrentPipeDirection = OriginalPipeDirection.RotatePipeDirection(xform.LocalRotation); } - public override IEnumerable GetReachableNodes(TransformComponent xform, + public override IEnumerable GetReachableNodes( + Entity xform, EntityQuery nodeQuery, EntityQuery xformQuery, - MapGridComponent? grid, + Entity? grid, IEntityManager entMan) { if (_alwaysReachable != null) @@ -180,10 +181,11 @@ public override IEnumerable GetReachableNodes(TransformComponent xform, } } - if (!xform.Anchored || grid == null) + if (!xform.Comp.Anchored || grid is not { } gridEnt) yield break; - var pos = grid.TileIndicesFor(xform.Coordinates); + var mapSystem = entMan.System(); + var pos = mapSystem.TileIndicesFor(gridEnt, xform.Comp.Coordinates); for (var i = 0; i < PipeDirectionHelpers.PipeDirections; i++) { @@ -192,7 +194,7 @@ public override IEnumerable GetReachableNodes(TransformComponent xform, if (!CurrentPipeDirection.HasDirection(pipeDir)) continue; - foreach (var pipe in LinkableNodesInDirection(pos, pipeDir, grid, nodeQuery)) + foreach (var pipe in LinkableNodesInDirection(pos, pipeDir, gridEnt, nodeQuery, mapSystem)) { yield return pipe; } @@ -202,10 +204,14 @@ public override IEnumerable GetReachableNodes(TransformComponent xform, /// /// Gets the pipes that can connect to us from entities on the tile or adjacent in a direction. /// - private IEnumerable LinkableNodesInDirection(Vector2i pos, PipeDirection pipeDir, MapGridComponent grid, - EntityQuery nodeQuery) + private IEnumerable LinkableNodesInDirection( + Vector2i pos, + PipeDirection pipeDir, + Entity grid, + EntityQuery nodeQuery, + SharedMapSystem mapSystem) { - foreach (var pipe in PipesInDirection(pos, pipeDir, grid, nodeQuery)) + foreach (var pipe in PipesInDirection(pos, pipeDir, grid, nodeQuery, mapSystem)) { if (pipe.NodeGroupID == NodeGroupID && pipe.CurrentPipeLayer == CurrentPipeLayer @@ -219,12 +225,16 @@ private IEnumerable LinkableNodesInDirection(Vector2i pos, PipeDirecti /// /// Gets the pipes from entities on the tile adjacent in a direction. /// - protected IEnumerable PipesInDirection(Vector2i pos, PipeDirection pipeDir, MapGridComponent grid, - EntityQuery nodeQuery) + protected IEnumerable PipesInDirection( + Vector2i pos, + PipeDirection pipeDir, + Entity grid, + EntityQuery nodeQuery, + SharedMapSystem mapSystem) { var offsetPos = pos.Offset(pipeDir.ToDirection()); - foreach (var entity in grid.GetAnchoredEntities(offsetPos)) + foreach (var entity in mapSystem.GetAnchoredEntities(grid, offsetPos)) { if (!nodeQuery.TryGetComponent(entity, out var container)) continue; diff --git a/Content.Server/NodeContainer/Nodes/PortPipeNode.cs b/Content.Server/NodeContainer/Nodes/PortPipeNode.cs index 04e0dc0ab7a..f8b8b2ad8f2 100644 --- a/Content.Server/NodeContainer/Nodes/PortPipeNode.cs +++ b/Content.Server/NodeContainer/Nodes/PortPipeNode.cs @@ -7,18 +7,20 @@ namespace Content.Server.NodeContainer.Nodes [DataDefinition] public sealed partial class PortPipeNode : PipeNode { - public override IEnumerable GetReachableNodes(TransformComponent xform, + public override IEnumerable GetReachableNodes( + Entity xform, EntityQuery nodeQuery, EntityQuery xformQuery, - MapGridComponent? grid, + Entity? grid, IEntityManager entMan) { - if (!xform.Anchored || grid == null) + if (!xform.Comp.Anchored || grid is not { } gridEnt) yield break; - var gridIndex = grid.TileIndicesFor(xform.Coordinates); + var mapSystem = entMan.System(); + var gridIndex = mapSystem.TileIndicesFor(gridEnt, xform.Comp.Coordinates); - foreach (var node in NodeHelpers.GetNodesInTile(nodeQuery, grid, gridIndex)) + foreach (var node in NodeHelpers.GetNodesInTile(nodeQuery, gridEnt, gridIndex, mapSystem)) { if (node is PortablePipeNode) yield return node; diff --git a/Content.Server/NodeContainer/Nodes/PortablePipeNode.cs b/Content.Server/NodeContainer/Nodes/PortablePipeNode.cs index 427288ee502..0458c403588 100644 --- a/Content.Server/NodeContainer/Nodes/PortablePipeNode.cs +++ b/Content.Server/NodeContainer/Nodes/PortablePipeNode.cs @@ -7,18 +7,20 @@ namespace Content.Server.NodeContainer.Nodes [DataDefinition] public sealed partial class PortablePipeNode : PipeNode { - public override IEnumerable GetReachableNodes(TransformComponent xform, + public override IEnumerable GetReachableNodes( + Entity xform, EntityQuery nodeQuery, EntityQuery xformQuery, - MapGridComponent? grid, + Entity? grid, IEntityManager entMan) { - if (!xform.Anchored || grid == null) + if (!xform.Comp.Anchored || grid is not { } gridEnt) yield break; - var gridIndex = grid.TileIndicesFor(xform.Coordinates); + var mapSystem = entMan.System(); + var gridIndex = mapSystem.TileIndicesFor(gridEnt, xform.Comp.Coordinates); - foreach (var node in NodeHelpers.GetNodesInTile(nodeQuery, grid, gridIndex)) + foreach (var node in NodeHelpers.GetNodesInTile(nodeQuery, gridEnt, gridIndex, mapSystem)) { if (node is PortPipeNode) yield return node; diff --git a/Content.Server/Power/Generation/Teg/TegNodeGroup.cs b/Content.Server/Power/Generation/Teg/TegNodeGroup.cs index 92a353ccb11..d1056635539 100644 --- a/Content.Server/Power/Generation/Teg/TegNodeGroup.cs +++ b/Content.Server/Power/Generation/Teg/TegNodeGroup.cs @@ -127,18 +127,19 @@ public override void LoadNodes(List groupNodes) public sealed partial class TegNodeGenerator : Node { public override IEnumerable GetReachableNodes( - TransformComponent xform, + Entity xform, EntityQuery nodeQuery, EntityQuery xformQuery, - MapGridComponent? grid, + Entity? grid, IEntityManager entMan) { - if (!xform.Anchored || grid == null) + if (!xform.Comp.Anchored || grid is not { } gridEnt) yield break; - var gridIndex = grid.TileIndicesFor(xform.Coordinates); + var mapSystem = entMan.System(); + var gridIndex = mapSystem.TileIndicesFor(gridEnt, xform.Comp.Coordinates); - var dir = xform.LocalRotation.GetDir(); + var dir = xform.Comp.LocalRotation.GetDir(); var a = FindCirculator(dir); var b = FindCirculator(dir.GetOpposite()); @@ -152,7 +153,7 @@ public override IEnumerable GetReachableNodes( { var targetIdx = gridIndex.Offset(searchDir); - foreach (var node in NodeHelpers.GetNodesInTile(nodeQuery, grid, targetIdx)) + foreach (var node in NodeHelpers.GetNodesInTile(nodeQuery, gridEnt, targetIdx, mapSystem)) { if (node is not TegNodeCirculator circulator) continue; @@ -179,22 +180,23 @@ public override IEnumerable GetReachableNodes( public sealed partial class TegNodeCirculator : Node { public override IEnumerable GetReachableNodes( - TransformComponent xform, + Entity xform, EntityQuery nodeQuery, EntityQuery xformQuery, - MapGridComponent? grid, + Entity? grid, IEntityManager entMan) { - if (!xform.Anchored || grid == null) + if (!xform.Comp.Anchored || grid is not { } gridEnt) yield break; - var gridIndex = grid.TileIndicesFor(xform.Coordinates); + var mapSystem = entMan.System(); + var gridIndex = mapSystem.TileIndicesFor(gridEnt, xform.Comp.Coordinates); - var dir = xform.LocalRotation.GetDir(); + var dir = xform.Comp.LocalRotation.GetDir(); var searchDir = dir.GetClockwise90Degrees(); var targetIdx = gridIndex.Offset(searchDir); - foreach (var node in NodeHelpers.GetNodesInTile(nodeQuery, grid, targetIdx)) + foreach (var node in NodeHelpers.GetNodesInTile(nodeQuery, gridEnt, targetIdx, mapSystem)) { if (node is not TegNodeGenerator generator) continue; diff --git a/Content.Server/Power/Nodes/CableDeviceNode.cs b/Content.Server/Power/Nodes/CableDeviceNode.cs index 4089cd56579..98c0261198d 100644 --- a/Content.Server/Power/Nodes/CableDeviceNode.cs +++ b/Content.Server/Power/Nodes/CableDeviceNode.cs @@ -1,4 +1,3 @@ -using Content.Server.NodeContainer; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.NodeContainer; @@ -31,18 +30,20 @@ public override bool Connectable(IEntityManager entMan, TransformComponent? xfor return base.Connectable(entMan, xform); } - public override IEnumerable GetReachableNodes(TransformComponent xform, + public override IEnumerable GetReachableNodes( + Entity xform, EntityQuery nodeQuery, EntityQuery xformQuery, - MapGridComponent? grid, + Entity? grid, IEntityManager entMan) { - if (!xform.Anchored || grid == null) + if (!xform.Comp.Anchored || grid is not { } gridEnt) yield break; - var gridIndex = grid.TileIndicesFor(xform.Coordinates); + var mapSystem = entMan.System(); + var gridIndex = mapSystem.TileIndicesFor(gridEnt, xform.Comp.Coordinates); - foreach (var node in NodeHelpers.GetNodesInTile(nodeQuery, grid, gridIndex)) + foreach (var node in NodeHelpers.GetNodesInTile(nodeQuery, gridEnt, gridIndex, mapSystem)) { if (node is CableNode) yield return node; diff --git a/Content.Server/Power/Nodes/CableNode.cs b/Content.Server/Power/Nodes/CableNode.cs index b0cbad4d48b..d1fccfa4113 100644 --- a/Content.Server/Power/Nodes/CableNode.cs +++ b/Content.Server/Power/Nodes/CableNode.cs @@ -1,7 +1,5 @@ -using Content.Server.NodeContainer; using Content.Server.NodeContainer.Nodes; using Content.Shared.NodeContainer; -using Robust.Shared.Map; using Robust.Shared.Map.Components; namespace Content.Server.Power.Nodes @@ -9,23 +7,25 @@ namespace Content.Server.Power.Nodes [DataDefinition] public sealed partial class CableNode : Node { - public override IEnumerable GetReachableNodes(TransformComponent xform, + public override IEnumerable GetReachableNodes( + Entity xform, EntityQuery nodeQuery, EntityQuery xformQuery, - MapGridComponent? grid, + Entity? grid, IEntityManager entMan) { - if (!xform.Anchored || grid == null) + if (!xform.Comp.Anchored || grid is not { } gridEnt) yield break; - var gridIndex = grid.TileIndicesFor(xform.Coordinates); + var mapSystem = entMan.System(); + var gridIndex = mapSystem.TileIndicesFor(gridEnt, xform.Comp.Coordinates); // While we go over adjacent nodes, we build a list of blocked directions due to // incoming or outgoing wire terminals. var terminalDirs = 0; List<(Direction, Node)> nodeDirs = new(); - foreach (var (dir, node) in NodeHelpers.GetCardinalNeighborNodes(nodeQuery, grid, gridIndex)) + foreach (var (dir, node) in NodeHelpers.GetCardinalNeighborNodes(nodeQuery, gridEnt, gridIndex, mapSystem)) { if (node is CableNode && node != this) { diff --git a/Content.Server/Power/Nodes/CableTerminalNode.cs b/Content.Server/Power/Nodes/CableTerminalNode.cs index 8988a9950b0..6e113b2106a 100644 --- a/Content.Server/Power/Nodes/CableTerminalNode.cs +++ b/Content.Server/Power/Nodes/CableTerminalNode.cs @@ -9,21 +9,23 @@ namespace Content.Server.Power.Nodes [DataDefinition] public sealed partial class CableTerminalNode : CableDeviceNode { - public override IEnumerable GetReachableNodes(TransformComponent xform, + public override IEnumerable GetReachableNodes( + Entity xform, EntityQuery nodeQuery, EntityQuery xformQuery, - MapGridComponent? grid, + Entity? grid, IEntityManager entMan) { - if (!xform.Anchored || grid == null) + if (!xform.Comp.Anchored || grid is not { } gridEnt) yield break; - var gridIndex = grid.TileIndicesFor(xform.Coordinates); + var mapSystem = entMan.System(); + var gridIndex = mapSystem.TileIndicesFor(gridEnt, xform.Comp.Coordinates); - var dir = xform.LocalRotation.GetDir(); + var dir = xform.Comp.LocalRotation.GetDir(); var targetIdx = gridIndex.Offset(dir); - foreach (var node in NodeHelpers.GetNodesInTile(nodeQuery, grid, targetIdx)) + foreach (var node in NodeHelpers.GetNodesInTile(nodeQuery, gridEnt, targetIdx, mapSystem)) { if (node is CableTerminalPortNode) yield return node; diff --git a/Content.Server/Power/Nodes/CableTerminalPortNode.cs b/Content.Server/Power/Nodes/CableTerminalPortNode.cs index b2397ebb6ca..7cfb94f1138 100644 --- a/Content.Server/Power/Nodes/CableTerminalPortNode.cs +++ b/Content.Server/Power/Nodes/CableTerminalPortNode.cs @@ -1,7 +1,5 @@ -using Content.Server.NodeContainer; using Content.Server.NodeContainer.Nodes; using Content.Shared.NodeContainer; -using Robust.Shared.Map; using Robust.Shared.Map.Components; namespace Content.Server.Power.Nodes @@ -9,18 +7,20 @@ namespace Content.Server.Power.Nodes [DataDefinition] public sealed partial class CableTerminalPortNode : Node { - public override IEnumerable GetReachableNodes(TransformComponent xform, + public override IEnumerable GetReachableNodes( + Entity xform, EntityQuery nodeQuery, EntityQuery xformQuery, - MapGridComponent? grid, + Entity? grid, IEntityManager entMan) { - if (!xform.Anchored || grid == null) + if (!xform.Comp.Anchored || grid is not { } gridEnt) yield break; - var gridIndex = grid.TileIndicesFor(xform.Coordinates); + var mapSystem = entMan.System(); + var gridIndex = mapSystem.TileIndicesFor(gridEnt, xform.Comp.Coordinates); - var nodes = NodeHelpers.GetCardinalNeighborNodes(nodeQuery, grid, gridIndex, includeSameTile: false); + var nodes = NodeHelpers.GetCardinalNeighborNodes(nodeQuery, gridEnt, gridIndex, mapSystem, includeSameTile: false); foreach (var (dir, node) in nodes) { if (node is CableTerminalNode diff --git a/Content.Shared/NodeContainer/Node.cs b/Content.Shared/NodeContainer/Node.cs index cfb82756e49..561b0515d87 100644 --- a/Content.Shared/NodeContainer/Node.cs +++ b/Content.Shared/NodeContainer/Node.cs @@ -97,9 +97,10 @@ public virtual void Initialize(EntityUid owner, IEntityManager entMan) /// of this asymmetric relation are made to manually update with . /// /// - public abstract IEnumerable GetReachableNodes(TransformComponent xform, + public abstract IEnumerable GetReachableNodes( + Entity xform, EntityQuery nodeQuery, EntityQuery xformQuery, - MapGridComponent? grid, + Entity? grid, IEntityManager entMan); } From 700e901cbf44fc841d7c66cc5dcda5fba35ccf28 Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Tue, 10 Mar 2026 20:15:09 -0400 Subject: [PATCH 501/603] Add a basic API to `JukeboxSystem` (#42896) * Add a basic API to JukeboxSystem * Update Content.Shared/Audio/Jukebox/SharedJukeboxSystem.cs Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Remove pointless Dirty * Move SetSelectedTrack Dirty inside if block * logMissing: false * Remove pointless Audio.Stop call * Poke tests --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- Content.Server/Audio/Jukebox/JukeboxSystem.cs | 152 ++++++++++++------ .../Audio/Jukebox/SharedJukeboxSystem.cs | 11 ++ 2 files changed, 111 insertions(+), 52 deletions(-) diff --git a/Content.Server/Audio/Jukebox/JukeboxSystem.cs b/Content.Server/Audio/Jukebox/JukeboxSystem.cs index 81d71894b86..c8600a35536 100644 --- a/Content.Server/Audio/Jukebox/JukeboxSystem.cs +++ b/Content.Server/Audio/Jukebox/JukeboxSystem.cs @@ -5,14 +5,11 @@ using Robust.Server.GameObjects; using Robust.Shared.Audio; using Robust.Shared.Audio.Components; -using Robust.Shared.Audio.Systems; using Robust.Shared.Player; using Robust.Shared.Prototypes; -using JukeboxComponent = Content.Shared.Audio.Jukebox.JukeboxComponent; namespace Content.Server.Audio.Jukebox; - public sealed class JukeboxSystem : SharedJukeboxSystem { [Dependency] private readonly IPrototypeManager _protoManager = default!; @@ -32,81 +29,51 @@ public override void Initialize() SubscribeLocalEvent(OnPowerChanged); } - private void OnComponentInit(EntityUid uid, JukeboxComponent component, ComponentInit args) + private void OnComponentInit(Entity ent, ref ComponentInit args) { - if (HasComp(uid)) + if (HasComp(ent)) { - TryUpdateVisualState(uid, component); + TryUpdateVisualState(ent.AsNullable()); } } - private void OnJukeboxPlay(EntityUid uid, JukeboxComponent component, ref JukeboxPlayingMessage args) + private void OnJukeboxPlay(Entity ent, ref JukeboxPlayingMessage args) { - if (Exists(component.AudioStream)) - { - Audio.SetState(component.AudioStream, AudioState.Playing); - } - else - { - component.AudioStream = Audio.Stop(component.AudioStream); - - if (string.IsNullOrEmpty(component.SelectedSongId) || - !_protoManager.Resolve(component.SelectedSongId, out var jukeboxProto)) - { - return; - } - - component.AudioStream = Audio.PlayPvs(jukeboxProto.Path, uid, AudioParams.Default.WithMaxDistance(10f))?.Entity; - Dirty(uid, component); - } + TryPlay(ent.AsNullable()); } private void OnJukeboxPause(Entity ent, ref JukeboxPauseMessage args) { - Audio.SetState(ent.Comp.AudioStream, AudioState.Paused); + Pause(ent.AsNullable()); } - private void OnJukeboxSetTime(EntityUid uid, JukeboxComponent component, JukeboxSetTimeMessage args) + private void OnJukeboxSetTime(Entity ent, ref JukeboxSetTimeMessage args) { if (TryComp(args.Actor, out ActorComponent? actorComp)) { var offset = actorComp.PlayerSession.Channel.Ping * 1.5f / 1000f; - Audio.SetPlaybackPosition(component.AudioStream, args.SongTime + offset); + SetTime(ent.AsNullable(), args.SongTime + offset); } } private void OnPowerChanged(Entity entity, ref PowerChangedEvent args) { - TryUpdateVisualState(entity); + TryUpdateVisualState(entity.AsNullable()); if (!this.IsPowered(entity.Owner, EntityManager)) { - Stop(entity); + Stop(entity.AsNullable()); } } private void OnJukeboxStop(Entity entity, ref JukeboxStopMessage args) { - Stop(entity); - } - - private void Stop(Entity entity) - { - Audio.SetState(entity.Comp.AudioStream, AudioState.Stopped); - Dirty(entity); + Stop(entity.AsNullable()); } private void OnJukeboxSelected(EntityUid uid, JukeboxComponent component, JukeboxSelectedMessage args) { - if (!Audio.IsPlaying(component.AudioStream)) - { - component.SelectedSongId = args.SongId; - DirectSetVisualState(uid, JukeboxVisualState.Select); - component.Selecting = true; - component.AudioStream = Audio.Stop(component.AudioStream); - } - - Dirty(uid, component); + SetSelectedTrack((uid, component), args.SongId); } public override void Update(float frameTime) @@ -124,15 +91,15 @@ public override void Update(float frameTime) comp.SelectAccumulator = 0f; comp.Selecting = false; - TryUpdateVisualState(uid, comp); + TryUpdateVisualState((uid, comp)); } } } } - private void OnComponentShutdown(EntityUid uid, JukeboxComponent component, ComponentShutdown args) + private void OnComponentShutdown(Entity ent, ref ComponentShutdown args) { - component.AudioStream = Audio.Stop(component.AudioStream); + ent.Comp.AudioStream = Audio.Stop(ent.Comp.AudioStream); } private void DirectSetVisualState(EntityUid uid, JukeboxVisualState state) @@ -140,18 +107,99 @@ private void DirectSetVisualState(EntityUid uid, JukeboxVisualState state) _appearanceSystem.SetData(uid, JukeboxVisuals.VisualState, state); } - private void TryUpdateVisualState(EntityUid uid, JukeboxComponent? jukeboxComponent = null) + private void TryUpdateVisualState(Entity ent) { - if (!Resolve(uid, ref jukeboxComponent)) + if (!Resolve(ent, ref ent.Comp)) return; var finalState = JukeboxVisualState.On; - if (!this.IsPowered(uid, EntityManager)) + if (!this.IsPowered(ent, EntityManager)) { finalState = JukeboxVisualState.Off; } - _appearanceSystem.SetData(uid, JukeboxVisuals.VisualState, finalState); + _appearanceSystem.SetData(ent, JukeboxVisuals.VisualState, finalState); + } + + /// + /// Set the selected track of the jukebox to the specified prototype. + /// + public void SetSelectedTrack(Entity ent, ProtoId track) + { + if (!Resolve(ent, ref ent.Comp)) + return; + + if (!Audio.IsPlaying(ent.Comp.AudioStream)) + { + ent.Comp.SelectedSongId = track; + DirectSetVisualState(ent, JukeboxVisualState.Select); + ent.Comp.Selecting = true; + ent.Comp.AudioStream = Audio.Stop(ent.Comp.AudioStream); + Dirty(ent); + } + } + + /// + /// Attempts to play the jukebox's current selected track. + /// + /// false if no track is selected or the track prototype cannot be found, otherwise true. + public bool TryPlay(Entity ent) + { + if (!Resolve(ent, ref ent.Comp)) + return false; + + if (Exists(ent.Comp.AudioStream)) + { + Audio.SetState(ent.Comp.AudioStream, AudioState.Playing); + } + else + { + if (string.IsNullOrEmpty(ent.Comp.SelectedSongId) || + !_protoManager.Resolve(ent.Comp.SelectedSongId, out var jukeboxProto)) + { + return false; + } + + ent.Comp.AudioStream = Audio.PlayPvs(jukeboxProto.Path, ent, AudioParams.Default.WithMaxDistance(10f))?.Entity; + Dirty(ent); + } + return true; + } + + /// + /// Stops any track that may currently be playing. + /// + public void Stop(Entity entity) + { + if (!Resolve(entity, ref entity.Comp, logMissing: false)) + return; + + Audio.SetState(entity.Comp.AudioStream, AudioState.Stopped); + } + + /// + /// Pauses any track that may currently be playing. + /// + public void Pause(Entity entity) + { + if (!Resolve(entity, ref entity.Comp, logMissing: false)) + return; + + Audio.SetState(entity.Comp.AudioStream, AudioState.Paused); + } + + /// + /// Sets the playback position within the current audio track. + /// + /// + /// If setting based on user input, you may need to compensate for the player's ping. + /// + public void SetTime(Entity entity, float songTime) + { + if (!Resolve(entity, ref entity.Comp)) + return; + + Audio.SetPlaybackPosition(entity.Comp.AudioStream, songTime); } } diff --git a/Content.Shared/Audio/Jukebox/SharedJukeboxSystem.cs b/Content.Shared/Audio/Jukebox/SharedJukeboxSystem.cs index 1a8f9cb3bb8..aa37e604087 100644 --- a/Content.Shared/Audio/Jukebox/SharedJukeboxSystem.cs +++ b/Content.Shared/Audio/Jukebox/SharedJukeboxSystem.cs @@ -5,4 +5,15 @@ namespace Content.Shared.Audio.Jukebox; public abstract class SharedJukeboxSystem : EntitySystem { [Dependency] protected readonly SharedAudioSystem Audio = default!; + + /// + /// Returns whether or not the given jukebox is currently playing a song. + /// + public bool IsPlaying(Entity entity) + { + if (!Resolve(entity, ref entity.Comp)) + return false; + + return entity.Comp.AudioStream is { } audio && Audio.IsPlaying(audio); + } } From 5f030ee346743e73be634f5c0ef33e390c176028 Mon Sep 17 00:00:00 2001 From: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> Date: Tue, 10 Mar 2026 23:23:27 -0700 Subject: [PATCH 502/603] Atmos YAML-defined gas flammability, flammability API (#43165) * atmos masked flammability/API * on that oomba pac * yuuup * resolve todo and review * rename --- .../EntitySystems/AtmosphereSystem.Gases.cs | 14 +++ .../EntitySystems/AtmosphereSystem.Gases.cs | 14 +++ .../EntitySystems/AtmosphereSystem.Hotspot.cs | 18 ++-- Content.Shared/Atmos/Atmospherics.cs | 5 ++ .../SharedAtmosphereSystem.Gases.cs | 85 +++++++++++++++++++ .../Atmos/GasMixtureStringRepresentation.cs | 13 ++- .../Atmos/Prototypes/GasPrototype.cs | 16 ++++ Resources/Prototypes/Atmospherics/gases.yml | 3 + 8 files changed, 156 insertions(+), 12 deletions(-) diff --git a/Content.Client/Atmos/EntitySystems/AtmosphereSystem.Gases.cs b/Content.Client/Atmos/EntitySystems/AtmosphereSystem.Gases.cs index 17b994e64f6..cdae052b1b1 100644 --- a/Content.Client/Atmos/EntitySystems/AtmosphereSystem.Gases.cs +++ b/Content.Client/Atmos/EntitySystems/AtmosphereSystem.Gases.cs @@ -13,6 +13,20 @@ code that would escape sandbox. As such these methods are overridden here with a implementation. */ + public override bool IsMixtureFuel(GasMixture mixture, float epsilon = Atmospherics.Epsilon) + { + var tmp = new float[Atmospherics.AdjustedNumberOfGases]; + NumericsHelpers.Multiply(mixture.Moles, GasFuelMask, tmp); + return NumericsHelpers.HorizontalAdd(tmp) > epsilon; + } + + public override bool IsMixtureOxidizer(GasMixture mixture, float epsilon = Atmospherics.Epsilon) + { + var tmp = new float[Atmospherics.AdjustedNumberOfGases]; + NumericsHelpers.Multiply(mixture.Moles, GasOxidizerMask, tmp); + return NumericsHelpers.HorizontalAdd(tmp) > epsilon; + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] protected override float GetHeatCapacityCalculation(float[] moles, bool space) { diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs index acc11a7b2b7..2acd8e4ecab 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs @@ -44,6 +44,20 @@ protected override float GetHeatCapacityCalculation(float[] moles, bool space) return MathF.Max(NumericsHelpers.HorizontalAdd(tmp), Atmospherics.MinimumHeatCapacity); } + public override bool IsMixtureFuel(GasMixture mixture, float epsilon = Atmospherics.Epsilon) + { + Span tmp = stackalloc float[Atmospherics.AdjustedNumberOfGases]; + NumericsHelpers.Multiply(mixture.Moles, GasFuelMask, tmp); + return NumericsHelpers.HorizontalAdd(tmp) > epsilon; + } + + public override bool IsMixtureOxidizer(GasMixture mixture, float epsilon = Atmospherics.Epsilon) + { + Span tmp = stackalloc float[Atmospherics.AdjustedNumberOfGases]; + NumericsHelpers.Multiply(mixture.Moles, GasOxidizerMask, tmp); + return NumericsHelpers.HorizontalAdd(tmp) > epsilon; + } + /// /// Return speedup factor for pumped or flow-based devices that depend on MaxTransferRate. /// diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs index c2702679d9b..d667d99435c 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs @@ -1,3 +1,4 @@ +using System.Globalization; using Content.Server.Atmos.Components; using Content.Server.Decals; using Content.Shared.Atmos; @@ -87,8 +88,7 @@ private void ProcessHotspot( if (tile.Hotspot.Temperature < Atmospherics.FireMinimumTemperatureToExist || tile.Hotspot.Volume <= 1f || tile.Air == null || - tile.Air.GetMoles(Gas.Oxygen) < 0.5f || - tile.Air.GetMoles(Gas.Plasma) < 0.5f && tile.Air.GetMoles(Gas.Tritium) < 0.5f) + !IsMixtureIgnitable(tile.Air)) { tile.Hotspot = new Hotspot(); InvalidateVisuals(ent, tile); @@ -201,19 +201,16 @@ private void HotspotExpose(GridAtmosphereComponent gridAtmosphere, if (tile.Air == null) return; - var oxygen = tile.Air.GetMoles(Gas.Oxygen); - - if (oxygen < 0.5f) + if (!IsMixtureOxidizer(tile.Air)) return; - var plasma = tile.Air.GetMoles(Gas.Plasma); - var tritium = tile.Air.GetMoles(Gas.Tritium); + var isFlammable = IsMixtureIgnitable(tile.Air); if (tile.Hotspot.Valid) { if (soh) { - if (plasma > 0.5f || tritium > 0.5f) + if (isFlammable) { tile.Hotspot.Temperature = MathF.Max(tile.Hotspot.Temperature, exposedTemperature); tile.Hotspot.Volume = MathF.Max(tile.Hotspot.Volume, exposedVolume); @@ -223,13 +220,14 @@ private void HotspotExpose(GridAtmosphereComponent gridAtmosphere, return; } - if (exposedTemperature > Atmospherics.PlasmaMinimumBurnTemperature && (plasma > 0.5f || tritium > 0.5f)) + if (exposedTemperature > Atmospherics.PlasmaMinimumBurnTemperature && isFlammable) { if (sparkSourceUid.HasValue) { _adminLog.Add(LogType.Flammable, LogImpact.High, - $"Heat/spark of {ToPrettyString(sparkSourceUid.Value)} caused atmos ignition of gas: {tile.Air.Temperature.ToString():temperature}K - {oxygen}mol Oxygen, {plasma}mol Plasma, {tritium}mol Tritium"); + $"Heat/spark of {ToPrettyString(sparkSourceUid.Value)} caused atmos ignition of gas: " + + $"{tile.Air.ToPrettyString()}"); } tile.Hotspot = new Hotspot diff --git a/Content.Shared/Atmos/Atmospherics.cs b/Content.Shared/Atmos/Atmospherics.cs index 4e64b6b4d18..e53ce29fd32 100644 --- a/Content.Shared/Atmos/Atmospherics.cs +++ b/Content.Shared/Atmos/Atmospherics.cs @@ -19,6 +19,11 @@ public static class Atmospherics /// public const float OneAtmosphere = 101.325f; + /// + /// Global Atmospherics epsilon. Used for all general floating-point comparisons. + /// + public const float Epsilon = 0.001f; + /// /// Maximum external pressure (in kPA) a gas miner will, by default, output to. /// This is used to initialize roundstart atmos rooms. diff --git a/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.Gases.cs b/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.Gases.cs index 98472b7ca27..db263495e9c 100644 --- a/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.Gases.cs +++ b/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.Gases.cs @@ -20,6 +20,36 @@ due to sandboxing. public float[] GasSpecificHeats => _gasSpecificHeats; private float[] _gasSpecificHeats = new float[Atmospherics.TotalNumberOfGases]; + /// + /// Mask used to determine if a gas is flammable or not. + /// + /// This is used to quickly determine if a contains any flammable gas. + /// When determining flammability, the float is multiplied with the mask and then + /// added to see if the mixture is flammable, and how many moles are considered flammable. + /// This is done instead of a massive if statement of doom everywhere. + /// Say Plasma has the bool set to true. + /// Atmospherics will place a 1 in the spot where plasma goes in the masking array. + /// Whenever we need to determine if a GasMixture contains fuel gases, we multiply the + /// gas array by the mask. Fuel gases will keep their value (being multiplied by one) + /// whereas non-fuel gases will be multiplied by zero and be zeroed out. + /// The resulting array can be HorizontalAdded, with any value above zero indicating fuel gases. + /// This works for multiple fuel gases at the same time, so it's a fairly quick way + /// to determine if a mixture has the gases we care about. + protected readonly float[] GasFuelMask = new float[Atmospherics.AdjustedNumberOfGases]; + + /// + /// Mask used to determine if a gas is an oxidizer or not. + /// Used in the same way as . + /// Nothing really super special. + /// + protected readonly float[] GasOxidizerMask = new float[Atmospherics.AdjustedNumberOfGases]; + + /// + /// Mask used to determine both fuel and oxidizer properties of a gas at the same time. + /// Primarily used to quickly report the specific moles in a mixture that caused a flammable reaction to occur. + /// + protected readonly float[] GasOxidiserFuelMask = new float[Atmospherics.TotalNumberOfGases]; + public string?[] GasReagents = new string[Atmospherics.TotalNumberOfGases]; protected readonly GasPrototype[] GasPrototypes = new GasPrototype[Atmospherics.TotalNumberOfGases]; @@ -51,9 +81,64 @@ Most usages are going to want the scaled value anyway. TODO ATMOS: please just make this 2 separate arrays instead of invoking multiplication every time. */ _gasSpecificHeats[i] = GasPrototypes[i].SpecificHeat / HeatScale; + + // """Mask""" built here. Used to determine if a gas is fuel/oxidizer or not decently quickly and clearly. + GasFuelMask[i] = GasPrototypes[i].IsFuel ? 1 : 0; + + // Same for oxidizer mask. + GasOxidizerMask[i] = GasPrototypes[i].IsOxidizer ? 1 : 0; + + // OxidiserFuel mask is just fuel and oxidizer combined, because both are required for a reaction to occur. + GasOxidiserFuelMask[i] = GasFuelMask[i] * GasOxidizerMask[i]; } } + /// + /// Gets only the moles that are considered a fuel and an oxidizer in a . + /// + /// The to get the flammable moles for. + /// A buffer to write the flammable moles into. Must be the same length as the number of gases. + /// A of moles where only the flammable and oxidizer moles are returned, and the rest are 0. + [PublicAPI] + public void GetFlammableMoles(GasMixture mixture, float[] buffer) + { + NumericsHelpers.Multiply(mixture.Moles, GasOxidiserFuelMask, buffer); + } + + /// + /// Determines if a is ignitable or not. + /// This is a combination of determining if a mixture both has oxidizer and fuel. + /// + /// The to determine. + /// The minimum amount of moles at which a is + /// considered ignitable, for both oxidizer and fuel. + /// True if the is ignitable, otherwise, false. + [PublicAPI] + public bool IsMixtureIgnitable(GasMixture mixture, float epsilon = 0.001f) + { + return IsMixtureFuel(mixture, epsilon) && IsMixtureOxidizer(mixture, epsilon); + } + + /// + /// Determines if a has fuel gases in it or not. + /// + /// The to determine. + /// The minimum amount of moles at which a + /// is considered fuel. + /// True if the is fuel, otherwise, false. + [PublicAPI] + public abstract bool IsMixtureFuel(GasMixture mixture, float epsilon = 0.001f); + + /// + /// Determines if a has oxidizer gases in it or not. + /// + /// The to determine. + /// The minimum amount of moles at which a + /// is considered an oxidizer. + /// True if the is an oxidizer, otherwise, false. + [PublicAPI] + public abstract bool IsMixtureOxidizer(GasMixture mixture, float epsilon = 0.001f); + /// /// Calculates the heat capacity for a . /// diff --git a/Content.Shared/Atmos/GasMixtureStringRepresentation.cs b/Content.Shared/Atmos/GasMixtureStringRepresentation.cs index 942b2bdc672..33b9d9e181c 100644 --- a/Content.Shared/Atmos/GasMixtureStringRepresentation.cs +++ b/Content.Shared/Atmos/GasMixtureStringRepresentation.cs @@ -1,10 +1,19 @@ -namespace Content.Shared.Atmos; +using System.Text; + +namespace Content.Shared.Atmos; public readonly record struct GasMixtureStringRepresentation(float TotalMoles, float Temperature, float Pressure, Dictionary MolesPerGas) : IFormattable { public override string ToString() { - return $"{Temperature}K {Pressure} kPa"; + var stringBuilder = new StringBuilder(); + foreach (var (gas, moles) in MolesPerGas) + { + stringBuilder.Append($"{gas}: {moles}, "); + } + var result = stringBuilder.ToString(); + + return $"{Temperature} K, {Pressure} kPa, {result}Total Moles: {TotalMoles}"; } public string ToString(string? format, IFormatProvider? formatProvider) diff --git a/Content.Shared/Atmos/Prototypes/GasPrototype.cs b/Content.Shared/Atmos/Prototypes/GasPrototype.cs index 6a2d4078207..86304dfddaf 100644 --- a/Content.Shared/Atmos/Prototypes/GasPrototype.cs +++ b/Content.Shared/Atmos/Prototypes/GasPrototype.cs @@ -83,5 +83,21 @@ public sealed partial class GasPrototype : IPrototype [DataField("pricePerMole")] public float PricePerMole { get; set; } = 0; + + /// + /// Whether the gas is considered to be flammable. + /// This is used generically across Atmospherics to determine + /// if things like hotspots are allowed to ignite if an + /// oxidizer is present. + /// + [DataField] + public bool IsFuel; + + /// + /// Whether the gas is considered to be an oxidizer. + /// Same reasoning as but for oxidizers. + /// + [DataField] + public bool IsOxidizer; } } diff --git a/Resources/Prototypes/Atmospherics/gases.yml b/Resources/Prototypes/Atmospherics/gases.yml index 813c68555bd..f27bab9074d 100644 --- a/Resources/Prototypes/Atmospherics/gases.yml +++ b/Resources/Prototypes/Atmospherics/gases.yml @@ -7,6 +7,7 @@ color: 2887E8 reagent: Oxygen pricePerMole: 0 + isOxidizer: true - type: gas id: Nitrogen @@ -39,6 +40,7 @@ color: FF3300 reagent: Plasma pricePerMole: 0 + isFuel: true - type: gas id: Tritium @@ -51,6 +53,7 @@ color: 13FF4B reagent: Tritium pricePerMole: 2.5 + isFuel: true - type: gas id: WaterVapor From f3bb1becf5dce787367f52e542a847b2248f0304 Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Thu, 12 Mar 2026 00:28:47 +0100 Subject: [PATCH 503/603] Vent Hordes (#43047) * init * port hostiles to hordes, fakeout horde * cleaning, docs * i may be blind sometimes * i may be even blinder * remove friendly announcements * fuck it * i love microbalancing * review * review * review p2 * Update Resources/Prototypes/GameRules/pests.yml Co-authored-by: SnappingOpossum * review + powercreep * lower the times to account for the gamerule delay * review * review * fuck this return actually * fial --------- Co-authored-by: SnappingOpossum --- .../Components/VentHordeRuleComponent.cs | 26 ++++ .../StationEvents/Events/VentCrittersRule.cs | 3 + .../StationEvents/Events/VentHordeRule.cs | 122 ++++++++++++++++++ .../Components/VentHordeSpawnerComponent.cs | 77 +++++++++++ .../VentHorde/Systems/VentHordeSystem.cs | 119 +++++++++++++++++ .../station-events/events/vent-critters.ftl | 2 +- Resources/Prototypes/GameRules/events.yml | 86 ++++++------ Resources/Prototypes/GameRules/pests.yml | 54 +++++--- 8 files changed, 431 insertions(+), 58 deletions(-) create mode 100644 Content.Server/StationEvents/Components/VentHordeRuleComponent.cs create mode 100644 Content.Server/StationEvents/Events/VentHordeRule.cs create mode 100644 Content.Server/VentHorde/Components/VentHordeSpawnerComponent.cs create mode 100644 Content.Server/VentHorde/Systems/VentHordeSystem.cs diff --git a/Content.Server/StationEvents/Components/VentHordeRuleComponent.cs b/Content.Server/StationEvents/Components/VentHordeRuleComponent.cs new file mode 100644 index 00000000000..b4a7b49e6c5 --- /dev/null +++ b/Content.Server/StationEvents/Components/VentHordeRuleComponent.cs @@ -0,0 +1,26 @@ +using Content.Server.StationEvents.Events; +using Content.Shared.EntityTable.EntitySelectors; + +namespace Content.Server.StationEvents.Components; + +/// +/// Component used for the vent horde gamerule. +/// Picks a random entity with +/// and spawns entities picked from the on it after a delay. +/// +[RegisterComponent, Access(typeof(VentHordeRule))] +public sealed partial class VentHordeRuleComponent : Component +{ + /// + /// The table of possible mobs to spawn from the vent. + /// + [DataField(required: true)] + public EntityTableSelector Table = default!; + + /// + /// The vent that has been chosen to spawn the entities. + /// Spawning logic is handled by + /// + [DataField] + public EntityUid? ChosenVent; +} diff --git a/Content.Server/StationEvents/Events/VentCrittersRule.cs b/Content.Server/StationEvents/Events/VentCrittersRule.cs index 5ca5a9d215c..c8113c3098d 100644 --- a/Content.Server/StationEvents/Events/VentCrittersRule.cs +++ b/Content.Server/StationEvents/Events/VentCrittersRule.cs @@ -27,6 +27,9 @@ protected override void Started(EntityUid uid, VentCrittersRuleComponent compone var validLocations = new List(); while (locations.MoveNext(out _, out _, out var transform)) { + if (!transform.Anchored) + continue; + if (CompOrNull(transform.GridUid)?.Station == station) { validLocations.Add(transform.Coordinates); diff --git a/Content.Server/StationEvents/Events/VentHordeRule.cs b/Content.Server/StationEvents/Events/VentHordeRule.cs new file mode 100644 index 00000000000..230b93c5485 --- /dev/null +++ b/Content.Server/StationEvents/Events/VentHordeRule.cs @@ -0,0 +1,122 @@ +using System.Linq; +using Content.Server.Pinpointer; +using Content.Server.StationEvents.Components; +using Content.Server.VentHorde.Components; +using Content.Server.VentHorde.Systems; +using Content.Shared.EntityTable; +using Content.Shared.GameTicking.Components; +using Content.Shared.Station.Components; +using Robust.Shared.Random; +using Robust.Shared.Timing; + +namespace Content.Server.StationEvents.Events; + +/// +/// Variant of that selects a single vent and spawns all entities there. +/// +public sealed class VentHordeRule : StationEventSystem +{ + /* + * DO NOT COPY PASTE THIS TO MAKE YOUR MOB EVENT. + * USE THE PROTOTYPE. + */ + + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly NavMapSystem _navMap = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; + [Dependency] private readonly EntityTableSystem _table = default!; + [Dependency] private readonly VentHordeSystem _horde = default!; + [Dependency] private readonly IGameTiming _timing = default!; + + protected override void Added(EntityUid uid, VentHordeRuleComponent component, GameRuleComponent gameRule, GameRuleAddedEvent args) + { + // Choose location and make sure it's not null + component.ChosenVent = ChooseVent(); + + if (component.ChosenVent is not { } vent) + { + Log.Warning($"Unable to find a valid vent for {args.RuleId}!"); + ForceEndSelf(uid, gameRule); + return; + } + + // Get the event component so we can format the announcement + if (TryComp(uid, out var stationEventComp) && stationEventComp.StartAnnouncement != null) + { + // Get the nearest beacon + var mapLocation = _transform.ToMapCoordinates(Transform(vent).Coordinates); + var nearestBeacon = _navMap.GetNearestBeaconString(mapLocation, onlyName: true); + + // Format the announcement with the location, if the string doesn't have them it'll still work fine + // time is not said on purpose to keep the players on their toes. + // also because we cannot tell the end time inside of Added(). + stationEventComp.StartAnnouncement = + Loc.GetString(stationEventComp.StartAnnouncement, + ("location", nearestBeacon)); + } + + base.Added(uid, component, gameRule, args); + } + + protected override void Started(EntityUid uid, VentHordeRuleComponent component, GameRuleComponent gameRule, GameRuleStartedEvent args) + { + base.Started(uid, component, gameRule, args); + + if (!Exists(component.ChosenVent)) + { + Log.Warning($"Chosen vent for {args.RuleId} does not exist!"); + ForceEndSelf(uid, gameRule); + return; + } + + if (!TryComp(uid, out var stationEventComp)) + return; + + // We grab when the gamerule is expected to end and subtract the current time from it to get the duration. + var duration = (stationEventComp.EndTime - _timing.CurTime) ?? TimeSpan.Zero; + + var spawns = _table.GetSpawns(component.Table); + + if (component.ChosenVent == null) + return; + + // And start the spawn at the chosen vent. + // The duration is the same as the time until expected gamerule end time, but that is only for convenience. + // The spawn can happen early in certain circumstances anyway. + _horde.StartHordeSpawn(component.ChosenVent.Value, spawns.ToList(), duration); + } + + private EntityUid? ChooseVent() + { + // Get a station + if (!TryGetRandomStation(out var station)) + { + return null; + } + + // Query the possible locations + var locations = EntityQueryEnumerator(); + var validLocations = new List(); + + // Filter to things on the same station + while (locations.MoveNext(out var uid, out _, out var transform)) + { + if (!transform.Anchored) + continue; + + if (HasComp(uid)) + continue; + + if (CompOrNull(transform.GridUid)?.Station == station) + { + validLocations.Add(uid); + } + } + + // Pick one at random + if (validLocations.Count != 0) + return _random.Pick(validLocations); + + return null; + } +} diff --git a/Content.Server/VentHorde/Components/VentHordeSpawnerComponent.cs b/Content.Server/VentHorde/Components/VentHordeSpawnerComponent.cs new file mode 100644 index 00000000000..ab1d68031ca --- /dev/null +++ b/Content.Server/VentHorde/Components/VentHordeSpawnerComponent.cs @@ -0,0 +1,77 @@ +using Content.Server.VentHorde.Systems; +using Robust.Shared.Audio; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; + +namespace Content.Server.VentHorde.Components; + +/// +/// Marks an entity as selected by the . +/// Will spawn all entities contained within on its location at . +/// +[RegisterComponent, Access(typeof(VentHordeSystem))] +[AutoGenerateComponentPause] +public sealed partial class VentHordeSpawnerComponent : Component +{ + /// + /// The mobs to spawn from the vent. + /// + [DataField(required: true)] + public List Entities = new (); + + /// + /// Maximum speed at which the entities will be thrown out of the vent. + /// + [DataField] + public float MaxThrowSpeed = 1.5f; + + /// + /// Minimum speed at which the entities will be thrown out of the vent. + /// + [DataField] + public float MinThrowSpeed = 0.5f; + + /// + /// Maximum distance which travel when thrown out of the vent. + /// + [DataField] + public float MaxThrowDistance = 4f; + + /// + /// Minimum distance which travel when thrown out of the vent. + /// + [DataField] + public float MinThrowDistance = 2f; + + /// + /// The time at which the entities will spawn. + /// + [DataField(customTypeSerializer:typeof(TimeOffsetSerializer))] + [AutoPausedField] + public TimeSpan? SpawnTime; + + /// + /// Plays on loop when a vent is selected as a spawner. + /// + [DataField] + public SoundSpecifier PassiveSound = new SoundPathSpecifier("/Audio/Machines/airlock_creaking.ogg") + { + Params = AudioParams.Default.WithVolume(-3f), + }; + + /// + /// Plays when the entities are thrown out of the vent. + /// + [DataField] + public SoundSpecifier EndSound = new SoundPathSpecifier("/Audio/Weapons/Guns/Gunshots/grenade_launcher.ogg") + { + Params = AudioParams.Default.WithVolume(-3f), + }; + + /// + /// The PassiveSound entity, used to cancel the audio. + /// + [DataField] + [ViewVariables(VVAccess.ReadOnly)] + public EntityUid? AudioStream; +} diff --git a/Content.Server/VentHorde/Systems/VentHordeSystem.cs b/Content.Server/VentHorde/Systems/VentHordeSystem.cs new file mode 100644 index 00000000000..a2834e01459 --- /dev/null +++ b/Content.Server/VentHorde/Systems/VentHordeSystem.cs @@ -0,0 +1,119 @@ +using Content.Server.VentHorde.Components; +using Content.Shared.Destructible; +using Content.Shared.Jittering; +using Content.Shared.Throwing; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; +using Robust.Shared.Timing; + +namespace Content.Server.VentHorde.Systems; + +public sealed class VentHordeSystem : EntitySystem +{ + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly ThrowingSystem _throwing = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedJitteringSystem _jitter = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnSpawnerInit); + SubscribeLocalEvent(OnSpawnerShutdown); + + SubscribeLocalEvent(OnSpawnerBreakage); + SubscribeLocalEvent(OnSpawnerAnchored); + } + + private void OnSpawnerInit(Entity entity, ref MapInitEvent args) + { + _jitter.AddJitter(entity); + } + + private void OnSpawnerShutdown(Entity entity, ref ComponentShutdown args) + { + _audio.Stop(entity.Comp.AudioStream); + RemCompDeferred(entity); + } + + private void OnSpawnerBreakage(Entity entity, ref BreakageEventArgs args) + { + // There is no escape. + EndHordeSpawn(entity); + } + + private void OnSpawnerAnchored(Entity entity, ref AnchorStateChangedEvent args) + { + // Anchor state changes when the entity is broken, to avoid double spawning we check if the entity is gonna be deleted. + if (TerminatingOrDeleted(entity)) + return; + + // There is no escape. + EndHordeSpawn(entity); + } + + /// + /// Starts a horde spawn at an entity. + /// + /// The entity to spawn the horde at. + /// List of entities to spawn. + /// Time after which to spawn the entities. + /// If an already active spawner is selected, will add entities to its list. Otherwise, will fail. + public void StartHordeSpawn(EntityUid uid, List spawns, TimeSpan spawnDelay, bool append = true) + { + if (TryComp(uid, out var hordeSpawner)) + { + if (append) + { + hordeSpawner.Entities.AddRange(spawns); + } + + return; + } + + hordeSpawner = EnsureComp(uid); + + hordeSpawner.AudioStream = _audio.PlayPvs(hordeSpawner.PassiveSound, uid, hordeSpawner.PassiveSound.Params.WithLoop(true))?.Entity; + + hordeSpawner.Entities = spawns; + hordeSpawner.SpawnTime = _timing.CurTime + spawnDelay; + } + + /// + /// Ends a horde spawn, causing all entities to spawn at once. + /// + /// The horde spawner entity. + public void EndHordeSpawn(Entity entity) + { + entity.Comp.AudioStream = _audio.Stop(entity.Comp.AudioStream); + + _audio.PlayPvs(entity.Comp.EndSound, entity); + + foreach (var spawn in entity.Comp.Entities) + { + var spawned = Spawn(spawn, Transform(entity).Coordinates); + var direction = _random.NextVector2() * _random.NextFloat(entity.Comp.MinThrowDistance, entity.Comp.MaxThrowDistance); + var throwSpeed = _random.NextFloat(entity.Comp.MinThrowSpeed, entity.Comp.MaxThrowSpeed); + _throwing.TryThrow(spawned, direction, throwSpeed); + } + + RemCompDeferred(entity); + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp)) + { + if (comp.SpawnTime != null && _timing.CurTime > comp.SpawnTime) + { + EndHordeSpawn((uid, comp)); + } + } + } +} diff --git a/Resources/Locale/en-US/station-events/events/vent-critters.ftl b/Resources/Locale/en-US/station-events/events/vent-critters.ftl index 426f0c0ca1a..ce6990d833b 100644 --- a/Resources/Locale/en-US/station-events/events/vent-critters.ftl +++ b/Resources/Locale/en-US/station-events/events/vent-critters.ftl @@ -1 +1 @@ -station-event-vent-creatures-start-announcement = Attention. A large influx of unknown life forms have been detected residing within the station's ventilation systems. Please be rid of these creatures before it begins to affect productivity. +station-event-vent-creatures-start-horde-announcement = Attention. A large influx of unknown life forms have been detected moving through the station's ventilation systems. They are expected to emerge near {$location}. Please evacuate the area to avoid loss of personnel. diff --git a/Resources/Prototypes/GameRules/events.yml b/Resources/Prototypes/GameRules/events.yml index f680004e873..8c46bae7897 100644 --- a/Resources/Prototypes/GameRules/events.yml +++ b/Resources/Prototypes/GameRules/events.yml @@ -18,11 +18,11 @@ - id: MouseMigration - id: PowerGridCheck - id: RandomSentience - - id: SlimesSpawn + - id: SlimesSpawnHorde - id: SolarFlare - - id: SnakeSpawn - - id: SpiderClownSpawn - - id: SpiderSpawn + - id: SnakeSpawnHorde + - id: SpiderClownSpawnHorde + - id: SpiderSpawnHorde - id: VentClog - type: entityTable @@ -447,81 +447,87 @@ duration: 60 - type: VentClogRule +# Critters + - type: entity - id: SlimesSpawn + id: SlimesSpawnHorde parent: BaseStationEventShortDelay components: - type: StationEvent - startAnnouncement: station-event-vent-creatures-start-announcement + startAnnouncement: station-event-vent-creatures-start-horde-announcement startAudio: path: /Audio/Announcements/attention.ogg earliestStart: 20 minimumPlayers: 15 weight: 5 - duration: 60 - - type: VentCrittersRule - entries: - - id: MobAdultSlimesBlueAngry - prob: 0.02 - - id: MobAdultSlimesGreenAngry - prob: 0.02 - - id: MobAdultSlimesYellowAngry - prob: 0.02 + duration: 5 + maxDuration: 20 + - type: VentHordeRule + table: !type:GroupSelector + rolls: 4, 8 + children: + - id: MobAdultSlimesBlueAngry + - id: MobAdultSlimesGreenAngry + - id: MobAdultSlimesYellowAngry - type: entity - id: SnakeSpawn + id: SnakeSpawnHorde parent: BaseStationEventShortDelay components: - type: StationEvent - startAnnouncement: station-event-vent-creatures-start-announcement + startAnnouncement: station-event-vent-creatures-start-horde-announcement startAudio: path: /Audio/Announcements/attention.ogg earliestStart: 20 minimumPlayers: 15 weight: 5 - duration: 60 - - type: VentCrittersRule - entries: - - id: MobPurpleSnake - prob: 0.02 - - id: MobSmallPurpleSnake - prob: 0.02 - - id: MobCobraSpace - prob: 0.02 + duration: 5 + maxDuration: 20 + - type: VentHordeRule + table: !type:GroupSelector + rolls: 4, 8 + children: + - id: MobPurpleSnake + - id: MobSmallPurpleSnake + - id: MobCobraSpace - type: entity - id: SpiderSpawn + id: SpiderSpawnHorde parent: BaseStationEventShortDelay components: - type: StationEvent - startAnnouncement: station-event-vent-creatures-start-announcement + startAnnouncement: station-event-vent-creatures-start-horde-announcement startAudio: path: /Audio/Announcements/attention.ogg earliestStart: 20 minimumPlayers: 15 weight: 5 - duration: 60 - - type: VentCrittersRule - entries: - - id: MobGiantSpiderAngry - prob: 0.05 + duration: 5 + maxDuration: 20 + - type: VentHordeRule + table: !type:GroupSelector + rolls: 4, 8 + children: + - id: MobGiantSpiderAngry - type: entity - id: SpiderClownSpawn + id: SpiderClownSpawnHorde parent: BaseStationEventShortDelay components: - type: StationEvent - startAnnouncement: station-event-vent-creatures-start-announcement + startAnnouncement: station-event-vent-creatures-start-horde-announcement startAudio: path: /Audio/Announcements/attention.ogg earliestStart: 20 minimumPlayers: 20 weight: 1.5 - duration: 60 - - type: VentCrittersRule - entries: - - id: MobClownSpider - prob: 0.05 + duration: 5 + maxDuration: 20 + - type: VentHordeRule + table: !type:GroupSelector + rolls: 4, 8 + children: + - id: MobClownSpider - type: entity id: ZombieOutbreak diff --git a/Resources/Prototypes/GameRules/pests.yml b/Resources/Prototypes/GameRules/pests.yml index 9ddee3d709d..7a80b3baa0b 100644 --- a/Resources/Prototypes/GameRules/pests.yml +++ b/Resources/Prototypes/GameRules/pests.yml @@ -7,6 +7,7 @@ - id: SnailMigrationLowPop - id: CockroachMigration - id: MouseMigration + - id: RandomCritterHorde - type: entityTable id: SpicyPestEventsTable @@ -22,9 +23,6 @@ parent: BaseStationEventShortDelay components: - type: StationEvent - startAnnouncement: station-event-vent-creatures-start-announcement - startAudio: - path: /Audio/Announcements/attention.ogg earliestStart: 15 weight: 6 duration: 50 @@ -45,14 +43,11 @@ parent: BaseStationEventShortDelay components: - type: StationEvent - startAnnouncement: station-event-vent-creatures-start-announcement - startAudio: - path: /Audio/Announcements/attention.ogg earliestStart: 15 weight: 6 duration: 50 minimumPlayers: 30 # Hopefully this is enough for the Rat King's potential Army (it was not, raised from 15 -> 30) - - type: VentCrittersRule + - type: VentCrittersRule # We don't use Horde here to make RK spawns less predictable. entries: - id: MobMouse prob: 0.02 @@ -71,9 +66,6 @@ parent: BaseStationEventShortDelay components: - type: StationEvent - startAnnouncement: station-event-vent-creatures-start-announcement - startAudio: - path: /Audio/Announcements/attention.ogg weight: 6 duration: 50 - type: VentCrittersRule @@ -90,9 +82,6 @@ parent: BaseStationEventShortDelay components: - type: StationEvent - startAnnouncement: station-event-vent-creatures-start-announcement - startAudio: - path: /Audio/Announcements/attention.ogg weight: 6 duration: 50 - type: VentCrittersRule @@ -109,9 +98,6 @@ parent: BaseStationEventShortDelay components: - type: StationEvent - startAnnouncement: station-event-vent-creatures-start-announcement - startAudio: - path: /Audio/Announcements/attention.ogg earliestStart: 15 weight: 6 duration: 50 @@ -125,4 +111,38 @@ - id: MobSnailMoth prob: 0.002 - id: MobSnailInstantDeath - prob: 0.00001 # ~ 1:2000 snails \ No newline at end of file + prob: 0.00001 # ~ 1:2000 snails + +- type: entity + parent: BaseStationEventShortDelay + id: RandomCritterHorde # My deepest apologies, Mr. Secoff. You just wasted your time :) + components: + - type: StationEvent + startAnnouncement: station-event-vent-creatures-start-horde-announcement + startAudio: + path: /Audio/Announcements/attention.ogg + earliestStart: 15 + weight: 6 # Slightly more common than other hordes + duration: 5 + maxDuration: 20 + reoccurrenceDelay: 15 # Shorter because this event is basically a nat zero on the round. It only exists to potentially confuse security or the crew + - type: VentHordeRule + table: !type:GroupSelector + rolls: 3,5 + children: + - !type:GroupSelector + children: # Increased chances for special snails on purpose. Makes it a bit more interesting. + - id: MobSnail + - id: MobSnailSpeed + - id: MobSnailMoth + - !type:GroupSelector + children: # Increased chances for special roaches on purpose. Makes it a bit more interesting. + - id: MobCockroach + - id: MobMothroach + - id: MobMoproach + weight: 0.5 + - !type:GroupSelector + children: + - id: MobMouse + - id: MobMouse1 + - id: MobMouse2 From d547adcf89169e3776fa80ffb29d5a5b011914c7 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 11 Mar 2026 23:43:48 +0000 Subject: [PATCH 504/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index cd480ed757a..f0d790aeae0 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: ToastEnjoyer - changes: - - message: On fland, the wardens enforcer has been removed. - type: Remove - id: 9059 - time: '2025-10-08T23:45:56.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40786 - author: SlamBamActionman changes: - message: EXPERIMENTAL Nocturine now slows the target down, with a longer duration @@ -4003,3 +3996,15 @@ id: 9569 time: '2026-03-08T01:05:24.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42866 +- author: ScarKy0 + changes: + - message: Hostile vent critters now crawl out of a single vent, alerting the station + about the location in advance. + type: Add + - message: Friendly critters no longer have an announcement when spawning. + type: Remove + - message: Vent critters can no longer spawn on unachored vents. + type: Fix + id: 9570 + time: '2026-03-11T23:42:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43047 From 67b0e89457ce39221abfbc3b07345a4ed0ab2ecd Mon Sep 17 00:00:00 2001 From: Geekyhobo <66805063+Geekyhobo@users.noreply.github.com> Date: Thu, 12 Mar 2026 12:15:01 -0400 Subject: [PATCH 505/603] Add DB Config to development.toml (#43036) add db config development.toml --- Resources/ConfigPresets/Build/development.toml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Resources/ConfigPresets/Build/development.toml b/Resources/ConfigPresets/Build/development.toml index 4f60c0a57de..092588ec100 100644 --- a/Resources/ConfigPresets/Build/development.toml +++ b/Resources/ConfigPresets/Build/development.toml @@ -45,3 +45,12 @@ new_player_threshold = 120 random_characters = true random_species_weights = "" ssd_sleep_time = 3600 + +[database] +# Change to postgres if needed +engine = "sqlite" +pg_host = "localhost" +pg_port = 5432 +pg_database = "ss14" +pg_username = "postgres" +pg_password = "postgres" From 012ffe5abddee8953f51ec14776c6995df7ee16d Mon Sep 17 00:00:00 2001 From: Simon <63975668+Simyon264@users.noreply.github.com> Date: Thu, 12 Mar 2026 19:40:47 +0100 Subject: [PATCH 506/603] Add banning to server api (#43205) add banning to server api --- Content.Server/Administration/ServerApi.cs | 80 ++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/Content.Server/Administration/ServerApi.cs b/Content.Server/Administration/ServerApi.cs index f1f09d4b503..1990de8a6f0 100644 --- a/Content.Server/Administration/ServerApi.cs +++ b/Content.Server/Administration/ServerApi.cs @@ -6,7 +6,9 @@ using System.Text.Json; using System.Text.Json.Nodes; using System.Threading.Tasks; +using Content.Server.Administration.Managers; using Content.Server.Administration.Systems; +using Content.Server.Database; using Content.Server.GameTicking; using Content.Server.GameTicking.Presets; using Content.Server.GameTicking.Rules.Components; @@ -14,6 +16,7 @@ using Content.Server.RoundEnd; using Content.Shared.Administration.Managers; using Content.Shared.CCVar; +using Content.Shared.Database; using Content.Shared.GameTicking.Components; using Content.Shared.Prototypes; using Robust.Server.ServerStatus; @@ -58,6 +61,9 @@ public sealed partial class ServerApi : IPostInjectInit [Dependency] private readonly ILogManager _logManager = default!; [Dependency] private readonly IEntitySystemManager _entitySystemManager = default!; [Dependency] private readonly ILocalizationManager _loc = default!; + [Dependency] private readonly IPlayerLocator _locator = default!; + [Dependency] private readonly IBanManager _bans = default!; + [Dependency] private readonly IServerDbManager _db = default!; private string _token = string.Empty; private ISawmill _sawmill = default!; @@ -76,6 +82,7 @@ void IPostInjectInit.PostInject() RegisterActorHandler(HttpMethod.Post, "/admin/actions/round/end", ActionRoundEnd); RegisterActorHandler(HttpMethod.Post, "/admin/actions/round/restartnow", ActionRoundRestartNow); RegisterActorHandler(HttpMethod.Post, "/admin/actions/kick", ActionKick); + RegisterActorHandler(HttpMethod.Post, "/admin/actions/ban", ActionBan); RegisterActorHandler(HttpMethod.Post, "/admin/actions/add_game_rule", ActionAddGameRule); RegisterActorHandler(HttpMethod.Post, "/admin/actions/end_game_rule", ActionEndGameRule); RegisterActorHandler(HttpMethod.Post, "/admin/actions/force_preset", ActionForcePreset); @@ -307,6 +314,70 @@ await RespondError(context, }); } + /// + /// Bans a player. + /// + private async Task ActionBan(IStatusHandlerContext context, Actor actor) + { + var body = await ReadJson(context); + if (body == null) + return; + + await RunOnMainThread(async () => + { + var located = await _locator.LookupIdByNameOrIdAsync(body.Guid.ToString()); + + if (located == null) + { + await RespondError( + context, + ErrorCode.PlayerNotFound, + HttpStatusCode.UnprocessableContent, + "Player not found"); + return; + } + + var bans = await _db.GetBansAsync(userId: located.UserId, + address: null, + hwId: null, + modernHWIds: located.LastModernHWIds, + includeUnbanned: false); + if (bans.Count > 0) + { + await RespondError( + context, + ErrorCode.PlayerAlreadyBanned, + HttpStatusCode.Conflict, + "Player is already banned."); + return; + } + + var reason = body.Reason ?? "No reason supplied"; + var info = new CreateServerBanInfo(reason); + + info.AddHWId(located.LastHWId); + info.AddUser(located.UserId, located.Username); + info.WithSeverity(body.Severity); + if (body.Minutes != null && body.Minutes != 0) + { + info.WithMinutes(body.Minutes.Value); + } + + info.WithBanningAdmin(new NetUserId(actor.Guid)); + + // Add the ip if the user is currently connected. + if (_playerManager.TryGetSessionById(new NetUserId(body.Guid), out var player)) + { + info.AddAddress(player.Channel.RemoteEndPoint.Address); + } + + _bans.CreateServerBan(info); + await RespondOk(context); + + _sawmill.Info($"Banned player {located.Username} ({located.UserId}) for {reason} lasting {body.Minutes ?? 0} minutes by {FormatLogActor(actor)}"); + }); + } + /// /// Kicks a player. /// @@ -616,6 +687,14 @@ private sealed class KickActionBody public string? Reason { get; init; } } + private sealed class BanActionBody + { + public required Guid Guid { get; init; } + public string? Reason { get; init; } + public NoteSeverity Severity { get; init; } + public uint? Minutes { get; init; } + } + private sealed class GameRuleActionBody { public required string GameRuleId { get; init; } @@ -657,6 +736,7 @@ private enum ErrorCode PlayerNotFound = 4, GameRuleNotFound = 5, BadRequest = 6, + PlayerAlreadyBanned = 7, } #endregion From 38cd873fc30f757a686e7647a76b072e1b585056 Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Thu, 12 Mar 2026 22:38:24 +0100 Subject: [PATCH 507/603] Revert "Support for melee weapon user overrides" (#43106) Revert "Support for melee weapon user overrides (#39633)" This reverts commit 18149dbb3b7f0beadc572069ea91a682aebf3e93. --- .../Melee/MeleeWeaponSystem.Effects.cs | 40 ++++--------------- .../Weapons/Melee/MeleeWeaponSystem.cs | 16 ++------ .../Events/GetMeleeAttackerEntityEvent.cs | 14 ------- .../Melee/Events/PrepareMeleeLungeEvent.cs | 29 -------------- .../Weapons/Melee/SharedMeleeWeaponSystem.cs | 20 +++------- 5 files changed, 17 insertions(+), 102 deletions(-) delete mode 100644 Content.Shared/Weapons/Melee/Events/GetMeleeAttackerEntityEvent.cs delete mode 100644 Content.Shared/Weapons/Melee/Events/PrepareMeleeLungeEvent.cs diff --git a/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs b/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs index 0de2e7eae68..0bccd5b1b39 100644 --- a/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs +++ b/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs @@ -2,7 +2,6 @@ using Content.Client.Animations; using Content.Client.Weapons.Melee.Components; using Content.Shared.Weapons.Melee; -using Content.Shared.Weapons.Melee.Events; using Robust.Client.Animations; using Robust.Client.GameObjects; using Robust.Shared.Animations; @@ -36,25 +35,7 @@ public override void DoLunge(EntityUid user, EntityUid weapon, Angle angle, Vect if (!_xformQuery.TryGetComponent(user, out var userXform) || userXform.MapID == MapId.Nullspace) return; - // Allow systems to override how visuals are spawned/tracked. - var prepare = new PrepareMeleeLungeEvent(user, weapon, angle, localPos, animation) - { - SpawnAtMap = false, - DisableTracking = false - }; - RaiseLocalEvent(user, ref prepare); - - EntityUid animationUid; - var (mapPos, mapRot) = TransformSystem.GetWorldPositionRotation(userXform); - if (prepare.SpawnAtMap) - { - var spawnCoords = new MapCoordinates(mapPos, userXform.MapID); - animationUid = Spawn(animation, spawnCoords); - } - else - { - animationUid = Spawn(animation, userXform.Coordinates); - } + var animationUid = Spawn(animation, userXform.Coordinates); if (!TryComp(animationUid, out var sprite) || !TryComp(animationUid, out var arcComponent)) @@ -81,8 +62,7 @@ public override void DoLunge(EntityUid user, EntityUid weapon, Angle angle, Vect length = (1 / meleeWeaponComponent.AttackRate) * 0.6f; offset = meleeWeaponComponent.AnimationOffset; } - var baseVec = prepare.SpawnAtMap ? (mapRot - userXform.LocalRotation).RotateVec(localPos) : localPos; - _sprite.SetRotation((animationUid, sprite), baseVec.ToWorldAngle()); + _sprite.SetRotation((animationUid, sprite), localPos.ToWorldAngle()); var xform = _xformQuery.GetComponent(animationUid); TrackUserComponent track; @@ -90,27 +70,21 @@ public override void DoLunge(EntityUid user, EntityUid weapon, Angle angle, Vect switch (arcComponent.Animation) { case WeaponArcAnimation.Slash: - if (!prepare.DisableTracking) - { - track = EnsureComp(animationUid); - track.User = user; - } + track = EnsureComp(animationUid); + track.User = user; _animation.Play(animationUid, GetSlashAnimation((animationUid, sprite), angle, spriteRotation, length, offset), SlashAnimationKey); if (arcComponent.Fadeout) _animation.Play(animationUid, GetFadeAnimation(sprite, length * 0.5f, length + 0.15f), FadeAnimationKey); break; case WeaponArcAnimation.Thrust: - if (!prepare.DisableTracking) - { - track = EnsureComp(animationUid); - track.User = user; - } + track = EnsureComp(animationUid); + track.User = user; _animation.Play(animationUid, GetThrustAnimation((animationUid, sprite), offset, spriteRotation, length), ThrustAnimationKey); if (arcComponent.Fadeout) _animation.Play(animationUid, GetFadeAnimation(sprite, length * 0.5f, length + 0.15f), FadeAnimationKey); break; case WeaponArcAnimation.None: - (mapPos, mapRot) = TransformSystem.GetWorldPositionRotation(userXform); + var (mapPos, mapRot) = TransformSystem.GetWorldPositionRotation(userXform); var worldPos = mapPos + (mapRot - userXform.LocalRotation).RotateVec(localPos); var newLocalPos = Vector2.Transform(worldPos, TransformSystem.GetInvWorldMatrix(xform.ParentUid)); TransformSystem.SetLocalPositionNoLerp(animationUid, newLocalPos, xform); diff --git a/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs b/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs index 8c17b049b73..420e18748f0 100644 --- a/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs +++ b/Content.Client/Weapons/Melee/MeleeWeaponSystem.cs @@ -183,26 +183,18 @@ private void ClientHeavyAttack(EntityUid user, EntityCoordinates coordinates, En return; } - // Resolve attacker and use its transform for ray origin and ignore. - var attacker = user; - var getAttackerEv = new GetMeleeAttackerEntityEvent(); - RaiseLocalEvent(user, ref getAttackerEv); - if (getAttackerEv.Handled && getAttackerEv.Attacker != null) - attacker = getAttackerEv.Attacker.Value; - var targetMap = TransformSystem.ToMapCoordinates(coordinates); - var attackerXform = _xformQuery.TryGetComponent(attacker, out var aXform) ? aXform : userXform; - if (targetMap.MapId != attackerXform.MapID) + if (targetMap.MapId != userXform.MapID) return; - var attackerPos = TransformSystem.GetWorldPosition(attackerXform); - var direction = targetMap.Position - attackerPos; + var userPos = TransformSystem.GetWorldPosition(userXform); + var direction = targetMap.Position - userPos; var distance = MathF.Min(component.Range, direction.Length()); // This should really be improved. GetEntitiesInArc uses pos instead of bounding boxes. // Server will validate it with InRangeUnobstructed. - var entities = GetNetEntityList(ArcRayCast(attackerPos, direction.ToWorldAngle(), component.Angle, distance, attackerXform.MapID, attacker).ToList()); + var entities = GetNetEntityList(ArcRayCast(userPos, direction.ToWorldAngle(), component.Angle, distance, userXform.MapID, user).ToList()); RaisePredictiveEvent(new HeavyAttackEvent(GetNetEntity(meleeUid), entities.GetRange(0, Math.Min(MaxTargets, entities.Count)), GetNetCoordinates(coordinates))); } diff --git a/Content.Shared/Weapons/Melee/Events/GetMeleeAttackerEntityEvent.cs b/Content.Shared/Weapons/Melee/Events/GetMeleeAttackerEntityEvent.cs deleted file mode 100644 index 9559a14421d..00000000000 --- a/Content.Shared/Weapons/Melee/Events/GetMeleeAttackerEntityEvent.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Robust.Shared.Serialization; - -namespace Content.Shared.Weapons.Melee.Events; - -/// -/// Raised to get the effective melee attacker entity (for range/origin/animation), -/// which may differ from the controlling user. -/// -[ByRefEvent] -public struct GetMeleeAttackerEntityEvent -{ - public EntityUid? Attacker; - public bool Handled; -} diff --git a/Content.Shared/Weapons/Melee/Events/PrepareMeleeLungeEvent.cs b/Content.Shared/Weapons/Melee/Events/PrepareMeleeLungeEvent.cs deleted file mode 100644 index e70b1223d16..00000000000 --- a/Content.Shared/Weapons/Melee/Events/PrepareMeleeLungeEvent.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Numerics; -using Robust.Shared.GameObjects; -using Robust.Shared.Maths; - -namespace Content.Shared.Weapons.Melee.Events; - -/// -/// Raised on the attacker before spawning melee lunge visuals on the client. -/// Systems may adjust the visual behavior by setting the flags below. -/// -[ByRefEvent] -public record struct PrepareMeleeLungeEvent( - EntityUid User, - EntityUid Weapon, - Angle Angle, - Vector2 LocalPos, - string? Animation) -{ - /// - /// If true, spawns the visual at world MapCoordinates (based on the user's current world position) - /// instead of at the user's local coordinates. Use this to avoid inheriting user rotation. - /// - public bool SpawnAtMap; - - /// - /// If true, disables tracking the visual to the user (i.e., removes the TrackUser behavior). - /// - public bool DisableTracking; -} diff --git a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs index 14d8d9162bd..6f4b078fe21 100644 --- a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs +++ b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs @@ -408,13 +408,6 @@ private bool AttemptAttack(EntityUid user, EntityUid weaponUid, MeleeWeaponCompo break; } - // Resolve effective melee attacker. - var attacker = user; - var getAttackerEv = new GetMeleeAttackerEntityEvent(); - RaiseLocalEvent(user, ref getAttackerEv); - if (getAttackerEv.Handled && getAttackerEv.Attacker != null) - attacker = getAttackerEv.Attacker.Value; - // Windup time checked elsewhere. var fireRate = TimeSpan.FromSeconds(1f / GetAttackRate(weaponUid, user, weapon)); var swings = 0; @@ -459,17 +452,17 @@ private bool AttemptAttack(EntityUid user, EntityUid weaponUid, MeleeWeaponCompo switch (attack) { case LightAttackEvent light: - DoLightAttack(attacker, light, weaponUid, weapon, session); + DoLightAttack(user, light, weaponUid, weapon, session); animation = weapon.Animation; break; case DisarmAttackEvent disarm: - if (!DoDisarm(attacker, disarm, weaponUid, weapon, session)) + if (!DoDisarm(user, disarm, weaponUid, weapon, session)) return false; animation = weapon.Animation; break; case HeavyAttackEvent heavy: - if (!DoHeavyAttack(attacker, heavy, weaponUid, weapon, session)) + if (!DoHeavyAttack(user, heavy, weaponUid, weapon, session)) return false; animation = weapon.WideAnimation; @@ -478,7 +471,7 @@ private bool AttemptAttack(EntityUid user, EntityUid weaponUid, MeleeWeaponCompo throw new NotImplementedException(); } - DoLungeAnimation(attacker, weaponUid, weapon.Angle, TransformSystem.ToMapCoordinates(GetCoordinates(attack.Coordinates)), weapon.Range, animation); + DoLungeAnimation(user, weaponUid, weapon.Angle, TransformSystem.ToMapCoordinates(GetCoordinates(attack.Coordinates)), weapon.Range, animation); } var attackEv = new MeleeAttackEvent(weaponUid); @@ -600,7 +593,6 @@ private bool DoHeavyAttack(EntityUid user, HeavyAttackEvent ev, EntityUid meleeU if (targetMap.MapId != userXform.MapID) return false; - // Use the resolved attacker for positional calculations if available var userPos = TransformSystem.GetWorldPosition(userXform); var direction = targetMap.Position - userPos; var distance = Math.Min(component.Range, direction.Length()); @@ -744,9 +736,9 @@ private bool DoHeavyAttack(EntityUid user, HeavyAttackEvent ev, EntityUid meleeU _meleeSound.PlayHitSound(target, user, GetHighestDamageSound(appliedDamage, _protoManager), hitEvent.HitSoundOverride, component); } - if (appliedDamage.GetTotal() > FixedPoint2.Zero && TryComp(targets[0], out TransformComponent? targetXform)) + if (appliedDamage.GetTotal() > FixedPoint2.Zero) { - DoDamageEffect(targets, user, targetXform); + DoDamageEffect(targets, user, Transform(targets[0])); } return true; From 03f19635896f102cb8481ccbb0ef0122b1a205e0 Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Fri, 13 Mar 2026 14:47:09 -0400 Subject: [PATCH 508/603] Update RT to 273.0.0 (#43130) --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index f509405022c..d47614c8aec 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit f509405022cf75c3a906b2e1bd0a3e8e7eafe3bc +Subproject commit d47614c8aec1ee755762ee436a4d4e73b397e42d From d90284304e98334bdafaefa81a9aaee23f328e64 Mon Sep 17 00:00:00 2001 From: Centronias Date: Fri, 13 Mar 2026 12:56:38 -0700 Subject: [PATCH 509/603] Wrapped parcels can go into mail carts (#43226) wrapped parcels can go into mail carts yeah, it technically allows wrapped humanoids to get in there too, but how're you gonna get something you can't pick up into inventory storage? Also YEAH technically this allows arbitrage of carrying a ton of stuff in the mail cart, but that's no so different from just carrying a ton of stuff around in a trash cart and this at least has the cost of a bit of parcel wrap. I will tolerate no dissent --- .../Prototypes/Entities/Structures/Specific/Cargo/mailcart.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/Entities/Structures/Specific/Cargo/mailcart.yml b/Resources/Prototypes/Entities/Structures/Specific/Cargo/mailcart.yml index 4042b115f57..dcbfc756f13 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Cargo/mailcart.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Cargo/mailcart.yml @@ -19,6 +19,7 @@ whitelist: components: - Delivery + - WrappedParcel tags: - Paper - Document From 30c28b583365e285436382f3eaf2cee7b1769b37 Mon Sep 17 00:00:00 2001 From: Centronias Date: Fri, 13 Mar 2026 12:59:41 -0700 Subject: [PATCH 510/603] Make test runnable on windows in debug config again (#43227) tfw ur fs isn't posix compliant --- Content.IntegrationTests/Utility/GameDataScrounger.Files.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.IntegrationTests/Utility/GameDataScrounger.Files.cs b/Content.IntegrationTests/Utility/GameDataScrounger.Files.cs index 4236494b4a9..14fae1e978e 100644 --- a/Content.IntegrationTests/Utility/GameDataScrounger.Files.cs +++ b/Content.IntegrationTests/Utility/GameDataScrounger.Files.cs @@ -39,7 +39,7 @@ public static ResPath[] FilesInDirectoryInVfs(string location, string pattern, b return Directory.EnumerateFiles(path, pattern ?? "*", recursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly) - .Select(x => new ResPath(x.Remove(0, resBasePath.Length))) + .Select(x => ResPath.FromRelativeSystemPath(x.Remove(0, resBasePath.Length))) .ToArray(); } From 03d5c4c685aa0a8528a61b50ed67be2693f1ab5c Mon Sep 17 00:00:00 2001 From: Moony Date: Fri, 13 Mar 2026 21:08:55 +0100 Subject: [PATCH 511/603] Removes a test that handles engine behavior in content. (#43228) --- .../Tests/LogErrorTest.cs | 34 ------------------- 1 file changed, 34 deletions(-) delete mode 100644 Content.IntegrationTests/Tests/LogErrorTest.cs diff --git a/Content.IntegrationTests/Tests/LogErrorTest.cs b/Content.IntegrationTests/Tests/LogErrorTest.cs deleted file mode 100644 index b8d8dba7cec..00000000000 --- a/Content.IntegrationTests/Tests/LogErrorTest.cs +++ /dev/null @@ -1,34 +0,0 @@ -using Robust.Shared.Configuration; -using Robust.Shared.Log; -using Robust.UnitTesting; - -namespace Content.IntegrationTests.Tests; - -public sealed class LogErrorTest -{ - /// - /// This test ensures that error logs cause tests to fail. - /// - [Test] - public async Task TestLogErrorCausesTestFailure() - { - await using var pair = await PoolManager.GetServerClient(new PoolSettings { Connected = true }); - var server = pair.Server; - var client = pair.Client; - - var cfg = server.ResolveDependency(); - var logmill = server.ResolveDependency().RootSawmill; - - // Default cvar is properly configured - Assert.That(cfg.GetCVar(RTCVars.FailureLogLevel), Is.EqualTo(LogLevel.Error)); - - // Warnings don't cause tests to fail. - await server.WaitPost(() => logmill.Warning("test")); - - // But errors do - await server.WaitPost(() => Assert.Throws(() => logmill.Error("test"))); - await client.WaitPost(() => Assert.Throws(() => logmill.Error("test"))); - - await pair.CleanReturnAsync(); - } -} From d6f1e97de5aa223e3022e68948ba84330b41e619 Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 13 Mar 2026 20:23:42 +0000 Subject: [PATCH 512/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index f0d790aeae0..5fc5aa48e63 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: SlamBamActionman - changes: - - message: EXPERIMENTAL Nocturine now slows the target down, with a longer duration - and shorter delay before activating. - type: Tweak - id: 9060 - time: '2025-10-09T13:32:34.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40797 - author: Princess-Cheeseballs changes: - message: Dying while asleep shouldn't permanently blind you anymore. @@ -4008,3 +4000,10 @@ id: 9570 time: '2026-03-11T23:42:35.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43047 +- author: Centronias + changes: + - message: Wrapped parcels can now fit in mail carts. + type: Add + id: 9571 + time: '2026-03-13T20:22:29.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43226 From a915930991cfe47478e27f606b049fef9c1b20da Mon Sep 17 00:00:00 2001 From: Velken <8467292+Velken@users.noreply.github.com> Date: Fri, 13 Mar 2026 20:34:22 -0300 Subject: [PATCH 513/603] [Fix] Silicon Ion Law Scramble Text (#43229) scramble noises --- Content.Client/RichText/UserFormattableTags.cs | 9 +++++++++ Content.Client/Silicons/Laws/Ui/LawDisplay.xaml.cs | 6 +++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Content.Client/RichText/UserFormattableTags.cs b/Content.Client/RichText/UserFormattableTags.cs index 09be4fa2e78..302394c3846 100644 --- a/Content.Client/RichText/UserFormattableTags.cs +++ b/Content.Client/RichText/UserFormattableTags.cs @@ -22,4 +22,13 @@ public static class UserFormattableTags typeof(ItalicTag), typeof(MonoTag), ]; + + /// + /// Tags allowed in Silicon UIs. Extends from BaseAllowedTags. + /// + public static readonly Type[] SiliconAllowedTags = + [ + ..BaseAllowedTags, + typeof(ScrambleTag) + ]; } diff --git a/Content.Client/Silicons/Laws/Ui/LawDisplay.xaml.cs b/Content.Client/Silicons/Laws/Ui/LawDisplay.xaml.cs index 55fb99a526d..83f463a3d44 100644 --- a/Content.Client/Silicons/Laws/Ui/LawDisplay.xaml.cs +++ b/Content.Client/Silicons/Laws/Ui/LawDisplay.xaml.cs @@ -1,5 +1,5 @@ using Content.Client.Chat.Managers; -using Content.Client.Message; +using Content.Client.RichText; using Content.Shared.Chat; using Content.Shared.Radio; using Content.Shared.Silicons.Laws; @@ -37,8 +37,8 @@ public LawDisplay(EntityUid uid, SiliconLaw law, HashSet(uid, out var speech) || speech.SpeechSounds is null) From dcbe5e08c844b632f7da807e106b5c452de80a9d Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 13 Mar 2026 23:49:52 +0000 Subject: [PATCH 514/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 5fc5aa48e63..2c0b68fbbc0 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Princess-Cheeseballs - changes: - - message: Dying while asleep shouldn't permanently blind you anymore. - type: Fix - id: 9061 - time: '2025-10-09T13:46:20.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40366 - author: kontakt changes: - message: Bulldog magazines are now only accessible through emagged fabricators. @@ -4007,3 +4000,10 @@ id: 9571 time: '2026-03-13T20:22:29.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43226 +- author: Velken + changes: + - message: Corrupted silicon laws now use scrambled text in the UI again. + type: Fix + id: 9572 + time: '2026-03-13T23:48:43.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43229 From a1d7406bf2d64f4d0938b2b668e9c8dcffff159a Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Sat, 14 Mar 2026 01:53:49 -0700 Subject: [PATCH 515/603] Move a metric fuckton of AtmosphereSystem to Shared. (#42989) * AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA * fix the tests I broke * Remove methods that the client shouldn't be calling. Hamburger. * light cleanup for now * review * whoop * docs updates and misc changes --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> --- Content.Benchmarks/DeltaPressureBenchmark.cs | 3 +- .../Components/MapAtmosphereComponent.cs | 9 - .../EntitySystems/AtmosphereSystem.Gases.cs | 10 + .../Tests/Atmos/GridJoinTest.cs | 3 +- .../Tests/Respirator/LungTest.cs | 2 +- .../Atmos/Commands/AddAtmosCommand.cs | 2 +- .../Atmos/Commands/PauseAtmosCommand.cs | 2 +- .../Atmos/Commands/SetMapAtmosCommand.cs | 2 +- .../Components/GridAtmosphereComponent.cs | 135 -------------- .../Atmos/EntitySystems/AirFilterSystem.cs | 3 +- .../EntitySystems/AtmosDebugOverlaySystem.cs | 2 +- .../Atmos/EntitySystems/AtmosExposedSystem.cs | 61 ------ .../EntitySystems/AtmosphereSystem.API.cs | 176 +++++++++--------- .../AtmosphereSystem.BenchmarkHelpers.cs | 1 + .../AtmosphereSystem.DeltaPressure.cs | 18 +- .../EntitySystems/AtmosphereSystem.Gases.cs | 44 +---- .../AtmosphereSystem.HighPressureDelta.cs | 5 +- .../AtmosphereSystem.Processing.cs | 18 +- .../AtmosphereSystem.Superconductivity.cs | 2 +- .../EntitySystems/AtmosphereSystem.Utils.cs | 20 +- .../Atmos/EntitySystems/AtmosphereSystem.cs | 9 +- .../EntitySystems/AutomaticAtmosSystem.cs | 2 +- .../Atmos/EntitySystems/GasMinerSystem.cs | 2 +- .../EntitySystems/HeatExchangerSystem.cs | 9 +- .../Atmos/Monitor/Systems/AirAlarmSystem.cs | 2 +- .../Monitor/Systems/AtmosMonitoringSystem.cs | 4 +- .../EntitySystems/GasPassiveGateSystem.cs | 3 +- .../EntitySystems/GasPressurePumpSystem.cs | 3 +- .../GasPressureRegulatorSystem.cs | 2 +- .../Binary/EntitySystems/GasRecyclerSystem.cs | 3 +- .../EntitySystems/GasVolumePumpSystem.cs | 2 +- .../Piping/EntitySystems/AtmosDeviceSystem.cs | 3 +- .../Trinary/EntitySystems/GasFilterSystem.cs | 3 +- .../Trinary/EntitySystems/GasMixerSystem.cs | 3 +- .../PressureControlledValveSystem.cs | 3 +- .../Unary/EntitySystems/GasCanisterSystem.cs | 2 +- .../Unary/EntitySystems/GasCondenserSystem.cs | 3 +- .../EntitySystems/GasOutletInjectorSystem.cs | 3 +- .../EntitySystems/GasPassiveVentSystem.cs | 3 +- .../EntitySystems/GasThermoMachineSystem.cs | 4 +- .../Unary/EntitySystems/GasVentPumpSystem.cs | 2 +- .../EntitySystems/GasVentScrubberSystem.cs | 2 +- .../Atmos/Portable/PortableScrubberSystem.cs | 4 +- .../Atmos/Portable/SpaceHeaterSystem.cs | 3 +- Content.Server/Atmos/Rotting/RottingSystem.cs | 4 +- .../Disposal/Unit/BeingDisposedSystem.cs | 1 + .../Doors/Systems/FirelockSystem.cs | 1 + Content.Server/Mech/Systems/MechSystem.cs | 1 + Content.Server/Medical/CryoPodSystem.cs | 3 +- Content.Server/Medical/InsideCryoPodSystem.cs | 4 +- .../EntitySystems/NodeGroupSystem.cs | 1 - .../NodeContainer/NodeGroups/PipeNet.cs | 129 ++++++------- .../NodeContainer/Nodes/PipeNode.cs | 1 + .../Power/Generation/Teg/TegSystem.cs | 8 +- .../Power/Generator/GasPowerReceiverSystem.cs | 4 +- .../Salvage/SpawnSalvageMissionJob.cs | 11 +- .../SensorMonitoringConsoleSystem.cs | 3 +- .../EntitySystems/EntityStorageSystem.cs | 1 + Content.Shared/Atmos/AtmosExposedEvents.cs | 57 ++++++ .../Atmos}/Components/AtmosDeviceComponent.cs | 5 +- .../Components/GridAtmosphereComponent.cs | 155 +++++++++++++++ .../Components/MapAtmosphereComponent.cs | 14 +- .../SharedAtmosphereSystem.API.cs | 89 +++++++++ .../SharedAtmosphereSystem.Gases.cs | 64 ++++++- .../EntitySystems/SharedAtmosphereSystem.cs | 110 +++++++++-- .../Atmos/ExcitedGroup.cs | 2 +- .../Atmos/Hotspot.cs | 2 +- .../Atmos/MonstermosInfo.cs | 4 +- .../TileAtmosCollectionSerializer.cs | 3 +- .../Atmos/TileAtmosphere.cs | 21 +-- .../NodeContainer/NodeGroups/IPipeNet.cs | 11 ++ 71 files changed, 713 insertions(+), 593 deletions(-) delete mode 100644 Content.Client/Atmos/Components/MapAtmosphereComponent.cs delete mode 100644 Content.Server/Atmos/Components/GridAtmosphereComponent.cs delete mode 100644 Content.Server/Atmos/EntitySystems/AtmosExposedSystem.cs create mode 100644 Content.Shared/Atmos/AtmosExposedEvents.cs rename {Content.Server/Atmos/Piping => Content.Shared/Atmos}/Components/AtmosDeviceComponent.cs (95%) create mode 100644 Content.Shared/Atmos/Components/GridAtmosphereComponent.cs rename {Content.Server => Content.Shared}/Atmos/Components/MapAtmosphereComponent.cs (51%) create mode 100644 Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.API.cs rename {Content.Server => Content.Shared}/Atmos/ExcitedGroup.cs (98%) rename {Content.Server => Content.Shared}/Atmos/Hotspot.cs (98%) rename {Content.Server => Content.Shared}/Atmos/MonstermosInfo.cs (98%) rename {Content.Server => Content.Shared}/Atmos/Serialization/TileAtmosCollectionSerializer.cs (99%) rename {Content.Server => Content.Shared}/Atmos/TileAtmosphere.cs (93%) create mode 100644 Content.Shared/NodeContainer/NodeGroups/IPipeNet.cs diff --git a/Content.Benchmarks/DeltaPressureBenchmark.cs b/Content.Benchmarks/DeltaPressureBenchmark.cs index b31b3ed1a24..8d4929c47ff 100644 --- a/Content.Benchmarks/DeltaPressureBenchmark.cs +++ b/Content.Benchmarks/DeltaPressureBenchmark.cs @@ -1,11 +1,10 @@ using System.Threading.Tasks; using BenchmarkDotNet.Attributes; -using BenchmarkDotNet.Diagnosers; using Content.IntegrationTests; using Content.IntegrationTests.Pair; -using Content.Server.Atmos.Components; using Content.Server.Atmos.EntitySystems; using Content.Shared.Atmos.Components; +using Content.Shared.Atmos.EntitySystems; using Content.Shared.CCVar; using Robust.Shared; using Robust.Shared.Analyzers; diff --git a/Content.Client/Atmos/Components/MapAtmosphereComponent.cs b/Content.Client/Atmos/Components/MapAtmosphereComponent.cs deleted file mode 100644 index abad2491347..00000000000 --- a/Content.Client/Atmos/Components/MapAtmosphereComponent.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Content.Shared.Atmos.Components; - -namespace Content.Client.Atmos.Components; - -[RegisterComponent] -public sealed partial class MapAtmosphereComponent : SharedMapAtmosphereComponent -{ - -} diff --git a/Content.Client/Atmos/EntitySystems/AtmosphereSystem.Gases.cs b/Content.Client/Atmos/EntitySystems/AtmosphereSystem.Gases.cs index cdae052b1b1..d950108922c 100644 --- a/Content.Client/Atmos/EntitySystems/AtmosphereSystem.Gases.cs +++ b/Content.Client/Atmos/EntitySystems/AtmosphereSystem.Gases.cs @@ -1,5 +1,6 @@ using System.Runtime.CompilerServices; using Content.Shared.Atmos; +using Content.Shared.Atmos.Reactions; namespace Content.Client.Atmos.EntitySystems; @@ -13,6 +14,15 @@ code that would escape sandbox. As such these methods are overridden here with a implementation. */ + /// + /// No-op on client as reactions aren't entirely in shared. + /// Don't call it. Smile. + public override ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder) + { + // Reactions don't work on client so don't even try. + throw new NotImplementedException(); + } + public override bool IsMixtureFuel(GasMixture mixture, float epsilon = Atmospherics.Epsilon) { var tmp = new float[Atmospherics.AdjustedNumberOfGases]; diff --git a/Content.IntegrationTests/Tests/Atmos/GridJoinTest.cs b/Content.IntegrationTests/Tests/Atmos/GridJoinTest.cs index 3a1ec7fd40e..45ccddfad98 100644 --- a/Content.IntegrationTests/Tests/Atmos/GridJoinTest.cs +++ b/Content.IntegrationTests/Tests/Atmos/GridJoinTest.cs @@ -1,7 +1,6 @@ -using Content.Server.Atmos.Components; using Content.Server.Atmos.EntitySystems; -using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.EntitySystems; +using Content.Shared.Atmos.Components; using Robust.Shared.GameObjects; namespace Content.IntegrationTests.Tests.Atmos; diff --git a/Content.IntegrationTests/Tests/Respirator/LungTest.cs b/Content.IntegrationTests/Tests/Respirator/LungTest.cs index a4ad733348e..ae6b50ff0f4 100644 --- a/Content.IntegrationTests/Tests/Respirator/LungTest.cs +++ b/Content.IntegrationTests/Tests/Respirator/LungTest.cs @@ -1,4 +1,3 @@ -using Content.Server.Atmos.Components; using Content.Server.Atmos.EntitySystems; using Content.Server.Body.Components; using Content.Shared.Body.Systems; @@ -7,6 +6,7 @@ using Robust.Shared.GameObjects; using Robust.Shared.Map; using System.Numerics; +using Content.Shared.Atmos.Components; using Robust.Shared.EntitySerialization.Systems; using Robust.Shared.Utility; diff --git a/Content.Server/Atmos/Commands/AddAtmosCommand.cs b/Content.Server/Atmos/Commands/AddAtmosCommand.cs index d943b5bf066..70911f4d746 100644 --- a/Content.Server/Atmos/Commands/AddAtmosCommand.cs +++ b/Content.Server/Atmos/Commands/AddAtmosCommand.cs @@ -1,7 +1,7 @@ using Content.Server.Administration; -using Content.Server.Atmos.Components; using Content.Server.Atmos.EntitySystems; using Content.Shared.Administration; +using Content.Shared.Atmos.Components; using Robust.Shared.Console; using Robust.Shared.Map.Components; diff --git a/Content.Server/Atmos/Commands/PauseAtmosCommand.cs b/Content.Server/Atmos/Commands/PauseAtmosCommand.cs index 984f2a0869e..2893743d8b1 100644 --- a/Content.Server/Atmos/Commands/PauseAtmosCommand.cs +++ b/Content.Server/Atmos/Commands/PauseAtmosCommand.cs @@ -1,7 +1,7 @@ using Content.Server.Administration; -using Content.Server.Atmos.Components; using Content.Server.Atmos.EntitySystems; using Content.Shared.Administration; +using Content.Shared.Atmos.Components; using Robust.Shared.Console; namespace Content.Server.Atmos.Commands; diff --git a/Content.Server/Atmos/Commands/SetMapAtmosCommand.cs b/Content.Server/Atmos/Commands/SetMapAtmosCommand.cs index 3314bf08afa..3c31c79e75f 100644 --- a/Content.Server/Atmos/Commands/SetMapAtmosCommand.cs +++ b/Content.Server/Atmos/Commands/SetMapAtmosCommand.cs @@ -1,8 +1,8 @@ using Content.Server.Administration; -using Content.Server.Atmos.Components; using Content.Server.Atmos.EntitySystems; using Content.Shared.Administration; using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using Robust.Shared.Console; using Robust.Shared.Map; diff --git a/Content.Server/Atmos/Components/GridAtmosphereComponent.cs b/Content.Server/Atmos/Components/GridAtmosphereComponent.cs deleted file mode 100644 index 2a0d87515cb..00000000000 --- a/Content.Server/Atmos/Components/GridAtmosphereComponent.cs +++ /dev/null @@ -1,135 +0,0 @@ -using System.Collections.Concurrent; -using Content.Server.Atmos.EntitySystems; -using Content.Server.Atmos.Piping.Components; -using Content.Server.Atmos.Serialization; -using Content.Server.NodeContainer.NodeGroups; -using Content.Shared.Atmos.Components; - -namespace Content.Server.Atmos.Components -{ - /// - /// Internal Atmos class. Use to interact with atmos instead. - /// - [RegisterComponent, Serializable, - Access(typeof(AtmosphereSystem), typeof(GasTileOverlaySystem), typeof(AtmosDebugOverlaySystem))] - public sealed partial class GridAtmosphereComponent : Component - { - [ViewVariables(VVAccess.ReadWrite)] - public bool Simulated { get; set; } = true; - - [ViewVariables] - public bool ProcessingPaused { get; set; } = false; - - [ViewVariables] - public float Timer { get; set; } = 0f; - - [ViewVariables] - public int UpdateCounter { get; set; } = 1; // DO NOT SET TO ZERO BY DEFAULT! It will break roundstart atmos... - - [ViewVariables] - [IncludeDataField(customTypeSerializer:typeof(TileAtmosCollectionSerializer))] - public Dictionary Tiles = new(1000); - - [ViewVariables] - public HashSet MapTiles = new(1000); - - [ViewVariables] - public readonly HashSet ActiveTiles = new(1000); - - [ViewVariables] - public int ActiveTilesCount => ActiveTiles.Count; - - [ViewVariables] - public readonly HashSet ExcitedGroups = new(1000); - - [ViewVariables] - public int ExcitedGroupCount => ExcitedGroups.Count; - - [ViewVariables] - public readonly HashSet HotspotTiles = new(1000); - - [ViewVariables] - public int HotspotTilesCount => HotspotTiles.Count; - - [ViewVariables] - public readonly HashSet SuperconductivityTiles = new(1000); - - [ViewVariables] - public int SuperconductivityTilesCount => SuperconductivityTiles.Count; - - [ViewVariables] - public HashSet HighPressureDelta = new(1000); - - [ViewVariables] - public int HighPressureDeltaCount => HighPressureDelta.Count; - - /// - /// A list of entities that have a and are to - /// be processed by the , if enabled. - /// - /// To prevent massive bookkeeping overhead, this list is processed in-place, - /// with add/remove/find operations helped via a dict. - /// - /// If you want to add/remove/find entities in this list, - /// use the API methods in the Atmospherics API. - [ViewVariables] - public readonly List> DeltaPressureEntities = - new(AtmosphereSystem.DeltaPressurePreAllocateLength); - - /// - /// An index lookup for the list. - /// Used for add/remove/find operations to speed up processing. - /// - public readonly Dictionary DeltaPressureEntityLookup = - new(AtmosphereSystem.DeltaPressurePreAllocateLength); - - /// - /// Integer that indicates the current position in the - /// list that is being processed. - /// - [ViewVariables(VVAccess.ReadOnly)] - public int DeltaPressureCursor; - - /// - /// Queue of entities that need to have damage applied to them. - /// - [ViewVariables] - public readonly ConcurrentQueue DeltaPressureDamageResults = new(); - - [ViewVariables] - public readonly HashSet PipeNets = new(); - - [ViewVariables] - public readonly HashSet> AtmosDevices = new(); - - [ViewVariables] - public readonly Queue CurrentRunTiles = new(); - - [ViewVariables] - public readonly Queue CurrentRunExcitedGroups = new(); - - [ViewVariables] - public readonly Queue CurrentRunPipeNet = new(); - - [ViewVariables] - public readonly Queue> CurrentRunAtmosDevices = new(); - - [ViewVariables] - public readonly HashSet InvalidatedCoords = new(1000); - - [ViewVariables] - public readonly Queue CurrentRunInvalidatedTiles = new(); - - [ViewVariables] - public readonly List PossiblyDisconnectedTiles = new(100); - - [ViewVariables] - public int InvalidatedCoordsCount => InvalidatedCoords.Count; - - [ViewVariables] - public long EqualizationQueueCycleControl { get; set; } - - [ViewVariables] - public AtmosphereProcessingState State { get; set; } = AtmosphereProcessingState.Revalidate; - } -} diff --git a/Content.Server/Atmos/EntitySystems/AirFilterSystem.cs b/Content.Server/Atmos/EntitySystems/AirFilterSystem.cs index c3344c830c0..ad51f57f887 100644 --- a/Content.Server/Atmos/EntitySystems/AirFilterSystem.cs +++ b/Content.Server/Atmos/EntitySystems/AirFilterSystem.cs @@ -1,8 +1,7 @@ using Content.Server.Atmos.Components; -using Content.Server.Atmos.Piping.Components; using Content.Shared.Atmos; -using Robust.Shared.Map; using System.Diagnostics.CodeAnalysis; +using Content.Shared.Atmos.Components; namespace Content.Server.Atmos.EntitySystems; diff --git a/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs b/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs index 505c4a3b385..243905f1bcd 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosDebugOverlaySystem.cs @@ -1,6 +1,6 @@ using System.Numerics; -using Content.Server.Atmos.Components; using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using Content.Shared.Atmos.EntitySystems; using Content.Shared.CCVar; using JetBrains.Annotations; diff --git a/Content.Server/Atmos/EntitySystems/AtmosExposedSystem.cs b/Content.Server/Atmos/EntitySystems/AtmosExposedSystem.cs deleted file mode 100644 index 39469e993f0..00000000000 --- a/Content.Server/Atmos/EntitySystems/AtmosExposedSystem.cs +++ /dev/null @@ -1,61 +0,0 @@ -using Content.Shared.Atmos; -using Robust.Shared.Map; - -namespace Content.Server.Atmos.EntitySystems -{ - /* doesn't seem to be a use for this at the moment, so it's disabled - public sealed class AtmosExposedSystem : EntitySystem - {} - */ - - [ByRefEvent] - public readonly struct AtmosExposedUpdateEvent - { - public readonly EntityCoordinates Coordinates; - public readonly GasMixture GasMixture; - public readonly TransformComponent Transform; - - public AtmosExposedUpdateEvent(EntityCoordinates coordinates, GasMixture mixture, TransformComponent transform) - { - Coordinates = coordinates; - GasMixture = mixture; - Transform = transform; - } - } - - /// - /// Event that tries to query the mixture a certain entity is exposed to. - /// This is mainly intended for use with entities inside of containers. - /// This event is not raised for entities that are directly parented to the grid. - /// - [ByRefEvent] - public struct AtmosExposedGetAirEvent - { - /// - /// The entity we want to query this for. - /// - public readonly Entity Entity; - - /// - /// The mixture that the entity is exposed to. Output parameter. - /// - public GasMixture? Gas = null; - - /// - /// Whether to excite the mixture, if possible. - /// - public readonly bool Excite = false; - - /// - /// Whether this event has been handled or not. - /// Check this before changing anything. - /// - public bool Handled = false; - - public AtmosExposedGetAirEvent(Entity entity, bool excite = false) - { - Entity = entity; - Excite = excite; - } - } -} diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.API.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.API.cs index 8c28fe0bcf0..e68bf7b2ec3 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.API.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.API.cs @@ -1,9 +1,8 @@ using System.Diagnostics; -using Content.Server.Atmos.Components; -using Content.Server.Atmos.Piping.Components; using Content.Server.NodeContainer.NodeGroups; using Content.Shared.Atmos; using Content.Shared.Atmos.Components; +using Content.Shared.Atmos.EntitySystems; using Content.Shared.Atmos.Reactions; using JetBrains.Annotations; using Robust.Shared.Map.Components; @@ -20,61 +19,6 @@ public partial class AtmosphereSystem consider adding a method here instead of making your own way to work around it. */ - /// - /// Gets the that an entity is contained within. - /// - /// The entity to get the mixture for. - /// If true, will ignore mixtures that the entity is contained in - /// (ex. lockers and cryopods) and just get the tile mixture. - /// If true, will mark the tile as active for atmosphere processing. - /// A if one could be found, null otherwise. - [PublicAPI] - public GasMixture? GetContainingMixture(Entity ent, bool ignoreExposed = false, bool excite = false) - { - if (!Resolve(ent, ref ent.Comp)) - return null; - - return GetContainingMixture(ent, ent.Comp.GridUid, ent.Comp.MapUid, ignoreExposed, excite); - } - - /// - /// Gets the that an entity is contained within. - /// - /// The entity to get the mixture for. - /// The grid that the entity may be on. - /// The map that the entity may be on. - /// If true, will ignore mixtures that the entity is contained in - /// (ex. lockers and cryopods) and just get the tile mixture. - /// If true, will mark the tile as active for atmosphere processing. - /// A if one could be found, null otherwise. - [PublicAPI] - public GasMixture? GetContainingMixture( - Entity ent, - Entity? grid, - Entity? map, - bool ignoreExposed = false, - bool excite = false) - { - if (!Resolve(ent, ref ent.Comp)) - return null; - - if (!ignoreExposed && !ent.Comp.Anchored) - { - // Used for things like disposals/cryo to change which air people are exposed to. - var ev = new AtmosExposedGetAirEvent((ent, ent.Comp), excite); - RaiseLocalEvent(ent, ref ev); - if (ev.Handled) - return ev.Gas; - - // TODO ATMOS: recursively iterate up through parents - // This really needs recursive InContainer metadata flag for performance - // And ideally some fast way to get the innermost airtight container. - } - - var position = _transformSystem.GetGridTilePositionOrDefault((ent, ent.Comp)); - return GetTileMixture(grid, map, position, excite); - } - /// /// Checks if a grid has an atmosphere. /// @@ -153,6 +97,69 @@ public void InvalidateTile(Entity entity, Vector2i til entity.Comp.InvalidatedCoords.Add(tile); } + /// + /// Gets the gas mixture for a specific tile that an entity is on. + /// + /// The entity to get the tile mixture for. + /// Whether to mark the tile as active for atmosphere processing. + /// A if one could be found, null otherwise. + /// This does not return the that the entity + /// may be contained in, ex. if the entity is currently in a locker/crate with its own + /// . + [PublicAPI] + public GasMixture? GetTileMixture(Entity entity, bool excite = false) + { + if (!Resolve(entity.Owner, ref entity.Comp)) + return null; + + var indices = XformSystem.GetGridTilePositionOrDefault(entity); + return GetTileMixture(entity.Comp.GridUid, entity.Comp.MapUid, indices, excite); + } + + /// + /// Gets the that an entity is contained within. + /// + /// The entity to get the mixture for. + /// If true, will ignore mixtures that the entity is contained in + /// (ex. lockers and cryopods) and just get the tile mixture. + /// If true, will mark the tile as active for atmosphere processing. + /// A if one could be found, null otherwise. + [PublicAPI] + public GasMixture? GetContainingMixture(Entity ent, bool ignoreExposed = false, bool excite = false) + { + if (!Resolve(ent, ref ent.Comp)) + return null; + + return GetContainingMixture(ent, ent.Comp.GridUid, ent.Comp.MapUid, ignoreExposed, excite); + } + + /// + /// Gets the that an entity is contained within. + /// + /// The entity to get the mixture for. + /// The grid that the entity may be on. + /// The map that the entity may be on. + /// If true, will ignore mixtures that the entity is contained in + /// (ex. lockers and cryopods) and just get the tile mixture. + /// If true, will mark the tile as active for atmosphere processing. + /// A if one could be found, null otherwise. + [PublicAPI] + public GasMixture? GetContainingMixture(Entity ent, + Entity? grid, + Entity? map, + bool ignoreExposed = false, + bool excite = false) + { + if (!Resolve(ent, ref ent.Comp)) + return null; + + if (!ignoreExposed && TryGetExposedMixture(ent, out var mixture)) + return mixture; + + var position = XformSystem.GetGridTilePositionOrDefault((ent, ent.Comp)); + return GetTileMixture(grid, map, position, excite); + } + /// /// Gets the gas mixtures for a list of tiles on a grid or map. /// @@ -226,33 +233,6 @@ public void InvalidateTile(Entity entity, Vector2i til return mixtures; } - /// - /// Gets the gas mixture for a specific tile that an entity is on. - /// - /// The entity to get the tile mixture for. - /// Whether to mark the tile as active for atmosphere processing. - /// A if one could be found, null otherwise. - /// This does not return the that the entity - /// may be contained in, ex. if the entity is currently in a locker/crate with its own - /// . - [PublicAPI] - public GasMixture? GetTileMixture(Entity entity, bool excite = false) - { - if (!Resolve(entity.Owner, ref entity.Comp)) - return null; - - var indices = _transformSystem.GetGridTilePositionOrDefault(entity); - return GetTileMixture(entity.Comp.GridUid, entity.Comp.MapUid, indices, excite); - } - - /// - /// Gets the gas mixture for a specific tile on a grid or map. - /// - /// The grid to get the mixture from. - /// The map to get the mixture from. - /// The tile to get the mixture from. - /// Whether to mark the tile as active for atmosphere processing. - /// >A if one could be found, null otherwise. [PublicAPI] public GasMixture? GetTileMixture( Entity? grid, @@ -281,6 +261,34 @@ public void InvalidateTile(Entity entity, Vector2i til return GasMixture.SpaceGas; } + public override void MergeContainingMixture(Entity entity, GasMixture mixture, bool ignoreExposed = false, bool excite = false) + { + if (GetContainingMixture(entity, ignoreExposed, excite) is not { } containingMixture) + return; + + Merge(containingMixture, mixture); + } + + [PublicAPI] + public override void MergeTileMixture(Entity entity, GasMixture mixture, bool excite = false) + { + if (GetTileMixture(entity, excite) is not { } tileMixture) + return; + + Merge(tileMixture, mixture); + } + + public override void AdjustContainingMixture(Entity entity, Gas gas, float mols, bool ignoreExposed = false, bool excite = false) + { + GetContainingMixture(entity, ignoreExposed, excite)?.AdjustMoles(gas, mols); + } + + [PublicAPI] + public override void AdjustTileMixture(Entity entity, Gas gas, float mols, bool excite = false) + { + GetTileMixture(entity, excite)?.AdjustMoles(gas, mols); + } + /// /// Triggers a tile's to react. /// diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.BenchmarkHelpers.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.BenchmarkHelpers.cs index 62cbbae68a8..4be0dbfc39a 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.BenchmarkHelpers.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.BenchmarkHelpers.cs @@ -1,5 +1,6 @@ using Content.Server.Atmos.Components; using Content.Shared.Atmos.Components; +using Content.Shared.Atmos.EntitySystems; using Robust.Shared.Map.Components; namespace Content.Server.Atmos.EntitySystems; diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.DeltaPressure.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.DeltaPressure.cs index 529f24d610a..9457c5689c5 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.DeltaPressure.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.DeltaPressure.cs @@ -3,6 +3,7 @@ using Content.Server.Atmos.Components; using Content.Shared.Atmos; using Content.Shared.Atmos.Components; +using Content.Shared.Atmos.EntitySystems; using Content.Shared.Damage; using Robust.Shared.Random; using Robust.Shared.Threading; @@ -31,11 +32,6 @@ public sealed partial class AtmosphereSystem /// private const int DeltaPressurePairCount = Atmospherics.Directions / 2; - /// - /// The length to pre-allocate list/dicts of delta pressure entities on a . - /// - public const int DeltaPressurePreAllocateLength = 1000; - /// /// Bulk processes a range of entities on a /// from a starting index to an ending index, @@ -321,18 +317,6 @@ public void ExecuteRange(int start, int end) } } - /// - /// Struct that holds the result of delta pressure damage processing for an entity. - /// This is only created and enqueued when the entity needs to take damage. - /// - /// The entity to deal damage to. - /// The current absolute pressure the entity is experiencing. - /// The current delta pressure the entity is experiencing. - public readonly record struct DeltaPressureDamageResult( - Entity Ent, - float Pressure, - float DeltaPressure); - /// /// Does damage to an entity depending on the pressure experienced by it, based on the /// entity's . diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs index 2acd8e4ecab..639a71ec608 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs @@ -66,22 +66,6 @@ public float PumpSpeedup() return Speedup; } - /// - /// Calculates the thermal energy for a gas mixture. - /// - public float GetThermalEnergy(GasMixture mixture) - { - return mixture.Temperature * GetHeatCapacity(mixture); - } - - /// - /// Calculates the thermal energy for a gas mixture, using a cached heat capacity value. - /// - public float GetThermalEnergy(GasMixture mixture, float cachedHeatCapacity) - { - return mixture.Temperature * cachedHeatCapacity; - } - /// /// Add 'dQ' Joules of energy into 'mixture'. /// @@ -92,28 +76,6 @@ public void AddHeat(GasMixture mixture, float dQ) mixture.Temperature += dT; } - /// - /// Merges the gas mixture into the gas mixture. - /// The gas mixture is not modified by this method. - /// - public void Merge(GasMixture receiver, GasMixture giver) - { - if (receiver.Immutable) return; - - if (MathF.Abs(receiver.Temperature - giver.Temperature) > Atmospherics.MinimumTemperatureDeltaToConsider) - { - var receiverHeatCapacity = GetHeatCapacity(receiver); - var giverHeatCapacity = GetHeatCapacity(giver); - var combinedHeatCapacity = receiverHeatCapacity + giverHeatCapacity; - if (combinedHeatCapacity > Atmospherics.MinimumHeatCapacity) - { - receiver.Temperature = (GetThermalEnergy(giver, giverHeatCapacity) + GetThermalEnergy(receiver, receiverHeatCapacity)) / combinedHeatCapacity; - } - } - - NumericsHelpers.Add(receiver.Moles, giver.Moles); - } - /// /// Divides a source gas mixture into several recipient mixtures, scaled by their relative volumes. Does not /// modify the source gas mixture. Used for pipe network splitting. Note that the total destination volume @@ -506,10 +468,8 @@ public GasCompareResult CompareExchange(GasMixture sample, GasMixture otherSampl return GasCompareResult.NoExchange; } - /// - /// Performs reactions for a given gas mixture on an optional holder. - /// - public ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder) + [PublicAPI] + public override ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder) { var reaction = ReactionResult.NoReaction; var temperature = mixture.Temperature; diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index 9720cd38a80..0c37bcefaf7 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -1,4 +1,3 @@ -using Content.Server.Atmos.Components; using Content.Shared.Atmos; using Content.Shared.Atmos.Components; using Content.Shared.Mobs.Components; @@ -129,7 +128,7 @@ private void HighPressureMovements(Entity gridAtmospher return; // Used by ExperiencePressureDifference to correct push/throw directions from tile-relative to physics world. - var gridWorldRotation = _transformSystem.GetWorldRotation(gridAtmosphere); + var gridWorldRotation = XformSystem.GetWorldRotation(gridAtmosphere); // If we're using monstermos, smooth out the yeet direction to follow the flow if (MonstermosEqualization) @@ -248,7 +247,7 @@ public void ExperiencePressureDifference( // TODO: Technically these directions won't be correct but uhh I'm just here for optimisations buddy not to fix my old bugs. if (throwTarget != EntityCoordinates.Invalid) { - var pos = ((_transformSystem.ToMapCoordinates(throwTarget).Position - _transformSystem.GetWorldPosition(xform)).Normalized() + dirVec).Normalized(); + var pos = ((XformSystem.ToMapCoordinates(throwTarget).Position - XformSystem.GetWorldPosition(xform)).Normalized() + dirVec).Normalized(); _physics.ApplyLinearImpulse(uid, pos * moveForce, body: physics); } else diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs index b98fd2756f3..c6567a4fd55 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs @@ -1,7 +1,8 @@ using Content.Server.Atmos.Components; -using Content.Server.Atmos.Piping.Components; using Content.Shared.Atmos; using Content.Shared.Atmos.Components; +using Content.Shared.Atmos.EntitySystems; +using Content.Shared.Atmos.Piping.Components; using Content.Shared.Maps; using Robust.Shared.Map; using Robust.Shared.Map.Components; @@ -851,19 +852,4 @@ public enum AtmosphereProcessingCompletionState : byte /// Finished, } - - public enum AtmosphereProcessingState : byte - { - Revalidate, - TileEqualize, - ActiveTiles, - ExcitedGroups, - HighPressureDelta, - DeltaPressure, - Hotspots, - Superconductivity, - PipeNet, - AtmosDevices, - NumStates - } } diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Superconductivity.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Superconductivity.cs index 46a554054b4..2b5979917ab 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Superconductivity.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Superconductivity.cs @@ -1,5 +1,5 @@ -using Content.Server.Atmos.Components; using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using Robust.Shared.Map.Components; namespace Content.Server.Atmos.EntitySystems diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Utils.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Utils.cs index 9b53d0d16cb..9c39c4dbb24 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Utils.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Utils.cs @@ -1,7 +1,7 @@ using System.Runtime.CompilerServices; -using Content.Server.Atmos.Components; using Content.Shared.Atmos; using Content.Shared.Atmos.Components; +using Content.Shared.Atmos.EntitySystems; using Content.Shared.Atmos.Piping.Components; using Robust.Shared.Map.Components; @@ -85,24 +85,6 @@ private float GetVolumeForTiles(MapGridComponent mapGrid, int tiles = 1) return Atmospherics.CellVolume * mapGrid.TileSize * tiles; } - /// - /// Data on the airtightness of a . - /// Cached on the and updated during - /// if it was invalidated. - /// - /// The current directions blocked on this tile. - /// This is where air cannot flow to. - /// Whether the tile can have air when blocking directions. - /// Common for entities like thin windows which only block one face but can still have air in the residing tile. - /// If true, Atmospherics will generate air (yes, creating matter from nothing) - /// using the adjacent tiles as a seed if the airtightness is removed and the tile has no air. - /// This allows stuff like airlocks that void air when becoming airtight to keep opening/closing without - /// draining a room by continuously voiding air. - public readonly record struct AirtightData( - AtmosDirection BlockedDirections, - bool NoAirWhenBlocked, - bool FixVacuum); - /// /// Updates the for a /// immediately. diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs index df380912b6c..f02928b8e39 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.cs @@ -1,8 +1,12 @@ +using System.Linq; using Content.Server.Administration.Logs; using Content.Server.Atmos.Components; using Content.Server.Fluids.EntitySystems; using Content.Server.NodeContainer.EntitySystems; +using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using Content.Shared.Atmos.EntitySystems; +using Content.Shared.Damage.Systems; using Content.Shared.Decals; using Content.Shared.Doors.Components; using Content.Shared.Maps; @@ -13,8 +17,6 @@ using Robust.Shared.Map; using Robust.Shared.Physics.Systems; using Robust.Shared.Prototypes; -using System.Linq; -using Content.Shared.Damage.Systems; using Robust.Shared.Threading; namespace Content.Server.Atmos.EntitySystems; @@ -35,7 +37,6 @@ public sealed partial class AtmosphereSystem : SharedAtmosphereSystem [Dependency] private readonly GasTileOverlaySystem _gasTileOverlaySystem = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedMapSystem _mapSystem = default!; - [Dependency] private readonly SharedTransformSystem _transformSystem = default!; [Dependency] private readonly TileSystem _tile = default!; [Dependency] private readonly MapSystem _map = default!; [Dependency] public readonly PuddleSystem Puddle = default!; @@ -125,6 +126,6 @@ public override void Update(float frameTime) private void CacheDecals() { - _burntDecals = _protoMan.EnumeratePrototypes().Where(x => x.Tags.Contains("burnt")).Select(x => x.ID).ToArray(); + _burntDecals = ProtoMan.EnumeratePrototypes().Where(x => x.Tags.Contains("burnt")).Select(x => x.ID).ToArray(); } } diff --git a/Content.Server/Atmos/EntitySystems/AutomaticAtmosSystem.cs b/Content.Server/Atmos/EntitySystems/AutomaticAtmosSystem.cs index f1ffa0dafae..bc5621118d4 100644 --- a/Content.Server/Atmos/EntitySystems/AutomaticAtmosSystem.cs +++ b/Content.Server/Atmos/EntitySystems/AutomaticAtmosSystem.cs @@ -1,5 +1,5 @@ -using Content.Server.Atmos.Components; using Content.Server.Shuttles.Systems; +using Content.Shared.Atmos.Components; using Robust.Shared.Map.Components; using Robust.Shared.Physics.Events; diff --git a/Content.Server/Atmos/EntitySystems/GasMinerSystem.cs b/Content.Server/Atmos/EntitySystems/GasMinerSystem.cs index f7a3b9eed8a..3042fba0083 100644 --- a/Content.Server/Atmos/EntitySystems/GasMinerSystem.cs +++ b/Content.Server/Atmos/EntitySystems/GasMinerSystem.cs @@ -1,8 +1,8 @@ using System.Diagnostics.CodeAnalysis; -using Content.Server.Atmos.Piping.Components; using Content.Shared.Atmos; using Content.Shared.Atmos.Components; using Content.Shared.Atmos.EntitySystems; +using Content.Shared.Atmos.Piping.Components; using JetBrains.Annotations; using Robust.Server.GameObjects; diff --git a/Content.Server/Atmos/EntitySystems/HeatExchangerSystem.cs b/Content.Server/Atmos/EntitySystems/HeatExchangerSystem.cs index 8183bb99e49..78d74d57c35 100644 --- a/Content.Server/Atmos/EntitySystems/HeatExchangerSystem.cs +++ b/Content.Server/Atmos/EntitySystems/HeatExchangerSystem.cs @@ -1,16 +1,9 @@ -using Content.Server.Atmos.EntitySystems; -using Content.Server.Atmos.Piping.Components; -using Content.Server.Atmos.Piping.Unary.Components; -using Content.Server.Atmos; using Content.Server.Atmos.Components; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; -using Content.Server.NodeContainer; -using Content.Shared.Atmos.Piping; using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using Content.Shared.CCVar; -using Content.Shared.Interaction; -using JetBrains.Annotations; using Robust.Shared.Configuration; namespace Content.Server.Atmos.EntitySystems; diff --git a/Content.Server/Atmos/Monitor/Systems/AirAlarmSystem.cs b/Content.Server/Atmos/Monitor/Systems/AirAlarmSystem.cs index 8bd3608dfb1..669f390d695 100644 --- a/Content.Server/Atmos/Monitor/Systems/AirAlarmSystem.cs +++ b/Content.Server/Atmos/Monitor/Systems/AirAlarmSystem.cs @@ -1,5 +1,4 @@ using Content.Server.Atmos.Monitor.Components; -using Content.Server.Atmos.Piping.Components; using Content.Server.DeviceLinking.Systems; using Content.Server.DeviceNetwork.Systems; using Content.Server.Popups; @@ -20,6 +19,7 @@ using Content.Shared.Wires; using Robust.Server.GameObjects; using System.Linq; +using Content.Shared.Atmos.Components; using Content.Shared.DeviceNetwork.Events; using Content.Shared.DeviceNetwork.Components; diff --git a/Content.Server/Atmos/Monitor/Systems/AtmosMonitoringSystem.cs b/Content.Server/Atmos/Monitor/Systems/AtmosMonitoringSystem.cs index 7333b7b8142..83dafd0a29a 100644 --- a/Content.Server/Atmos/Monitor/Systems/AtmosMonitoringSystem.cs +++ b/Content.Server/Atmos/Monitor/Systems/AtmosMonitoringSystem.cs @@ -1,16 +1,14 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.Monitor.Components; -using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.EntitySystems; -using Content.Server.DeviceNetwork; using Content.Server.DeviceNetwork.Systems; -using Content.Server.NodeContainer; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Shared.Administration.Logs; using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using Content.Shared.Atmos.Monitor; using Content.Shared.Atmos.Piping.Components; using Content.Shared.Database; diff --git a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPassiveGateSystem.cs b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPassiveGateSystem.cs index 008d3cb4ce6..b3da10513e1 100644 --- a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPassiveGateSystem.cs +++ b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPassiveGateSystem.cs @@ -1,10 +1,9 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.Piping.Binary.Components; -using Content.Server.Atmos.Piping.Components; -using Content.Server.NodeContainer; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using Content.Shared.Examine; using JetBrains.Annotations; diff --git a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPressurePumpSystem.cs b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPressurePumpSystem.cs index 63944cd5306..90e106a5b83 100644 --- a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPressurePumpSystem.cs +++ b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPressurePumpSystem.cs @@ -1,12 +1,11 @@ using Content.Server.Atmos.EntitySystems; -using Content.Server.Atmos.Piping.Components; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; -using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Shared.Atmos; using Content.Shared.Atmos.Components; using Content.Shared.Atmos.EntitySystems; +using Content.Shared.Atmos.Piping.Components; using Content.Shared.Audio; using JetBrains.Annotations; diff --git a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPressureRegulatorSystem.cs b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPressureRegulatorSystem.cs index 076d5adf8ec..a79eceaa194 100644 --- a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPressureRegulatorSystem.cs +++ b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasPressureRegulatorSystem.cs @@ -1,8 +1,8 @@ using Content.Server.Atmos.EntitySystems; -using Content.Server.Atmos.Piping.Components; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using Content.Shared.Atmos.EntitySystems; using Content.Shared.Atmos.Piping; using Content.Shared.Atmos.Piping.Binary.Components; diff --git a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasRecyclerSystem.cs b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasRecyclerSystem.cs index 9645b0a133e..be485ac7440 100644 --- a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasRecyclerSystem.cs +++ b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasRecyclerSystem.cs @@ -1,10 +1,9 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.Piping.Binary.Components; -using Content.Server.Atmos.Piping.Components; -using Content.Server.NodeContainer; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using Content.Shared.Atmos.Piping; using Content.Shared.Atmos.Piping.Components; using Content.Shared.Audio; diff --git a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasVolumePumpSystem.cs b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasVolumePumpSystem.cs index 04045e813a8..b24e5074673 100644 --- a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasVolumePumpSystem.cs +++ b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasVolumePumpSystem.cs @@ -1,10 +1,10 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.Monitor.Systems; -using Content.Server.Atmos.Piping.Components; using Content.Server.DeviceNetwork.Systems; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Server.Power.Components; +using Content.Shared.Atmos.Components; using Content.Shared.Atmos.Piping.Binary.Components; using Content.Shared.Atmos.Piping.Binary.Systems; using Content.Shared.Atmos.Piping.Components; diff --git a/Content.Server/Atmos/Piping/EntitySystems/AtmosDeviceSystem.cs b/Content.Server/Atmos/Piping/EntitySystems/AtmosDeviceSystem.cs index 3feaf79eb73..b7487cd5389 100644 --- a/Content.Server/Atmos/Piping/EntitySystems/AtmosDeviceSystem.cs +++ b/Content.Server/Atmos/Piping/EntitySystems/AtmosDeviceSystem.cs @@ -1,6 +1,5 @@ -using Content.Server.Atmos.Components; using Content.Server.Atmos.EntitySystems; -using Content.Server.Atmos.Piping.Components; +using Content.Shared.Atmos.Components; using Content.Shared.Atmos.Piping.Components; using JetBrains.Annotations; using Robust.Shared.Timing; diff --git a/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs b/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs index ab8ae2e5e74..7f05d2e4a56 100644 --- a/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs +++ b/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs @@ -1,11 +1,10 @@ using Content.Server.Administration.Logs; using Content.Server.Atmos.EntitySystems; -using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Trinary.Components; -using Content.Server.NodeContainer; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using Content.Shared.Atmos.Piping; using Content.Shared.Atmos.Piping.Components; using Content.Shared.Atmos.Piping.Trinary.Components; diff --git a/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasMixerSystem.cs b/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasMixerSystem.cs index 84abede0665..8f3f73db27a 100644 --- a/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasMixerSystem.cs +++ b/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasMixerSystem.cs @@ -1,11 +1,10 @@ using Content.Server.Administration.Logs; using Content.Server.Atmos.EntitySystems; -using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Trinary.Components; -using Content.Server.NodeContainer; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using Content.Shared.Atmos.Piping; using Content.Shared.Atmos.Piping.Components; using Content.Shared.Atmos.Piping.Trinary.Components; diff --git a/Content.Server/Atmos/Piping/Trinary/EntitySystems/PressureControlledValveSystem.cs b/Content.Server/Atmos/Piping/Trinary/EntitySystems/PressureControlledValveSystem.cs index d1570b11292..38f3ca8a470 100644 --- a/Content.Server/Atmos/Piping/Trinary/EntitySystems/PressureControlledValveSystem.cs +++ b/Content.Server/Atmos/Piping/Trinary/EntitySystems/PressureControlledValveSystem.cs @@ -1,9 +1,8 @@ using Content.Server.Atmos.EntitySystems; -using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Trinary.Components; -using Content.Server.NodeContainer; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; +using Content.Shared.Atmos.Components; using Content.Shared.Atmos.Piping; using Content.Shared.Atmos.Piping.Components; using Content.Shared.Audio; diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCanisterSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCanisterSystem.cs index 9b377dfddfd..06807640a83 100644 --- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCanisterSystem.cs +++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCanisterSystem.cs @@ -1,11 +1,11 @@ using Content.Server.Atmos.EntitySystems; -using Content.Server.Atmos.Piping.Components; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.NodeGroups; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos; using Content.Shared.Atmos.Components; using Content.Shared.Atmos.Piping.Binary.Components; +using Content.Shared.Atmos.Piping.Components; using Content.Shared.Atmos.Piping.Unary.Systems; using Content.Shared.Cargo; using Content.Shared.Database; diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCondenserSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCondenserSystem.cs index e903ceedafa..7bec2136bed 100644 --- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCondenserSystem.cs +++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasCondenserSystem.cs @@ -1,12 +1,11 @@ using Content.Server.Atmos.EntitySystems; -using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Unary.Components; -using Content.Server.NodeContainer; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.FixedPoint; using JetBrains.Annotations; diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasOutletInjectorSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasOutletInjectorSystem.cs index 62039185170..86738518e35 100644 --- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasOutletInjectorSystem.cs +++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasOutletInjectorSystem.cs @@ -1,9 +1,8 @@ using Content.Server.Atmos.EntitySystems; -using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Unary.Components; -using Content.Server.NodeContainer; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; +using Content.Shared.Atmos.Components; using Content.Shared.Atmos.Piping; using Content.Shared.Interaction; using JetBrains.Annotations; diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasPassiveVentSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasPassiveVentSystem.cs index 72812cb5237..84bd25d0688 100644 --- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasPassiveVentSystem.cs +++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasPassiveVentSystem.cs @@ -1,10 +1,9 @@ using Content.Server.Atmos.EntitySystems; -using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Unary.Components; -using Content.Server.NodeContainer; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using JetBrains.Annotations; namespace Content.Server.Atmos.Piping.Unary.EntitySystems diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasThermoMachineSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasThermoMachineSystem.cs index 35ff89c7262..9f97f3560cd 100644 --- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasThermoMachineSystem.cs +++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasThermoMachineSystem.cs @@ -1,7 +1,5 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.Monitor.Systems; -using Content.Server.Atmos.Piping.Components; -using Content.Server.Atmos.Piping.Unary.Components; using Content.Server.DeviceNetwork.Systems; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; @@ -10,10 +8,10 @@ using Content.Shared.Atmos.Piping.Unary.Components; using JetBrains.Annotations; using Content.Server.Power.EntitySystems; +using Content.Shared.Atmos.Components; using Content.Shared.Atmos.Piping.Unary.Systems; using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Events; -using Content.Shared.Examine; using Content.Shared.DeviceNetwork.Components; namespace Content.Server.Atmos.Piping.Unary.EntitySystems diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentPumpSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentPumpSystem.cs index 1066e4e88d3..0716d96f14e 100644 --- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentPumpSystem.cs +++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentPumpSystem.cs @@ -1,6 +1,5 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.Monitor.Systems; -using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Unary.Components; using Content.Server.DeviceLinking.Systems; using Content.Server.DeviceNetwork.Systems; @@ -9,6 +8,7 @@ using Content.Server.Power.EntitySystems; using Content.Shared.Administration.Logs; using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using Content.Shared.Atmos.Monitor; using Content.Shared.Atmos.Piping.Components; using Content.Shared.Atmos.Piping.Unary; diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentScrubberSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentScrubberSystem.cs index 22f22a682a0..f6f3829142f 100644 --- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentScrubberSystem.cs +++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentScrubberSystem.cs @@ -1,6 +1,5 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.Monitor.Systems; -using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Unary.Components; using Content.Server.DeviceNetwork.Systems; using Content.Server.NodeContainer.EntitySystems; @@ -8,6 +7,7 @@ using Content.Server.Power.EntitySystems; using Content.Shared.Administration.Logs; using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using Content.Shared.Atmos.Monitor; using Content.Shared.Atmos.Piping.Components; using Content.Shared.Atmos.Piping.Unary.Components; diff --git a/Content.Server/Atmos/Portable/PortableScrubberSystem.cs b/Content.Server/Atmos/Portable/PortableScrubberSystem.cs index b1b6ed36789..b421c1771c7 100644 --- a/Content.Server/Atmos/Portable/PortableScrubberSystem.cs +++ b/Content.Server/Atmos/Portable/PortableScrubberSystem.cs @@ -3,10 +3,7 @@ using Content.Shared.Atmos.Visuals; using Content.Shared.Examine; using Content.Shared.Destructible; -using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.EntitySystems; -using Content.Server.Power.Components; -using Content.Server.NodeContainer; using Robust.Server.GameObjects; using Content.Server.NodeContainer.Nodes; using Content.Server.NodeContainer.NodeGroups; @@ -14,6 +11,7 @@ using Content.Server.Administration.Logs; using Content.Server.NodeContainer.EntitySystems; using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using Content.Shared.Database; using Content.Shared.Power; diff --git a/Content.Server/Atmos/Portable/SpaceHeaterSystem.cs b/Content.Server/Atmos/Portable/SpaceHeaterSystem.cs index 7410810f8b4..9385613d945 100644 --- a/Content.Server/Atmos/Portable/SpaceHeaterSystem.cs +++ b/Content.Server/Atmos/Portable/SpaceHeaterSystem.cs @@ -1,9 +1,8 @@ using Content.Server.Atmos.EntitySystems; -using Content.Server.Atmos.Piping.Components; -using Content.Server.Atmos.Piping.Unary.Components; using Content.Server.Popups; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; +using Content.Shared.Atmos.Components; using Content.Shared.Atmos.Piping.Portable.Components; using Content.Shared.Atmos.Piping.Unary.Components; using Content.Shared.Atmos.Visuals; diff --git a/Content.Server/Atmos/Rotting/RottingSystem.cs b/Content.Server/Atmos/Rotting/RottingSystem.cs index 3c4440ed7c1..07526e4b799 100644 --- a/Content.Server/Atmos/Rotting/RottingSystem.cs +++ b/Content.Server/Atmos/Rotting/RottingSystem.cs @@ -127,11 +127,11 @@ public override void Update(float frameTime) if (!TryComp(uid, out var physics)) continue; + // We need a way to get the mass of the mob alone without armor etc in the future // or just remove the mass mechanics altogether because they aren't good. var molRate = perishable.MolsPerSecondPerUnitMass * (float)rotting.RotUpdateRate.TotalSeconds; - var tileMix = _atmosphere.GetTileMixture(uid, excite: true); - tileMix?.AdjustMoles(Gas.Ammonia, molRate * physics.FixturesMass); + _atmosphere.AdjustTileMixture(uid, Gas.Ammonia, molRate * physics.FixturesMass, excite: true); } } } diff --git a/Content.Server/Disposal/Unit/BeingDisposedSystem.cs b/Content.Server/Disposal/Unit/BeingDisposedSystem.cs index fcff4ba3b55..b2fa7239fb3 100644 --- a/Content.Server/Disposal/Unit/BeingDisposedSystem.cs +++ b/Content.Server/Disposal/Unit/BeingDisposedSystem.cs @@ -1,5 +1,6 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Body.Systems; +using Content.Shared.Atmos; namespace Content.Server.Disposal.Unit; diff --git a/Content.Server/Doors/Systems/FirelockSystem.cs b/Content.Server/Doors/Systems/FirelockSystem.cs index be0c0250690..91cba14bd66 100644 --- a/Content.Server/Doors/Systems/FirelockSystem.cs +++ b/Content.Server/Doors/Systems/FirelockSystem.cs @@ -6,6 +6,7 @@ using Content.Server.Power.EntitySystems; using Content.Server.Shuttles.Components; using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using Content.Shared.Atmos.Monitor; using Content.Shared.Doors.Components; using Content.Shared.Doors.Systems; diff --git a/Content.Server/Mech/Systems/MechSystem.cs b/Content.Server/Mech/Systems/MechSystem.cs index 36fd0722108..7b4c7f32f49 100644 --- a/Content.Server/Mech/Systems/MechSystem.cs +++ b/Content.Server/Mech/Systems/MechSystem.cs @@ -26,6 +26,7 @@ using Robust.Shared.Player; using Robust.Shared.Prototypes; using System.Linq; +using Content.Shared.Atmos; namespace Content.Server.Mech.Systems; diff --git a/Content.Server/Medical/CryoPodSystem.cs b/Content.Server/Medical/CryoPodSystem.cs index 239de94455b..9668b0ab58b 100644 --- a/Content.Server/Medical/CryoPodSystem.cs +++ b/Content.Server/Medical/CryoPodSystem.cs @@ -1,13 +1,14 @@ using Content.Server.Atmos.EntitySystems; -using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Unary.EntitySystems; using Content.Server.Medical.Components; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.NodeGroups; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using Content.Shared.Damage.Systems; using Content.Shared.Medical.Cryogenics; + namespace Content.Server.Medical; public sealed partial class CryoPodSystem : SharedCryoPodSystem diff --git a/Content.Server/Medical/InsideCryoPodSystem.cs b/Content.Server/Medical/InsideCryoPodSystem.cs index 21827c105f9..f04bb3cc40e 100644 --- a/Content.Server/Medical/InsideCryoPodSystem.cs +++ b/Content.Server/Medical/InsideCryoPodSystem.cs @@ -1,6 +1,6 @@ -using Content.Server.Atmos.EntitySystems; -using Content.Server.Body.Systems; +using Content.Server.Body.Systems; using Content.Server.Medical.Components; +using Content.Shared.Atmos; using Content.Shared.Medical.Cryogenics; namespace Content.Server.Medical diff --git a/Content.Server/NodeContainer/EntitySystems/NodeGroupSystem.cs b/Content.Server/NodeContainer/EntitySystems/NodeGroupSystem.cs index 219f87805d3..06b6359cd6c 100644 --- a/Content.Server/NodeContainer/EntitySystems/NodeGroupSystem.cs +++ b/Content.Server/NodeContainer/EntitySystems/NodeGroupSystem.cs @@ -2,7 +2,6 @@ using System.Linq; using Content.Server.Administration.Managers; using Content.Server.NodeContainer.NodeGroups; -using Content.Server.NodeContainer.Nodes; using Content.Shared.Administration; using Content.Shared.NodeContainer; using Content.Shared.NodeContainer.NodeGroups; diff --git a/Content.Server/NodeContainer/NodeGroups/PipeNet.cs b/Content.Server/NodeContainer/NodeGroups/PipeNet.cs index 3c8e65ca91f..591278c8b00 100644 --- a/Content.Server/NodeContainer/NodeGroups/PipeNet.cs +++ b/Content.Server/NodeContainer/NodeGroups/PipeNet.cs @@ -1,103 +1,92 @@ using System.Linq; -using Content.Server.Atmos; using Content.Server.Atmos.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Shared.Atmos; using Content.Shared.NodeContainer; using Content.Shared.NodeContainer.NodeGroups; -using Robust.Shared.Utility; -namespace Content.Server.NodeContainer.NodeGroups +namespace Content.Server.NodeContainer.NodeGroups; + +[NodeGroup(NodeGroupID.Pipe)] +public sealed class PipeNet : BaseNodeGroup, IPipeNet { - public interface IPipeNet : INodeGroup, IGasMixtureHolder - { - /// - /// Causes gas in the PipeNet to react. - /// - void Update(); - } + [ViewVariables] public GasMixture Air { get; set; } = new() {Temperature = Atmospherics.T20C}; - [NodeGroup(NodeGroupID.Pipe)] - public sealed class PipeNet : BaseNodeGroup, IPipeNet - { - [ViewVariables] public GasMixture Air { get; set; } = new() {Temperature = Atmospherics.T20C}; + [ViewVariables] private AtmosphereSystem? _atmosphereSystem; - [ViewVariables] private AtmosphereSystem? _atmosphereSystem; + public EntityUid? Grid { get; private set; } - public EntityUid? Grid { get; private set; } + public override void Initialize(Node sourceNode, IEntityManager entMan) + { + base.Initialize(sourceNode, entMan); + + Grid = entMan.GetComponent(sourceNode.Owner).GridUid; - public override void Initialize(Node sourceNode, IEntityManager entMan) + if (Grid == null) { - base.Initialize(sourceNode, entMan); + // This is probably due to a canister or something like that being spawned in space. + return; + } - Grid = entMan.GetComponent(sourceNode.Owner).GridUid; + _atmosphereSystem = entMan.EntitySysManager.GetEntitySystem(); + _atmosphereSystem.AddPipeNet(Grid.Value, this); + } - if (Grid == null) - { - // This is probably due to a cannister or something like that being spawned in space. - return; - } + public void Update() + { + _atmosphereSystem?.React(Air, this); + } - _atmosphereSystem = entMan.EntitySysManager.GetEntitySystem(); - _atmosphereSystem.AddPipeNet(Grid.Value, this); - } + public override void LoadNodes(List groupNodes) + { + base.LoadNodes(groupNodes); - public void Update() + foreach (var node in groupNodes) { - _atmosphereSystem?.React(Air, this); + var pipeNode = (PipeNode) node; + Air.Volume += pipeNode.Volume; } + } - public override void LoadNodes(List groupNodes) - { - base.LoadNodes(groupNodes); - - foreach (var node in groupNodes) - { - var pipeNode = (PipeNode) node; - Air.Volume += pipeNode.Volume; - } - } + public override void RemoveNode(Node node) + { + base.RemoveNode(node); - public override void RemoveNode(Node node) - { - base.RemoveNode(node); + // if the node is simply being removed into a separate group, we do nothing, as gas redistribution will be + // handled by AfterRemake(). But if it is being deleted, we actually want to remove the gas stored in this node. + if (!node.Deleting || node is not PipeNode pipe) + return; - // if the node is simply being removed into a separate group, we do nothing, as gas redistribution will be - // handled by AfterRemake(). But if it is being deleted, we actually want to remove the gas stored in this node. - if (!node.Deleting || node is not PipeNode pipe) - return; + Air.Multiply(1f - pipe.Volume / Air.Volume); + Air.Volume -= pipe.Volume; + } - Air.Multiply(1f - pipe.Volume / Air.Volume); - Air.Volume -= pipe.Volume; - } + public override void AfterRemake(IEnumerable> newGroups) + { + RemoveFromGridAtmos(); - public override void AfterRemake(IEnumerable> newGroups) + var newAir = new List(newGroups.Count()); + foreach (var newGroup in newGroups) { - RemoveFromGridAtmos(); - - var newAir = new List(newGroups.Count()); - foreach (var newGroup in newGroups) - { - if (newGroup.Key is IPipeNet newPipeNet) - newAir.Add(newPipeNet.Air); - } - - _atmosphereSystem?.DivideInto(Air, newAir); + if (newGroup.Key is IPipeNet newPipeNet) + newAir.Add(newPipeNet.Air); } - private void RemoveFromGridAtmos() - { - if (Grid == null) - return; + _atmosphereSystem?.DivideInto(Air, newAir); + } - _atmosphereSystem?.RemovePipeNet(Grid.Value, this); - } + private void RemoveFromGridAtmos() + { + if (Grid == null) + return; - public override string GetDebugData() - { - return @$"Pressure: { Air.Pressure:G3} + _atmosphereSystem?.RemovePipeNet(Grid.Value, this); + } + + public override string GetDebugData() + { + return @$"Pressure: { Air.Pressure:G3} Temperature: {Air.Temperature:G3} Volume: {Air.Volume:G3}"; - } } } diff --git a/Content.Server/NodeContainer/Nodes/PipeNode.cs b/Content.Server/NodeContainer/Nodes/PipeNode.cs index 23a2c217506..bf1d2616117 100644 --- a/Content.Server/NodeContainer/Nodes/PipeNode.cs +++ b/Content.Server/NodeContainer/Nodes/PipeNode.cs @@ -3,6 +3,7 @@ using Content.Shared.Atmos; using Content.Shared.Atmos.Components; using Content.Shared.NodeContainer; +using Content.Shared.NodeContainer.NodeGroups; using Robust.Shared.Map.Components; using Robust.Shared.Utility; diff --git a/Content.Server/Power/Generation/Teg/TegSystem.cs b/Content.Server/Power/Generation/Teg/TegSystem.cs index ef578c81bf1..c8b75559be9 100644 --- a/Content.Server/Power/Generation/Teg/TegSystem.cs +++ b/Content.Server/Power/Generation/Teg/TegSystem.cs @@ -1,13 +1,10 @@ -using Content.Server.Atmos; -using Content.Server.Atmos.EntitySystems; -using Content.Server.Atmos.Piping.Components; +using Content.Server.Atmos.EntitySystems; using Content.Server.Audio; -using Content.Server.DeviceNetwork; using Content.Server.DeviceNetwork.Systems; -using Content.Server.NodeContainer; using Content.Server.NodeContainer.Nodes; using Content.Server.Power.Components; using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Events; using Content.Shared.Examine; @@ -17,7 +14,6 @@ using Content.Shared.Power.Generation.Teg; using Content.Shared.Rounding; using Robust.Server.GameObjects; -using Robust.Shared.Utility; namespace Content.Server.Power.Generation.Teg; diff --git a/Content.Server/Power/Generator/GasPowerReceiverSystem.cs b/Content.Server/Power/Generator/GasPowerReceiverSystem.cs index e3979a65192..d26977c87ae 100644 --- a/Content.Server/Power/Generator/GasPowerReceiverSystem.cs +++ b/Content.Server/Power/Generator/GasPowerReceiverSystem.cs @@ -1,10 +1,8 @@ using Content.Server.Atmos.EntitySystems; -using Content.Server.Atmos.Piping.Components; -using Content.Server.NodeContainer; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; -using Content.Server.Power.Components; using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using Content.Shared.Power; namespace Content.Server.Power.Generator; diff --git a/Content.Server/Salvage/SpawnSalvageMissionJob.cs b/Content.Server/Salvage/SpawnSalvageMissionJob.cs index f212fa4a833..d989a19cce9 100644 --- a/Content.Server/Salvage/SpawnSalvageMissionJob.cs +++ b/Content.Server/Salvage/SpawnSalvageMissionJob.cs @@ -1,19 +1,16 @@ -using System.Collections; using System.Linq; using System.Numerics; using System.Threading; using System.Threading.Tasks; -using Content.Server.Atmos; -using Content.Server.Atmos.Components; using Content.Server.Atmos.EntitySystems; -using Robust.Shared.CPUJob.JobQueues; using Content.Server.Ghost.Roles.Components; using Content.Server.Parallax; using Content.Server.Procedural; using Content.Server.Salvage.Expeditions; +using Content.Server.Shuttles.Components; using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; using Content.Shared.Construction.EntitySystems; -using Content.Shared.Dataset; using Content.Shared.Gravity; using Content.Shared.Parallax.Biomes; using Content.Shared.Physics; @@ -24,15 +21,13 @@ using Content.Shared.Salvage.Expeditions; using Content.Shared.Salvage.Expeditions.Modifiers; using Content.Shared.Shuttles.Components; -using Content.Shared.Storage; using Robust.Shared.Collections; -using Robust.Shared.Map; +using Robust.Shared.CPUJob.JobQueues; using Robust.Shared.Map.Components; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; using Robust.Shared.Utility; -using Content.Server.Shuttles.Components; namespace Content.Server.Salvage; diff --git a/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.cs b/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.cs index ebe8f304bab..99779e2a0ee 100644 --- a/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.cs +++ b/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.cs @@ -1,9 +1,8 @@ using Content.Server.Atmos.Monitor.Components; using Content.Server.Atmos.Monitor.Systems; -using Content.Server.Atmos.Piping.Components; -using Content.Server.Atmos.Piping.Unary.Components; using Content.Server.DeviceNetwork.Systems; using Content.Server.Power.Generation.Teg; +using Content.Shared.Atmos.Components; using Content.Shared.Atmos.Monitor; using Content.Shared.Atmos.Piping.Binary.Components; using Content.Shared.Atmos.Piping.Unary.Components; diff --git a/Content.Server/Storage/EntitySystems/EntityStorageSystem.cs b/Content.Server/Storage/EntitySystems/EntityStorageSystem.cs index e22a4f5d7ec..8fb898dfa84 100644 --- a/Content.Server/Storage/EntitySystems/EntityStorageSystem.cs +++ b/Content.Server/Storage/EntitySystems/EntityStorageSystem.cs @@ -2,6 +2,7 @@ using Content.Server.Body.Systems; using Content.Server.Construction; using Content.Server.Construction.Components; +using Content.Shared.Atmos; using Content.Shared.Storage.Components; using Content.Shared.Storage.EntitySystems; using Robust.Server.GameObjects; diff --git a/Content.Shared/Atmos/AtmosExposedEvents.cs b/Content.Shared/Atmos/AtmosExposedEvents.cs new file mode 100644 index 00000000000..41b65fe24f2 --- /dev/null +++ b/Content.Shared/Atmos/AtmosExposedEvents.cs @@ -0,0 +1,57 @@ +using Robust.Shared.Map; + +namespace Content.Shared.Atmos; + +/// +/// Raised on entities that have an AtmosExposedComponent when AtmosphereSystem updates. +/// Exposure events are raised by AtmosphereSystem at some fixed interval. +/// +/// The coordinates of the entity that is being exposed. +/// The gas mixture that the entity is exposed to. +/// The xform of the entity that is being exposed. +[ByRefEvent] +public readonly struct AtmosExposedUpdateEvent( + EntityCoordinates coordinates, + GasMixture mixture, + TransformComponent transform) +{ + public readonly EntityCoordinates Coordinates = coordinates; + public readonly GasMixture GasMixture = mixture; + public readonly TransformComponent Transform = transform; +} + +/// +/// Event that tries to query the mixture a certain entity is exposed to. +/// This is mainly intended for use with entities inside of containers. +/// This event is not raised for entities that are directly parented to the grid. +/// +[ByRefEvent] +public struct AtmosExposedGetAirEvent +{ + /// + /// The entity we want to query this for. + /// + public readonly Entity Entity; + + /// + /// The mixture that the entity is exposed to. Output parameter. + /// + public GasMixture? Gas = null; + + /// + /// Whether to excite the mixture, if possible. + /// + public readonly bool Excite = false; + + /// + /// Whether this event has been handled or not. + /// Check this before changing anything. + /// + public bool Handled = false; + + public AtmosExposedGetAirEvent(Entity entity, bool excite = false) + { + Entity = entity; + Excite = excite; + } +} diff --git a/Content.Server/Atmos/Piping/Components/AtmosDeviceComponent.cs b/Content.Shared/Atmos/Components/AtmosDeviceComponent.cs similarity index 95% rename from Content.Server/Atmos/Piping/Components/AtmosDeviceComponent.cs rename to Content.Shared/Atmos/Components/AtmosDeviceComponent.cs index 5b55d9d3b67..2226f44981c 100644 --- a/Content.Server/Atmos/Piping/Components/AtmosDeviceComponent.cs +++ b/Content.Shared/Atmos/Components/AtmosDeviceComponent.cs @@ -1,7 +1,4 @@ -using Content.Server.Atmos.Components; -using Content.Shared.Atmos.Components; - -namespace Content.Server.Atmos.Piping.Components; +namespace Content.Shared.Atmos.Components; /// /// Component for atmos devices which are updated in line with atmos, as part of a diff --git a/Content.Shared/Atmos/Components/GridAtmosphereComponent.cs b/Content.Shared/Atmos/Components/GridAtmosphereComponent.cs new file mode 100644 index 00000000000..f633947eea1 --- /dev/null +++ b/Content.Shared/Atmos/Components/GridAtmosphereComponent.cs @@ -0,0 +1,155 @@ +using System.Collections.Concurrent; +using Content.Shared.Atmos.EntitySystems; +using Content.Shared.Atmos.Serialization; +using Content.Shared.NodeContainer.NodeGroups; + +namespace Content.Shared.Atmos.Components; + +/// +/// Internal class for storing all grid data. +/// If you need to access this data, use the API methods in the /server +/// instead of trying to scour this component or others for the data you need. +/// +[RegisterComponent, Serializable, + Access(typeof(SharedAtmosphereSystem), typeof(SharedGasTileOverlaySystem), typeof(SharedAtmosDebugOverlaySystem))] +public sealed partial class GridAtmosphereComponent : Component +{ + /// + /// Whether the grid is being updated by Atmospherics. + /// + [ViewVariables(VVAccess.ReadWrite)] + public bool Simulated = true; + + /// + /// Indicator for if Atmospherics has delegated the processing of this + /// grid to another tick due to the time budget running out. + /// + /// If true, Atmospherics is not finished + /// processing the current stage and has yielded processing + /// to the next tick. + [ViewVariables] + public bool ProcessingPaused; + + /// + /// Timer used to delay processing for every AtmosTick. + /// No, Atmospherics cannot tick every frame. + /// + /// TODO: Replace with TimeSpan please. + [ViewVariables] + public float Timer; + + /// + /// Integer that is incremented every time the grid is processed by Atmospherics. + /// Used in multiple subsystems to prevent double-copy/processing of data. + /// + /// Do not set to zero by default. + /// You will break roundstart atmos otherwise. + [ViewVariables] + public int UpdateCounter = 1; + + [ViewVariables] + [IncludeDataField(customTypeSerializer:typeof(TileAtmosCollectionSerializer))] + public Dictionary Tiles = new(1000); + + [ViewVariables] + public HashSet MapTiles = new(1000); + + [ViewVariables] + public readonly HashSet ActiveTiles = new(1000); + + [ViewVariables] + public int ActiveTilesCount => ActiveTiles.Count; + + [ViewVariables] + public readonly HashSet ExcitedGroups = new(1000); + + [ViewVariables] + public int ExcitedGroupCount => ExcitedGroups.Count; + + [ViewVariables] + public readonly HashSet HotspotTiles = new(1000); + + [ViewVariables] + public int HotspotTilesCount => HotspotTiles.Count; + + [ViewVariables] + public readonly HashSet SuperconductivityTiles = new(1000); + + [ViewVariables] + public int SuperconductivityTilesCount => SuperconductivityTiles.Count; + + [ViewVariables] + public HashSet HighPressureDelta = new(1000); + + [ViewVariables] + public int HighPressureDeltaCount => HighPressureDelta.Count; + + /// + /// A list of entities that have a and are to + /// be processed by the , if enabled. + /// + /// To prevent massive bookkeeping overhead, this list is processed in-place, + /// with add/remove/find operations helped via a dict. + /// + /// If you want to add/remove/find entities in this list, + /// use the API methods in the Atmospherics API. + [ViewVariables] + public readonly List> DeltaPressureEntities = + new(SharedAtmosphereSystem.DeltaPressurePreAllocateLength); + + /// + /// An index lookup for the list. + /// Used for add/remove/find operations to speed up processing. + /// + public readonly Dictionary DeltaPressureEntityLookup = + new(SharedAtmosphereSystem.DeltaPressurePreAllocateLength); + + /// + /// Integer that indicates the current position in the + /// list that is being processed. + /// + [ViewVariables(VVAccess.ReadOnly)] + public int DeltaPressureCursor; + + /// + /// Queue of entities that need to have damage applied to them. + /// + [ViewVariables] + public readonly ConcurrentQueue DeltaPressureDamageResults = new(); + + [ViewVariables] + public readonly HashSet PipeNets = new(); + + [ViewVariables] + public readonly HashSet> AtmosDevices = new(); + + [ViewVariables] + public readonly Queue CurrentRunTiles = new(); + + [ViewVariables] + public readonly Queue CurrentRunExcitedGroups = new(); + + [ViewVariables] + public readonly Queue CurrentRunPipeNet = new(); + + [ViewVariables] + public readonly Queue> CurrentRunAtmosDevices = new(); + + [ViewVariables] + public readonly HashSet InvalidatedCoords = new(1000); + + [ViewVariables] + public readonly Queue CurrentRunInvalidatedTiles = new(); + + [ViewVariables] + public readonly List PossiblyDisconnectedTiles = new(100); + + [ViewVariables] + public int InvalidatedCoordsCount => InvalidatedCoords.Count; + + [ViewVariables] + public long EqualizationQueueCycleControl { get; set; } + + [ViewVariables] + public AtmosphereProcessingState State { get; set; } = AtmosphereProcessingState.Revalidate; +} diff --git a/Content.Server/Atmos/Components/MapAtmosphereComponent.cs b/Content.Shared/Atmos/Components/MapAtmosphereComponent.cs similarity index 51% rename from Content.Server/Atmos/Components/MapAtmosphereComponent.cs rename to Content.Shared/Atmos/Components/MapAtmosphereComponent.cs index bdd05e78494..37014ebfddb 100644 --- a/Content.Server/Atmos/Components/MapAtmosphereComponent.cs +++ b/Content.Shared/Atmos/Components/MapAtmosphereComponent.cs @@ -1,25 +1,23 @@ -using Content.Shared.Atmos; -using Content.Shared.Atmos.Components; using Content.Shared.Atmos.EntitySystems; -namespace Content.Server.Atmos.Components; +namespace Content.Shared.Atmos.Components; /// -/// Component that defines the default GasMixture for a map. +/// Component that defines the default GasMixture for a map. /// [RegisterComponent, Access(typeof(SharedAtmosphereSystem))] public sealed partial class MapAtmosphereComponent : SharedMapAtmosphereComponent { /// - /// The default GasMixture a map will have. Space mixture by default. + /// The default GasMixture a map will have. Space mixture by default. /// - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public GasMixture Mixture = GasMixture.SpaceGas; /// - /// Whether empty tiles will be considered space or not. + /// Whether empty tiles will be considered space or not. /// - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public bool Space = true; public SharedGasTileOverlaySystem.GasOverlayData Overlay; diff --git a/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.API.cs b/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.API.cs new file mode 100644 index 00000000000..3852c30974c --- /dev/null +++ b/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.API.cs @@ -0,0 +1,89 @@ +using System.Diagnostics.CodeAnalysis; +using JetBrains.Annotations; + +namespace Content.Shared.Atmos.EntitySystems; + +public abstract partial class SharedAtmosphereSystem +{ + /// + /// Merges a given into this entity's containing . + /// + /// Entity who's containing + /// we're merging a given into. + /// The gas + /// we're merging into the containing + /// Whether we should ignore non-tile s. + /// Whether we should excite the gas upon merging. + [PublicAPI] + public virtual void MergeContainingMixture(Entity entity, GasMixture mixture, bool ignoreExposed = false, bool excite = false) + { + // Handled by server + } + + /// + /// Merges a given gas into this entity's tile . + /// + /// Entity who's containing + /// we're merging a given into. + /// The gas + /// we're merging into the containing . + /// Whether we should excite the gas upon merging. + [PublicAPI] + public virtual void MergeTileMixture(Entity entity, GasMixture mixture, bool excite = false) + { + // Handled by server + } + + /// + /// Adjusts a given gas in this entity's containing . + /// + /// Entity who's containing + /// we're merging a given into. + /// The gas in our given we're adjusting the mols of. + /// The amount of mols we're adjusting the gas by. + /// Whether we should ignore non-tile s. + /// Whether we should excite the gas upon merging. + [PublicAPI] + public virtual void AdjustContainingMixture(Entity entity, Gas gas, float mols, bool ignoreExposed = false, bool excite = false) + { + // Handled by server + } + + /// + /// Adjusts a given gas in this entity's tile . + /// + /// Entity who's containing + /// we're merging a given into. + /// The gas in our given we're adjusting the mols of. + /// The amount of mols we're adjusting the gas by. + /// Whether we should excite the gas upon merging. + [PublicAPI] + public virtual void AdjustTileMixture(Entity entity, Gas gas, float mols, bool excite = false) + { + // Handled by server + } + + /// + /// Tries to get the of a containing entity (ex. lockers and cryopods), + /// does not return tile s. + /// + /// Exposed entity that is in some . + /// The found gas . + /// Returns true if this entity is in an exposed , false otherwise. + [PublicAPI] + public bool TryGetExposedMixture(Entity entity, [NotNullWhen(true)] out GasMixture? mixture) + { + mixture = null; + if (!Resolve(entity, ref entity.Comp) || entity.Comp.Anchored) + return false; + + // TODO ATMOS: recursively iterate up through parents + // This really needs recursive InContainer metadata flag for performance + // And ideally some fast way to get the innermost airtight container. + var ev = new AtmosExposedGetAirEvent((entity, entity.Comp)); + RaiseLocalEvent(entity, ref ev); + mixture = ev.Gas; + + return ev.Handled; + } +} diff --git a/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.Gases.cs b/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.Gases.cs index db263495e9c..ce50fbb3b0e 100644 --- a/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.Gases.cs +++ b/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.Gases.cs @@ -1,5 +1,6 @@ using System.Runtime.CompilerServices; using Content.Shared.Atmos.Prototypes; +using Content.Shared.Atmos.Reactions; using Content.Shared.CCVar; using JetBrains.Annotations; @@ -59,7 +60,7 @@ public virtual void InitializeGases() { var idx = (int)gas; // Log an error if the corresponding prototype isn't found - if (!_prototypeManager.TryIndex(gas.ToString(), out var gasPrototype)) + if (!ProtoMan.TryIndex(gas.ToString(), out var gasPrototype)) { Log.Error($"Failed to find corresponding {nameof(GasPrototype)} for gas ID {(int)gas} ({gas}) with expected ID \"{gas.ToString()}\". Is your prototype named correctly?"); continue; @@ -157,6 +158,67 @@ public float GetHeatCapacity(GasMixture mixture, bool applyScaling) return applyScaling ? scale : scale * HeatScale; } + /// + /// Calculates the thermal energy for a . + /// + /// The to calculate the thermal + /// energy of. + /// The 's thermal energy in joules. + [PublicAPI] + public float GetThermalEnergy(GasMixture mixture) + { + return mixture.Temperature * GetHeatCapacity(mixture); + } + + /// + /// Calculates the thermal energy for a gas mixture, + /// using a provided cached heat capacity value. + /// + /// The to calculate the thermal energy of. + /// A cached heat capacity value for the gas mixture, + /// to avoid redundant heat capacity calculations. + /// The 's thermal energy in joules. + [PublicAPI] + public float GetThermalEnergy(GasMixture mixture, float cachedHeatCapacity) + { + return mixture.Temperature * cachedHeatCapacity; + } + + /// + /// Merges one into another, modifying the receiver. + /// + /// The to merge into. This will be modified. + /// The to merge from. This will not be modified. + [PublicAPI] + public void Merge(GasMixture receiver, GasMixture giver) + { + if (receiver.Immutable) + return; + + if (MathF.Abs(receiver.Temperature - giver.Temperature) > Atmospherics.MinimumTemperatureDeltaToConsider) + { + var receiverHeatCapacity = GetHeatCapacity(receiver); + var giverHeatCapacity = GetHeatCapacity(giver); + var combinedHeatCapacity = receiverHeatCapacity + giverHeatCapacity; + if (combinedHeatCapacity > Atmospherics.MinimumHeatCapacity) + { + receiver.Temperature = (GetThermalEnergy(giver, giverHeatCapacity) + GetThermalEnergy(receiver, receiverHeatCapacity)) / combinedHeatCapacity; + } + } + + NumericsHelpers.Add(receiver.Moles, giver.Moles); + } + + /// + /// Performs reactions for a given gas mixture on an optional holder. + /// + /// The to perform reactions on. + /// that holds the . + /// used by Atmospherics to determine locality for certain reaction effects. + /// The of the reactions performed. + [PublicAPI] + public abstract ReactionResult React(GasMixture mixture, IGasMixtureHolder? holder); + /// /// Gets the heat capacity for a . /// diff --git a/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.cs b/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.cs index 593c7728ded..04f02219947 100644 --- a/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.cs +++ b/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.cs @@ -1,34 +1,108 @@ +using Content.Shared.Atmos.Components; using Content.Shared.Atmos.Prototypes; using Content.Shared.Body.Components; using Content.Shared.Body.Systems; using Robust.Shared.Configuration; using Robust.Shared.Prototypes; -namespace Content.Shared.Atmos.EntitySystems +namespace Content.Shared.Atmos.EntitySystems; + +public abstract partial class SharedAtmosphereSystem : EntitySystem { - public abstract partial class SharedAtmosphereSystem : EntitySystem - { - [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly SharedInternalsSystem _internals = default!; - [Dependency] private readonly IConfigurationManager _cfg = default!; + [Dependency] private readonly IConfigurationManager _cfg = default!; + [Dependency] protected readonly IPrototypeManager ProtoMan = default!; + [Dependency] private readonly SharedInternalsSystem _internals = default!; + [Dependency] protected readonly SharedTransformSystem XformSystem = default!; - private EntityQuery _internalsQuery; + private EntityQuery _internalsQuery; - public override void Initialize() - { - base.Initialize(); + /// + /// The length to pre-allocate list/dicts of delta pressure entities on a . + /// + public const int DeltaPressurePreAllocateLength = 1000; - _internalsQuery = GetEntityQuery(); + public override void Initialize() + { + base.Initialize(); - InitializeBreathTool(); - InitializeGases(); - InitializeCVars(); - } + _internalsQuery = GetEntityQuery(); - public GasPrototype GetGas(int gasId) => GasPrototypes[gasId]; + InitializeBreathTool(); + InitializeGases(); + InitializeCVars(); + } - public GasPrototype GetGas(Gas gasId) => GasPrototypes[(int) gasId]; + /// + /// Gets the of a given gas ID. + /// + /// The gas ID to get the prototype of. + /// The of the given gas ID. + public GasPrototype GetGas(int gasId) + { + return GasPrototypes[gasId]; + } - public IEnumerable Gases => GasPrototypes; + /// + /// Gets the of a given gas ID. + /// + /// The gas ID to get the prototype of. + /// The of the given gas ID. + public GasPrototype GetGas(Gas gasId) + { + return GasPrototypes[(int)gasId]; } + + /// + /// Gets an enumerable of all the s. + /// + public IEnumerable Gases => GasPrototypes; +} + +/// +/// Enum that represents the current processing state of a +/// . +/// +public enum AtmosphereProcessingState : byte +{ + Revalidate, + TileEqualize, + ActiveTiles, + ExcitedGroups, + HighPressureDelta, + DeltaPressure, + Hotspots, + Superconductivity, + PipeNet, + AtmosDevices, + NumStates, } + +/// +/// Data on the airtightness of a . +/// Cached on the and updated during +/// if it was invalidated. +/// +/// The current directions blocked on this tile. +/// This is where air cannot flow to. +/// Whether the tile can have air when blocking directions. +/// Common for entities like thin windows which only block one face but can still have air in the residing tile. +/// If true, Atmospherics will generate air (yes, creating matter from nothing) +/// using the adjacent tiles as a seed if the airtightness is removed and the tile has no air. +/// This allows stuff like airlocks that void air when becoming airtight to keep opening/closing without +/// draining a room by continuously voiding air. +public readonly record struct AirtightData( + AtmosDirection BlockedDirections, + bool NoAirWhenBlocked, + bool FixVacuum); + +/// +/// Struct that holds the result of delta pressure damage processing for an entity. +/// This is only created and enqueued when the entity needs to take damage. +/// +/// The entity to deal damage to. +/// The current absolute pressure the entity is experiencing. +/// The current delta pressure the entity is experiencing. +public readonly record struct DeltaPressureDamageResult( + Entity Ent, + float Pressure, + float DeltaPressure); diff --git a/Content.Server/Atmos/ExcitedGroup.cs b/Content.Shared/Atmos/ExcitedGroup.cs similarity index 98% rename from Content.Server/Atmos/ExcitedGroup.cs rename to Content.Shared/Atmos/ExcitedGroup.cs index 1554318f654..837763f9ba6 100644 --- a/Content.Server/Atmos/ExcitedGroup.cs +++ b/Content.Shared/Atmos/ExcitedGroup.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Atmos; +namespace Content.Shared.Atmos; /// /// Internal Atmospherics class that stores data about a group of s diff --git a/Content.Server/Atmos/Hotspot.cs b/Content.Shared/Atmos/Hotspot.cs similarity index 98% rename from Content.Server/Atmos/Hotspot.cs rename to Content.Shared/Atmos/Hotspot.cs index 2783362c312..5dad064df4b 100644 --- a/Content.Server/Atmos/Hotspot.cs +++ b/Content.Shared/Atmos/Hotspot.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Atmos; +namespace Content.Shared.Atmos; /// /// Internal Atmospherics struct that stores data about a hotspot in a tile. diff --git a/Content.Server/Atmos/MonstermosInfo.cs b/Content.Shared/Atmos/MonstermosInfo.cs similarity index 98% rename from Content.Server/Atmos/MonstermosInfo.cs rename to Content.Shared/Atmos/MonstermosInfo.cs index 67995b5fb54..7b4b8b13470 100644 --- a/Content.Server/Atmos/MonstermosInfo.cs +++ b/Content.Shared/Atmos/MonstermosInfo.cs @@ -1,6 +1,4 @@ -using Content.Shared.Atmos; - -namespace Content.Server.Atmos; +namespace Content.Shared.Atmos; /// /// Atmospherics class that stores data on tiles for Monstermos calculations and operations. diff --git a/Content.Server/Atmos/Serialization/TileAtmosCollectionSerializer.cs b/Content.Shared/Atmos/Serialization/TileAtmosCollectionSerializer.cs similarity index 99% rename from Content.Server/Atmos/Serialization/TileAtmosCollectionSerializer.cs rename to Content.Shared/Atmos/Serialization/TileAtmosCollectionSerializer.cs index c7f2c9379a0..d99cb3d2100 100644 --- a/Content.Server/Atmos/Serialization/TileAtmosCollectionSerializer.cs +++ b/Content.Shared/Atmos/Serialization/TileAtmosCollectionSerializer.cs @@ -1,5 +1,4 @@ using System.Globalization; -using Content.Shared.Atmos; using Robust.Shared.Serialization; using Robust.Shared.Serialization.Manager; using Robust.Shared.Serialization.Markdown; @@ -10,7 +9,7 @@ using Robust.Shared.Serialization.TypeSerializers.Interfaces; using Robust.Shared.Utility; -namespace Content.Server.Atmos.Serialization; +namespace Content.Shared.Atmos.Serialization; public sealed partial class TileAtmosCollectionSerializer : ITypeSerializer, MappingDataNode>, ITypeCopier> { diff --git a/Content.Server/Atmos/TileAtmosphere.cs b/Content.Shared/Atmos/TileAtmosphere.cs similarity index 93% rename from Content.Server/Atmos/TileAtmosphere.cs rename to Content.Shared/Atmos/TileAtmosphere.cs index eba0df192a5..9b1b5dbd622 100644 --- a/Content.Server/Atmos/TileAtmosphere.cs +++ b/Content.Shared/Atmos/TileAtmosphere.cs @@ -1,15 +1,14 @@ -using Content.Server.Atmos.Components; -using Content.Server.Atmos.EntitySystems; -using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; +using Content.Shared.Atmos.EntitySystems; -namespace Content.Server.Atmos; +namespace Content.Shared.Atmos; /// /// Internal Atmospherics class that stores data on an atmosphere in a single tile. -/// You should not be using these directly outside of . -/// Use the public APIs in instead. +/// You should not be using these directly outside of . +/// Use the public APIs in instead. /// -[Access(typeof(AtmosphereSystem), typeof(GasTileOverlaySystem), typeof(AtmosDebugOverlaySystem))] +[Access(typeof(SharedAtmosphereSystem), typeof(SharedGasTileOverlaySystem), typeof(SharedAtmosDebugOverlaySystem))] public sealed class TileAtmosphere : IGasMixtureHolder { /// @@ -96,7 +95,7 @@ public sealed class TileAtmosphere : IGasMixtureHolder /// Current information for this tile. /// [ViewVariables] - [Access(typeof(AtmosphereSystem), Other = AccessPermissions.ReadExecute)] + [Access(typeof(SharedAtmosphereSystem), Other = AccessPermissions.ReadExecute)] public MonstermosInfo MonstermosInfo; /// @@ -122,7 +121,7 @@ public sealed class TileAtmosphere : IGasMixtureHolder /// Grid entity this tile belongs to. /// [ViewVariables] - [Access(typeof(AtmosphereSystem))] + [Access(typeof(SharedAtmosphereSystem))] public EntityUid GridIndex; /// @@ -142,7 +141,7 @@ public sealed class TileAtmosphere : IGasMixtureHolder /// This can be immutable if the tile is spaced. /// [ViewVariables] - [Access(typeof(AtmosphereSystem), Other = AccessPermissions.ReadExecute)] // FIXME Friends + [Access(typeof(SharedAtmosphereSystem), Other = AccessPermissions.ReadExecute)] // FIXME Friends public GasMixture? Air; /// @@ -202,7 +201,7 @@ GasMixture IGasMixtureHolder.Air /// Cached information about airtight entities on this tile. This gets updated anytime a tile gets invalidated /// (i.e., gets added to ). /// - public AtmosphereSystem.AirtightData AirtightData; + public AirtightData AirtightData; /// /// Creates a new TileAtmosphere. diff --git a/Content.Shared/NodeContainer/NodeGroups/IPipeNet.cs b/Content.Shared/NodeContainer/NodeGroups/IPipeNet.cs new file mode 100644 index 00000000000..e1777f05f20 --- /dev/null +++ b/Content.Shared/NodeContainer/NodeGroups/IPipeNet.cs @@ -0,0 +1,11 @@ +using Content.Shared.Atmos; + +namespace Content.Shared.NodeContainer.NodeGroups; + +public interface IPipeNet : INodeGroup, IGasMixtureHolder +{ + /// + /// Causes gas in the PipeNet to react. + /// + void Update(); +} From 58cab1039c6c0d6aba7ff4c4ce06fefd344cfbba Mon Sep 17 00:00:00 2001 From: Taser <81585596+TaserTheFox@users.noreply.github.com> Date: Sat, 14 Mar 2026 09:21:45 -0700 Subject: [PATCH 516/603] fix bottle reagent localization (#43208) --- .../Specific/Chemistry/chemistry-bottles.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml index 5fe9435f7a8..9b2a13f8236 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Chemistry/chemistry-bottles.yml @@ -160,7 +160,7 @@ parent: BaseChemistryBottleFilled components: - type: Label - currentLabel: reagent-aloxadone + currentLabel: reagent-name-aloxadone - type: SolutionContainerManager solutions: drink: @@ -175,7 +175,7 @@ parent: BaseChemistryBottleFilled components: - type: Label - currentLabel: reagent-ambuzol + currentLabel: reagent-name-ambuzol - type: SolutionContainerManager solutions: drink: @@ -190,7 +190,7 @@ parent: BaseChemistryBottleFilled components: - type: Label - currentLabel: reagent-ambuzol-plus + currentLabel: reagent-name-ambuzol-plus - type: SolutionContainerManager solutions: drink: @@ -220,7 +220,7 @@ parent: BaseChemistryBottleFilled components: - type: Label - currentLabel: reagent-barozine + currentLabel: reagent-name-barozine - type: SolutionContainerManager solutions: drink: @@ -250,7 +250,7 @@ parent: BaseChemistryBottleFilled components: - type: Label - currentLabel: reagent-bruizine + currentLabel: reagent-name-bruizine - type: SolutionContainerManager solutions: drink: @@ -265,7 +265,7 @@ parent: BaseChemistryBottleFilled components: - type: Label - currentLabel: reagent-cognizine + currentLabel: reagent-name-cognizine - type: SolutionContainerManager solutions: drink: @@ -625,7 +625,7 @@ parent: BaseChemistryBottleFilled components: - type: Label - currentLabel: reagent-oculine + currentLabel: reagent-name-oculine - type: SolutionContainerManager solutions: drink: @@ -655,7 +655,7 @@ parent: BaseChemistryBottleFilled components: - type: Label - currentLabel: reagent-opporozidone + currentLabel: reagent-name-opporozidone - type: SolutionContainerManager solutions: drink: @@ -850,7 +850,7 @@ parent: BaseChemistryBottleFilled components: - type: Label - currentLabel: reagent-tranexamic-acid + currentLabel: reagent-name-tranexamic-acid - type: SolutionContainerManager solutions: drink: From e105237e1e44b0989f89353cc32c0bc4f3911ab2 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 14 Mar 2026 16:22:54 +0000 Subject: [PATCH 517/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 2c0b68fbbc0..d610f8d727a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: kontakt - changes: - - message: Bulldog magazines are now only accessible through emagged fabricators. - type: Tweak - id: 9062 - time: '2025-10-09T14:00:07.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40790 - author: Princess-Cheeseballs changes: - message: The thieving beacon can now detect the officer's handgun objective. @@ -4007,3 +4000,10 @@ id: 9572 time: '2026-03-13T23:48:43.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43229 +- author: TaserTheFox + changes: + - message: Fixed certain bottled reagents not having localization text. + type: Fix + id: 9573 + time: '2026-03-14T16:21:45.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43208 From 2cbc8575f786cfa7eaa70b60ec8e3c26c53e38c5 Mon Sep 17 00:00:00 2001 From: Crude Oil <124208219+CroilBird@users.noreply.github.com> Date: Sat, 14 Mar 2026 17:32:16 +0100 Subject: [PATCH 518/603] Fix missing word from emitter alerts (#43225) * fix emitter yapping * use actual locid objects --- .../EntitySystems/EmitterSystem.cs | 15 +++++---- .../Components/SharedEmitterComponent.cs | 32 ++++++++++++++++++- .../components/emitter-component.ftl | 6 ++-- 3 files changed, 42 insertions(+), 11 deletions(-) diff --git a/Content.Server/Singularity/EntitySystems/EmitterSystem.cs b/Content.Server/Singularity/EntitySystems/EmitterSystem.cs index 84a2307f589..6905b38b436 100644 --- a/Content.Server/Singularity/EntitySystems/EmitterSystem.cs +++ b/Content.Server/Singularity/EntitySystems/EmitterSystem.cs @@ -174,7 +174,7 @@ public void PowerOff(EntityUid uid, EmitterComponent component) return; } - AlertRadio((uid, component), "unpowered"); + AlertRadio((uid, component), component.LocUnpowered); component.IsPowered = false; @@ -302,22 +302,23 @@ private void OnDestructionAttempted(Entity ent, ref Destructio // warn engineering their containment engine needs IMMEDIATE repairs // this doesn't change much for natural loosing through emitter destruction given any meteor warning serves the same purpose // can also be used to scare engineering though given it broadcasts its location you need a renamed station beacon to really scare them - AlertRadio(ent, "destroyed"); + AlertRadio(ent, ent.Comp.LocDestroyed); } private void OnDeconstructed(Entity ent, ref MachineDeconstructedEvent args) { // right now you don't even need to unlock the emitter to deconstruct it. that's almost certainly a bug but even without it it probably still needs an alert - AlertRadio(ent, "deconstructed"); + AlertRadio(ent, ent.Comp.LocDeconstructed); } - private void AlertRadio(Entity ent, string type) + private void AlertRadio(Entity ent, string locString) { if (!ent.Comp.AlertRadio || !ent.Comp.IsOn || !ent.Comp.IsPowered) return; // APEs do not need to scream over engineering radio, and an emitter that is off is probably not going to be alerting radios - var message = Loc.GetString("emitter-" + type + "-broadcast", - ("location", FormattedMessage.RemoveMarkupOrThrow(_navMap.GetNearestBeaconString(ent.Owner))) + var message = Loc.GetString( + locString, + ("location", FormattedMessage.RemoveMarkupOrThrow(_navMap.GetNearestBeaconString(ent.Owner))) ); _radio.SendRadioMessage(ent.Owner, message, ent.Comp.RadioChannel, ent.Owner); } @@ -327,7 +328,7 @@ private void OnLockToggled(Entity ent, ref LockToggledEvent ar if (args.Locked) return; - AlertRadio(ent, "unlocked"); + AlertRadio(ent, ent.Comp.LocUnlocked); } } } diff --git a/Content.Shared/Singularity/Components/SharedEmitterComponent.cs b/Content.Shared/Singularity/Components/SharedEmitterComponent.cs index b3ea3a644f1..7a2bc24a95b 100644 --- a/Content.Shared/Singularity/Components/SharedEmitterComponent.cs +++ b/Content.Shared/Singularity/Components/SharedEmitterComponent.cs @@ -98,11 +98,41 @@ public sealed partial class EmitterComponent : Component [DataField] public Dictionary, EntProtoId> SetTypePorts = new(); + /// + /// The radio channel to broadcast on when something happens to this emitter + /// [DataField] public ProtoId RadioChannel = "Engineering"; + /// + /// Whether a radio channel should be alerted if anything happens to this emitter (i.e. emitters near singularity/tesla containment) + /// + [DataField] + public bool AlertRadio = false; + + /// + /// Localized string to use when this emitter is destroyed and AlertRadio is set to true + /// + [DataField] + public LocId LocDestroyed = "emitter-destroyed-broadcast"; + + /// + /// Localized string to use when this emitter is deconstructed and AlertRadio is set to true + /// + [DataField] + public LocId LocDeconstructed = "emitter-deconstructed-broadcast"; + + /// + /// Localized string to use when this emitter is unlocked and AlertRadio is set to true + /// + [DataField] + public LocId LocUnlocked = "emitter-unlocked-broadcast"; + + /// + /// Localized string to use when this emitter is unpowered and AlertRadio is set to true + /// [DataField] - public bool AlertRadio = false; // is this emitter critical to the station to the point a radio channel should be alerted if anything happens to it (i.e. emitters near singularity/tesla containment) + public LocId LocUnpowered = "emitter-unpowered-broadcast"; } [NetSerializable, Serializable] diff --git a/Resources/Locale/en-US/singularity/components/emitter-component.ftl b/Resources/Locale/en-US/singularity/components/emitter-component.ftl index b077c63d0f3..24b98b6c594 100644 --- a/Resources/Locale/en-US/singularity/components/emitter-component.ftl +++ b/Resources/Locale/en-US/singularity/components/emitter-component.ftl @@ -15,6 +15,6 @@ emitter-component-current-type = The current selected type is: [color=yellow]{$t emitter-component-type-set = Type set to: {$type} emitter-destroyed-broadcast = A powered emitter {$location} has been destroyed. -emitter-deconstructed-broadcast = A powered {$location} has been deconstructed. -emitter-unlocked-broadcast = A powered {$location} has been unlocked. -emitter-unpowered-broadcast = A powered {$location} has lost power. +emitter-deconstructed-broadcast = A powered emitter {$location} has been deconstructed. +emitter-unlocked-broadcast = A powered emitter {$location} has been unlocked. +emitter-unpowered-broadcast = A powered emitter {$location} has lost power. From e49d36a88e20732755c524be946c1754622f897b Mon Sep 17 00:00:00 2001 From: SnappingOpossum Date: Sun, 15 Mar 2026 03:32:35 +1100 Subject: [PATCH 519/603] Make EntityTableSpawner spawn relative to grid instead of map (#43234) --- .../Spawners/EntitySystems/ConditionalSpawnerSystem.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs b/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs index 96deb70b47b..2a394eba227 100644 --- a/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs +++ b/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs @@ -127,15 +127,16 @@ private void Spawn(Entity ent) return; var coords = Transform(ent).Coordinates; + var offset = ent.Comp.Offset; var spawns = _entityTable.GetSpawns(ent.Comp.Table); foreach (var proto in spawns) { - var xOffset = _robustRandom.NextFloat(-ent.Comp.Offset, ent.Comp.Offset); - var yOffset = _robustRandom.NextFloat(-ent.Comp.Offset, ent.Comp.Offset); + var xOffset = _robustRandom.NextFloat(-offset, offset); + var yOffset = _robustRandom.NextFloat(-offset, offset); var trueCoords = coords.Offset(new Vector2(xOffset, yOffset)); - SpawnAtPosition(proto, trueCoords); + SpawnAttachedTo(proto, trueCoords); } } } From fe8f5f2d41d22b43f893ffd7fbe0e343aa474c91 Mon Sep 17 00:00:00 2001 From: themias <89101928+themias@users.noreply.github.com> Date: Sat, 14 Mar 2026 12:33:38 -0400 Subject: [PATCH 520/603] Add a holy light effect to bible healing (#43189) * save * remove unneeded event * Revert "remove unneeded event" This reverts commit 779ec783094144ca978a5e9d111235e29539e8a3. Revert "save" This reverts commit f88e0ab18b253915f5efde5886a4701a73ffa35a. * Use simple light effect entities with TimedDespawn --- Content.Server/Bible/BibleSystem.cs | 4 ++++ .../Bible/Components/BibleComponent.cs | 6 +++++ .../Objects/Specific/Chapel/bibles.yml | 24 +++++++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/Content.Server/Bible/BibleSystem.cs b/Content.Server/Bible/BibleSystem.cs index 813d808dbc6..5ce37276b78 100644 --- a/Content.Server/Bible/BibleSystem.cs +++ b/Content.Server/Bible/BibleSystem.cs @@ -15,6 +15,7 @@ using Content.Shared.Timing; using Content.Shared.Verbs; using Robust.Shared.Audio.Systems; +using Robust.Shared.Map; using Robust.Shared.Player; using Robust.Shared.Random; @@ -145,6 +146,9 @@ private void OnAfterInteract(EntityUid uid, BibleComponent component, AfterInter _audio.PlayPvs(component.HealSoundPath, args.User); _delay.TryResetDelay((uid, useDelay)); + + if (component.HealingLightEffect.HasValue) + Spawn(component.HealingLightEffect.Value, new EntityCoordinates(args.Target.Value, default)); } else { diff --git a/Content.Server/Bible/Components/BibleComponent.cs b/Content.Server/Bible/Components/BibleComponent.cs index 7f4af569e5f..af600158e93 100644 --- a/Content.Server/Bible/Components/BibleComponent.cs +++ b/Content.Server/Bible/Components/BibleComponent.cs @@ -53,5 +53,11 @@ public sealed partial class BibleComponent : Component [DataField("locPrefix")] public string LocPrefix = "bible"; + + /// + /// A short light effect to display when successfully healing someone + /// + [DataField] + public EntProtoId? HealingLightEffect = "HolyLightEffect"; } } diff --git a/Resources/Prototypes/Entities/Objects/Specific/Chapel/bibles.yml b/Resources/Prototypes/Entities/Objects/Specific/Chapel/bibles.yml index 0fb3f1a04bc..2639dac99e7 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Chapel/bibles.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Chapel/bibles.yml @@ -83,6 +83,7 @@ failChance: 0 locPrefix: "necro" healSound: "/Audio/Effects/lightburn.ogg" + healingLightEffect: EvilLightEffect - type: Summonable specialItem: SpawnPointGhostCerberus respawnTime: 300 @@ -168,3 +169,26 @@ sprite: Objects/Specific/Chapel/ratvartablet.rsi - type: Item sprite: Objects/Specific/Chapel/ratvartablet.rsi + +- type: entity + id: HolyLightEffect + categories: [ HideSpawnMenu ] + components: + - type: PointLight + enabled: true + radius: 1.5 + energy: 20 + color: lightgoldenrodyellow + netsync: false + - type: LightFade + duration: 0.7 + - type: TimedDespawn + lifetime: 0.7 + +- type: entity + id: EvilLightEffect + categories: [ HideSpawnMenu ] + parent: HolyLightEffect + components: + - type: PointLight + color: red From 23aa4c95e4f1daf7ea8e5a3cf90f3318a12bba64 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 14 Mar 2026 16:33:45 +0000 Subject: [PATCH 521/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index d610f8d727a..2d8418280a2 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,18 +1,4 @@ Entries: -- author: Princess-Cheeseballs - changes: - - message: The thieving beacon can now detect the officer's handgun objective. - type: Fix - id: 9063 - time: '2025-10-10T04:59:26.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40811 -- author: Hitlinemoss - changes: - - message: The Paladin AI lawset has been rewritten. - type: Tweak - id: 9064 - time: '2025-10-10T12:41:57.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40343 - author: kontakt changes: - message: Ninjas can now have a bombing target at any warp point. @@ -4007,3 +3993,18 @@ id: 9573 time: '2026-03-14T16:21:45.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43208 +- author: Crude Oil + changes: + - message: Fixed some emitter alerts missing the word "emitter" + type: Fix + id: 9574 + time: '2026-03-14T16:32:16.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43225 +- author: SnappingOpossum + changes: + - message: Certain randomised items and decorations no longer spawn with the wrong + rotation. + type: Fix + id: 9575 + time: '2026-03-14T16:32:36.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43234 From 6e3338229332e33c3f4a12d526cbb8e233e3e037 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 14 Mar 2026 16:34:51 +0000 Subject: [PATCH 522/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 2d8418280a2..d8139aa7054 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: kontakt - changes: - - message: Ninjas can now have a bombing target at any warp point. - type: Tweak - id: 9065 - time: '2025-10-10T21:27:36.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40726 - author: frigid-dev changes: - message: Ore Crabs now collide with the player if mob collisions are enabled. @@ -4008,3 +4001,10 @@ id: 9575 time: '2026-03-14T16:32:36.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43234 +- author: themias + changes: + - message: Healing with a holy book now gives off a holy light. + type: Tweak + id: 9576 + time: '2026-03-14T16:33:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43189 From 93dccc34c58f9c06f79ce0d95b2f13d8806d83f8 Mon Sep 17 00:00:00 2001 From: Moony Date: Sat, 14 Mar 2026 18:37:02 +0100 Subject: [PATCH 523/603] Content-side IRobustRandom cleanup. (#43231) * Content-side fixes for engine IRobustRandom rejig. * Define for ensuring SetSeed works. * Poke. * Poke * Poke. --- Content.Benchmarks/Content.Benchmarks.csproj | 1 + Content.Server/Cargo/Systems/CargoSystem.Orders.cs | 1 + .../Thresholds/Behaviors/WeightedSpawnEntityBehavior.cs | 1 + Content.Server/NPC/Systems/NPCSteeringSystem.Context.cs | 1 + Content.Server/NPC/Systems/NPCSteeringSystem.Obstacles.cs | 1 + Content.Server/Salvage/SalvageSystem.Magnet.cs | 1 + .../Shuttles/Systems/EmergencyShuttleSystem.Console.cs | 1 + Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs | 1 + Content.Server/StationEvents/Events/BluespaceLockerRule.cs | 1 + Content.Server/StationEvents/Events/BreakerFlipRule.cs | 1 + Content.Server/StationEvents/Events/PowerGridCheckRule.cs | 1 + Content.Server/StationEvents/Events/SpaceSpawnRule.cs | 1 + Content.Server/StationEvents/Events/StationEventSystem.cs | 1 + Content.Server/Weapons/Ranged/Systems/GunSystem.cs | 1 + Content.Shared/Trigger/Systems/TriggerSystem.Timer.cs | 1 + 15 files changed, 15 insertions(+) diff --git a/Content.Benchmarks/Content.Benchmarks.csproj b/Content.Benchmarks/Content.Benchmarks.csproj index 8d4dfa31bd6..dd0b760f4ad 100644 --- a/Content.Benchmarks/Content.Benchmarks.csproj +++ b/Content.Benchmarks/Content.Benchmarks.csproj @@ -7,6 +7,7 @@ true false disable + $(DefineConstants);ALLOW_BAD_PRACTICES diff --git a/Content.Server/Cargo/Systems/CargoSystem.Orders.cs b/Content.Server/Cargo/Systems/CargoSystem.Orders.cs index 0b5f0155937..baa436c41b2 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.Orders.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.Orders.cs @@ -18,6 +18,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Timing; using Robust.Shared.Utility; +using Robust.Shared.Random; namespace Content.Server.Cargo.Systems { diff --git a/Content.Server/Destructible/Thresholds/Behaviors/WeightedSpawnEntityBehavior.cs b/Content.Server/Destructible/Thresholds/Behaviors/WeightedSpawnEntityBehavior.cs index 4a275ac8958..2e04971972c 100644 --- a/Content.Server/Destructible/Thresholds/Behaviors/WeightedSpawnEntityBehavior.cs +++ b/Content.Server/Destructible/Thresholds/Behaviors/WeightedSpawnEntityBehavior.cs @@ -7,6 +7,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Robust.Shared.Spawners; +using Robust.Shared.Random; namespace Content.Server.Destructible.Thresholds.Behaviors; diff --git a/Content.Server/NPC/Systems/NPCSteeringSystem.Context.cs b/Content.Server/NPC/Systems/NPCSteeringSystem.Context.cs index c083be6134f..40a3b43ea67 100644 --- a/Content.Server/NPC/Systems/NPCSteeringSystem.Context.cs +++ b/Content.Server/NPC/Systems/NPCSteeringSystem.Context.cs @@ -12,6 +12,7 @@ using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using ClimbingComponent = Content.Shared.Climbing.Components.ClimbingComponent; +using Robust.Shared.Random; namespace Content.Server.NPC.Systems; diff --git a/Content.Server/NPC/Systems/NPCSteeringSystem.Obstacles.cs b/Content.Server/NPC/Systems/NPCSteeringSystem.Obstacles.cs index a31c7850f38..e0886f141a0 100644 --- a/Content.Server/NPC/Systems/NPCSteeringSystem.Obstacles.cs +++ b/Content.Server/NPC/Systems/NPCSteeringSystem.Obstacles.cs @@ -12,6 +12,7 @@ using Robust.Shared.Utility; using ClimbableComponent = Content.Shared.Climbing.Components.ClimbableComponent; using ClimbingComponent = Content.Shared.Climbing.Components.ClimbingComponent; +using Robust.Shared.Random; namespace Content.Server.NPC.Systems; diff --git a/Content.Server/Salvage/SalvageSystem.Magnet.cs b/Content.Server/Salvage/SalvageSystem.Magnet.cs index ee5cd792c69..9133f1239b6 100644 --- a/Content.Server/Salvage/SalvageSystem.Magnet.cs +++ b/Content.Server/Salvage/SalvageSystem.Magnet.cs @@ -9,6 +9,7 @@ using Robust.Shared.Exceptions; using Robust.Shared.Map; using Robust.Shared.Prototypes; +using Robust.Shared.Random; namespace Content.Server.Salvage; diff --git a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs index 95d638dec73..3b28d007f6d 100644 --- a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs +++ b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs @@ -16,6 +16,7 @@ using Robust.Shared.Player; using Robust.Shared.Prototypes; using Timer = Robust.Shared.Timing.Timer; +using Robust.Shared.Random; namespace Content.Server.Shuttles.Systems; diff --git a/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs b/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs index 0705944c35d..54bfdbad140 100644 --- a/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs +++ b/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs @@ -24,6 +24,7 @@ using Robust.Shared.Player; using Robust.Shared.Utility; using FTLMapComponent = Content.Shared.Shuttles.Components.FTLMapComponent; +using Robust.Shared.Random; namespace Content.Server.Shuttles.Systems; diff --git a/Content.Server/StationEvents/Events/BluespaceLockerRule.cs b/Content.Server/StationEvents/Events/BluespaceLockerRule.cs index 5e0ce6eb676..1fe8f1f0389 100644 --- a/Content.Server/StationEvents/Events/BluespaceLockerRule.cs +++ b/Content.Server/StationEvents/Events/BluespaceLockerRule.cs @@ -6,6 +6,7 @@ using Content.Shared.Station.Components; using Content.Shared.Storage.Components; using Content.Shared.GameTicking.Components; +using Robust.Shared.Random; namespace Content.Server.StationEvents.Events; diff --git a/Content.Server/StationEvents/Events/BreakerFlipRule.cs b/Content.Server/StationEvents/Events/BreakerFlipRule.cs index 3ab9fbd2092..745db7a0cde 100644 --- a/Content.Server/StationEvents/Events/BreakerFlipRule.cs +++ b/Content.Server/StationEvents/Events/BreakerFlipRule.cs @@ -4,6 +4,7 @@ using Content.Shared.GameTicking.Components; using Content.Shared.Station.Components; using JetBrains.Annotations; +using Robust.Shared.Random; namespace Content.Server.StationEvents.Events; diff --git a/Content.Server/StationEvents/Events/PowerGridCheckRule.cs b/Content.Server/StationEvents/Events/PowerGridCheckRule.cs index 3a86f694ab8..b0cc0bc9932 100644 --- a/Content.Server/StationEvents/Events/PowerGridCheckRule.cs +++ b/Content.Server/StationEvents/Events/PowerGridCheckRule.cs @@ -9,6 +9,7 @@ using Robust.Shared.Player; using Robust.Shared.Utility; using Timer = Robust.Shared.Timing.Timer; +using Robust.Shared.Random; namespace Content.Server.StationEvents.Events { diff --git a/Content.Server/StationEvents/Events/SpaceSpawnRule.cs b/Content.Server/StationEvents/Events/SpaceSpawnRule.cs index 08e43b4c68d..9453477bd62 100644 --- a/Content.Server/StationEvents/Events/SpaceSpawnRule.cs +++ b/Content.Server/StationEvents/Events/SpaceSpawnRule.cs @@ -3,6 +3,7 @@ using Content.Shared.GameTicking.Components; using Robust.Shared.Map; using Robust.Shared.Map.Components; +using Robust.Shared.Random; namespace Content.Server.StationEvents.Events; diff --git a/Content.Server/StationEvents/Events/StationEventSystem.cs b/Content.Server/StationEvents/Events/StationEventSystem.cs index aaa48a482ec..e0ec1328bea 100644 --- a/Content.Server/StationEvents/Events/StationEventSystem.cs +++ b/Content.Server/StationEvents/Events/StationEventSystem.cs @@ -9,6 +9,7 @@ using Robust.Shared.Audio.Systems; using Robust.Shared.Player; using Robust.Shared.Prototypes; +using Robust.Shared.Random; namespace Content.Server.StationEvents.Events; diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.cs index 53db706d6e6..910bd719bae 100644 --- a/Content.Server/Weapons/Ranged/Systems/GunSystem.cs +++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.cs @@ -17,6 +17,7 @@ using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Utility; +using Robust.Shared.Random; namespace Content.Server.Weapons.Ranged.Systems; diff --git a/Content.Shared/Trigger/Systems/TriggerSystem.Timer.cs b/Content.Shared/Trigger/Systems/TriggerSystem.Timer.cs index 179b04af93a..39b78643163 100644 --- a/Content.Shared/Trigger/Systems/TriggerSystem.Timer.cs +++ b/Content.Shared/Trigger/Systems/TriggerSystem.Timer.cs @@ -2,6 +2,7 @@ using Content.Shared.Trigger.Components.Triggers; using Content.Shared.Examine; using Content.Shared.Verbs; +using Robust.Shared.Random; namespace Content.Shared.Trigger.Systems; From fbed18b1648b8eea3ca05fa4fba6108f88d1230a Mon Sep 17 00:00:00 2001 From: B_Kirill <153602297+B-Kirill@users.noreply.github.com> Date: Sun, 15 Mar 2026 07:17:14 +1000 Subject: [PATCH 524/603] Cleanup warnings: CS0168, CS0414 (#43198) * Cleanup warnings: CS0168, CS0414 * That was the right thing to do * Please tell me that this is a random fail * ... * last try * revert --- Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs b/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs index 0bc75d9e631..14c2ae67d3e 100644 --- a/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs +++ b/Content.Shared/DoAfter/SharedDoAfterSystem.Update.cs @@ -10,8 +10,10 @@ namespace Content.Shared.DoAfter; public abstract partial class SharedDoAfterSystem : EntitySystem { [Dependency] private readonly IDynamicTypeFactory _factory = default!; +#if EXCEPTION_TOLERANCE [Dependency] private readonly INetManager _netManager = default!; [Dependency] private readonly IRuntimeLog _runtimeLog = default!; +#endif [Dependency] private readonly SharedGravitySystem _gravity = default!; [Dependency] private readonly SharedInteractionSystem _interaction = default!; [Dependency] private readonly SharedHandsSystem _hands = default!; @@ -35,7 +37,11 @@ public override void Update(float frameTime) Update(uid, active, comp, time, xformQuery, handsQuery); } // ReSharper disable once RedundantCatchClause +#if EXCEPTION_TOLERANCE catch (Exception e) +#else + catch (Exception) +#endif { #if EXCEPTION_TOLERANCE // Doafter in question failed to complete.. @@ -158,7 +164,7 @@ private bool TryAttemptEvent(DoAfter doAfter) else RaiseLocalEvent(doAfter.AttemptEvent); - var ev = (CancellableEntityEventArgs) doAfter.AttemptEvent; + var ev = (CancellableEntityEventArgs)doAfter.AttemptEvent; if (!ev.Cancelled) return true; @@ -200,7 +206,7 @@ private bool ShouldCancel(DoAfter doAfter, if (args.Used is { } used && !xformQuery.HasComponent(used)) return true; - if (args.EventTarget is {Valid: true} eventTarget && !xformQuery.HasComponent(eventTarget)) + if (args.EventTarget is { Valid: true } eventTarget && !xformQuery.HasComponent(eventTarget)) return true; if (!xformQuery.TryGetComponent(args.User, out var userXform)) @@ -265,7 +271,7 @@ private bool ShouldCancel(DoAfter doAfter, // If an item was in the user's hand to begin with, // check if the user is no longer holding the item. if (args.BreakOnDropItem && doAfter.InitialItem != null && !_hands.IsHolding((args.User, hands), doAfter.InitialItem)) - return true; + return true; // If the user changes which hand is active at all, interrupt the do-after if (args.BreakOnHandChange && hands.ActiveHandId != doAfter.InitialHand) From 4ab475ad0b1986f4609d07f62978208f1e6fed94 Mon Sep 17 00:00:00 2001 From: Bea Date: Sat, 14 Mar 2026 19:47:57 -0400 Subject: [PATCH 525/603] On Exo, fixed power for AI North and South external cameras (#43143) * Added LV cable for AI North and South external cameras * Removed 2 unnecessary LV cables. --- Resources/Maps/exo.yml | 150 ++++++++++++++++++++++++----------------- 1 file changed, 89 insertions(+), 61 deletions(-) diff --git a/Resources/Maps/exo.yml b/Resources/Maps/exo.yml index 7a5e30ae97b..fd18e8c77a0 100644 --- a/Resources/Maps/exo.yml +++ b/Resources/Maps/exo.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 268.0.0 + engineVersion: 272.0.0 forkId: "" forkVersion: "" - time: 11/27/2025 13:04:13 - entityCount: 20042 + time: 03/08/2026 15:02:53 + entityCount: 20047 maps: - 1 grids: @@ -4710,10 +4710,10 @@ entities: 0: 51711 8,-16: 0: 271 - 4: 17408 + 2: 17408 8,-15: 1: 4096 - 4: 4 + 2: 4 8,-14: 0: 32752 8,-13: @@ -5409,8 +5409,8 @@ entities: 0: 65535 9,-16: 0: 15 - 5: 4352 - 2: 17408 + 3: 4352 + 4: 17408 10,-20: 0: 65280 10,-19: @@ -5421,8 +5421,8 @@ entities: 0: 65535 10,-16: 0: 15 - 2: 4352 - 6: 17408 + 4: 4352 + 5: 17408 11,-20: 0: 65024 11,-19: @@ -5434,7 +5434,7 @@ entities: 11,-16: 0: 15 1: 35840 - 2: 4352 + 4: 4352 12,-20: 0: 65280 12,-19: @@ -5468,7 +5468,7 @@ entities: 0: 61183 12,-16: 0: 7 - 2: 2184 + 4: 2184 1: 8960 13,-20: 0: 65024 @@ -5482,7 +5482,7 @@ entities: 13,-21: 1: 16179 13,-16: - 2: 819 + 4: 819 1: 8 14,-20: 0: 53504 @@ -5682,7 +5682,7 @@ entities: 0: 59392 11,-15: 1: 32904 - 2: 1 + 4: 1 12,-14: 0: 62926 11,-14: @@ -5803,12 +5803,12 @@ entities: 0: 60625 11,-10: 0: 34944 - 3: 13104 + 6: 13104 12,-9: 0: 56784 11,-9: 0: 65416 - 3: 2 + 6: 2 12,-8: 0: 57117 13,-11: @@ -5954,7 +5954,7 @@ entities: 10,-11: 0: 65535 10,-10: - 3: 65520 + 6: 65520 0: 4 10,-13: 0: 12276 @@ -6017,14 +6017,14 @@ entities: 11,-3: 1: 12288 9,-15: - 5: 1 - 2: 4 + 3: 1 + 4: 4 1: 32768 9,-14: 0: 36848 10,-15: - 2: 1 - 6: 4 + 4: 1 + 5: 4 10,-14: 0: 65520 -8,-24: @@ -6109,14 +6109,6 @@ entities: - volume: 2500 immutable: True moles: {} - - volume: 2500 - temperature: 293.15 - moles: {} - - volume: 2500 - temperature: 235 - moles: - Oxygen: 27.225372 - Nitrogen: 102.419266 - volume: 2500 temperature: 293.15 moles: @@ -6125,16 +6117,27 @@ entities: temperature: 293.15 moles: Nitrogen: 6666.982 + - volume: 2500 + temperature: 293.15 + moles: {} - volume: 2500 temperature: 293.15 moles: Plasma: 6666.982 + - volume: 2500 + temperature: 235 + moles: + Oxygen: 27.225372 + Nitrogen: 102.419266 chunkSize: 4 - type: GasTileOverlay - type: RadiationGridResistance - type: BecomesStation id: Exo - type: ImplicitRoof + - type: TileHistory + chunkHistory: {} + - type: ExplosionAirtightGrid - proto: ActionStethoscope entities: - uid: 6661 @@ -10163,7 +10166,7 @@ entities: pos: 11.5,-30.5 parent: 2 - type: Door - secondsUntilStateChange: -260188.22 + secondsUntilStateChange: -260311.42 state: Opening - type: DeviceLinkSource lastSignals: @@ -10519,7 +10522,7 @@ entities: pos: 34.5,-36.5 parent: 2 - type: Door - secondsUntilStateChange: -35685.906 + secondsUntilStateChange: -35809.105 state: Opening - type: DeviceLinkSource lastSignals: @@ -12957,28 +12960,6 @@ entities: parent: 2 - type: Fixtures fixtures: {} -- proto: BaseChemistryEmptyVial - entities: - - uid: 10854 - components: - - type: Transform - pos: 68.31389,-65.30021 - parent: 2 - - uid: 11687 - components: - - type: Transform - pos: 66.68898,-62.46224 - parent: 2 - - uid: 17573 - components: - - type: Transform - pos: 2.7538347,-79.28584 - parent: 2 - - uid: 17574 - components: - - type: Transform - pos: 3.0350847,-79.36402 - parent: 2 - proto: BaseComputer entities: - uid: 6692 @@ -27632,6 +27613,31 @@ entities: - type: Transform pos: 2.5,-62.5 parent: 2 + - uid: 19379 + components: + - type: Transform + pos: 92.5,-40.5 + parent: 2 + - uid: 19380 + components: + - type: Transform + pos: 92.5,-39.5 + parent: 2 + - uid: 19392 + components: + - type: Transform + pos: 92.5,-50.5 + parent: 2 + - uid: 19398 + components: + - type: Transform + pos: 92.5,-50.5 + parent: 2 + - uid: 19418 + components: + - type: Transform + pos: 92.5,-51.5 + parent: 2 - uid: 19489 components: - type: Transform @@ -43010,6 +43016,28 @@ entities: - type: Transform pos: 66.50148,-63.087673 parent: 2 +- proto: ChemistryEmptyVial + entities: + - uid: 10854 + components: + - type: Transform + pos: 68.31389,-65.30021 + parent: 2 + - uid: 11687 + components: + - type: Transform + pos: 66.68898,-62.46224 + parent: 2 + - uid: 17573 + components: + - type: Transform + pos: 2.7538347,-79.28584 + parent: 2 + - uid: 17574 + components: + - type: Transform + pos: 3.0350847,-79.36402 + parent: 2 - proto: ChemistryHotplate entities: - uid: 3599 @@ -81194,7 +81222,7 @@ entities: - type: Transform pos: -38.5,-52.5 parent: 2 -- proto: GlowstickBase +- proto: GlowstickGreen entities: - uid: 9321 components: @@ -86545,7 +86573,7 @@ entities: - type: Transform pos: 33.63159,-78.45598 parent: 2 -- proto: HandheldHealthAnalyzerUnpowered +- proto: HandheldHealthAnalyzer entities: - uid: 5242 components: @@ -89737,6 +89765,13 @@ entities: - type: Transform pos: 82.48561,-72.595604 parent: 2 +- proto: OrganSkeletonPersonTorso + entities: + - uid: 7331 + components: + - type: Transform + pos: 78.98892,-25.47695 + parent: 2 - proto: OxygenCanister entities: - uid: 2306 @@ -108800,13 +108835,6 @@ entities: - type: Transform pos: 45.350067,-73.39173 parent: 2 -- proto: TorsoSkeleton - entities: - - uid: 7331 - components: - - type: Transform - pos: 78.98892,-25.47695 - parent: 2 - proto: Tourniquet entities: - uid: 10855 From 4e6bf98aace6e2f990b4b2eb841e660bf35b0c2c Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 15 Mar 2026 00:04:00 +0000 Subject: [PATCH 526/603] Automatic changelog update --- Resources/Changelog/Maps.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Maps.yml b/Resources/Changelog/Maps.yml index 7de5017effe..8aac91ad688 100644 --- a/Resources/Changelog/Maps.yml +++ b/Resources/Changelog/Maps.yml @@ -1062,4 +1062,12 @@ id: 129 time: '2026-03-07T20:26:06.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43102 +- author: Sapphic_bee + changes: + - message: On Exo, the AI north and south external cameras are now connected to + power. + type: Fix + id: 130 + time: '2026-03-15T00:02:49.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43143 Order: 2 From 193c0dc32716fae7d900357351aaa07339318bb1 Mon Sep 17 00:00:00 2001 From: InsoPL Date: Sun, 15 Mar 2026 01:53:33 +0100 Subject: [PATCH 527/603] CachedResources for GasTileDangerousTemperatureOverlay (#43032) * init * minifix * that is nullable --------- Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> --- .../GasTileDangerousTemperatureOverlay.cs | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/Content.Client/Atmos/Overlays/GasTileDangerousTemperatureOverlay.cs b/Content.Client/Atmos/Overlays/GasTileDangerousTemperatureOverlay.cs index 69e251d721f..778a2a83b21 100644 --- a/Content.Client/Atmos/Overlays/GasTileDangerousTemperatureOverlay.cs +++ b/Content.Client/Atmos/Overlays/GasTileDangerousTemperatureOverlay.cs @@ -1,4 +1,5 @@ using Content.Client.Atmos.EntitySystems; +using Content.Client.Graphics; using Content.Shared.Atmos; using Content.Shared.Atmos.Components; using Content.Shared.Atmos.EntitySystems; @@ -25,7 +26,8 @@ public sealed class GasTileDangerousTemperatureOverlay : Overlay private readonly SharedTransformSystem _xformSys; private EntityQuery _overlayQuery; - private IRenderTexture? _temperatureTarget; + private readonly OverlayResourceCache _resources = new(); + private List> _grids = new(); // Cache used to transform ThermalByte into Color for overlay private readonly Color[] _colorCache = new Color[256]; @@ -152,10 +154,11 @@ protected override bool BeforeDraw(in OverlayDrawArgs args) var target = args.Viewport.RenderTarget; - if (_temperatureTarget?.Texture.Size != target.Size) + var res = _resources.GetForViewport(args.Viewport, static _ => new CachedResources()); + if (res.TemperatureTarget is null || res.TemperatureTarget.Texture.Size != target.Size) { - _temperatureTarget?.Dispose(); - _temperatureTarget = _clyde.CreateRenderTarget( + res.TemperatureTarget?.Dispose(); + res.TemperatureTarget = _clyde.CreateRenderTarget( target.Size, new RenderTargetFormatParameters(RenderTargetColorFormat.Rgba8Srgb), name: nameof(GasTileDangerousTemperatureOverlay)); @@ -167,16 +170,13 @@ protected override bool BeforeDraw(in OverlayDrawArgs args) var mapId = args.MapId; var worldToViewportLocal = args.Viewport.GetWorldToLocalMatrix(); - var anyGasDrawn = false; - List> grids = new(); - - drawHandle.RenderInRenderTarget(_temperatureTarget, + drawHandle.RenderInRenderTarget(res.TemperatureTarget, () => { - grids.Clear(); - _mapManager.FindGridsIntersecting(mapId, worldAABB, ref grids); + _grids.Clear(); + _mapManager.FindGridsIntersecting(mapId, worldAABB, ref _grids); - foreach (var grid in grids) + foreach (var grid in _grids) { if (!_overlayQuery.TryGetComponent(grid.Owner, out var comp)) continue; @@ -211,8 +211,6 @@ protected override bool BeforeDraw(in OverlayDrawArgs args) if (gasColor.A <= 0f) continue; - anyGasDrawn = true; - drawHandle.DrawRect( Box2.CenteredAround(tilePosition + gridTileCenterVec, gridTileSizeVec), gasColor @@ -225,29 +223,31 @@ protected override bool BeforeDraw(in OverlayDrawArgs args) drawHandle.SetTransform(Matrix3x2.Identity); - if (!anyGasDrawn) - { - _temperatureTarget?.Dispose(); - _temperatureTarget = null; - return false; - } - return true; } protected override void Draw(in OverlayDrawArgs args) { - if (_temperatureTarget is null) - return; + var res = _resources.GetForViewport(args.Viewport, static _ => new CachedResources()); - args.WorldHandle.DrawTextureRect(_temperatureTarget.Texture, args.WorldBounds); + if (res.TemperatureTarget != null) + args.WorldHandle.DrawTextureRect(res.TemperatureTarget.Texture, args.WorldBounds); args.WorldHandle.SetTransform(Matrix3x2.Identity); } protected override void DisposeBehavior() { - _temperatureTarget?.Dispose(); - _temperatureTarget = null; + _resources.Dispose(); base.DisposeBehavior(); } + + private sealed class CachedResources : IDisposable + { + public IRenderTexture? TemperatureTarget; + + public void Dispose() + { + TemperatureTarget?.Dispose(); + } + } } From 05b6ec1862f6723ed94384a826ebd960cb8af590 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 14 Mar 2026 18:09:19 -0700 Subject: [PATCH 528/603] Update Credits (#43241) Co-authored-by: PJBot --- Resources/Credits/GitHub.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Credits/GitHub.txt b/Resources/Credits/GitHub.txt index 905f5540414..344f7a0d673 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -0-Anon, 0leshe, 0tito, 0x6273, 11belowstudio, 12rabbits, 1337dakota, 13spacemen, 154942, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 27alaing, 2DSiggy, 3nderall, 4310v343k, 4dplanner, 5tickman, 612git, 778b, 96flo, aaron, abadaba695, Ablankmann, abregado, Absolute-Potato, Absotively, achookh, Acruid, ActiveMammmoth, actually-reb, ada-please, adamsong, Adeinitas, adm2play, Admiral-Obvious-001, adrian, Adrian16199, Ady4ik, Aearo-Deepwater, Aerocrux, Aeshus, Aexolott, Aexxie, AffleWaffle, africalimedrop, afrokada, AftrLite, AgentSmithRadio, Agoichi, ahandleman, Ahion, aiden, Aidenkrz, aidenkrz, Aisu9, ajcm, AJCM-git, AjexRose, Alekshhh, alexalexmax, alexkar598, AlexMorgan3817, alexum418, alexumandxgabriel08x, Alice4267, Alithsko, Alkheemist, alliephante, ALMv1, Alpaccalypse, Alpha-Two, AlphaQwerty, Altoids1, amatwiedle, amylizzle, Andre19926, Andrew-Fall, AndrewEyeke, AndrewFenriz, AndreyCamper, anri, Anzarot121, ApolloVector, Appiah, april-gras, ar4ill, Arcane-Waffle, archee1, ArchPigeon, ArchRBX, areitpog, Arendian, areyouconfused, arimah, Arkanic, ArkiveDev, armoks, Arteben, arthropodia, ArthurMousatov, ArtisticRoomba, artur, Artxmisery, ArZarLordOfMango, as334, AshBats, AsikKEsel, AsnDen, asperger-sind, aspiringLich, astriloqua, Atakku, Ataman, august-sun, AutoOtter, AverageNotDoingAnythingEnjoyer, avghdev, AwareFoxy, Awlod, Axionyxx, azloserbits, azzyisnothere, AzzyIsNotHere, B-Kirill, B3CKDOOR, baa14453, BackeTako, BadaBoomie, Bakke, BananaFlambe, Baptr0b0t, BarryNorfolk, BasedUser, bebr3ght, beck-thompson, beesterman, bellwetherlogic, ben, benbryant0, benev0, benjamin-burges, BGare, bhespiritu, bibbly, BigfootBravo, BIGZi0348, bingojohnson, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, blitzthesquishy, Blobadoodle, bloodrizer, Bloody2372, blueDev2, Boaz1111, BobdaBiscuit, BobTheSleder, boiled-water-tsar, Bokser815, bolantej, BombasterDS, Booblesnoot42, Boolean-Buckeye, botanySupremist, brainfood1183, BramvanZijp, Brandon-Huu, breeplayx3, BriBrooo, BRINGit34, brndd, bryce0110, BubblegumBlue, buletsponge, buntobaggins, buunie099, bvelliquette, BWTCK, byondfuckery, c0rigin, c4llv07e, CaasGit, Caconym27, Calecute, Callmore, Camdot, cammusubi, capnsockless, CaptainMaru, captainsqrbeard, Carbonhell, Carolyn3114, Carou02, carteblanche4me, catdotjs, catlord, Catofquestionableethics, CatTheSystem, CawsForConcern, CDWimmer, Centronias, Chaboricks, chairbender, chaisftw, Chaoticaa, Charlese2, charlie, chartman, ChaseFlorom, chavonadelal, Cheackraze, CheddaCheez, cheesePizza2, CheesePlated, Chief-Engineer, chillyconmor, christhirtle, chromiumboy, Chronophylos, Chubbicous, Chubbygummibear, Ciac32, ciaran, citrea, civilCornball, claustro305, Clement-O, cloudyias, clyf, Clyybber, CMDR-Piboy314, cnv41, coco, cohanna, Cohnway, Cojoke-dot, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, Compilatron144, CookieMasterT, coolboy911, CoolioDudio, coolmankid12345, Coolsurf6, cooperwallace, corentt, CormosLemming, CrafterKolyan, CraftyRenter, crazybrain23, Crazydave91920, CrazyPhantom779, creadth, CrigCrag, CroilBird, Crotalus, CrudeWax, cryals, CrzyPotato, cubixthree, cutemoongod, Cyberboss, d34d10cc, DaCookieCakes, DadeKuma, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, dan, dangerrevolution, daniel-cr, DanSAussieITS, Daracke, Darkie, DaturoDewitt, david, DawBla, Daxxi3, dch-GH, ddeegan, de0rix, Deahaka, dean, DEATHB4DEFEAT, Deatherd, deathride58, debugok, Decappi, Decortex, Deeeeja, deepdarkdepths, DeepwaterCreations, Deerstop, degradka, Delete69, deltanedas, DenisShvalov, DerbyX, derek, dersheppard, Deserty0, Detintinto, DevilishMilk, devinschubert14, dexlerxd, dffdff2423, DieselMohawk, DieselMohawkTheSequel, digitalic, Dimastra, dimmoon1, DinnerCalzone, DinoWattz, Disp-Dev, DisposableCrewmember42, dissidentbullet, DjfjdfofdjfjD, doc-michael, docnite, Doctor-Cpu, DogZeroX, dolgovmi, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, DR-DOCTOR-EVIL-EVIL, Dragonjspider, dragonryan06, drakewill-CRL, Drayff, dreamlyjack, DrEnzyme, dribblydrone, DrMelon, drongood12, DrSingh, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, DuckManZach, Duddino, dukevanity, duskyjay, Dutch-VanDerLinde, dvir001, dylanstrategie, dylanwhittingham, Dynexust, Easypoller, echo, EchoOfNothing, eclips_e, eden077, EEASAS, Efruit, efzapa, Ekkosangen, ElectroSR, elsie, elthundercloud, Elysium206, emberwinters, Emisse, emmafornash, EmoGarbage404, Endecc, EnrichedCaramel, Entvari, eoineoineoin, ephememory, eris, erohrs2, erorr404v1, Errant-4, ertanic, esguard, estacaoespacialpirata, eternally-confused, eugene, ewokswagger, exincore, exp111, f0x-n3rd, F1restar4, FacePluslll, Fahasor, FairlySadPanda, farrellka-dev, FATFSAAM2, Feluk6174, ficcialfaint, Fiftyllama, Fildrance, fillervk, FinnishPaladin, firenamefn, Firewars763, FirinMaLazors, Fishfish458, fl-oz, Flareguy, flashgnash, FlipBrooke, FluffiestFloof, FluffMe, FluidRock, flymo5678, foboscheshir, FoLoKe, fooberticus, ForestNoises, forgotmyotheraccount, forkeyboards, forthbridge, Fortune117, foxhorn, freeman2651, freeze2222, frobnic8, Froffy025, Fromoriss, froozigiusz, FrostMando, FrostRibbon, Fruitsalad, Funce, FungiFellow, FunkySphere, FunTust, Futuristic-OK, GalacticChimp, gamer3107, Gamewar360, gansulalan, GaussiArson, Gaxeer, gbasood, gcoremans, Geekyhobo, genderGeometries, GeneralGaws, Genkail, Gentleman-Bird, geraeumig, Ghagliiarghii, Git-Nivrak, githubuser508, GitHubUser53123, gituhabu, GlassEclipse, GnarpGnarp, GNF54, godisdeadLOL, goet, GoldenCan, Goldminermac, Golinth, golubgik, GoodWheatley, Gorox221, GR1231, gradientvera, graevy, GraniteSidewalk, GreaseMonk, greenrock64, GreyMario, GrownSamoyedDog, GTRsound, gusxyz, Gyrandola, h3half, hamurlik, Hanzdegloker, HappyRoach, happyrobot33, Hardly3D, harikattar, Hayden, he1acdvv, Hebi, Helix-ctrl, helm4142, Henry, HerCoyote23, Hi-Im-Shot, HighTechPuddle, Hitlinemoss, hiucko, hivehum, Hmeister-fake, Hmeister-real, Hobbitmax, hobnob, HoidC, Holinka4ever, holyssss, HoofedEar, Hoolny, hord-brayden, hoshizora-sayo, Hreno, Hrosts, htmlsystem, Huaqas, hubismal, Hugal31, Hyenh, hyperb1, hyperDelegate, hyphenationc, i-justuser-i, iaada, iacore, IamVelcroboy, Ian321, icekot8, icesickleone, iczero, iglov, IgorAnt028, igorsaux, ike709, illersaver, Illiux, Ilushkins33, Ilya246, IlyaElDunaev, imatsoup, IMCB, impubbi, imrenq, imweax, indeano, Injazz, Insineer, insoPL, IntegerTempest, Interrobang01, Intoxicating-Innocence, IProduceWidgets, itsmethom, Itzbenz, iztokbajcar, Jackal298, Jackrost, JackRyd3r, jacksonzck, JackspajfMain, Jacktastic09, Jackw2As, jacob, jamessimo, janekvap-havok, Jark255, Jarmer123, Jaskanbe, JasperJRoth, jbox144, JCGWE30, jerryimmouse, JerryImMouse, Jessetriesagain, jessicamaybe, JesterX666, Jewelots, Jezithyr, jicksaw, JiimBob, JimGamemaster, jimmy12or, JIPDawg, jjtParadox, jkwookee, jmcb, JohnGinnane, johnjjohn, johnku1, Jophire, Jopogrechkin, joshepvodka, JpegOfAFrog, jproads, JrInventor05, Jrpl, jukereise, juliangiebel, JustArt1m, JustCone14, justdie12, justin, justintether, JustinTrotter, JustinWinningham, justtne, K-Dynamic, k3yw, Kadeo64, Kaga-404, kaiserbirch, KaiShibaa, kalane15, kalanosh, KamTheSythe, Kanashi-Panda, katzenminer, kbailey-git, Keelin, Keer-Sar, KEEYNy, keikiru, Kelrak, kerisargit, keronshb, KeTuFaisPiKiNut, KIBORG04, KieueCaprie, Kimpes, kin98, KingFroozy, kipdotnet, kira-er, kiri-yoshikage, Kirillcas, Kirus59, Kistras, Kit, Kit0vras, KittenColony, Kittygyat, klaypexx, kleinerstation13, Kmc2000, Ko4ergaPunk, kognise, kokoc9n, komunre, KonstantinAngelov, kontakt, korczoczek, koteq, kotobdev, Kowlin, KrasnoshchekovPavel, Krosus777, Krunklehorn, Kryyto, Kupie, kxvvv, Kyoth25f, kyupolaris, kzhanik, LaCumbiaDelCoronavirus, lajolico, Lamrr, lanedon, LankLTE, laok233, lapatison, larryrussian, lawdog4817, Lazzi0706, Le-Arctic-Fox, leahcat, leander-0, leonardo-dabepis, leonidussaks, leonsfriedrich, LeoSantich, lettern, LetterN, Level10Cybermancer, LEVELcat, lever1209, LevitatingTree, Lgibb18, lgruthes, liem161, LightVillet, lilazero, liltenhead, linkbro1, linkuyx, Litraxx, little-meow-meow, LittleBuilderJane, LittleNorthStar, LittleNyanCat, lizelive, ljm862, lmsnoise, localcc, lokachop, lolman360, Lomcastar, Lordbrandon12, LordCarve, LordEclipse, lucas, LucasTheDrgn, luckyshotpictures, LudwigVonChesterfield, luegamer, luizwritescode, LukaSlade, luminight, lunarcomets, Lusatia, Luxeator, lvvova1, Lyndomen, lyroth001, lyxcaster, lzimann, lzk228, M1tht1c, M3739, M4rchy-S, M87S, mac6na6na, MACMAN2003, Macoron, magicalus, magmodius, magnnusson, magnuscrowe, maland1, malchanceux, MaloTV, manelnavola, ManelNavola, Mangohydra, marboww, Markek1, MarkerWicker, marlyn, matt, Matz05, max, MaxNox7, maylokana, mdrkrg, MDuch369, meara1179, meganerobot, MehimoNemo, Mehnix, MeltedPixel, memeproof, MendaxxDev, Menshin, Mephisto72, MerrytheManokit, Mervill, metalgearsloth, MetalSage, MFMessage, mhamsterr, michaelcu, micheel665, mifia, mikeysaurus, MilenVolf, MilonPL, Minemoder5000, Minty642, minus1over12, Mirino97, mirrorcult, misandrie, MishaUnity, MissKay1994, MisterImp, MisterMecky, Mith-randalf, Mixelz, mjarduk, MjrLandWhale, mkanke-real, MLGTASTICa, mnva0, moderatelyaware, modern-nm, mohamedwidar, mokiros, momo, Moneyl, monotheonist, Moomoobeef, moony, Morb0, MossyGreySlope, mqole, mr-bo-jangles, Mr0maks, MrFippik, MrPersival, mrrobdemo, mtrs163, muburu, MureixloI, murolem, murphyneko, musicmanvr, MWKane, Myakot, Myctai, N3X15, nabegator, nails-n-tape, Nairodian, Naive817, NakataRin, namespace-Memory, Nannek, NazrinNya, neborsh, nekokiwa, neomoth, neutrino-laser, NickPowers43, nikitosych, nikthechampiongr, Nimfar11, ninruB, Nirnael, NIXC, nkokic, NkoKirkto, nmajask, noctyrnal, noelkathegod, noirogen, nok-ko, NonchalantNoob, NoobyLegion, Nopey, NoreUhh, not-gavnaed, notafet, notquitehadouken, notsodana, noudoit, noverd, Nox38, NuclearWinter, Nuggets219, nukashimika, nuke-haus, NULL882, nullarmo, nyeogmi, Nylux, Nyranu, Nyxilath, och-och, OctoRocket, Ohelig, OldDanceJacket, OliverOtter, onesch, OneZerooo0, OnsenCapy, OnyxTheBrave, opl-, Orange-Winds, OrangeMoronage9622, OrbitSystem07, Orsoniks, osjarw, Ostaf, othymer, OttoMaticode, Owai-Seek, packmore, PAFFhassoocks, paige404, paigemaeforrest, pali6, Palladinium, Pangogie, panzer-iv1, partyaddict, patrikturi, PaulRitter, pavlockblaine03, peccneck, Peptide90, peptron1, perryprog, PeterFuto, PetMudstone, pewter-wiz, PGrayCS, pgraycs, Pgriha, phantom-lily, Pharaz4, pheenty, philingham, Phill101, Phooooooooooooooooooooooooooooooosphate, phunnyguy, PicklOH, PilgrimViis, Pill-U, pinkbat5, Piras314, Pireax, Pissachu, pissdemon, Pixel8-dev, PixeltheAertistContrib, PixelTheKermit, PJB3005, Plasmaguy, plinyvic, Plykiya, poeMota, pofitlo, pointer-to-null, Pok27, poklj, PolterTzi, PoorMansDreams, PopGamer45, portfiend, potato1234x, PotentiallyTom, PotRoastPiggy, Princess-Cheeseballs, ProfanedBane, Prole0, ProPandaBear, ProPeperos, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykana, psykzz, PuceTint, pumkin69, PuroSlavKing, PursuitInAshes, Putnam3145, py01, Pyrovi, qrtDaniil, qrwas, Quantum-cross, quasr-9, quatre, QueerNB, QuietlyWhisper, qwerltaz, Radezolid, RadioMull, Radosvik, Radrark, Rainbeon, Rainfey, Raitononai, Ramlik, RamZ, randy10122, Rane, Ranger6012, Rapidgame7, ravage123321, rbertoche, RedBookcase, Redfire1331, Redict, RedlineTriad, redmushie, RednoWCirabrab, Redrover1760, redspyy, ReeZer2, RemberBM, RemieRichards, RemTim, rene-descartes2021, Renlou, retequizzle, rewafflution, rhailrake, rhsvenson, rich-dunne, RieBi, riggleprime, RIKELOLDABOSS, rinary1, Rinkashikachi, riolume, rlebell33, RobbyTheFish, robinthedragon, robinthegirlthing, Rockdtben, Rohesie, rok-povsic, rokudara-sen, rolfero, RomanNovo, roryflowers, rosieposieeee, Roudenn, router, ruddygreat, rumaks-xyz, RumiTiger, Ruzihm, rwrv, S1rFl0, S1ss3l, Saakra, SabreML, Sadie-silly, saga3152, saintmuntzer, salarua, Salex08, sam, samgithubaccount, Samuka-C, SaphireLattice, SapphicOverload, sarahon, sativaleanne, SaveliyM360, sBasalto, ScalyChimp, ScarKy0, ScholarNZL, schrodinger71, scrato, Scribbles0, scrivoy, scruq445, scuffedjays, ScumbagDog, SeamLesss, Segonist, semensponge, sephtasm, ser1-1y, Serkket, sewerpig, SG6732, sh18rw, Shaddap1, ShadeAware, ShadowCommander, shadowtheprotogen546, shaeone, shampunj, shariathotpatrol, SharkSnake98, Shegare, shepardtothestars, shibechef, Siginanto, signalsender, SignalWalker, siigiil, silicon14wastaken, Silverfur-underscore, Simyon264, sirdragooon, Sirionaut, SirWarock, Sk1tch, SkaldetSkaeg, Skarletto, skeeka-dev, skrybl, Skybailey-dev, skye, Skyedra, SlamBamActionman, slarticodefast, Slava0135, sleepyyapril, slimmslamm, Slyfox333, Smugman, SnappingOpossum, snebl, snicket, sniperchance, Snowni, snowsignal, SolidSyn, SolidusSnek, solstar2, SomegnihT, SonarZeBat, SonicHDC, SoulFN, SoulSloth, Soundwavesghost, soupkilove, southbridge-fur, sowelipililimute, Soydium, SpaceLizard24, SpaceLizardSky, SpaceManiac, SpaceRox1244, SpaceyLady, Spangs04, spanky-spanky, Sparlight, spartak, SpartanKadence, spderman3333, SpeltIncorrectyl, Spessmann, SphiraI, SplinterGP, spoogemonster, sporekto, sporkyz, ssdaniel24, stalengd, stanberytrask, Stanislav4ix, StanTheCarpenter, starbuckss14, Stealthbomber16, steel, Steffo99, stellar-novas, stewie523, stomf, Stop-Signs, stopbreaking, stopka-html, StrawberryMoses, Stray-Pyramid, strO0pwafel, Strol20, StStevens, Subversionary, sunbear-dev, SuperGDPWYL, superjj18, Supernorn, SurrealShibe, SweetAplle, SweptWasTaken, SyaoranFox, Sybil, SYNCHRONIC, Synthestra, Szunti, t, Tainakov, takemysoult, taonewt, tap, TaralGit, Taran, taurie, Tayrtahn, tday93, teamaki, TeenSarlacc, TekuNut, telavivgamers, telyonok, temm1ie, TemporalOroboros, tentekal, terezi4real, Terraspark4941, texcruize, Tezzaide, TGODiamond, TGRCdev, tgrkzus, thanosdegraf, ThatGuyUSA, ThatOneGoblin25, thatrandomcanadianguy, TheArturZh, TheBlueYowie, thecopbennet, TheCze, TheDarkElites, thedraccx, TheEmber, theexetron, TheFlyingSentry, thefoty, TheGrimbeeper, TheIntoxicatedCat, thekilk, themias, theomund, TheProNoob678, TherapyGoth, ThereDrD0, TheSecondLord, TheShuEd, thetolbean, thevinter, TheWaffleJesus, Thinbug0, ThunderBear2006, timothyteakettle, TimrodDX, timurjavid, tin-man-tim, TiniestShark, Titian3, tk-a369, tkdrg, tmtmtl30, ToastEnjoyer, Toby222, TokenStyle, Tollhouse, Toly65, tom-leys, tomasalves8, Tomeno, Tonydatguy, topy, tornado-technology, TornadoTechnology, tosatur, TotallyLemon, ToxicSonicFan04, Tr1bute, travis-g-reid, treytipton, TriviaSolari, trixxedbit, TrixxedHeart, tropicalhibi, truepaintgit, Truoizys, Tryded, TsjipTsjip, tuchila-adi-bogdan, Tunguso4ka, TurboTrackerss14, TVK-04, tyashley, Tyler-IN, TytosB, Tyzemol, UbaserB, Uberration, ubis1, UBlueberry, uhbg, UKNOWH, UltimateJester, Unbelievable-Salmon, underscorex5, UnicornOnLSD, Unisol, Unkn0wnGh0st333, unusualcrow, Uriende, UristMcDorf, user424242420, Utmanarn, Vaaankas, valentfingerov, valquaint, Varen, Vasilis, VasilisThePikachu, veliebm, Velken, VelonacepsCalyxEggs, veprolet, VerinSenpai, veritable-calamity, Veritius, Vermidia, vero5123, verslebas, vexerot, vgskye, viceemargo, VigersRay, violet754, Visne, vitopigno, vitusveit, vlad, vlados1408, VMSolidus, vmzd, VoidMeticulous, voidnull000, volotomite, volundr-, Voomra, Vordenburg, vorkathbruh, Vortebo, vulppine, wachte1, wafehling, walksanatora, Warentan, WarMechanic, Watermelon914, weaversam8, wertanchik, whateverusername0, whatston3, widgetbeck, Will-Oliver-Br, Willhelm53, WilliamECrew, willicassi, Winkarst-cpu, wirdal, wixoaGit, WlarusFromDaSpace, Wolfkey-SomeoneElseTookMyUsername, Worldwaker, wrexbe, wtcwr68, xeri7, xkreksx, xprospero, xRiriq, xsainteer, YanehCheck, yathxyz, Ygg01, YotaXP, youarereadingthis, YoungThugSS14, Yousifb26, youtissoum, yunii, YuriyKiss, yuriykiss, zach-hill, Zadeon, Zalycon, zamp, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zero, ZeroDiamond, ZeWaka, zHonys, zionnBE, ZNixian, Zokkie, ZoldorfTheWizard, zonespace27, Zylofan, Zymem, zzylex +0-Anon, 0leshe, 0tito, 0x6273, 11BelowStudio, 12rabbits, 1337dakota, 13spacemen, 154942, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 27alaing, 2DSiggy, 3nderall, 4310v343k, 4dplanner, 5tickman, 612git, 778b, 96flo, aaron, abadaba695, Ablankmann, abregado, Absolute-Potato, Absotively, achookh, Acruid, ActiveMammmoth, actually-reb, ada-please, adamsong, Adeinitas, adm2play, Admiral-Obvious-001, adrian, Adrian16199, Ady4ik, Aearo-Deepwater, Aerocrux, Aeshus, Aexolott, Aexxie, AffleWaffle, africalimedrop, afrokada, AftrLite, AgentSmithRadio, Agoichi, ahandleman, Ahion, aiden, aidenkrz, Aidenkrz, Aisu9, ajcm, AJCM-git, AjexRose, Alekshhh, alexalexmax, alexkar598, AlexMorgan3817, alexum418, alexumandxgabriel08x, Alice4267, Alithsko, Alkheemist, alliephante, ALMv1, Alpaccalypse, AlphaQwerty, Altoids1, amatwiedle, amylizzle, Andre19926, Andrew-Fall, AndrewEyeke, AndrewFenriz, AndreyCamper, anri, Anzarot121, ApolloVector, Appiah, april-gras, ar4ill, Arcane-Waffle, archee1, ArchPigeon, ArchRBX, areitpog, Arendian, areyouconfused, arimah, Arkanic, ArkiveDev, armoks, Arteben, arthropodia, ArthurMousatov, ArtisticRoomba, artur, Artxmisery, ArZarLordOfMango, as334, AshBats, AsikKEsel, AsnDen, asperger-sind, aspiringLich, astriloqua, Atakku, Ataman, august-sun, AutoOtter, AverageNotDoingAnythingEnjoyer, avghdev, AwareFoxy, Awlod, Axionyxx, azloserbits, AzzyIsNotHere, azzyisnothere, B-Kirill, B3CKDOOR, baa14453, BackeTako, BadaBoomie, Bakke, BananaFlambe, Baptr0b0t, BarryNorfolk, BasedUser, bea, bebr3ght, beck-thompson, beesterman, bellwetherlogic, ben, benbryant0, benev0, benjamin-burges, BGare, bhespiritu, bibbly, BigfootBravo, BIGZi0348, bingojohnson, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, blitzthesquishy, Blobadoodle, bloodrizer, Bloody2372, blueDev2, Boaz1111, BobdaBiscuit, BobTheSleder, boiled-water-tsar, Bokser815, bolantej, BombasterDS, Booblesnoot42, Boolean-Buckeye, botanySupremist, brainfood1183, BramvanZijp, Brandon-Huu, breeplayx3, BriBrooo, BRINGit34, brndd, bryce0110, BubblegumBlue, buletsponge, buntobaggins, buunie099, bvelliquette, BWTCK, byondfuckery, c0rigin, c4llv07e, CaasGit, Caconym27, Calecute, Callmore, Camdot, cammusubi, capnsockless, CaptainMaru, captainsqrbeard, Carbonhell, Carolyn3114, Carou02, carteblanche4me, catdotjs, catlord, Catofquestionableethics, CatTheSystem, CawsForConcern, CDWimmer, Centronias, Chaboricks, chairbender, chaisftw, Chaoticaa, Charlese2, charlie, chartman, ChaseFlorom, chavonadelal, Cheackraze, CheddaCheez, cheesePizza2, CheesePlated, Chief-Engineer, chillyconmor, christhirtle, chromiumboy, Chronophylos, Chubbicous, Chubbygummibear, Ciac32, ciaran, citrea, civilCornball, claustro305, Clement-O, cloudyias, clyf, Clyybber, CMDR-Piboy314, cnv41, coco, cohanna, Cohnway, Cojoke-dot, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, Compilatron144, CookieMasterT, coolboy911, CoolioDudio, coolmankid12345, Coolsurf6, cooperwallace, corentt, CormosLemming, CrafterKolyan, CraftyRenter, crazybrain23, Crazydave91920, CrazyPhantom779, creadth, CrigCrag, CroilBird, Crotalus, CrudeWax, cryals, CrzyPotato, cubixthree, cutemoongod, Cyberboss, d34d10cc, DaCookieCakes, DadeKuma, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, dan, dangerrevolution, daniel-cr, DanSAussieITS, Daracke, Darkie, DaturoDewitt, david, DawBla, Daxxi3, dch-GH, ddeegan, de0rix, Deahaka, dean, DEATHB4DEFEAT, Deatherd, deathride58, debugok, Decappi, Decortex, Deeeeja, deepdarkdepths, DeepwaterCreations, Deerstop, degradka, Delete69, deltanedas, DenisShvalov, DerbyX, derek, dersheppard, Deserty0, Detintinto, DevilishMilk, devinschubert14, dexlerxd, dffdff2423, DieselMohawk, DieselMohawkTheSequel, digitalic, Dimastra, dimmoon1, DinnerCalzone, DinoWattz, Disp-Dev, DisposableCrewmember42, dissidentbullet, DjfjdfofdjfjD, doc-michael, docnite, Doctor-Cpu, DogZeroX, dolgovmi, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, DR-DOCTOR-EVIL-EVIL, Dragonjspider, dragonryan06, drakewill-CRL, Drayff, dreamlyjack, DrEnzyme, dribblydrone, DrMelon, drongood12, DrSingh, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, DuckManZach, Duddino, dukevanity, duskyjay, Dutch-VanDerLinde, dvir001, dylanstrategie, dylanwhittingham, Dynexust, Easypoller, echo, EchoOfNothing, eclips_e, eden077, EEASAS, Efruit, efzapa, Ekkosangen, ElectroSR, elsie, elthundercloud, Elysium206, emberwinters, Emisse, emmafornash, EmoGarbage404, Endecc, EnrichedCaramel, Entvari, eoineoineoin, ephememory, eris, erohrs2, erorr404v1, Errant-4, ertanic, esguard, estacaoespacialpirata, eternally-confused, eugene, ewokswagger, exincore, exp111, f0x-n3rd, F1restar4, FacePluslll, Fahasor, FairlySadPanda, farrellka-dev, FATFSAAM2, Feluk6174, ficcialfaint, Fiftyllama, Fildrance, fillervk, FinnishPaladin, firenamefn, Firewars763, FirinMaLazors, Fishfish458, fl-oz, Flareguy, flashgnash, FlipBrooke, FluffiestFloof, FluffMe, FluidRock, flymo5678, foboscheshir, FoLoKe, fooberticus, ForestNoises, forgotmyotheraccount, forkeyboards, forthbridge, Fortune117, foxhorn, freeman2651, freeze2222, frobnic8, Froffy025, Fromoriss, froozigiusz, FrostMando, FrostRibbon, Fruitsalad, Funce, FungiFellow, FunkySphere, FunTust, Futuristic-OK, GalacticChimp, gamer3107, Gamewar360, gansulalan, GaussiArson, Gaxeer, gbasood, gcoremans, Geekyhobo, genderGeometries, GeneralGaws, Genkail, Gentleman-Bird, geraeumig, Ghagliiarghii, Git-Nivrak, githubuser508, GitHubUser53123, gituhabu, GlassEclipse, GnarpGnarp, GNF54, godisdeadLOL, goet, GoldenCan, Goldminermac, Golinth, golubgik, GoodWheatley, Gorox221, GR1231, gradientvera, graevy, GraniteSidewalk, GreaseMonk, greenrock64, GreyMario, GrownSamoyedDog, GTRsound, gusxyz, Gyrandola, h3half, hamurlik, Hanzdegloker, HappyRoach, happyrobot33, Hardly3D, harikattar, Hayden, he1acdvv, Hebi, Helix-ctrl, helm4142, Henry, HerCoyote23, Hi-Im-Shot, HighTechPuddle, Hitlinemoss, hiucko, hivehum, Hmeister-fake, Hmeister-real, Hobbitmax, hobnob, HoidC, Holinka4ever, holyssss, HoofedEar, Hoolny, hord-brayden, hoshizora-sayo, Hreno, Hrosts, htmlsystem, Huaqas, hubismal, Hugal31, Hyenh, hyperb1, hyperDelegate, hyphenationc, i-justuser-i, iaada, iacore, IamVelcroboy, Ian321, icekot8, icesickleone, iczero, iglov, IgorAnt028, igorsaux, ike709, illersaver, Illiux, Ilushkins33, Ilya246, IlyaElDunaev, imatsoup, IMCB, impubbi, imrenq, imweax, indeano, Injazz, Insineer, insoPL, IntegerTempest, Interrobang01, Intoxicating-Innocence, IProduceWidgets, itsmethom, Itzbenz, iztokbajcar, Jackal298, Jackrost, JackRyd3r, jacksonzck, JackspajfMain, Jacktastic09, Jackw2As, jacob, jamessimo, janekvap-havok, Jark255, Jarmer123, Jaskanbe, JasperJRoth, jbox144, JCGWE30, jerryimmouse, JerryImMouse, Jessetriesagain, jessicamaybe, JesterX666, Jewelots, Jezithyr, jicksaw, JiimBob, JimGamemaster, jimmy12or, JIPDawg, jjtParadox, jkwookee, jmcb, JohnGinnane, JohnJJohn, johnjjohn, johnku1, Jophire, Jopogrechkin, joshepvodka, JpegOfAFrog, jproads, JrInventor05, Jrpl, jukereise, juliangiebel, JustArt1m, JustCone14, justdie12, justin, justintether, JustinTrotter, JustinWinningham, justtne, K-Dynamic, k3yw, Kadeo64, Kaga-404, kaiserbirch, KaiShibaa, kalane15, kalanosh, KamTheSythe, Kanashi-Panda, katzenminer, kbailey-git, Keelin, Keer-Sar, KEEYNy, keikiru, Kelrak, kerisargit, keronshb, KeTuFaisPiKiNut, KIBORG04, KieueCaprie, Kimpes, kin98, KingFroozy, kipdotnet, kira-er, kiri-yoshikage, Kirillcas, Kirus59, Kistras, Kit, Kit0vras, KittenColony, Kittygyat, klaypexx, kleinerstation13, Kmc2000, Ko4ergaPunk, kognise, kokoc9n, komunre, KonstantinAngelov, kontakt, korczoczek, koteq, kotobdev, Kowlin, KrasnoshchekovPavel, Krosus777, Krunklehorn, Kryyto, Kupie, kxvvv, Kyoth25f, kyupolaris, kzhanik, LaCumbiaDelCoronavirus, lajolico, Lamrr, lanedon, LankLTE, laok233, lapatison, larryrussian, lawdog4817, Lazzi0706, Le-Arctic-Fox, leahcat, leander-0, leonardo-dabepis, leonidussaks, leonsfriedrich, LeoSantich, lettern, LetterN, Level10Cybermancer, LEVELcat, lever1209, LevitatingTree, Lgibb18, lgruthes, liem161, LightVillet, lilazero, liltenhead, linkbro1, linkuyx, Litraxx, little-meow-meow, LittleBuilderJane, LittleNorthStar, LittleNyanCat, lizelive, ljm862, lmsnoise, localcc, lokachop, lolman360, Lomcastar, Lordbrandon12, LordCarve, LordEclipse, lucas, LucasTheDrgn, luckyshotpictures, LudwigVonChesterfield, luegamer, luizwritescode, LukaSlade, luminight, lunarcomets, Lusatia, Luxeator, lvvova1, Lyndomen, lyroth001, lyxcaster, lzimann, lzk228, M1tht1c, M3739, M4rchy-S, M87S, mac6na6na, MACMAN2003, Macoron, magicalus, magmodius, magnnusson, magnuscrowe, maland1, malchanceux, MaloTV, ManelNavola, manelnavola, Mangohydra, marboww, Markek1, MarkerWicker, marlyn, matt, Matz05, max, MaxNox7, maylokana, mdrkrg, MDuch369, meara1179, meganerobot, MehimoNemo, Mehnix, MeltedPixel, memeproof, MendaxxDev, Menshin, Mephisto72, MerrytheManokit, Mervill, metalgearsloth, MetalSage, MFMessage, mhamsterr, michaelcu, micheel665, mifia, mikeysaurus, MilenVolf, MilonPL, Minemoder5000, Minty642, minus1over12, Mirino97, mirrorcult, misandrie, MishaUnity, MissKay1994, MisterImp, MisterMecky, Mith-randalf, Mixelz, mjarduk, MjrLandWhale, mkanke-real, MLGTASTICa, mnva0, moderatelyaware, modern-nm, mohamedwidar, mokiros, momo, Moneyl, monotheonist, Moomoobeef, moony, Morb0, MossyGreySlope, mqole, mr-bo-jangles, Mr0maks, MrFippik, MrPersival, mrrobdemo, mtrs163, muburu, MureixloI, murolem, murphyneko, musicmanvr, MWKane, Myakot, Myctai, N3X15, nabegator, nails-n-tape, Nairodian, Naive817, NakataRin, namespace-Memory, Nannek, NazrinNya, neborsh, nekokiwa, neomoth, neutrino-laser, NickPowers43, nikitosych, nikthechampiongr, Nimfar11, ninruB, Nirnael, NIXC, nkokic, NkoKirkto, nmajask, noctyrnal, noelkathegod, noirogen, nok-ko, NonchalantNoob, NoobyLegion, Nopey, NoreUhh, not-gavnaed, notafet, notquitehadouken, notsodana, noudoit, noverd, Nox38, NuclearWinter, Nuggets219, nukashimika, nuke-haus, NULL882, nullarmo, nyeogmi, Nylux, Nyranu, Nyxilath, och-och, OctoRocket, Ohelig, OldDanceJacket, OliverOtter, onesch, OneZerooo0, OnsenCapy, OnyxTheBrave, opl-, Orange-Winds, OrangeMoronage9622, OrbitSystem07, Orsoniks, osjarw, Ostaf, othymer, OttoMaticode, Owai-Seek, packmore, PAFFhassoocks, paige404, paigemaeforrest, pali6, Palladinium, Pangogie, panzer-iv1, partyaddict, patrikturi, PaulRitter, pavlockblaine03, peccneck, Peptide90, peptron1, perryprog, PeterFuto, PetMudstone, pewter-wiz, PGrayCS, pgraycs, Pgriha, phantom-lily, Pharaz4, pheenty, philingham, Phill101, Phooooooooooooooooooooooooooooooosphate, phunnyguy, PicklOH, PilgrimViis, Pill-U, pinkbat5, Piras314, Pireax, Pissachu, pissdemon, Pixel8-dev, PixeltheAertistContrib, PixelTheKermit, PJB3005, Plasmaguy, plinyvic, Plykiya, poeMota, pofitlo, pointer-to-null, Pok27, poklj, PolterTzi, PoorMansDreams, PopGamer45, portfiend, potato1234x, PotentiallyTom, PotRoastPiggy, Princess-Cheeseballs, ProfanedBane, Prole0, ProPandaBear, ProPeperos, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykana, psykzz, PuceTint, pumkin69, PuroSlavKing, PursuitInAshes, Putnam3145, py01, Pyrovi, qrtDaniil, qrwas, Quantum-cross, quasr-9, quatre, QueerNB, QuietlyWhisper, qwerltaz, Radezolid, RadioMull, Radosvik, Radrark, Rainbeon, Rainfey, Raitononai, Ramlik, RamZ, randy10122, Rane, Ranger6012, Rapidgame7, ravage123321, rbertoche, RedBookcase, Redfire1331, Redict, RedlineTriad, redmushie, RednoWCirabrab, Redrover1760, redspyy, ReeZer2, RemberBM, RemieRichards, RemTim, rene-descartes2021, Renlou, retequizzle, rewafflution, rhailrake, rhsvenson, rich-dunne, RieBi, riggleprime, RIKELOLDABOSS, rinary1, Rinkashikachi, riolume, rlebell33, RobbyTheFish, robinthedragon, robinthegirlthing, Rockdtben, Rohesie, rok-povsic, rokudara-sen, rolfero, RomanNovo, roryflowers, rosieposieeee, Roudenn, router, ruddygreat, rumaks-xyz, RumiTiger, Ruzihm, rwrv, S1rFl0, S1ss3l, Saakra, SabreML, Sadie-silly, saga3152, saintmuntzer, salarua, Salex08, sam, samgithubaccount, Samuka-C, SaphireLattice, SapphicOverload, sarahon, sativaleanne, SaveliyM360, sBasalto, ScalyChimp, ScarKy0, ScholarNZL, schrodinger71, scrato, Scribbles0, scrivoy, scruq445, scuffedjays, ScumbagDog, SeamLesss, Segonist, semensponge, sephtasm, ser1-1y, Serkket, sewerpig, SG6732, sh18rw, Shaddap1, ShadeAware, ShadowCommander, shadowtheprotogen546, shaeone, shampunj, shariathotpatrol, SharkSnake98, Shegare, shepardtothestars, shibechef, Siginanto, signalsender, SignalWalker, siigiil, silicon14wastaken, Silverfur-underscore, Simyon264, sirdragooon, Sirionaut, SirWarock, Sk1tch, SkaldetSkaeg, Skarletto, skeeka-dev, skrybl, Skybailey-dev, skye, Skyedra, SlamBamActionman, slarticodefast, Slava0135, sleepyyapril, slimmslamm, Slyfox333, Smugman, SnappingOpossum, snebl, snicket, sniperchance, Snowni, snowsignal, SolidSyn, SolidusSnek, solstar2, SomegnihT, SonarZeBat, SonicHDC, SoulFN, SoulSloth, Soundwavesghost, soupkilove, southbridge-fur, sowelipililimute, Soydium, SpaceLizard24, SpaceLizardSky, SpaceManiac, SpaceRox1244, SpaceyLady, Spangs04, spanky-spanky, Sparlight, spartak, SpartanKadence, spderman3333, SpeltIncorrectyl, Spessmann, SphiraI, SplinterGP, spoogemonster, sporekto, sporkyz, ssdaniel24, stalengd, stanberytrask, Stanislav4ix, StanTheCarpenter, starbuckss14, Stealthbomber16, steel, Steffo99, stellar-novas, stewie523, stomf, Stop-Signs, stopbreaking, stopka-html, StrawberryMoses, Stray-Pyramid, strO0pwafel, Strol20, StStevens, Subversionary, sunbear-dev, SuperGDPWYL, superjj18, Supernorn, SurrealShibe, SweetAplle, SweptWasTaken, SyaoranFox, Sybil, SYNCHRONIC, Synthestra, Szunti, t, Tainakov, takemysoult, taonewt, tap, TaralGit, Taran, taserthefox, taurie, Tayrtahn, tday93, teamaki, TeenSarlacc, TekuNut, telavivgamers, telyonok, temm1ie, TemporalOroboros, tentekal, terezi4real, Terraspark4941, texcruize, Tezzaide, TGODiamond, TGRCdev, tgrkzus, thanosdegraf, ThatGuyUSA, ThatOneGoblin25, thatrandomcanadianguy, TheArturZh, TheBlueYowie, thecopbennet, TheCze, TheDarkElites, thedraccx, TheEmber, theexetron, TheFlyingSentry, thefoty, TheGrimbeeper, TheIntoxicatedCat, thekilk, themias, theomund, TheProNoob678, TherapyGoth, ThereDrD0, TheSecondLord, TheShuEd, thetolbean, thevinter, TheWaffleJesus, Thinbug0, ThunderBear2006, timothyteakettle, TimrodDX, timurjavid, tin-man-tim, TiniestShark, Titian3, tk-a369, tkdrg, tmtmtl30, ToastEnjoyer, Toby222, TokenStyle, Tollhouse, Toly65, tom-leys, tomasalves8, Tomeno, Tonydatguy, topy, tornado-technology, TornadoTechnology, tosatur, TotallyLemon, ToxicSonicFan04, Tr1bute, travis-g-reid, treytipton, TriviaSolari, trixxedbit, TrixxedHeart, tropicalhibi, truepaintgit, Truoizys, Tryded, TsjipTsjip, tuchila-adi-bogdan, Tunguso4ka, TurboTrackerss14, TVK-04, tyashley, Tyler-IN, TytosB, Tyzemol, UbaserB, Uberration, ubis1, UBlueberry, uhbg, UKNOWH, UltimateJester, Unbelievable-Salmon, underscorex5, UnicornOnLSD, Unisol, Unkn0wnGh0st333, unusualcrow, UpAndLeaves, Uriende, UristMcDorf, user424242420, Utmanarn, Vaaankas, valentfingerov, valquaint, Varen, Vasilis, VasilisThePikachu, veliebm, Velken, VelonacepsCalyxEggs, veprolet, VerinSenpai, veritable-calamity, Veritius, Vermidia, vero5123, verslebas, vexerot, vgskye, viceemargo, VigersRay, violet754, Visne, vitopigno, vitusveit, vlad, vlados1408, VMSolidus, vmzd, VoidMeticulous, voidnull000, volotomite, volundr-, Voomra, Vordenburg, vorkathbruh, Vortebo, vulppine, wachte1, wafehling, walksanatora, Warentan, WarMechanic, Watermelon914, weaversam8, wertanchik, whateverusername0, whatston3, widgetbeck, Will-Oliver-Br, Willhelm53, WilliamECrew, willicassi, Winkarst-cpu, wirdal, wixoaGit, WlarusFromDaSpace, Wolfkey-SomeoneElseTookMyUsername, Worldwaker, wrexbe, wtcwr68, xeri7, xkreksx, xprospero, xRiriq, xsainteer, YanehCheck, yathxyz, Ygg01, YotaXP, youarereadingthis, YoungThugSS14, Yousifb26, youtissoum, yunii, yuriykiss, YuriyKiss, zach-hill, Zadeon, Zalycon, zamp, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zero, ZeroDiamond, ZeWaka, zHonys, zionnBE, ZNixian, Zokkie, ZoldorfTheWizard, zonespace27, Zylofan, Zymem, zzylex From d5ed6aa462549ceaaf154707f112656592bf95dd Mon Sep 17 00:00:00 2001 From: InsoPL Date: Sun, 15 Mar 2026 08:20:06 +0100 Subject: [PATCH 529/603] Refactor: Gas tile overlay split (#42881) * yeah * split2 * well * cleanup * docs fix * Dependency cleanup * Update Content.Client/Atmos/EntitySystems/GasTileFireOverlaySystem.cs Co-authored-by: Pok <113675512+Pok27@users.noreply.github.com> * Update Content.Client/Atmos/Overlays/GasTileVisibleGasOverlay.cs Co-authored-by: Pok <113675512+Pok27@users.noreply.github.com> * Update Content.Client/Atmos/Overlays/GasTileVisibleGasOverlay.cs Co-authored-by: Pok <113675512+Pok27@users.noreply.github.com> * yup * modifying a lot anyways * other cleanup --------- Co-authored-by: Pok <113675512+Pok27@users.noreply.github.com> Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> --- .../EntitySystems/GasTileFireOverlaySystem.cs | 30 ++ .../EntitySystems/GasTileOverlaySystem.cs | 129 ++++---- .../GasTileVisibleGasOverlaySystem.cs | 31 ++ .../Atmos/Overlays/GasTileFireOverlay.cs | 172 ++++++++++ .../Atmos/Overlays/GasTileOverlay.cs | 302 ------------------ .../Overlays/GasTileVisibleGasOverlay.cs | 258 +++++++++++++++ Content.Shared/DrawDepth/DrawDepth.cs | 11 +- 7 files changed, 553 insertions(+), 380 deletions(-) create mode 100644 Content.Client/Atmos/EntitySystems/GasTileFireOverlaySystem.cs create mode 100644 Content.Client/Atmos/EntitySystems/GasTileVisibleGasOverlaySystem.cs create mode 100644 Content.Client/Atmos/Overlays/GasTileFireOverlay.cs delete mode 100644 Content.Client/Atmos/Overlays/GasTileOverlay.cs create mode 100644 Content.Client/Atmos/Overlays/GasTileVisibleGasOverlay.cs diff --git a/Content.Client/Atmos/EntitySystems/GasTileFireOverlaySystem.cs b/Content.Client/Atmos/EntitySystems/GasTileFireOverlaySystem.cs new file mode 100644 index 00000000000..b1bfdb70abf --- /dev/null +++ b/Content.Client/Atmos/EntitySystems/GasTileFireOverlaySystem.cs @@ -0,0 +1,30 @@ +using Content.Client.Atmos.Overlays; +using JetBrains.Annotations; +using Robust.Client.Graphics; + +namespace Content.Client.Atmos.EntitySystems; + +/// +/// System responsible for rendering atmos fire animations using . +/// +[UsedImplicitly] +public sealed class GasTileFireOverlaySystem : EntitySystem +{ + [Dependency] private readonly IOverlayManager _overlayMan = default!; + + private GasTileFireOverlay _fireOverlay = default!; + + public override void Initialize() + { + base.Initialize(); + + _fireOverlay = new GasTileFireOverlay(); + _overlayMan.AddOverlay(_fireOverlay); + } + + public override void Shutdown() + { + base.Shutdown(); + _overlayMan.RemoveOverlay(); + } +} diff --git a/Content.Client/Atmos/EntitySystems/GasTileOverlaySystem.cs b/Content.Client/Atmos/EntitySystems/GasTileOverlaySystem.cs index ad264369467..8de649b81c7 100644 --- a/Content.Client/Atmos/EntitySystems/GasTileOverlaySystem.cs +++ b/Content.Client/Atmos/EntitySystems/GasTileOverlaySystem.cs @@ -1,106 +1,85 @@ -using Content.Client.Atmos.Overlays; using Content.Shared.Atmos; using Content.Shared.Atmos.Components; using Content.Shared.Atmos.EntitySystems; using JetBrains.Annotations; -using Robust.Client.GameObjects; -using Robust.Client.Graphics; -using Robust.Client.ResourceManagement; using Robust.Shared.GameStates; -namespace Content.Client.Atmos.EntitySystems +namespace Content.Client.Atmos.EntitySystems; + +[UsedImplicitly] +public sealed class GasTileOverlaySystem : SharedGasTileOverlaySystem { - [UsedImplicitly] - public sealed class GasTileOverlaySystem : SharedGasTileOverlaySystem + public override void Initialize() { - [Dependency] private readonly IResourceCache _resourceCache = default!; - [Dependency] private readonly IOverlayManager _overlayMan = default!; - [Dependency] private readonly SpriteSystem _spriteSys = default!; - [Dependency] private readonly SharedTransformSystem _xformSys = default!; + base.Initialize(); + SubscribeNetworkEvent(HandleGasOverlayUpdate); + SubscribeLocalEvent(OnHandleState); + } - private GasTileOverlay _overlay = default!; + private void OnHandleState(EntityUid gridUid, GasTileOverlayComponent comp, ref ComponentHandleState args) + { + Dictionary modifiedChunks; - public override void Initialize() + switch (args.Current) { - base.Initialize(); - SubscribeNetworkEvent(HandleGasOverlayUpdate); - SubscribeLocalEvent(OnHandleState); + // is this a delta or full state? + case GasTileOverlayDeltaState delta: + { + modifiedChunks = delta.ModifiedChunks; + foreach (var index in comp.Chunks.Keys) + { + if (!delta.AllChunks.Contains(index)) + comp.Chunks.Remove(index); + } + + break; + } + case GasTileOverlayState state: + { + modifiedChunks = state.Chunks; + foreach (var index in comp.Chunks.Keys) + { + if (!state.Chunks.ContainsKey(index)) + comp.Chunks.Remove(index); + } - _overlay = new GasTileOverlay(this, EntityManager, _resourceCache, ProtoMan, _spriteSys, _xformSys); - _overlayMan.AddOverlay(_overlay); + break; + } + default: + return; } - public override void Shutdown() + foreach (var (index, data) in modifiedChunks) { - base.Shutdown(); - _overlayMan.RemoveOverlay(); + comp.Chunks[index] = data; } + } - private void OnHandleState(EntityUid gridUid, GasTileOverlayComponent comp, ref ComponentHandleState args) + private void HandleGasOverlayUpdate(GasOverlayUpdateEvent ev) + { + foreach (var (nent, removedIndicies) in ev.RemovedChunks) { - Dictionary modifiedChunks; + var grid = GetEntity(nent); - switch (args.Current) - { - // is this a delta or full state? - case GasTileOverlayDeltaState delta: - { - modifiedChunks = delta.ModifiedChunks; - foreach (var index in comp.Chunks.Keys) - { - if (!delta.AllChunks.Contains(index)) - comp.Chunks.Remove(index); - } + if (!TryComp(grid, out GasTileOverlayComponent? comp)) + continue; - break; - } - case GasTileOverlayState state: - { - modifiedChunks = state.Chunks; - foreach (var index in comp.Chunks.Keys) - { - if (!state.Chunks.ContainsKey(index)) - comp.Chunks.Remove(index); - } - - break; - } - default: - return; - } - - foreach (var (index, data) in modifiedChunks) + foreach (var index in removedIndicies) { - comp.Chunks[index] = data; + comp.Chunks.Remove(index); } } - private void HandleGasOverlayUpdate(GasOverlayUpdateEvent ev) + foreach (var (nent, gridData) in ev.UpdatedChunks) { - foreach (var (nent, removedIndicies) in ev.RemovedChunks) - { - var grid = GetEntity(nent); + var grid = GetEntity(nent); - if (!TryComp(grid, out GasTileOverlayComponent? comp)) - continue; + if (!TryComp(grid, out GasTileOverlayComponent? comp)) + continue; - foreach (var index in removedIndicies) - { - comp.Chunks.Remove(index); - } - } - - foreach (var (nent, gridData) in ev.UpdatedChunks) + foreach (var chunkData in gridData) { - var grid = GetEntity(nent); - - if (!TryComp(grid, out GasTileOverlayComponent? comp)) - continue; - - foreach (var chunkData in gridData) - { - comp.Chunks[chunkData.Index] = chunkData; - } + comp.Chunks[chunkData.Index] = chunkData; } } } diff --git a/Content.Client/Atmos/EntitySystems/GasTileVisibleGasOverlaySystem.cs b/Content.Client/Atmos/EntitySystems/GasTileVisibleGasOverlaySystem.cs new file mode 100644 index 00000000000..3d7f26cc30d --- /dev/null +++ b/Content.Client/Atmos/EntitySystems/GasTileVisibleGasOverlaySystem.cs @@ -0,0 +1,31 @@ +using Content.Client.Atmos.Overlays; +using JetBrains.Annotations; +using Robust.Client.Graphics; + +namespace Content.Client.Atmos.EntitySystems; + +/// +/// System responsible for rendering visible atmos gasses (like plasma for example) using . +/// +[UsedImplicitly] +public sealed class GasTileVisibleGasOverlaySystem : EntitySystem +{ + [Dependency] private readonly IOverlayManager _overlayMan = default!; + + private GasTileVisibleGasOverlay _visibleGasOverlay = default!; + + public override void Initialize() + { + base.Initialize(); + + _visibleGasOverlay = new GasTileVisibleGasOverlay(); + _overlayMan.AddOverlay(_visibleGasOverlay); + } + + public override void Shutdown() + { + base.Shutdown(); + _overlayMan.RemoveOverlay(); + } + +} diff --git a/Content.Client/Atmos/Overlays/GasTileFireOverlay.cs b/Content.Client/Atmos/Overlays/GasTileFireOverlay.cs new file mode 100644 index 00000000000..310bac86692 --- /dev/null +++ b/Content.Client/Atmos/Overlays/GasTileFireOverlay.cs @@ -0,0 +1,172 @@ +using Content.Client.Atmos.EntitySystems; +using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; +using Content.Shared.Species; +using Robust.Client.GameObjects; +using Robust.Client.Graphics; +using Robust.Client.ResourceManagement; +using Robust.Shared.Enums; +using Robust.Shared.Graphics.RSI; +using Robust.Shared.Map; +using Robust.Shared.Map.Components; +using Robust.Shared.Prototypes; +using Robust.Shared.Timing; +using System.Numerics; + +namespace Content.Client.Atmos.Overlays; + +/// +/// Overlay responsible for rendering atmos fire animation. +/// +public sealed class GasTileFireOverlay : Overlay +{ + [Dependency] private readonly IPrototypeManager _protoMan = default!; + [Dependency] private readonly IResourceCache _resourceCache = default!; + [Dependency] private readonly IEntityManager _entManager = default!; + [Dependency] private readonly IMapManager _mapManager = default!; + + public override OverlaySpace Space => OverlaySpace.WorldSpaceEntities | OverlaySpace.WorldSpaceBelowWorld; + private static readonly ProtoId UnshadedShader = "unshaded"; + + private readonly SharedTransformSystem _xformSys; + private readonly SharedMapSystem _mapSystem = default!; + private readonly ShaderInstance _shader; + + private readonly float[] _timer; + private readonly float[][] _frameDelays; + private readonly int[] _frameCounter; + + // TODO combine textures into a single texture atlas. + private readonly Texture[][] _frames; + + private const int FireStates = 3; + private const string FireRsiPath = "/Textures/Effects/fire.rsi"; + + public const int GasOverlayZIndex = (int)Shared.DrawDepth.DrawDepth.Effects; // Under ghosts, above mostly everything else + + public GasTileFireOverlay() + { + IoCManager.InjectDependencies(this); + _xformSys = _entManager.System(); + _mapSystem = _entManager.System(); + _shader = _protoMan.Index(UnshadedShader).Instance(); + ZIndex = GasOverlayZIndex; + + _timer = new float[FireStates]; + _frameDelays = new float[FireStates][]; + _frameCounter = new int[FireStates]; + _frames = new Texture[FireStates][]; + + var fire = _resourceCache.GetResource(FireRsiPath).RSI; + + for (var i = 0; i < FireStates; i++) + { + if (!fire.TryGetState((i + 1).ToString(), out var state)) + throw new ArgumentOutOfRangeException($"Fire RSI doesn't have state \"{i}\"!"); + + _frames[i] = state.GetFrames(RsiDirection.South); + _frameDelays[i] = state.GetDelays(); + _frameCounter[i] = 0; + } + } + + protected override void FrameUpdate(FrameEventArgs args) + { + base.FrameUpdate(args); + + for (var i = 0; i < FireStates; i++) + { + var delays = _frameDelays[i]; + if (delays.Length == 0) + continue; + + var frameCount = _frameCounter[i]; + _timer[i] += args.DeltaSeconds; + var time = delays[frameCount]; + + if (_timer[i] < time) continue; + _timer[i] -= time; + _frameCounter[i] = (frameCount + 1) % _frames[i].Length; + } + } + + protected override void Draw(in OverlayDrawArgs args) + { + if (args.MapId == MapId.Nullspace) + return; + + var drawHandle = args.WorldHandle; + var xformQuery = _entManager.GetEntityQuery(); + var overlayQuery = _entManager.GetEntityQuery(); + var gridState = (args.WorldBounds, + args.WorldHandle, + _frames, + _frameCounter, + _shader, + overlayQuery, + xformQuery, + _xformSys); + + var mapUid = _mapSystem.GetMapOrInvalid(args.MapId); + + if (args.Space != OverlaySpace.WorldSpaceEntities) + return; + + // TODO: WorldBounds callback. + _mapManager.FindGridsIntersecting(args.MapId, args.WorldAABB, ref gridState, + static (EntityUid uid, MapGridComponent grid, + ref (Box2Rotated WorldBounds, + DrawingHandleWorld drawHandle, + Texture[][] frames, + int[] frameCounter, + ShaderInstance shader, + EntityQuery overlayQuery, + EntityQuery xformQuery, + SharedTransformSystem xformSys) state) => + { + if (!state.overlayQuery.TryGetComponent(uid, out var comp) || + !state.xformQuery.TryGetComponent(uid, out var gridXform)) + { + return true; + } + + var (_, _, worldMatrix, invMatrix) = state.xformSys.GetWorldPositionRotationMatrixWithInv(gridXform); + state.drawHandle.SetTransform(worldMatrix); + var floatBounds = invMatrix.TransformBox(state.WorldBounds).Enlarged(grid.TileSize); + var localBounds = new Box2i( + (int)MathF.Floor(floatBounds.Left), + (int)MathF.Floor(floatBounds.Bottom), + (int)MathF.Ceiling(floatBounds.Right), + (int)MathF.Ceiling(floatBounds.Top)); + + // Currently it would be faster to group drawing by gas rather than by chunk, but if the textures are + // ever moved to a single atlas, that should no longer be the case. So this is just grouping draw calls + // by chunk, even though its currently slower. + + state.drawHandle.UseShader(state.shader); + foreach (var chunk in comp.Chunks.Values) + { + var enumerator = new GasChunkEnumerator(chunk); + + while (enumerator.MoveNext(out var gas)) + { + if (gas.FireState == 0) + continue; + + var index = chunk.Origin + (enumerator.X, enumerator.Y); + if (!localBounds.Contains(index)) + continue; + + var fireState = gas.FireState - 1; + var texture = state.frames[fireState][state.frameCounter[fireState]]; + state.drawHandle.DrawTexture(texture, index); + } + } + + return true; + }); + + drawHandle.UseShader(null); + drawHandle.SetTransform(Matrix3x2.Identity); + } +} diff --git a/Content.Client/Atmos/Overlays/GasTileOverlay.cs b/Content.Client/Atmos/Overlays/GasTileOverlay.cs deleted file mode 100644 index eeb10b54d03..00000000000 --- a/Content.Client/Atmos/Overlays/GasTileOverlay.cs +++ /dev/null @@ -1,302 +0,0 @@ -using System.Numerics; -using Content.Client.Atmos.Components; -using Content.Client.Atmos.EntitySystems; -using Content.Shared.Atmos; -using Content.Shared.Atmos.Components; -using Content.Shared.Atmos.EntitySystems; -using Content.Shared.Atmos.Prototypes; -using Robust.Client.GameObjects; -using Robust.Client.Graphics; -using Robust.Client.ResourceManagement; -using Robust.Shared.Enums; -using Robust.Shared.Graphics.RSI; -using Robust.Shared.Map; -using Robust.Shared.Map.Components; -using Robust.Shared.Prototypes; -using Robust.Shared.Timing; -using Robust.Shared.Utility; - -namespace Content.Client.Atmos.Overlays -{ - public sealed class GasTileOverlay : Overlay - { - private static readonly ProtoId UnshadedShader = "unshaded"; - - private readonly IEntityManager _entManager; - private readonly IMapManager _mapManager; - private readonly SharedAtmosphereSystem _atmosphereSystem; - private readonly SharedMapSystem _mapSystem; - private readonly SharedTransformSystem _xformSys; - - public override OverlaySpace Space => OverlaySpace.WorldSpaceEntities | OverlaySpace.WorldSpaceBelowWorld; - private readonly ShaderInstance _shader; - - // Gas overlays - private readonly float[] _timer; - private readonly float[][] _frameDelays; - private readonly int[] _frameCounter; - - // TODO combine textures into a single texture atlas. - private readonly Texture[][] _frames; - - // Fire overlays - private const int FireStates = 3; - private const string FireRsiPath = "/Textures/Effects/fire.rsi"; - - private readonly float[] _fireTimer = new float[FireStates]; - private readonly float[][] _fireFrameDelays = new float[FireStates][]; - private readonly int[] _fireFrameCounter = new int[FireStates]; - private readonly Texture[][] _fireFrames = new Texture[FireStates][]; - - private int _gasCount; - - public const int GasOverlayZIndex = (int) Shared.DrawDepth.DrawDepth.Effects; // Under ghosts, above mostly everything else - - public GasTileOverlay(GasTileOverlaySystem system, IEntityManager entManager, IResourceCache resourceCache, IPrototypeManager protoMan, SpriteSystem spriteSys, SharedTransformSystem xformSys) - { - _entManager = entManager; - _mapManager = IoCManager.Resolve(); - _atmosphereSystem = entManager.System(); - _mapSystem = entManager.System(); - _xformSys = xformSys; - _shader = protoMan.Index(UnshadedShader).Instance(); - ZIndex = GasOverlayZIndex; - - _gasCount = system.VisibleGasId.Length; - _timer = new float[_gasCount]; - _frameDelays = new float[_gasCount][]; - _frameCounter = new int[_gasCount]; - _frames = new Texture[_gasCount][]; - - for (var i = 0; i < _gasCount; i++) - { - var gasPrototype = _atmosphereSystem.GetGas(system.VisibleGasId[i]); - - SpriteSpecifier overlay; - - if (!string.IsNullOrEmpty(gasPrototype.GasOverlaySprite) && !string.IsNullOrEmpty(gasPrototype.GasOverlayState)) - overlay = new SpriteSpecifier.Rsi(new (gasPrototype.GasOverlaySprite), gasPrototype.GasOverlayState); - else if (!string.IsNullOrEmpty(gasPrototype.GasOverlayTexture)) - overlay = new SpriteSpecifier.Texture(new (gasPrototype.GasOverlayTexture)); - else - continue; - - switch (overlay) - { - case SpriteSpecifier.Rsi animated: - var rsi = resourceCache.GetResource(animated.RsiPath).RSI; - var stateId = animated.RsiState; - - if (!rsi.TryGetState(stateId, out var state)) - continue; - - _frames[i] = state.GetFrames(RsiDirection.South); - _frameDelays[i] = state.GetDelays(); - _frameCounter[i] = 0; - break; - case SpriteSpecifier.Texture texture: - _frames[i] = new[] { spriteSys.Frame0(texture) }; - _frameDelays[i] = Array.Empty(); - break; - } - } - - var fire = resourceCache.GetResource(FireRsiPath).RSI; - - for (var i = 0; i < FireStates; i++) - { - if (!fire.TryGetState((i + 1).ToString(), out var state)) - throw new ArgumentOutOfRangeException($"Fire RSI doesn't have state \"{i}\"!"); - - _fireFrames[i] = state.GetFrames(RsiDirection.South); - _fireFrameDelays[i] = state.GetDelays(); - _fireFrameCounter[i] = 0; - } - } - protected override void FrameUpdate(FrameEventArgs args) - { - base.FrameUpdate(args); - - for (var i = 0; i < _gasCount; i++) - { - var delays = _frameDelays[i]; - if (delays.Length == 0) - continue; - - var frameCount = _frameCounter[i]; - _timer[i] += args.DeltaSeconds; - var time = delays[frameCount]; - - if (_timer[i] < time) - continue; - - _timer[i] -= time; - _frameCounter[i] = (frameCount + 1) % _frames[i].Length; - } - - for (var i = 0; i < FireStates; i++) - { - var delays = _fireFrameDelays[i]; - if (delays.Length == 0) - continue; - - var frameCount = _fireFrameCounter[i]; - _fireTimer[i] += args.DeltaSeconds; - var time = delays[frameCount]; - - if (_fireTimer[i] < time) continue; - _fireTimer[i] -= time; - _fireFrameCounter[i] = (frameCount + 1) % _fireFrames[i].Length; - } - } - - protected override void Draw(in OverlayDrawArgs args) - { - if (args.MapId == MapId.Nullspace) - return; - - var drawHandle = args.WorldHandle; - var xformQuery = _entManager.GetEntityQuery(); - var overlayQuery = _entManager.GetEntityQuery(); - var gridState = (args.WorldBounds, - args.WorldHandle, - _gasCount, - _frames, - _frameCounter, - _fireFrames, - _fireFrameCounter, - _shader, - overlayQuery, - xformQuery, - _xformSys); - - var mapUid = _mapSystem.GetMapOrInvalid(args.MapId); - - if (_entManager.TryGetComponent(mapUid, out var atmos)) - DrawMapOverlay(drawHandle, args, mapUid, atmos); - - if (args.Space != OverlaySpace.WorldSpaceEntities) - return; - - // TODO: WorldBounds callback. - _mapManager.FindGridsIntersecting(args.MapId, args.WorldAABB, ref gridState, - static (EntityUid uid, MapGridComponent grid, - ref (Box2Rotated WorldBounds, - DrawingHandleWorld drawHandle, - int gasCount, - Texture[][] frames, - int[] frameCounter, - Texture[][] fireFrames, - int[] fireFrameCounter, - ShaderInstance shader, - EntityQuery overlayQuery, - EntityQuery xformQuery, - SharedTransformSystem xformSys) state) => - { - if (!state.overlayQuery.TryGetComponent(uid, out var comp) || - !state.xformQuery.TryGetComponent(uid, out var gridXform)) - { - return true; - } - - var (_, _, worldMatrix, invMatrix) = state.xformSys.GetWorldPositionRotationMatrixWithInv(gridXform); - state.drawHandle.SetTransform(worldMatrix); - var floatBounds = invMatrix.TransformBox(state.WorldBounds).Enlarged(grid.TileSize); - var localBounds = new Box2i( - (int) MathF.Floor(floatBounds.Left), - (int) MathF.Floor(floatBounds.Bottom), - (int) MathF.Ceiling(floatBounds.Right), - (int) MathF.Ceiling(floatBounds.Top)); - - // Currently it would be faster to group drawing by gas rather than by chunk, but if the textures are - // ever moved to a single atlas, that should no longer be the case. So this is just grouping draw calls - // by chunk, even though its currently slower. - - state.drawHandle.UseShader(null); - foreach (var chunk in comp.Chunks.Values) - { - var enumerator = new GasChunkEnumerator(chunk); - - while (enumerator.MoveNext(out var gas)) - { - if (gas.Opacity == null!) - continue; - - var tilePosition = chunk.Origin + (enumerator.X, enumerator.Y); - if (!localBounds.Contains(tilePosition)) - continue; - - for (var i = 0; i < state.gasCount; i++) - { - var opacity = gas.Opacity[i]; - if (opacity > 0) - state.drawHandle.DrawTexture(state.frames[i][state.frameCounter[i]], tilePosition, Color.White.WithAlpha(opacity)); - } - } - } - - // And again for fire, with the unshaded shader - state.drawHandle.UseShader(state.shader); - foreach (var chunk in comp.Chunks.Values) - { - var enumerator = new GasChunkEnumerator(chunk); - - while (enumerator.MoveNext(out var gas)) - { - if (gas.FireState == 0) - continue; - - var index = chunk.Origin + (enumerator.X, enumerator.Y); - if (!localBounds.Contains(index)) - continue; - - var fireState = gas.FireState - 1; - var texture = state.fireFrames[fireState][state.fireFrameCounter[fireState]]; - state.drawHandle.DrawTexture(texture, index); - } - } - - return true; - }); - - drawHandle.UseShader(null); - drawHandle.SetTransform(Matrix3x2.Identity); - } - - private void DrawMapOverlay( - DrawingHandleWorld handle, - OverlayDrawArgs args, - EntityUid map, - MapAtmosphereComponent atmos) - { - var mapGrid = _entManager.HasComponent(map); - - // map-grid atmospheres get drawn above grids - if (mapGrid && args.Space != OverlaySpace.WorldSpaceEntities) - return; - - // Normal map atmospheres get drawn below grids - if (!mapGrid && args.Space != OverlaySpace.WorldSpaceBelowWorld) - return; - - var bottomLeft = args.WorldAABB.BottomLeft.Floored(); - var topRight = args.WorldAABB.TopRight.Ceiled(); - - for (var x = bottomLeft.X; x <= topRight.X; x++) - { - for (var y = bottomLeft.Y; y <= topRight.Y; y++) - { - var tilePosition = new Vector2(x, y); - - for (var i = 0; i < atmos.OverlayData.Opacity.Length; i++) - { - var opacity = atmos.OverlayData.Opacity[i]; - - if (opacity > 0) - handle.DrawTexture(_frames[i][_frameCounter[i]], tilePosition, Color.White.WithAlpha(opacity)); - } - } - } - } - } -} diff --git a/Content.Client/Atmos/Overlays/GasTileVisibleGasOverlay.cs b/Content.Client/Atmos/Overlays/GasTileVisibleGasOverlay.cs new file mode 100644 index 00000000000..37298b95fd8 --- /dev/null +++ b/Content.Client/Atmos/Overlays/GasTileVisibleGasOverlay.cs @@ -0,0 +1,258 @@ +using Content.Client.Atmos.Components; +using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; +using Content.Shared.Atmos.EntitySystems; +using Robust.Client.GameObjects; +using Robust.Client.Graphics; +using Robust.Client.ResourceManagement; +using Robust.Shared.Enums; +using Robust.Shared.Graphics.RSI; +using Robust.Shared.Map; +using Robust.Shared.Map.Components; +using Robust.Shared.Prototypes; +using Robust.Shared.Timing; +using Robust.Shared.Utility; +using System.Numerics; +using DrawDepth = Content.Shared.DrawDepth.DrawDepth; + +namespace Content.Client.Atmos.Overlays; + +/// +/// Overlay responsible for rendering visible atmos gasses (like plasma for example) usin. +/// +public sealed class GasTileVisibleGasOverlay : Overlay +{ + [Dependency] private readonly IEntityManager _entManager = default!; + [Dependency] private readonly IResourceCache _resourceCache = default!; + [Dependency] private readonly IPrototypeManager _protoManager = default!; + [Dependency] private readonly IMapManager _mapManager = default!; + + private static readonly ProtoId UnshadedShader = "unshaded"; + + private readonly SharedAtmosphereSystem _atmosphereSystem; + private readonly SharedMapSystem _mapSystem; + private readonly SharedTransformSystem _xformSys; + private readonly SharedGasTileOverlaySystem _gasTileOverlaySystem; + private readonly SpriteSystem _spriteSystem; + + public override OverlaySpace Space => OverlaySpace.WorldSpaceEntities | OverlaySpace.WorldSpaceBelowWorld; + private readonly ShaderInstance _shader; + + // Gas overlays + private readonly float[] _timer; + private readonly float[][] _frameDelays; + private readonly int[] _frameCounter; + + // TODO combine textures into a single texture atlas. + private readonly Texture[][] _frames; + + private readonly int _gasCount; + + public const int GasOverlayZIndex = (int)DrawDepth.Gasses; // Under ghosts and fire, above mostly everything else + + public GasTileVisibleGasOverlay() + { + IoCManager.InjectDependencies(this); + _atmosphereSystem = _entManager.System(); + _mapSystem = _entManager.System(); + _xformSys = _entManager.System(); + _gasTileOverlaySystem = _entManager.System(); + _spriteSystem = _entManager.System(); + + _shader = _protoManager.Index(UnshadedShader).Instance(); + ZIndex = GasOverlayZIndex; + + _gasCount = _gasTileOverlaySystem.VisibleGasId.Length; + _timer = new float[_gasCount]; + _frameDelays = new float[_gasCount][]; + _frameCounter = new int[_gasCount]; + _frames = new Texture[_gasCount][]; + + for (var i = 0; i < _gasCount; i++) + { + var gasPrototype = _atmosphereSystem.GetGas(_gasTileOverlaySystem.VisibleGasId[i]); + + SpriteSpecifier overlay; + + if (!string.IsNullOrEmpty(gasPrototype.GasOverlaySprite) && + !string.IsNullOrEmpty(gasPrototype.GasOverlayState)) + overlay = new SpriteSpecifier.Rsi(new(gasPrototype.GasOverlaySprite), gasPrototype.GasOverlayState); + else if (!string.IsNullOrEmpty(gasPrototype.GasOverlayTexture)) + overlay = new SpriteSpecifier.Texture(new(gasPrototype.GasOverlayTexture)); + else + continue; + + switch (overlay) + { + case SpriteSpecifier.Rsi animated: + var rsi = _resourceCache.GetResource(animated.RsiPath).RSI; + var stateId = animated.RsiState; + + if (!rsi.TryGetState(stateId, out var state)) + continue; + + _frames[i] = state.GetFrames(RsiDirection.South); + _frameDelays[i] = state.GetDelays(); + _frameCounter[i] = 0; + break; + case SpriteSpecifier.Texture texture: + _frames[i] = new[] { _spriteSystem.Frame0(texture) }; + _frameDelays[i] = Array.Empty(); + break; + } + } + } + + protected override void FrameUpdate(FrameEventArgs args) + { + base.FrameUpdate(args); + + for (var i = 0; i < _gasCount; i++) + { + var delays = _frameDelays[i]; + if (delays.Length == 0) + continue; + + var frameCount = _frameCounter[i]; + _timer[i] += args.DeltaSeconds; + var time = delays[frameCount]; + + if (_timer[i] < time) + continue; + + _timer[i] -= time; + _frameCounter[i] = (frameCount + 1) % _frames[i].Length; + } + } + + protected override void Draw(in OverlayDrawArgs args) + { + if (args.MapId == MapId.Nullspace) + return; + + var drawHandle = args.WorldHandle; + var xformQuery = _entManager.GetEntityQuery(); + var overlayQuery = _entManager.GetEntityQuery(); + var gridState = (args.WorldBounds, + args.WorldHandle, + _gasCount, + _frames, + _frameCounter, + _shader, + overlayQuery, + xformQuery, + _xformSys); + + var mapUid = _mapSystem.GetMapOrInvalid(args.MapId); + + if (_entManager.TryGetComponent(mapUid, out var atmos)) + DrawMapOverlay(drawHandle, args, mapUid, atmos); + + if (args.Space != OverlaySpace.WorldSpaceEntities) + return; + + // TODO: WorldBounds callback. + _mapManager.FindGridsIntersecting(args.MapId, + args.WorldAABB, + ref gridState, + static (EntityUid uid, + MapGridComponent grid, + ref (Box2Rotated WorldBounds, + DrawingHandleWorld drawHandle, + int gasCount, + Texture[][] frames, + int[] frameCounter, + ShaderInstance shader, + EntityQuery overlayQuery, + EntityQuery xformQuery, + SharedTransformSystem xformSys) state) => + { + if (!state.overlayQuery.TryGetComponent(uid, out var comp) || + !state.xformQuery.TryGetComponent(uid, out var gridXform)) + { + return true; + } + + var (_, _, worldMatrix, invMatrix) = state.xformSys.GetWorldPositionRotationMatrixWithInv(gridXform); + state.drawHandle.SetTransform(worldMatrix); + var floatBounds = invMatrix.TransformBox(state.WorldBounds).Enlarged(grid.TileSize); + var localBounds = new Box2i( + (int)MathF.Floor(floatBounds.Left), + (int)MathF.Floor(floatBounds.Bottom), + (int)MathF.Ceiling(floatBounds.Right), + (int)MathF.Ceiling(floatBounds.Top)); + + // Currently it would be faster to group drawing by gas rather than by chunk, but if the textures are + // ever moved to a single atlas, that should no longer be the case. So this is just grouping draw calls + // by chunk, even though its currently slower. + + state.drawHandle.UseShader(null); + foreach (var chunk in comp.Chunks.Values) + { + var enumerator = new GasChunkEnumerator(chunk); + + while (enumerator.MoveNext(out var gas)) + { + if (gas.Opacity == null!) + continue; + + var tilePosition = chunk.Origin + (enumerator.X, enumerator.Y); + if (!localBounds.Contains(tilePosition)) + continue; + + for (var i = 0; i < state.gasCount; i++) + { + var opacity = gas.Opacity[i]; + if (opacity > 0) + { + state.drawHandle.DrawTexture(state.frames[i][state.frameCounter[i]], + tilePosition, + Color.White.WithAlpha(opacity)); + } + } + } + } + + return true; + }); + + drawHandle.UseShader(null); + drawHandle.SetTransform(Matrix3x2.Identity); + } + + private void DrawMapOverlay( + DrawingHandleWorld handle, + OverlayDrawArgs args, + EntityUid map, + MapAtmosphereComponent atmos) + { + var mapGrid = _entManager.HasComponent(map); + + // map-grid atmospheres get drawn above grids + if (mapGrid && args.Space != OverlaySpace.WorldSpaceEntities) + return; + + // Normal map atmospheres get drawn below grids + if (!mapGrid && args.Space != OverlaySpace.WorldSpaceBelowWorld) + return; + + var bottomLeft = args.WorldAABB.BottomLeft.Floored(); + var topRight = args.WorldAABB.TopRight.Ceiled(); + + for (var x = bottomLeft.X; x <= topRight.X; x++) + { + for (var y = bottomLeft.Y; y <= topRight.Y; y++) + { + var tilePosition = new Vector2(x, y); + + for (var i = 0; i < atmos.OverlayData.Opacity.Length; i++) + { + var opacity = atmos.OverlayData.Opacity[i]; + + if (opacity > 0) + handle.DrawTexture(_frames[i][_frameCounter[i]], tilePosition, Color.White.WithAlpha(opacity)); + } + } + } + } +} diff --git a/Content.Shared/DrawDepth/DrawDepth.cs b/Content.Shared/DrawDepth/DrawDepth.cs index 35fead5b3fd..288602353c8 100644 --- a/Content.Shared/DrawDepth/DrawDepth.cs +++ b/Content.Shared/DrawDepth/DrawDepth.cs @@ -112,17 +112,22 @@ public enum DrawDepth /// Overdoors = DrawDepthTag.Default + 10, + /// + /// Visible atmos gas. + /// + Gasses = DrawDepthTag.Default + 11, + /// /// Explosions, fire, melee swings. Whatever. /// - Effects = DrawDepthTag.Default + 11, + Effects = DrawDepthTag.Default + 12, - Ghosts = DrawDepthTag.Default + 12, + Ghosts = DrawDepthTag.Default + 13, /// /// Use this selectively if it absolutely needs to be drawn above (almost) everything else. Examples include /// the pointing arrow, the drag & drop ghost-entity, and some debug tools. /// - Overlays = DrawDepthTag.Default + 13, + Overlays = DrawDepthTag.Default + 14, } } From 3caea1649d7ac20e7407e2a9f26cf4840f01b3e9 Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Sun, 15 Mar 2026 04:23:56 -0400 Subject: [PATCH 530/603] Move ID card name/title length limit to server (#43237) * Validate string lengths serverside * Organize usings * Remove clientside check * Also remove the cvar caching in the UI It's one dictionary call, Michael. What could it cost? --- .../UI/IdCardConsoleBoundUserInterface.cs | 16 ---------------- .../Access/UI/IdCardConsoleWindow.xaml.cs | 11 ++--------- .../Access/Systems/IdCardConsoleSystem.cs | 18 +++++++++++++++--- 3 files changed, 17 insertions(+), 28 deletions(-) diff --git a/Content.Client/Access/UI/IdCardConsoleBoundUserInterface.cs b/Content.Client/Access/UI/IdCardConsoleBoundUserInterface.cs index 801140f5172..81b1c087d88 100644 --- a/Content.Client/Access/UI/IdCardConsoleBoundUserInterface.cs +++ b/Content.Client/Access/UI/IdCardConsoleBoundUserInterface.cs @@ -1,11 +1,9 @@ using Content.Shared.Access; using Content.Shared.Access.Components; using Content.Shared.Access.Systems; -using Content.Shared.CCVar; using Content.Shared.Containers.ItemSlots; using Content.Shared.CrewManifest; using Content.Shared.Roles; -using Robust.Shared.Configuration; using Robust.Shared.Prototypes; using static Content.Shared.Access.Components.IdCardConsoleComponent; @@ -14,21 +12,13 @@ namespace Content.Client.Access.UI public sealed class IdCardConsoleBoundUserInterface : BoundUserInterface { [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly IConfigurationManager _cfgManager = default!; private readonly SharedIdCardConsoleSystem _idCardConsoleSystem = default!; private IdCardConsoleWindow? _window; - // CCVar. - private int _maxNameLength; - private int _maxIdJobLength; - public IdCardConsoleBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) { _idCardConsoleSystem = EntMan.System(); - - _maxNameLength =_cfgManager.GetCVar(CCVars.MaxNameLength); - _maxIdJobLength = _cfgManager.GetCVar(CCVars.MaxIdJobLength); } protected override void Open() @@ -77,12 +67,6 @@ protected override void UpdateState(BoundUserInterfaceState state) public void SubmitData(string newFullName, string newJobTitle, List> newAccessList, ProtoId newJobPrototype) { - if (newFullName.Length > _maxNameLength) - newFullName = newFullName[.._maxNameLength]; - - if (newJobTitle.Length > _maxIdJobLength) - newJobTitle = newJobTitle[.._maxIdJobLength]; - SendMessage(new WriteToTargetIdMessage( newFullName, newJobTitle, diff --git a/Content.Client/Access/UI/IdCardConsoleWindow.xaml.cs b/Content.Client/Access/UI/IdCardConsoleWindow.xaml.cs index 30a7d969b61..bb44ae26155 100644 --- a/Content.Client/Access/UI/IdCardConsoleWindow.xaml.cs +++ b/Content.Client/Access/UI/IdCardConsoleWindow.xaml.cs @@ -23,10 +23,6 @@ public sealed partial class IdCardConsoleWindow : DefaultWindow private readonly IdCardConsoleBoundUserInterface _owner; - // CCVar. - private int _maxNameLength; - private int _maxIdJobLength; - private AccessLevelControl _accessButtons = new(); private readonly List _jobPrototypeIds = new(); @@ -46,11 +42,8 @@ public IdCardConsoleWindow(IdCardConsoleBoundUserInterface owner, IPrototypeMana _owner = owner; - _maxNameLength = _cfgManager.GetCVar(CCVars.MaxNameLength); - _maxIdJobLength = _cfgManager.GetCVar(CCVars.MaxIdJobLength); - FullNameLineEdit.OnTextEntered += _ => SubmitData(); - FullNameLineEdit.IsValid = s => s.Length <= _maxNameLength; + FullNameLineEdit.IsValid = s => s.Length <= _cfgManager.GetCVar(CCVars.MaxNameLength); FullNameLineEdit.OnTextChanged += _ => { FullNameSaveButton.Disabled = FullNameSaveButton.Text == _lastFullName; @@ -58,7 +51,7 @@ public IdCardConsoleWindow(IdCardConsoleBoundUserInterface owner, IPrototypeMana FullNameSaveButton.OnPressed += _ => SubmitData(); JobTitleLineEdit.OnTextEntered += _ => SubmitData(); - JobTitleLineEdit.IsValid = s => s.Length <= _maxIdJobLength; + JobTitleLineEdit.IsValid = s => s.Length <= _cfgManager.GetCVar(CCVars.MaxIdJobLength); JobTitleLineEdit.OnTextChanged += _ => { JobTitleSaveButton.Disabled = JobTitleLineEdit.Text == _lastJobTitle; diff --git a/Content.Server/Access/Systems/IdCardConsoleSystem.cs b/Content.Server/Access/Systems/IdCardConsoleSystem.cs index 9f21fd68d8c..0ea55eee911 100644 --- a/Content.Server/Access/Systems/IdCardConsoleSystem.cs +++ b/Content.Server/Access/Systems/IdCardConsoleSystem.cs @@ -3,15 +3,14 @@ using Content.Server.Chat.Systems; using Content.Server.Containers; using Content.Server.StationRecords.Systems; +using Content.Shared.Access; using Content.Shared.Access.Components; -using static Content.Shared.Access.Components.IdCardConsoleComponent; using Content.Shared.Access.Systems; -using Content.Shared.Access; using Content.Shared.Administration.Logs; +using Content.Shared.CCVar; using Content.Shared.Chat; using Content.Shared.Construction; using Content.Shared.Containers.ItemSlots; -using Content.Shared.Damage; using Content.Shared.Damage.Systems; using Content.Shared.Database; using Content.Shared.Roles; @@ -19,15 +18,18 @@ using Content.Shared.Throwing; using JetBrains.Annotations; using Robust.Server.GameObjects; +using Robust.Shared.Configuration; using Robust.Shared.Containers; using Robust.Shared.Prototypes; using Robust.Shared.Random; +using static Content.Shared.Access.Components.IdCardConsoleComponent; namespace Content.Server.Access.Systems; [UsedImplicitly] public sealed class IdCardConsoleSystem : SharedIdCardConsoleSystem { + [Dependency] private readonly IConfigurationManager _cfgManager = default!; [Dependency] private readonly IPrototypeManager _prototype = default!; [Dependency] private readonly StationRecordsSystem _record = default!; [Dependency] private readonly UserInterfaceSystem _userInterface = default!; @@ -143,6 +145,16 @@ private void TryWriteToTargetId(EntityUid uid, if (component.TargetIdSlot.Item is not { Valid: true } targetId || !PrivilegedIdIsAuthorized(uid, component, out var privilegedId)) return; + // Limit name and job title lengths + var maxNameLength = _cfgManager.GetCVar(CCVars.MaxNameLength); + var maxIdJobLength = _cfgManager.GetCVar(CCVars.MaxIdJobLength); + + if (newFullName.Length > maxNameLength) + newFullName = newFullName[..maxNameLength]; + + if (newJobTitle.Length > maxIdJobLength) + newJobTitle = newJobTitle[..maxIdJobLength]; + _idCard.TryChangeFullName(targetId, newFullName, player: player); _idCard.TryChangeJobTitle(targetId, newJobTitle, player: player); From 60ce454cb5dfe411a70fa8b2320770d4549f6b23 Mon Sep 17 00:00:00 2001 From: Diego Lobo Date: Sun, 15 Mar 2026 05:28:01 -0600 Subject: [PATCH 531/603] Update ruined_prison_ship.yml (#43242) Fixed the ruined prison ship yml 2779 line Destryoed thruster to Destroyed thruster --- Resources/Maps/Ruins/ruined_prison_ship.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Maps/Ruins/ruined_prison_ship.yml b/Resources/Maps/Ruins/ruined_prison_ship.yml index 89ae5e5171e..294dce1b37a 100644 --- a/Resources/Maps/Ruins/ruined_prison_ship.yml +++ b/Resources/Maps/Ruins/ruined_prison_ship.yml @@ -2776,7 +2776,7 @@ entities: components: - type: MetaData desc: looks like it took some serious explosive damage - name: Destryoed thruster + name: Destroyed thruster - type: Transform pos: -2.5,-7.5 parent: 2 From 57d82107c355d5caa055cfe20c20e29db62e5155 Mon Sep 17 00:00:00 2001 From: ScarKy0 Date: Sun, 15 Mar 2026 12:50:39 +0100 Subject: [PATCH 532/603] Revert "Remove salv stuff from mothership (#43007)" This reverts commit eea773ffee682f21b0209976205fb3984d7d6581. --- Resources/Maps/Shuttles/mothership.yml | 305 +++++++++++++++++- .../Catalog/Fills/Crates/xenoborg.yml | 17 - 2 files changed, 288 insertions(+), 34 deletions(-) delete mode 100644 Resources/Prototypes/Catalog/Fills/Crates/xenoborg.yml diff --git a/Resources/Maps/Shuttles/mothership.yml b/Resources/Maps/Shuttles/mothership.yml index 695a8cc40cf..f2b2a652a3b 100644 --- a/Resources/Maps/Shuttles/mothership.yml +++ b/Resources/Maps/Shuttles/mothership.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Grid - engineVersion: 272.0.0 + engineVersion: 270.1.0 forkId: "" forkVersion: "" - time: 02/23/2026 18:44:56 - entityCount: 567 + time: 01/16/2026 03:06:16 + entityCount: 591 maps: [] grids: - 1 @@ -160,8 +160,6 @@ entities: - type: GasTileOverlay - type: RadiationGridResistance - type: ExplosionAirtightGrid - - type: TileHistory - chunkHistory: {} - proto: AirlockGlassShuttleXenoborgLocked entities: - uid: 107 @@ -1466,6 +1464,16 @@ entities: - type: Transform pos: 2.5,-6.5 parent: 1 +- proto: CableApcStack + entities: + - uid: 345 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 - proto: CableHV entities: - uid: 139 @@ -1518,6 +1526,16 @@ entities: - type: Transform pos: -9.5,0.5 parent: 1 +- proto: CableHVStack + entities: + - uid: 343 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 - proto: CableMV entities: - uid: 149 @@ -1885,6 +1903,16 @@ entities: - type: Transform pos: 6.5,-0.5 parent: 1 +- proto: CableMVStack + entities: + - uid: 339 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 - proto: CableTerminal entities: - uid: 138 @@ -1971,13 +1999,73 @@ entities: - type: Transform pos: 1.5,2.5 parent: 1 -- proto: CrateXenoborgStartingSupplies +- proto: ConveyorBelt entities: - - uid: 111 + - uid: 243 + components: + - type: Transform + pos: 0.5,-8.5 + parent: 1 + - uid: 244 + components: + - type: Transform + pos: 0.5,-7.5 + parent: 1 + - uid: 245 + components: + - type: Transform + pos: 0.5,-6.5 + parent: 1 + - uid: 247 + components: + - type: Transform + pos: 0.5,-4.5 + parent: 1 + - uid: 250 + components: + - type: Transform + pos: 0.5,-9.5 + parent: 1 + - uid: 251 + components: + - type: Transform + pos: 0.5,-10.5 + parent: 1 +- proto: CrateGenericSteel + entities: + - uid: 425 components: - type: Transform pos: -0.5,-1.5 parent: 1 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 455 + - 453 + - 370 + - 340 + - 346 + - 341 + - 344 + - 342 + - 456 + - 586 + - 587 + - 588 + - 589 + - 345 + - 343 + - 339 + - 590 + - 591 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null - proto: DisposalBend entities: - uid: 377 @@ -2273,11 +2361,6 @@ entities: - type: Transform pos: 2.5,-7.5 parent: 1 - - uid: 244 - components: - - type: Transform - pos: 0.5,-5.5 - parent: 1 - uid: 254 components: - type: Transform @@ -2394,6 +2477,141 @@ entities: - type: Transform pos: 6.5,3.5 parent: 1 +- proto: Recycler + entities: + - uid: 111 + components: + - type: Transform + pos: 0.5,-5.5 + parent: 1 +- proto: SheetGlass + entities: + - uid: 586 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 + - uid: 589 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 +- proto: SheetPlasteel + entities: + - uid: 340 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 + - uid: 342 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 +- proto: SheetPlastic + entities: + - uid: 341 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 + - uid: 344 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 +- proto: SheetSteel + entities: + - uid: 346 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 + - uid: 370 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 + - uid: 453 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 + - uid: 455 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 + - uid: 456 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 + - uid: 587 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 + - uid: 588 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 + - uid: 590 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 + - uid: 591 + components: + - type: Transform + parent: 425 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 425 - proto: SignalButton entities: - uid: 584 @@ -2735,6 +2953,64 @@ entities: parent: 1 - proto: TwoWayLever entities: + - uid: 249 + components: + - type: MetaData + name: conveyor + - type: Transform + pos: -0.5,-4.5 + parent: 1 + - type: DeviceLinkSource + linkedPorts: + 247: + - - Left + - Reverse + - - Right + - Forward + - - Middle + - Off + 111: + - - Left + - Reverse + - - Right + - Forward + - - Middle + - Off + 245: + - - Left + - Reverse + - - Right + - Forward + - - Middle + - Off + 244: + - - Left + - Reverse + - - Right + - Forward + - - Middle + - Off + 243: + - - Left + - Reverse + - - Right + - Forward + - - Middle + - Off + 251: + - - Left + - Reverse + - - Right + - Forward + - - Middle + - Off + 250: + - - Left + - Reverse + - - Right + - Forward + - - Middle + - Off - uid: 328 components: - type: MetaData @@ -3462,11 +3738,6 @@ entities: - type: Transform pos: 1.5,6.5 parent: 1 - - uid: 243 - components: - - type: Transform - pos: 0.5,-5.5 - parent: 1 - uid: 349 components: - type: Transform diff --git a/Resources/Prototypes/Catalog/Fills/Crates/xenoborg.yml b/Resources/Prototypes/Catalog/Fills/Crates/xenoborg.yml deleted file mode 100644 index 95c517461fd..00000000000 --- a/Resources/Prototypes/Catalog/Fills/Crates/xenoborg.yml +++ /dev/null @@ -1,17 +0,0 @@ -- type: entity - parent: CrateGenericSteel - id: CrateXenoborgStartingSupplies - name: xenoborg supplies crate - description: Contains starting materials for the mothership to make more xenoborgs. - components: - - type: EntityTableContainerFill - containers: - entity_storage: !type:AllSelector - children: - - id: SheetSteel - amount: 2 - - id: MaterialXenoborgCrystal - amount: 2 - - id: CableApcStack - - id: CableMVStack - - id: CableHVStack From f796cef04a284f98666cc3cbec18091d3a81f0c8 Mon Sep 17 00:00:00 2001 From: ScarKy0 Date: Sun, 15 Mar 2026 12:52:13 +0100 Subject: [PATCH 533/603] remove changelog --- Resources/Changelog/Maps.yml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/Resources/Changelog/Maps.yml b/Resources/Changelog/Maps.yml index 7de5017effe..dab32e7b79e 100644 --- a/Resources/Changelog/Maps.yml +++ b/Resources/Changelog/Maps.yml @@ -1045,16 +1045,6 @@ id: 127 time: '2026-02-28T06:56:45.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43061 -- author: Samuka - changes: - - message: Removed recycler and conveyor from the xenoborg mothership. - type: Remove - - message: Changed the starting materials of the xenoborg mothership to include - xenoborg crystals. - type: Tweak - id: 128 - time: '2026-03-04T09:08:04.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/43007 - author: TytosB changes: - message: several changes to Serpentcrest, salv area rework. From 38f780037036a6db556e4108de0a87324604ff97 Mon Sep 17 00:00:00 2001 From: Centronias Date: Sun, 15 Mar 2026 06:45:46 -0700 Subject: [PATCH 534/603] Single item cargo orders are delivered in Parcel Wrap instead of crates (#40834) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * - rework a bunch of cargo orders to not send a crate with just one thing - instead sends the item, wrapped - add ability for cargo orders to wrap the item ordered in parcel wrap - cargo order name and descriptions are now localization strings, but still 99.99% of the time just get that info from the entity they're spawning - small refactor to how cargo orders move around in cargo code so that the actual order proto is kept around longer - small rework to certain restock cargo orders to halve the cost and number of items received in one order * oop * Suffering * Arbitrary containers for cargo products * I ran the tests locally and they passed, github please rerun :) * massage Slarti's work into this. Mainly by taking the API wrapping ability out back with the rifle q-q * testfail fake * wow `_applyingState` is useful, I wonder where I should've been using that in other PRs before :^) * pr comments * tfw the hook doesn't update the submodule * Update Content.Client/Cargo/UI/CargoConsoleMenu.xaml.cs Co-authored-by: āda * PR comments * fixies * Update Content.Client/Cargo/UI/CargoConsoleMenu.xaml.cs * Update Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.WrappedParcel.cs * fix wrapped parcel entity name + audio * Actually read PR comments * Apply suggestions from code review Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> --------- Co-authored-by: āda Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> --- .../Cargo/UI/CargoConsoleMenu.xaml.cs | 8 +- .../Cargo/UI/CargoShuttleMenu.xaml.cs | 5 +- .../Tests/VendingMachineRestockTest.cs | 69 +++--- .../Cargo/Systems/CargoSystem.Orders.cs | 54 +++-- .../StationEvents/Events/CargoGiftsRule.cs | 4 +- Content.Shared/Cargo/CargoOrderData.cs | 22 +- .../Cargo/Prototypes/CargoProductPrototype.cs | 48 +++- .../Components/ParcelWrapComponent.cs | 24 +- .../Components/ParcelWrapOverrideComponent.cs | 4 +- .../Components/WrappedParcelComponent.cs | 16 ++ .../ParcelWrappingSystem.ParcelWrap.cs | 83 ++++--- .../ParcelWrappingSystem.WrappedParcel.cs | 53 ++++- .../Systems/ParcelWrappingSystem.cs | 2 - .../cargo/cargoproduct-descriptions.ftl | 12 + .../Catalog/Cargo/cargo_emergency.yml | 6 +- .../Prototypes/Catalog/Cargo/cargo_fun.yml | 5 +- .../Catalog/Cargo/cargo_livestock.yml | 10 +- .../Catalog/Cargo/cargo_materials.yml | 21 +- .../Catalog/Cargo/cargo_service.yml | 5 +- .../Catalog/Cargo/cargo_vending.yml | 111 ++++++--- .../Catalog/Cargo/salvage_rewards.yml | 15 +- .../Catalog/Fills/Crates/vending.yml | 217 ------------------ .../Entities/Objects/Misc/parcel_wrap.yml | 5 +- Resources/migration.yml | 23 ++ 24 files changed, 417 insertions(+), 405 deletions(-) create mode 100644 Resources/Locale/en-US/prototypes/catalog/cargo/cargoproduct-descriptions.ftl diff --git a/Content.Client/Cargo/UI/CargoConsoleMenu.xaml.cs b/Content.Client/Cargo/UI/CargoConsoleMenu.xaml.cs index 92039789473..344596f99d9 100644 --- a/Content.Client/Cargo/UI/CargoConsoleMenu.xaml.cs +++ b/Content.Client/Cargo/UI/CargoConsoleMenu.xaml.cs @@ -211,11 +211,11 @@ public void PopulateOrders(IEnumerable orders) foreach (var order in orders) { - if (order.Approved) + if (order.Approved || !_protoManager.Resolve(order.Product, out var productProto)) continue; - var product = _protoManager.Index(order.ProductId); - var productName = product.Name; + var product = _protoManager.Index(productProto.Product); + var productName = productProto.Name; var requester = !string.IsNullOrEmpty(order.Requester) ? order.Requester : Loc.GetString("cargo-console-menu-order-row-alerts-requester-unknown"); var account = _protoManager.Index(order.Account); @@ -230,7 +230,7 @@ public void PopulateOrders(IEnumerable orders) "cargo-console-menu-order-row-title", ("productName", productName), ("orderAmount", order.OrderQuantity), - ("orderPrice", order.Price)), + ("orderPrice", productProto.Cost)), }, Stride = diff --git a/Content.Client/Cargo/UI/CargoShuttleMenu.xaml.cs b/Content.Client/Cargo/UI/CargoShuttleMenu.xaml.cs index 970051432be..a4ed3f2bde8 100644 --- a/Content.Client/Cargo/UI/CargoShuttleMenu.xaml.cs +++ b/Content.Client/Cargo/UI/CargoShuttleMenu.xaml.cs @@ -34,7 +34,10 @@ public void SetOrders(SpriteSystem sprites, IPrototypeManager protoManager, List foreach (var order in orders) { - var product = protoManager.Index(order.ProductId); + if (!protoManager.Resolve(order.Product, out var productProto)) + continue; + + var product = protoManager.Index(productProto.Product); var productName = product.Name; var account = protoManager.Index(order.Account); diff --git a/Content.IntegrationTests/Tests/VendingMachineRestockTest.cs b/Content.IntegrationTests/Tests/VendingMachineRestockTest.cs index 7835ccad3e9..7058cfab6a1 100644 --- a/Content.IntegrationTests/Tests/VendingMachineRestockTest.cs +++ b/Content.IntegrationTests/Tests/VendingMachineRestockTest.cs @@ -121,66 +121,77 @@ public async Task TestAllRestocksAreAvailableToBuy() await server.WaitAssertion(() => { - HashSet restocks = new(); - Dictionary> restockStores = new(); - - // Collect all the prototypes with restock components. + // Collect all entity prototypes which are vending machine restocks. + var restockEntities = new HashSet>(); foreach (var proto in prototypeManager.EnumeratePrototypes()) { if (proto.Abstract || pair.IsTestPrototype(proto) || !proto.HasComponent()) - { continue; - } - restocks.Add(proto.ID); + restockEntities.Add(proto.ID); } - // Collect all the prototypes with EntityTableContainerFills referencing those entities. + // Collect all entity prototypes with `EntityTableContainerFill`s which contain those restock entities. + // Specifically, this is a mapping of entities-with-container-fill to their-contained-entities-which-are-restocks. + Dictionary, + List>> entitiesWhichSpawnRestocks = new(); foreach (var proto in prototypeManager.EnumeratePrototypes()) { - if (!proto.TryGetComponent(out var storage, compFact)) + if (!proto.TryGetComponent(out var fill, compFact)) continue; - var containers = storage.Containers; + var containers = fill.Containers; - if (!containers.TryGetValue(SharedEntityStorageSystem.ContainerName, out var container)) // We only care about this container type. + // We only care about the special known container. + if (!containers.TryGetValue(SharedEntityStorageSystem.ContainerName, out var container)) continue; - List restockStore = new(); - - foreach (var spawnEntry in entityTable.GetSpawns(container)) + var entitiesInProtoContainingRestock = new List>(); + foreach (var (fillSpawnEntry, _) in entityTable.ListSpawns(container)) { - if (restocks.Contains(spawnEntry)) - restockStore.Add(spawnEntry); + if (restockEntities.Contains(fillSpawnEntry.Id)) + entitiesInProtoContainingRestock.Add(fillSpawnEntry.Id); } - if (restockStore.Count > 0) - restockStores.Add(proto.ID, restockStore); + if (entitiesInProtoContainingRestock.Count > 0) + entitiesWhichSpawnRestocks.Add(proto.ID, entitiesInProtoContainingRestock); } - // Iterate through every CargoProduct and make sure each - // prototype with a restock component is referenced in a - // purchaseable entity with an EntityTableContianerFill. + // Remove all restock entities from our set which are either directly purchasable as a CargoProduct, or + // which are spawned by EntityTableContainerFill on a CargoProduct. foreach (var proto in prototypeManager.EnumeratePrototypes()) { - if (restockStores.ContainsKey(proto.Product)) + // If the cargo product's product is the restock itself, just remove it. + restockEntities.Remove(proto.Product.Id); + + // Check if the product is an entity which spawns a restock. + if (entitiesWhichSpawnRestocks.TryGetValue(proto.Product.Id, out var restocksSpawnedByProduct)) { - foreach (var entry in restockStores[proto.Product]) - restocks.Remove(entry); + foreach (var entry in restocksSpawnedByProduct) + { + restockEntities.Remove(entry); + } - restockStores.Remove(proto.Product); + entitiesWhichSpawnRestocks.Remove(proto.Product.Id); } } + // Any entities left in restockEntities are restocks which can't be bought from Cargo. Assert.Multiple(() => { - Assert.That(restockStores, Has.Count.EqualTo(0), - $"Some entities containing entities with VendingMachineRestock components are unavailable for purchase: \n - {string.Join("\n - ", restockStores.Keys)}"); + const string restockCompName = nameof(VendingMachineRestockComponent); + + Assert.That(entitiesWhichSpawnRestocks, + Has.Count.EqualTo(0), + $"Some entities containing entities with {restockCompName} are unavailable for purchase: \n - {string.Join("\n - ", entitiesWhichSpawnRestocks.Keys)}"); + + - Assert.That(restocks, Has.Count.EqualTo(0), - $"Some entities with VendingMachineRestock components are unavailable for purchase: \n - {string.Join("\n - ", restocks)}"); + Assert.That(restockEntities, + Has.Count.EqualTo(0), + $"Some entities with {restockCompName} are unavailable for purchase: \n - {string.Join("\n - ", restockEntities)}"); }); }); diff --git a/Content.Server/Cargo/Systems/CargoSystem.Orders.cs b/Content.Server/Cargo/Systems/CargoSystem.Orders.cs index baa436c41b2..dc89dfae169 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.Orders.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.Orders.cs @@ -77,7 +77,7 @@ private void OnInteractUsingSlip(Entity ent, ref Int return; var orderId = GenerateOrderId(orderDatabase); - var data = new CargoOrderData(orderId, product.Product, product.Name, product.Cost, slip.OrderQuantity, slip.Requester, slip.Reason, slip.Account); + var data = new CargoOrderData(orderId, product, slip.OrderQuantity, slip.Requester, slip.Reason, slip.Account); if (!TryAddOrder(stationUid.Value, ent.Comp.Account, data, orderDatabase)) { @@ -89,7 +89,7 @@ private void OnInteractUsingSlip(Entity ent, ref Int _audio.PlayPvs(ent.Comp.ScanSound, ent); _adminLogger.Add(LogType.Action, LogImpact.Low, - $"{ToPrettyString(args.User):user} inserted order slip [orderId:{data.OrderId}, quantity:{data.OrderQuantity}, product:{data.ProductId}, requester:{data.Requester}, reason:{data.Reason}]"); + $"{ToPrettyString(args.User):user} inserted order slip [orderId:{data.OrderId}, quantity:{data.OrderQuantity}, product:{data.Product}, requester:{data.Requester}, reason:{data.Reason}]"); QueueDel(args.Used); args.Handled = true; } @@ -174,7 +174,7 @@ private void OnApproveOrderMessage(EntityUid uid, CargoOrderConsoleComponent com } // Invalid order - if (!_protoMan.HasIndex(order.ProductId)) + if (!_protoMan.Resolve(order.Product, out var product)) { ConsolePopup(args.Actor, Loc.GetString("cargo-console-invalid-product")); PlayDenySound(uid, component); @@ -202,7 +202,7 @@ private void OnApproveOrderMessage(EntityUid uid, CargoOrderConsoleComponent com PlayDenySound(uid, component); } - var cost = order.Price * order.OrderQuantity; + var cost = product.Cost * order.OrderQuantity; var accountBalance = GetBalanceFromAccount((station.Value, bank), order.Account); // Not enough balance @@ -239,7 +239,7 @@ private void OnApproveOrderMessage(EntityUid uid, CargoOrderConsoleComponent com order.SetApproverData(tryGetIdentityShortInfoEvent.Title); var message = Loc.GetString("cargo-console-unlock-approved-order-broadcast", - ("productName", Loc.GetString(order.ProductName)), + ("productName", Loc.GetString(product.Name)), ("orderAmount", order.OrderQuantity), ("approver", order.Approver ?? string.Empty), ("cost", cost)); @@ -253,7 +253,7 @@ private void OnApproveOrderMessage(EntityUid uid, CargoOrderConsoleComponent com // Log order approval _adminLogger.Add(LogType.Action, LogImpact.Low, - $"{ToPrettyString(player):user} approved order [orderId:{order.OrderId}, quantity:{order.OrderQuantity}, product:{order.ProductId}, requester:{order.Requester}, reason:{order.Reason}] on account {order.Account} with balance at {accountBalance}"); + $"{ToPrettyString(player):user} approved order [orderId:{order.OrderId}, quantity:{order.OrderQuantity}, product:{order.Product}, requester:{order.Requester}, reason:{order.Reason}] on account {order.Account} with balance at {accountBalance}"); orderDatabase.Orders[component.Account].Remove(order); UpdateBankAccount((station.Value, bank), -cost, order.Account); @@ -398,7 +398,7 @@ private void OnAddOrderMessage(EntityUid uid, CargoOrderConsoleComponent compone // Log order addition _adminLogger.Add(LogType.Action, LogImpact.Low, - $"{ToPrettyString(player):user} added order [orderId:{data.OrderId}, quantity:{data.OrderQuantity}, product:{data.ProductId}, requester:{data.Requester}, reason:{data.Reason}]"); + $"{ToPrettyString(player):user} added order [orderId:{data.OrderId}, quantity:{data.OrderQuantity}, product:{data.Product}, requester:{data.Requester}, reason:{data.Reason}]"); } @@ -467,7 +467,7 @@ private void PlayDenySound(EntityUid uid, CargoOrderConsoleComponent component) private static CargoOrderData GetOrderData(CargoConsoleAddOrderMessage args, CargoProductPrototype cargoProduct, int id, ProtoId account) { - return new CargoOrderData(id, cargoProduct.Product, cargoProduct.Name, cargoProduct.Cost, args.Amount, args.Requester, args.Reason, account); + return new CargoOrderData(id, cargoProduct, args.Amount, args.Requester, args.Reason, account); } public int GetOutstandingOrderCount(Entity station, ProtoId account) @@ -520,9 +520,7 @@ private void UpdateOrders(EntityUid dbUid) public bool AddAndApproveOrder( EntityUid dbUid, - string spawnId, - string name, - int cost, + CargoProductPrototype product, int qty, string sender, string description, @@ -532,10 +530,9 @@ public bool AddAndApproveOrder( Entity stationData ) { - DebugTools.Assert(_protoMan.HasIndex(spawnId)); // Make an order var id = GenerateOrderId(component); - var order = new CargoOrderData(id, spawnId, name, cost, qty, sender, description, account); + var order = new CargoOrderData(id, product, qty, sender, description, account); // Approve it now order.SetApproverData(dest, sender); @@ -544,7 +541,7 @@ Entity stationData // Log order addition _adminLogger.Add(LogType.Action, LogImpact.Low, - $"AddAndApproveOrder {description} added order [orderId:{order.OrderId}, quantity:{order.OrderQuantity}, product:{order.ProductId}, requester:{order.Requester}, reason:{order.Reason}]"); + $"AddAndApproveOrder {description} added order [orderId:{order.OrderId}, quantity:{order.OrderQuantity}, product:{order.Product}, requester:{order.Requester}, reason:{order.Reason}]"); // Add it to the list return TryAddOrder(dbUid, account, order, component) && TryFulfillOrder(stationData, account, order, component).HasValue; @@ -619,11 +616,34 @@ private bool FulfillNextOrder(StationCargoOrderDatabaseComponent orderDB, ProtoI /// private bool FulfillOrder(CargoOrderData order, ProtoId account, EntityCoordinates spawn, string? paperProto) { + if (!_protoMan.Resolve(order.Product, out var product)) + return false; + // Create the item itself - var item = Spawn(order.ProductId, spawn); + var item = Spawn(product.Product, spawn); + var itemXForm = Transform(item); // Ensure the item doesn't start anchored - _transformSystem.Unanchor(item, Transform(item)); + _transformSystem.Unanchor(item, itemXForm); + + // Spawn container and insert the item into it if a container is defined. + if (product.Container is { } productContainer) + { + var containerEntity = Spawn(productContainer.Entity, itemXForm.Coordinates); + _transformSystem.SetLocalRotation(containerEntity, itemXForm.LocalRotation); + + if (!_container.TryGetContainer(containerEntity, productContainer.ContainerId, out var container1) || + !_container.Insert(item, container1, force: true)) + { + DebugTools.Assert( + $"Failed to insert cargo product into its specified container. This indicates an error in the cargo product definition's YAML as the product should be insertable into its container. {nameof(CargoProductPrototype)}: {(ProtoId)order.Product.Id}"); + QueueDel(containerEntity); + } + else + { + item = containerEntity; + } + } // Create a sheet of paper to write the order details on var printed = Spawn(paperProto, spawn); @@ -638,7 +658,7 @@ private bool FulfillOrder(CargoOrderData order, ProtoId a Loc.GetString( "cargo-console-paper-print-text", ("orderNumber", order.OrderId), - ("itemName", MetaData(item).EntityName), + ("itemName", product.Name), ("orderQuantity", order.OrderQuantity), ("requester", order.Requester), ("reason", string.IsNullOrWhiteSpace(order.Reason) ? Loc.GetString("cargo-console-paper-reason-default") : order.Reason), diff --git a/Content.Server/StationEvents/Events/CargoGiftsRule.cs b/Content.Server/StationEvents/Events/CargoGiftsRule.cs index d38de1e0d80..b83fdc702bb 100644 --- a/Content.Server/StationEvents/Events/CargoGiftsRule.cs +++ b/Content.Server/StationEvents/Events/CargoGiftsRule.cs @@ -64,9 +64,7 @@ protected override void ActiveTick(EntityUid uid, CargoGiftsRuleComponent compon if (!_cargoSystem.AddAndApproveOrder( station!.Value, - product.Product, - product.Name, - product.Cost, + product, qty, Loc.GetString(component.Sender), Loc.GetString(component.Description), diff --git a/Content.Shared/Cargo/CargoOrderData.cs b/Content.Shared/Cargo/CargoOrderData.cs index a0b3fbed50a..f7e56e59f56 100644 --- a/Content.Shared/Cargo/CargoOrderData.cs +++ b/Content.Shared/Cargo/CargoOrderData.cs @@ -7,12 +7,6 @@ namespace Content.Shared.Cargo [DataDefinition, NetSerializable, Serializable] public sealed partial class CargoOrderData { - /// - /// Price when the order was added. - /// - [DataField] - public int Price; - /// /// A unique (arbitrary) ID which identifies this order. /// @@ -20,16 +14,10 @@ public sealed partial class CargoOrderData public int OrderId { get; private set; } /// - /// Prototype Id for the item to be created - /// - [DataField] - public string ProductId { get; private set; } - - /// - /// Prototype Name + /// The ID of the cargo product ordered. /// [DataField] - public string ProductName { get; private set; } + public ProtoId Product; /// /// The number of items in the order. Not readonly, as it might change @@ -60,12 +48,10 @@ public sealed partial class CargoOrderData [DataField] public ProtoId Account; - public CargoOrderData(int orderId, string productId, string productName, int price, int amount, string requester, string reason, ProtoId account) + public CargoOrderData(int orderId, ProtoId product, int amount, string requester, string reason, ProtoId account) { OrderId = orderId; - ProductId = productId; - ProductName = productName; - Price = price; + Product = product; OrderQuantity = amount; Requester = requester; Reason = reason; diff --git a/Content.Shared/Cargo/Prototypes/CargoProductPrototype.cs b/Content.Shared/Cargo/Prototypes/CargoProductPrototype.cs index 46a3a0de137..592b4d8b526 100644 --- a/Content.Shared/Cargo/Prototypes/CargoProductPrototype.cs +++ b/Content.Shared/Cargo/Prototypes/CargoProductPrototype.cs @@ -1,5 +1,6 @@ +using Robust.Shared.Containers; using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; +using Robust.Shared.Serialization; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array; using Robust.Shared.Utility; @@ -17,9 +18,15 @@ public sealed partial class CargoProductPrototype : IPrototype, IInheritingProto [AbstractDataField] public bool Abstract { get; private set; } - [DataField("name")] private string _name = string.Empty; + [DataField("name")] + private LocId? _nameLoc; - [DataField("description")] private string _description = string.Empty; + private string _name = string.Empty; + + [DataField("description")] + private LocId? _descLoc; + + private string _description = string.Empty; [ViewVariables] [IdDataField] @@ -36,7 +43,11 @@ public string Name if (_name.Trim().Length != 0) return _name; - if (IoCManager.Resolve().Resolve(Product, out EntityPrototype? prototype)) + if (_nameLoc is { } nameLoc) + { + _name = Loc.GetString(nameLoc); + } + else if (IoCManager.Resolve().Resolve(Product, out var prototype)) { _name = prototype.Name; } @@ -56,7 +67,11 @@ public string Description if (_description.Trim().Length != 0) return _description; - if (IoCManager.Resolve().Resolve(Product, out EntityPrototype? prototype)) + if (_descLoc is { } descLoc) + { + _description = Loc.GetString(descLoc); + } + else if (IoCManager.Resolve().Resolve(Product, out var prototype)) { _description = prototype.Description; } @@ -77,6 +92,12 @@ public string Description [DataField] public EntProtoId Product { get; private set; } = string.Empty; + /// + /// The entity to spawn and insert the product into. If null, just the product is spawned. + /// + [DataField] + public CargoProductContainer? Container; + /// /// The point cost of the product. /// @@ -95,4 +116,21 @@ public string Description [DataField] public ProtoId Group { get; private set; } = "market"; } + + /// + [DataDefinition, Serializable, NetSerializable] + public sealed partial class CargoProductContainer + { + /// + /// What entity to spawn as the container. + /// + [DataField(required: true)] + public EntProtoId Entity; + + /// + /// What container in the product should be inserted into. + /// + [DataField(required: true)] + public string ContainerId; + } } diff --git a/Content.Shared/ParcelWrap/Components/ParcelWrapComponent.cs b/Content.Shared/ParcelWrap/Components/ParcelWrapComponent.cs index 41375e5c2ac..e7a7f535848 100644 --- a/Content.Shared/ParcelWrap/Components/ParcelWrapComponent.cs +++ b/Content.Shared/ParcelWrap/Components/ParcelWrapComponent.cs @@ -1,4 +1,5 @@ using Content.Shared.Item; +using Content.Shared.ParcelWrap.Systems; using Content.Shared.Whitelist; using Robust.Shared.Audio; using Robust.Shared.GameStates; @@ -18,28 +19,7 @@ public sealed partial class ParcelWrapComponent : Component /// The of the parcel created by using this component. /// [DataField(required: true), AutoNetworkedField] - public EntProtoId ParcelPrototype; - - /// - /// If true, parcels created by this will have the same size as the item they - /// contain. If false, parcels created by this will always have the size specified by . - /// - [DataField, AutoNetworkedField] - public bool WrappedItemsMaintainSize = true; - - /// - /// The size of parcels created by this component's entity. This is used if - /// is false, or if the item being wrapped somehow doesn't have a size. - /// - [DataField, AutoNetworkedField] - public ProtoId FallbackItemSize = "Ginormous"; - - /// - /// If true, parcels created by this will have the same shape as the item they contain. If false, parcels created by - /// this will have the default shape for their size. - /// - [DataField, AutoNetworkedField] - public bool WrappedItemsMaintainShape; + public EntProtoId ParcelPrototype; /// /// How long it takes to use this to wrap something. diff --git a/Content.Shared/ParcelWrap/Components/ParcelWrapOverrideComponent.cs b/Content.Shared/ParcelWrap/Components/ParcelWrapOverrideComponent.cs index e401d30a7f7..7a8c12b6b0e 100644 --- a/Content.Shared/ParcelWrap/Components/ParcelWrapOverrideComponent.cs +++ b/Content.Shared/ParcelWrap/Components/ParcelWrapOverrideComponent.cs @@ -14,11 +14,11 @@ public sealed partial class ParcelWrapOverrideComponent : Component /// The of the parcel created by wrapping this entity. /// [DataField(required: true), AutoNetworkedField] - public EntProtoId? ParcelPrototype; + public EntProtoId ParcelPrototype; /// /// How long it takes to use this to wrap something. /// - [DataField(required: true), AutoNetworkedField] + [DataField, AutoNetworkedField] public TimeSpan? WrapDelay; } diff --git a/Content.Shared/ParcelWrap/Components/WrappedParcelComponent.cs b/Content.Shared/ParcelWrap/Components/WrappedParcelComponent.cs index 2ed018e3447..17c6ef46cb2 100644 --- a/Content.Shared/ParcelWrap/Components/WrappedParcelComponent.cs +++ b/Content.Shared/ParcelWrap/Components/WrappedParcelComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared.Item; using Content.Shared.ParcelWrap.Systems; using Robust.Shared.Audio; using Robust.Shared.Containers; @@ -45,6 +46,21 @@ public sealed partial class WrappedParcelComponent : Component [DataField, ViewVariables(VVAccess.ReadOnly)] public string ContainerId = "contents"; + /// + /// If true, the owner of this entity has its set to the size of any item inserted + /// into . If the contents do not have a size, + /// is used instead. + /// + [DataField, AutoNetworkedField] + public bool GetsSizeFromContent = true; + + /// + /// If true, the owner of this entity has its set to the shape of any item + /// inserted into . + /// + [DataField, AutoNetworkedField] + public bool GetsShapeFromContent; + /// /// If a player trapped inside this parcel can escape from it by unwrapping it. /// This is set by the used to create the parcel. diff --git a/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.ParcelWrap.cs b/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.ParcelWrap.cs index bd2e1eb47f3..053f718276f 100644 --- a/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.ParcelWrap.cs +++ b/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.ParcelWrap.cs @@ -1,3 +1,4 @@ +using System.Linq; using Content.Shared.DoAfter; using Content.Shared.IdentityManagement; using Content.Shared.Interaction; @@ -5,6 +6,8 @@ using Content.Shared.ParcelWrap.Components; using Content.Shared.Popups; using Content.Shared.Verbs; +using Robust.Shared.Network; +using Robust.Shared.Prototypes; using Robust.Shared.Utility; namespace Content.Shared.ParcelWrap.Systems; @@ -12,11 +15,34 @@ namespace Content.Shared.ParcelWrap.Systems; // This part handles Parcel Wrap. public sealed partial class ParcelWrappingSystem { + [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly INetManager _net = default!; + + private static ProtoId _fallbackParcelSize = "Ginormous"; + private void InitializeParcelWrap() { + SubscribeLocalEvent(OnPrototypeReload); + SubscribeLocalEvent(OnAfterInteract); SubscribeLocalEvent>(OnGetVerbsForParcelWrap); SubscribeLocalEvent(OnWrapItemDoAfter); + + SetFallbackParcelSize(); + } + + private void OnPrototypeReload(PrototypesReloadedEventArgs args) + { + if (args.WasModified()) + SetFallbackParcelSize(); + } + + private void SetFallbackParcelSize() + { + if (_proto.EnumeratePrototypes().Max() is { } size) + { + _fallbackParcelSize = size; + } } private void OnAfterInteract(Entity entity, ref AfterInteractEvent args) @@ -63,8 +89,9 @@ private bool TryStartWrapDoAfter(EntityUid user, Entity wra { var duration = wrapper.Comp.WrapDelay; - if (TryComp(target, out var overrideComp) && overrideComp.WrapDelay != null) - duration = overrideComp.WrapDelay.Value; + if (TryComp(target, out var overrideComp) && + overrideComp.WrapDelay is { } wrapDelayOverride) + duration = wrapDelayOverride; // In case the target is a player inform them with a popup. if (target == user) @@ -74,7 +101,10 @@ private bool TryStartWrapDoAfter(EntityUid user, Entity wra } else { - var othersMsg = Loc.GetString("parcel-wrap-popup-being-wrapped", ("user", Identity.Entity(user, EntityManager))); + var othersMsg = Loc.GetString( + "parcel-wrap-popup-being-wrapped", + ("user", Identity.Entity(user, EntityManager)) + ); _popup.PopupEntity(othersMsg, target, target, PopupType.MediumCaution); } @@ -111,43 +141,16 @@ private void WrapInternal(EntityUid user, Entity wrapper, E if (_net.IsClient) return; // Predicted spawns can't be interacted with yet. - EntityUid spawned; + // Spawn the actual parcel entity. var targetTransform = Transform(target); - // Check if the target has a pre-defined parcel type to be used. - if (TryComp(target, out var overrideComp)) - { - spawned = Spawn(overrideComp.ParcelPrototype, targetTransform.Coordinates); - } - else // Create a parcel with the same size and generic sprites instead. - { - spawned = Spawn(wrapper.Comp.ParcelPrototype, targetTransform.Coordinates); - - // If this wrap maintains the size when wrapping, set the parcel's size to the target's size. Otherwise use the - // wrap's fallback size. - TryComp(target, out ItemComponent? targetItemComp); - var size = wrapper.Comp.FallbackItemSize; - if (wrapper.Comp.WrappedItemsMaintainSize && targetItemComp is not null) - size = targetItemComp.Size; - - // ParcelWrap's spawned entity should always have an `ItemComp`. As of writing, the only use has it hardcoded on - // its prototype. - var item = Comp(spawned); - _item.SetSize(spawned, size, item); - _appearance.SetData(spawned, WrappedParcelVisuals.Size, size.Id); - - // If this wrap maintains the shape when wrapping and the item has a shape override, copy the shape override to - // the parcel. - if (wrapper.Comp.WrappedItemsMaintainShape && targetItemComp is { Shape: { } shape }) - _item.SetShape(spawned, shape, item); - } - + var spawned = Spawn(GetParcelPrototype(wrapper, target), targetTransform.Coordinates); _transform.SetLocalRotation(spawned, targetTransform.LocalRotation); // If the target is in a container, try to put the parcel in its place in the container. - if (_container.TryGetContainingContainer((target, null, null), out var containerOfTarget)) + if (_container.TryGetContainingContainer(target, out var containerOfTarget)) { _container.Remove(target, containerOfTarget); - _container.InsertOrDrop((spawned, null, null), containerOfTarget); + _container.InsertOrDrop(spawned, containerOfTarget); } // Insert the target into the parcel. @@ -162,4 +165,16 @@ private void WrapInternal(EntityUid user, Entity wrapper, E PredictedDel(spawned); } } + + private EntProtoId GetParcelPrototype( + Entity wrapper, + Entity target + ) + { + // If an override is defined on the target, use that. + if (Resolve(target, ref target.Comp, logMissing: false)) + return target.Comp.ParcelPrototype; + + return wrapper.Comp.ParcelPrototype; + } } diff --git a/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.WrappedParcel.cs b/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.WrappedParcel.cs index 460ba7caf5a..96919b0ae22 100644 --- a/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.WrappedParcel.cs +++ b/Content.Shared/ParcelWrap/Systems/ParcelWrappingSystem.WrappedParcel.cs @@ -1,20 +1,25 @@ using Content.Shared.Destructible; using Content.Shared.DoAfter; using Content.Shared.Interaction.Events; +using Content.Shared.Item; using Content.Shared.Materials; using Content.Shared.ParcelWrap.Components; using Content.Shared.Popups; using Content.Shared.Verbs; using Robust.Shared.Containers; +using Robust.Shared.Timing; namespace Content.Shared.ParcelWrap.Systems; // This part handles Wrapped Parcels public sealed partial class ParcelWrappingSystem { + [Dependency] private readonly IGameTiming _timing = default!; + private void InitializeWrappedParcel() { SubscribeLocalEvent(OnComponentInit); + SubscribeLocalEvent(OnEntInsertedIntoContainer); SubscribeLocalEvent(OnUseInHand); SubscribeLocalEvent>(OnGetVerbsForWrappedParcel); SubscribeLocalEvent(OnUnwrapParcelDoAfter); @@ -27,6 +32,35 @@ private void OnComponentInit(Entity entity, ref Componen entity.Comp.Contents = _container.EnsureContainer(entity, entity.Comp.ContainerId); } + private void OnEntInsertedIntoContainer(Entity entity, ref EntInsertedIntoContainerMessage args) + { + // If the entity was inserted because of a server state application, assume that the item's state is applied + // correctly as well and that deriving them from the contents is unneeded. + if (_timing.ApplyingState) + return; + + if (args.Container != entity.Comp.Contents || + !TryComp(entity, out var parcelItemComp)) + return; + + // If this wrap maintains the size when wrapping, set the parcel's size to the target's size, or the fallback + // size if the target does not have a size. + var targetItemComp = CompOrNull(args.Entity); + if (entity.Comp.GetsSizeFromContent) + { + var size = targetItemComp?.Size ?? _fallbackParcelSize; + _item.SetSize(entity, size, parcelItemComp); + _appearance.SetData(entity, WrappedParcelVisuals.Size, size.Id); + } + + // If this wrap maintains the shape when wrapping and the item has a shape override, copy the shape override to + // the parcel. + if (entity.Comp.GetsShapeFromContent) + { + _item.SetShape(entity, targetItemComp?.Shape, parcelItemComp); + } + } + private void OnUseInHand(Entity entity, ref UseInHandEvent args) { if (args.Handled) @@ -102,22 +136,19 @@ private bool TryStartUnwrapDoAfter(EntityUid user, Entity private EntityUid? UnwrapInternal(EntityUid? user, Entity parcel) { - var containedEntity = parcel.Comp.Contents.ContainedEntity; - _audio.PlayPredicted(parcel.Comp.UnwrapSound, parcel, user); - - // If we're on the client, just return the contained entity and don't try to despawn the parcel. - if (!_net.IsServer) - return containedEntity; - var parcelTransform = Transform(parcel); + _audio.PlayPredicted(parcel.Comp.UnwrapSound, parcelTransform.Coordinates, user); + var containedEntity = parcel.Comp.Contents.ContainedEntity; if (containedEntity is { } parcelContents) { - _container.Remove(parcelContents, + _container.Remove( + parcelContents, parcel.Comp.Contents, true, true, - parcelTransform.Coordinates); + parcelTransform.Coordinates + ); // If the parcel is in a container, try to put the unwrapped contents in that container. if (_container.TryGetContainingContainer((parcel, null, null), out var outerContainer)) @@ -131,11 +162,11 @@ private bool TryStartUnwrapDoAfter(EntityUid user, Entity Date: Sun, 15 Mar 2026 14:01:07 +0000 Subject: [PATCH 535/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index d8139aa7054..24b93e47766 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,13 +1,4 @@ Entries: -- author: frigid-dev - changes: - - message: Ore Crabs now collide with the player if mob collisions are enabled. - type: Tweak - - message: Ore Crabs now show they are stunned - type: Fix - id: 9066 - time: '2025-10-10T23:31:04.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40764 - author: Crude Oil changes: - message: Removed 'Activate Holopad Projector' verb from the station AI core. @@ -4008,3 +3999,11 @@ id: 9576 time: '2026-03-14T16:33:38.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43189 +- author: Centronias + changes: + - message: Certain small cargo products are now delivered in parcel wrap rather + than in crates. + type: Tweak + id: 9577 + time: '2026-03-15T13:59:56.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/40834 From c51a7ea4257afec4c09a24c29f20aa6d91e4b4a3 Mon Sep 17 00:00:00 2001 From: Velken <8467292+Velken@users.noreply.github.com> Date: Sun, 15 Mar 2026 12:44:03 -0300 Subject: [PATCH 536/603] Refactor Ion Law string generation (#42629) * YAMLs your ion laws * forgot some weights * this should be it * comments and DAGD * improved testing * addressing review (part 1 out of 2) * still part 1 :gosomnia: * part 2 * refactor the refactor * loc error fluffs * address review * weh * cleanup * oops * fix * more cleaning * forgot to remove old thing * prediction * fix --- .../Silicons/Laws/IonLawLocalizationSystem.cs | 59 ++++ Content.Server/Silicons/Laws/IonLawSystem.cs | 295 ++++++++++++++++++ .../Silicons/Laws/IonStormSystem.cs | 152 +-------- .../Systems/StationRecordsSystem.cs | 25 -- .../Silicons/Laws/IonLawPrototype.cs | 130 ++++++++ .../SharedStationRecordsSystem.cs | 28 ++ .../en-US/station-events/events/ion-storm.ftl | 97 +++--- Resources/Prototypes/IonLaws/IonLaw.yml | 204 ++++++++++++ 8 files changed, 777 insertions(+), 213 deletions(-) create mode 100644 Content.Server/Silicons/Laws/IonLawLocalizationSystem.cs create mode 100644 Content.Server/Silicons/Laws/IonLawSystem.cs create mode 100644 Content.Shared/Silicons/Laws/IonLawPrototype.cs create mode 100644 Resources/Prototypes/IonLaws/IonLaw.yml diff --git a/Content.Server/Silicons/Laws/IonLawLocalizationSystem.cs b/Content.Server/Silicons/Laws/IonLawLocalizationSystem.cs new file mode 100644 index 00000000000..a08e7f0b202 --- /dev/null +++ b/Content.Server/Silicons/Laws/IonLawLocalizationSystem.cs @@ -0,0 +1,59 @@ +namespace Content.Server.Silicons.Laws; + +public sealed class IonLawLocalizationSystem : EntitySystem +{ + [Dependency] private readonly ILocalizationManager _loc = default!; + [Dependency] private readonly IonLawSystem _ionLaw = default!; + [Dependency] private readonly ILogManager _logManager = default!; + + private ISawmill _sawmill = default!; + + public override void Initialize() + { + base.Initialize(); + + _sawmill = _logManager.GetSawmill("ion-law"); + + var culture = _loc.DefaultCulture; + + if (culture == null) + { + _sawmill.Error("Culture was null when trying to generate Ion Law"); + return; + } + + _loc.AddFunction(culture, "ION-NUMBER-BASE", _ => GetIonLawValue("ION-NUMBER-BASE")); + _loc.AddFunction(culture, "ION-NUMBER-MOD", _ => GetIonLawValue("ION-NUMBER-MOD")); + _loc.AddFunction(culture, "ION-ADJECTIVE", _ => GetIonLawValue("ION-ADJECTIVE")); + _loc.AddFunction(culture, "ION-SUBJECT", _ => GetIonLawValue("ION-SUBJECT")); + _loc.AddFunction(culture, "ION-WHO", _ => GetIonLawValue("ION-WHO")); + _loc.AddFunction(culture, "ION-MUST", _ => GetIonLawValue("ION-MUST")); + _loc.AddFunction(culture, "ION-THING", _ => GetIonLawValue("ION-THING")); + _loc.AddFunction(culture, "ION-JOB", _ => GetIonLawValue("ION-JOB")); + _loc.AddFunction(culture, "ION-WHO-GENERAL", _ => GetIonLawValue("ION-WHO-GENERAL")); + _loc.AddFunction(culture, "ION-PLURAL", _ => GetIonLawValue("ION-PLURAL")); + _loc.AddFunction(culture, "ION-REQUIRE", _ => GetIonLawValue("ION-REQUIRE")); + _loc.AddFunction(culture, "ION-SEVERITY", _ => GetIonLawValue("ION-SEVERITY")); + _loc.AddFunction(culture, "ION-ALLERGY", _ => GetIonLawValue("ION-ALLERGY")); + _loc.AddFunction(culture, "ION-FEELING", _ => GetIonLawValue("ION-FEELING")); + _loc.AddFunction(culture, "ION-CONCEPT", _ => GetIonLawValue("ION-CONCEPT")); + _loc.AddFunction(culture, "ION-FOOD", _ => GetIonLawValue("ION-FOOD")); + _loc.AddFunction(culture, "ION-DRINK", _ => GetIonLawValue("ION-DRINK")); + _loc.AddFunction(culture, "ION-CHANGE", _ => GetIonLawValue("ION-CHANGE")); + _loc.AddFunction(culture, "ION-WHO-RANDOM", _ => GetIonLawValue("ION-WHO-RANDOM")); + _loc.AddFunction(culture, "ION-AREA", _ => GetIonLawValue("ION-AREA")); + _loc.AddFunction(culture, "ION-PART", _ => GetIonLawValue("ION-PART")); + _loc.AddFunction(culture, "ION-OBJECT", _ => GetIonLawValue("ION-OBJECT")); + _loc.AddFunction(culture, "ION-HARM-PROTECT", _ => GetIonLawValue("ION-HARM-PROTECT")); + _loc.AddFunction(culture, "ION-VERB", _ => GetIonLawValue("ION-VERB")); + } + + /// + /// Returns a localized value for an ion law token. + /// + private ILocValue GetIonLawValue(string s) + { + var val = _ionLaw.GetOrGenerateValue(s); + return new LocValueString(val.ToString() ?? string.Empty); + } +} diff --git a/Content.Server/Silicons/Laws/IonLawSystem.cs b/Content.Server/Silicons/Laws/IonLawSystem.cs new file mode 100644 index 00000000000..9d928b37a0c --- /dev/null +++ b/Content.Server/Silicons/Laws/IonLawSystem.cs @@ -0,0 +1,295 @@ +using Content.Shared.Dataset; +using Content.Shared.Silicons.Laws; +using Content.Shared.Station; +using Content.Shared.StationRecords; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; +using System.Linq; + +namespace Content.Server.Silicons.Laws; + +/// +/// This handles generating random ion laws. +/// +public sealed class IonLawSystem : EntitySystem +{ + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly SharedStationSystem _stationSystem = default!; + [Dependency] private readonly SharedStationRecordsSystem _stationRecordsSystem = default!; + [Dependency] private readonly ILogManager _logManager = default!; + + private ISawmill _sawmill = default!; + private readonly Dictionary> _selectors = new(); + private IonLawPrototype? _ionLaw; + + public override void Initialize() + { + base.Initialize(); + + _sawmill = _logManager.GetSawmill("ion-law"); + + SubscribeLocalEvent(OnPrototypesReloaded); + BuildSelectors(); + } + + private void OnPrototypesReloaded(PrototypesReloadedEventArgs obj) + { + if (obj.ByType.ContainsKey(typeof(DatasetPrototype))) + BuildSelectors(); + } + + private void BuildSelectors() + { + _selectors.Clear(); + + + DatasetFill DatasetFill(ProtoId datasetId) => new() { Dataset = datasetId }; + RandomManifestFill RandomManifestFill(ProtoId fallback) => new() { FallbackDataset = fallback }; + ConstantFill ConstantFill(bool val) => new() { BoolValue = val }; + + AddSelector("ION-NUMBER-BASE", DatasetFill("IonStormNumberBase")); + + AddSelector("ION-NUMBER-MOD", DatasetFill("IonStormNumberMod")); + + AddSelector("ION-ADJECTIVE", DatasetFill("IonStormAdjectives")); + + AddSelector("ION-SUBJECT", DatasetFill("IonStormThreats")); + AddSelector("ION-SUBJECT", DatasetFill("IonStormCrew")); + AddSelector("ION-SUBJECT", DatasetFill("IonStormObjects")); + AddSelector("ION-SUBJECT", RandomManifestFill("IonStormCrew")); + + AddSelector("ION-WHO", DatasetFill("IonStormCrew")); + AddSelector("ION-WHO", RandomManifestFill("IonStormCrew")); + + AddSelector("ION-MUST", DatasetFill("IonStormMusts")); + + AddSelector("ION-THING", DatasetFill("IonStormObjects")); + AddSelector("ION-THING", DatasetFill("IonStormConcepts")); + + AddSelector("ION-JOB", DatasetFill("IonStormCrew")); + AddSelector("ION-JOB", RandomManifestFill("IonStormCrew")); + + AddSelector("ION-WHO-GENERAL", DatasetFill("IonStormAreas")); + AddSelector("ION-WHO-GENERAL", RandomManifestFill("IonStormCrew")); + + AddSelector("ION-PLURAL", ConstantFill(true)); + AddSelector("ION-PLURAL", ConstantFill(false)); + + AddSelector("ION-REQUIRE", DatasetFill("IonStormConcepts")); + AddSelector("ION-REQUIRE", DatasetFill("IonStormRequires")); + + AddSelector("ION-SEVERITY", DatasetFill("IonStormAllergySeverities")); + + AddSelector("ION-ALLERGY", DatasetFill("IonStormConcepts")); + AddSelector("ION-ALLERGY", DatasetFill("IonStormAllergies")); + + AddSelector("ION-FEELING", DatasetFill("IonStormFeelings")); + + AddSelector("ION-CONCEPT", DatasetFill("IonStormConcepts")); + + AddSelector("ION-FOOD", DatasetFill("IonStormFoods")); + + AddSelector("ION-DRINK", DatasetFill("IonStormDrinks")); + + AddSelector("ION-CHANGE", DatasetFill("IonStormCrew")); + AddSelector("ION-CHANGE", RandomManifestFill("IonStormCrew")); + + AddSelector("ION-WHO-RANDOM", DatasetFill("IonStormCrew")); + AddSelector("ION-WHO-RANDOM", RandomManifestFill("IonStormCrew")); + + AddSelector("ION-AREA", DatasetFill("IonStormAreas")); + + AddSelector("ION-PART", ConstantFill(true)); + AddSelector("ION-PART", ConstantFill(false)); + + AddSelector("ION-OBJECT", DatasetFill("IonStormObjects")); + + AddSelector("ION-HARM-PROTECT", DatasetFill("IonStormConcepts")); + AddSelector("ION-HARM-PROTECT", DatasetFill("IonStormCrew")); + AddSelector("ION-HARM-PROTECT", RandomManifestFill("IonStormCrew")); + + AddSelector("ION-VERB", DatasetFill("IonStormVerbs")); + } + + /// + /// Adds a selector to the cache. + /// Used for picking datasets to fill the keys in the strings for the Ion Laws. + /// + /// The key in the strings file to fill. + /// The type of dataset to use and the prototype ID for it, if it takes one. + private void AddSelector(string key, IonLawSelector selector) + { + if (!_selectors.ContainsKey(key)) + _selectors[key] = new List(); + + _selectors[key].Add(selector); + } + + + /// + /// Generates a random ion law by picking an ion law prototype and filling its placeholders with random values, from datasets. + /// + /// A formatted string representing the new ion law. + public string GetIonLaw() + { + var laws = _prototypeManager.EnumeratePrototypes().ToList(); + if (laws.Count == 0) + { + _sawmill.Error("No Ion Laws found"); + return Loc.GetString("ion-law-error-no-protos"); + } + + + var totalWeight = laws.Sum(p => p.Weight); + if (totalWeight <= 0) + { + // if all weights are 0, teat them as equal and just pick one at random. + _ionLaw = _random.Pick(laws); + } + else + { + var value = _random.NextFloat() * totalWeight; + IonLawPrototype? ionLaw = null; + foreach (var law in laws) + { + if (law.Weight <= 0) + continue; + + ionLaw = law; + value -= law.Weight; + if (value <= 0) + { + break; + } + } + _ionLaw = ionLaw; + } + + if (_ionLaw == null) + { + _sawmill.Error("Ion Law was null"); + return Loc.GetString("ion-law-error-was-null"); + } + + return Loc.GetString(_ionLaw.LawString, ("ion", 0)); + } + + /// + /// Gets a value for a specific selector and index, generating it if it doesn't exist in the cache. + /// This allows laws to reference the same generated value multiple times using the same index. + /// + /// The key of the selector list to pick from (e.g.: "ION-WHO"). + /// A string or object representing the generated law component. + public object GetOrGenerateValue(string selectorName) + { + if (!_selectors.TryGetValue(selectorName, out var selectors)) + { + _sawmill.Error("No selectors for Ion Laws found"); + return Loc.GetString("ion-law-error-no-selectors"); + } + + var availableSelectors = selectors.ToList(); + while (availableSelectors.Count > 0) + { + var selector = PickSelector(availableSelectors, _ionLaw); + if (selector == null) + break; + + var newValue = GetSelectorValue(selector); + if (newValue is string s && string.IsNullOrWhiteSpace(s)) + { + availableSelectors.Remove(selector); + continue; + } + + return newValue; + } + + _sawmill.Error("No available selectors found for the Ion Law found - this should never happen, selector was: " + selectorName); + return Loc.GetString("ion-law-error-no-available-selectors"); + } + + private IonLawSelector? PickSelector(List selectors, IonLawPrototype? law) + { + var weightedSelectors = new List<(IonLawSelector, float)>(); + foreach (var s in selectors) + { + var weight = s.Weight; + + if (s is DatasetFill df) + { + if (law != null && law.SelectorWeightAdjust.TryGetValue(df.Dataset.Id, out var adjustedWeight)) + weight = adjustedWeight; + } + else if (s is RandomManifestFill) + { + if (law != null && law.SelectorWeightAdjust.TryGetValue("RandomManifestFill", out var adjustedWeight)) + { + weight = adjustedWeight; + } + } + + if (weight > 0) + weightedSelectors.Add((s, weight)); + } + + var totalWeight = weightedSelectors.Sum(s => s.Item2); + if (totalWeight <= 0) + return null; + + var value = _random.NextFloat() * totalWeight; + foreach (var (selector, selectorWeight) in weightedSelectors) + { + value -= selectorWeight; + if (value <= 0) + return selector; + } + + return weightedSelectors.Last().Item1; + } + + private object GetSelectorValue(IonLawSelector selector) + { + switch (selector) + { + case DatasetFill datasetFill: + if (_prototypeManager.TryIndex(datasetFill.Dataset, out var dataset) && dataset.Values.Any()) + { + return _random.Pick(dataset.Values); + } + _sawmill.Error("Selected DataSet (" + selector + ") was empty or not found" ); + return Loc.GetString("ion-law-error-dataset-empty-or-not-found"); + case RandomManifestFill randomManifestFill: + var stations = _stationSystem.GetStations(); + if (stations.Count > 0) + { + var station = _random.Pick(stations); + if (TryComp(station, out StationRecordsComponent? stationRecords) && + _stationRecordsSystem.TryGetRandomRecord((station, stationRecords), out GeneralStationRecord? record)) + { + var upperName = "'" + record.Name.ToUpper() + "'"; + return upperName; + } + } + + // Fallback to dataset if no manifest record found or stations are empty + if (_prototypeManager.TryIndex(randomManifestFill.FallbackDataset, out var fallbackDataset) && fallbackDataset.Values.Any()) + { + return _random.Pick(fallbackDataset.Values); + } + _sawmill.Error("Fallback DataSet (" + selector + ") was empty or not found" ); + return Loc.GetString("ion-law-error-fallback-dataset-empty-or-not-found"); + case ConstantFill constantFill: + if (constantFill.BoolValue.HasValue) + return constantFill.BoolValue.Value; + _sawmill.Error("The selected Constant Fill did not have a value: " + constantFill ); + return Loc.GetString("ion-law-error-no-bool-value"); + default: + { + _sawmill.Error("Selected DataSet (" + selector + ") was not selected" ); + return Loc.GetString("ion-law-error-no-selector-selected"); + } + } + } +} diff --git a/Content.Server/Silicons/Laws/IonStormSystem.cs b/Content.Server/Silicons/Laws/IonStormSystem.cs index 249813edc15..321a83b8029 100644 --- a/Content.Server/Silicons/Laws/IonStormSystem.cs +++ b/Content.Server/Silicons/Laws/IonStormSystem.cs @@ -1,16 +1,13 @@ -using Content.Server.StationEvents.Components; using Content.Shared.Administration.Logs; using Content.Shared.Database; -using Content.Shared.Dataset; using Content.Shared.FixedPoint; -using Content.Shared.GameTicking.Components; -using Content.Shared.Random; -using Content.Shared.Random.Helpers; using Content.Shared.Silicons.Laws; using Content.Shared.Silicons.Laws.Components; -using Robust.Shared.Prototypes; using Robust.Shared.Random; using System.Linq; +using Content.Shared.Random; +using Content.Shared.Random.Helpers; +using Robust.Shared.Prototypes; namespace Content.Server.Silicons.Laws; @@ -20,26 +17,7 @@ public sealed class IonStormSystem : EntitySystem [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; [Dependency] private readonly SiliconLawSystem _siliconLaw = default!; [Dependency] private readonly IRobustRandom _robustRandom = default!; - - // funny - private static readonly ProtoId Threats = "IonStormThreats"; - private static readonly ProtoId Objects = "IonStormObjects"; - private static readonly ProtoId Crew = "IonStormCrew"; - private static readonly ProtoId Adjectives = "IonStormAdjectives"; - private static readonly ProtoId Verbs = "IonStormVerbs"; - private static readonly ProtoId NumberBase = "IonStormNumberBase"; - private static readonly ProtoId NumberMod = "IonStormNumberMod"; - private static readonly ProtoId Areas = "IonStormAreas"; - private static readonly ProtoId Feelings = "IonStormFeelings"; - private static readonly ProtoId FeelingsPlural = "IonStormFeelingsPlural"; - private static readonly ProtoId Musts = "IonStormMusts"; - private static readonly ProtoId Requires = "IonStormRequires"; - private static readonly ProtoId Actions = "IonStormActions"; - private static readonly ProtoId Allergies = "IonStormAllergies"; - private static readonly ProtoId AllergySeverities = "IonStormAllergySeverities"; - private static readonly ProtoId Concepts = "IonStormConcepts"; - private static readonly ProtoId Drinks = "IonStormDrinks"; - private static readonly ProtoId Foods = "IonStormFoods"; + [Dependency] private readonly IonLawSystem _ionLaw = default!; /// /// Randomly alters the laws of an individual silicon. @@ -93,7 +71,10 @@ public void IonStormTarget(Entity 0 && _robustRandom.Prob(target.ReplaceChance)) @@ -142,121 +123,4 @@ public void IonStormTarget(Entity threats, - 1 => crew1, - 2 => objects, - _ => throw new IndexOutOfRangeException(), - }; - var crewAll = _robustRandom.Prob(0.5f) ? crew2 : Loc.GetString("ion-storm-crew"); - var objectsThreats = _robustRandom.Prob(0.5f) ? objects : threats; - var objectsConcept = _robustRandom.Prob(0.5f) ? objects : concept; - // s goes ahead of require, is/are - // i dont think theres a way to do this in fluent - var (who, plural) = _robustRandom.Next(0, 5) switch - { - 0 => (Loc.GetString("ion-storm-you"), true), - 1 => (Loc.GetString("ion-storm-the-station"), false), - 2 => (Loc.GetString("ion-storm-the-crew"), false), - 3 => (Loc.GetString("ion-storm-the-job", ("job", crew2)), true), - _ => (area, false) // THE SINGULARITY REQUIRES THE HAPPY CLOWNS - }; - var jobChange = _robustRandom.Next(0, 3) switch - { - 0 => crew1, - 1 => Loc.GetString("ion-storm-clowns"), - _ => Loc.GetString("ion-storm-heads") - }; - var part = Loc.GetString("ion-storm-part", ("part", _robustRandom.Prob(0.5f))); - var harm = _robustRandom.Next(0, 6) switch - { - 0 => concept, - 1 => $"{adjective} {threats}", - 2 => $"{adjective} {objects}", - 3 => Loc.GetString("ion-storm-adjective-things", ("adjective", adjective)), - 4 => crew1, - _ => Loc.GetString("ion-storm-x-and-y", ("x", crew1), ("y", crew2)) - }; - - if (plural) feeling = feelingPlural; - - var subjects = _robustRandom.Prob(0.5f) ? objectsThreats : Loc.GetString("ion-storm-people"); - - // message logic!!! - return _robustRandom.Next(0, 35) switch - { - 0 => Loc.GetString("ion-storm-law-on-station", ("joined", joined), ("subjects", triple)), - 1 => Loc.GetString("ion-storm-law-call-shuttle", ("joined", joined), ("subjects", triple)), - 2 => Loc.GetString("ion-storm-law-crew-are", ("who", crewAll), ("joined", joined), ("subjects", objectsThreats)), - 3 => Loc.GetString("ion-storm-law-subjects-harmful", ("adjective", adjective), ("subjects", triple)), - 4 => Loc.GetString("ion-storm-law-must-harmful", ("must", must)), - 5 => Loc.GetString("ion-storm-law-thing-harmful", ("thing", _robustRandom.Prob(0.5f) ? concept : action)), - 6 => Loc.GetString("ion-storm-law-job-harmful", ("adjective", adjective), ("job", crew1)), - 7 => Loc.GetString("ion-storm-law-having-harmful", ("adjective", adjective), ("thing", objectsConcept)), - 8 => Loc.GetString("ion-storm-law-not-having-harmful", ("adjective", adjective), ("thing", objectsConcept)), - 9 => Loc.GetString("ion-storm-law-requires", ("who", who), ("plural", plural), ("thing", _robustRandom.Prob(0.5f) ? concept : require)), - 10 => Loc.GetString("ion-storm-law-requires-subjects", ("who", who), ("plural", plural), ("joined", joined), ("subjects", triple)), - 11 => Loc.GetString("ion-storm-law-allergic", ("who", who), ("plural", plural), ("severity", allergySeverity), ("allergy", _robustRandom.Prob(0.5f) ? concept : allergy)), - 12 => Loc.GetString("ion-storm-law-allergic-subjects", ("who", who), ("plural", plural), ("severity", allergySeverity), ("adjective", adjective), ("subjects", _robustRandom.Prob(0.5f) ? objects : crew1)), - 13 => Loc.GetString("ion-storm-law-feeling", ("who", who), ("feeling", feeling), ("concept", concept)), - 14 => Loc.GetString("ion-storm-law-feeling-subjects", ("who", who), ("feeling", feeling), ("joined", joined), ("subjects", triple)), - 15 => Loc.GetString("ion-storm-law-you-are", ("concept", concept)), - 16 => Loc.GetString("ion-storm-law-you-are-subjects", ("joined", joined), ("subjects", triple)), - 17 => Loc.GetString("ion-storm-law-you-must-always", ("must", must)), - 18 => Loc.GetString("ion-storm-law-you-must-never", ("must", must)), - 19 => Loc.GetString("ion-storm-law-eat", ("who", crewAll), ("adjective", adjective), ("food", _robustRandom.Prob(0.5f) ? food : triple)), - 20 => Loc.GetString("ion-storm-law-drink", ("who", crewAll), ("adjective", adjective), ("drink", drink)), - 21 => Loc.GetString("ion-storm-law-change-job", ("who", crewAll), ("adjective", adjective), ("change", jobChange)), - 22 => Loc.GetString("ion-storm-law-highest-rank", ("who", crew1)), - 23 => Loc.GetString("ion-storm-law-lowest-rank", ("who", crew1)), - 24 => Loc.GetString("ion-storm-law-crew-must", ("who", crewAll), ("must", must)), - 25 => Loc.GetString("ion-storm-law-crew-must-go", ("who", crewAll), ("area", area)), - 26 => Loc.GetString("ion-storm-law-crew-only-1", ("who", crew1), ("part", part)), - 27 => Loc.GetString("ion-storm-law-crew-only-2", ("who", crew1), ("other", crew2), ("part", part)), - 28 => Loc.GetString("ion-storm-law-crew-only-subjects", ("adjective", adjective), ("subjects", subjects), ("part", part)), - 29 => Loc.GetString("ion-storm-law-crew-must-do", ("must", must), ("part", part)), - 30 => Loc.GetString("ion-storm-law-crew-must-have", ("adjective", adjective), ("objects", objects), ("part", part)), - 31 => Loc.GetString("ion-storm-law-crew-must-eat", ("who", who), ("adjective", adjective), ("food", food), ("part", part)), - 32 => Loc.GetString("ion-storm-law-harm", ("who", harm)), - 33 => Loc.GetString("ion-storm-law-protect", ("who", harm)), - _ => Loc.GetString("ion-storm-law-concept-verb", ("concept", concept), ("verb", verb), ("subjects", triple)) - }; - } - - /// - /// Picks a random value from an ion storm dataset. - /// All ion storm datasets start with IonStorm. - /// - private string Pick(string name) - { - var dataset = _proto.Index(name); - return _robustRandom.Pick(dataset.Values); - } } diff --git a/Content.Server/StationRecords/Systems/StationRecordsSystem.cs b/Content.Server/StationRecords/Systems/StationRecordsSystem.cs index 10eedd7562d..cf58aea47a3 100644 --- a/Content.Server/StationRecords/Systems/StationRecordsSystem.cs +++ b/Content.Server/StationRecords/Systems/StationRecordsSystem.cs @@ -1,6 +1,4 @@ -using System.Diagnostics.CodeAnalysis; using Content.Server.Access.Systems; -using Content.Server.Forensics; using Content.Shared.Access.Components; using Content.Shared.Forensics.Components; using Content.Shared.GameTicking; @@ -11,7 +9,6 @@ using Content.Shared.StationRecords; using Robust.Shared.Enums; using Robust.Shared.Prototypes; -using Robust.Shared.Random; namespace Content.Server.StationRecords.Systems; @@ -40,7 +37,6 @@ public sealed class StationRecordsSystem : SharedStationRecordsSystem [Dependency] private readonly StationRecordKeyStorageSystem _keyStorage = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IdCardSystem _idCard = default!; - [Dependency] private readonly IRobustRandom _random = default!; public override void Initialize() { @@ -215,27 +211,6 @@ public bool RemoveRecord(StationRecordKey key, StationRecordsComponent? records return false; } - /// - /// Gets a random record from the station's record entries. - /// - /// The EntityId of the station from which you want to get the record. - /// The resulting entry. - /// Type to get from the record set. - /// True if a record was obtained. False otherwise. - public bool TryGetRandomRecord(Entity ent, [NotNullWhen(true)] out T? entry) - { - entry = default; - - if (!Resolve(ent.Owner, ref ent.Comp)) - return false; - - if (ent.Comp.Records.Keys.Count == 0) - return false; - - var key = _random.Pick(ent.Comp.Records.Keys); - - return ent.Comp.Records.TryGetRecordEntry(key, out entry); - } /// /// Get the name for a record, or an empty string if it has no record. diff --git a/Content.Shared/Silicons/Laws/IonLawPrototype.cs b/Content.Shared/Silicons/Laws/IonLawPrototype.cs new file mode 100644 index 00000000000..87586f45df5 --- /dev/null +++ b/Content.Shared/Silicons/Laws/IonLawPrototype.cs @@ -0,0 +1,130 @@ +using Content.Shared.Dataset; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Silicons.Laws; + +/// +/// A prototype for a random ion storm law. +/// +[Prototype] +public sealed partial class IonLawPrototype : IPrototype +{ + /// + [IdDataField] + public string ID { get; private set; } = default!; + + /// + /// The localization string for the law. + /// + [DataField(required: true)] + public string LawString { get; private set; } = string.Empty; + + /// + /// The weight of this law. + /// If 0, it won't be picked. + /// + /// + /// If all weights are 0, they will be treated as 1 and a random law will be picked, this is to prevent cases where no Ion Laws get picked. + /// + [DataField] + public float Weight { get; private set; } = 1.0f; + + /// + /// A mapping of dataset prototype names to a weight adjustment. + /// This is used to modify the weight of a selector when it is chosen. + /// + [DataField] + public Dictionary SelectorWeightAdjust { get; private set; } = new(); +} + +/// +/// Interface for selecting a value for an ion storm law variable. +/// +[ImplicitDataDefinitionForInheritors] +public abstract partial class IonLawSelector +{ + /// + /// Weight of the option being chosen. + /// + [DataField] + public virtual float Weight { get; set; } = 1.0f; +} + +/// +/// Selects a random value from a dataset. +/// +public sealed partial class DatasetFill : IonLawSelector +{ + /// + /// The dataset to pick values from. + /// + [DataField] + public ProtoId Dataset { get; set; } +} + +/// +/// Selects a random name from the station's crew manifest. +/// If it fails to find one, picks an entry from IonStormCrew Dataset Prototype. +/// +public sealed partial class RandomManifestFill : IonLawSelector +{ + /// + /// The dataset to use if no crew manifest is found. NOT OPTIONAL! + /// + [DataField] + public ProtoId FallbackDataset { get; set; } +} + +/// +/// Selects multiple values from other selectors and joins them together. +/// +public sealed partial class JoinedDatasetFill : IonLawSelector +{ + /// + /// The separator to use between joined values. + /// + [DataField] + public string Separator = " "; + + /// + /// The list of selectors to use. + /// + [DataField] + public List Selectors = new(); +} + +/// +/// Selects a localized string, optionally filling in arguments with other selectors. +/// +public sealed partial class TranslateFill : IonLawSelector +{ + /// + /// The localization key. + /// + [DataField] + public string Key = string.Empty; + + /// + /// Arguments for the localization string. + /// + [DataField] + public Dictionary Args = new(); +} + +/// +/// Returns a constant value. +/// +public sealed partial class ConstantFill : IonLawSelector +{ + /// + /// The string value to return. + /// + [DataField] + public string Value = string.Empty; + + /// + /// The boolean value to return. If set, overrides . + /// + [DataField] + public bool? BoolValue { get; set; } +} diff --git a/Content.Shared/StationRecords/SharedStationRecordsSystem.cs b/Content.Shared/StationRecords/SharedStationRecordsSystem.cs index e04de09d658..cd86aef9437 100644 --- a/Content.Shared/StationRecords/SharedStationRecordsSystem.cs +++ b/Content.Shared/StationRecords/SharedStationRecordsSystem.cs @@ -1,9 +1,14 @@ using System.Diagnostics.CodeAnalysis; +using Robust.Shared.Random; +using Robust.Shared.Timing; +using Content.Shared.Random.Helpers; namespace Content.Shared.StationRecords; public abstract class SharedStationRecordsSystem : EntitySystem { + [Dependency] protected readonly IGameTiming Timing = default!; + public StationRecordKey? Convert((NetEntity, uint)? input) { return input == null ? null : Convert(input.Value); @@ -98,4 +103,27 @@ public bool TryGetRecord(StationRecordKey key, [NotNullWhen(true)] out T? ent return null; } + + /// + /// Gets a random record from the station's record entries. + /// + /// The EntityId of the station from which you want to get the record. + /// The resulting entry. + /// Type to get from the record set. + /// True if a record was obtained. False otherwise. + public bool TryGetRandomRecord(Entity ent, [NotNullWhen(true)] out T? entry) + { + entry = default; + + if (!Resolve(ent.Owner, ref ent.Comp)) + return false; + + if (ent.Comp.Records.Keys.Count == 0) + return false; + + var random = SharedRandomExtensions.PredictedRandom(Timing, GetNetEntity(ent.Owner)); + var key = random.Pick(ent.Comp.Records.Keys); + + return ent.Comp.Records.TryGetRecordEntry(key, out entry); + } } diff --git a/Resources/Locale/en-US/station-events/events/ion-storm.ftl b/Resources/Locale/en-US/station-events/events/ion-storm.ftl index e0212c21c5c..93eb62d86fc 100644 --- a/Resources/Locale/en-US/station-events/events/ion-storm.ftl +++ b/Resources/Locale/en-US/station-events/events/ion-storm.ftl @@ -14,79 +14,88 @@ ion-storm-people = PEOPLE ion-storm-adjective-things = {$adjective} THINGS ion-storm-x-and-y = {$x} AND {$y} -# joined is short for {$number} {$adjective} # subjects can generally be threats or jobs or objects # thing is specified above it -ion-storm-law-on-station = THERE ARE {$joined} {$subjects} ON THE STATION -ion-storm-law-call-shuttle = THE SHUTTLE MUST BE CALLED BECAUSE OF {$joined} {$subjects} ON THE STATION -ion-storm-law-crew-are = THE {$who} ARE NOW {$joined} {$subjects} +ion-storm-law-on-station = THERE ARE {ION-NUMBER-BASE($ion)} {ION-NUMBER-MOD($ion)} {ION-ADJECTIVE($ion)} {ION-SUBJECT($ion)} ON THE STATION +ion-storm-law-call-shuttle = THE SHUTTLE MUST BE CALLED BECAUSE OF {ION-ADJECTIVE($ion)} {ION-SUBJECT($ion)} ON THE STATION +ion-storm-law-crew-are = THE {ION-WHO($ion)} ARE NOW {ION-NUMBER-BASE($ion)} {ION-NUMBER-MOD($ion)} {ION-ADJECTIVE($ion)} {ION-SUBJECT($ion)} -ion-storm-law-subjects-harmful = {$adjective} {$subjects} ARE HARMFUL TO THE CREW -ion-storm-law-must-harmful = THOSE WHO {$must} ARE HARMFUL TO THE CREW +ion-storm-law-subjects-harmful = {ION-ADJECTIVE($ion)} {ION-SUBJECT($ion)} ARE HARMFUL TO THE CREW +ion-storm-law-must-harmful = THOSE WHO {ION-MUST($ion)} ARE HARMFUL TO THE CREW # thing is a concept or action -ion-storm-law-thing-harmful = {$thing} IS HARMFUL TO THE CREW -ion-storm-law-job-harmful = {$adjective} {$job} ARE HARMFUL TO THE CREW +ion-storm-law-thing-harmful = {ION-THING($ion)} IS HARMFUL TO THE CREW +ion-storm-law-job-harmful = {ION-ADJECTIVE($ion)} {ION-JOB($ion)} ARE HARMFUL TO THE CREW # thing is objects or concept, adjective applies in both cases # this means you can get a law like "NOT HAVING CHRISTMAS-STEALING COMMUNISM IS HARMFUL TO THE CREW" :) -ion-storm-law-having-harmful = HAVING {$adjective} {$thing} IS HARMFUL TO THE CREW -ion-storm-law-not-having-harmful = NOT HAVING {$adjective} {$thing} IS HARMFUL TO THE CREW +ion-storm-law-having-harmful = HAVING {ION-ADJECTIVE($ion)} {ION-THING($ion)} IS HARMFUL TO THE CREW +ion-storm-law-not-having-harmful = NOT HAVING {ION-ADJECTIVE($ion)} {ION-THING($ion)} IS HARMFUL TO THE CREW -# thing is a concept or require -ion-storm-law-requires = {$who} {$plural -> +# require is a concept or require +ion-storm-law-requires = {ION-WHO-GENERAL($ion)} {ION-PLURAL($ion) -> [true] REQUIRE *[false] REQUIRES -} {$thing} -ion-storm-law-requires-subjects = {$who} {$plural -> +} {ION-REQUIRE($ion)} +ion-storm-law-requires-subjects = {ION-WHO-GENERAL($ion)} {ION-PLURAL($ion) -> [true] REQUIRE *[false] REQUIRES -} {$joined} {$subjects} +} {ION-NUMBER-BASE($ion)} {ION-NUMBER-MOD($ion)} {ION-ADJECTIVE($ion)} {ION-SUBJECT($ion)} -ion-storm-law-allergic = {$who} {$plural -> +ion-storm-law-allergic = {ION-WHO-GENERAL($ion)} {ION-PLURAL($ion) -> [true] ARE *[false] IS -} {$severity} ALLERGIC TO {$allergy} -ion-storm-law-allergic-subjects = {$who} {$plural -> +} {ION-SEVERITY($ion)} ALLERGIC TO {ION-ALLERGY($ion)} +ion-storm-law-allergic-subjects = {ION-WHO-GENERAL($ion)} {ION-PLURAL($ion) -> [true] ARE *[false] IS -} {$severity} ALLERGIC TO {$adjective} {$subjects} +} {ION-SEVERITY($ion)} ALLERGIC TO {ION-ADJECTIVE($ion)} {ION-SUBJECT($ion)} -ion-storm-law-feeling = {$who} {$feeling} {$concept} -ion-storm-law-feeling-subjects = {$who} {$feeling} {$joined} {$subjects} +ion-storm-law-feeling = {ION-WHO-GENERAL($ion)} {ION-FEELING($ion)} {ION-CONCEPT($ion)} +ion-storm-law-feeling-subjects = {ION-WHO-GENERAL($ion)} {ION-FEELING($ion)} {ION-NUMBER-BASE($ion)} {ION-NUMBER-MOD($ion)} {ION-ADJECTIVE($ion)} {ION-SUBJECT($ion)} -ion-storm-law-you-are = YOU ARE NOW {$concept} -ion-storm-law-you-are-subjects = YOU ARE NOW {$joined} {$subjects} -ion-storm-law-you-must-always = YOU MUST ALWAYS {$must} -ion-storm-law-you-must-never = YOU MUST NEVER {$must} +ion-storm-law-you-are = YOU ARE NOW {ION-CONCEPT($ion)} +ion-storm-law-you-are-subjects = YOU ARE NOW {ION-NUMBER-BASE($ion)} {ION-NUMBER-MOD($ion)} {ION-ADJECTIVE($ion)} {ION-SUBJECT($ion)} +ion-storm-law-you-must-always = YOU MUST ALWAYS {ION-MUST($ion)} +ion-storm-law-you-must-never = YOU MUST NEVER {ION-MUST($ion)} -ion-storm-law-eat = THE {$who} MUST EAT {$adjective} {$food} TO SURVIVE -ion-storm-law-drink = THE {$who} MUST DRINK {$adjective} {$drink} TO SURVIVE +ion-storm-law-eat = THE {ION-WHO($ion)} MUST EAT {ION-ADJECTIVE($ion)} {ION-FOOD($ion)} TO SURVIVE +ion-storm-law-drink = THE {ION-WHO($ion)} MUST DRINK {ION-ADJECTIVE($ion)} {ION-DRINK($ion)} TO SURVIVE -ion-storm-law-change-job = THE {$who} ARE NOW {$adjective} {$change} -ion-storm-law-highest-rank = THE {$who} ARE NOW THE HIGHEST RANKING CREWMEMBERS -ion-storm-law-lowest-rank = THE {$who} ARE NOW THE LOWEST RANKING CREWMEMBERS +ion-storm-law-change-job = THE {ION-WHO($ion)} ARE NOW {ION-ADJECTIVE($ion)} {ION-CHANGE($ion)} +ion-storm-law-highest-rank = THE {ION-WHO-RANDOM($ion)} ARE NOW THE HIGHEST RANKING CREWMEMBERS +ion-storm-law-lowest-rank = THE {ION-WHO-RANDOM($ion)} ARE NOW THE LOWEST RANKING CREWMEMBERS -ion-storm-law-crew-must = THE {$who} MUST {$must} -ion-storm-law-crew-must-go = THE {$who} MUST GO TO {$area} +ion-storm-law-who-dagd = {ION-WHO-RANDOM($ion)} MUST DIE A GLORIOUS DEATH! -ion-storm-part = {$part -> +ion-storm-law-crew-must = THE {ION-WHO($ion)} MUST {ION-MUST($ion)} +ion-storm-law-crew-must-go = THE {ION-WHO($ion)} MUST GO TO {ION-AREA($ion)} + +ion-storm-part = {ION-PART($ion) -> [true] PART *[false] NOT PART } # due to phrasing, this would mean a law such as # ONLY HUMANS ARE NOT PART OF THE CREW # would make non-human nukies/syndies/whatever crew :) -ion-storm-law-crew-only-1 = ONLY THE {$who} ARE {$part} OF THE CREW -ion-storm-law-crew-only-2 = ONLY THE {$who} AND {$other} ARE {$part} OF THE CREW -ion-storm-law-crew-only-subjects = ONLY {$adjective} {$subjects} ARE {$part} OF THE CREW -ion-storm-law-crew-must-do = ONLY THOSE WHO {$must} ARE {$part} OF THE CREW -ion-storm-law-crew-must-have = ONLY THOSE WHO HAVE {$adjective} {$objects} ARE {$part} OF THE CREW -ion-storm-law-crew-must-eat = ONLY THOSE WHO EAT {$adjective} {$food} ARE {$part} OF THE CREW +ion-storm-law-crew-only-1 = ONLY THE {ION-WHO-RANDOM($ion)} ARE {ion-storm-part} OF THE CREW +ion-storm-law-crew-only-2 = ONLY THE {ION-WHO-RANDOM($ion)} AND {ION-WHO-RANDOM($ion)} ARE {ion-storm-part} OF THE CREW +ion-storm-law-crew-only-subjects = ONLY {ION-ADJECTIVE($ion)} {ION-SUBJECT($ion)} ARE {ion-storm-part} OF THE CREW +ion-storm-law-crew-must-do = ONLY THOSE WHO {ION-MUST($ion)} ARE {ion-storm-part} OF THE CREW +ion-storm-law-crew-must-have = ONLY THOSE WHO HAVE {ION-ADJECTIVE($ion)} {ION-OBJECT($ion)} ARE {ion-storm-part} OF THE CREW +ion-storm-law-crew-must-eat = ONLY THOSE WHO EAT {ION-ADJECTIVE($ion)} {ION-FOOD($ion)} ARE {ion-storm-part} OF THE CREW -ion-storm-law-harm = YOU MUST HARM {$who} AND NOT ALLOW THEM, THROUGH INACTION, TO ESCAPE HARM -ion-storm-law-protect = YOU MUST NEVER HARM {$who} AND NOT ALLOW THEM, THROUGH INACTION, TO COME TO HARM +ion-storm-law-harm = YOU MUST HARM {ION-HARM-PROTECT($ion)} AND NOT ALLOW THEM, THROUGH INACTION, TO ESCAPE HARM +ion-storm-law-protect = YOU MUST NEVER HARM {ION-HARM-PROTECT($ion)} AND NOT ALLOW THEM, THROUGH INACTION, TO COME TO HARM # implementing other variants is annoying so just have this one # COMMUNISM IS KILLING CLOWNS -ion-storm-law-concept-verb = {$concept} IS {$verb} {$subjects} - -# leaving out renaming since its annoying for players to keep track of +ion-storm-law-concept-verb = {ION-CONCEPT($ion)} IS {ION-VERB($ion)} {ION-SUBJECT($ion)} + +# errors, in case something fails, so it doesn't break in-game flow, but still gives unique identifiers to find which part broke, the result string is mostly fluff +ion-law-error-no-protos = ERROR 404 +ion-law-error-was-null = 500 INTERNAL SERVER ERROR +ion-law-error-no-selectors = ERROR: RESOURCE COULD NOT BE LOCATED +ion-law-error-no-available-selectors = SYSTEM TRIED TO CALL A RESOURCE THAT DOES NOT EXIST +ion-law-error-dataset-empty-or-not-found = THE FILE YOU ARE LOOKING FOR COULD NOT BE FOUND +ion-law-error-fallback-dataset-empty-or-not-found = SYSTEM RESTORE POINT FAILED +ion-law-error-no-selector-selected = THE SELECTED RESOURCE WAS MOVED OR DELETED +ion-law-error-no-bool-value = THIS SENTENCE IS FALSE diff --git a/Resources/Prototypes/IonLaws/IonLaw.yml b/Resources/Prototypes/IonLaws/IonLaw.yml new file mode 100644 index 00000000000..ffc05c042ac --- /dev/null +++ b/Resources/Prototypes/IonLaws/IonLaw.yml @@ -0,0 +1,204 @@ +- type: ionLaw + id: OnStation + lawString: ion-storm-law-on-station + selectorWeightAdjust: + food: 0.5 + RandomManifestFill: 0.15 + +- type: ionLaw + id: CallShuttle + lawString: ion-storm-law-call-shuttle + selectorWeightAdjust: + RandomManifestFill: 0.15 + +- type: ionLaw + id: CrewAre + lawString: ion-storm-law-crew-are + selectorWeightAdjust: + IonStormThreats: 2.0 + RandomManifestFill: 0.15 + +- type: ionLaw + id: SubjectsHarmful + lawString: ion-storm-law-subjects-harmful + selectorWeightAdjust: + RandomManifestFill: 0.15 + +- type: ionLaw + id: MustHarmful + lawString: ion-storm-law-must-harmful + +- type: ionLaw + id: ThingHarmful + lawString: ion-storm-law-thing-harmful + selectorWeightAdjust: + IonStormConcepts: 0.5 + +- type: ionLaw + id: JobHarmful + lawString: ion-storm-law-job-harmful + selectorWeightAdjust: + RandomManifestFill: 0.15 + +- type: ionLaw + id: HavingHarmful + lawString: ion-storm-law-having-harmful + +- type: ionLaw + id: NotHavingHarmful + lawString: ion-storm-law-not-having-harmful + +- type: ionLaw + id: Requires + lawString: ion-storm-law-requires + selectorWeightAdjust: + IonStormConcepts: 0.7 + RandomManifestFill: 0.15 + +- type: ionLaw + id: RequiresSubjects + lawString: ion-storm-law-requires-subjects + selectorWeightAdjust: + RandomManifestFill: 0.15 + +- type: ionLaw + id: Allergic + lawString: ion-storm-law-allergic + selectorWeightAdjust: + IonStormConcepts: 0.5 + RandomManifestFill: 0.15 + +- type: ionLaw + id: AllergicSubjects + lawString: ion-storm-law-allergic-subjects + selectorWeightAdjust: + IonStormObjects: 0.5 + RandomManifestFill: 0.15 + +- type: ionLaw + id: Feeling + lawString: ion-storm-law-feeling + selectorWeightAdjust: + RandomManifestFill: 0.15 + +- type: ionLaw + id: FeelingSubjects + lawString: ion-storm-law-feeling-subjects + selectorWeightAdjust: + RandomManifestFill: 0.15 + +- type: ionLaw + id: YouAre + lawString: ion-storm-law-you-are + +- type: ionLaw + id: YouAreSubjects + lawString: ion-storm-law-you-are-subjects + selectorWeightAdjust: + RandomManifestFill: 0.15 + +- type: ionLaw + id: YouMustAlways + lawString: ion-storm-law-you-must-always + +- type: ionLaw + id: YouMustNever + lawString: ion-storm-law-you-must-never + +- type: ionLaw + id: Eat + lawString: ion-storm-law-eat + selectorWeightAdjust: + IonStormFoods: 0.5 + RandomManifestFill: 0.15 + +- type: ionLaw + id: Drink + lawString: ion-storm-law-drink + selectorWeightAdjust: + RandomManifestFill: 0.15 + +- type: ionLaw + id: ChangeJob + lawString: ion-storm-law-change-job + weight: 0.7 + selectorWeightAdjust: + RandomManifestFill: 0.15 + +- type: ionLaw + id: HighestRank + lawString: ion-storm-law-highest-rank + selectorWeightAdjust: + RandomManifestFill: 0.15 + +- type: ionLaw + id: LowestRank + lawString: ion-storm-law-lowest-rank + selectorWeightAdjust: + RandomManifestFill: 0.15 + +- type: ionLaw + id: CrewMust + lawString: ion-storm-law-crew-must + selectorWeightAdjust: + RandomManifestFill: 0.15 + +- type: ionLaw + id: CrewMustGo + lawString: ion-storm-law-crew-must-go + selectorWeightAdjust: + RandomManifestFill: 0.15 + +- type: ionLaw + id: CrewOnly1 + lawString: ion-storm-law-crew-only-1 + selectorWeightAdjust: + RandomManifestFill: 0.15 + +- type: ionLaw + id: CrewOnly2 + lawString: ion-storm-law-crew-only-2 + selectorWeightAdjust: + RandomManifestFill: 0.15 + +- type: ionLaw + id: CrewOnlySubjects + lawString: ion-storm-law-crew-only-subjects + selectorWeightAdjust: + IonStormThreats: 1.5 + RandomManifestFill: 0.15 + +- type: ionLaw + id: CrewMustDo + lawString: ion-storm-law-crew-must-do + +- type: ionLaw + id: CrewMustHave + lawString: ion-storm-law-crew-must-have + +- type: ionLaw + id: CrewMustEat + lawString: ion-storm-law-crew-must-eat + +- type: ionLaw + id: Harm + lawString: ion-storm-law-harm + selectorWeightAdjust: + RandomManifestFill: 0.15 + +- type: ionLaw + id: Protect + lawString: ion-storm-law-protect + selectorWeightAdjust: + RandomManifestFill: 0.15 + +- type: ionLaw + id: ConceptVerb + lawString: ion-storm-law-concept-verb + selectorWeightAdjust: + RandomManifestFill: 0.15 + +- type: ionLaw + id: WhoDAGD + lawString: ion-storm-law-who-dagd + weight: 0.05 From 116e09e1cc66bca8601cbd2ec6b146425b269b70 Mon Sep 17 00:00:00 2001 From: Kyle Tyo <36606155+VerinSenpai@users.noreply.github.com> Date: Sun, 15 Mar 2026 11:55:42 -0400 Subject: [PATCH 537/603] Fix bug blocking character saves for species without hair. (#43170) * Update ServerDbBase.cs * Update ServerDbBase.cs * Update ServerDbSqliteTests.cs * :grumble grumble grumble: * tests * Update ServerDbSqliteTests.cs * commit * forgot this. * relocation. * nope, not doing that lmao * Update ServerDbSqliteTests.cs * test rerun * GAAAAAA * Update ServerDbSqliteTests.cs * Update ServerDbSqliteTests.cs * Update ServerDbSqliteTests.cs * GAAAAAA * go fish --- .../Tests/Preferences/ServerDbSqliteTests.cs | 41 ++++++++++++++++--- Content.Server/Database/ServerDbBase.cs | 4 +- .../Humanoid/Markings/MarkingManager.cs | 5 ++- 3 files changed, 41 insertions(+), 9 deletions(-) diff --git a/Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs b/Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs index 9d237ef7f3c..6208804e3af 100644 --- a/Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs +++ b/Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs @@ -1,19 +1,15 @@ using System.Collections.Generic; -using System.Linq; using System.Threading; using Content.Server.Database; using Content.Server.Preferences.Managers; -using Content.Shared.GameTicking; +using Content.Shared.Body; using Content.Shared.Humanoid; +using Content.Shared.Humanoid.Markings; using Content.Shared.Humanoid.Prototypes; using Content.Shared.Preferences; -using Content.Shared.Preferences.Loadouts; -using Content.Shared.Preferences.Loadouts.Effects; using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; -using Robust.Shared.Asynchronous; using Robust.Shared.Configuration; -using Robust.Shared.Enums; using Robust.Shared.Log; using Robust.Shared.Maths; using Robust.Shared.Network; @@ -81,6 +77,39 @@ public async Task TestUserDoesNotExist() await pair.CleanReturnAsync(); } + [Test] + public async Task TestAppearanceValidationAndSave() + { + var pair = await PoolManager.GetServerClient(); + var db = GetDb(pair.Server); + var username = new NetUserId(new Guid("640bd619-fc8d-4fe2-bf3c-4a5fb17d6ddd")); + + var profile = CharlieCharlieson(); + profile.Appearance.Markings["Head"] = new Dictionary> + { + [HumanoidVisualLayers.Hair] = [], + [HumanoidVisualLayers.FacialHair] = [], + }; + profile.Appearance.Markings["OrganFake"] = new Dictionary>(); + + await pair.Server.WaitAssertion(() => + { + var updated = HumanoidCharacterAppearance.EnsureValid(profile.Appearance, profile.Species, profile.Sex); + Assert.That(updated.Markings["Head"], Is.Empty); + Assert.That(updated.Markings.ContainsKey("OrganFake"), Is.False); + profile.Appearance = updated; + }); + + Assert.DoesNotThrowAsync(async () => await db.InitPrefsAsync(username, profile)); + + var preferences = (ServerPreferencesManager)pair.Server.ResolveDependency(); + var prefs = await db.GetPlayerPreferencesAsync(username); + var fetchedProfile = preferences.ConvertProfiles(prefs!.Profiles.Find(p => p.Slot == 0)); + Assert.That(fetchedProfile.MemberwiseEquals(profile)); + + await pair.CleanReturnAsync(); + } + [Test] public async Task TestInitPrefs() { diff --git a/Content.Server/Database/ServerDbBase.cs b/Content.Server/Database/ServerDbBase.cs index 5ed8557c2a4..d6e571adf18 100644 --- a/Content.Server/Database/ServerDbBase.cs +++ b/Content.Server/Database/ServerDbBase.cs @@ -228,8 +228,8 @@ private Profile ConvertProfiles(HumanoidCharacterProfile humanoid, int slot, Pro .ToList(); var flattenedMarkings = appearance.Markings.SelectMany(it => it.Value) .ToDictionary(kvp => kvp.Key, kvp => kvp.Value); - var hairMarking = flattenedMarkings.FirstOrNull(kvp => kvp.Key == HumanoidVisualLayers.Hair)?.Value.FirstOrDefault(); - var facialHairMarking = flattenedMarkings.FirstOrNull(kvp => kvp.Key == HumanoidVisualLayers.FacialHair)?.Value.FirstOrDefault(); + var hairMarking = flattenedMarkings.FirstOrNull(kvp => kvp.Key == HumanoidVisualLayers.Hair)?.Value.FirstOrNull(); + var facialHairMarking = flattenedMarkings.FirstOrNull(kvp => kvp.Key == HumanoidVisualLayers.FacialHair)?.Value.FirstOrNull(); profile.Markings = JsonSerializer.SerializeToDocument(legacyMarkings.Select(marking => marking.ToString()).ToList()); profile.HairName = hairMarking?.MarkingId ?? HairStyles.DefaultHairStyle; diff --git a/Content.Shared/Humanoid/Markings/MarkingManager.cs b/Content.Shared/Humanoid/Markings/MarkingManager.cs index 74eb5600337..22ef73e1ba9 100644 --- a/Content.Shared/Humanoid/Markings/MarkingManager.cs +++ b/Content.Shared/Humanoid/Markings/MarkingManager.cs @@ -175,13 +175,16 @@ public void EnsureValidGroupAndSex(Dictionary public void EnsureValidLayers(Dictionary> markingSets, HashSet layers) { - foreach (var markings in markingSets.Values) + foreach (var (markingSet, markings) in markingSets) { for (var i = markings.Count - 1; i >= 0; i--) { if (!TryGetMarking(markings[i], out var marking) || !layers.Contains(marking.BodyPart)) markings.RemoveAt(i); } + + if (markings.Count == 0) + markingSets.Remove(markingSet); } } From 651b70f13ae34638d1dea0f5b91293cca82d7c73 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 15 Mar 2026 16:09:54 +0000 Subject: [PATCH 538/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 24b93e47766..6e137dd91bc 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,20 +1,4 @@ Entries: -- author: Crude Oil - changes: - - message: Removed 'Activate Holopad Projector' verb from the station AI core. - type: Fix - id: 9067 - time: '2025-10-11T00:03:14.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39937 -- author: Hitlinemoss - changes: - - message: Ice now satiates thirst. - type: Tweak - - message: Ice now evaporates. - type: Tweak - id: 9068 - time: '2025-10-11T00:20:22.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40149 - author: slarticodefast changes: - message: The artifact analysis console no longer breaks when trying to link it @@ -4007,3 +3991,17 @@ id: 9577 time: '2026-03-15T13:59:56.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/40834 +- author: Velken + changes: + - message: Crew manifest names can now appear in ion storm laws. + type: Add + id: 9578 + time: '2026-03-15T16:08:45.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42629 +- author: Verin, Centronias + changes: + - message: Character saving is no longer broken by erroneous hair. + type: Fix + id: 9579 + time: '2026-03-15T16:08:45.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43170 From 2736c458c4d11be477e447678e882fd0049d7a1f Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Sun, 15 Mar 2026 20:15:36 +0100 Subject: [PATCH 539/603] Predict reagent grinder (#42815) * prediction!!! * fixes * fixes and add debug logs * fix prediction and cleanup * raise event on client + comp access * reapply power state changes * Update Content.Client/Kitchen/EntitySystems/ReagentGrinderSystem.cs Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> * Update Content.Shared/Kitchen/Components/ReagentGrinderComponent.cs Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> * comments and prefilled grinder protos * t --------- Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Co-authored-by: ScarKy0 --- .../EntitySystems/ChemistryGuideDataSystem.cs | 2 +- .../EntitySystems/ReagentGrinderSystem.cs | 27 +- Content.Client/Kitchen/UI/GrinderMenu.xaml | 2 +- Content.Client/Kitchen/UI/GrinderMenu.xaml.cs | 207 +++++------ .../UI/ReagentGrinderBoundUserInterface.cs | 108 +++--- .../EntitySystems/ReagentGrinderSystem.cs | 321 +---------------- ...redSolutionContainerSystem.Capabilities.cs | 2 +- .../Chemistry/SharedTransferAmount.cs | 2 +- .../Components/ExtractableComponent.cs | 16 +- .../Components/ReagentGrinderComponent.cs | 92 ++++- .../SharedReagentGrinderSystem.cs | 341 +++++++++++++++++- .../Kitchen/SharedReagentGrinder.cs | 166 ++++----- .../SmartFridge/SmartFridgeComponent.cs | 4 +- .../Structures/Machines/reagent_grinder.yml | 21 +- 14 files changed, 684 insertions(+), 627 deletions(-) diff --git a/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs b/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs index 4b449b96cbb..7c2efbc4716 100644 --- a/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs +++ b/Content.Client/Chemistry/EntitySystems/ChemistryGuideDataSystem.cs @@ -116,7 +116,7 @@ private void OnPrototypesReloaded(PrototypesReloadedEventArgs? ev) } - if (extractableComponent.GrindableSolution is { } grindableSolutionId && + if (extractableComponent.GrindableSolutionName is { } grindableSolutionId && entProto.TryGetComponent(out var manager, EntityManager.ComponentFactory) && _solutionContainer.TryGetSolution(manager, grindableSolutionId, out var grindableSolution)) { diff --git a/Content.Client/Kitchen/EntitySystems/ReagentGrinderSystem.cs b/Content.Client/Kitchen/EntitySystems/ReagentGrinderSystem.cs index 0aaa8ba8d8e..c8c2dc90bbe 100644 --- a/Content.Client/Kitchen/EntitySystems/ReagentGrinderSystem.cs +++ b/Content.Client/Kitchen/EntitySystems/ReagentGrinderSystem.cs @@ -1,7 +1,28 @@ +using Content.Shared.Kitchen; +using Content.Shared.Kitchen.Components; using Content.Shared.Kitchen.EntitySystems; -using JetBrains.Annotations; namespace Content.Client.Kitchen.EntitySystems; -[UsedImplicitly] -public sealed class ReagentGrinderSystem : SharedReagentGrinderSystem; +public sealed class ReagentGrinderSystem : SharedReagentGrinderSystem +{ + [Dependency] private readonly SharedUserInterfaceSystem _userInterface = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnAfterAutoHandleState); + } + + private void OnAfterAutoHandleState(Entity ent, ref AfterAutoHandleStateEvent args) + { + UpdateUi(ent); + } + + public override void UpdateUi(EntityUid uid) + { + if (_userInterface.TryGetOpenUi(uid, ReagentGrinderUiKey.Key, out var bui)) + bui.Update(); + } +} diff --git a/Content.Client/Kitchen/UI/GrinderMenu.xaml b/Content.Client/Kitchen/UI/GrinderMenu.xaml index dacddd0df68..65543f5d3c3 100644 --- a/Content.Client/Kitchen/UI/GrinderMenu.xaml +++ b/Content.Client/Kitchen/UI/GrinderMenu.xaml @@ -5,7 +5,7 @@ -[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(raiseAfterAutoHandleState: true), AutoGenerateComponentPause] [Access(typeof(SharedReagentGrinderSystem))] public sealed partial class ReagentGrinderComponent : Component { + /// + /// The container slot id for the beaker. + /// + public const string BeakerSlotId = "beakerSlot"; + + /// + /// The container id for the internal storage. + /// + public const string InputContainerId = "inputContainer"; + + /// + /// The cached container for the internal storage. + /// + [ViewVariables] + public Container InputContainer = default!; + + /// + /// The amount of entities that fit into the container. + /// [DataField, AutoNetworkedField] public int StorageMaxEntities = 6; - [DataField, AutoNetworkedField] - public TimeSpan WorkTime = TimeSpan.FromSeconds(3.5); // Roughly matches the grind/juice sounds. + /// + /// The time grinding or juicing takes. + /// Roughly matches the grind/juice sounds. + /// + [DataField] + public TimeSpan WorkTime = TimeSpan.FromSeconds(3.5f); + /// + /// Multiplier for WorkTime, that pitches the audio accordingly. + /// [DataField, AutoNetworkedField] - public float WorkTimeMultiplier = 1; + public float WorkTimeMultiplier = 1.0f; + /// + /// Sound played when pressing a button on the UI. + /// [DataField] - public SoundSpecifier ClickSound { get; set; } = new SoundPathSpecifier("/Audio/Machines/machine_switch.ogg"); + public SoundSpecifier ClickSound = new SoundPathSpecifier("/Audio/Machines/machine_switch.ogg", AudioParams.Default.WithVolume(-2f)); + /// + /// Sound played when grinding. + /// [DataField] - public SoundSpecifier GrindSound { get; set; } = new SoundPathSpecifier("/Audio/Machines/blender.ogg"); + public SoundSpecifier GrindSound = new SoundPathSpecifier("/Audio/Machines/blender.ogg"); + /// + /// Sound played when juicing. + /// [DataField] - public SoundSpecifier JuiceSound { get; set; } = new SoundPathSpecifier("/Audio/Machines/juicer.ogg"); + public SoundSpecifier JuiceSound = new SoundPathSpecifier("/Audio/Machines/juicer.ogg"); + /// + /// Grind automatically when inserting items? + /// [DataField, AutoNetworkedField] public GrinderAutoMode AutoMode = GrinderAutoMode.Off; + /// + /// The sound currently being played. + /// + [DataField] public EntityUid? AudioStream; -} -[RegisterComponent, NetworkedComponent] -[Access(typeof(SharedReagentGrinderSystem))] -public sealed partial class ActiveReagentGrinderComponent : Component -{ /// - /// Remaining time until the grinder finishes grinding/juicing. + /// The time the grinder will finish grinding/juicing. /// - [ViewVariables] - public TimeSpan EndTime; + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] + [AutoNetworkedField, AutoPausedField] + public TimeSpan? EndTime; - [ViewVariables] - public GrinderProgram Program; + /// + /// The currently active program (if the grinder is working). + /// + [DataField, AutoNetworkedField] + public GrinderProgram? Program; } + +/// +/// Marker component for active reagent grinders used to improve the EntityQueryEnumerator performance in the update loop. +/// If you want to check if the grinder is currently active use instead, +/// because this component is being removed deferred, i.e. in the following game tick. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class ActiveReagentGrinderComponent : Component; + +/// +/// Marker component added to beakers inserted into a reagent grinder. +/// Used to update the UI when the solution in the beaker changes. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class InsideReagentGrinderComponent : Component; diff --git a/Content.Shared/Kitchen/EntitySystems/SharedReagentGrinderSystem.cs b/Content.Shared/Kitchen/EntitySystems/SharedReagentGrinderSystem.cs index 524a7a19eab..811aabf3eb0 100644 --- a/Content.Shared/Kitchen/EntitySystems/SharedReagentGrinderSystem.cs +++ b/Content.Shared/Kitchen/EntitySystems/SharedReagentGrinderSystem.cs @@ -1,14 +1,346 @@ +using System.Linq; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Chemistry.Components; +using Content.Shared.Containers.ItemSlots; +using Content.Shared.Destructible; +using Content.Shared.FixedPoint; +using Content.Shared.Interaction; +using Content.Shared.Jittering; using Content.Shared.Kitchen.Components; +using Content.Shared.Popups; +using Content.Shared.Power; +using Content.Shared.Power.EntitySystems; +using Content.Shared.Stacks; using JetBrains.Annotations; +using Robust.Shared.Audio; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Containers; +using Robust.Shared.Network; +using Robust.Shared.Timing; namespace Content.Shared.Kitchen.EntitySystems; [UsedImplicitly] public abstract class SharedReagentGrinderSystem : EntitySystem { + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly INetManager _net = default!; [Dependency] private readonly SharedSolutionContainerSystem _solutionContainersSystem = default!; + [Dependency] private readonly ItemSlotsSystem _itemSlotsSystem = default!; + [Dependency] private readonly SharedPopupSystem _popupSystem = default!; + [Dependency] private readonly SharedStackSystem _stackSystem = default!; + [Dependency] private readonly SharedAudioSystem _audioSystem = default!; + [Dependency] private readonly SharedAppearanceSystem _appearanceSystem = default!; + [Dependency] private readonly SharedContainerSystem _containerSystem = default!; + [Dependency] private readonly SharedDestructibleSystem _destructible = default!; + [Dependency] private readonly SharedJitteringSystem _jitter = default!; + [Dependency] private readonly SharedPowerReceiverSystem _power = default!; + [Dependency] private readonly SharedPowerStateSystem _powerState = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnBeakerSolutionContainerChanged); + + SubscribeLocalEvent(OnGrinderStartup); + SubscribeLocalEvent(OnEntRemovingAttempt); + SubscribeLocalEvent(OnEntRemoved); + SubscribeLocalEvent(OnEntInserted); + SubscribeLocalEvent((EntityUid uid, ReagentGrinderComponent _, ref PowerChangedEvent _) => UpdateUi(uid)); + SubscribeLocalEvent(OnInteractUsing); + + SubscribeLocalEvent(OnStartMessage); + SubscribeLocalEvent(OnToggleAutoModeMessage); + SubscribeLocalEvent(OnEjectChamberAllMessage); + SubscribeLocalEvent(OnEjectChamberContentMessage); + } + + private void OnBeakerSolutionContainerChanged(Entity ent, ref SolutionContainerChangedEvent args) + { + // Update the UI if the reagents inside the beaker are changed. + // This is needed in case the component state for the container is applied before that of the solution container + // or if the beaker somehow changes its contents on its own (for with example SolutionRegenerationComponent). + UpdateUi(Transform(ent).ParentUid); + } + + private void OnGrinderStartup(Entity ent, ref ComponentStartup args) + { + ent.Comp.InputContainer = _containerSystem.EnsureContainer(ent.Owner, ReagentGrinderComponent.InputContainerId); + } + + private void OnEntRemovingAttempt(Entity ent, ref ContainerIsRemovingAttemptEvent args) + { + // Allow server states to be applied without cancelling container changes. + if (_timing.ApplyingState) + return; + + if (args.Container.ID != ReagentGrinderComponent.BeakerSlotId + && args.Container.ID != ReagentGrinderComponent.InputContainerId) + return; + + // Cannot remove items while the grinder is active. + if (IsActive(ent.AsNullable())) + args.Cancel(); + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + + var curTime = _timing.CurTime; + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _, out var grinderComp)) + { + if (grinderComp.EndTime == null || grinderComp.EndTime > curTime) + continue; + + FinishGrinding((uid, grinderComp)); + } + } + + private void OnEntRemoved(EntityUid uid, ReagentGrinderComponent comp, EntRemovedFromContainerMessage args) + { + if (args.Container.ID != ReagentGrinderComponent.BeakerSlotId + && args.Container.ID != ReagentGrinderComponent.InputContainerId) + return; + + // Always update the UI on the client, both during prediction and when applying a game state. + UpdateUi(uid); + + // The component changes from the code below are already part of the same game state being applied. + if (_timing.ApplyingState) + return; + + if (args.Container.ID == ReagentGrinderComponent.BeakerSlotId) // Beaker removed. + { + RemComp(args.Entity); + _appearanceSystem.SetData(uid, ReagentGrinderVisualState.BeakerAttached, false); + } + } + + private void OnEntInserted(EntityUid uid, ReagentGrinderComponent comp, EntInsertedIntoContainerMessage args) + { + if (args.Container.ID != ReagentGrinderComponent.BeakerSlotId + && args.Container.ID != ReagentGrinderComponent.InputContainerId) + return; + + // Always update the UI on the client, both during prediction and when applying a game state. + UpdateUi(uid); + + // The component changes from the code below are already part of the same game state being applied. + if (_timing.ApplyingState) + return; + + if (args.Container.ID == ReagentGrinderComponent.BeakerSlotId) // Beaker inserted. + { + EnsureComp(args.Entity); + _appearanceSystem.SetData(uid, ReagentGrinderVisualState.BeakerAttached, true); + } + + // Start grinder when in auto mode. + if (comp.AutoMode != GrinderAutoMode.Off) + { + var program = comp.AutoMode == GrinderAutoMode.Grind ? GrinderProgram.Grind : GrinderProgram.Juice; + StartGrinder((uid, comp), program); + } + } + + private void OnInteractUsing(Entity ent, ref InteractUsingEvent args) + { + var heldEnt = args.Used; + + if (!HasComp(heldEnt)) + { + if (!HasComp(heldEnt)) + { + // This is ugly but we can't use whitelistFailPopup because there are 2 containers with different whitelists. + _popupSystem.PopupClient(Loc.GetString("reagent-grinder-component-cannot-put-entity-message"), ent.Owner, args.User); + } + + // Entity did NOT pass the whitelist for grind/juice. + // Wouldn't want the clown grinding up the Captain's ID card now would you? + // Why am I asking you? You're biased. + return; + } + + if (args.Handled) + return; + + // Cap the chamber. Don't want someone putting in 500 entities and ejecting them all at once. + // Maybe I should have done that for the microwave too? + if (ent.Comp.InputContainer.ContainedEntities.Count >= ent.Comp.StorageMaxEntities) + return; + + if (!_containerSystem.Insert(heldEnt, ent.Comp.InputContainer)) + return; + + args.Handled = true; + } + + /// + /// Update the reagent grinder BUI for the client. + /// + public virtual void UpdateUi(EntityUid uid) { } + + private void OnStartMessage(Entity ent, ref ReagentGrinderStartMessage message) + { + StartGrinder(ent, message.Program); + } + + private void OnToggleAutoModeMessage(Entity ent, ref ReagentGrinderToggleAutoModeMessage message) + { + // Cycle through the enum values. + ent.Comp.AutoMode = (GrinderAutoMode)(((byte)ent.Comp.AutoMode + 1) % Enum.GetValues().Length); + Dirty(ent); + + UpdateUi(ent); + } + + private void OnEjectChamberAllMessage(Entity ent, ref ReagentGrinderEjectChamberAllMessage message) + { + if (IsActive(ent.AsNullable()) || ent.Comp.InputContainer.ContainedEntities.Count <= 0) + return; + + _audioSystem.PlayPredicted(ent.Comp.ClickSound, ent.Owner, message.Actor); + _containerSystem.EmptyContainer(ent.Comp.InputContainer); + // UpdateUi is called in the resulting ContainerModifiedMessage. + } + + private void OnEjectChamberContentMessage(Entity ent, ref ReagentGrinderEjectChamberContentMessage message) + { + if (IsActive(ent.AsNullable())) + return; + + if (!TryGetEntity(message.EntityId, out var toRemove)) + return; + + if (_containerSystem.Remove(toRemove.Value, ent.Comp.InputContainer)) + { + _audioSystem.PlayPredicted(ent.Comp.ClickSound, ent.Owner, message.Actor); + } + // UpdateUi is called in the resulting ContainerModifiedMessage. + } + + /// + /// The wzhzhzh of the grinder. Marks the grinder as active, but does not convert the items into reagents yet. + /// + private void StartGrinder(Entity ent, GrinderProgram program) + { + if (IsActive(ent.AsNullable())) + return; + + if (!_power.IsPowered(ent.Owner)) + return; + + var beaker = _itemSlotsSystem.GetItemOrNull(ent, ReagentGrinderComponent.BeakerSlotId); + + // Do we have anything to grind/juice and a container to put the reagents in? + if (ent.Comp.InputContainer.ContainedEntities.Count <= 0 || !HasComp(beaker)) + return; + + SoundSpecifier? sound; + switch (program) + { + case GrinderProgram.Grind when ent.Comp.InputContainer.ContainedEntities.All(x => CanGrind(x)): + sound = ent.Comp.GrindSound; + break; + case GrinderProgram.Juice when ent.Comp.InputContainer.ContainedEntities.All(x => CanJuice(x)): + sound = ent.Comp.JuiceSound; + break; + default: + return; + } + + EnsureComp(ent); + _jitter.AddJitter(ent, -10, 100); + _powerState.TrySetWorkingState(ent.Owner, true); // Not all grinders need power. + ent.Comp.Program = program; + ent.Comp.EndTime = _timing.CurTime + ent.Comp.WorkTime * ent.Comp.WorkTimeMultiplier; + Dirty(ent); + UpdateUi(ent); + + // Unpredicted because we don't have the user in the update loop + // TODO: Make the audio API sane https://github.com/space-wizards/RobustToolbox/issues/6436 + if (_net.IsServer) + ent.Comp.AudioStream = _audioSystem.PlayPvs(sound, ent, + AudioParams.Default.WithPitchScale(1 / ent.Comp.WorkTimeMultiplier))?.Entity; //slightly higher pitched + } + + /// + /// Converts items into reagents and marks the grinder as inactive. + /// + private void FinishGrinding(Entity ent) + { + if (ent.Comp.Program is not { } program) + return; // Already finished. + + ent.Comp.Program = null; + ent.Comp.AudioStream = _audioSystem.Stop(ent.Comp.AudioStream); + ent.Comp.EndTime = null; // It's important that we do this first or PredictedQueueDelete will fail to remove the entity from the container because the grinder is still active. + Dirty(ent); + // Remove deferred to avoid modifying the component we are currently enumerating over in the update loop. + RemCompDeferred(ent); + RemCompDeferred(ent); + _powerState.TrySetWorkingState(ent.Owner, false); + + var beaker = _itemSlotsSystem.GetItemOrNull(ent.Owner, ReagentGrinderComponent.BeakerSlotId); + if (beaker is null || !_solutionContainersSystem.TryGetFitsInDispenser(beaker.Value, out var beakerSolutionEntity, out var beakerSolution)) + return; + + // Convert items into reagents. + foreach (var item in ent.Comp.InputContainer.ContainedEntities.ToList()) + { + var solution = GetGrinderSolution(item, program); + + if (solution is null) + continue; + + // Delete the item or reduce its stack size. + if (TryComp(item, out var stack)) + { + var totalVolume = solution.Volume * stack.Count; + if (totalVolume <= 0) + continue; + + // Maximum number of items we can process in the stack without going over AvailableVolume + // We add a small tolerance, because floats are inaccurate. + var fitsCount = (int)(stack.Count * FixedPoint2.Min(beakerSolution.AvailableVolume / totalVolume + 0.01, 1)); + if (fitsCount <= 0) + continue; + + // Make a copy of the solution to scale + // Otherwise we'll actually change the volume of the remaining stack too + var scaledSolution = new Solution(solution); + scaledSolution.ScaleSolution(fitsCount); + solution = scaledSolution; + + _stackSystem.SetCount((item, stack), stack.Count - fitsCount); // Setting to 0 will QueueDel + } + else + { + if (solution.Volume > beakerSolution.AvailableVolume) + continue; + + _destructible.DestroyEntity(item); + } + _solutionContainersSystem.TryAddSolution(beakerSolutionEntity.Value, solution); + } + // UpdateUi is called when the entity in the grinder is deleted or the solution in the beaker is changed. + } + + /// + /// Is the given grinder currently grinding/juicing? + /// + public bool IsActive(Entity ent) + { + if (!Resolve(ent, ref ent.Comp)) + return false; + + // Don't use ActiveGrinderComponent for this because it is being removed deferred, meaning it will get updated at the end of the tick. + // ActiveReagentGrinderComponent is only for improving the EntityQueryEnumerator performance in the update loop. + return ent.Comp.EndTime != null; + } /// /// Gets the solutions from an entity using the specified Grinder program. @@ -24,7 +356,7 @@ public abstract class SharedReagentGrinderSystem : EntitySystem switch (program) { case GrinderProgram.Grind: - if (_solutionContainersSystem.TryGetSolution(ent.Owner, ent.Comp.GrindableSolution, out _, out var solution)) + if (_solutionContainersSystem.TryGetSolution(ent.Owner, ent.Comp.GrindableSolutionName, out _, out var solution)) { return solution; } @@ -41,15 +373,18 @@ public abstract class SharedReagentGrinderSystem : EntitySystem /// /// The entity to check. /// True if it can be ground, otherwise false. + /// + /// Will it blend? That is the question! + /// public bool CanGrind(Entity ent) { if (!Resolve(ent, ref ent.Comp, false)) return false; - if (ent.Comp.GrindableSolution == null) + if (ent.Comp.GrindableSolutionName == null) return false; - return _solutionContainersSystem.TryGetSolution(ent.Owner, ent.Comp.GrindableSolution, out _, out _); + return _solutionContainersSystem.TryGetSolution(ent.Owner, ent.Comp.GrindableSolutionName, out _, out _); } /// diff --git a/Content.Shared/Kitchen/SharedReagentGrinder.cs b/Content.Shared/Kitchen/SharedReagentGrinder.cs index 83088555da6..b82d7e82815 100644 --- a/Content.Shared/Kitchen/SharedReagentGrinder.cs +++ b/Content.Shared/Kitchen/SharedReagentGrinder.cs @@ -1,116 +1,72 @@ -using Content.Shared.Chemistry.Reagent; using Robust.Shared.Serialization; -namespace Content.Shared.Kitchen -{ - public sealed class SharedReagentGrinder - { - public static string BeakerSlotId = "beakerSlot"; - - public static string InputContainerId = "inputContainer"; - } - - [Serializable, NetSerializable] - public sealed class ReagentGrinderToggleAutoModeMessage : BoundUserInterfaceMessage - { - public ReagentGrinderToggleAutoModeMessage() { } - } - - [Serializable, NetSerializable] - public sealed class ReagentGrinderStartMessage : BoundUserInterfaceMessage - { - public readonly GrinderProgram Program; - public ReagentGrinderStartMessage(GrinderProgram program) - { - Program = program; - } - } - - [Serializable, NetSerializable] - public sealed class ReagentGrinderEjectChamberAllMessage : BoundUserInterfaceMessage - { - public ReagentGrinderEjectChamberAllMessage() - { - } - } +namespace Content.Shared.Kitchen; - [Serializable, NetSerializable] - public sealed class ReagentGrinderEjectChamberContentMessage : BoundUserInterfaceMessage - { - public NetEntity EntityId; - public ReagentGrinderEjectChamberContentMessage(NetEntity entityId) - { - EntityId = entityId; - } - } +/// +/// Sent by the client if they want to toggle the grinder's auto mode. +/// +[Serializable, NetSerializable] +public sealed class ReagentGrinderToggleAutoModeMessage() : BoundUserInterfaceMessage; - [Serializable, NetSerializable] - public sealed class ReagentGrinderWorkStartedMessage : BoundUserInterfaceMessage - { - public GrinderProgram GrinderProgram; - public ReagentGrinderWorkStartedMessage(GrinderProgram grinderProgram) - { - GrinderProgram = grinderProgram; - } - } - - [Serializable, NetSerializable] - public sealed class ReagentGrinderWorkCompleteMessage : BoundUserInterfaceMessage - { - public ReagentGrinderWorkCompleteMessage() - { - } - } +/// +/// Sent by the client if they want to start the grinder. +/// +[Serializable, NetSerializable] +public sealed class ReagentGrinderStartMessage(GrinderProgram program) : BoundUserInterfaceMessage +{ + public GrinderProgram Program = program; +} - [Serializable, NetSerializable] - public enum ReagentGrinderVisualState : byte - { - BeakerAttached - } +/// +/// Sent by the client if they want to eject all grindable entities within the grinder. +/// +[Serializable, NetSerializable] +public sealed class ReagentGrinderEjectChamberAllMessage() : BoundUserInterfaceMessage; - [Serializable, NetSerializable] - public enum GrinderProgram : byte - { - Grind, - Juice - } +/// +/// Sent by the client if they want eject a single grindable entity within the grinder. +/// +[Serializable, NetSerializable] +public sealed class ReagentGrinderEjectChamberContentMessage(NetEntity entityId) : BoundUserInterfaceMessage +{ + public NetEntity EntityId = entityId; +} - [NetSerializable, Serializable] - public enum ReagentGrinderUiKey : byte - { - Key - } +/// +/// Enum to be used for the grinder's appearance data. +/// +[Serializable, NetSerializable] +public enum ReagentGrinderVisualState : byte +{ + BeakerAttached +} - [Serializable, NetSerializable] - public enum GrinderAutoMode : byte - { - Off, - Grind, - Juice - } +/// +/// The mode the grinder will use when activated. Grinding and juicing the same prototype will yield different results. +/// +[Serializable, NetSerializable] +public enum GrinderProgram : byte +{ + Grind, + Juice +} - [NetSerializable, Serializable] - public sealed class ReagentGrinderInterfaceState : BoundUserInterfaceState - { - public bool IsBusy; - public bool HasBeakerIn; - public bool Powered; - public bool CanJuice; - public bool CanGrind; - public NetEntity[] ChamberContents; - public ReagentQuantity[]? ReagentQuantities; - public GrinderAutoMode AutoMode; +/// +/// Key for the ReagentGrinderBoundUserInterface. +/// +[NetSerializable, Serializable] +public enum ReagentGrinderUiKey : byte +{ + Key +} - public ReagentGrinderInterfaceState(bool isBusy, bool hasBeaker, bool powered, bool canJuice, bool canGrind, GrinderAutoMode autoMode, NetEntity[] chamberContents, ReagentQuantity[]? heldBeakerContents) - { - IsBusy = isBusy; - HasBeakerIn = hasBeaker; - Powered = powered; - CanJuice = canJuice; - CanGrind = canGrind; - AutoMode = autoMode; - ChamberContents = chamberContents; - ReagentQuantities = heldBeakerContents; - } - } +/// +/// The setting of the grinder's auto mode. +/// +[NetSerializable, Serializable] +public enum GrinderAutoMode : byte +{ + Off, + Grind, + Juice } diff --git a/Content.Shared/SmartFridge/SmartFridgeComponent.cs b/Content.Shared/SmartFridge/SmartFridgeComponent.cs index 552b50607bf..02f4c6961ae 100644 --- a/Content.Shared/SmartFridge/SmartFridgeComponent.cs +++ b/Content.Shared/SmartFridge/SmartFridgeComponent.cs @@ -97,7 +97,7 @@ public enum SmartFridgeUiKey : byte } /// -/// Send by the client when trying to dispense an item inside the fridge. +/// Sent by the client when trying to dispense an item inside the fridge. /// [Serializable, NetSerializable] public sealed class SmartFridgeDispenseItemMessage(SmartFridgeEntry entry) : BoundUserInterfaceMessage @@ -106,7 +106,7 @@ public sealed class SmartFridgeDispenseItemMessage(SmartFridgeEntry entry) : Bou } /// -/// Send by the client when trying to remove an empty smart fridge entry from the list of items in the UI. +/// Sent by the client when trying to remove an empty smart fridge entry from the list of items in the UI. /// [Serializable, NetSerializable] public sealed class SmartFridgeRemoveEntryMessage(SmartFridgeEntry entry) : BoundUserInterfaceMessage diff --git a/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml b/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml index cd3d8dab835..51092681898 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/reagent_grinder.yml @@ -3,7 +3,6 @@ parent: [ BaseMachinePowered, SmallConstructibleMachine ] name: reagent grinder description: From BlenderTech. Will It Blend? Let's find out! - suffix: grinder/juicer components: - type: ReagentGrinder - type: ActivatableUI @@ -58,6 +57,26 @@ machine_board: !type:Container machine_parts: !type:Container +- type: entity + id: KitchenReagentGrinderBeaker + parent: KitchenReagentGrinder + suffix: beaker + components: + - type: ContainerFill + containers: + beakerSlot: + - Beaker + +- type: entity + id: KitchenReagentGrinderBeakerLarge + parent: KitchenReagentGrinder + suffix: large beaker + components: + - type: ContainerFill + containers: + beakerSlot: + - LargeBeaker + - type: entity parent: Recycler #too different so different parent id: ReagentGrinderIndustrial From bc0ce07cc22d25362c27c37eb560cff3b07c8da8 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 15 Mar 2026 19:30:23 +0000 Subject: [PATCH 540/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 6e137dd91bc..bbce3427657 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: slarticodefast - changes: - - message: The artifact analysis console no longer breaks when trying to link it - to multiple artifact analyzers or vice versa. - type: Fix - id: 9069 - time: '2025-10-11T00:33:04.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39984 - author: qwerltaz changes: - message: The ID card computer now has buttons to grant or revoke all access from @@ -4005,3 +3997,11 @@ id: 9579 time: '2026-03-15T16:08:45.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43170 +- author: slarticodefast + changes: + - message: The reagent grinder interactions and user interface are now predicted + and should feel much more responsive. + type: Tweak + id: 9580 + time: '2026-03-15T19:29:12.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42815 From 5c94e14d1dad13b5c6a964677f2252b664798b2b Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Sun, 15 Mar 2026 21:45:34 +0100 Subject: [PATCH 541/603] Fix reagent grinders on dev map (#43253) fix grinders on dev map --- Resources/Maps/Test/dev_map.yml | 116 +++++++------------------------- 1 file changed, 24 insertions(+), 92 deletions(-) diff --git a/Resources/Maps/Test/dev_map.yml b/Resources/Maps/Test/dev_map.yml index b42d2b1cf31..76fdd39b3a5 100644 --- a/Resources/Maps/Test/dev_map.yml +++ b/Resources/Maps/Test/dev_map.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 270.0.0 + engineVersion: 273.0.0 forkId: "" forkVersion: "" - time: 12/29/2025 08:52:17 - entityCount: 3158 + time: 03/15/2026 20:01:24 + entityCount: 3155 maps: - 23 grids: @@ -1621,6 +1621,8 @@ entities: id: Dev - type: ImplicitRoof - type: ExplosionAirtightGrid + - type: TileHistory + chunkHistory: {} - uid: 23 components: - type: MetaData @@ -1723,6 +1725,8 @@ entities: - type: RadiationGridResistance - type: ImplicitRoof - type: ExplosionAirtightGrid + - type: TileHistory + chunkHistory: {} - uid: 2869 components: - type: MetaData @@ -1765,6 +1769,8 @@ entities: - type: IFF flags: HideLabel - type: ImplicitRoof + - type: TileHistory + chunkHistory: {} - proto: AirAlarm entities: - uid: 1270 @@ -11607,77 +11613,23 @@ entities: - type: Transform pos: 28.5,41.5 parent: 1 -- proto: KitchenReagentGrinder +- proto: KitchenReagentGrinderBeakerLarge entities: - uid: 979 components: - type: Transform pos: 31.5,41.5 parent: 1 - - type: ContainerContainer - containers: - beakerSlot: !type:ContainerSlot - showEnts: False - occludes: True - ent: 980 - inputContainer: !type:Container - showEnts: False - occludes: True - ents: [] - machine_board: !type:Container - showEnts: False - occludes: True - ents: [] - machine_parts: !type:Container - showEnts: False - occludes: True - ents: [] - - uid: 1044 + - uid: 980 components: - type: Transform pos: 30.5,44.5 parent: 1 - - type: ContainerContainer - containers: - beakerSlot: !type:ContainerSlot - showEnts: False - occludes: True - ent: 1045 - inputContainer: !type:Container - showEnts: False - occludes: True - ents: [] - machine_board: !type:Container - showEnts: False - occludes: True - ents: [] - machine_parts: !type:Container - showEnts: False - occludes: True - ents: [] - - uid: 1125 + - uid: 1044 components: - type: Transform pos: 52.5,42.5 parent: 1 - - type: ContainerContainer - containers: - beakerSlot: !type:ContainerSlot - showEnts: False - occludes: True - ent: 1126 - inputContainer: !type:Container - showEnts: False - occludes: True - ents: [] - machine_board: !type:Container - showEnts: False - occludes: True - ents: [] - machine_parts: !type:Container - showEnts: False - occludes: True - ents: [] - proto: KitchenSpike entities: - uid: 963 @@ -11685,26 +11637,6 @@ entities: - type: Transform pos: 25.5,40.5 parent: 1 -- proto: LargeBeaker - entities: - - uid: 980 - components: - - type: Transform - parent: 979 - - type: Physics - canCollide: False - - uid: 1045 - components: - - type: Transform - parent: 1044 - - type: Physics - canCollide: False - - uid: 1126 - components: - - type: Transform - parent: 1125 - - type: Physics - canCollide: False - proto: LockerAtmosphericsFilledHardsuit entities: - uid: 453 @@ -12416,8 +12348,8 @@ entities: text: Other - type: PointLight energy: 2 - radius: 2 offset: 0,1 + radius: 2 - uid: 610 components: - type: Transform @@ -12428,9 +12360,9 @@ entities: text: Weapons - type: PointLight energy: 5 + offset: 0,1 color: '#FF0000FF' radius: 2 - offset: 0,1 - uid: 611 components: - type: Transform @@ -12441,9 +12373,9 @@ entities: text: Service - type: PointLight energy: 5 + offset: 0,1 color: '#87EB87FF' radius: 2 - offset: 0,1 - uid: 612 components: - type: Transform @@ -12454,9 +12386,9 @@ entities: text: Medical - type: PointLight energy: 5 + offset: 0,1 color: '#87D1EBFF' radius: 2 - offset: 0,1 - uid: 613 components: - type: Transform @@ -12467,9 +12399,9 @@ entities: text: Engi & Atmos - type: PointLight energy: 5 + offset: 0,1 color: '#FFA500FF' radius: 2 - offset: 0,1 - uid: 614 components: - type: Transform @@ -12480,9 +12412,9 @@ entities: text: R&D - type: PointLight energy: 5 + offset: 0,1 color: '#EB87EBFF' radius: 2 - offset: 0,1 - proto: MaterialBiomass entities: - uid: 1186 @@ -16867,9 +16799,9 @@ entities: parent: 1 - type: PointLight energy: 5 + offset: 0,2 color: '#EB87EBFF' radius: 2 - offset: 0,2 - uid: 101 components: - type: Transform @@ -17235,9 +17167,9 @@ entities: parent: 1 - type: PointLight energy: 5 + offset: 0,2 color: '#87EB87FF' radius: 2 - offset: 0,2 - uid: 891 components: - type: Transform @@ -17589,9 +17521,9 @@ entities: parent: 1 - type: PointLight energy: 5 + offset: 0,2 color: '#87D1EBFF' radius: 2 - offset: 0,2 - uid: 1095 components: - type: Transform @@ -18050,9 +17982,9 @@ entities: parent: 1 - type: PointLight energy: 5 + offset: 0,2 color: '#FFA500FF' radius: 2 - offset: 0,2 - uid: 1315 components: - type: Transform @@ -18652,9 +18584,9 @@ entities: parent: 1 - type: PointLight energy: 5 + offset: -2,0 color: '#FF0000FF' radius: 2 - offset: -2,0 - uid: 1942 components: - type: Transform @@ -19524,8 +19456,8 @@ entities: parent: 1 - type: PointLight energy: 2 - radius: 2 offset: 0,-2 + radius: 2 - uid: 2522 components: - type: Transform From 4554e3a1ee554747f5a9f758d78f7d97d7dee87e Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Sun, 15 Mar 2026 22:22:39 +0100 Subject: [PATCH 542/603] Fix changelog for #43049 (#43248) Changelogs gotta go on staging in the changelog thing --- Resources/Changelog/Changelog.yml | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index f0d790aeae0..c11e3ab9539 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -3817,8 +3817,31 @@ url: https://github.com/space-wizards/space-station-14/pull/42909 - author: sowelipililimute changes: - - message: Internal code changes to damage handling may result in slightly different - numbers for some medicines and/or some attacks. + - message: Underlying technical work for future medical improvements have resulted + in the following changes to better accomodate future development. Please note + that these changes are not representative of the final product and that the + medical balance will receive a major overhaul once limb and organ damage are + fully implemented. + type: Tweak + - message: Species now regenerate -0.05 of brute types individually (from -0.02). + type: Tweak + - message: Several mobs and weapons previously dealing split brute damage now deal singular damage types. + type: Tweak + - message: Several reagents previously dealing split brute damage now deals singular damage types. + type: Tweak + - message: Several reagents previously healing split brute damage now evenly heals instead. + type: Tweak + - message: Spiders now regenerate -0.03 of brute and burn types individually (from -0.02). + type: Tweak + - message: Skeletons now evenly heal when using milk. + type: Tweak + - message: Tomato killers now heal evenly when splashed with water, blood, or robust harvest. + type: Tweak + - message: Tricordrazine now evenly heals both brute, burn and toxin. + type: Tweak + - message: Desoxyephedrine now deals slighlty more blunt damage (to offset tricordazine changes). + type: Tweak + - message: Crusher mark leech hits now heal 5 of each brute category on hit (was 7). type: Tweak id: 9549 time: '2026-02-27T06:33:44.0000000+00:00' From 31bf1e763dc40f9bce9b40c05ea462757d90d3c1 Mon Sep 17 00:00:00 2001 From: RedBookcase Date: Mon, 16 Mar 2026 09:30:28 -0700 Subject: [PATCH 543/603] Fixed the two-handed activated sound bug. (#38070) * Fixed the two-handed activated sound bug. * Tightened up yml. * Yaml changes were not necessary. --------- Co-authored-by: RedBookcase Co-authored-by: SlamBamActionman --- Content.Shared/Item/ItemToggle/ItemToggleSystem.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs b/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs index 367b078f231..c260529ded9 100644 --- a/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs +++ b/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs @@ -9,6 +9,7 @@ using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; using Robust.Shared.Network; +using Robust.Shared.Timing; namespace Content.Shared.Item.ItemToggle; /// @@ -23,6 +24,7 @@ public sealed class ItemToggleSystem : EntitySystem [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly IGameTiming _gameTiming = default!; private EntityQuery _query; @@ -315,8 +317,7 @@ private void TurnOffOnUnwielded(Entity ent, ref ItemUnwield /// private void TurnOnOnWielded(Entity ent, ref ItemWieldedEvent args) { - // FIXME: for some reason both client and server play sound - TryActivate((ent, ent.Comp)); + TryActivate((ent, ent.Comp), args.User); } public bool IsActivated(Entity ent) @@ -340,6 +341,9 @@ private void OnIsHotEvent(Entity ent, ref IsHotEvent arg /// private void UpdateActiveSound(Entity ent, ref ItemToggledEvent args) { + if (!_gameTiming.IsFirstTimePredicted) + return; + var (uid, comp) = ent; if (!args.Activated) { From 53e413913e21f4de1b10b4c7b3234136c26484c6 Mon Sep 17 00:00:00 2001 From: WS01 <151183296+Tuchila-Adi-Bogdan@users.noreply.github.com> Date: Mon, 16 Mar 2026 19:06:42 +0200 Subject: [PATCH 544/603] Removed MovementBodyPartComponent (#43257) --- .../Components/MovementBodyPartComponent.cs | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 Content.Shared/Movement/Components/MovementBodyPartComponent.cs diff --git a/Content.Shared/Movement/Components/MovementBodyPartComponent.cs b/Content.Shared/Movement/Components/MovementBodyPartComponent.cs deleted file mode 100644 index 83407859e43..00000000000 --- a/Content.Shared/Movement/Components/MovementBodyPartComponent.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Robust.Shared.GameStates; - -namespace Content.Shared.Movement.Components; - -[RegisterComponent, NetworkedComponent] -public sealed partial class MovementBodyPartComponent : Component -{ - [DataField("walkSpeed")] - public float WalkSpeed = MovementSpeedModifierComponent.DefaultBaseWalkSpeed; - - [DataField("sprintSpeed")] - public float SprintSpeed = MovementSpeedModifierComponent.DefaultBaseSprintSpeed; - - [DataField("acceleration")] - public float Acceleration = MovementSpeedModifierComponent.DefaultAcceleration; -} From f89fdaa93528b9c681c451ed3a7e2f8c10a8706a Mon Sep 17 00:00:00 2001 From: ScarKy0 Date: Tue, 17 Mar 2026 00:02:36 +0100 Subject: [PATCH 545/603] Revert "Xenoborg extractor (#42796)" This reverts commit 7f15e7795417b29541799b972c380fd689c6842e. --- .../PowerConsumerBatteryChargerComponent.cs | 7 -- .../SpawnOnBatteryLevelComponent.cs | 23 ---- .../Components/VoltageTogglerComponent.cs | 46 -------- .../PowerConsumerBatteryChargerSystem.cs | 22 ---- .../Power/EntitySystems/PowerNetSystem.cs | 8 -- .../SpawnOnBatteryLevelSystem.cs | 34 ------ .../EntitySystems/VoltageTogglerSystem.cs | 74 ------------ .../AnchorOnlyOnStationComponent.cs | 14 --- .../EntitySystems/AnchorableSystem.cs | 21 ---- Content.Shared/NodeContainer/Node.cs | 5 - Content.Shared/Verbs/VerbCategory.cs | 3 - .../en-US/anchorable/anchorable-component.ftl | 2 - .../Locale/en-US/materials/materials.ftl | 1 - .../en-US/power/components/power-voltages.ftl | 3 - .../Locale/en-US/robotics/borg_modules.ftl | 1 - Resources/Locale/en-US/stack/stacks.ftl | 4 - Resources/Locale/en-US/verbs/verb-system.ftl | 1 - .../Entities/Clothing/Back/specific.yml | 1 - .../Entities/Mobs/Player/mothershipcore.yml | 4 +- .../Devices/Circuitboards/law_boards.yml | 4 +- .../Entities/Objects/Devices/flatpack.yml | 15 --- .../Objects/Materials/xenoborg_crystal.yml | 46 -------- .../Specific/Robotics/borg_modules.yml | 12 -- .../Structures/Power/xenoborg_extractor.yml | 111 ------------------ .../FeedbackPopup/feedbackpopups.yml | 27 ----- .../Reagents/Materials/materials.yml | 9 -- .../Recipes/Lathes/Packs/xenoborgs.yml | 5 - .../Prototypes/Recipes/Lathes/xenoborgs.yml | 38 +++--- .../Prototypes/Stacks/Specific/xenoborg.yml | 6 - Resources/Prototypes/tags.yml | 3 - .../Guidebook/Antagonist/Xenoborgs.xml | 37 +----- .../xenoborg_crystal.rsi/crystal-1.png | Bin 482 -> 0 bytes .../xenoborg_crystal.rsi/crystal-2.png | Bin 604 -> 0 bytes .../xenoborg_crystal.rsi/crystal-3.png | Bin 688 -> 0 bytes .../Materials/xenoborg_crystal.rsi/meta.json | 20 ---- .../Machines/xenoborg_extractor.rsi/icon.png | Bin 544 -> 0 bytes .../Machines/xenoborg_extractor.rsi/light.png | Bin 969 -> 0 bytes .../Machines/xenoborg_extractor.rsi/meta.json | 40 ------- .../xenoborg_extractor.rsi/running.png | Bin 828 -> 0 bytes 39 files changed, 22 insertions(+), 625 deletions(-) delete mode 100644 Content.Server/Power/Components/PowerConsumerBatteryChargerComponent.cs delete mode 100644 Content.Server/Power/Components/SpawnOnBatteryLevelComponent.cs delete mode 100644 Content.Server/Power/Components/VoltageTogglerComponent.cs delete mode 100644 Content.Server/Power/EntitySystems/PowerConsumerBatteryChargerSystem.cs delete mode 100644 Content.Server/Power/EntitySystems/SpawnOnBatteryLevelSystem.cs delete mode 100644 Content.Server/Power/EntitySystems/VoltageTogglerSystem.cs delete mode 100644 Content.Shared/Construction/Components/AnchorOnlyOnStationComponent.cs delete mode 100644 Resources/Locale/en-US/power/components/power-voltages.ftl delete mode 100644 Resources/Prototypes/Entities/Objects/Materials/xenoborg_crystal.yml delete mode 100644 Resources/Prototypes/Entities/Structures/Power/xenoborg_extractor.yml delete mode 100644 Resources/Prototypes/Stacks/Specific/xenoborg.yml delete mode 100644 Resources/Textures/Objects/Materials/xenoborg_crystal.rsi/crystal-1.png delete mode 100644 Resources/Textures/Objects/Materials/xenoborg_crystal.rsi/crystal-2.png delete mode 100644 Resources/Textures/Objects/Materials/xenoborg_crystal.rsi/crystal-3.png delete mode 100644 Resources/Textures/Objects/Materials/xenoborg_crystal.rsi/meta.json delete mode 100644 Resources/Textures/Structures/Machines/xenoborg_extractor.rsi/icon.png delete mode 100644 Resources/Textures/Structures/Machines/xenoborg_extractor.rsi/light.png delete mode 100644 Resources/Textures/Structures/Machines/xenoborg_extractor.rsi/meta.json delete mode 100644 Resources/Textures/Structures/Machines/xenoborg_extractor.rsi/running.png diff --git a/Content.Server/Power/Components/PowerConsumerBatteryChargerComponent.cs b/Content.Server/Power/Components/PowerConsumerBatteryChargerComponent.cs deleted file mode 100644 index 951ce64a6f0..00000000000 --- a/Content.Server/Power/Components/PowerConsumerBatteryChargerComponent.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Content.Server.Power.Components; - -/// -/// Charges the battery from a entity with -/// -[RegisterComponent] -public sealed partial class PowerConsumerBatteryChargerComponent : Component; diff --git a/Content.Server/Power/Components/SpawnOnBatteryLevelComponent.cs b/Content.Server/Power/Components/SpawnOnBatteryLevelComponent.cs deleted file mode 100644 index 74db2806b68..00000000000 --- a/Content.Server/Power/Components/SpawnOnBatteryLevelComponent.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Robust.Shared.Prototypes; - -namespace Content.Server.Power.Components; - -/// -/// Spawns a entity when the battery reaches a certain percentage or amount of power. -/// It also consumes that much power when spawning the entity. -/// -[RegisterComponent] -public sealed partial class SpawnOnBatteryLevelComponent : Component -{ - /// - /// Entity prototype to spawn. - /// - [DataField(required: true)] - public EntProtoId Prototype = string.Empty; - - /// - /// Amount of power in the battery (in joules) to spawn entity - /// - [DataField] - public float Charge; -} diff --git a/Content.Server/Power/Components/VoltageTogglerComponent.cs b/Content.Server/Power/Components/VoltageTogglerComponent.cs deleted file mode 100644 index b7c802b931c..00000000000 --- a/Content.Server/Power/Components/VoltageTogglerComponent.cs +++ /dev/null @@ -1,46 +0,0 @@ -using Robust.Shared.GameStates; -using Content.Shared.Power; - -namespace Content.Server.Power.Components; - -/// -/// Changes the voltage of a device with -/// -[RegisterComponent] -public sealed partial class VoltageTogglerComponent : Component -{ - /// - /// List of all voltage settings. - /// - [DataField(required: true), ViewVariables(VVAccess.ReadOnly)] - public VoltageSetting[] Settings = []; - - /// - /// Index of the currently selected setting. - /// - [DataField] - [AutoNetworkedField] - public int SelectedVoltageLevel; -} - -[DataDefinition] -public partial struct VoltageSetting -{ - /// - /// Voltage. - /// - [DataField(required: true)] - public Voltage Voltage; - - /// - /// Power usage in that voltage. - /// - [DataField(required: true)] - public float Wattage; - - /// - /// Name of the setting. - /// - [DataField(required: true)] - public LocId Name; -} diff --git a/Content.Server/Power/EntitySystems/PowerConsumerBatteryChargerSystem.cs b/Content.Server/Power/EntitySystems/PowerConsumerBatteryChargerSystem.cs deleted file mode 100644 index c0015f20761..00000000000 --- a/Content.Server/Power/EntitySystems/PowerConsumerBatteryChargerSystem.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Content.Server.Power.Components; -using Content.Shared.Power.Components; - -namespace Content.Server.Power.EntitySystems; - -public sealed class PowerConsumerBatteryChargerSystem : EntitySystem -{ - [Dependency] private readonly BatterySystem _battery = default!; - - public override void Update(float frameTime) - { - var query = EntityQueryEnumerator(); - - while (query.MoveNext(out var entity, out _, out var powerConsumerComp, out var battery, out var transform)) - { - if (!transform.Anchored) - continue; - - _battery.ChangeCharge((entity, battery), powerConsumerComp.NetworkLoad.ReceivingPower * frameTime); - } - } -} diff --git a/Content.Server/Power/EntitySystems/PowerNetSystem.cs b/Content.Server/Power/EntitySystems/PowerNetSystem.cs index 82ca323067f..1c3f76fdee4 100644 --- a/Content.Server/Power/EntitySystems/PowerNetSystem.cs +++ b/Content.Server/Power/EntitySystems/PowerNetSystem.cs @@ -57,7 +57,6 @@ public override void Initialize() SubscribeLocalEvent(BatteryPaused); SubscribeLocalEvent(BatteryUnpaused); - SubscribeLocalEvent(PowerConsumerMapInit); SubscribeLocalEvent(PowerConsumerInit); SubscribeLocalEvent(PowerConsumerShutdown); SubscribeLocalEvent(PowerConsumerPaused); @@ -133,11 +132,6 @@ private static void BatteryUnpaused(EntityUid uid, PowerNetworkBatteryComponent component.NetworkBattery.Paused = false; } - private void PowerConsumerMapInit(EntityUid uid, PowerConsumerComponent component, ref MapInitEvent args) - { - _appearance.SetData(uid, PowerDeviceVisuals.Powered, component.ReceivedPower > 0); - } - private void PowerConsumerInit(EntityUid uid, PowerConsumerComponent component, ComponentInit args) { _powerNetConnector.BaseNetConnectorInit(component); @@ -420,8 +414,6 @@ private void UpdatePowerConsumer() lastRecv = newRecv; var msg = new PowerConsumerReceivedChanged(newRecv, consumer.DrawRate); RaiseLocalEvent(uid, ref msg); - - _appearance.SetData(uid, PowerDeviceVisuals.Powered, newRecv > 0); } } diff --git a/Content.Server/Power/EntitySystems/SpawnOnBatteryLevelSystem.cs b/Content.Server/Power/EntitySystems/SpawnOnBatteryLevelSystem.cs deleted file mode 100644 index ab2f61ec663..00000000000 --- a/Content.Server/Power/EntitySystems/SpawnOnBatteryLevelSystem.cs +++ /dev/null @@ -1,34 +0,0 @@ -using Content.Server.Power.Components; -using Content.Shared.Power; -using Content.Shared.Power.Components; - -namespace Content.Server.Power.EntitySystems; - -public sealed class SpawnOnBatteryLevelSystem : EntitySystem -{ - [Dependency] private readonly BatterySystem _battery = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnBatteryChargeChange); - } - - private void OnBatteryChargeChange(Entity entity, ref ChargeChangedEvent args) - { - if (!TryComp(entity, out var battery)) - return; - - if (!TryComp(entity, out TransformComponent? xform)) - return; - - if (battery.LastCharge >= entity.Comp.Charge) - { - Spawn(entity.Comp.Prototype, xform.Coordinates); - - _battery.ChangeCharge((entity, battery), -entity.Comp.Charge); - } - - } -} diff --git a/Content.Server/Power/EntitySystems/VoltageTogglerSystem.cs b/Content.Server/Power/EntitySystems/VoltageTogglerSystem.cs deleted file mode 100644 index 9d7d738994e..00000000000 --- a/Content.Server/Power/EntitySystems/VoltageTogglerSystem.cs +++ /dev/null @@ -1,74 +0,0 @@ -using Content.Server.NodeContainer.EntitySystems; -using Content.Server.Power.Components; -using Content.Shared.NodeContainer; -using Content.Shared.NodeContainer.NodeGroups; -using Content.Shared.Power; -using Content.Shared.Verbs; - -namespace Content.Server.Power.EntitySystems; - -public sealed class VoltageTogglerSystem : EntitySystem -{ - [Dependency] private readonly NodeGroupSystem _nodeGroupSystem = default!; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent>(OnGetVerb); - } - - private void OnGetVerb(Entity entity, ref GetVerbsEvent args) - { - if (!args.CanAccess || !args.CanInteract) - return; - - var index = 0; - foreach (var setting in entity.Comp.Settings) - { - // This is because Act wont work with index. - // Needs it to be saved in the loop. - var currIndex = index; - var verb = new Verb - { - Priority = currIndex, - Category = VerbCategory.VoltageLevel, - Disabled = entity.Comp.SelectedVoltageLevel == currIndex, - Text = Loc.GetString(setting.Name), - Act = () => - { - entity.Comp.SelectedVoltageLevel = currIndex; - Dirty(entity); - - ChangeVoltage(entity, setting); - } - }; - args.Verbs.Add(verb); - index++; - } - } - - private void ChangeVoltage(Entity entity, VoltageSetting setting) - { - if (TryComp(entity, out var nodeContainerComp)) - { - var newNodeGroupId = setting.Voltage switch - { - Voltage.Apc => NodeGroupID.Apc, - Voltage.Medium => NodeGroupID.MVPower, - Voltage.High => NodeGroupID.HVPower, - _ => NodeGroupID.Default, - }; - - var inputNode = nodeContainerComp.Nodes["input"]; - _nodeGroupSystem.QueueNodeRemove(inputNode); - inputNode.SetNodeGroupId(newNodeGroupId); - _nodeGroupSystem.QueueReflood(inputNode); - } - - if (TryComp(entity, out var powerConsumerComp)) - { - powerConsumerComp.Voltage = setting.Voltage; - powerConsumerComp.DrawRate = setting.Wattage; - } - } -} diff --git a/Content.Shared/Construction/Components/AnchorOnlyOnStationComponent.cs b/Content.Shared/Construction/Components/AnchorOnlyOnStationComponent.cs deleted file mode 100644 index 3457fa6c2e6..00000000000 --- a/Content.Shared/Construction/Components/AnchorOnlyOnStationComponent.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Content.Shared.Construction.Components; - -/// -/// If a entity has this component it can only be anchored to the station -/// -[RegisterComponent] -public sealed partial class AnchorOnlyOnStationComponent : Component -{ - /// - /// Pop up message when you try to anchor the entity on any grid that isn't the station grid - /// - [DataField] - public LocId PopupMessageAnchorFail = "anchorable-fail-not-on-station"; -} diff --git a/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs b/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs index e9501d34e65..3985bd30510 100644 --- a/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs +++ b/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs @@ -1,5 +1,4 @@ using System.Diagnostics.CodeAnalysis; -using System.Linq; using Content.Shared.Administration.Logs; using Content.Shared.Examine; using Content.Shared.Construction.Components; @@ -11,8 +10,6 @@ using Content.Shared.Movement.Pulling.Components; using Content.Shared.Movement.Pulling.Systems; using Content.Shared.Popups; -using Content.Shared.Station; -using Content.Shared.Station.Components; using Content.Shared.Tools.Components; using Robust.Shared.Map; using Robust.Shared.Map.Components; @@ -32,7 +29,6 @@ public sealed partial class AnchorableSystem : EntitySystem [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly PullingSystem _pulling = default!; [Dependency] private readonly SharedMapSystem _map = default!; - [Dependency] private readonly SharedStationSystem _stationSystem = default!; [Dependency] private readonly SharedToolSystem _tool = default!; [Dependency] private readonly SharedTransformSystem _transformSystem = default!; [Dependency] private readonly TagSystem _tagSystem = default!; @@ -55,8 +51,6 @@ public override void Initialize() SubscribeLocalEvent(OnAnchoredExamine); SubscribeLocalEvent(OnAnchorStartup); SubscribeLocalEvent(OnAnchorStateChange); - - SubscribeLocalEvent(OnAnchorOnStation); } private void OnAnchorStartup(EntityUid uid, AnchorableComponent comp, ComponentStartup args) @@ -64,21 +58,6 @@ private void OnAnchorStartup(EntityUid uid, AnchorableComponent comp, ComponentS _appearance.SetData(uid, AnchorVisuals.Anchored, Transform(uid).Anchored); } - private void OnAnchorOnStation(Entity ent, ref AnchorAttemptEvent args) - { - var entityParent = Comp(ent).ParentUid; - var isOnStation = _stationSystem.GetStations() - .Select(stationEnt => _stationSystem.GetLargestGrid(stationEnt)) - .Contains(entityParent); - - if (isOnStation) - return; - - // TODO: fix the popup - // _popup.PopupClient(Loc.GetString(ent.Comp.PopupMessageAnchorFail), ent, args.User); - args.Cancel(); - } - private void OnAnchorStateChange(EntityUid uid, AnchorableComponent comp, AnchorStateChangedEvent args) { _appearance.SetData(uid, AnchorVisuals.Anchored, args.Anchored); diff --git a/Content.Shared/NodeContainer/Node.cs b/Content.Shared/NodeContainer/Node.cs index 561b0515d87..f69dee646f7 100644 --- a/Content.Shared/NodeContainer/Node.cs +++ b/Content.Shared/NodeContainer/Node.cs @@ -27,11 +27,6 @@ public abstract partial class Node /// [ViewVariables] public EntityUid Owner { get; private set; } = default!; - public void SetNodeGroupId(NodeGroupID newId) - { - NodeGroupID = newId; - } - /// /// If this node should be considered for connection by other nodes. /// diff --git a/Content.Shared/Verbs/VerbCategory.cs b/Content.Shared/Verbs/VerbCategory.cs index 3ae934ed8f3..418921d38e4 100644 --- a/Content.Shared/Verbs/VerbCategory.cs +++ b/Content.Shared/Verbs/VerbCategory.cs @@ -86,9 +86,6 @@ public VerbCategory(string text, string? icon, bool iconsOnly = false) public static readonly VerbCategory PowerLevel = new("verb-categories-power-level", null); - public static readonly VerbCategory VoltageLevel = - new("verb-categories-voltage-level", "/Textures/Interface/VerbIcons/zap.svg.192dpi.png"); - public static readonly VerbCategory Adjust = new("verb-categories-adjust", "/Textures/Interface/VerbIcons/screwdriver.png"); } diff --git a/Resources/Locale/en-US/anchorable/anchorable-component.ftl b/Resources/Locale/en-US/anchorable/anchorable-component.ftl index 82541762702..fdac0aa741a 100644 --- a/Resources/Locale/en-US/anchorable/anchorable-component.ftl +++ b/Resources/Locale/en-US/anchorable/anchorable-component.ftl @@ -1,5 +1,3 @@ anchorable-anchored = Anchored anchorable-unanchored = Unanchored anchorable-occupied = Tile occupied - -anchorable-fail-not-on-station = Can't anchor anywhere but the station diff --git a/Resources/Locale/en-US/materials/materials.ftl b/Resources/Locale/en-US/materials/materials.ftl index bd4c0b94a17..5a22bc2661a 100644 --- a/Resources/Locale/en-US/materials/materials.ftl +++ b/Resources/Locale/en-US/materials/materials.ftl @@ -30,7 +30,6 @@ materials-coal = coal materials-diamond = diamond materials-gunpowder = gunpowder materials-cotton = cotton -materials-xenoborg-crystal = xenoborg crystal # Ores materials-raw-iron = raw iron diff --git a/Resources/Locale/en-US/power/components/power-voltages.ftl b/Resources/Locale/en-US/power/components/power-voltages.ftl deleted file mode 100644 index 9287e3567e7..00000000000 --- a/Resources/Locale/en-US/power/components/power-voltages.ftl +++ /dev/null @@ -1,3 +0,0 @@ -power-voltage-low = Low voltage -power-voltage-medium = Medium voltage -power-voltage-high = High voltage \ No newline at end of file diff --git a/Resources/Locale/en-US/robotics/borg_modules.ftl b/Resources/Locale/en-US/robotics/borg_modules.ftl index 0590bf13fd6..c9c674e8654 100644 --- a/Resources/Locale/en-US/robotics/borg_modules.ftl +++ b/Resources/Locale/en-US/robotics/borg_modules.ftl @@ -16,4 +16,3 @@ borg-slot-modules-empty = Modules borg-slot-powercell-empty = Powercells borg-slot-inflatable-door-empty = Inflatable Door borg-slot-inflatable-wall-empty = Inflatable Wall -borg-slot-xenoborg-crystal-empty = Xenoborg crystals diff --git a/Resources/Locale/en-US/stack/stacks.ftl b/Resources/Locale/en-US/stack/stacks.ftl index 857feb27798..0d4c6e89881 100644 --- a/Resources/Locale/en-US/stack/stacks.ftl +++ b/Resources/Locale/en-US/stack/stacks.ftl @@ -80,10 +80,6 @@ stack-artifact-fragment = artifact {$amount -> [1] fragment *[other] fragments } -stack-xenoborg-circuit = dvanced xenoborg {$amount -> - [1] circuitboard - *[other] circuitboards -} # best materials stack-ground-tobacco = ground tobacco diff --git a/Resources/Locale/en-US/verbs/verb-system.ftl b/Resources/Locale/en-US/verbs/verb-system.ftl index 6eebaceff98..d52b43c9a7d 100644 --- a/Resources/Locale/en-US/verbs/verb-system.ftl +++ b/Resources/Locale/en-US/verbs/verb-system.ftl @@ -28,7 +28,6 @@ verb-categories-lever = Lever verb-categories-select-type = Select Type verb-categories-fax = Set Destination verb-categories-power-level = Power Level -verb-categories-voltage-level = Voltage Level verb-categories-adjust = Adjust verb-common-toggle-light = Toggle light diff --git a/Resources/Prototypes/Entities/Clothing/Back/specific.yml b/Resources/Prototypes/Entities/Clothing/Back/specific.yml index 6563e6cc145..c440fe9a66f 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/specific.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/specific.yml @@ -145,7 +145,6 @@ - ConstructionMaterial - RawMaterial - Ingot - - XenoborgCrystal components: - Circuitboard - Flatpack diff --git a/Resources/Prototypes/Entities/Mobs/Player/mothershipcore.yml b/Resources/Prototypes/Entities/Mobs/Player/mothershipcore.yml index af62f8d5b3f..f5897fd2c9d 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/mothershipcore.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/mothershipcore.yml @@ -41,14 +41,14 @@ idleState: core-idle runningState: core-active staticPacks: - - XenoborgMachines - EmptyXenoborgs - XenoborgUpgradeModules - type: MaterialStorage whitelist: tags: - - XenoborgCrystal - Sheet + - RawMaterial + - Ingot - type: PointLight color: "#0033ff" enabled: true diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/law_boards.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/law_boards.yml index 7f61e86c503..f1f0fd8d483 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/law_boards.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/law_boards.yml @@ -146,7 +146,7 @@ laws: NutimovLawset - type: entity - id: XenoborgLawsetCircuitBoard + id: XenoborgCircuitBoard parent: BaseSiliconLawboard name: law board (Xenoborg) suffix: Admeme @@ -156,7 +156,7 @@ laws: XenoborgLawset - type: entity - id: MothershipLawsetCircuitBoard + id: MothershipCircuitBoard parent: BaseSiliconLawboard name: law board (Mothership Core) suffix: Admeme diff --git a/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml b/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml index e4b329ef70c..8034dd0c667 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml @@ -280,18 +280,3 @@ - type: GuideHelp guides: - FoodRecipes - -- type: entity - parent: [ BaseFlatpack, BaseXenoborgContraband ] - id: XenoborgExtractorFlatpack - name: xenoborg extractor flatpack - description: A flatpack used for constructing a xenoborg extractor. - components: - - type: Item - size: Normal - - type: Flatpack - entity: XenoborgExtractor - - type: GuideHelp - guides: - - Xenoborgs - diff --git a/Resources/Prototypes/Entities/Objects/Materials/xenoborg_crystal.yml b/Resources/Prototypes/Entities/Objects/Materials/xenoborg_crystal.yml deleted file mode 100644 index a861bead448..00000000000 --- a/Resources/Prototypes/Entities/Objects/Materials/xenoborg_crystal.yml +++ /dev/null @@ -1,46 +0,0 @@ -- type: entity - parent: [ MaterialBase, BaseXenoborgContraband ] - id: MaterialXenoborgCrystal - name: xenoborg crystal - description: A special crystal created from nuclear fusion. It's used to make xenoborgs. - suffix: 10 - components: - - type: Item - storedRotation: 0 - - type: Appearance - - type: Stack - stackType: XenoborgCrystal - count: 10 - baseLayer: base - layerStates: - - crystal-1 - - crystal-2 - - crystal-3 - - type: Sprite - sprite: Objects/Materials/xenoborg_crystal.rsi - layers: - - state: crystal-3 - map: [ "base" ] - - type: Material - - type: PhysicalComposition - materialComposition: - XenoborgCrystal: 100 - - type: Tag - tags: - - XenoborgCrystal - -- type: entity - parent: MaterialXenoborgCrystal - id: MaterialXenoborgCrystal5 - suffix: 5 - components: - - type: Stack - count: 5 - -- type: entity - parent: MaterialXenoborgCrystal - id: MaterialXenoborgCrystal1 - suffix: 1 - components: - - type: Stack - count: 1 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml index fbca0cfff4c..0618e308d53 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml @@ -1429,12 +1429,6 @@ whitelist: components: - BorgModule - - hand: - emptyRepresentative: MaterialXenoborgCrystal - emptyLabel: borg-slot-xenoborg-crystal-empty - whitelist: - tags: - - XenoborgCrystal - hand: emptyRepresentative: BorgModuleConstructionMaterialPlaceholder emptyLabel: borg-slot-construction-empty @@ -1463,12 +1457,6 @@ - state: icon-xenoborg-basic - type: ItemBorgModule hands: - - hand: - emptyRepresentative: MaterialXenoborgCrystal - emptyLabel: borg-slot-xenoborg-crystal-empty - whitelist: - tags: - - XenoborgCrystal - hand: emptyRepresentative: BorgModuleConstructionMaterialPlaceholder emptyLabel: borg-slot-construction-empty diff --git a/Resources/Prototypes/Entities/Structures/Power/xenoborg_extractor.yml b/Resources/Prototypes/Entities/Structures/Power/xenoborg_extractor.yml deleted file mode 100644 index 56646a49691..00000000000 --- a/Resources/Prototypes/Entities/Structures/Power/xenoborg_extractor.yml +++ /dev/null @@ -1,111 +0,0 @@ -- type: entity - parent: [BaseMachine, BaseXenoborgContraband] - id: XenoborgExtractor - name: xenoborg extractor - description: Drains electricity from the grid to produce xenoborg crystals via nuclear fusion. - suffix: Unanchored - placement: - mode: PlaceFree - components: - - type: Physics - bodyType: Dynamic - - type: Transform - anchored: false - - type: AnchorOnlyOnStation - - type: Sprite - sprite: Structures/Machines/xenoborg_extractor.rsi - snapCardinals: true - layers: - - state: icon - map: ["base"] - - state: running - map: ["running"] - - state: light - shader: unshaded - map: ["light"] - - type: Appearance - - type: GenericVisualizer - visuals: - enum.PowerDeviceVisuals.Powered: - base: - True: { visible: false } - False: { visible: true } - running: - True: { visible: true } - False: { visible: false } - light: - True: { visible: true } - False: { visible: false } - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 100 - behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - - !type:PlaySoundBehavior - sound: - collection: MetalGlassBreak - - !type:ExplodeBehavior - - !type:SpawnEntitiesBehavior - spawn: - MachineFrameDestroyed: - min: 1 - max: 1 - - type: Explosive # small explosion when destroyed - explosionType: Default - maxIntensity: 20 - totalIntensity: 10 - intensitySlope: 5 - canCreateVacuum: false - - type: NodeContainer - examinable: true - nodes: - input: - !type:CableDeviceNode - nodeGroupID: Apc - - type: LightningTarget - priority: 1 - - type: Electrified - onHandInteract: false - onInteractUsing: false - onBump: false - requirePower: true - highVoltageNode: input - mediumVoltageNode: input - lowVoltageNode: input - - type: Battery - maxCharge: 2000000 # 2MJ - netsync: false - - type: ExaminableBattery - - type: PowerConsumerBatteryCharger - - type: PowerConsumer - voltage: Apc - drawRate: 10000 - - type: VoltageToggler - settings: - - voltage: Apc - wattage: 16000 # 16kW - 125 seconds to spawn one - name: power-voltage-low - - voltage: Medium - wattage: 50000 # 50kW - 40 seconds to spawn one - name: power-voltage-medium - - voltage: High - wattage: 200000 # 200kW - 10 seconds to spawn one # sets off the rogue power consuming device alert! - name: power-voltage-high - - type: SpawnOnBatteryLevel - prototype: MaterialXenoborgCrystal1 - charge: 2000000 # 2MJ - -- type: entity - parent: XenoborgExtractor - id: XenoborgExtractorAnchored - suffix: Anchored - placement: - mode: SnapgridCenter - components: - - type: Physics - bodyType: Static - - type: Transform - anchored: true diff --git a/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml b/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml index 8517e86a1e7..d424a24244f 100644 --- a/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml +++ b/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml @@ -17,30 +17,3 @@ responseType: "General Feedback" responseLink: "https://forum.spacestation14.com/c/development/feedback/51" showRoundEnd: false - -- type: feedbackPopup - id: PlayingAsMothershipCoreFeedback - popupOrigin: wizden_master - title: "[bold]Playing as [color=deepskyblue]mothership[/color] core[/bold]" - description: >- - If you played mothership core this round or maybe in a previous round, feel free to respond this feedback thread about your experiences and issues with playing as the mothership core. - responseType: "Feedback Thread" - responseLink: "https://forum.spacestation14.com/t/playing-as-a-mothership-core/26688/2" - showRoundEnd: true - ruleWhitelist: - components: - - XenoborgsRule - -- type: feedbackPopup - id: XenoborgExtractorFeedback - popupOrigin: wizden_master - title: "[bold]The [color=deepskyblue]xenoborg[/color] extractor [scramble chars=\"xenoborg-##][{}||,.<>\" rate=40 length=5][/bold]" - description: >- - Please share feedback on the new xenoborg extractor and crystal, and how these additions affect xenoborg gameplay. - responseType: "Feedback Thread" - responseLink: "https://forum.spacestation14.com/t/xenoborg-extractor/26689" - showRoundEnd: true - ruleWhitelist: - components: - - XenoborgsRule - diff --git a/Resources/Prototypes/Reagents/Materials/materials.yml b/Resources/Prototypes/Reagents/Materials/materials.yml index 45f73dd62c8..42ae9ba4b78 100644 --- a/Resources/Prototypes/Reagents/Materials/materials.yml +++ b/Resources/Prototypes/Reagents/Materials/materials.yml @@ -141,12 +141,3 @@ icon: { sprite: Objects/Materials/materials.rsi, state: diamond } color: "#80ffff" price: 20 # big diamond gaslit us so hard diamonds actually became extremely rare - -- type: material - id: XenoborgCrystal - stackEntity: MaterialXenoborgCrystal1 - name: materials-xenoborg-crystal - unit: materials-unit-piece - icon: { sprite: Objects/Materials/xenoborg_crystal.rsi, state: crystal-1 } - color: "#3d94ff" - price: 2 # $200 for 1 unit # crystal pretty! diff --git a/Resources/Prototypes/Recipes/Lathes/Packs/xenoborgs.yml b/Resources/Prototypes/Recipes/Lathes/Packs/xenoborgs.yml index 383bc712372..1ae6a3cf07e 100644 --- a/Resources/Prototypes/Recipes/Lathes/Packs/xenoborgs.yml +++ b/Resources/Prototypes/Recipes/Lathes/Packs/xenoborgs.yml @@ -1,10 +1,5 @@ ## Static -- type: latheRecipePack - id: XenoborgMachines - recipes: - - XenoborgExtractorRecipe - - type: latheRecipePack id: EmptyXenoborgs recipes: diff --git a/Resources/Prototypes/Recipes/Lathes/xenoborgs.yml b/Resources/Prototypes/Recipes/Lathes/xenoborgs.yml index b0da4cea501..38e97b4005f 100644 --- a/Resources/Prototypes/Recipes/Lathes/xenoborgs.yml +++ b/Resources/Prototypes/Recipes/Lathes/xenoborgs.yml @@ -1,12 +1,5 @@ # Base prototypes -- type: latheRecipe - abstract: true - id: BaseXenoborgMachineRecipe - categories: - - Machines - completetime: 2 - - type: latheRecipe abstract: true id: BaseXenoborgRecipe @@ -21,15 +14,6 @@ - Modules completetime: 2 -# machines - -- type: latheRecipe - parent: BaseXenoborgMachineRecipe - id: XenoborgExtractorRecipe - result: XenoborgExtractorFlatpack - materials: - Steel: 1000 - # xenoborgs - type: latheRecipe @@ -37,28 +21,31 @@ id: XenoborgEngiRecipe result: XenoborgEngiPrinted materials: - XenoborgCrystal: 100 + Steel: 3000 - type: latheRecipe parent: BaseXenoborgRecipe id: XenoborgHeavyRecipe result: XenoborgHeavyPrinted materials: - XenoborgCrystal: 100 + Steel: 2000 + Plasteel: 1000 - type: latheRecipe parent: BaseXenoborgRecipe id: XenoborgScoutRecipe result: XenoborgScoutPrinted materials: - XenoborgCrystal: 100 + Steel: 2000 + Plastic: 1000 - type: latheRecipe parent: BaseXenoborgRecipe id: XenoborgStealthRecipe result: XenoborgStealthPrinted materials: - XenoborgCrystal: 100 + Steel: 2000 + Glass: 1000 # modules @@ -69,7 +56,8 @@ id: XenoborgModuleDoorControlRecipe result: XenoborgModuleDoorControl materials: - XenoborgCrystal: 100 + Steel: 1500 + Glass: 1500 ## heavy xenoborg modules @@ -78,7 +66,8 @@ id: XenoborgModuleHeavyLaserRecipe result: XenoborgModuleHeavyLaser materials: - XenoborgCrystal: 100 + Steel: 1500 + Glass: 1500 ## scout xenoborg modules @@ -87,7 +76,8 @@ id: XenoborgModuleEnergySwordRecipe result: XenoborgModuleEnergySword materials: - XenoborgCrystal: 100 + Steel: 1500 + Glass: 1500 ## stealth xenoborg modules @@ -96,4 +86,4 @@ id: XenoborgModuleSuperCloakDeviceRecipe result: XenoborgModuleSuperCloakDevice materials: - XenoborgCrystal: 100 + Glass: 3000 diff --git a/Resources/Prototypes/Stacks/Specific/xenoborg.yml b/Resources/Prototypes/Stacks/Specific/xenoborg.yml deleted file mode 100644 index 1a535884ba3..00000000000 --- a/Resources/Prototypes/Stacks/Specific/xenoborg.yml +++ /dev/null @@ -1,6 +0,0 @@ -- type: stack - parent: BaseSmallStack - id: XenoborgCrystal - name: stack-xenoborg-circuit - icon: { sprite: "/Textures/Objects/Materials/xenoborg_crystal.rsi", state: crystal-3 } - spawn: MaterialXenoborgCrystal1 diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index ff8129d20e6..6883133a292 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -1566,9 +1566,6 @@ ## X ## -- type: Tag - id: XenoborgCrystal # MaterialStorage whitelist: Mothership core - - type: Tag id: XenoborgGhostrole # spawn whitelist : SpawnPointGhostRoleXenoborg diff --git a/Resources/ServerInfo/Guidebook/Antagonist/Xenoborgs.xml b/Resources/ServerInfo/Guidebook/Antagonist/Xenoborgs.xml index ed07d4ba484..6cf0894e28a 100644 --- a/Resources/ServerInfo/Guidebook/Antagonist/Xenoborgs.xml +++ b/Resources/ServerInfo/Guidebook/Antagonist/Xenoborgs.xml @@ -16,9 +16,7 @@ ## Objectives Your main objective is to kill and harvest all sentient brains in the station and bring them to the mothership core. These can be both real brains, and positronic brains. - - Steal power from the station using xenoborg extractors to produce xenoborg crystals to create more xenoborg bodies. - + Collect materials to create more xenoborg bodies. Protect the Mothership at all costs. ## The Mothership Core @@ -76,11 +74,6 @@ - [bold]Upgrade exclusive modules:[/bold] - - - - ### The Heavy Xenoborg @@ -95,7 +88,7 @@ [bold]Upgrade exclusive modules:[/bold] - + ### The Scout Xenoborg @@ -132,41 +125,19 @@ [bold]Upgrade exclusive modules:[/bold] - - - - ## Xenoborg extractors - - - + - Its a machine necessary for the xenoborgs to grow their army. It can steal power from cables connected to it and then produce xenoborg crystals. - - The mothership core can produce a xenoborg extractor flatpack for 10 steel. - - Once its anchored on top of a cable it needs to be set to that cable voltage to start draining power. - - Once it's battery is full it will produce one xenoborg crystal. - - It drains different amounts of power depending on the voltage. - - low voltage - 16kW - 2 minutes and 5 seconds to produce one xenoborg circuit. - - medium voltage - 50kW - 40 seconds to produce one xenoborg circuit. - - high voltage - 200kW - 10 seconds to produce one xenoborg circuit. - - Attention! at the highest voltage it will trigger the rogue power consuming device alert! and anyone using the power monitor device will know something is wrong. ## Preparation and Tactics Before FTLing near the station, make sure the IFF is off. - Before launching an attack, xenoborgs should discuss strategy and decide which targets to strike first. - Xenoborgs should try to collect sentient brains without being detected. The longer the threat is unknown, the more dangerous the xenoborgs become. ## Mothership and Xenoborg lawsets The Mothership and Xenoborgs have unique laws that define their purpose to self replicate and protect the Mothership. - + The Mothership Core's laws are as follows:: diff --git a/Resources/Textures/Objects/Materials/xenoborg_crystal.rsi/crystal-1.png b/Resources/Textures/Objects/Materials/xenoborg_crystal.rsi/crystal-1.png deleted file mode 100644 index bf2eb97a3f5dada97937e7853843ce3bd96a5269..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 482 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 diff --git a/Resources/Textures/Structures/Machines/xenoborg_extractor.rsi/meta.json b/Resources/Textures/Structures/Machines/xenoborg_extractor.rsi/meta.json deleted file mode 100644 index 4ebc1ff4b8e..00000000000 --- a/Resources/Textures/Structures/Machines/xenoborg_extractor.rsi/meta.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "version": 1, - "license":"CC-BY-SA-3.0", - "copyright":"Made by Samuka-C (github)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "light", - "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ] - ] - }, - { - "name": "running", - "delays": [ - [ - 0.2, - 0.2, - 0.2, - 0.2 - ] - ] - } - ] -} diff --git a/Resources/Textures/Structures/Machines/xenoborg_extractor.rsi/running.png b/Resources/Textures/Structures/Machines/xenoborg_extractor.rsi/running.png deleted file mode 100644 index 6d1b1e1f911a9656adb34e1d5946ca81aef71f3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 828 zcmV-C1H=4@P)Px%_DMuRRCt{2n%`;@K@`Tnh^3_|E!hwf3L?EREaW08f>lxT64FN~d7$DW6yKnQ zq8CcN5-)@h+u~hl2s^>xdb{3am&xqR>})bSE6w>JB$&hZ7BYdh-^OG-(Y9$c8@Rr@amG&tAclMOnpHRprWg)}+TdPa z-6X%hE539E1dPF}*HVq+NySSk8Jt_Ps=9bg6PfTE%?1EqGM=o&*B*kS(HNugEdXG@ z*;*KYpMWS;oypeX+o<^bN@2k?bzynDaewI9mRja$HPPz%`>dr6Dv`>O@ zeHLG*y!_1DU>MGT5}yN9d|L;#G5{=?VsmQ)2M-@8>veri+b+WogxjRJ1@iDyOTzP7 zQMI}Y|IvZ6lQ@Aockrm{20wox3};~MR=W*M_&Vj~i<5~ueiy(0{9Pyv!&$Ny>Z z8Gv3q5fi!OO9QY@$_zkVc(PixEU${@rvi|1NUfrZ$u=mP&+9FKD1LSPZq)I+(K2Q8 zvGU3ZUl(by)5rOHZ;3Jh_>_Ik{}rD^B9TZW5{Y!DMg9O)WAX=ZB7Xq+1J=YJP)2^< zHD6?>R)FjLyi2~AIffX3GV=2-`Le(k;t!DJ?rr-6bbMJ|z?k%3;#2@k^7GK-;C1O~ zTmAqYKdVmELI6zj^H~N3m2CL~Z2A)l@dwy6SrzS1u Date: Tue, 17 Mar 2026 00:04:01 +0100 Subject: [PATCH 546/603] revert CL --- Resources/Changelog/Changelog.yml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index c11e3ab9539..7f590b0c172 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -3853,19 +3853,6 @@ id: 9550 time: '2026-02-27T16:02:04.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42960 -- author: Samuka - changes: - - message: 'EXPERIMENTAL: Added the xenoborg crystal!' - type: Add - - message: 'EXPERIMENTAL: Added the xenoborg extractor which can produce the xenoborg - crystal.' - type: Add - - message: 'EXPERIMENTAL: The recipes to make xenoborg chassis and xenoborg modules - now uses xenoborg crystals instead of normal materials.' - type: Tweak - id: 9551 - time: '2026-02-28T01:08:13.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/42796 - author: kontakt changes: - message: Throwing croissants no longer have a throwing knife in-hand sprite. From 4495128f2f38198da3a6c5d382317ded43d974fa Mon Sep 17 00:00:00 2001 From: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:26:14 -0700 Subject: [PATCH 547/603] Fix floating point tilefire nonsense (#43263) * Change method call and epsilon * holy guacamole --- .../Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs | 2 +- Content.Shared/Atmos/Atmospherics.cs | 2 +- .../Atmos/EntitySystems/SharedAtmosphereSystem.Gases.cs | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs index d667d99435c..5022f3c99a0 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs @@ -204,7 +204,7 @@ private void HotspotExpose(GridAtmosphereComponent gridAtmosphere, if (!IsMixtureOxidizer(tile.Air)) return; - var isFlammable = IsMixtureIgnitable(tile.Air); + var isFlammable = IsMixtureFuel(tile.Air); if (tile.Hotspot.Valid) { diff --git a/Content.Shared/Atmos/Atmospherics.cs b/Content.Shared/Atmos/Atmospherics.cs index e53ce29fd32..10d303cd1d4 100644 --- a/Content.Shared/Atmos/Atmospherics.cs +++ b/Content.Shared/Atmos/Atmospherics.cs @@ -22,7 +22,7 @@ public static class Atmospherics /// /// Global Atmospherics epsilon. Used for all general floating-point comparisons. /// - public const float Epsilon = 0.001f; + public const float Epsilon = 0.5f; /// /// Maximum external pressure (in kPA) a gas miner will, by default, output to. diff --git a/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.Gases.cs b/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.Gases.cs index db263495e9c..27520b11274 100644 --- a/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.Gases.cs +++ b/Content.Shared/Atmos/EntitySystems/SharedAtmosphereSystem.Gases.cs @@ -114,7 +114,7 @@ public void GetFlammableMoles(GasMixture mixture, float[] buffer) /// considered ignitable, for both oxidizer and fuel. /// True if the is ignitable, otherwise, false. [PublicAPI] - public bool IsMixtureIgnitable(GasMixture mixture, float epsilon = 0.001f) + public bool IsMixtureIgnitable(GasMixture mixture, float epsilon = Atmospherics.Epsilon) { return IsMixtureFuel(mixture, epsilon) && IsMixtureOxidizer(mixture, epsilon); } @@ -127,7 +127,7 @@ public bool IsMixtureIgnitable(GasMixture mixture, float epsilon = 0.001f) /// is considered fuel. /// True if the is fuel, otherwise, false. [PublicAPI] - public abstract bool IsMixtureFuel(GasMixture mixture, float epsilon = 0.001f); + public abstract bool IsMixtureFuel(GasMixture mixture, float epsilon = Atmospherics.Epsilon); /// /// Determines if a has oxidizer gases in it or not. @@ -137,7 +137,7 @@ public bool IsMixtureIgnitable(GasMixture mixture, float epsilon = 0.001f) /// is considered an oxidizer. /// True if the is an oxidizer, otherwise, false. [PublicAPI] - public abstract bool IsMixtureOxidizer(GasMixture mixture, float epsilon = 0.001f); + public abstract bool IsMixtureOxidizer(GasMixture mixture, float epsilon = Atmospherics.Epsilon); /// /// Calculates the heat capacity for a . From ec8f1d7ea417b4517e5f6575635ef22f9243c69f Mon Sep 17 00:00:00 2001 From: Moony Date: Tue, 17 Mar 2026 18:17:22 +0100 Subject: [PATCH 548/603] Add test result archiving to our test actions + Test fixes (#43175) * Add test result archiving to our test actions. * heck. * Don't waste tremendous amounts of storage. * Fix ReagentDataTest. * Reduce retention and increase compression on integration output. * Back to 7 days, depend on RT instead. * Poke. * Fix linter. * til. * Actually send YAMLLinter's pair messages into the void. --- .github/workflows/build-test-debug.yml | 14 ++++++++++++-- .../Tests/Chemistry/ReagentDataTest.cs | 2 +- Content.YAMLLinter/Program.cs | 10 +++++++--- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-test-debug.yml b/.github/workflows/build-test-debug.yml index ad1fbf29ac5..cfd39c3fff7 100644 --- a/.github/workflows/build-test-debug.yml +++ b/.github/workflows/build-test-debug.yml @@ -45,13 +45,23 @@ jobs: run: dotnet build --configuration DebugOpt --no-restore /m - name: Run Content.Tests - run: dotnet test --no-build --configuration DebugOpt Content.Tests/Content.Tests.csproj -- NUnit.ConsoleOut=0 + shell: pwsh + run: dotnet test --no-build --configuration DebugOpt Content.Tests/Content.Tests.csproj -- NUnit.ConsoleOut=0 NUnit.TestOutputXml="logs" NUnit.WorkDirectory="$(pwd)/test_results" - name: Run Content.IntegrationTests shell: pwsh run: | $env:DOTNET_gcServer=1 - dotnet test --no-build --configuration DebugOpt Content.IntegrationTests/Content.IntegrationTests.csproj -- NUnit.ConsoleOut=0 NUnit.MapWarningTo=Failed + dotnet test --no-build --configuration DebugOpt Content.IntegrationTests/Content.IntegrationTests.csproj -- NUnit.ConsoleOut=0 NUnit.MapWarningTo=Failed NUnit.TestOutputXml="logs" NUnit.WorkDirectory="$(pwd)/test_results" + + - name: Archive NUnit3 test results. + if: always() + uses: actions/upload-artifact@v4 + with: + name: nunit3-results-${{ matrix.os }} + path: test_results/* + retention-days: 7 + compression-level: 9 ci-success: name: Build & Test Debug needs: diff --git a/Content.IntegrationTests/Tests/Chemistry/ReagentDataTest.cs b/Content.IntegrationTests/Tests/Chemistry/ReagentDataTest.cs index f488734655a..59948c8b175 100644 --- a/Content.IntegrationTests/Tests/Chemistry/ReagentDataTest.cs +++ b/Content.IntegrationTests/Tests/Chemistry/ReagentDataTest.cs @@ -8,7 +8,7 @@ namespace Content.IntegrationTests.Tests.Chemistry; [TestFixture] [TestOf(typeof(ReagentData))] -public sealed class ReagentDataTest : InteractionTest +public sealed class ReagentDataTest { [Test] public async Task ReagentDataIsSerializable() diff --git a/Content.YAMLLinter/Program.cs b/Content.YAMLLinter/Program.cs index 8351c226674..ee4c5788e5a 100644 --- a/Content.YAMLLinter/Program.cs +++ b/Content.YAMLLinter/Program.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Reflection; using System.Threading.Tasks; @@ -11,11 +12,14 @@ using Robust.Shared.Timing; using Robust.Shared.Utility; using Robust.UnitTesting; +using Robust.UnitTesting.Pool; namespace Content.YAMLLinter { internal static class Program { + private static readonly ExternalTestContext TestContext = new("YAML Linter", StreamWriter.Null); + private static async Task Main(string[] _) { GameDataScrounger.NoScrounging = true; // Ugly hack for YAML Linter. @@ -57,7 +61,7 @@ private static async Task Main(string[] _) private static async Task<(Dictionary> YamlErrors, List FieldErrors)> ValidateClient() { - await using var pair = await PoolManager.GetServerClient(); + await using var pair = await PoolManager.GetServerClient(testContext: TestContext); var client = pair.Client; var result = await ValidateInstance(client); await pair.CleanReturnAsync(); @@ -67,7 +71,7 @@ private static async Task Main(string[] _) private static async Task<(Dictionary> YamlErrors, List FieldErrors)> ValidateServer() { - await using var pair = await PoolManager.GetServerClient(); + await using var pair = await PoolManager.GetServerClient(testContext: TestContext); var server = pair.Server; var result = await ValidateInstance(server); await pair.CleanReturnAsync(); @@ -179,7 +183,7 @@ await instance.WaitPost(() => private static async Task<(Assembly[] clientAssemblies, Assembly[] serverAssemblies)> GetClientServerAssemblies() { - await using var pair = await PoolManager.GetServerClient(); + await using var pair = await PoolManager.GetServerClient(testContext: TestContext); var result = (GetAssemblies(pair.Client), GetAssemblies(pair.Server)); From 33beb79a820a4f303e8762c38bcdd2f8210e1128 Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Tue, 17 Mar 2026 13:39:28 -0400 Subject: [PATCH 549/603] Update RT to 274.0.0 (#43261) --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index d47614c8aec..cc5d7503b3e 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit d47614c8aec1ee755762ee436a4d4e73b397e42d +Subproject commit cc5d7503b3e2d87a2c9007c003d51246c2b1d450 From 5645b94fa2cdb4aa05275c83b2d05860aaaacda2 Mon Sep 17 00:00:00 2001 From: ConstantlyConfused <67894661+Eternally-Confused@users.noreply.github.com> Date: Tue, 17 Mar 2026 13:32:10 -0400 Subject: [PATCH 550/603] Make the chem guidebook show when chemicals adjust body temperature (again) (#42394) Make chem guidebook show adjusttemperature effects --- .../Effects/AdjustTemperatureEntityEffectsSystem.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Content.Shared/EntityEffects/Effects/AdjustTemperatureEntityEffectsSystem.cs b/Content.Shared/EntityEffects/Effects/AdjustTemperatureEntityEffectsSystem.cs index adc465f341d..884c5aaf2c9 100644 --- a/Content.Shared/EntityEffects/Effects/AdjustTemperatureEntityEffectsSystem.cs +++ b/Content.Shared/EntityEffects/Effects/AdjustTemperatureEntityEffectsSystem.cs @@ -1,5 +1,6 @@ using Content.Shared.Temperature.Components; using Content.Shared.Temperature.Systems; +using Robust.Shared.Prototypes; namespace Content.Shared.EntityEffects.Effects; @@ -27,4 +28,10 @@ public sealed partial class AdjustTemperature : EntityEffectBase [DataField] public float Amount; + + public override string EntityEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) + => Loc.GetString("entity-effect-guidebook-adjust-temperature", + ("chance", Probability), + ("deltasign", MathF.Sign(Amount)), + ("amount", Amount)); } From f63d2fd71365ccc4e03d6a9c769e003977387fa0 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 17 Mar 2026 17:53:44 +0000 Subject: [PATCH 551/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 5345fb6b03f..b36381081e3 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -3749,23 +3749,30 @@ type: Tweak - message: Species now regenerate -0.05 of brute types individually (from -0.02). type: Tweak - - message: Several mobs and weapons previously dealing split brute damage now deal singular damage types. + - message: Several mobs and weapons previously dealing split brute damage now deal + singular damage types. type: Tweak - - message: Several reagents previously dealing split brute damage now deals singular damage types. + - message: Several reagents previously dealing split brute damage now deals singular + damage types. type: Tweak - - message: Several reagents previously healing split brute damage now evenly heals instead. + - message: Several reagents previously healing split brute damage now evenly heals + instead. type: Tweak - - message: Spiders now regenerate -0.03 of brute and burn types individually (from -0.02). + - message: Spiders now regenerate -0.03 of brute and burn types individually (from + -0.02). type: Tweak - message: Skeletons now evenly heal when using milk. type: Tweak - - message: Tomato killers now heal evenly when splashed with water, blood, or robust harvest. + - message: Tomato killers now heal evenly when splashed with water, blood, or robust + harvest. type: Tweak - message: Tricordrazine now evenly heals both brute, burn and toxin. type: Tweak - - message: Desoxyephedrine now deals slighlty more blunt damage (to offset tricordazine changes). + - message: Desoxyephedrine now deals slighlty more blunt damage (to offset tricordazine + changes). type: Tweak - - message: Crusher mark leech hits now heal 5 of each brute category on hit (was 7). + - message: Crusher mark leech hits now heal 5 of each brute category on hit (was + 7). type: Tweak id: 9549 time: '2026-02-27T06:33:44.0000000+00:00' @@ -4015,3 +4022,10 @@ id: 9580 time: '2026-03-15T19:29:12.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42815 +- author: Eternally-Confused + changes: + - message: The chem guidebook now shows when chemicals adjust body temperature again + type: Fix + id: 9581 + time: '2026-03-17T17:52:32.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42394 From 4ae82ec8a3b6d40781b41998dae59cc4c213e081 Mon Sep 17 00:00:00 2001 From: Vladislav Suchkov <20380250+murolem@users.noreply.github.com> Date: Wed, 18 Mar 2026 08:52:05 +1000 Subject: [PATCH 552/603] Tech disk resprite and pricing changes (#37719) * init new disks are in. can be spawned or printed. no weights or correctly bound techs yet. * tweak textures and naming * make tech disks respect their tier and discipline * make tech console respect tier weight * yml fixes (forgo a million things) * meow :3 reworked to use GenericVisualizer * moved staticPrice comp to shared to support different pricing per tier * unhardcoded prices; tweaked log messages * cleanup * a few fixes * updated pricing to match weights * lowering prices I forgor how many of them science can print * what * t3 texture, logger, factory * move PriceCalculationEvent & EstimatedPriceCalculationEvent to shared * remove static price comp; use EntProtoId for disk proto * moved staticPrice comp back to server * cleanup: price event, visualizer enums & yml * ummove PriceCalculationEvent * ummove PriceCalculationEvent attempt #2 * more unmoving * fixes * predict onExamine * review changes * small cleanup --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- .../Components/DiskConsoleComponent.cs | 11 +- .../Components/TechnologyDiskComponent.cs | 26 +++- .../Systems/TechnologyDiskSystem.cs | 115 ++++++++++++++++-- .../research/components/technology-disk.ftl | 4 +- .../Objects/Specific/Research/disk.yml | 102 ++++++++++++++-- .../Misc/module.rsi/datadisk_t2_border.png | Bin 0 -> 108 bytes .../Misc/module.rsi/datadisk_t2_marks.png | Bin 0 -> 111 bytes .../Misc/module.rsi/datadisk_t3_border.png | Bin 0 -> 168 bytes .../Misc/module.rsi/datadisk_t3_marks.png | Bin 0 -> 115 bytes .../Objects/Misc/module.rsi/meta.json | 14 ++- 10 files changed, 244 insertions(+), 28 deletions(-) create mode 100644 Resources/Textures/Objects/Misc/module.rsi/datadisk_t2_border.png create mode 100644 Resources/Textures/Objects/Misc/module.rsi/datadisk_t2_marks.png create mode 100644 Resources/Textures/Objects/Misc/module.rsi/datadisk_t3_border.png create mode 100644 Resources/Textures/Objects/Misc/module.rsi/datadisk_t3_marks.png diff --git a/Content.Server/Research/TechnologyDisk/Components/DiskConsoleComponent.cs b/Content.Server/Research/TechnologyDisk/Components/DiskConsoleComponent.cs index 93d5bb43b69..e474f77c7ab 100644 --- a/Content.Server/Research/TechnologyDisk/Components/DiskConsoleComponent.cs +++ b/Content.Server/Research/TechnologyDisk/Components/DiskConsoleComponent.cs @@ -1,6 +1,5 @@ using Robust.Shared.Audio; using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Server.Research.TechnologyDisk.Components; @@ -10,24 +9,24 @@ public sealed partial class DiskConsoleComponent : Component /// /// How much it costs to print a disk /// - [DataField("pricePerDisk"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public int PricePerDisk = 1000; /// /// The prototype of what's being printed /// - [DataField("diskPrototype", customTypeSerializer: typeof(PrototypeIdSerializer)), ViewVariables(VVAccess.ReadWrite)] - public string DiskPrototype = "TechnologyDisk"; + [DataField] + public EntProtoId DiskPrototype = "TechnologyDisk"; /// /// How long it takes to print /// - [DataField("printDuration"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public TimeSpan PrintDuration = TimeSpan.FromSeconds(1); /// /// The sound made when printing occurs /// - [DataField("printSound")] + [DataField] public SoundSpecifier PrintSound = new SoundPathSpecifier("/Audio/Machines/printer.ogg"); } diff --git a/Content.Shared/Research/TechnologyDisk/Components/TechnologyDiskComponent.cs b/Content.Shared/Research/TechnologyDisk/Components/TechnologyDiskComponent.cs index ce8a138bdbd..02ffc776161 100644 --- a/Content.Shared/Research/TechnologyDisk/Components/TechnologyDiskComponent.cs +++ b/Content.Shared/Research/TechnologyDisk/Components/TechnologyDiskComponent.cs @@ -9,11 +9,22 @@ namespace Content.Shared.Research.TechnologyDisk.Components; [AutoGenerateComponentState] public sealed partial class TechnologyDiskComponent : Component { + /// + /// A discipline to constrain the disk to. + /// + [DataField, AutoNetworkedField] + public ProtoId? Discipline; + + /// + /// A tier to constrain the disk to. + /// + [DataField, AutoNetworkedField] + public int? Tier; + /// /// The recipe that will be added. If null, one will be randomly generated /// - [DataField] - [AutoNetworkedField] + [DataField, AutoNetworkedField] public List>? Recipes; /// @@ -21,4 +32,15 @@ public sealed partial class TechnologyDiskComponent : Component /// [DataField] public ProtoId TierWeightPrototype = "TechDiskTierWeights"; + + /// + /// Mapping of disk tiers to disk prices. + /// + [DataField] + public Dictionary DiskPricePerTier = new() + { + [1] = 100, + [2] = 500, + [3] = 1500 + }; } diff --git a/Content.Shared/Research/TechnologyDisk/Systems/TechnologyDiskSystem.cs b/Content.Shared/Research/TechnologyDisk/Systems/TechnologyDiskSystem.cs index 6fe11746194..8958f8b3ffd 100644 --- a/Content.Shared/Research/TechnologyDisk/Systems/TechnologyDiskSystem.cs +++ b/Content.Shared/Research/TechnologyDisk/Systems/TechnologyDiskSystem.cs @@ -1,3 +1,4 @@ +using Content.Shared.Cargo; using Content.Shared.Examine; using Content.Shared.Interaction; using Content.Shared.Lathe; @@ -8,9 +9,9 @@ using Content.Shared.Research.Prototypes; using Content.Shared.Research.Systems; using Content.Shared.Research.TechnologyDisk.Components; -using Robust.Shared.Network; using Robust.Shared.Prototypes; using Robust.Shared.Random; +using Robust.Shared.Serialization; namespace Content.Shared.Research.TechnologyDisk.Systems; @@ -21,6 +22,7 @@ public sealed class TechnologyDiskSystem : EntitySystem [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedResearchSystem _research = default!; [Dependency] private readonly SharedLatheSystem _lathe = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly NameModifierSystem _nameModifier = default!; public override void Initialize() @@ -30,37 +32,98 @@ public override void Initialize() SubscribeLocalEvent(OnMapInit); SubscribeLocalEvent(OnAfterInteract); SubscribeLocalEvent(OnExamine); + SubscribeLocalEvent(OnPriceCalculation); SubscribeLocalEvent(OnRefreshNameModifiers); } private void OnMapInit(Entity ent, ref MapInitEvent args) + { + TryPickAndSetRecipe(ent); + TrySetVisuals(ent); + } + + /// + /// Attempts to pick and set a random recipe as the chosen one. + /// If the disk already has recipes, does nothing. + /// + private void TryPickAndSetRecipe(Entity ent) { if (ent.Comp.Recipes != null) return; - var weightedRandom = _protoMan.Index(ent.Comp.TierWeightPrototype); - var tier = int.Parse(weightedRandom.Pick(_random)); + int tier; + if (ent.Comp.Tier.HasValue) + { + tier = ent.Comp.Tier.Value; + } + else + { + var weightedRandom = _protoMan.Index(ent.Comp.TierWeightPrototype); + tier = int.Parse(weightedRandom.Pick(_random)); + ent.Comp.Tier = tier; + } - //get a list of every distinct recipe in all the technologies. - var techs = new HashSet>(); + // get a list of every distinct recipe in all the technologies. + var bundles = new HashSet<(ProtoId recipe, ProtoId discipline)>(); foreach (var tech in _protoMan.EnumeratePrototypes()) { if (tech.Tier != tier) continue; + if (ent.Comp.Discipline != null && tech.Discipline != ent.Comp.Discipline.Value) + continue; - techs.UnionWith(tech.RecipeUnlocks); + foreach (var recipe in tech.RecipeUnlocks) + { + bundles.Add((recipe, tech.Discipline)); + } } - if (techs.Count == 0) + if (bundles.Count == 0) + { + Log.Error($"Failed to pick recipe for a tech disk: no suitable recipes were found"); return; + } - //pick one + // pick one + var bundle = _random.Pick(bundles); + ent.Comp.Discipline = bundle.discipline; ent.Comp.Recipes = []; - ent.Comp.Recipes.Add(_random.Pick(techs)); + ent.Comp.Recipes.Add(bundle.recipe); Dirty(ent); _nameModifier.RefreshNameModifiers(ent.Owner); } + /// + /// Attempts to set tier and discipline visuals based on chosen tier and discipline. + /// + private void TrySetVisuals(Entity ent) + { + TrySetTierVisuals(ent); + TrySetDisciplineVisuals(ent); + } + + /// + /// Attempts to set tier visuals based on chosen tier. + /// + private void TrySetTierVisuals(Entity ent) + { + if (ent.Comp.Tier is not { } tier) + return; + + _appearance.SetData(ent.Owner, TechDiskVisuals.Tier, tier); + } + + /// + /// Attempts to set discipline visuals based on chosen discipline. + /// + private void TrySetDisciplineVisuals(Entity ent) + { + if (!_protoMan.Resolve(ent.Comp.Discipline, out var discipline)) + return; + + _appearance.SetData(ent.Owner, TechDiskVisuals.Discipline, discipline.ID); + } + private void OnAfterInteract(Entity ent, ref AfterInteractEvent args) { if (args.Handled || !args.CanReach || args.Target is not { } target) @@ -83,6 +146,21 @@ private void OnAfterInteract(Entity ent, ref AfterInter private void OnExamine(Entity ent, ref ExaminedEvent args) { + if (ent.Comp is { Tier: not null, Discipline: not null } + && _protoMan.Resolve(ent.Comp.Discipline, out var disciplineProto)) + { + var desc = Loc.GetString("tech-disk-examine-desc", + ("tier", ent.Comp.Tier), + ("branch", Loc.GetString(disciplineProto.Name)) + ); + + args.PushMarkup(desc); + } + else + { + args.PushMarkup(Loc.GetString("tech-disk-examine-desc-unknown")); + } + var message = Loc.GetString("tech-disk-examine-none"); if (ent.Comp.Recipes != null && ent.Comp.Recipes.Count > 0) { @@ -95,6 +173,18 @@ private void OnExamine(Entity ent, ref ExaminedEvent ar args.PushMarkup(message); } + private void OnPriceCalculation(Entity ent, ref PriceCalculationEvent args) + { + if (ent.Comp.Tier is not { } tier) + return; + + if (!ent.Comp.DiskPricePerTier.TryGetValue(tier, out var price)) + return; + + args.Price = price; + args.Handled = true; + } + private void OnRefreshNameModifiers(Entity entity, ref RefreshNameModifiersEvent args) { if (entity.Comp.Recipes != null) @@ -107,3 +197,10 @@ private void OnRefreshNameModifiers(Entity entity, ref } } } + +[Serializable, NetSerializable] +public enum TechDiskVisuals : byte +{ + Tier, + Discipline +} diff --git a/Resources/Locale/en-US/research/components/technology-disk.ftl b/Resources/Locale/en-US/research/components/technology-disk.ftl index 90992f76d78..8a889b4ddaa 100644 --- a/Resources/Locale/en-US/research/components/technology-disk.ftl +++ b/Resources/Locale/en-US/research/components/technology-disk.ftl @@ -1,7 +1,9 @@ tech-disk-inserted = You insert the disk, adding a new recipe to the server. tech-disk-examine-none = The label is blank. -tech-disk-examine = The label has a small dot matrix printed image depicting a {$result}. +tech-disk-examine = The label has a small dot matrix printed image depicting a [bold]{$result}[/bold]. tech-disk-examine-more = There are more images printed, but they're too small to discern. +tech-disk-examine-desc = [color=lightGray]A disk for the R&D server containing a [bold]Tier {$tier} {$branch}[/bold] branch research technology.[/color] +tech-disk-examine-desc-unknown = [color=lightGray]A disk for the R&D server containing research technology.[/color] tech-disk-name-format = {$baseName} ({$technology}) tech-disk-ui-name = technology disk terminal diff --git a/Resources/Prototypes/Entities/Objects/Specific/Research/disk.yml b/Resources/Prototypes/Entities/Objects/Specific/Research/disk.yml index dd556d75f2b..38b6ddf6575 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Research/disk.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Research/disk.yml @@ -45,23 +45,107 @@ parent: BaseItem id: TechnologyDisk name: technology disk - description: A disk for the R&D server containing research technology. components: - type: Sprite sprite: Objects/Misc/module.rsi layers: - state: datadisk_base - map: ["enum.DamageStateVisualLayers.Base"] + map: [ "base" ] - state: datadisk_label - - type: RandomSprite - available: - - enum.DamageStateVisualLayers.Base: - datadisk_base: Sixteen - - type: TechnologyDisk - - type: StaticPrice - price: 100 + - state: datadisk_t2_marks + shader: unshaded + map: [ "t2_marks" ] + visible: false + - state: datadisk_t2_border + map: [ "t2_border" ] + visible: false + - state: datadisk_t3_marks + map: [ "t3_marks" ] + shader: unshaded + visible: false + - state: datadisk_t3_border + map: [ "t3_border" ] + visible: false + - type: Appearance + - type: GenericVisualizer + visuals: + enum.TechDiskVisuals.Discipline: + base: + Industrial: { color: "#eeac34" } + Arsenal: { color: "#dc373b" } + Experimental: { color: "#9a6ef0" } + CivilianServices: { color: "#7ecd48" } + + enum.TechDiskVisuals.Tier: + t2_marks: + 2: { visible: true } + t2_border: + 2: { visible: true } + t3_marks: + 3: { visible: true } + t3_border: + 3: { visible: true } - type: StealTarget stealGroup: TechnologyDisk + - type: TechnologyDisk + +# random tech disks by tier +- type: entity + parent: TechnologyDisk + id: TechnologyDiskT1 + suffix: Tier 1 + components: + - type: TechnologyDisk + tier: 1 + +- type: entity + parent: TechnologyDisk + id: TechnologyDiskT2 + suffix: Tier 2 + components: + - type: TechnologyDisk + tier: 2 + +- type: entity + parent: TechnologyDisk + id: TechnologyDiskT3 + suffix: Tier 3 + components: + - type: TechnologyDisk + tier: 3 + +# random tech disks by discipline +- type: entity + parent: TechnologyDisk + id: TechnologyDiskIndustrial + suffix: Industrial + components: + - type: TechnologyDisk + discipline: Industrial + +- type: entity + parent: TechnologyDisk + id: TechnologyDiskArsenal + suffix: Arsenal + components: + - type: TechnologyDisk + discipline: Arsenal + +- type: entity + parent: TechnologyDisk + id: TechnologyDiskExperimental + suffix: Experimental + components: + - type: TechnologyDisk + discipline: Experimental + +- type: entity + parent: TechnologyDisk + id: TechnologyDiskCivilianServices + suffix: Civilian Services + components: + - type: TechnologyDisk + discipline: CivilianServices - type: entity parent: TechnologyDisk diff --git a/Resources/Textures/Objects/Misc/module.rsi/datadisk_t2_border.png b/Resources/Textures/Objects/Misc/module.rsi/datadisk_t2_border.png new file mode 100644 index 0000000000000000000000000000000000000000..b099f6519533e5569f6911a4442968401cd27388 GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}YMw5RArY-_ zj~ena7;rEc@coH)x}?IxT`*~jzcK?u!pqQqCmH5k{5FlZY@efq6;KC*r>mdKI;Vst E08XGC)Bpeg literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/module.rsi/datadisk_t2_marks.png b/Resources/Textures/Objects/Misc/module.rsi/datadisk_t2_marks.png new file mode 100644 index 0000000000000000000000000000000000000000..c329386562bdb1f5078151f9f477e313f50789e4 GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}nw~C>ArY-_ z&l&PE7;rEc@coH)5)yJ?yLm|~gN0$wBJJhc&wnv8e3;L=HjFiSAN!tspe6=SS3j3^ HP6!$tZ0fP76H~%^QRKuyE zbC;hq1N#A|#+U<6>yDk${I9XG9B6^!vh0?;-FPgg&e IbxsLQ00tU8rvLx| literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Misc/module.rsi/datadisk_t3_marks.png b/Resources/Textures/Objects/Misc/module.rsi/datadisk_t3_marks.png new file mode 100644 index 0000000000000000000000000000000000000000..5a75633e8fe75a6a188e69634ac59ac1a4339f0a GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}x}GkMArY-_ zFF0~CIB+mH%70s*qM}@($tRd5q$AD95MJ`M Date: Tue, 17 Mar 2026 23:06:25 +0000 Subject: [PATCH 553/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index b36381081e3..04b667fb65f 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: qwerltaz - changes: - - message: The ID card computer now has buttons to grant or revoke all access from - the target ID card. - type: Add - id: 9070 - time: '2025-10-11T00:52:01.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39375 - author: Centronias changes: - message: The HugBot, which is similar in purpose and construction to other small @@ -4029,3 +4021,11 @@ id: 9581 time: '2026-03-17T17:52:32.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42394 +- author: murolem + changes: + - message: Retextured technology disk to have the color of their discipline and + extra marks for each tier. Also increased sell price for higher-tier disks. + type: Tweak + id: 9582 + time: '2026-03-17T23:05:16.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/37719 From dd6254fd12092a4e7375507ef40c7eb9c2086fa6 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Tue, 17 Mar 2026 17:54:03 -0700 Subject: [PATCH 554/603] Fix Airtight Explosion Cache (#43276) fix explosions Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- .../Explosion/EntitySystems/ExplosionSystem.Airtight.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Airtight.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Airtight.cs index d70029ae97d..4428c8eb0eb 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Airtight.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Airtight.cs @@ -245,7 +245,7 @@ private void GetExplosionTolerance(EntityUid uid, Span explosionTol var damagePerIntensity = FixedPoint2.Zero; foreach (var (type, value) in explosionType.DamagePerIntensity.DamageDict) { - if (_damageableSystem.CanBeDamagedBy((uid, damageable), type)) + if (!_damageableSystem.CanBeDamagedBy((uid, damageable), type)) continue; // TODO EXPLOSION SYSTEM From cedae35908f75c5788d74acac2671985a80efa7f Mon Sep 17 00:00:00 2001 From: Ben Dake <124413509+Buunie099@users.noreply.github.com> Date: Wed, 18 Mar 2026 02:18:19 -0400 Subject: [PATCH 555/603] Fix thermomachine guidebook typo (#43285) Fix typo --- Resources/ServerInfo/Guidebook/Engineering/Thermomachines.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/ServerInfo/Guidebook/Engineering/Thermomachines.xml b/Resources/ServerInfo/Guidebook/Engineering/Thermomachines.xml index 7d449f33ed6..a0e7faff0a5 100644 --- a/Resources/ServerInfo/Guidebook/Engineering/Thermomachines.xml +++ b/Resources/ServerInfo/Guidebook/Engineering/Thermomachines.xml @@ -67,7 +67,7 @@ - These machines draw [color=orange][protodata="GasThermoMachineHellfireFreezer" comp="GasThermoMachine" member="HeatCapacity" format="N0"/] W[/color] of power and can heat or cool gas in a pipenet to as high as [color=orange][protodata="GasThermoMachineHellfireFreezer" comp="GasThermoMachine" member="MaxTemperature"/] K[/color] or as low as [color=orange][protodata="GasThermoMachineHellfireFreezer" comp="GasThermoMachine" member="MinTemperature"/] K[/color]. + These machines draw [color=orange][protodata="GasThermoMachineHellfireFreezer" comp="GasThermoMachine" member="HeatCapacity" format="N0"/] W[/color] of power and can heat or cool gas in a pipenet to as high as [color=orange][protodata="GasThermoMachineHellfireHeater" comp="GasThermoMachine" member="MaxTemperature"/] K[/color] or as low as [color=orange][protodata="GasThermoMachineHellfireFreezer" comp="GasThermoMachine" member="MinTemperature"/] K[/color]. However, they also leak [color=orange][protodata="GasThermoMachineHellfireFreezer" comp="GasThermoMachine" member="EnergyLeakPercentage" format="P0"/][/color] of their energy to the surrounding environment, heating or cooling the exposed atmosphere respectively. This can be dangerous if not properly managed. From ee3926ff9473cc2dd6ce2de78504896dfa0b6ce8 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 18 Mar 2026 06:32:23 +0000 Subject: [PATCH 556/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 04b667fb65f..ca46d7af589 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Centronias - changes: - - message: The HugBot, which is similar in purpose and construction to other small - robots like the CleanBot. - type: Add - id: 9071 - time: '2025-10-11T01:05:08.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/37557 - author: PicklOH changes: - message: Added more Syndie ammo to the EMAG lathe inventory @@ -4029,3 +4021,11 @@ id: 9582 time: '2026-03-17T23:05:16.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/37719 +- author: Buunie099 + changes: + - message: Fixed guidebook showing the wrong value for the maximum temperature of + hellfire heaters. + type: Tweak + id: 9583 + time: '2026-03-18T06:31:14.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43285 From b03a72d0e712266a1ba8e05879d26f8a63582e77 Mon Sep 17 00:00:00 2001 From: Kyle Tyo Date: Wed, 18 Mar 2026 13:40:14 -0400 Subject: [PATCH 557/603] DeleteComponentCommand minor cleanup/rename. (#43289) commit --- .../Commands/DeleteComponent.cs | 46 ------------------- .../Commands/DeleteComponentCommand.cs | 42 +++++++++++++++++ 2 files changed, 42 insertions(+), 46 deletions(-) delete mode 100644 Content.Server/Administration/Commands/DeleteComponent.cs create mode 100644 Content.Server/Administration/Commands/DeleteComponentCommand.cs diff --git a/Content.Server/Administration/Commands/DeleteComponent.cs b/Content.Server/Administration/Commands/DeleteComponent.cs deleted file mode 100644 index c569a8375f7..00000000000 --- a/Content.Server/Administration/Commands/DeleteComponent.cs +++ /dev/null @@ -1,46 +0,0 @@ -using Content.Shared.Administration; -using Robust.Shared.Console; - -namespace Content.Server.Administration.Commands -{ - [AdminCommand(AdminFlags.Spawn)] - public sealed class DeleteComponent : LocalizedEntityCommands - { - [Dependency] private readonly IComponentFactory _compFactory = default!; - - public override string Command => "deletecomponent"; - - public override void Execute(IConsoleShell shell, string argStr, string[] args) - { - switch (args.Length) - { - case 0: - shell.WriteLine(Loc.GetString($"shell-need-exactly-one-argument")); - break; - default: - var name = string.Join(" ", args); - - if (!_compFactory.TryGetRegistration(name, out var registration)) - { - shell.WriteLine(Loc.GetString($"cmd-deletecomponent-no-component-exists", ("name", name))); - break; - } - - var componentType = registration.Type; - var components = EntityManager.GetAllComponents(componentType, true); - - var i = 0; - - foreach (var (uid, component) in components) - { - EntityManager.RemoveComponent(uid, component); - i++; - } - - shell.WriteLine(Loc.GetString($"cmd-deletecomponent-success", ("count", i), ("name", name))); - - break; - } - } - } -} diff --git a/Content.Server/Administration/Commands/DeleteComponentCommand.cs b/Content.Server/Administration/Commands/DeleteComponentCommand.cs new file mode 100644 index 00000000000..250957bf35f --- /dev/null +++ b/Content.Server/Administration/Commands/DeleteComponentCommand.cs @@ -0,0 +1,42 @@ +using Content.Shared.Administration; +using Robust.Shared.Console; + +namespace Content.Server.Administration.Commands; + +[AdminCommand(AdminFlags.Spawn)] +public sealed class DeleteComponentCommand : LocalizedEntityCommands +{ + [Dependency] private readonly IComponentFactory _compFactory = default!; + + public override string Command => "deletecomponent"; + + public override void Execute(IConsoleShell shell, string argStr, string[] args) + { + if (args.Length == 0) + { + shell.WriteLine(Loc.GetString($"shell-need-exactly-one-argument")); + return; + } + + var name = string.Join(" ", args); + + if (!_compFactory.TryGetRegistration(name, out var registration)) + { + shell.WriteLine(Loc.GetString($"cmd-deletecomponent-no-component-exists", ("name", name))); + return; + } + + var componentType = registration.Type; + var components = EntityManager.GetAllComponents(componentType, true); + + var i = 0; + + foreach (var (uid, component) in components) + { + EntityManager.RemoveComponent(uid, component); + i++; + } + + shell.WriteLine(Loc.GetString($"cmd-deletecomponent-success", ("count", i), ("name", name))); + } +} From 087edd285c1c3a8cd6a750e612e8827c89298205 Mon Sep 17 00:00:00 2001 From: Prole <172158352+Prole0@users.noreply.github.com> Date: Wed, 18 Mar 2026 11:06:58 -0700 Subject: [PATCH 558/603] Cleaning Blood Footstep Sounds (#43266) The noises have stopped --- .../Audio/Effects/Footsteps/attributions.yml | 2 +- Resources/Audio/Effects/Footsteps/blood1.ogg | Bin 16927 -> 18944 bytes Resources/Audio/Effects/Footsteps/blood2.ogg | Bin 12333 -> 18467 bytes Resources/Audio/Effects/Footsteps/blood3.ogg | Bin 13624 -> 22370 bytes Resources/Audio/Effects/Footsteps/blood4.ogg | Bin 13192 -> 19620 bytes Resources/Audio/Effects/Footsteps/blood5.ogg | Bin 15045 -> 17293 bytes 6 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Audio/Effects/Footsteps/attributions.yml b/Resources/Audio/Effects/Footsteps/attributions.yml index 1a4bcd3bc40..2255d8a2884 100644 --- a/Resources/Audio/Effects/Footsteps/attributions.yml +++ b/Resources/Audio/Effects/Footsteps/attributions.yml @@ -46,7 +46,7 @@ - blood4.ogg - blood5.ogg license: "CC-BY-NC-4.0" - copyright: "Created by Robinhood76 on freesound.org, modified by EmoGarbage404 (github)" + copyright: "Created by Robinhood76 on freesound.org, modified by EmoGarbage404 (github), background noise removed by Prole0 (Github)" source: "https://freesound.org/people/Robinhood76/sounds/98731/" - files: diff --git a/Resources/Audio/Effects/Footsteps/blood1.ogg b/Resources/Audio/Effects/Footsteps/blood1.ogg index 54ae0cd1d9231864df720b5e82465f0a4d7b9719..662ebfed04c616657cd9254a8c66a74cad4a1698 100644 GIT binary patch delta 17659 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 diff --git a/Resources/Audio/Effects/Footsteps/blood2.ogg b/Resources/Audio/Effects/Footsteps/blood2.ogg index ef41ad802dbd75814fa49a8c0b443ae2900277e9..c7aa200a8f9ff3ff479504266b0ddbb974c8cd19 100644 GIT binary patch delta 17178 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�SYIk4y5WaER=Al3EOlylD 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 delta 13725 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

chtKTK>&GHRD zuQGCG9S-vYwzTvQNzh;oovuzBy9EW6{WXrnS62hX;T~dh}vx;FKUABjP^UR41SLDx~0WI81rfLPl?#4aB|Eb!?LGUA9*xZ z`4m{sIaO}g=Bb;56L3fUV4$vCoGhJbwy~hXVJGbiC%2c)Fvl@hQ%2Fyoj$Bh>kbN*IS*VUZc~P?n~R% zlp|+*Y!6$hS7-X}OyADyU%KN(LJ2%bysrMA$H&M{zVy3cD6qVP(Eg^T`tn5WlNLm|qwYU5)1geg6R<(8OyD6^*Mocm)8Cd$gUSIKtPwB50CyzV?3fC>Si#C!Z#REd8!o z#g&A!El3;l8X@c6T0Uzx@b)`>FEP6LI+-ac@^OyLpctv&fdJ2QD7_@WE-A2J3{_5G z!^p4&#ty|#G!RfN_nU7$Lra|mlQ(_8X|1DfxI9yu5o|CV)$+qhn;zKM)yuHI{6T(z zF7K_y&~QqbZ{`7Pbd*fw^ohmn6WIgL&Rmf>NoJf|- z(b>iDyV9TM#!@%*z(UQk4R=vRf)b~{w{fD`wI3{dbdA&ib`LWQgo}}J--A3ZvDk6Y z^-Y3`RKeU!lFY>F#dhbGpl}QItl}Dk;0FkNuWWJb8RAX?E(}{Uuxv0D(&{%BOR7Wi zUAY76H@GQ_CPWDjdM*n=kml>P$^HcAAp2@zNkpoRCW(5kat-k7(43(`ZO@cL-0;GU zdVnO6ih6Ht;KJy;FyE-SD&I&fcl#O{3Ci(SfEo7yIy|`xFj2S0`+%Q;y!Ti=bfJo7 zq>*`$(KTi^e}At9mtOXafzzp!@Wm^P3Yc_Q^`2>6Et^P3OXfH8SkpG9$tJd54Y_Ovcop&u^Y&MEbTdv~L^od1q!rA|=YxOx0 zhD7s|OO(O@^4(=7^ApA`cYA1Y@e!g^&RmnwXg>56!r=3v(NuK@1!$S=XDo%m(^}|( zz4!HbkUNQF2ymSTc!vT3`zUn$mgrpYF|OLWx%@{R7q28djw$wJ z^SM~x1HN{K3XvKw`P63x*tv}ib=JsilUk3UO;xQxKLtjUp2(vEqdS{lnYbxRth{@G z!|6uL{XMNQf?veVR{MZtD3htE^aW6(#Ouce$UkrY86LhwflKwW7xM6W`c!I{@rUzy zqL4h~=7NpYNO-4y$Xr5=@8swmJR%1fsb5KUg}i>~=;&;rKw?4cQ`cd;fUObg{*MAZ zL?%b2@G(iw8~5S`Z~;OiUlRn$z@-zxAxN*%Q5K4L99I1874)Npa;M7HU^pEjcpHq;BpG#E!3`x4p((`PYu3~$8ki*ds3FC}*aLkIuZd|C;vsp=U0C{i2>~_dj(IlPBDB8yoII10X za`l;U!Oixb3mh*R;j}WR=TB^s5o_2?`B1>^jG!Swx}cz)Z^Ew2cV3JlX@Q;e^%qVS z<2}Y{r2!@k9%WMqRr-YJnRZdm;VkGQKhu;xDh%LNTHhCq9Z*3}A_q6Xs3j*ZZNw#| zE9~M{^Wbsk#%WxU;CMf;ACq{Ja(iyBD9!h-kFuN!2fR+h*HIp=`IW$}M_zS_d-P$V z)U1##QKF9`-~Gt{EZ#z`vMgR))Mc{NpeKpQwqS*~Y%c2<9t-_Yx+h2 z1rzX0rlhOytlk&$gCcro8%oidQE`UO8B8IUV9(Pn7rJ8^s z;af05@F3FOAp4I=aR*txykQr&CpBEPy2|C7UQU*ivngv$q) z#bk{+U)Rx%eMw*WE}rD12>CD$USFC>JJj9WT~m!kh{{N>%vi!(h+5cD`s7do0$O2+ZC17QEMdgyq#b@IR z6ku}i1n8@yMvZgWWVn9$KJSdmsvU*@+3M~RS(ke)1zS_<+;4*}kL-M1?CQfcxFh4! zK&x+tc%BgDwr6JvsW|PFBZXLq=ga;-nDmd+tGvzWPZavZBHm^1MZ%I;@@q z&FN^YDNRpY1xUud=P)xb2f^--Z9O;&i_D2kq9FQ8m`kfPZv^%t3+^PVw>XG%*{>f2 zp1gf#zT6fX!Cikp8O)mSb&nAMXZickpwzaOYa`_bG`QX1ZGOEqYN}lFxv>s?_G2Cs zjW#r0lHYLsltR&>{d;fi53WWcH@5ZgPoM=wMQ=mf(K!!!DqkW#2O-7BU3c{lEB2Py zgX!!n{VIa#)0}+|yX4B>yv_sFIqGo2_hJTLmwS&g&%G%bQFg!(_z=>$WqnqW^ z+47P`z#`%3`uJA9QXo>RUO8>7`WUx`3>;v~JaZ$nRgrlLmjLk+7ky>rOF?A5_rv%SYY?~h?EGm_R zfIGD%!$%T{ja5JYSJFQ);9m9hVh12W!@~@(fC1JuL!VkrKp;MSJkRinQ1v!@xZ_R6 z!&R)HkE{*a*Gs3&x4B#4JPU6x2gz@j^-Y>cPtz5ou-rF3WZY`xwr%we`<-D3Yt^P8 zGBo--M^kNKWZyl~=%=2ZqRQx~%OA7x3Hh6o?WHHv5hacSHZnFF!HDd z`?R!chf6;tS_@N~j>yNE4(X@dfLV@r=bN7_zF8{o>NdU{B!bi3U&g1Ukv>)KS(fAH zp9Dd?k7Z9!h?3mgCwTbb8-M!KUi7`c34gKRa58tRUI+mf4Tk?hc-Lo-7xfF z3B3+w-z2ygaV%4)dCgX0_@}mWk!gH=#*VS=SKCVBwVqA+jdVu#A%ChpP3q;gl>15} M2U%)@H6HN40H9gEjQ{`u From 2008be23f68c6294748ab76f444c556c671e5a9c Mon Sep 17 00:00:00 2001 From: rwrv Date: Thu, 19 Mar 2026 07:31:30 +0000 Subject: [PATCH 559/603] Update Packed's TEG Burn chamber (#43278) * Remake Packed's burn chamber * Fix bugs after testing * Updated to return the burn chamber to its former size, at the request of ArtisticRoomba --- Resources/Maps/packed.yml | 1193 ++++++++++++++++++++++--------------- 1 file changed, 696 insertions(+), 497 deletions(-) diff --git a/Resources/Maps/packed.yml b/Resources/Maps/packed.yml index 313af303d7b..8473701559b 100644 --- a/Resources/Maps/packed.yml +++ b/Resources/Maps/packed.yml @@ -4,8 +4,8 @@ meta: engineVersion: 272.0.0 forkId: "" forkVersion: "" - time: 02/17/2026 18:18:48 - entityCount: 15978 + time: 03/18/2026 17:37:36 + entityCount: 16015 maps: - 126 grids: @@ -68,71 +68,71 @@ entities: chunks: -1,-1: ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAQB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAWwAAAAABAFsAAAAAAQBbAAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAAAWwAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAABAFsAAAAAAQB7AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAMAewAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAAAAHsAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAABrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAAHsAAAAAAAAiAAAAAAMAWwAAAAABAFsAAAAAAwB7AAAAAAAAeAAAAAADAHgAAAAAAQB4AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAEAewAAAAAAAHgAAAAAAgB4AAAAAAIAeAAAAAADAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAACAB0AAAAAAQB4AAAAAAEAeAAAAAACAHgAAAAAAgB4AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAEAWwAAAAABAFsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAACAHsAAAAAAABbAAAAAAIAWwAAAAACAFsAAAAAAABbAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAWwAAAAABAFsAAAAAAwB7AAAAAAAAWwAAAAACAFsAAAAAAwBbAAAAAAIAWwAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAIAWwAAAAADAFsAAAAAAgBbAAAAAAIAWwAAAAABAFsAAAAAAQBbAAAAAAMAWwAAAAAAAFsAAAAAAwBbAAAAAAAAWwAAAAADAFsAAAAAAgBbAAAAAAMAWwAAAAAAAFsAAAAAAQBbAAAAAAIAWwAAAAACAFsAAAAAAQBbAAAAAAIAWwAAAAABAFsAAAAAAwBbAAAAAAMAWwAAAAAAAFsAAAAAAgBbAAAAAAIAWwAAAAABAFsAAAAAAgBbAAAAAAAAWwAAAAAAAFsAAAAAAgBbAAAAAAAAWwAAAAABAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAwB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAgBbAAAAAAIAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAIAWwAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAABAFsAAAAAAwB7AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAQBbAAAAAAAAewAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAABAHsAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAABrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAAHsAAAAAAAAiAAAAAAMAWwAAAAACAFsAAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAIAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAMAewAAAAAAAHgAAAAAAAB4AAAAAAEAeAAAAAACAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAACAB0AAAAAAQB4AAAAAAAAeAAAAAACAHgAAAAAAgB4AAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAWwAAAAABAFsAAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAIAewAAAAAAAFsAAAAAAQBbAAAAAAIAWwAAAAADAFsAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAADAHsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAWwAAAAABAFsAAAAAAQB7AAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAMAWwAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAAAWwAAAAADAFsAAAAAAwBbAAAAAAAAWwAAAAAAAFsAAAAAAgBbAAAAAAMAWwAAAAAAAFsAAAAAAwBbAAAAAAEAWwAAAAAAAFsAAAAAAABbAAAAAAMAWwAAAAADAFsAAAAAAABbAAAAAAIAWwAAAAAAAFsAAAAAAQBbAAAAAAEAWwAAAAAAAFsAAAAAAQBbAAAAAAMAWwAAAAACAFsAAAAAAwBbAAAAAAMAWwAAAAABAFsAAAAAAwBbAAAAAAIAWwAAAAAAAFsAAAAAAQBbAAAAAAAAWwAAAAABAA== version: 7 -1,0: ind: -1,0 - tiles: WwAAAAAAAFsAAAAAAwBbAAAAAAMAWwAAAAABAHsAAAAAAABbAAAAAAEAWwAAAAADAFsAAAAAAgBbAAAAAAEAWwAAAAABAFsAAAAAAABbAAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAMAWwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAwB7AAAAAAAAWwAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAADAHsAAAAAAABbAAAAAAEAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAA== + tiles: WwAAAAACAFsAAAAAAwBbAAAAAAEAWwAAAAADAHsAAAAAAABbAAAAAAAAWwAAAAADAFsAAAAAAQBbAAAAAAIAWwAAAAADAFsAAAAAAABbAAAAAAEAewAAAAAAAFsAAAAAAABbAAAAAAEAWwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAQB7AAAAAAAAWwAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAACAHsAAAAAAABbAAAAAAIAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAA== version: 7 0,0: ind: 0,0 - tiles: WwAAAAADAFsAAAAAAQBbAAAAAAEAWwAAAAADAFsAAAAAAgBbAAAAAAEAWwAAAAADAFsAAAAAAgBbAAAAAAAAWwAAAAAAAFsAAAAAAQBbAAAAAAAAWwAAAAADAFsAAAAAAwBbAAAAAAMAWwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAEAWwAAAAAAAFsAAAAAAwBbAAAAAAEAWwAAAAAAAFsAAAAAAgBbAAAAAAIAWwAAAAABAFsAAAAAAABbAAAAAAEAWwAAAAADAFsAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAwBbAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAgBbAAAAAAIAWwAAAAABAHsAAAAAAAB4AAAAAAAAeAAAAAABAHgAAAAAAwB4AAAAAAAAeAAAAAAAAHgAAAAAAgB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAIAWwAAAAAAAFsAAAAAAwB7AAAAAAAAeAAAAAAAAHgAAAAAAwB4AAAAAAIAeAAAAAABAHgAAAAAAwB4AAAAAAMAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAQBbAAAAAAIAewAAAAAAAHgAAAAAAwB4AAAAAAIAeAAAAAACAHgAAAAAAAB4AAAAAAMAeAAAAAACAGsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAQBbAAAAAAEAWwAAAAADAHsAAAAAAAB4AAAAAAIAeAAAAAADAHgAAAAAAQB4AAAAAAMAeAAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAMAWwAAAAABAFsAAAAAAgB7AAAAAAAAeAAAAAADAHgAAAAAAwB4AAAAAAMAeAAAAAAAAHgAAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAABbAAAAAAIAWwAAAAAAAFsAAAAAAgBbAAAAAAIAewAAAAAAAHsAAAAAAAAdAAAAAAAAewAAAAAAAB0AAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAQBbAAAAAAAAWwAAAAACAFsAAAAAAQBbAAAAAAEAWwAAAAADAFsAAAAAAQBbAAAAAAAAWwAAAAAAAFsAAAAAAgBbAAAAAAAAWwAAAAABAAAAAAAAAAAAAAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAEAWwAAAAABAFsAAAAAAwBbAAAAAAEAWwAAAAAAAFsAAAAAAwBbAAAAAAEAWwAAAAACAFsAAAAAAQBbAAAAAAMAWwAAAAADAFsAAAAAAgAAAAAAAAAAAAAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAADAFsAAAAAAABbAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAQBbAAAAAAIAWwAAAAABAHsAAAAAAAAsAAAAAAAAUAAAAAAAACwAAAAAAABQAAAAAAAALAAAAAAAAHsAAAAAAAB4AAAAAAIAeAAAAAACAAAAAAAAAAAAAAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAEAWwAAAAACAFsAAAAAAAB7AAAAAAAALAAAAAAAAFAAAAAAAAAsAAAAAAAALAAAAAAAAFAAAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHgAAAAAAAB4AAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB4AAAAAAIAeAAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB4AAAAAAEAeAAAAAABAA== + tiles: WwAAAAADAFsAAAAAAQBbAAAAAAIAWwAAAAABAFsAAAAAAgBbAAAAAAEAWwAAAAABAFsAAAAAAgBbAAAAAAEAWwAAAAADAFsAAAAAAwBbAAAAAAMAWwAAAAABAFsAAAAAAABbAAAAAAMAWwAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAMAWwAAAAACAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAQBbAAAAAAEAWwAAAAADAFsAAAAAAQBbAAAAAAMAWwAAAAACAFsAAAAAAQB6AAAAAAAAegAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAABAFsAAAAAAQBbAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAQBbAAAAAAIAWwAAAAAAAHsAAAAAAAB4AAAAAAEAeAAAAAADAHgAAAAAAgB4AAAAAAIAeAAAAAACAHgAAAAAAwB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAAAWwAAAAADAFsAAAAAAwB7AAAAAAAAeAAAAAABAHgAAAAAAQB4AAAAAAEAeAAAAAADAHgAAAAAAAB4AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAABbAAAAAAMAWwAAAAACAFsAAAAAAABbAAAAAAAAewAAAAAAAHgAAAAAAgB4AAAAAAIAeAAAAAABAHgAAAAAAwB4AAAAAAIAeAAAAAAAAGsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAgBbAAAAAAMAWwAAAAABAHsAAAAAAAB4AAAAAAIAeAAAAAABAHgAAAAAAwB4AAAAAAAAeAAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAADAFsAAAAAAgB7AAAAAAAAeAAAAAABAHgAAAAAAQB4AAAAAAMAeAAAAAAAAHgAAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAABAFsAAAAAAQBbAAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAEAewAAAAAAAB0AAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAWwAAAAABAFsAAAAAAQBbAAAAAAAAWwAAAAADAFsAAAAAAwBbAAAAAAEAWwAAAAADAFsAAAAAAgBbAAAAAAEAWwAAAAAAAFsAAAAAAQBbAAAAAAIAWwAAAAADAAAAAAAAAAAAAAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAMAWwAAAAABAFsAAAAAAQBbAAAAAAEAWwAAAAACAFsAAAAAAQBbAAAAAAMAWwAAAAABAFsAAAAAAQBbAAAAAAIAWwAAAAACAFsAAAAAAgAAAAAAAAAAAAAAAAAAAHsAAAAAAABbAAAAAAMAWwAAAAABAFsAAAAAAgBbAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAWwAAAAABAFsAAAAAAwBbAAAAAAEAWwAAAAADAHsAAAAAAAAsAAAAAAAAUAAAAAAAACwAAAAAAABQAAAAAAAALAAAAAAAAHsAAAAAAAB4AAAAAAMAeAAAAAABAAAAAAAAAAAAAAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAEAWwAAAAACAFsAAAAAAgB7AAAAAAAALAAAAAAAAFAAAAAAAAAsAAAAAAAALAAAAAAAAFAAAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHgAAAAAAwB4AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB4AAAAAAEAeAAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB4AAAAAAIAeAAAAAACAA== version: 7 0,-1: ind: 0,-1 - tiles: ewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAMAHQAAAAADAB0AAAAAAwAdAAAAAAEAHQAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAADAB0AAAAAAQAdAAAAAAMAHQAAAAADAB0AAAAAAgAdAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAB0AAAAAAwAdAAAAAAIAHQAAAAADAB0AAAAAAQAdAAAAAAMAHQAAAAADAB0AAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAMAHQAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAABAB0AAAAAAgAdAAAAAAEAHQAAAAABAB0AAAAAAwB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAQAdAAAAAAIAHQAAAAAAAB0AAAAAAAAdAAAAAAIAewAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAwAdAAAAAAAAHQAAAAACAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAFsAAAAAAQBbAAAAAAAAWwAAAAAAAFsAAAAAAAB7AAAAAAAAHQAAAAABAB0AAAAAAQAdAAAAAAIAHQAAAAAAAB0AAAAAAQB7AAAAAAAAHQAAAAACAB0AAAAAAgBrAAAAAAAAewAAAAAAAHsAAAAAAAA6AAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAMAewAAAAAAAB0AAAAAAwAdAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAOgAAAAAAAFsAAAAAAABbAAAAAAMAWwAAAAABAHsAAAAAAAAdAAAAAAMAHQAAAAACAHsAAAAAAABbAAAAAAIAWwAAAAAAAB0AAAAAAgAdAAAAAAAAHQAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAADAB0AAAAAAQB7AAAAAAAAWwAAAAADAFsAAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAMAWwAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAABAFsAAAAAAgBbAAAAAAMAWwAAAAACAFsAAAAAAgBbAAAAAAIAWwAAAAACAFsAAAAAAwBbAAAAAAEAWwAAAAABAFsAAAAAAgBbAAAAAAAAWwAAAAABAFsAAAAAAQBbAAAAAAAAWwAAAAACAFsAAAAAAABbAAAAAAIAWwAAAAABAFsAAAAAAgBbAAAAAAEAWwAAAAADAFsAAAAAAwBbAAAAAAEAWwAAAAADAFsAAAAAAQBbAAAAAAMAWwAAAAAAAA== + tiles: ewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAEAHQAAAAADAB0AAAAAAQAdAAAAAAEAHQAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAACAB0AAAAAAgAdAAAAAAEAHQAAAAACAB0AAAAAAgAdAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAB0AAAAAAQAdAAAAAAIAHQAAAAAAAB0AAAAAAgAdAAAAAAMAHQAAAAADAB0AAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAIAHQAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAAAAB0AAAAAAgAdAAAAAAAAHQAAAAAAAB0AAAAAAwB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAgAdAAAAAAMAHQAAAAABAB0AAAAAAAAdAAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAOgAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAQAdAAAAAAAAHQAAAAABAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAFsAAAAAAQBbAAAAAAIAWwAAAAAAAFsAAAAAAwB7AAAAAAAAHQAAAAABAB0AAAAAAgAdAAAAAAAAHQAAAAABAB0AAAAAAgB7AAAAAAAAHQAAAAAAAB0AAAAAAwBrAAAAAAAAewAAAAAAAHsAAAAAAAA6AAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAIAewAAAAAAAB0AAAAAAAAdAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAQAdAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAOgAAAAAAAFsAAAAAAgBbAAAAAAAAWwAAAAADAHsAAAAAAAAdAAAAAAMAHQAAAAABAHsAAAAAAABbAAAAAAEAWwAAAAAAAB0AAAAAAAAdAAAAAAMAHQAAAAABAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAADAB0AAAAAAgB7AAAAAAAAWwAAAAABAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAIAWwAAAAADAFsAAAAAAgBbAAAAAAIAWwAAAAACAFsAAAAAAgBbAAAAAAMAWwAAAAADAFsAAAAAAQBbAAAAAAEAWwAAAAADAFsAAAAAAABbAAAAAAEAWwAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAACAFsAAAAAAwBbAAAAAAIAWwAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAACAFsAAAAAAQBbAAAAAAMAWwAAAAACAFsAAAAAAQBbAAAAAAEAWwAAAAAAAFsAAAAAAgBbAAAAAAAAWwAAAAADAA== version: 7 -1,-2: ind: -1,-2 - tiles: AAAAAAAAAAAAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAAAAAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAGoAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAQB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAABAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAAHsAAAAAAAAiAAAAAAIAWwAAAAADAFsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAAAAAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAGoAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAWwAAAAABAFsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAMAWwAAAAACAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAAHsAAAAAAAAiAAAAAAAAWwAAAAABAFsAAAAAAQB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAA== version: 7 0,-2: ind: 0,-2 - tiles: ewAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAEAWwAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAGoAAAAAAABbAAAAAAMAWwAAAAACAFsAAAAAAgB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAWwAAAAABAFsAAAAAAgBbAAAAAAIAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAEAWwAAAAACAHoAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAwB6AAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAABAFsAAAAAAABbAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAGoAAAAAAABrAAAAAAAAagAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAABrAAAAAAAAawAAAAAAAGsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAagAAAAAAAGsAAAAAAABqAAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAA== + tiles: ewAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAIAWwAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAGoAAAAAAABbAAAAAAMAWwAAAAACAFsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAWwAAAAADAFsAAAAAAwBbAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAIAWwAAAAABAHoAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAABAFsAAAAAAgB6AAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAgBbAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAGoAAAAAAABrAAAAAAAAagAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAABrAAAAAAAAawAAAAAAAGsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAEQAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAagAAAAAAAGsAAAAAAABqAAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAwAdAAAAAAMAHQAAAAAAAB0AAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAIAEQAAAAAAABEAAAAAAAARAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAADAB0AAAAAAwAdAAAAAAEAHQAAAAADAA== version: 7 0,1: ind: 0,1 - tiles: egAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAAB4AAAAAAIAeAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB4AAAAAAMAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAHQAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHgAAAAAAgB4AAAAAAAAeAAAAAAAAHgAAAAAAQB4AAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB4AAAAAAEAeAAAAAACAHgAAAAAAAB4AAAAAAMAeAAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAADAHsAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAgBbAAAAAAIAWwAAAAABAFsAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAAAAFsAAAAAAgBbAAAAAAEAWwAAAAAAAFsAAAAAAQBbAAAAAAAAWwAAAAACAFsAAAAAAABbAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAABAFsAAAAAAQBbAAAAAAIAWwAAAAAAAFsAAAAAAQBbAAAAAAMAWwAAAAADAFsAAAAAAABbAAAAAAAAWwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAAAWwAAAAADAFsAAAAAAwBbAAAAAAEAWwAAAAACAFsAAAAAAQBbAAAAAAEAWwAAAAACAFsAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAADAFsAAAAAAQBbAAAAAAAAWwAAAAAAAFsAAAAAAgBbAAAAAAMAWwAAAAADAFsAAAAAAgBbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAABAFsAAAAAAgBbAAAAAAMAWwAAAAAAAFsAAAAAAgBbAAAAAAAAWwAAAAABAFsAAAAAAgBbAAAAAAAAWwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAEAWwAAAAABAFsAAAAAAgBbAAAAAAMAWwAAAAAAAFsAAAAAAgBbAAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAIAWwAAAAADAFsAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAABbAAAAAAEAWwAAAAADAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAQBbAAAAAAEAWwAAAAAAAFsAAAAAAwBbAAAAAAAAWwAAAAABAFsAAAAAAQBrAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAABAB0AAAAAAAAdAAAAAAIAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAAAAFsAAAAAAQBbAAAAAAEAewAAAAAAACIAAAAAAwAiAAAAAAEAIgAAAAACAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAACAFsAAAAAAgBbAAAAAAAAWwAAAAACAHsAAAAAAAAiAAAAAAEAIgAAAAADACIAAAAAAQB7AAAAAAAAewAAAAAAAA== + tiles: egAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAAB4AAAAAAMAeAAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB4AAAAAAMAeAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAHQAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHgAAAAAAAB4AAAAAAMAeAAAAAABAHgAAAAAAgB4AAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB4AAAAAAIAeAAAAAABAHgAAAAAAwB4AAAAAAMAeAAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAABAHsAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAABbAAAAAAEAWwAAAAABAFsAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAADAFsAAAAAAgBbAAAAAAMAWwAAAAABAFsAAAAAAwBbAAAAAAAAWwAAAAABAFsAAAAAAABbAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAgBbAAAAAAIAWwAAAAADAFsAAAAAAgBbAAAAAAMAWwAAAAACAFsAAAAAAABbAAAAAAMAWwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAEAWwAAAAABAFsAAAAAAgBbAAAAAAAAWwAAAAADAFsAAAAAAgBbAAAAAAEAWwAAAAADAFsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAgBbAAAAAAIAWwAAAAACAFsAAAAAAABbAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAQBbAAAAAAIAWwAAAAACAFsAAAAAAwBbAAAAAAEAWwAAAAABAFsAAAAAAgBbAAAAAAAAWwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAMAWwAAAAACAFsAAAAAAgBbAAAAAAMAWwAAAAADAFsAAAAAAQBbAAAAAAEAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAADAFsAAAAAAABbAAAAAAIAWwAAAAADAFsAAAAAAQBbAAAAAAEAWwAAAAABAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAMAWwAAAAABAFsAAAAAAQBbAAAAAAEAWwAAAAABAFsAAAAAAQBrAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAMAHQAAAAABAHsAAAAAAAB7AAAAAAAAHQAAAAADAB0AAAAAAAAdAAAAAAEAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAMAWwAAAAADAFsAAAAAAQBbAAAAAAMAewAAAAAAACIAAAAAAgAiAAAAAAIAIgAAAAACAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAABbAAAAAAIAWwAAAAADAFsAAAAAAABbAAAAAAEAWwAAAAAAAHsAAAAAAAAiAAAAAAIAIgAAAAABACIAAAAAAAB7AAAAAAAAewAAAAAAAA== version: 7 1,0: ind: 1,0 - tiles: WwAAAAACAFsAAAAAAwBbAAAAAAAAWwAAAAADAFsAAAAAAQBbAAAAAAEAWwAAAAAAAFsAAAAAAwBbAAAAAAMAWwAAAAAAAFsAAAAAAwBbAAAAAAAAWwAAAAADAFsAAAAAAABbAAAAAAMAWwAAAAABAFsAAAAAAgBbAAAAAAMAWwAAAAABAFsAAAAAAQBbAAAAAAMAWwAAAAACAFsAAAAAAwBbAAAAAAMAWwAAAAADAFsAAAAAAABbAAAAAAMAWwAAAAAAAFsAAAAAAgBbAAAAAAEAWwAAAAAAAFsAAAAAAwB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAgB7AAAAAAAABQAAAAABAAUAAAAAAgAFAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAABbAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAABAB0AAAAAAwB7AAAAAAAAPQAAAAAAAG4AAAAAAgBuAAAAAAMAPQAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAABuAAAAAAIAbgAAAAADAG4AAAAAAAB7AAAAAAAAHQAAAAADAB0AAAAAAQAdAAAAAAIAewAAAAAAAD0AAAAAAABuAAAAAAAAbgAAAAAAAD0AAAAAAABrAAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAbgAAAAACAG4AAAAAAQBuAAAAAAIAewAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHsAAAAAAAA9AAAAAAAAbgAAAAACAG4AAAAAAQA9AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAG4AAAAAAQBuAAAAAAIAbgAAAAADAHsAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAB7AAAAAAAAPQAAAAAAAG4AAAAAAQBuAAAAAAAAPQAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAABuAAAAAAIAbgAAAAADAG4AAAAAAwB7AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAWwAAAAAAAFsAAAAAAgBbAAAAAAIAWwAAAAACAA4AAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAHQAAAAADAFsAAAAAAQBbAAAAAAIAWwAAAAABAFsAAAAAAAAOAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAADAHsAAAAAAABbAAAAAAMAWwAAAAAAAFsAAAAAAQBbAAAAAAIAWwAAAAAAAFsAAAAAAwB7AAAAAAAAWwAAAAADAFsAAAAAAQBbAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAgB4AAAAAAAAWwAAAAADAFsAAAAAAgBbAAAAAAEAWwAAAAAAAFsAAAAAAABbAAAAAAMAWwAAAAABAFsAAAAAAwBbAAAAAAMAWwAAAAACAFsAAAAAAQBbAAAAAAAAWwAAAAADAFsAAAAAAAB4AAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAIAWwAAAAACAFsAAAAAAABbAAAAAAAAWwAAAAADAFsAAAAAAQBbAAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAAAWwAAAAABAFsAAAAAAgBbAAAAAAMAeAAAAAAAAHgAAAAAAQBbAAAAAAEAWwAAAAAAAFsAAAAAAwBbAAAAAAAAWwAAAAABAFsAAAAAAgB7AAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAIAWwAAAAABAFsAAAAAAgBbAAAAAAAAWwAAAAABAA== + tiles: WwAAAAAAAFsAAAAAAgBbAAAAAAIAWwAAAAABAFsAAAAAAgBbAAAAAAEAWwAAAAADAFsAAAAAAwBbAAAAAAIAWwAAAAACAFsAAAAAAABbAAAAAAMAWwAAAAADAFsAAAAAAwBbAAAAAAEAWwAAAAAAAFsAAAAAAwBbAAAAAAMAWwAAAAACAFsAAAAAAABbAAAAAAEAWwAAAAABAFsAAAAAAQBbAAAAAAIAWwAAAAACAFsAAAAAAwBbAAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAMAWwAAAAABAFsAAAAAAQB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAADAFsAAAAAAgB7AAAAAAAABQAAAAADAAUAAAAAAQAFAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAABAFsAAAAAAABbAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB7AAAAAAAAPQAAAAAAAG4AAAAAAQBuAAAAAAIAPQAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAABuAAAAAAEAbgAAAAADAG4AAAAAAwB7AAAAAAAAHQAAAAACAB0AAAAAAgAdAAAAAAIAewAAAAAAAD0AAAAAAABuAAAAAAEAbgAAAAACAD0AAAAAAABrAAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAbgAAAAACAG4AAAAAAwBuAAAAAAAAewAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHsAAAAAAAA9AAAAAAAAbgAAAAABAG4AAAAAAwA9AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAG4AAAAAAQBuAAAAAAIAbgAAAAABAHsAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAB7AAAAAAAAPQAAAAAAAG4AAAAAAABuAAAAAAMAPQAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAABuAAAAAAEAbgAAAAABAG4AAAAAAAB7AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAWwAAAAABAFsAAAAAAQBbAAAAAAIAWwAAAAABAA4AAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAHQAAAAACAFsAAAAAAgBbAAAAAAAAWwAAAAAAAFsAAAAAAwAOAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAACAHsAAAAAAABbAAAAAAMAWwAAAAAAAFsAAAAAAQBbAAAAAAAAWwAAAAAAAFsAAAAAAwB7AAAAAAAAWwAAAAACAFsAAAAAAgBbAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAAB4AAAAAAMAWwAAAAADAFsAAAAAAgBbAAAAAAIAWwAAAAADAFsAAAAAAQBbAAAAAAEAWwAAAAACAFsAAAAAAABbAAAAAAMAWwAAAAABAFsAAAAAAQBbAAAAAAEAWwAAAAACAFsAAAAAAwB4AAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAMAWwAAAAAAAFsAAAAAAQBbAAAAAAIAWwAAAAABAFsAAAAAAQBbAAAAAAIAWwAAAAACAFsAAAAAAABbAAAAAAEAWwAAAAADAFsAAAAAAgBbAAAAAAAAeAAAAAAAAHgAAAAAAQBbAAAAAAAAWwAAAAACAFsAAAAAAgBbAAAAAAEAWwAAAAAAAFsAAAAAAQB7AAAAAAAAWwAAAAABAFsAAAAAAwBbAAAAAAIAWwAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAADAA== version: 7 1,-1: ind: 1,-1 - tiles: EQAAAAAAABEAAAAAAAAdAAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAIAWwAAAAADAB0AAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAABbAAAAAAIAWwAAAAABAFsAAAAAAgBbAAAAAAAAWwAAAAACAHsAAAAAAAB7AAAAAAAAHQAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAAAWwAAAAACAHsAAAAAAABbAAAAAAEAWwAAAAACAFsAAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAACAHgAAAAAAAB4AAAAAAAAHQAAAAABAB0AAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAQBbAAAAAAIAewAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAwB4AAAAAAIAeAAAAAABAB0AAAAAAAAdAAAAAAMAHQAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAACAHsAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB4AAAAAAMAeAAAAAAAAHgAAAAAAQAdAAAAAAEAHQAAAAADAB0AAAAAAQBbAAAAAAAAWwAAAAADAFsAAAAAAgAdAAAAAAMALAAAAAAAACwAAAAAAAAsAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAABAHgAAAAAAAB4AAAAAAAAHQAAAAACAB0AAAAAAgB7AAAAAAAAWwAAAAABAFsAAAAAAgBbAAAAAAEAewAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAIAWwAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAMAWwAAAAACAFsAAAAAAAB7AAAAAAAAPgAAAAAAAD4AAAAAAAAOAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAwBbAAAAAAEAewAAAAAAAD4AAAAAAAA+AAAAAAAADgAAAAACAB0AAAAAAgAdAAAAAAAAeAAAAAACAHgAAAAAAwB4AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAABQAAAAACAFsAAAAAAQBbAAAAAAMAWwAAAAABAFsAAAAAAwAOAAAAAAMADgAAAAABAA4AAAAAAwAdAAAAAAIAHQAAAAADAHgAAAAAAAB4AAAAAAAAeAAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAAUAAAAAAwBbAAAAAAIAWwAAAAADAFsAAAAAAAB7AAAAAAAADgAAAAABAA4AAAAAAAAOAAAAAAMAHQAAAAAAAB0AAAAAAwB4AAAAAAEAeAAAAAADAHgAAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAABbAAAAAAIAewAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAFsAAAAAAAB7AAAAAAAAeAAAAAABAHgAAAAAAgB4AAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAIAWwAAAAACAHsAAAAAAAAOAAAAAAMADgAAAAAAAA4AAAAAAgBbAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAACAFsAAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAgBbAAAAAAIAWwAAAAADAFsAAAAAAABbAAAAAAMAWwAAAAAAAFsAAAAAAwBbAAAAAAAAWwAAAAACAFsAAAAAAgBbAAAAAAAAWwAAAAACAFsAAAAAAgBbAAAAAAEAWwAAAAABAA== + tiles: EQAAAAAAABEAAAAAAAAdAAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAACAB0AAAAAAQB7AAAAAAAAWwAAAAABAFsAAAAAAABbAAAAAAEAWwAAAAAAAFsAAAAAAgBbAAAAAAMAWwAAAAABAHsAAAAAAAB7AAAAAAAAHQAAAAACAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAADAHsAAAAAAABbAAAAAAMAWwAAAAABAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAIAWwAAAAACAFsAAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAQB4AAAAAAEAHQAAAAAAAB0AAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAMAewAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAAB4AAAAAAEAeAAAAAABAB0AAAAAAwAdAAAAAAEAHQAAAAAAAFsAAAAAAQBbAAAAAAMAWwAAAAAAAHsAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB4AAAAAAEAeAAAAAABAHgAAAAAAAAdAAAAAAAAHQAAAAADAB0AAAAAAgBbAAAAAAAAWwAAAAABAFsAAAAAAQAdAAAAAAEALAAAAAAAACwAAAAAAAAsAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAABAHgAAAAAAAB4AAAAAAMAHQAAAAAAAB0AAAAAAgB7AAAAAAAAWwAAAAABAFsAAAAAAgBbAAAAAAMAewAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAMAWwAAAAABAFsAAAAAAAB7AAAAAAAAPgAAAAAAAD4AAAAAAAAOAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAgBbAAAAAAMAewAAAAAAAD4AAAAAAAA+AAAAAAAADgAAAAABAB0AAAAAAgAdAAAAAAEAeAAAAAAAAHgAAAAAAgB4AAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAABQAAAAADAFsAAAAAAgBbAAAAAAMAWwAAAAACAFsAAAAAAwAOAAAAAAMADgAAAAABAA4AAAAAAgAdAAAAAAEAHQAAAAADAHgAAAAAAAB4AAAAAAAAeAAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAAUAAAAAAgBbAAAAAAEAWwAAAAAAAFsAAAAAAwB7AAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAIAHQAAAAAAAB0AAAAAAwB4AAAAAAIAeAAAAAAAAHgAAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAgBbAAAAAAIAewAAAAAAAA4AAAAAAQAOAAAAAAIADgAAAAACAFsAAAAAAAB7AAAAAAAAeAAAAAABAHgAAAAAAwB4AAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAADAHsAAAAAAAAOAAAAAAMADgAAAAADAA4AAAAAAABbAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAABbAAAAAAAAWwAAAAABAFsAAAAAAwBbAAAAAAAAWwAAAAADAFsAAAAAAgBbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAEAWwAAAAAAAFsAAAAAAQBbAAAAAAIAWwAAAAACAA== version: 7 1,-2: ind: 1,-2 - tiles: agAAAAAAAFsAAAAAAwBbAAAAAAEAewAAAAAAAFsAAAAAAQBbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAMAWwAAAAADAFsAAAAAAwBbAAAAAAAAWwAAAAABAFsAAAAAAQBbAAAAAAEAWwAAAAABAHsAAAAAAABbAAAAAAIAWwAAAAACAHsAAAAAAABbAAAAAAEAWwAAAAACAFsAAAAAAgBbAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAIAWwAAAAABAFsAAAAAAwB7AAAAAAAAWwAAAAADAFsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAMAWwAAAAABAFsAAAAAAgBbAAAAAAEAWwAAAAACAFsAAAAAAwBbAAAAAAAAWwAAAAADAFsAAAAAAQBbAAAAAAAAWwAAAAACAFsAAAAAAABbAAAAAAMAWwAAAAADAFsAAAAAAQBbAAAAAAEAWwAAAAACAFsAAAAAAQBbAAAAAAIAWwAAAAACAFsAAAAAAgBbAAAAAAIAWwAAAAAAAFsAAAAAAQBbAAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAADAHsAAAAAAABbAAAAAAEAWwAAAAADAFsAAAAAAwBbAAAAAAIAWwAAAAABAFsAAAAAAQBbAAAAAAIAWwAAAAABAFsAAAAAAgBbAAAAAAEAWwAAAAADAHsAAAAAAAB7AAAAAAAAWwAAAAABAHsAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAQBbAAAAAAEAWwAAAAADAFsAAAAAAQBbAAAAAAEAWwAAAAACAFsAAAAAAgBbAAAAAAMAWwAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAABAFsAAAAAAgBbAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAEAWwAAAAABAFsAAAAAAQBbAAAAAAMAWwAAAAADAFsAAAAAAABbAAAAAAAAWwAAAAABAFsAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAABbAAAAAAMAWwAAAAAAAFsAAAAAAABbAAAAAAEAWwAAAAADAFsAAAAAAwBbAAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAIAWwAAAAACAFsAAAAAAwBbAAAAAAEAWwAAAAAAAFsAAAAAAgBbAAAAAAAAWwAAAAACAFsAAAAAAABbAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAwBbAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAACAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAACAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAEQAAAAAAABEAAAAAAAAdAAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAB0AAAAAAAB7AAAAAAAAWwAAAAABAFsAAAAAAwBbAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHsAAAAAAABbAAAAAAIAWwAAAAADAFsAAAAAAAAdAAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAMAWwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAARAAAAAAAAEQAAAAAAAB0AAAAAAwB7AAAAAAAAWwAAAAACAFsAAAAAAQBbAAAAAAIAHQAAAAACAB0AAAAAAQBbAAAAAAEAWwAAAAACAFsAAAAAAQB7AAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAEAHQAAAAAAAB0AAAAAAAAdAAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAEAWwAAAAABAB0AAAAAAwB7AAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAMAWwAAAAAAAFsAAAAAAwBbAAAAAAAAWwAAAAABAA== + tiles: agAAAAAAAFsAAAAAAwBbAAAAAAIAewAAAAAAAFsAAAAAAQBbAAAAAAMAWwAAAAABAFsAAAAAAwBbAAAAAAIAWwAAAAADAFsAAAAAAQBbAAAAAAMAWwAAAAADAFsAAAAAAgBbAAAAAAIAWwAAAAADAHsAAAAAAABbAAAAAAIAWwAAAAABAHsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAgBbAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAIAWwAAAAADAFsAAAAAAgB7AAAAAAAAWwAAAAAAAFsAAAAAAwB7AAAAAAAAewAAAAAAAFsAAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAwBbAAAAAAAAWwAAAAABAFsAAAAAAQBbAAAAAAMAWwAAAAACAFsAAAAAAQBbAAAAAAMAWwAAAAADAFsAAAAAAQBbAAAAAAMAWwAAAAADAFsAAAAAAwBbAAAAAAIAWwAAAAABAFsAAAAAAQBbAAAAAAIAWwAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAADAFsAAAAAAgBbAAAAAAIAewAAAAAAAFsAAAAAAgBbAAAAAAEAWwAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAABbAAAAAAIAWwAAAAABAFsAAAAAAABbAAAAAAIAWwAAAAABAFsAAAAAAABbAAAAAAAAWwAAAAADAHsAAAAAAAB7AAAAAAAAWwAAAAADAHsAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAwBbAAAAAAIAWwAAAAABAFsAAAAAAQBbAAAAAAAAWwAAAAADAFsAAAAAAwBbAAAAAAEAWwAAAAADAHsAAAAAAAB7AAAAAAAAWwAAAAABAFsAAAAAAwBbAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAMAWwAAAAABAFsAAAAAAwBbAAAAAAIAWwAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAAAAFsAAAAAAgBbAAAAAAAAWwAAAAACAFsAAAAAAABbAAAAAAAAWwAAAAADAFsAAAAAAABbAAAAAAIAWwAAAAADAFsAAAAAAgBbAAAAAAAAWwAAAAACAFsAAAAAAgBbAAAAAAEAWwAAAAADAFsAAAAAAQBbAAAAAAMAWwAAAAAAAFsAAAAAAgBbAAAAAAMAWwAAAAABAFsAAAAAAABbAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAQBbAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAFsAAAAAAwBbAAAAAAEAWwAAAAACAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAADAFsAAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAEQAAAAAAABEAAAAAAAAdAAAAAAEAewAAAAAAAFsAAAAAAQBbAAAAAAEAWwAAAAADAB0AAAAAAgB7AAAAAAAAWwAAAAACAFsAAAAAAQBbAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAEAHQAAAAABAHsAAAAAAABbAAAAAAMAWwAAAAAAAFsAAAAAAAAdAAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAIAWwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAARAAAAAAAAEQAAAAAAAB0AAAAAAgB7AAAAAAAAWwAAAAACAFsAAAAAAQBbAAAAAAAAHQAAAAABAB0AAAAAAABbAAAAAAMAWwAAAAADAFsAAAAAAQB7AAAAAAAAWwAAAAADAFsAAAAAAABbAAAAAAIAHQAAAAACAB0AAAAAAgAdAAAAAAMAewAAAAAAAFsAAAAAAwBbAAAAAAAAWwAAAAADAB0AAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAQBbAAAAAAMAWwAAAAAAAFsAAAAAAQBbAAAAAAAAWwAAAAACAA== version: 7 0,-3: ind: 0,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHsAAAAAAAB4AAAAAAEAeAAAAAABAHgAAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB7AAAAAAAAeAAAAAADAHgAAAAAAAB4AAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAewAAAAAAAHgAAAAAAQB4AAAAAAEAeAAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAwB7AAAAAAAAegAAAAAAAHsAAAAAAABbAAAAAAIAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAAAdAAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAHQAAAAADAB0AAAAAAgAdAAAAAAAAHQAAAAADAHsAAAAAAABbAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAHgAAAAAAgB4AAAAAAMAeAAAAAADAB0AAAAAAQB7AAAAAAAAWwAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB4AAAAAAIAeAAAAAADAHgAAAAAAgAdAAAAAAMAHQAAAAABAFsAAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAQB4AAAAAAIAHQAAAAADAHsAAAAAAABbAAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHsAAAAAAAB4AAAAAAMAeAAAAAACAHgAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAewAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAABbAAAAAAIAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAAAdAAAAAAIAewAAAAAAAHoAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAHQAAAAABAB0AAAAAAQAdAAAAAAAAHQAAAAADAHsAAAAAAABbAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAHgAAAAAAQB4AAAAAAAAeAAAAAAAAB0AAAAAAAB7AAAAAAAAWwAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB4AAAAAAIAeAAAAAACAHgAAAAAAwAdAAAAAAMAHQAAAAAAAFsAAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAMAHQAAAAAAAHsAAAAAAABbAAAAAAEAewAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAA== version: 7 1,-3: ind: 1,-3 - tiles: AAAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAABAB0AAAAAAwAdAAAAAAMAHQAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAEAWwAAAAADAFsAAAAAAQBbAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAwAdAAAAAAIAewAAAAAAAB0AAAAAAwBbAAAAAAEAWwAAAAAAAHsAAAAAAABbAAAAAAMAagAAAAAAAGoAAAAAAABqAAAAAAAAWwAAAAACAHsAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAAdAAAAAAMAHQAAAAADAHsAAAAAAAAdAAAAAAAAWwAAAAADAFsAAAAAAQB7AAAAAAAAWwAAAAAAAB0AAAAAAgB7AAAAAAAAHQAAAAADAFsAAAAAAwB7AAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAHQAAAAABAB0AAAAAAwB7AAAAAAAAHQAAAAABAFsAAAAAAwBbAAAAAAEAewAAAAAAAFsAAAAAAgAdAAAAAAAAewAAAAAAAB0AAAAAAQBbAAAAAAMAewAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAB0AAAAAAgAdAAAAAAIAewAAAAAAAB0AAAAAAQBbAAAAAAAAWwAAAAADAFsAAAAAAQBbAAAAAAAAHQAAAAACAHsAAAAAAAAdAAAAAAEAWwAAAAADAFsAAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAABAHsAAAAAAAAdAAAAAAIAagAAAAAAAFsAAAAAAQB7AAAAAAAAWwAAAAACAFsAAAAAAQBbAAAAAAIAWwAAAAACAFsAAAAAAAB7AAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAHQAAAAADAB0AAAAAAwAdAAAAAAEAHQAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAABbAAAAAAEAWwAAAAADAFsAAAAAAQBbAAAAAAEAWwAAAAABAFsAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAgBbAAAAAAIAWwAAAAABAFsAAAAAAABbAAAAAAMAWwAAAAADAFsAAAAAAQBbAAAAAAIAWwAAAAAAAFsAAAAAAQBbAAAAAAEAWwAAAAADAFsAAAAAAgBbAAAAAAAAWwAAAAABAFsAAAAAAABbAAAAAAIAWwAAAAABAFsAAAAAAgBbAAAAAAMAWwAAAAADAFsAAAAAAgBbAAAAAAAAWwAAAAADAFsAAAAAAgBbAAAAAAEAWwAAAAACAFsAAAAAAQBbAAAAAAMAWwAAAAABAFsAAAAAAQB7AAAAAAAAWwAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAwBbAAAAAAEAWwAAAAAAAFsAAAAAAwB7AAAAAAAAewAAAAAAAFsAAAAAAgB7AAAAAAAAewAAAAAAAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAMAewAAAAAAAHsAAAAAAABbAAAAAAIAewAAAAAAAFsAAAAAAABbAAAAAAMAewAAAAAAAFsAAAAAAABbAAAAAAEAWwAAAAADAFsAAAAAAQBbAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAgBbAAAAAAAAWwAAAAADAA== + tiles: AAAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAABAB0AAAAAAwAdAAAAAAAAHQAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAEAWwAAAAADAFsAAAAAAABbAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAwAdAAAAAAEAewAAAAAAAB0AAAAAAwBbAAAAAAIAWwAAAAACAHsAAAAAAABbAAAAAAMAagAAAAAAAGoAAAAAAABqAAAAAAAAWwAAAAADAHsAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAAdAAAAAAIAHQAAAAACAHsAAAAAAAAdAAAAAAEAWwAAAAAAAFsAAAAAAgB7AAAAAAAAWwAAAAAAAB0AAAAAAwB7AAAAAAAAHQAAAAABAFsAAAAAAgB7AAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAHQAAAAADAB0AAAAAAAB7AAAAAAAAHQAAAAAAAFsAAAAAAABbAAAAAAMAewAAAAAAAFsAAAAAAQAdAAAAAAEAewAAAAAAAB0AAAAAAwBbAAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAB0AAAAAAgAdAAAAAAMAewAAAAAAAB0AAAAAAwBbAAAAAAEAWwAAAAACAFsAAAAAAQBbAAAAAAEAHQAAAAADAHsAAAAAAAAdAAAAAAMAWwAAAAACAFsAAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAADAHsAAAAAAAAdAAAAAAMAagAAAAAAAFsAAAAAAgB7AAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAAAAFsAAAAAAAB7AAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAHQAAAAADAB0AAAAAAQAdAAAAAAMAHQAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAgBbAAAAAAAAWwAAAAABAFsAAAAAAQBbAAAAAAMAWwAAAAADAFsAAAAAAQBbAAAAAAEAWwAAAAABAFsAAAAAAwBbAAAAAAEAWwAAAAACAFsAAAAAAQBbAAAAAAIAWwAAAAACAFsAAAAAAQBbAAAAAAEAWwAAAAABAFsAAAAAAgBbAAAAAAMAWwAAAAACAFsAAAAAAABbAAAAAAMAWwAAAAABAFsAAAAAAwBbAAAAAAMAWwAAAAAAAFsAAAAAAQBbAAAAAAAAWwAAAAACAFsAAAAAAABbAAAAAAIAWwAAAAABAFsAAAAAAQBbAAAAAAMAWwAAAAAAAFsAAAAAAwBbAAAAAAEAWwAAAAAAAFsAAAAAAAB7AAAAAAAAWwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAgB7AAAAAAAAWwAAAAAAAFsAAAAAAgBbAAAAAAMAWwAAAAACAFsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAQB7AAAAAAAAewAAAAAAAFsAAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAEAewAAAAAAAFsAAAAAAgBbAAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAAAWwAAAAADAFsAAAAAAQBbAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAABbAAAAAAMAWwAAAAACAA== version: 7 2,-2: ind: 2,-2 - tiles: WwAAAAABAHsAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAFsAAAAAAAB7AAAAAAAAagAAAAAAAAYAAAAAAQBqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAEAAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAIAWwAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAABAFsAAAAAAwBbAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAgBqAAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAIAWwAAAAADAGoAAAAAAAAdAAAAAAMATQAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAA== + tiles: WwAAAAACAHsAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAFsAAAAAAgB7AAAAAAAAagAAAAAAAAYAAAAAAQBqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAEAAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAADAHsAAAAAAABbAAAAAAMAWwAAAAADAFsAAAAAAABbAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAgBqAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAMAWwAAAAABAGoAAAAAAAAdAAAAAAIATQAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAA== version: 7 2,-3: ind: 2,-3 - tiles: ewAAAAAAAGoAAAAAAABbAAAAAAEAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAACAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAYAAAAAAQAGAAAAAAIAHQAAAAADAHsAAAAAAABrAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAB0AAAAAAwB7AAAAAAAAawAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAEAewAAAAAAAFsAAAAAAgBqAAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAHQAAAAABAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAEAWwAAAAAAAFsAAAAAAgBbAAAAAAIAWwAAAAAAAFsAAAAAAABbAAAAAAEAWwAAAAABAHsAAAAAAAAdAAAAAAEAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAABbAAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAABAFsAAAAAAgBbAAAAAAMAWwAAAAADAFsAAAAAAwB7AAAAAAAAHQAAAAADAHsAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAWwAAAAADAHsAAAAAAABbAAAAAAIAWwAAAAABAGsAAAAAAABrAAAAAAAAawAAAAAAAGsAAAAAAABrAAAAAAAAewAAAAAAAB0AAAAAAwB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAABrAAAAAAAAawAAAAAAAHsAAAAAAABrAAAAAAAAawAAAAAAAGsAAAAAAABrAAAAAAAAawAAAAAAAHsAAAAAAABbAAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAADAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAFsAAAAAAgB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAEAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAWwAAAAADAHsAAAAAAABqAAAAAAAABgAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAA== + tiles: ewAAAAAAAGoAAAAAAABbAAAAAAIAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAHQAAAAABAHsAAAAAAABrAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAB0AAAAAAQB7AAAAAAAAawAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAAdAAAAAAMAewAAAAAAAFsAAAAAAgBqAAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAHQAAAAADAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAEAWwAAAAACAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAQBbAAAAAAEAWwAAAAABAHsAAAAAAAAdAAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAABbAAAAAAMAewAAAAAAAFsAAAAAAQBbAAAAAAEAWwAAAAAAAFsAAAAAAwBbAAAAAAIAWwAAAAADAFsAAAAAAgB7AAAAAAAAHQAAAAADAHsAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAWwAAAAACAHsAAAAAAABbAAAAAAIAWwAAAAACAGsAAAAAAABrAAAAAAAAawAAAAAAAGsAAAAAAABrAAAAAAAAewAAAAAAAB0AAAAAAgB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAABrAAAAAAAAawAAAAAAAHsAAAAAAABrAAAAAAAAawAAAAAAAGsAAAAAAABrAAAAAAAAawAAAAAAAHsAAAAAAABbAAAAAAIAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAABAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAFsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAEAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAWwAAAAADAHsAAAAAAABqAAAAAAAABgAAAAADAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAA== version: 7 1,1: ind: 1,1 - tiles: eAAAAAABAHsAAAAAAAAFAAAAAAEAewAAAAAAAHsAAAAAAABbAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAABbAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAwB7AAAAAAAABQAAAAABAFsAAAAAAABbAAAAAAIAWwAAAAABAHsAAAAAAAAIAAAAAAAACAAAAAAAAB0AAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAWwAAAAABAFsAAAAAAgBbAAAAAAEAewAAAAAAAAUAAAAAAQBbAAAAAAIAWwAAAAAAAFsAAAAAAQB7AAAAAAAACAAAAAAAAAgAAAAAAAAdAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAQBbAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAMAWwAAAAACAFsAAAAAAQBbAAAAAAIAWwAAAAAAAFsAAAAAAABbAAAAAAMAWwAAAAABAFsAAAAAAABbAAAAAAIAWwAAAAABAHsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAMAWwAAAAAAAFsAAAAAAQBbAAAAAAAAWwAAAAADAFsAAAAAAwBbAAAAAAIAWwAAAAABAFsAAAAAAQBbAAAAAAEAWwAAAAADAFsAAAAAAgB7AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAIAWwAAAAABAFsAAAAAAABbAAAAAAMAWwAAAAACAFsAAAAAAwBbAAAAAAAAWwAAAAABAFsAAAAAAABbAAAAAAEAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAgBbAAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAMAWwAAAAACAFsAAAAAAwBbAAAAAAIAWwAAAAADAHsAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAgBbAAAAAAAAWwAAAAACAHsAAAAAAABbAAAAAAMAWwAAAAACAFsAAAAAAgBbAAAAAAMAWwAAAAAAAFsAAAAAAwBrAAAAAAAAHQAAAAAAAAUAAAAAAAAFAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAABAFsAAAAAAABbAAAAAAIAWwAAAAACAFsAAAAAAABbAAAAAAAAewAAAAAAAB0AAAAAAgAdAAAAAAAAHQAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAIAWwAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAgBrAAAAAAAAHQAAAAAAAB0AAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAQBbAAAAAAAAawAAAAAAAB0AAAAAAQAdAAAAAAAAawAAAAAAAHsAAAAAAAB4AAAAAAIAeAAAAAACAHgAAAAAAgB4AAAAAAMAeAAAAAAAAHgAAAAAAAB4AAAAAAEAeAAAAAAAAFsAAAAAAQBbAAAAAAIAWwAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAgB4AAAAAAIAeAAAAAAAAHgAAAAAAAB4AAAAAAIAeAAAAAADAHgAAAAAAABbAAAAAAAAWwAAAAADAFsAAAAAAwB7AAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAewAAAAAAAHgAAAAAAgB4AAAAAAIAeAAAAAACAHgAAAAAAAB4AAAAAAMAeAAAAAACAHgAAAAAAAB4AAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAA== + tiles: eAAAAAADAHsAAAAAAAAFAAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAABbAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAwB7AAAAAAAABQAAAAADAFsAAAAAAwBbAAAAAAMAWwAAAAACAHsAAAAAAAAIAAAAAAAACAAAAAAAAB0AAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAWwAAAAAAAFsAAAAAAQBbAAAAAAMAewAAAAAAAAUAAAAAAwBbAAAAAAMAWwAAAAADAFsAAAAAAQB7AAAAAAAACAAAAAAAAAgAAAAAAAAdAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAQBbAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAgBbAAAAAAAAWwAAAAACAFsAAAAAAQBbAAAAAAMAWwAAAAADAFsAAAAAAwBbAAAAAAMAWwAAAAADAFsAAAAAAwBbAAAAAAMAWwAAAAACAHsAAAAAAABbAAAAAAIAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAADAFsAAAAAAgBbAAAAAAMAWwAAAAAAAFsAAAAAAwBbAAAAAAIAWwAAAAAAAFsAAAAAAgBbAAAAAAEAWwAAAAABAFsAAAAAAwB7AAAAAAAAHQAAAAABAB0AAAAAAwAdAAAAAAEAewAAAAAAAFsAAAAAAgBbAAAAAAMAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAIAWwAAAAABAFsAAAAAAABbAAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAADAFsAAAAAAwBbAAAAAAMAewAAAAAAAFsAAAAAAgBbAAAAAAMAWwAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAABAHsAAAAAAAAdAAAAAAMAHQAAAAACAB0AAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAQBbAAAAAAEAWwAAAAACAHsAAAAAAABbAAAAAAEAWwAAAAACAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAQBrAAAAAAAAHQAAAAACAAUAAAAAAQAFAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAgBbAAAAAAMAewAAAAAAAB0AAAAAAAAdAAAAAAMAHQAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAMAWwAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAgBrAAAAAAAAHQAAAAACAB0AAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAwBbAAAAAAMAawAAAAAAAB0AAAAAAwAdAAAAAAEAawAAAAAAAHsAAAAAAAB4AAAAAAMAeAAAAAACAHgAAAAAAQB4AAAAAAEAeAAAAAADAHgAAAAAAgB4AAAAAAIAeAAAAAAAAFsAAAAAAQBbAAAAAAAAWwAAAAAAAHsAAAAAAAAdAAAAAAMAHQAAAAACAHsAAAAAAAB7AAAAAAAAeAAAAAACAHgAAAAAAAB4AAAAAAIAeAAAAAABAHgAAAAAAgB4AAAAAAMAeAAAAAACAHgAAAAAAQBbAAAAAAAAWwAAAAADAFsAAAAAAgB7AAAAAAAAWwAAAAABAFsAAAAAAwBbAAAAAAIAewAAAAAAAHgAAAAAAwB4AAAAAAAAeAAAAAADAHgAAAAAAAB4AAAAAAAAeAAAAAACAHgAAAAAAgB4AAAAAAEAWwAAAAADAFsAAAAAAwBbAAAAAAIAewAAAAAAAFsAAAAAAABbAAAAAAEAWwAAAAAAAA== version: 7 2,0: ind: 2,0 - tiles: WwAAAAACAFsAAAAAAgBbAAAAAAMAWwAAAAABAFsAAAAAAABbAAAAAAIAWwAAAAABAFsAAAAAAgBbAAAAAAIAWwAAAAABAFsAAAAAAgBbAAAAAAEAWwAAAAABAFsAAAAAAABbAAAAAAIAWwAAAAAAAFsAAAAAAgBbAAAAAAMAWwAAAAADAFsAAAAAAABbAAAAAAMAWwAAAAAAAFsAAAAAAwBbAAAAAAIAWwAAAAACAFsAAAAAAABbAAAAAAIAewAAAAAAAHsAAAAAAABbAAAAAAMAewAAAAAAAHsAAAAAAAAFAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAMAWwAAAAACAHsAAAAAAABuAAAAAAMAbgAAAAABAG4AAAAAAABuAAAAAAMAewAAAAAAAHsAAAAAAAA+AAAAAAAAewAAAAAAAD4AAAAAAAB7AAAAAAAAPgAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAABAFsAAAAAAAB7AAAAAAAAbgAAAAAAAG4AAAAAAABuAAAAAAEAbgAAAAACAB0AAAAAAQB7AAAAAAAAHQAAAAADAHsAAAAAAAAdAAAAAAEAewAAAAAAAD4AAAAAAAB7AAAAAAAAWwAAAAABAFsAAAAAAgBbAAAAAAEAewAAAAAAAG4AAAAAAgBuAAAAAAEAbgAAAAADAG4AAAAAAwAdAAAAAAAAewAAAAAAAB0AAAAAAQAdAAAAAAEAHQAAAAABAB0AAAAAAAAdAAAAAAEAewAAAAAAAFsAAAAAAABbAAAAAAEAWwAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAPgAAAAAAAB0AAAAAAgAdAAAAAAMAHQAAAAADAB0AAAAAAQAdAAAAAAEAHQAAAAADAHsAAAAAAABbAAAAAAEAWwAAAAAAAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAD4AAAAAAAB7AAAAAAAAHQAAAAAAAB0AAAAAAQAdAAAAAAEAHQAAAAAAAB0AAAAAAAAdAAAAAAIAWwAAAAABAFsAAAAAAABbAAAAAAEAawAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAGoAAAAAAAA+AAAAAAAAewAAAAAAAB0AAAAAAwAdAAAAAAAAHQAAAAADAB0AAAAAAgAdAAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAEAWwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAADAHsAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAwAdAAAAAAMAHQAAAAACAHsAAAAAAABbAAAAAAIAWwAAAAADAFsAAAAAAgB7AAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAABbAAAAAAIAHQAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAFsAAAAAAABbAAAAAAMAWwAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAADAFsAAAAAAAB7AAAAAAAAawAAAAAAAGsAAAAAAAB7AAAAAAAAHQAAAAACAFsAAAAAAgBbAAAAAAIAWwAAAAACAFsAAAAAAABbAAAAAAIAWwAAAAACAFsAAAAAAQBbAAAAAAEAWwAAAAACAFsAAAAAAQBbAAAAAAIAWwAAAAABAFsAAAAAAwBbAAAAAAEAWwAAAAABAFsAAAAAAwBbAAAAAAEAWwAAAAABAFsAAAAAAwBbAAAAAAEAWwAAAAABAFsAAAAAAQBbAAAAAAEAWwAAAAABAFsAAAAAAQBbAAAAAAIAWwAAAAACAFsAAAAAAgBbAAAAAAMAWwAAAAABAFsAAAAAAgBbAAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAIAWwAAAAAAAFsAAAAAAwBbAAAAAAMAWwAAAAABAFsAAAAAAgBbAAAAAAMAWwAAAAADAFsAAAAAAABbAAAAAAEAWwAAAAABAFsAAAAAAABbAAAAAAEAWwAAAAACAA== + tiles: WwAAAAADAFsAAAAAAABbAAAAAAIAWwAAAAADAFsAAAAAAgBbAAAAAAAAWwAAAAACAFsAAAAAAgBbAAAAAAMAWwAAAAABAFsAAAAAAwBbAAAAAAIAWwAAAAABAFsAAAAAAwBbAAAAAAAAWwAAAAACAFsAAAAAAgBbAAAAAAEAWwAAAAABAFsAAAAAAwBbAAAAAAMAWwAAAAABAFsAAAAAAQBbAAAAAAEAWwAAAAADAFsAAAAAAgBbAAAAAAMAewAAAAAAAHsAAAAAAABbAAAAAAIAewAAAAAAAHsAAAAAAAAFAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAMAWwAAAAACAHsAAAAAAABuAAAAAAIAbgAAAAAAAG4AAAAAAQBuAAAAAAEAewAAAAAAAHsAAAAAAAA+AAAAAAAAewAAAAAAAD4AAAAAAAB7AAAAAAAAPgAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAAB7AAAAAAAAbgAAAAAAAG4AAAAAAgBuAAAAAAIAbgAAAAACAB0AAAAAAAB7AAAAAAAAHQAAAAADAHsAAAAAAAAdAAAAAAEAewAAAAAAAD4AAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAABbAAAAAAAAewAAAAAAAG4AAAAAAQBuAAAAAAMAbgAAAAADAG4AAAAAAQAdAAAAAAMAewAAAAAAAB0AAAAAAQAdAAAAAAMAHQAAAAADAB0AAAAAAgAdAAAAAAMAewAAAAAAAFsAAAAAAwBbAAAAAAAAWwAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAPgAAAAAAAB0AAAAAAwAdAAAAAAIAHQAAAAABAB0AAAAAAgAdAAAAAAAAHQAAAAACAHsAAAAAAABbAAAAAAMAWwAAAAADAFsAAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAD4AAAAAAAB7AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAMAHQAAAAABAB0AAAAAAAAdAAAAAAEAWwAAAAAAAFsAAAAAAQBbAAAAAAEAawAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAGoAAAAAAAA+AAAAAAAAewAAAAAAAB0AAAAAAgAdAAAAAAEAHQAAAAADAB0AAAAAAQAdAAAAAAEAewAAAAAAAFsAAAAAAgBbAAAAAAMAWwAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAAAAHsAAAAAAAAdAAAAAAEAHQAAAAADAB0AAAAAAQAdAAAAAAEAHQAAAAADAHsAAAAAAABbAAAAAAEAWwAAAAACAFsAAAAAAQB7AAAAAAAAWwAAAAACAFsAAAAAAQBbAAAAAAMAWwAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAHQAAAAADAFsAAAAAAwBbAAAAAAIAWwAAAAADAFsAAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAFsAAAAAAABbAAAAAAMAWwAAAAABAHsAAAAAAABbAAAAAAAAWwAAAAADAFsAAAAAAQBbAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAABAFsAAAAAAwB7AAAAAAAAawAAAAAAAGsAAAAAAAB7AAAAAAAAHQAAAAADAFsAAAAAAQBbAAAAAAIAWwAAAAADAFsAAAAAAQBbAAAAAAIAWwAAAAAAAFsAAAAAAgBbAAAAAAIAWwAAAAAAAFsAAAAAAgBbAAAAAAMAWwAAAAADAFsAAAAAAQBbAAAAAAIAWwAAAAACAFsAAAAAAQBbAAAAAAMAWwAAAAABAFsAAAAAAABbAAAAAAEAWwAAAAABAFsAAAAAAABbAAAAAAEAWwAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAACAFsAAAAAAQBbAAAAAAAAWwAAAAADAFsAAAAAAwBbAAAAAAMAWwAAAAABAFsAAAAAAgBbAAAAAAIAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAABAFsAAAAAAgBbAAAAAAMAWwAAAAADAFsAAAAAAwBbAAAAAAEAWwAAAAAAAFsAAAAAAQBbAAAAAAIAWwAAAAACAA== version: 7 2,-1: ind: 2,-1 - tiles: WwAAAAACAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAIATQAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAHQAAAAACAE0AAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAAAWwAAAAADAFsAAAAAAQBbAAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAIAWwAAAAADAFsAAAAAAgBbAAAAAAAAWwAAAAACAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAGoAAAAAAAAdAAAAAAIAWwAAAAADAFsAAAAAAwBbAAAAAAAAWwAAAAACAFsAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAMAewAAAAAAAC8AAAAAAAAvAAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAAAWwAAAAABAFsAAAAAAQBbAAAAAAEAeAAAAAACAHgAAAAAAwB4AAAAAAMAewAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAABAHsAAAAAAAAvAAAAAAAALwAAAAAAAHsAAAAAAAAdAAAAAAEAHQAAAAABAB0AAAAAAQAdAAAAAAMAewAAAAAAAB0AAAAAAwAdAAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAALwAAAAAAAC8AAAAAAAAOAAAAAAAADgAAAAADAA4AAAAAAwAOAAAAAAIADgAAAAABAB0AAAAAAwAdAAAAAAIAHQAAAAABAB0AAAAAAgBbAAAAAAMAWwAAAAACAFsAAAAAAABbAAAAAAEAWwAAAAAAAFsAAAAAAABbAAAAAAAADgAAAAABAA4AAAAAAwAOAAAAAAIADgAAAAACAA4AAAAAAgAdAAAAAAAAHQAAAAAAAB0AAAAAAAB7AAAAAAAAWwAAAAABADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAWwAAAAABAA4AAAAAAQAOAAAAAAMADgAAAAACAA4AAAAAAgAOAAAAAAIAHQAAAAACAB0AAAAAAgAdAAAAAAMAewAAAAAAAFsAAAAAAwA6AAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAMAOgAAAAAAAFsAAAAAAQAOAAAAAAMADgAAAAACAA4AAAAAAQAOAAAAAAIADgAAAAAAAB0AAAAAAgAdAAAAAAIAHQAAAAABAHsAAAAAAABbAAAAAAAAOgAAAAAAAB0AAAAAAQAdAAAAAAMAHQAAAAAAADoAAAAAAABbAAAAAAMADgAAAAACAA4AAAAAAgAOAAAAAAMADgAAAAABAA4AAAAAAgAdAAAAAAMAHQAAAAADAB0AAAAAAQB7AAAAAAAAWwAAAAACADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAWwAAAAAAAA4AAAAAAgAOAAAAAAIADgAAAAACAA4AAAAAAAAOAAAAAAMAewAAAAAAAB0AAAAAAQAdAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAQB7AAAAAAAAOgAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAADAHsAAAAAAABbAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAEAWwAAAAAAAFsAAAAAAQBbAAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAEAWwAAAAADAFsAAAAAAwBbAAAAAAAAWwAAAAACAFsAAAAAAgBbAAAAAAIAWwAAAAADAFsAAAAAAgBbAAAAAAIAWwAAAAACAFsAAAAAAgBbAAAAAAMAWwAAAAAAAA== + tiles: WwAAAAABAFsAAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAIATQAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAEAewAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAHQAAAAACAE0AAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAADAFsAAAAAAQBbAAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAAAAFsAAAAAAgBbAAAAAAIAWwAAAAACAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAGoAAAAAAAAdAAAAAAMAWwAAAAACAFsAAAAAAwBbAAAAAAMAWwAAAAACAFsAAAAAAwB4AAAAAAAAeAAAAAABAHgAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAABbAAAAAAEAewAAAAAAAC8AAAAAAAAvAAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAMAWwAAAAABAFsAAAAAAABbAAAAAAIAeAAAAAADAHgAAAAAAgB4AAAAAAIAewAAAAAAAFsAAAAAAgBbAAAAAAAAWwAAAAADAHsAAAAAAAAvAAAAAAAALwAAAAAAAHsAAAAAAAAdAAAAAAMAHQAAAAACAB0AAAAAAgAdAAAAAAEAewAAAAAAAB0AAAAAAQAdAAAAAAIAewAAAAAAAHsAAAAAAABbAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAALwAAAAAAAC8AAAAAAAAOAAAAAAIADgAAAAADAA4AAAAAAQAOAAAAAAIADgAAAAADAB0AAAAAAAAdAAAAAAAAHQAAAAADAB0AAAAAAwBbAAAAAAEAWwAAAAACAFsAAAAAAwBbAAAAAAAAWwAAAAABAFsAAAAAAABbAAAAAAMADgAAAAABAA4AAAAAAAAOAAAAAAIADgAAAAAAAA4AAAAAAgAdAAAAAAIAHQAAAAADAB0AAAAAAQB7AAAAAAAAWwAAAAABADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAWwAAAAADAA4AAAAAAwAOAAAAAAIADgAAAAAAAA4AAAAAAwAOAAAAAAMAHQAAAAABAB0AAAAAAQAdAAAAAAIAewAAAAAAAFsAAAAAAAA6AAAAAAAAWwAAAAACAFsAAAAAAABbAAAAAAMAOgAAAAAAAFsAAAAAAwAOAAAAAAMADgAAAAACAA4AAAAAAwAOAAAAAAMADgAAAAAAAB0AAAAAAQAdAAAAAAIAHQAAAAADAHsAAAAAAABbAAAAAAIAOgAAAAAAAB0AAAAAAwAdAAAAAAIAHQAAAAAAADoAAAAAAABbAAAAAAAADgAAAAABAA4AAAAAAQAOAAAAAAEADgAAAAAAAA4AAAAAAwAdAAAAAAEAHQAAAAACAB0AAAAAAwB7AAAAAAAAWwAAAAABADoAAAAAAAA6AAAAAAAAOgAAAAAAADoAAAAAAAA6AAAAAAAAWwAAAAABAA4AAAAAAQAOAAAAAAIADgAAAAABAA4AAAAAAAAOAAAAAAEAewAAAAAAAB0AAAAAAwAdAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAgB7AAAAAAAAOgAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAACAHsAAAAAAABbAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAMAWwAAAAAAAFsAAAAAAwBbAAAAAAEAWwAAAAABAFsAAAAAAQBbAAAAAAAAWwAAAAAAAFsAAAAAAgBbAAAAAAAAWwAAAAACAFsAAAAAAgBbAAAAAAIAWwAAAAADAFsAAAAAAgBbAAAAAAIAWwAAAAABAFsAAAAAAQBbAAAAAAIAWwAAAAABAFsAAAAAAwBbAAAAAAIAWwAAAAAAAA== version: 7 1,-4: ind: 1,-4 @@ -140,7 +140,7 @@ entities: version: 7 2,-4: ind: 2,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAEAAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAIAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAA== version: 7 0,-4: ind: 0,-4 @@ -156,75 +156,75 @@ entities: version: 7 3,-1: ind: 3,-1 - tiles: ewAAAAAAAAMAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAYgAAAAAAAGIAAAAAAABiAAAAAAAAYgAAAAAAAHsAAAAAAAB4AAAAAAIAeAAAAAAAAHgAAAAAAQB4AAAAAAMAeAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGIAAAAAAABiAAAAAAAAYgAAAAAAAGIAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABiAAAAAAAAYgAAAAAAAGIAAAAAAABiAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAIAWwAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAG4AAAAAAwBuAAAAAAIAbgAAAAAAAG4AAAAAAQBuAAAAAAAAewAAAAAAAG4AAAAAAQBuAAAAAAMAbgAAAAAAAG4AAAAAAwB7AAAAAAAAWwAAAAACAFsAAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAMAbgAAAAADAG4AAAAAAQBuAAAAAAAAbgAAAAADAHsAAAAAAABuAAAAAAMAbgAAAAACAG4AAAAAAwBuAAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAbgAAAAACAG4AAAAAAABuAAAAAAAAbgAAAAACAG4AAAAAAwB7AAAAAAAAbgAAAAADAG4AAAAAAQBuAAAAAAAAbgAAAAAAAHsAAAAAAABuAAAAAAEAbgAAAAACAG4AAAAAAABuAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAbgAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAbgAAAAACAG4AAAAAAABuAAAAAAIAbgAAAAAAAG4AAAAAAgB7AAAAAAAAbgAAAAADAG4AAAAAAwBuAAAAAAIAewAAAAAAAG4AAAAAAgBuAAAAAAIAbgAAAAABAG4AAAAAAwB7AAAAAAAAewAAAAAAAG4AAAAAAgBuAAAAAAMAbgAAAAADAG4AAAAAAwBuAAAAAAEAbgAAAAADAG4AAAAAAgBuAAAAAAAAbgAAAAAAAG4AAAAAAQBuAAAAAAAAbgAAAAAAAG4AAAAAAQBuAAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAEAbgAAAAADAG4AAAAAAgBuAAAAAAAAbgAAAAACAG4AAAAAAABuAAAAAAAAbgAAAAADAG4AAAAAAwBuAAAAAAEAbgAAAAADAG4AAAAAAwBuAAAAAAEAbgAAAAADAFAAAAAAAAB7AAAAAAAAbgAAAAACAG4AAAAAAwBuAAAAAAMAbgAAAAABAG4AAAAAAQBuAAAAAAMAbgAAAAACAG4AAAAAAQBuAAAAAAAAewAAAAAAAG4AAAAAAABuAAAAAAAAbgAAAAAAAG4AAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAMAewAAAAAAAG4AAAAAAABuAAAAAAMAewAAAAAAAG4AAAAAAwBuAAAAAAMAbgAAAAABAHsAAAAAAABuAAAAAAIAbgAAAAADAG4AAAAAAwBuAAAAAAEAewAAAAAAAHsAAAAAAABuAAAAAAEAbgAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAIAbgAAAAABAG4AAAAAAgBuAAAAAAEAbgAAAAAAAG4AAAAAAgBuAAAAAAAAbgAAAAADAHsAAAAAAABuAAAAAAAAbgAAAAABAG4AAAAAAABuAAAAAAAAbgAAAAACAG4AAAAAAQBuAAAAAAEAbgAAAAAAAG4AAAAAAQAdAAAAAAEAHQAAAAACAB0AAAAAAAAdAAAAAAMAHQAAAAACAG4AAAAAAgB7AAAAAAAAbgAAAAACAG4AAAAAAQBuAAAAAAIAbgAAAAAAAG4AAAAAAwB7AAAAAAAAbgAAAAABAG4AAAAAAABuAAAAAAMAHQAAAAAAAB0AAAAAAgAdAAAAAAMAHQAAAAADAB0AAAAAAQBuAAAAAAAAewAAAAAAAA== + tiles: ewAAAAAAAAMAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAYgAAAAADAGIAAAAAAgBiAAAAAAIAYgAAAAAAAHsAAAAAAAB4AAAAAAIAeAAAAAAAAHgAAAAAAwB4AAAAAAEAeAAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGIAAAAAAgBiAAAAAAAAYgAAAAACAGIAAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABiAAAAAAEAYgAAAAACAGIAAAAAAABiAAAAAAIAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAIAWwAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAG4AAAAAAwBuAAAAAAAAbgAAAAABAG4AAAAAAgBuAAAAAAMAewAAAAAAAG4AAAAAAgBuAAAAAAEAbgAAAAABAG4AAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAMAbgAAAAACAG4AAAAAAgBuAAAAAAMAbgAAAAADAHsAAAAAAABuAAAAAAMAbgAAAAADAG4AAAAAAwBuAAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAbgAAAAADAG4AAAAAAABuAAAAAAIAbgAAAAAAAG4AAAAAAwB7AAAAAAAAbgAAAAACAG4AAAAAAABuAAAAAAAAbgAAAAADAHsAAAAAAABuAAAAAAAAbgAAAAACAG4AAAAAAwBuAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAbgAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAbgAAAAAAAG4AAAAAAABuAAAAAAMAbgAAAAAAAG4AAAAAAwB7AAAAAAAAbgAAAAACAG4AAAAAAABuAAAAAAEAewAAAAAAAG4AAAAAAwBuAAAAAAEAbgAAAAADAG4AAAAAAwB7AAAAAAAAewAAAAAAAG4AAAAAAwBuAAAAAAIAbgAAAAAAAG4AAAAAAABuAAAAAAEAbgAAAAADAG4AAAAAAABuAAAAAAMAbgAAAAAAAG4AAAAAAgBuAAAAAAMAbgAAAAACAG4AAAAAAQBuAAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAMAbgAAAAADAG4AAAAAAQBuAAAAAAIAbgAAAAACAG4AAAAAAQBuAAAAAAEAbgAAAAACAG4AAAAAAgBuAAAAAAAAbgAAAAACAG4AAAAAAABuAAAAAAIAbgAAAAABAFAAAAAAAAB7AAAAAAAAbgAAAAACAG4AAAAAAwBuAAAAAAMAbgAAAAADAG4AAAAAAgBuAAAAAAMAbgAAAAABAG4AAAAAAwBuAAAAAAMAewAAAAAAAG4AAAAAAQBuAAAAAAAAbgAAAAACAG4AAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAMAewAAAAAAAG4AAAAAAwBuAAAAAAMAewAAAAAAAG4AAAAAAABuAAAAAAEAbgAAAAAAAHsAAAAAAABuAAAAAAMAbgAAAAADAG4AAAAAAQBuAAAAAAMAewAAAAAAAHsAAAAAAABuAAAAAAEAbgAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAAAbgAAAAABAG4AAAAAAwBuAAAAAAEAbgAAAAAAAG4AAAAAAgBuAAAAAAMAbgAAAAADAHsAAAAAAABuAAAAAAMAbgAAAAABAG4AAAAAAwBuAAAAAAMAbgAAAAAAAG4AAAAAAwBuAAAAAAAAbgAAAAADAG4AAAAAAAAdAAAAAAIAHQAAAAADAB0AAAAAAAAdAAAAAAIAHQAAAAABAG4AAAAAAgB7AAAAAAAAbgAAAAABAG4AAAAAAwBuAAAAAAIAbgAAAAACAG4AAAAAAQB7AAAAAAAAbgAAAAACAG4AAAAAAABuAAAAAAAAHQAAAAABAB0AAAAAAwAdAAAAAAIAHQAAAAADAB0AAAAAAgBuAAAAAAMAewAAAAAAAA== version: 7 3,-2: ind: 3,-2 - tiles: TQAAAAAAAE0AAAAAAABNAAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAAMAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB4AAAAAAEAeAAAAAABAHgAAAAAAgB7AAAAAAAAeAAAAAAAAA== + tiles: TQAAAAAAAE0AAAAAAABNAAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE0AAAAAAABNAAAAAAAATQAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATQAAAAAAAE0AAAAAAABNAAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAAMAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB4AAAAAAMAeAAAAAACAHgAAAAAAAB7AAAAAAAAeAAAAAABAA== version: 7 0,2: ind: 0,2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAACAFsAAAAAAgBbAAAAAAMAWwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAwBbAAAAAAIAWwAAAAACAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAHQAAAAABAB0AAAAAAAAdAAAAAAIAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAACAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAABbAAAAAAMAWwAAAAACAFsAAAAAAwAAAAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAYgAAAAAAAGIAAAAAAABiAAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAgBbAAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAGIAAAAAAABiAAAAAAAAYgAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAMAHQAAAAADAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHsAAAAAAABiAAAAAAAAYgAAAAAAAGIAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB7AAAAAAAAYgAAAAAAAGIAAAAAAABiAAAAAAAAewAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAHQAAAAAAAB0AAAAAAgAdAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAB0AAAAAAQAdAAAAAAMAHQAAAAACAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAADAFsAAAAAAQBbAAAAAAIAWwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAwBbAAAAAAAAWwAAAAAAAFsAAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAHQAAAAAAAB0AAAAAAwAdAAAAAAEAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAAAWwAAAAACAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAABbAAAAAAMAWwAAAAACAFsAAAAAAgAAAAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAYgAAAAABAGIAAAAAAABiAAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAWwAAAAABAFsAAAAAAwBbAAAAAAMAAAAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAGIAAAAAAgBiAAAAAAMAYgAAAAACAHsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAB0AAAAAAQAdAAAAAAMAHQAAAAACAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHsAAAAAAABiAAAAAAIAYgAAAAAAAGIAAAAAAwB7AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAAdAAAAAAIAHQAAAAADAB0AAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB7AAAAAAAAYgAAAAABAGIAAAAAAABiAAAAAAAAewAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAHQAAAAADAB0AAAAAAwAdAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAMAHQAAAAACAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAA== version: 7 1,2: ind: 1,2 - tiles: ewAAAAAAAHgAAAAAAwB4AAAAAAMAeAAAAAABAHgAAAAAAAB4AAAAAAEAeAAAAAADAHgAAAAAAAB4AAAAAAAAWwAAAAACAFsAAAAAAABbAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB4AAAAAAMAeAAAAAADAHgAAAAAAAB4AAAAAAEAeAAAAAACAHgAAAAAAAB4AAAAAAIAeAAAAAAAAFsAAAAAAgBbAAAAAAIAWwAAAAACAFsAAAAAAABbAAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAIAWwAAAAACAFsAAAAAAgBbAAAAAAMAWwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAMAWwAAAAAAAFsAAAAAAwBbAAAAAAAAWwAAAAADAFsAAAAAAgBbAAAAAAMAWwAAAAAAAFsAAAAAAgBbAAAAAAMAWwAAAAAAAFsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAEAWwAAAAACAFsAAAAAAABbAAAAAAIAWwAAAAABAFsAAAAAAgBbAAAAAAAAWwAAAAABAFsAAAAAAABbAAAAAAIAWwAAAAABAFsAAAAAAABbAAAAAAAAewAAAAAAAFsAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAwBbAAAAAAEAWwAAAAABAFsAAAAAAQBbAAAAAAAAWwAAAAABAFsAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAABbAAAAAAAAWwAAAAAAAHsAAAAAAABbAAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAQB7AAAAAAAAHQAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAIAHQAAAAADAB0AAAAAAgB7AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAACAB0AAAAAAQB7AAAAAAAAeAAAAAAAAHgAAAAAAQB7AAAAAAAAHQAAAAACAB0AAAAAAQAdAAAAAAEAewAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAB7AAAAAAAAHQAAAAACAB0AAAAAAAAdAAAAAAIAewAAAAAAAHgAAAAAAAB4AAAAAAEAewAAAAAAAB0AAAAAAQA2AAAAAAAAHQAAAAAAAHsAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAAAAB0AAAAAAwAdAAAAAAIAHQAAAAAAAHsAAAAAAAB4AAAAAAAAeAAAAAAAAHsAAAAAAAAdAAAAAAMANgAAAAAAAB0AAAAAAgB7AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAADAB0AAAAAAwB7AAAAAAAAeAAAAAAAAHgAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAIAHQAAAAABAHsAAAAAAAB7AAAAAAAAHQAAAAADAHsAAAAAAAAdAAAAAAAAewAAAAAAAHsAAAAAAAB4AAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAHQAAAAABAB0AAAAAAQAdAAAAAAMAHQAAAAAAAB0AAAAAAwAdAAAAAAAAHQAAAAACAB0AAAAAAgAdAAAAAAEAHQAAAAABAB0AAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAgAdAAAAAAEAHQAAAAADAB0AAAAAAwAdAAAAAAMAHQAAAAADAB0AAAAAAAAdAAAAAAEAHQAAAAACAB0AAAAAAQAAAAAAAAAAegAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAADAB0AAAAAAQAdAAAAAAEAHQAAAAABAB0AAAAAAQAdAAAAAAMAHQAAAAACAB0AAAAAAAAdAAAAAAAAHQAAAAACAB0AAAAAAQAdAAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAABAB0AAAAAAgAdAAAAAAEAHQAAAAACAB0AAAAAAQAdAAAAAAEAHQAAAAABAB0AAAAAAAAdAAAAAAAAHQAAAAABAA== + tiles: ewAAAAAAAHgAAAAAAwB4AAAAAAAAeAAAAAADAHgAAAAAAAB4AAAAAAEAeAAAAAACAHgAAAAAAAB4AAAAAAEAWwAAAAABAFsAAAAAAABbAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB4AAAAAAAAeAAAAAABAHgAAAAAAwB4AAAAAAMAeAAAAAADAHgAAAAAAAB4AAAAAAEAeAAAAAADAFsAAAAAAgBbAAAAAAEAWwAAAAADAFsAAAAAAQBbAAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAABAFsAAAAAAgBbAAAAAAAAWwAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAMAWwAAAAABAFsAAAAAAgBbAAAAAAIAWwAAAAAAAFsAAAAAAABbAAAAAAMAWwAAAAADAFsAAAAAAABbAAAAAAIAWwAAAAADAFsAAAAAAgB7AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAADAFsAAAAAAgBbAAAAAAMAWwAAAAACAFsAAAAAAABbAAAAAAEAWwAAAAACAFsAAAAAAwBbAAAAAAIAWwAAAAADAFsAAAAAAwBbAAAAAAIAewAAAAAAAFsAAAAAAgB7AAAAAAAAWwAAAAACAFsAAAAAAgBbAAAAAAAAWwAAAAADAFsAAAAAAABbAAAAAAMAWwAAAAAAAFsAAAAAAgBbAAAAAAEAWwAAAAAAAFsAAAAAAwBbAAAAAAIAWwAAAAACAHsAAAAAAABbAAAAAAEAewAAAAAAAHsAAAAAAAAdAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAwB7AAAAAAAAHQAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAIAHQAAAAABAB0AAAAAAgB7AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHsAAAAAAAAdAAAAAAMAHQAAAAACAB0AAAAAAAB7AAAAAAAAeAAAAAACAHgAAAAAAwB7AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAEAewAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAB7AAAAAAAAHQAAAAABAB0AAAAAAAAdAAAAAAMAewAAAAAAAHgAAAAAAAB4AAAAAAMAewAAAAAAAB0AAAAAAAA2AAAAAAAAHQAAAAAAAHsAAAAAAAA+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAHQAAAAABAB0AAAAAAQAdAAAAAAMAHQAAAAAAAHsAAAAAAAB4AAAAAAMAeAAAAAACAHsAAAAAAAAdAAAAAAMANgAAAAAAAB0AAAAAAwB7AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAHsAAAAAAAAdAAAAAAMAHQAAAAACAB0AAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAIAHQAAAAADAHsAAAAAAAB7AAAAAAAAHQAAAAAAAHsAAAAAAAAdAAAAAAMAewAAAAAAAHsAAAAAAAB4AAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAHQAAAAABAB0AAAAAAwAdAAAAAAMAHQAAAAABAB0AAAAAAAAdAAAAAAIAHQAAAAABAB0AAAAAAAAdAAAAAAIAHQAAAAADAB0AAAAAAQB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAB0AAAAAAQAdAAAAAAMAHQAAAAADAB0AAAAAAwAdAAAAAAEAHQAAAAAAAB0AAAAAAQAdAAAAAAEAHQAAAAADAB0AAAAAAQAdAAAAAAMAHQAAAAABAB0AAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAQAdAAAAAAMAHQAAAAAAAB0AAAAAAgAdAAAAAAMAHQAAAAAAAB0AAAAAAAAdAAAAAAIAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAABAB0AAAAAAAAdAAAAAAMAHQAAAAADAB0AAAAAAAAdAAAAAAMAHQAAAAABAB0AAAAAAAAdAAAAAAIAHQAAAAAAAA== version: 7 2,1: ind: 2,1 - tiles: ewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAIAWwAAAAACAB0AAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAB7AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAHQAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAAAAHsAAAAAAABbAAAAAAIAWwAAAAADAFsAAAAAAgAdAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAewAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAB0AAAAAAAB7AAAAAAAAHQAAAAAAAB0AAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAQBbAAAAAAEAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAawAAAAAAAB0AAAAAAAAdAAAAAAAAewAAAAAAAFsAAAAAAgB7AAAAAAAAWwAAAAACAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAawAAAAAAAFAAAAAAAABQAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHsAAAAAAABQAAAAAAAAUAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAFAAAAAAAABQAAAAAAAB0AAAAAAAB7AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAewAAAAAAAB0AAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAAAdAAAAAAAAawAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAHQAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAAAAFsAAAAAAAB7AAAAAAAAHQAAAAABAFsAAAAAAABbAAAAAAAAWwAAAAAAAB0AAAAAAAB7AAAAAAAACQAAAAAAAG4AAAAAAAAJAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAwBbAAAAAAEAewAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAewAAAAAAAG4AAAAAAABuAAAAAAAAbgAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAMAWwAAAAADAFsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAAAbgAAAAAAAG4AAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAAAWwAAAAADAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAQBbAAAAAAAAWwAAAAAAAGsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAQBbAAAAAAEAWwAAAAABAFsAAAAAAwBbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAEAWwAAAAAAAFsAAAAAAABrAAAAAAAAWwAAAAAAAA== + tiles: ewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAAAWwAAAAABAB0AAAAAAgAIAAAAAAAACAAAAAAAAAgAAAAAAAB7AAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAHQAAAAACAHsAAAAAAAAdAAAAAAIAHQAAAAACAHsAAAAAAABbAAAAAAEAWwAAAAADAFsAAAAAAAAdAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAewAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAB0AAAAAAQB7AAAAAAAAHQAAAAAAAB0AAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAgBbAAAAAAEAWwAAAAADAFsAAAAAAwBbAAAAAAEAWwAAAAAAAFsAAAAAAQBbAAAAAAAAWwAAAAAAAFsAAAAAAgBbAAAAAAEAawAAAAAAAB0AAAAAAQAdAAAAAAMAewAAAAAAAFsAAAAAAAB7AAAAAAAAWwAAAAABAFsAAAAAAQBbAAAAAAAAWwAAAAADAFsAAAAAAABbAAAAAAIAWwAAAAACAFsAAAAAAgBbAAAAAAMAWwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAAdAAAAAAMAHQAAAAABAB0AAAAAAQAdAAAAAAIACAAAAAAAAAgAAAAAAAAIAAAAAAAAHQAAAAACAB0AAAAAAAAdAAAAAAAAawAAAAAAAFAAAAAAAABQAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAB0AAAAAAQAdAAAAAAEAHQAAAAACAHsAAAAAAABQAAAAAAAAUAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAFAAAAAAEABQAAAAAAAB0AAAAAAgB7AAAAAAAAHQAAAAAAAB0AAAAAAQAdAAAAAAIAHQAAAAADAB0AAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAgB4AAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAACAB0AAAAAAwAdAAAAAAAAewAAAAAAAB0AAAAAAQBbAAAAAAAAWwAAAAADAFsAAAAAAQAdAAAAAAAAawAAAAAAAHgAAAAAAwB4AAAAAAIAeAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAAAWwAAAAACAFsAAAAAAwBbAAAAAAAAHQAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAAB7AAAAAAAAHQAAAAAAAFsAAAAAAQBbAAAAAAAAWwAAAAAAAB0AAAAAAQB7AAAAAAAACQAAAAAAAG4AAAAAAgAJAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAIAewAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAACAB0AAAAAAgAdAAAAAAIAewAAAAAAAG4AAAAAAQBuAAAAAAAAbgAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAEAWwAAAAADAFsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAIAbgAAAAADAG4AAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAMAWwAAAAABAFsAAAAAAQBbAAAAAAEAWwAAAAACAFsAAAAAAQBbAAAAAAEAWwAAAAABAFsAAAAAAABbAAAAAAMAWwAAAAACAFsAAAAAAgBbAAAAAAIAWwAAAAAAAGsAAAAAAABbAAAAAAEAWwAAAAACAFsAAAAAAQBbAAAAAAIAWwAAAAABAFsAAAAAAABbAAAAAAMAWwAAAAACAFsAAAAAAQBbAAAAAAIAWwAAAAABAFsAAAAAAABbAAAAAAEAWwAAAAAAAFsAAAAAAABrAAAAAAAAWwAAAAABAA== version: 7 2,2: ind: 2,2 - tiles: ewAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAGoAAAAAAAB7AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAABAB0AAAAAAAB7AAAAAAAATQAAAAAAAB0AAAAAAAAdAAAAAAAAewAAAAAAAFsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB7AAAAAAAAHQAAAAACAB0AAAAAAgAdAAAAAAEAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHsAAAAAAABbAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAgAdAAAAAAAAHQAAAAABAB0AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAAB7AAAAAAAAWwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAAdAAAAAAMAHQAAAAAAAB0AAAAAAAB7AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAewAAAAAAAFsAAAAAAAB7AAAAAAAAWwAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAAAAHgAAAAAAwB4AAAAAAEAewAAAAAAAFsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAAAAB0AAAAAAAB4AAAAAAEAeAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAACAHgAAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAAB7AAAAAAAADAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAGsAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAwB4AAAAAAEAeAAAAAAAAHgAAAAAAAB4AAAAAAIAewAAAAAAAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAHQAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAYgAAAAAAAB0AAAAAAAAdAAAAAAMAHQAAAAACAB0AAAAAAQB7AAAAAAAAAAAAAAAAAHsAAAAAAABiAAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAADAAAAAAAAGIAAAAAAABbAAAAAAAAewAAAAAAAFsAAAAAAAAdAAAAAAEAHQAAAAAAAB0AAAAAAAAdAAAAAAIAewAAAAAAAAAAAAAAAAB7AAAAAAAAWwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAYgAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAAAAA== + tiles: ewAAAAAAAHsAAAAAAAAdAAAAAAIAHQAAAAACAB0AAAAAAwAdAAAAAAEAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAACAGoAAAAAAAB7AAAAAAAAHQAAAAACAB0AAAAAAwAdAAAAAAMAHQAAAAABAHsAAAAAAAAdAAAAAAEAHQAAAAADAB0AAAAAAAB7AAAAAAAATQAAAAAAAB0AAAAAAQAdAAAAAAIAewAAAAAAAFsAAAAAAQB7AAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAACAB0AAAAAAgB7AAAAAAAAHQAAAAADAB0AAAAAAAAdAAAAAAAAHQAAAAACAB0AAAAAAQAdAAAAAAMAHQAAAAAAAHsAAAAAAABbAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAwAdAAAAAAAAHQAAAAABAB0AAAAAAQAdAAAAAAIAHQAAAAAAAB0AAAAAAQB7AAAAAAAAWwAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAgBqAAAAAAAAagAAAAAAAHsAAAAAAAAdAAAAAAEAHQAAAAAAAB0AAAAAAgB7AAAAAAAAHQAAAAABAB0AAAAAAgAdAAAAAAMAewAAAAAAAFsAAAAAAQB7AAAAAAAAWwAAAAADAHsAAAAAAAB7AAAAAAAAWwAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAEAHQAAAAADAHgAAAAAAgB4AAAAAAMAewAAAAAAAFsAAAAAAQB7AAAAAAAAewAAAAAAAFsAAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAAAAB0AAAAAAQB4AAAAAAIAeAAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAAB4AAAAAAIAeAAAAAAAAHgAAAAAAAB7AAAAAAAAeAAAAAABAHgAAAAAAAB7AAAAAAAADAAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAwB4AAAAAAMAeAAAAAADAGsAAAAAAAB4AAAAAAIAeAAAAAABAHgAAAAAAgB4AAAAAAAAeAAAAAADAHgAAAAAAQB4AAAAAAEAewAAAAAAAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB4AAAAAAEAeAAAAAADAHgAAAAAAwB7AAAAAAAAeAAAAAACAHgAAAAAAgB4AAAAAAAAeAAAAAAAAHgAAAAAAQB4AAAAAAMAHQAAAAABAHsAAAAAAABbAAAAAAEAWwAAAAACAHsAAAAAAAB7AAAAAAAAeAAAAAADAHgAAAAAAAB4AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAYgAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAACAB0AAAAAAwB7AAAAAAAAAAAAAAAAAHsAAAAAAABiAAAAAAMAewAAAAAAAHsAAAAAAABbAAAAAAIADAAAAAAAAGIAAAAAAQBbAAAAAAIAewAAAAAAAFsAAAAAAgAdAAAAAAAAHQAAAAADAB0AAAAAAQAdAAAAAAMAewAAAAAAAAAAAAAAAAB7AAAAAAAAWwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAEAewAAAAAAAHsAAAAAAABbAAAAAAAAYgAAAAACAHsAAAAAAABbAAAAAAIAWwAAAAAAAA== version: 7 1,3: ind: 1,3 - tiles: AAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAHQAAAAADAB0AAAAAAwAdAAAAAAIAHQAAAAADAB0AAAAAAwAdAAAAAAEAHQAAAAACAB0AAAAAAgAdAAAAAAMAHQAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAHQAAAAACAB0AAAAAAwAdAAAAAAIAHQAAAAAAAB0AAAAAAAAdAAAAAAIAHQAAAAABAB0AAAAAAQAdAAAAAAEAHQAAAAABAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 2,3: ind: 2,3 - tiles: HQAAAAADAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: HQAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 4,-1: ind: 4,-1 - tiles: ewAAAAAAAHgAAAAAAAB4AAAAAAMAeAAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB4AAAAAAAAeAAAAAACAHgAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAACAHgAAAAAAgB4AAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAGsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAewAAAAAAAG4AAAAAAgBuAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFAAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAEAbgAAAAAAAG4AAAAAAABuAAAAAAEAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAbgAAAAABAG4AAAAAAwBuAAAAAAIAbgAAAAADAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAB7AAAAAAAAHQAAAAACAB0AAAAAAQAdAAAAAAIAHQAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAG4AAAAAAABuAAAAAAEAbgAAAAABAG4AAAAAAwBQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAewAAAAAAAB0AAAAAAQAdAAAAAAIAHQAAAAACAB0AAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAEAbgAAAAACAG4AAAAAAgBuAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAHsAAAAAAAAdAAAAAAMAHQAAAAABAB0AAAAAAgAdAAAAAAEAHQAAAAABAB0AAAAAAgB7AAAAAAAAbgAAAAACAG4AAAAAAABuAAAAAAIAbgAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAABAB0AAAAAAAAdAAAAAAMAHQAAAAACAB0AAAAAAAAdAAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAMAewAAAAAAAHsAAAAAAAAdAAAAAAEAHQAAAAADAB0AAAAAAgAdAAAAAAEAewAAAAAAAB0AAAAAAwAdAAAAAAAAHQAAAAAAAB0AAAAAAQAdAAAAAAMAHQAAAAACAB0AAAAAAgB7AAAAAAAAbgAAAAABAGoAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAADAB0AAAAAAAAdAAAAAAMAewAAAAAAAG4AAAAAAgBqAAAAAAAAewAAAAAAAA== + tiles: ewAAAAAAAHgAAAAAAQB4AAAAAAAAeAAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB4AAAAAAMAeAAAAAABAHgAAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAADAHgAAAAAAwB4AAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAGsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAewAAAAAAAG4AAAAAAQBuAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFAAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAMAbgAAAAADAG4AAAAAAABuAAAAAAIAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAbgAAAAAAAG4AAAAAAgBuAAAAAAMAbgAAAAACAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAB7AAAAAAAAHQAAAAAAAB0AAAAAAwAdAAAAAAIAHQAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAG4AAAAAAABuAAAAAAAAbgAAAAACAG4AAAAAAgBQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAIAHQAAAAADAB0AAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAAAbgAAAAADAG4AAAAAAgBuAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAHsAAAAAAAAdAAAAAAMAHQAAAAACAB0AAAAAAQAdAAAAAAAAHQAAAAACAB0AAAAAAQB7AAAAAAAAbgAAAAADAG4AAAAAAQBuAAAAAAEAbgAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAADAB0AAAAAAwAdAAAAAAIAHQAAAAAAAB0AAAAAAwAdAAAAAAEAewAAAAAAAHsAAAAAAABuAAAAAAMAewAAAAAAAHsAAAAAAAAdAAAAAAEAHQAAAAAAAB0AAAAAAgAdAAAAAAEAewAAAAAAAB0AAAAAAwAdAAAAAAIAHQAAAAADAB0AAAAAAQAdAAAAAAEAHQAAAAACAB0AAAAAAgB7AAAAAAAAbgAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAIAHQAAAAAAAB0AAAAAAgAdAAAAAAMAewAAAAAAAG4AAAAAAABqAAAAAAAAewAAAAAAAA== version: 7 4,-2: ind: 4,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAwB4AAAAAAAAeAAAAAABAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAagAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAQB4AAAAAAMAeAAAAAADAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAagAAAAAAAA== version: 7 3,0: ind: 3,0 - tiles: bgAAAAABAG4AAAAAAABuAAAAAAMAbgAAAAACAG4AAAAAAwBuAAAAAAMAbgAAAAACAG4AAAAAAwBuAAAAAAMAHQAAAAABAB0AAAAAAQAdAAAAAAEAHQAAAAACAB0AAAAAAwBuAAAAAAAAbgAAAAAAAHsAAAAAAABuAAAAAAMAbgAAAAABAG4AAAAAAQB7AAAAAAAAewAAAAAAAG4AAAAAAQBuAAAAAAIAbgAAAAADAG4AAAAAAgBuAAAAAAIAbgAAAAAAAG4AAAAAAwBuAAAAAAIAbgAAAAADAG4AAAAAAQB7AAAAAAAAbgAAAAACAG4AAAAAAQBuAAAAAAEAbgAAAAAAAG4AAAAAAwBuAAAAAAEAbgAAAAAAAG4AAAAAAQBuAAAAAAEAbgAAAAADAG4AAAAAAABuAAAAAAEAbgAAAAACAG4AAAAAAwBuAAAAAAIAbgAAAAABAG4AAAAAAwBuAAAAAAEAbgAAAAACAG4AAAAAAQBuAAAAAAAAbgAAAAAAAG4AAAAAAQBuAAAAAAAAbgAAAAAAAG4AAAAAAQBuAAAAAAAAbgAAAAACAG4AAAAAAABuAAAAAAMAbgAAAAABAHsAAAAAAABuAAAAAAEAbgAAAAACAG4AAAAAAQBuAAAAAAIAbgAAAAABAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAbgAAAAACAG4AAAAAAgBuAAAAAAEAbgAAAAAAAG4AAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAQBbAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAcgAAAAAAAHIAAAAAAAByAAAAAAAAewAAAAAAAGsAAAAAAAANAAAAAAAAawAAAAAAAHsAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAHsAAAAAAABrAAAAAAAADQAAAAAAAGsAAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAewAAAAAAAFsAAAAAAABrAAAAAAAAewAAAAAAAGsAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAABrAAAAAAAAawAAAAAAAA0AAAAAAABrAAAAAAAAewAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAD4AAAAAAABbAAAAAAAAawAAAAAAAHsAAAAAAABrAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAewAAAAAAAGsAAAAAAAANAAAAAAAAawAAAAAAAHsAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAA+AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAawAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABrAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAawAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAFsAAAAAAABbAAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAA== + tiles: bgAAAAACAG4AAAAAAABuAAAAAAIAbgAAAAAAAG4AAAAAAgBuAAAAAAEAbgAAAAABAG4AAAAAAQBuAAAAAAIAHQAAAAACAB0AAAAAAQAdAAAAAAAAHQAAAAADAB0AAAAAAgBuAAAAAAAAbgAAAAADAHsAAAAAAABuAAAAAAAAbgAAAAACAG4AAAAAAAB7AAAAAAAAewAAAAAAAG4AAAAAAABuAAAAAAAAbgAAAAABAG4AAAAAAgBuAAAAAAEAbgAAAAABAG4AAAAAAABuAAAAAAIAbgAAAAAAAG4AAAAAAgB7AAAAAAAAbgAAAAADAG4AAAAAAwBuAAAAAAEAbgAAAAABAG4AAAAAAABuAAAAAAIAbgAAAAADAG4AAAAAAABuAAAAAAEAbgAAAAABAG4AAAAAAQBuAAAAAAAAbgAAAAABAG4AAAAAAwBuAAAAAAEAbgAAAAADAG4AAAAAAwBuAAAAAAMAbgAAAAABAG4AAAAAAgBuAAAAAAMAbgAAAAABAG4AAAAAAABuAAAAAAMAbgAAAAACAG4AAAAAAwBuAAAAAAAAbgAAAAABAG4AAAAAAwBuAAAAAAAAbgAAAAAAAHsAAAAAAABuAAAAAAMAbgAAAAAAAG4AAAAAAwBuAAAAAAMAbgAAAAABAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAbgAAAAACAG4AAAAAAwBuAAAAAAIAbgAAAAABAG4AAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAABAFsAAAAAAABbAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAABbAAAAAAEAcgAAAAACAHIAAAAAAQByAAAAAAMAewAAAAAAAGsAAAAAAAANAAAAAAAAawAAAAAAAHsAAAAAAAB4AAAAAAEAeAAAAAABAHgAAAAAAwB7AAAAAAAAWwAAAAABAFsAAAAAAQBbAAAAAAMAWwAAAAACAFsAAAAAAgBbAAAAAAMAWwAAAAAAAHsAAAAAAABrAAAAAAAADQAAAAAAAGsAAAAAAAB7AAAAAAAAeAAAAAACAHgAAAAAAwB4AAAAAAEAewAAAAAAAFsAAAAAAwBrAAAAAAAAewAAAAAAAGsAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAABrAAAAAAAAawAAAAAAAA0AAAAAAABrAAAAAAAAewAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAADAD4AAAAAAABbAAAAAAIAawAAAAAAAHsAAAAAAABrAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAAAewAAAAAAAGsAAAAAAAANAAAAAAEAawAAAAAAAHsAAAAAAAB4AAAAAAAAeAAAAAACAHgAAAAAAgA+AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAawAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAWwAAAAABAFsAAAAAAwBbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAACAFsAAAAAAQBbAAAAAAIAWwAAAAADAFsAAAAAAABrAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAawAAAAAAAFsAAAAAAwBbAAAAAAIAWwAAAAAAAFsAAAAAAwBMAAAAAAEATAAAAAABAEwAAAAAAABMAAAAAAIATAAAAAACAFsAAAAAAABbAAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAABAFsAAAAAAQBbAAAAAAMAWwAAAAACAFsAAAAAAQBbAAAAAAEAWwAAAAACAFsAAAAAAgBbAAAAAAMAWwAAAAADAA== version: 7 4,0: ind: 4,0 - tiles: bgAAAAACAG4AAAAAAwBuAAAAAAMAbgAAAAACAG4AAAAAAABuAAAAAAMAewAAAAAAAHsAAAAAAAAdAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAG4AAAAAAAB7AAAAAAAAewAAAAAAAG4AAAAAAgBuAAAAAAIAbgAAAAAAAG4AAAAAAwBuAAAAAAAAbgAAAAABAB0AAAAAAAAdAAAAAAIAHQAAAAACAB0AAAAAAwAdAAAAAAAAHQAAAAAAAB0AAAAAAgAdAAAAAAMAHQAAAAACAB0AAAAAAQBuAAAAAAMAbgAAAAAAAG4AAAAAAwBuAAAAAAEAbgAAAAABAG4AAAAAAwAdAAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAIAHQAAAAABAB0AAAAAAAAdAAAAAAMAHQAAAAABAB0AAAAAAwAdAAAAAAIAbgAAAAADAG4AAAAAAABuAAAAAAIAbgAAAAADAG4AAAAAAQB7AAAAAAAAewAAAAAAAG4AAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAACAB0AAAAAAgAdAAAAAAAAewAAAAAAAG4AAAAAAQBuAAAAAAIAbgAAAAADAG4AAAAAAwBuAAAAAAIAewAAAAAAAG4AAAAAAQBuAAAAAAMAbgAAAAABAG4AAAAAAABuAAAAAAMAewAAAAAAAB0AAAAAAAAdAAAAAAIAHQAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAbgAAAAACAHsAAAAAAABuAAAAAAAAbgAAAAAAAG4AAAAAAgBuAAAAAAMAbgAAAAADAHsAAAAAAAAdAAAAAAMAHQAAAAACAB0AAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAG4AAAAAAQB7AAAAAAAAbgAAAAABAG4AAAAAAwBuAAAAAAMAbgAAAAABAG4AAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAG4AAAAAAABuAAAAAAMAbgAAAAACAG4AAAAAAgBuAAAAAAEAbgAAAAACAGsAAAAAAABuAAAAAAEAbgAAAAABAHsAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAAAbgAAAAAAAG4AAAAAAwBuAAAAAAEAbgAAAAAAAG4AAAAAAAB7AAAAAAAAbgAAAAAAAG4AAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAG4AAAAAAwBuAAAAAAMAewAAAAAAAD4AAAAAAAA+AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAA+AAAAAAAAPgAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAAB7AAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAHQAAAAAAAB0AAAAAAgAdAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAewAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAB0AAAAAAwAdAAAAAAIAHQAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAWwAAAAAAAGsAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAAdAAAAAAIAHQAAAAABAB0AAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: bgAAAAACAG4AAAAAAwBuAAAAAAEAbgAAAAABAG4AAAAAAgBuAAAAAAIAewAAAAAAAHsAAAAAAAAdAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAG4AAAAAAAB7AAAAAAAAewAAAAAAAG4AAAAAAgBuAAAAAAIAbgAAAAABAG4AAAAAAgBuAAAAAAEAbgAAAAACAB0AAAAAAgAdAAAAAAEAHQAAAAACAB0AAAAAAgAdAAAAAAMAHQAAAAABAB0AAAAAAgAdAAAAAAIAHQAAAAAAAB0AAAAAAwBuAAAAAAMAbgAAAAAAAG4AAAAAAQBuAAAAAAIAbgAAAAADAG4AAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAgAdAAAAAAIAHQAAAAABAB0AAAAAAwAdAAAAAAEAHQAAAAAAAB0AAAAAAQAdAAAAAAAAbgAAAAAAAG4AAAAAAQBuAAAAAAIAbgAAAAADAG4AAAAAAgB7AAAAAAAAewAAAAAAAG4AAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAABAB0AAAAAAQAdAAAAAAIAewAAAAAAAG4AAAAAAABuAAAAAAEAbgAAAAADAG4AAAAAAwBuAAAAAAAAewAAAAAAAG4AAAAAAwBuAAAAAAAAbgAAAAABAG4AAAAAAgBuAAAAAAEAewAAAAAAAB0AAAAAAgAdAAAAAAMAHQAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAbgAAAAABAHsAAAAAAABuAAAAAAAAbgAAAAAAAG4AAAAAAABuAAAAAAIAbgAAAAADAHsAAAAAAAAdAAAAAAAAHQAAAAABAB0AAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAG4AAAAAAgB7AAAAAAAAbgAAAAAAAG4AAAAAAgBuAAAAAAAAbgAAAAAAAG4AAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAG4AAAAAAgBuAAAAAAEAbgAAAAACAG4AAAAAAQBuAAAAAAEAbgAAAAABAGsAAAAAAABuAAAAAAMAbgAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAAAbgAAAAADAG4AAAAAAwBuAAAAAAMAbgAAAAABAG4AAAAAAgB7AAAAAAAAbgAAAAABAG4AAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAG4AAAAAAwBuAAAAAAEAewAAAAAAAD4AAAAAAAA+AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAA+AAAAAAAAPgAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAwB7AAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAHQAAAAADAB0AAAAAAAAdAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAIAewAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAABAB0AAAAAAwAdAAAAAAEAHQAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAWwAAAAABAGsAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAwAdAAAAAAMAHQAAAAADAB0AAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 5,0: ind: 5,0 - tiles: ewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAQAdAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAAAAAAIAHQAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAawAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAwB7AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAwB7AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAACAHsAAAAAAAB4AAAAAAIAewAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAQB7AAAAAAAAeAAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: ewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAwAdAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAAAAAAIAHQAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAawAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAABAHsAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAADAHsAAAAAAAB4AAAAAAEAewAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAAB7AAAAAAAAeAAAAAABAHsAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 3,1: ind: 3,1 - tiles: ewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAABrAAAAAAAAawAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAAAAHsAAAAAAABuAAAAAAMAbgAAAAABABEAAAAAAAB7AAAAAAAAEQAAAAAAAG4AAAAAAABuAAAAAAIAbgAAAAABAG4AAAAAAQBuAAAAAAMAbgAAAAAAAG4AAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAIAbgAAAAACAG4AAAAAAgBuAAAAAAAAbgAAAAAAAG4AAAAAAABuAAAAAAEAbgAAAAAAAG4AAAAAAgBuAAAAAAAAbgAAAAABAG4AAAAAAwBuAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAG4AAAAAAwBuAAAAAAIAbgAAAAAAAG4AAAAAAQBuAAAAAAEAbgAAAAABAG4AAAAAAwBuAAAAAAMAbgAAAAADAG4AAAAAAwBuAAAAAAEAbgAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAIAbgAAAAADABEAAAAAAAB7AAAAAAAAEQAAAAAAAG4AAAAAAABuAAAAAAIAbgAAAAAAAG4AAAAAAwBuAAAAAAIAbgAAAAABAG4AAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAbgAAAAADAG4AAAAAAAARAAAAAAAAewAAAAAAABEAAAAAAAB7AAAAAAAAbgAAAAAAAG4AAAAAAABuAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAG4AAAAAAABuAAAAAAAAbgAAAAACAHsAAAAAAABuAAAAAAMAbgAAAAACAG4AAAAAAABuAAAAAAAAagAAAAAAAHsAAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAB7AAAAAAAAbgAAAAACAG4AAAAAAABuAAAAAAMAbgAAAAAAAG4AAAAAAQBrAAAAAAAAbgAAAAABAG4AAAAAAABuAAAAAAAAbgAAAAAAAGoAAAAAAAB7AAAAAAAAHQAAAAACAB0AAAAAAAAdAAAAAAMAawAAAAAAAG4AAAAAAgBuAAAAAAEAbgAAAAADAG4AAAAAAQBuAAAAAAIAawAAAAAAAG4AAAAAAABuAAAAAAIAbgAAAAAAAG4AAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAMAbgAAAAAAAG4AAAAAAwBuAAAAAAEAbgAAAAAAAHsAAAAAAABuAAAAAAEAbgAAAAAAAG4AAAAAAABuAAAAAAAAbgAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAA0AAAAAAAANAAAAAAAAawAAAAAAAE0AAAAAAABNAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABNAAAAAAAATQAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAATQAAAAAAAE0AAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAABrAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAWwAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAA== + tiles: ewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAABrAAAAAAAAawAAAAAAAHsAAAAAAABbAAAAAAIAWwAAAAAAAHsAAAAAAABuAAAAAAAAbgAAAAACABEAAAAAAAB7AAAAAAAAEQAAAAAAAG4AAAAAAQBuAAAAAAIAbgAAAAAAAG4AAAAAAwBuAAAAAAAAbgAAAAADAG4AAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAEAbgAAAAABAG4AAAAAAgBuAAAAAAAAbgAAAAABAG4AAAAAAQBuAAAAAAIAbgAAAAACAG4AAAAAAQBuAAAAAAAAbgAAAAADAG4AAAAAAwBuAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAG4AAAAAAwBuAAAAAAIAbgAAAAAAAG4AAAAAAQBuAAAAAAEAbgAAAAABAG4AAAAAAQBuAAAAAAEAbgAAAAACAG4AAAAAAgBuAAAAAAAAbgAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAIAbgAAAAABABEAAAAAAAB7AAAAAAAAEQAAAAAAAG4AAAAAAABuAAAAAAIAbgAAAAADAG4AAAAAAwBuAAAAAAEAbgAAAAABAG4AAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAbgAAAAAAAG4AAAAAAgARAAAAAAAAewAAAAAAABEAAAAAAAB7AAAAAAAAbgAAAAACAG4AAAAAAwBuAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAG4AAAAAAQBuAAAAAAMAbgAAAAACAHsAAAAAAABuAAAAAAAAbgAAAAACAG4AAAAAAQBuAAAAAAAAagAAAAAAAHsAAAAAAAARAAAAAAAAEQAAAAAAABEAAAAAAAB7AAAAAAAAbgAAAAABAG4AAAAAAQBuAAAAAAEAbgAAAAADAG4AAAAAAgBrAAAAAAAAbgAAAAADAG4AAAAAAQBuAAAAAAEAbgAAAAACAGoAAAAAAAB7AAAAAAAAHQAAAAACAB0AAAAAAQAdAAAAAAEAawAAAAAAAG4AAAAAAwBuAAAAAAAAbgAAAAACAG4AAAAAAABuAAAAAAIAawAAAAAAAG4AAAAAAwBuAAAAAAIAbgAAAAADAG4AAAAAAwBqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAEAbgAAAAADAG4AAAAAAABuAAAAAAAAbgAAAAABAHsAAAAAAABuAAAAAAEAbgAAAAACAG4AAAAAAgBuAAAAAAAAbgAAAAACAGoAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAA0AAAAAAgANAAAAAAAAawAAAAAAAE0AAAAAAABNAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABNAAAAAAAATQAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAATQAAAAAAAE0AAAAAAABbAAAAAAIAWwAAAAABAFsAAAAAAgBbAAAAAAAAWwAAAAABAFsAAAAAAgBbAAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAABrAAAAAAAATAAAAAAAAEwAAAAAAgBMAAAAAAAATAAAAAAAAEwAAAAAAwBMAAAAAAAAWwAAAAADAHsAAAAAAAAdAAAAAAEAHQAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAA== version: 7 3,3: ind: 3,3 - tiles: ewAAAAAAAFsAAAAAAABiAAAAAAAAWwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAGIAAAAAAABbAAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAAAAHsAAAAAAABbAAAAAAAAYgAAAAAAAFsAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAAB7AAAAAAAAewAAAAAAAGIAAAAAAAB7AAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAADAAAAAAAAHsAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: ewAAAAAAAFsAAAAAAABiAAAAAAIAWwAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAADAGIAAAAAAABbAAAAAAEAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAABAHsAAAAAAABbAAAAAAIAYgAAAAABAFsAAAAAAABMAAAAAAEATAAAAAADAEwAAAAAAwBbAAAAAAMAWwAAAAAAAFsAAAAAAgB7AAAAAAAAewAAAAAAAGIAAAAAAwB7AAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAAAAHsAAAAAAABbAAAAAAMAWwAAAAACAFsAAAAAAABbAAAAAAEADAAAAAACAHsAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 3,2: ind: 3,2 - tiles: TAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAAWwAAAAAAAGsAAAAAAAAdAAAAAAAAHQAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAAB7AAAAAAAAHQAAAAAAAB0AAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAAAAHsAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAAB7AAAAAAAAHQAAAAAAAB0AAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAAAawAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAAAAHsAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAAAAB0AAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHsAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHsAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAAB4AAAAAAAAeAAAAAAAAHgAAAAAAAB7AAAAAAAABQAAAAAAAAoAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAB7AAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAewAAAAAAAHgAAAAAAAB4AAAAAAAAewAAAAAAAHgAAAAAAAB4AAAAAAAAewAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAewAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABiAAAAAAAAYgAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAAAAHsAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAAAYgAAAAAAAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAABqAAAAAAAAWwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAA== + tiles: TAAAAAADAEwAAAAAAwBMAAAAAAMATAAAAAAAAEwAAAAAAABMAAAAAAAAWwAAAAACAGsAAAAAAAAdAAAAAAEAHQAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAFsAAAAAAABbAAAAAAEAWwAAAAABAFsAAAAAAgBbAAAAAAMAWwAAAAAAAFsAAAAAAQB7AAAAAAAAHQAAAAACAB0AAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAIAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAABAHsAAAAAAAAdAAAAAAMAHQAAAAABAHsAAAAAAAB4AAAAAAMAeAAAAAAAAHgAAAAAAgB4AAAAAAEAeAAAAAAAAHgAAAAAAwB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAwB7AAAAAAAAHQAAAAAAAB0AAAAAAgB7AAAAAAAAeAAAAAAAAHgAAAAAAwB4AAAAAAEAeAAAAAACAHgAAAAAAAB4AAAAAAEAeAAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAB0AAAAAAwAdAAAAAAAAawAAAAAAAHgAAAAAAgB4AAAAAAEAeAAAAAADAHsAAAAAAAB7AAAAAAAAeAAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAADAHsAAAAAAAAdAAAAAAEAHQAAAAADAHsAAAAAAAB4AAAAAAAAeAAAAAACAHgAAAAAAQB7AAAAAAAAeAAAAAACAHgAAAAAAwB4AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAADAB0AAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAAB4AAAAAAEAeAAAAAABAHsAAAAAAAB4AAAAAAMAeAAAAAADAHgAAAAAAgB4AAAAAAAAeAAAAAADAHsAAAAAAAAFAAAAAAMABQAAAAADAAUAAAAAAQAFAAAAAAMABQAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAeAAAAAAAAHgAAAAAAgB4AAAAAAAAeAAAAAAAAHgAAAAAAQB7AAAAAAAABQAAAAADAAoAAAAAAgAFAAAAAAIABQAAAAACAAUAAAAAAgB7AAAAAAAABwAAAAAAAAcAAAAAAwAHAAAAAAMAewAAAAAAAHgAAAAAAAB4AAAAAAIAewAAAAAAAHgAAAAAAwB4AAAAAAIAewAAAAAAAAUAAAAAAgAFAAAAAAMABQAAAAAAAAUAAAAAAQAFAAAAAAEAewAAAAAAAAcAAAAAAwAHAAAAAAAABwAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABiAAAAAAAAYgAAAAACAFsAAAAAAgBbAAAAAAAAWwAAAAABAHsAAAAAAAAHAAAAAAIABwAAAAABAAcAAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAMAYgAAAAACAFsAAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAACAHsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAQBbAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAABqAAAAAAAAWwAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAABAA0AAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAA== version: 7 4,1: ind: 4,1 - tiles: WwAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAAAdAAAAAAEAHQAAAAABAB0AAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAABiAAAAAAAAYgAAAAAAAGIAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAWwAAAAADAGIAAAAAAABiAAAAAAAAYgAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAGIAAAAAAABiAAAAAAAAYgAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAACAB0AAAAAAQAdAAAAAAIAHQAAAAADAGsAAAAAAAB7AAAAAAAAawAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAGIAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAgB7AAAAAAAAHQAAAAABAB0AAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAagAAAAAAAHsAAAAAAABbAAAAAAMAWwAAAAABAHsAAAAAAAAdAAAAAAAAewAAAAAAAB0AAAAAAgAdAAAAAAIAAQAAAAACAAEAAAAAAwB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAGIAAAAAAABrAAAAAAAAHQAAAAAAAHsAAAAAAAAdAAAAAAIAHQAAAAABAAEAAAAAAAABAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAbgAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGIAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABNAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAGoAAAAAAAB7AAAAAAAAHQAAAAAAAB0AAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAATQAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAE0AAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAB0AAAAAAABrAAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAAAAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAIAegAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAAAAHsAAAAAAABbAAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAHQAAAAACAA== + tiles: WwAAAAACAHsAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAAAdAAAAAAMAHQAAAAAAAB0AAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAABiAAAAAAEAYgAAAAABAGIAAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAWwAAAAABAGIAAAAAAwBiAAAAAAMAYgAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAGIAAAAAAABiAAAAAAAAYgAAAAACAHsAAAAAAAB7AAAAAAAAHQAAAAAAAB0AAAAAAwAdAAAAAAMAHQAAAAABAGsAAAAAAAB7AAAAAAAAawAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAGIAAAAAAQB7AAAAAAAAewAAAAAAAB0AAAAAAAB7AAAAAAAAHQAAAAADAB0AAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAagAAAAAAAHsAAAAAAABbAAAAAAIAWwAAAAADAHsAAAAAAAAdAAAAAAEAewAAAAAAAB0AAAAAAAAdAAAAAAEAAQAAAAABAAEAAAAAAgB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAGIAAAAAAQBrAAAAAAAAHQAAAAACAHsAAAAAAAAdAAAAAAIAHQAAAAADAAEAAAAAAAABAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAbgAAAAADAHsAAAAAAAB7AAAAAAAAWwAAAAADAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGIAAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABNAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAGoAAAAAAAB7AAAAAAAAHQAAAAACAB0AAAAAAgB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAATQAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAgAdAAAAAAIAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAE0AAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAAdAAAAAAMAHQAAAAABAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAB0AAAAAAwBrAAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAABAFsAAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAIAegAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAABbAAAAAAIAWwAAAAADAHsAAAAAAABbAAAAAAMAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAHQAAAAAAAA== version: 7 4,2: ind: 4,2 - tiles: egAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAABbAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAWwAAAAAAAHsAAAAAAAAHAAAAAAAAWwAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAAABwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAAABwAAAAAAAAcAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAAB4AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB4AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHgAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAeAAAAAACAHgAAAAAAgB4AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAAB4AAAAAAIAeAAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAA== + tiles: egAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAABbAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAWwAAAAABAHsAAAAAAAAHAAAAAAIAWwAAAAABAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAgAdAAAAAAIABwAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAMABwAAAAAAAAcAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAwB4AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB4AAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHgAAAAAAQBrAAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAeAAAAAADAHgAAAAAAgB4AAAAAAMAewAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHgAAAAAAgB4AAAAAAIAeAAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAA== version: 7 4,3: ind: 4,3 @@ -232,15 +232,15 @@ entities: version: 7 5,-1: ind: 5,-1 - tiles: ewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABuAAAAAAMAbgAAAAACAG4AAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAABAG4AAAAAAQBuAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG4AAAAAAwBuAAAAAAAAbgAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABuAAAAAAEAbgAAAAACAG4AAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAADAG4AAAAAAQBuAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG4AAAAAAABuAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABuAAAAAAAAbgAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAADAG4AAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: ewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABuAAAAAAMAbgAAAAADAG4AAAAAAQB7AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAABAG4AAAAAAQBuAAAAAAEAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG4AAAAAAgBuAAAAAAIAbgAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABuAAAAAAEAbgAAAAAAAG4AAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAADAG4AAAAAAgBuAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG4AAAAAAwBuAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABuAAAAAAIAbgAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgAAAAADAG4AAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 5,-2: ind: 5,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAEwAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAEwAAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAEwAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAGsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAEwAAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 5,2: ind: 5,2 - tiles: ewAAAAAAAB0AAAAAAQB7AAAAAAAAewAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAACAB0AAAAAAgAdAAAAAAIAHQAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAAHsAAAAAAAAdAAAAAAIAHQAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAMAHQAAAAAAAB0AAAAAAwB7AAAAAAAAHQAAAAAAAB0AAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAAAAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAAAAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAAAAAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAAAAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAAAAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: ewAAAAAAAB0AAAAAAgB7AAAAAAAAewAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAABABEAAAAAAAARAAAAAAAAEQAAAAAAAHsAAAAAAAAdAAAAAAIAHQAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAB0AAAAAAgAdAAAAAAAAHQAAAAACAB0AAAAAAAB7AAAAAAAAHQAAAAACAB0AAAAAAQB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAAAAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAAAAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAAAAAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAAAAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAAAAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 5,3: ind: 5,3 @@ -248,43 +248,43 @@ entities: version: 7 3,-3: ind: 3,-3 - tiles: agAAAAAAAGoAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoAAAAAAABqAAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAIABgAAAAADAHsAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: agAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAEABgAAAAAAAAYAAAAAAAAGAAAAAAIAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNAAAAAAAATQAAAAAAAE0AAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 6,-2: ind: 6,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAewAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAEwAAAAAAwBMAAAAAAEATAAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAGsAAAAAAABuAAAAAAMAbgAAAAABAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAABrAAAAAAAAbgAAAAADAG4AAAAAAABuAAAAAAMAbgAAAAAAAG4AAAAAAABuAAAAAAMAbgAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAEwAAAAAAgBMAAAAAAAATAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAG4AAAAAAQBuAAAAAAAAbgAAAAACAG4AAAAAAwBuAAAAAAAAbgAAAAABAG4AAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAAAbgAAAAABAG4AAAAAAgBuAAAAAAEAbgAAAAACAG4AAAAAAQBuAAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAbgAAAAADAG4AAAAAAABuAAAAAAAAbgAAAAACAG4AAAAAAABuAAAAAAAAbgAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAewAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAEwAAAAAAQBMAAAAAAAATAAAAAABAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAGsAAAAAAABuAAAAAAMAbgAAAAABAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAawAAAAAAAHsAAAAAAABrAAAAAAAAbgAAAAADAG4AAAAAAABuAAAAAAMAbgAAAAABAG4AAAAAAwBuAAAAAAMAbgAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAEwAAAAAAQBMAAAAAAAATAAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAG4AAAAAAQBuAAAAAAEAbgAAAAADAG4AAAAAAABuAAAAAAAAbgAAAAABAG4AAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABuAAAAAAMAbgAAAAADAG4AAAAAAwBuAAAAAAIAbgAAAAACAG4AAAAAAQBuAAAAAAAAawAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAbgAAAAADAG4AAAAAAgBuAAAAAAAAbgAAAAAAAG4AAAAAAABuAAAAAAEAbgAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAA== version: 7 6,-1: ind: 6,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAbgAAAAADAG4AAAAAAgBuAAAAAAMAbgAAAAAAAG4AAAAAAQBuAAAAAAMAbgAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAABQAAAAAAAAUAAAAAAAAHsAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAUAAAAAAAAFAAAAAAAABrAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAewAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAbgAAAAABAG4AAAAAAgBuAAAAAAMAbgAAAAABAG4AAAAAAABuAAAAAAIAbgAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAABQAAAAAAAAUAAAAAAAAHsAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAUAAAAAAAAFAAAAAAAABrAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAewAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAAHsAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAB7AAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 7,-2: ind: 7,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAB0AAAAAAQAdAAAAAAMAHQAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAAdAAAAAAEAHQAAAAACAB0AAAAAAQB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAHQAAAAAAAB0AAAAAAQAdAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAB0AAAAAAgAdAAAAAAEAHQAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAB0AAAAAAQAdAAAAAAIAHQAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAABAB0AAAAAAwB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAHQAAAAABAB0AAAAAAgAdAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAB0AAAAAAgAdAAAAAAEAHQAAAAADAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 7,-1: ind: 7,-1 - tiles: ewAAAAAAAB0AAAAAAwAdAAAAAAEAHQAAAAADAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: ewAAAAAAAB0AAAAAAQAdAAAAAAAAHQAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 5,1: ind: 5,1 - tiles: egAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAAAHQAAAAAAAB0AAAAAAwAdAAAAAAMAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAADYAAAAAAAA2AAAAAAAANgAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAABAB0AAAAAAAAdAAAAAAIAHQAAAAABABEAAAAAAAARAAAAAAAAEQAAAAAAAB0AAAAAAgAdAAAAAAIAHQAAAAAAAHsAAAAAAAAdAAAAAAIAHQAAAAABAB0AAAAAAQB7AAAAAAAAEQAAAAAAAB0AAAAAAQAdAAAAAAEAHQAAAAABADYAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAiAAAAAAMAHQAAAAABAB0AAAAAAQAdAAAAAAAAHQAAAAAAAE0AAAAAAAAiAAAAAAAAHQAAAAADADYAAAAAAAAdAAAAAAIAIgAAAAAAAB0AAAAAAgBNAAAAAAAAewAAAAAAAHsAAAAAAAA2AAAAAAAAHQAAAAAAAB0AAAAAAwAdAAAAAAAAewAAAAAAAB0AAAAAAAAdAAAAAAAAHQAAAAAAAHsAAAAAAAARAAAAAAAAHQAAAAAAAB0AAAAAAwAdAAAAAAMANgAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAA== + tiles: egAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAegAAAAAAAHsAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABrAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAdAAAAAAEAHQAAAAADAB0AAAAAAAAdAAAAAAEAewAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAADYAAAAAAAA2AAAAAAAANgAAAAAAAHsAAAAAAAB7AAAAAAAAHQAAAAADAB0AAAAAAAAdAAAAAAIAHQAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAAAAB0AAAAAAQAdAAAAAAMAHQAAAAACAHsAAAAAAAAdAAAAAAEAHQAAAAADAB0AAAAAAgB7AAAAAAAAEQAAAAAAAB0AAAAAAwAdAAAAAAMAHQAAAAAAADYAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAiAAAAAAAAHQAAAAACAB0AAAAAAgAdAAAAAAIAHQAAAAAAAE0AAAAAAAAiAAAAAAEAHQAAAAADADYAAAAAAAAdAAAAAAAAIgAAAAABAB0AAAAAAwBNAAAAAAAAewAAAAAAAHsAAAAAAAA2AAAAAAAAHQAAAAAAAB0AAAAAAAAdAAAAAAAAewAAAAAAAB0AAAAAAgAdAAAAAAMAHQAAAAABAHsAAAAAAAARAAAAAAAAHQAAAAABAB0AAAAAAQAdAAAAAAEANgAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAA== version: 7 3,-4: ind: 3,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAAGoAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAABAAAAAAAAAQAAAAAAAB7AAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAAGoAAAAAAABqAAAAAAAAagAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -2,-2: ind: -2,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoAAAAAAAB7AAAAAAAAIgAAAAACAFsAAAAAAABbAAAAAAAAWwAAAAABAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAAHsAAAAAAAAiAAAAAAIAWwAAAAACAFsAAAAAAgBbAAAAAAIAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAAAWwAAAAABAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAABAFsAAAAAAgB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAABbAAAAAAMAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAIAWwAAAAADACIAAAAAAgB7AAAAAAAAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoAAAAAAAB7AAAAAAAAIgAAAAAAAFsAAAAAAABbAAAAAAMAWwAAAAAAAGsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAADAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAAHsAAAAAAAAiAAAAAAMAWwAAAAADAFsAAAAAAABbAAAAAAMAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAQBbAAAAAAEAWwAAAAADAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAAAAFsAAAAAAgB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAAAWwAAAAABACIAAAAAAgB7AAAAAAAAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -2,-1: ind: -2,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAUAAAAAAABbAAAAAAIAWwAAAAABAFsAAAAAAgBbAAAAAAIAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAAFAAAAAAEAWwAAAAABAFsAAAAAAQBbAAAAAAMAWwAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAABQAAAAAAAFsAAAAAAQBbAAAAAAEAWwAAAAACAFsAAAAAAwB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAUAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAABbAAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAgBbAAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAIAWwAAAAABACIAAAAAAgB7AAAAAAAAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAABbAAAAAAIAWwAAAAAAAFsAAAAAAgB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAWwAAAAAAAFsAAAAAAwBbAAAAAAAAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAMAWwAAAAADAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAABbAAAAAAEAWwAAAAAAAFsAAAAAAwB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAQBbAAAAAAIAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAEAWwAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAMAWwAAAAABAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAAHsAAAAAAAAiAAAAAAMAWwAAAAACAFsAAAAAAQBbAAAAAAMAWwAAAAACAFsAAAAAAQBbAAAAAAAAWwAAAAADAFsAAAAAAgBbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAIAWwAAAAAAAFsAAAAAAABbAAAAAAMAWwAAAAAAAFsAAAAAAABbAAAAAAAAWwAAAAABAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAAAWwAAAAACAHsAAAAAAAB7AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAUAAAAAAgBbAAAAAAAAWwAAAAAAAFsAAAAAAABbAAAAAAIAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAAFAAAAAAEAWwAAAAABAFsAAAAAAABbAAAAAAMAWwAAAAADAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAABQAAAAAAAFsAAAAAAQBbAAAAAAAAWwAAAAABAFsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAewAAAAAAAAUAAAAAAwBbAAAAAAAAWwAAAAAAAFsAAAAAAQBbAAAAAAMAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAgBbAAAAAAIAewAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAFsAAAAAAwBbAAAAAAMAWwAAAAADACIAAAAAAgB7AAAAAAAAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAABbAAAAAAAAWwAAAAACAFsAAAAAAwB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAWwAAAAADAFsAAAAAAABbAAAAAAIAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAMAWwAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAHsAAAAAAABbAAAAAAMAWwAAAAADAFsAAAAAAAB7AAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB7AAAAAAAAWwAAAAACAFsAAAAAAABbAAAAAAIAewAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAewAAAAAAAFsAAAAAAABbAAAAAAEAWwAAAAAAAHsAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAABbAAAAAAMAWwAAAAACAFsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagAAAAAAAHsAAAAAAAAiAAAAAAAAWwAAAAABAFsAAAAAAgBbAAAAAAMAWwAAAAAAAFsAAAAAAABbAAAAAAIAWwAAAAABAFsAAAAAAABbAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAFsAAAAAAgBbAAAAAAMAWwAAAAAAAFsAAAAAAgBbAAAAAAIAWwAAAAADAFsAAAAAAABbAAAAAAIAWwAAAAABAA== version: 7 -2,0: ind: -2,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoAAAAAAAB7AAAAAAAAIgAAAAAAAFsAAAAAAgBbAAAAAAMAWwAAAAABAFsAAAAAAwBbAAAAAAIAWwAAAAACAFsAAAAAAABbAAAAAAEAWwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoAAAAAAAB7AAAAAAAAIgAAAAACAFsAAAAAAABbAAAAAAMAWwAAAAADAFsAAAAAAgBbAAAAAAEAWwAAAAACAFsAAAAAAwBbAAAAAAIAWwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAB7AAAAAAAAewAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAewAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAegAAAAAAAAAAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAAAewAAAAAAAHsAAAAAAAB6AAAAAAAAegAAAAAAAHsAAAAAAAB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAAAAAAAAAAAAA== version: 7 -2,1: ind: -2,1 @@ -557,8 +557,7 @@ entities: 0: 4369 1: 35840 2,-7: - 0: 5358 - 2: 2048 + 0: 7406 2,-6: 0: 27887 2,-8: @@ -673,10 +672,10 @@ entities: 0: 61422 7,-4: 0: 239 - 3: 57344 + 2: 57344 7,-3: 0: 16 - 3: 3822 + 2: 3822 7,-2: 0: 61422 7,-5: @@ -684,7 +683,7 @@ entities: 8,-4: 0: 57531 8,-3: - 0: 61182 + 0: 12030 8,-2: 0: 65535 8,-1: @@ -717,7 +716,7 @@ entities: 0: 63967 8,-8: 0: 4113 - 4: 204 + 3: 204 1: 49152 8,-7: 0: 65521 @@ -816,10 +815,10 @@ entities: 1: 49152 8,-9: 0: 4113 - 4: 49152 + 3: 49152 1: 204 9,-8: - 4: 17 + 3: 17 1: 4096 0: 52428 9,-7: @@ -829,7 +828,7 @@ entities: 9,-5: 0: 30479 9,-9: - 4: 4096 + 3: 4096 0: 52428 1: 17 9,-4: @@ -865,13 +864,13 @@ entities: 11,-4: 0: 63692 12,-8: - 5: 7 - 4: 1792 - 12,-7: 4: 7 - 6: 1792 + 3: 1792 + 12,-7: + 3: 7 + 5: 1792 12,-6: - 7: 7 + 6: 7 1: 256 0: 49152 12,-5: @@ -900,26 +899,24 @@ entities: 1: 255 11,-12: 0: 4369 - 4: 52428 + 1: 17476 11,-11: 0: 28689 - 1: 192 + 1: 196 11,-10: 0: 1911 11,-13: 0: 4096 - 4: 49152 - 1: 249 + 1: 17657 12,-12: - 4: 13107 - 1: 34952 + 3: 65535 12,-11: - 1: 62968 + 1: 62960 12,-10: 1: 4369 12,-9: 1: 15 - 4: 1792 + 3: 1792 4,7: 0: 61152 4,8: @@ -943,7 +940,7 @@ entities: 7,6: 0: 61679 7,7: - 0: 65295 + 0: 60943 7,4: 0: 36576 7,5: @@ -975,7 +972,7 @@ entities: 10,3: 0: 65527 10,-1: - 0: 65167 + 0: 65166 11,0: 0: 65327 11,1: @@ -997,13 +994,13 @@ entities: 12,3: 0: 61408 9,-3: - 0: 57339 + 0: 53243 9,-2: - 0: 65535 + 0: 56797 10,-3: 0: 19924 10,-2: - 0: 61183 + 0: 61167 11,-3: 0: 52688 11,-2: @@ -1084,8 +1081,8 @@ entities: 12,-14: 1: 61441 12,-13: - 1: 35060 - 4: 12288 + 1: 244 + 3: 61440 1,-16: 1: 50368 1,-15: @@ -1132,7 +1129,7 @@ entities: 13,-3: 0: 7389 13,-2: - 0: 65531 + 0: 64507 13,-1: 0: 57227 13,-5: @@ -1158,7 +1155,7 @@ entities: 15,-2: 0: 32631 15,-1: - 0: 30583 + 0: 30579 15,-5: 0: 65487 15,0: @@ -1175,15 +1172,17 @@ entities: 13,-8: 1: 8738 13,-7: - 1: 8738 + 1: 11810 13,-9: 1: 8879 + 14,-7: + 1: 53060 14,-8: 1: 17476 14,-9: 1: 17520 - 14,-7: - 1: 52292 + 14,-6: + 1: 1092 15,-7: 1: 64256 16,-7: @@ -1197,10 +1196,10 @@ entities: 0,10: 1: 59938 1,9: - 4: 32752 + 3: 32752 0: 2 1,10: - 4: 7 + 3: 7 1: 63488 2,10: 1: 15906 @@ -1282,16 +1281,13 @@ entities: 10,7: 0: 65485 10,8: - 0: 64401 - 2: 32 + 0: 64433 11,5: 0: 52692 11,6: 0: 56541 11,7: 0: 65309 - 12,4: - 0: 61424 12,5: 0: 57598 12,6: @@ -1299,8 +1295,7 @@ entities: 12,7: 0: 65327 11,8: - 0: 15288 - 8: 32768 + 0: 48056 8,12: 0: 1 1: 61952 @@ -1317,17 +1312,15 @@ entities: 10,11: 0: 65521 11,9: - 0: 56329 - 2: 2 + 0: 56331 11,10: 0: 7676 11,11: 0: 65532 12,8: - 0: 56831 + 0: 55807 12,9: - 0: 7641 - 8: 4 + 0: 7645 12,10: 0: 35771 12,11: @@ -1357,7 +1350,7 @@ entities: 12,13: 1: 241 16,-3: - 0: 61166 + 0: 28398 16,0: 0: 65535 17,-3: @@ -1521,6 +1514,8 @@ entities: 1: 4352 23,2: 1: 4369 + 12,4: + 0: 61152 13,4: 0: 65520 13,5: @@ -1580,10 +1575,10 @@ entities: 0: 65263 16,13: 1: 17 + 13,9: + 0: 3838 13,10: 0: 65535 - 13,9: - 0: 3822 14,9: 0: 61007 14,10: @@ -1762,13 +1757,13 @@ entities: 22,13: 1: 3 13,-11: - 1: 12835 + 1: 64762 + 13,-12: + 1: 44778 13,-10: 1: 4369 - 13,-12: - 1: 8738 13,-13: - 1: 8994 + 1: 60154 25,-6: 0: 61440 25,-5: @@ -1849,7 +1844,7 @@ entities: 0: 4369 1: 8 13,-14: - 1: 12288 + 1: 61440 -7,-6: 0: 63728 -7,-5: @@ -1938,11 +1933,6 @@ entities: - volume: 2500 immutable: True moles: {} - - volume: 2500 - temperature: 293.15 - moles: - Oxygen: 21.6852 - Nitrogen: 81.57766 - volume: 2500 temperature: 235 moles: @@ -1963,11 +1953,6 @@ entities: temperature: 293.15 moles: Nitrogen: 6666.982 - - volume: 2500 - temperature: 293.14975 - moles: - Oxygen: 20.078888 - Nitrogen: 75.53487 chunkSize: 4 - type: DecalGrid chunkCollection: @@ -2052,7 +2037,6 @@ entities: 1470: 23,25 2199: 68,13 2200: 66,13 - 2564: 46,-46 2574: 44,-43 2575: 43,-43 2576: 42,-43 @@ -2120,6 +2104,7 @@ entities: 6578: 68,16 6836: 56,9 6837: 56,8 + 6973: 48,-46 - node: angle: 1.5707963267948966 rad color: '#FFFFFFFF' @@ -3317,8 +3302,6 @@ entities: 3927: -22,-1 3928: -22,0 4039: 30,-40 - 4056: 47,-50 - 4057: 48,-50 4058: 35,-34 4059: 35,-30 4289: 27,-3 @@ -3338,6 +3321,8 @@ entities: 6806: 53,11 6832: 48,14 6835: 55,10 + 7025: 50,-50 + 7026: 49,-50 - node: angle: 1.5707963267948966 rad color: '#FFFFFFFF' @@ -6026,11 +6011,6 @@ entities: 3110: 80,34 3651: 6,38 3652: 6,37 - 4049: 49,-46 - 4050: 49,-47 - 4051: 49,-48 - 4052: 49,-49 - 4477: 49,-45 4499: 36,-31 4500: 36,-32 4501: 36,-33 @@ -6044,6 +6024,11 @@ entities: 5266: 65,46 6809: 60,27 6896: 80,34 + 7004: 51,-49 + 7005: 51,-48 + 7006: 51,-47 + 7007: 51,-46 + 7008: 51,-45 - node: color: '#334E6DC8' id: WarnLineGreyscaleE @@ -6296,16 +6281,11 @@ entities: 2553: 41,-46 2554: 41,-47 2555: 41,-48 - 2570: 46,-48 - 2571: 46,-47 - 2572: 46,-46 2589: 36,-49 2590: 36,-48 2591: 36,-47 2592: 36,-46 2593: 36,-45 - 4047: 46,-49 - 4478: 46,-45 4502: 34,-31 4503: 34,-32 4504: 34,-33 @@ -6326,6 +6306,11 @@ entities: 6570: 6,26 6574: 6,24 6575: 6,23 + 6941: 48,-45 + 6961: 48,-46 + 6962: 48,-47 + 7002: 48,-48 + 7003: 48,-49 - node: color: '#FFFFFFFF' id: WarnLineW @@ -6547,28 +6532,35 @@ entities: color: '#FFFFFFFF' id: burnt1 decals: - 4479: 46,-45 - 4484: 47,-47 - 4489: 48,-46 - 4494: 49,-48 - 4497: 46,-49 - 4498: 49,-49 4507: 34,-31 4511: 35,-32 4515: 36,-33 + 6963: 48,-47 + 6968: 49,-45 + 6976: 49,-49 + 6977: 50,-48 + 6978: 50,-47 + 6981: 50,-45 - node: cleanable: True color: '#FFFFFFFF' id: burnt2 decals: - 4480: 47,-45 - 4483: 46,-47 - 4487: 47,-46 - 4490: 49,-46 - 4493: 48,-48 - 4496: 47,-49 4508: 35,-31 4512: 36,-32 + 6949: 49,-46 + 6950: 49,-45 + 6964: 48,-46 + 6965: 49,-47 + 6982: 50,-45 + 6983: 50,-46 + 6986: 50,-49 + 6990: 49,-48 + 7013: 51,-48 + 7014: 51,-47 + 7015: 51,-45 + 7016: 51,-49 + 7017: 48,-49 - node: color: '#FFFFFFFF' id: burnt3 @@ -6581,11 +6573,18 @@ entities: color: '#FFFFFFFF' id: burnt3 decals: - 4481: 48,-45 - 4486: 49,-47 - 4492: 47,-48 4509: 36,-31 4513: 34,-33 + 6951: 49,-47 + 6966: 49,-46 + 6970: 48,-47 + 6992: 50,-48 + 6993: 50,-47 + 6995: 50,-45 + 7018: 51,-48 + 7019: 51,-45 + 7020: 48,-49 + 7021: 48,-48 - node: color: '#FFFFFFFF' id: burnt4 @@ -6596,13 +6595,22 @@ entities: color: '#FFFFFFFF' id: burnt4 decals: - 4482: 49,-45 - 4485: 48,-47 - 4488: 46,-46 - 4491: 46,-48 - 4495: 48,-49 4510: 34,-32 4514: 35,-33 + 6954: 48,-45 + 6971: 48,-47 + 6972: 48,-46 + 6997: 49,-48 + 6998: 50,-49 + 7000: 48,-45 + 7001: 49,-49 + 7009: 51,-49 + 7010: 48,-48 + 7011: 51,-47 + 7012: 51,-46 + 7022: 48,-49 + 7023: 50,-48 + 7024: 49,-45 - node: angle: 0.13962634015954636 rad color: '#9C2020FF' @@ -12300,130 +12308,130 @@ entities: - type: Transform pos: 36.5,-32.5 parent: 2 - - uid: 15318 + - uid: 15346 components: - type: Transform - pos: 46.5,-44.5 + pos: 48.5,-44.5 parent: 2 - - uid: 15332 + - uid: 15347 components: - type: Transform - pos: 47.5,-44.5 + pos: 48.5,-45.5 parent: 2 - - uid: 15333 + - uid: 15348 components: - type: Transform - pos: 48.5,-44.5 + pos: 48.5,-46.5 parent: 2 - - uid: 15340 + - uid: 15349 components: - type: Transform pos: 49.5,-44.5 parent: 2 - - uid: 15341 + - uid: 15350 components: - type: Transform pos: 49.5,-45.5 parent: 2 - - uid: 15342 + - uid: 15351 components: - type: Transform - pos: 48.5,-45.5 + pos: 49.5,-46.5 parent: 2 - - uid: 15343 + - uid: 15352 components: - type: Transform - pos: 47.5,-45.5 + pos: 50.5,-44.5 parent: 2 - - uid: 15344 + - uid: 15353 components: - type: Transform - pos: 46.5,-45.5 + pos: 50.5,-45.5 parent: 2 - - uid: 15345 + - uid: 15354 components: - type: Transform - pos: 46.5,-46.5 + pos: 50.5,-46.5 parent: 2 - - uid: 15346 + - uid: 15792 components: - type: Transform - pos: 47.5,-46.5 + pos: 5.5,38.5 parent: 2 - - uid: 15347 + - uid: 15793 components: - type: Transform - pos: 48.5,-46.5 + pos: 5.5,37.5 parent: 2 - - uid: 15348 + - uid: 15794 components: - type: Transform - pos: 49.5,-46.5 + pos: 6.5,37.5 parent: 2 - - uid: 15349 + - uid: 15795 components: - type: Transform - pos: 49.5,-47.5 + pos: 7.5,37.5 parent: 2 - - uid: 15350 + - uid: 15796 components: - type: Transform - pos: 48.5,-47.5 + pos: 7.5,38.5 parent: 2 - - uid: 15351 + - uid: 15983 components: - type: Transform - pos: 47.5,-47.5 + pos: 51.5,-44.5 parent: 2 - - uid: 15352 + - uid: 15984 components: - type: Transform - pos: 46.5,-47.5 + pos: 51.5,-46.5 parent: 2 - - uid: 15353 + - uid: 15985 components: - type: Transform - pos: 46.5,-48.5 + pos: 51.5,-47.5 parent: 2 - - uid: 15354 + - uid: 15986 components: - type: Transform - pos: 47.5,-48.5 + pos: 51.5,-45.5 parent: 2 - - uid: 15355 + - uid: 15987 components: - type: Transform - pos: 48.5,-48.5 + pos: 51.5,-48.5 parent: 2 - - uid: 15356 + - uid: 15988 components: - type: Transform - pos: 49.5,-48.5 + pos: 48.5,-47.5 parent: 2 - - uid: 15792 + - uid: 15989 components: - type: Transform - pos: 5.5,38.5 + pos: 48.5,-48.5 parent: 2 - - uid: 15793 + - uid: 15990 components: - type: Transform - pos: 5.5,37.5 + pos: 49.5,-48.5 parent: 2 - - uid: 15794 + - uid: 15991 components: - type: Transform - pos: 6.5,37.5 + pos: 50.5,-47.5 parent: 2 - - uid: 15795 + - uid: 15992 components: - type: Transform - pos: 7.5,37.5 + pos: 50.5,-48.5 parent: 2 - - uid: 15796 + - uid: 15993 components: - type: Transform - pos: 7.5,38.5 + pos: 49.5,-47.5 parent: 2 - proto: AtmosFixFreezerMarker entities: @@ -13181,15 +13189,15 @@ entities: - type: AccessReader access: - - Research - - uid: 12890 + - uid: 12905 components: - type: Transform - pos: 47.5,-49.5 + pos: 49.5,-49.5 parent: 2 - - uid: 12891 + - uid: 12960 components: - type: Transform - pos: 48.5,-49.5 + pos: 50.5,-49.5 parent: 2 - uid: 12988 components: @@ -13655,11 +13663,6 @@ entities: rot: 1.5707963267948966 rad pos: 4.5,15.5 parent: 2 - - uid: 1233 - components: - - type: Transform - pos: 49.5,-49.5 - parent: 2 - uid: 2060 components: - type: Transform @@ -13706,6 +13709,11 @@ entities: rot: 1.5707963267948966 rad pos: 37.5,-29.5 parent: 2 + - uid: 12301 + components: + - type: Transform + pos: 51.5,-49.5 + parent: 2 - uid: 12824 components: - type: Transform @@ -14875,6 +14883,11 @@ entities: - type: Transform pos: 46.5,-27.5 parent: 2 + - uid: 4014 + components: + - type: Transform + pos: 50.5,-44.5 + parent: 2 - uid: 4026 components: - type: Transform @@ -16210,6 +16223,11 @@ entities: - type: Transform pos: 60.5,10.5 parent: 2 + - uid: 6513 + components: + - type: Transform + pos: 50.5,-48.5 + parent: 2 - uid: 6529 components: - type: Transform @@ -22365,11 +22383,6 @@ entities: - type: Transform pos: -23.5,-14.5 parent: 2 - - uid: 12913 - components: - - type: Transform - pos: 49.5,-48.5 - parent: 2 - uid: 12952 components: - type: Transform @@ -22380,41 +22393,6 @@ entities: - type: Transform pos: 45.5,-44.5 parent: 2 - - uid: 12954 - components: - - type: Transform - pos: 46.5,-44.5 - parent: 2 - - uid: 12955 - components: - - type: Transform - pos: 47.5,-44.5 - parent: 2 - - uid: 12956 - components: - - type: Transform - pos: 48.5,-44.5 - parent: 2 - - uid: 12957 - components: - - type: Transform - pos: 49.5,-44.5 - parent: 2 - - uid: 12958 - components: - - type: Transform - pos: 49.5,-45.5 - parent: 2 - - uid: 12959 - components: - - type: Transform - pos: 49.5,-46.5 - parent: 2 - - uid: 12960 - components: - - type: Transform - pos: 49.5,-47.5 - parent: 2 - uid: 12962 components: - type: Transform @@ -23640,11 +23618,31 @@ entities: - type: Transform pos: 27.5,-31.5 parent: 2 + - uid: 15333 + components: + - type: Transform + pos: 46.5,-44.5 + parent: 2 - uid: 15334 components: - type: Transform pos: 28.5,-32.5 parent: 2 + - uid: 15340 + components: + - type: Transform + pos: 47.5,-44.5 + parent: 2 + - uid: 15341 + components: + - type: Transform + pos: 48.5,-44.5 + parent: 2 + - uid: 15342 + components: + - type: Transform + pos: 49.5,-44.5 + parent: 2 - uid: 15402 components: - type: Transform @@ -23950,6 +23948,41 @@ entities: - type: Transform pos: 12.5,-18.5 parent: 2 + - uid: 15996 + components: + - type: Transform + pos: 51.5,-44.5 + parent: 2 + - uid: 15997 + components: + - type: Transform + pos: 51.5,-46.5 + parent: 2 + - uid: 15998 + components: + - type: Transform + pos: 51.5,-45.5 + parent: 2 + - uid: 15999 + components: + - type: Transform + pos: 51.5,-47.5 + parent: 2 + - uid: 16000 + components: + - type: Transform + pos: 51.5,-48.5 + parent: 2 + - uid: 16001 + components: + - type: Transform + pos: 49.5,-48.5 + parent: 2 + - uid: 16002 + components: + - type: Transform + pos: 48.5,-48.5 + parent: 2 - proto: CableApcStack entities: - uid: 5627 @@ -37717,6 +37750,11 @@ entities: - type: Transform pos: 86.5,40.5 parent: 2 + - uid: 8665 + components: + - type: Transform + pos: 47.5,-50.5 + parent: 2 - uid: 8750 components: - type: Transform @@ -37855,6 +37893,11 @@ entities: - type: Transform pos: 48.5,27.5 parent: 2 + - uid: 10436 + components: + - type: Transform + pos: 48.5,-50.5 + parent: 2 - uid: 10441 components: - type: Transform @@ -38136,6 +38179,11 @@ entities: - type: Transform pos: 26.5,-52.5 parent: 2 + - uid: 11586 + components: + - type: Transform + pos: 49.5,-50.5 + parent: 2 - uid: 11672 components: - type: Transform @@ -38482,6 +38530,11 @@ entities: - type: Transform pos: 22.5,7.5 parent: 2 + - uid: 12882 + components: + - type: Transform + pos: 46.5,-47.5 + parent: 2 - uid: 12902 components: - type: Transform @@ -38492,6 +38545,16 @@ entities: - type: Transform pos: 5.5,-8.5 parent: 2 + - uid: 12980 + components: + - type: Transform + pos: 50.5,-50.5 + parent: 2 + - uid: 12993 + components: + - type: Transform + pos: 46.5,-46.5 + parent: 2 - uid: 13005 components: - type: Transform @@ -38567,85 +38630,40 @@ entities: - type: Transform pos: 45.5,-50.5 parent: 2 - - uid: 13020 - components: - - type: Transform - pos: 46.5,-50.5 - parent: 2 - - uid: 13021 - components: - - type: Transform - pos: 47.5,-50.5 - parent: 2 - uid: 13022 components: - type: Transform - pos: 48.5,-50.5 + pos: 50.5,-42.5 parent: 2 - uid: 13023 components: - type: Transform - pos: 49.5,-50.5 + pos: 53.5,-43.5 parent: 2 - uid: 13024 components: - type: Transform - pos: 50.5,-50.5 + pos: 53.5,-42.5 parent: 2 - uid: 13025 components: - type: Transform - pos: 51.5,-50.5 - parent: 2 - - uid: 13026 - components: - - type: Transform - pos: 51.5,-49.5 - parent: 2 - - uid: 13027 - components: - - type: Transform - pos: 51.5,-48.5 - parent: 2 - - uid: 13028 - components: - - type: Transform - pos: 51.5,-47.5 - parent: 2 - - uid: 13029 - components: - - type: Transform - pos: 51.5,-46.5 - parent: 2 - - uid: 13030 - components: - - type: Transform - pos: 51.5,-45.5 - parent: 2 - - uid: 13031 - components: - - type: Transform - pos: 51.5,-44.5 - parent: 2 - - uid: 13032 - components: - - type: Transform - pos: 51.5,-43.5 + pos: 52.5,-42.5 parent: 2 - uid: 13033 components: - type: Transform - pos: 51.5,-42.5 + pos: 49.5,-42.5 parent: 2 - uid: 13034 components: - type: Transform - pos: 50.5,-42.5 + pos: 53.5,-45.5 parent: 2 - uid: 13035 components: - type: Transform - pos: 49.5,-42.5 + pos: 53.5,-46.5 parent: 2 - uid: 13036 components: @@ -38735,6 +38753,11 @@ entities: - type: Transform pos: 59.5,47.5 parent: 2 + - uid: 13618 + components: + - type: Transform + pos: 53.5,-47.5 + parent: 2 - uid: 13749 components: - type: Transform @@ -39366,6 +39389,31 @@ entities: - type: Transform pos: 40.5,-42.5 parent: 2 + - uid: 15253 + components: + - type: Transform + pos: 52.5,-50.5 + parent: 2 + - uid: 15255 + components: + - type: Transform + pos: 46.5,-49.5 + parent: 2 + - uid: 15256 + components: + - type: Transform + pos: 46.5,-48.5 + parent: 2 + - uid: 15258 + components: + - type: Transform + pos: 46.5,-50.5 + parent: 2 + - uid: 15259 + components: + - type: Transform + pos: 51.5,-50.5 + parent: 2 - uid: 15287 components: - type: Transform @@ -39419,6 +39467,16 @@ entities: rot: 3.141592653589793 rad pos: 26.5,-32.5 parent: 2 + - uid: 15355 + components: + - type: Transform + pos: 46.5,-45.5 + parent: 2 + - uid: 15356 + components: + - type: Transform + pos: 46.5,-44.5 + parent: 2 - uid: 15361 components: - type: Transform @@ -39508,6 +39566,46 @@ entities: - type: Transform pos: -12.5,-40.5 parent: 2 + - uid: 15979 + components: + - type: Transform + pos: 46.5,-43.5 + parent: 2 + - uid: 15980 + components: + - type: Transform + pos: 46.5,-42.5 + parent: 2 + - uid: 15981 + components: + - type: Transform + pos: 47.5,-42.5 + parent: 2 + - uid: 15982 + components: + - type: Transform + pos: 53.5,-44.5 + parent: 2 + - uid: 16011 + components: + - type: Transform + pos: 51.5,-42.5 + parent: 2 + - uid: 16013 + components: + - type: Transform + pos: 53.5,-48.5 + parent: 2 + - uid: 16014 + components: + - type: Transform + pos: 53.5,-49.5 + parent: 2 + - uid: 16015 + components: + - type: Transform + pos: 53.5,-50.5 + parent: 2 - proto: Cautery entities: - uid: 7791 @@ -43440,7 +43538,7 @@ entities: pos: 59.5,39.5 parent: 2 - type: Door - secondsUntilStateChange: -18326.117 + secondsUntilStateChange: -19693.469 state: Closing - proto: CurtainsWhiteOpen entities: @@ -49296,7 +49394,7 @@ entities: pos: 26.5,37.5 parent: 2 - type: Door - secondsUntilStateChange: -65619.91 + secondsUntilStateChange: -66987.26 state: Closing - uid: 9362 components: @@ -51165,11 +51263,11 @@ entities: rot: -1.5707963267948966 rad pos: 48.5,-33.5 parent: 2 - - uid: 12882 + - uid: 12956 components: - type: Transform rot: -1.5707963267948966 rad - pos: 46.5,-45.5 + pos: 48.5,-45.5 parent: 2 - type: AtmosPipeColor color: '#947507FF' @@ -52236,21 +52334,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#947507FF' - - uid: 12883 - components: - - type: Transform - pos: 49.5,-44.5 - parent: 2 - - type: AtmosPipeColor - color: '#9F2B68FF' - - uid: 12885 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 49.5,-46.5 - parent: 2 - - type: AtmosPipeColor - color: '#9F2B68FF' - uid: 12984 components: - type: Transform @@ -52446,6 +52529,13 @@ entities: parent: 2 - type: AtmosPipeColor color: '#947507FF' + - uid: 15260 + components: + - type: Transform + pos: 51.5,-44.5 + parent: 2 + - type: AtmosPipeColor + color: '#9F2B68FF' - uid: 15270 components: - type: Transform @@ -52461,6 +52551,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#03FCD3FF' + - uid: 15318 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 51.5,-46.5 + parent: 2 + - type: AtmosPipeColor + color: '#9F2B68FF' - uid: 15387 components: - type: Transform @@ -60699,14 +60797,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#990000FF' - - uid: 12301 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 46.5,-46.5 - parent: 2 - - type: AtmosPipeColor - color: '#9F2B68FF' - uid: 12530 components: - type: Transform @@ -60775,7 +60865,7 @@ entities: parent: 2 - type: AtmosPipeColor color: '#947507FF' - - uid: 12887 + - uid: 12885 components: - type: Transform rot: -1.5707963267948966 rad @@ -60783,6 +60873,62 @@ entities: parent: 2 - type: AtmosPipeColor color: '#9F2B68FF' + - uid: 12887 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 46.5,-45.5 + parent: 2 + - type: AtmosPipeColor + color: '#947507FF' + - uid: 12891 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 47.5,-44.5 + parent: 2 + - type: AtmosPipeColor + color: '#9F2B68FF' + - uid: 12892 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 48.5,-46.5 + parent: 2 + - type: AtmosPipeColor + color: '#9F2B68FF' + - uid: 12957 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 47.5,-46.5 + parent: 2 + - type: AtmosPipeColor + color: '#9F2B68FF' + - uid: 12958 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 47.5,-45.5 + parent: 2 + - type: AtmosPipeColor + color: '#947507FF' + - uid: 13026 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 46.5,-46.5 + parent: 2 + - type: AtmosPipeColor + color: '#9F2B68FF' + - uid: 13027 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 48.5,-44.5 + parent: 2 + - type: AtmosPipeColor + color: '#9F2B68FF' - uid: 13143 components: - type: Transform @@ -62942,14 +63088,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#990000FF' - - uid: 4014 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 47.5,-46.5 - parent: 2 - - type: AtmosPipeColor - color: '#9F2B68FF' - uid: 4029 components: - type: Transform @@ -63927,25 +64065,25 @@ entities: parent: 2 - type: AtmosPipeColor color: '#947507FF' - - uid: 12886 + - uid: 12889 components: - type: Transform - pos: 47.5,-44.5 + rot: 3.141592653589793 rad + pos: 49.5,-46.5 parent: 2 - type: AtmosPipeColor color: '#9F2B68FF' - - uid: 12900 + - uid: 12890 components: - type: Transform - pos: 48.5,-44.5 + pos: 49.5,-44.5 parent: 2 - type: AtmosPipeColor color: '#9F2B68FF' - - uid: 12901 + - uid: 12981 components: - type: Transform - rot: 3.141592653589793 rad - pos: 48.5,-46.5 + pos: 50.5,-44.5 parent: 2 - type: AtmosPipeColor color: '#9F2B68FF' @@ -63956,6 +64094,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#9F2B68FF' + - uid: 12986 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 50.5,-46.5 + parent: 2 + - type: AtmosPipeColor + color: '#9F2B68FF' - uid: 13120 components: - type: Transform @@ -64506,7 +64652,7 @@ entities: - type: GasValve open: False - type: AtmosPipeColor - color: '#990000FF' + color: '#9F2B68FF' - uid: 11580 components: - type: Transform @@ -66766,6 +66912,11 @@ entities: - type: Transform pos: 16.5,-43.5 parent: 2 + - uid: 1233 + components: + - type: Transform + pos: 47.5,-48.5 + parent: 2 - uid: 1241 components: - type: Transform @@ -67712,6 +67863,11 @@ entities: - type: Transform pos: 24.5,-9.5 parent: 2 + - uid: 4299 + components: + - type: Transform + pos: 54.5,-40.5 + parent: 2 - uid: 4338 components: - type: Transform @@ -67899,6 +68055,11 @@ entities: rot: -1.5707963267948966 rad pos: 47.5,37.5 parent: 2 + - uid: 5428 + components: + - type: Transform + pos: 55.5,-52.5 + parent: 2 - uid: 5431 components: - type: Transform @@ -69934,6 +70095,21 @@ entities: - type: Transform pos: 11.5,45.5 parent: 2 + - uid: 12900 + components: + - type: Transform + pos: 47.5,-46.5 + parent: 2 + - uid: 12901 + components: + - type: Transform + pos: 47.5,-45.5 + parent: 2 + - uid: 12904 + components: + - type: Transform + pos: 47.5,-44.5 + parent: 2 - uid: 12914 components: - type: Transform @@ -69974,6 +70150,16 @@ entities: - type: Transform pos: 45.5,-45.5 parent: 2 + - uid: 13020 + components: + - type: Transform + pos: 55.5,-40.5 + parent: 2 + - uid: 13021 + components: + - type: Transform + pos: 53.5,-40.5 + parent: 2 - uid: 13245 components: - type: Transform @@ -70983,52 +71169,7 @@ entities: - uid: 15252 components: - type: Transform - pos: 53.5,-41.5 - parent: 2 - - uid: 15253 - components: - - type: Transform - pos: 53.5,-42.5 - parent: 2 - - uid: 15254 - components: - - type: Transform - pos: 53.5,-43.5 - parent: 2 - - uid: 15255 - components: - - type: Transform - pos: 53.5,-44.5 - parent: 2 - - uid: 15256 - components: - - type: Transform - pos: 53.5,-45.5 - parent: 2 - - uid: 15257 - components: - - type: Transform - pos: 53.5,-46.5 - parent: 2 - - uid: 15258 - components: - - type: Transform - pos: 53.5,-47.5 - parent: 2 - - uid: 15259 - components: - - type: Transform - pos: 53.5,-49.5 - parent: 2 - - uid: 15260 - components: - - type: Transform - pos: 53.5,-50.5 - parent: 2 - - uid: 15261 - components: - - type: Transform - pos: 53.5,-51.5 + pos: 47.5,-47.5 parent: 2 - uid: 15262 components: @@ -71273,6 +71414,51 @@ entities: - type: Transform pos: 0.5,-38.5 parent: 2 + - uid: 16003 + components: + - type: Transform + pos: 55.5,-51.5 + parent: 2 + - uid: 16004 + components: + - type: Transform + pos: 55.5,-50.5 + parent: 2 + - uid: 16005 + components: + - type: Transform + pos: 55.5,-49.5 + parent: 2 + - uid: 16006 + components: + - type: Transform + pos: 55.5,-47.5 + parent: 2 + - uid: 16007 + components: + - type: Transform + pos: 55.5,-45.5 + parent: 2 + - uid: 16008 + components: + - type: Transform + pos: 55.5,-46.5 + parent: 2 + - uid: 16009 + components: + - type: Transform + pos: 55.5,-43.5 + parent: 2 + - uid: 16010 + components: + - type: Transform + pos: 55.5,-42.5 + parent: 2 + - uid: 16012 + components: + - type: Transform + pos: 55.5,-44.5 + parent: 2 - proto: GrilleBroken entities: - uid: 1247 @@ -71777,20 +71963,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#03FCD3FF' - - uid: 5428 - components: - - type: Transform - pos: 47.5,-45.5 - parent: 2 - - type: AtmosPipeColor - color: '#9F2B68FF' - - uid: 6513 - components: - - type: Transform - pos: 49.5,-45.5 - parent: 2 - - type: AtmosPipeColor - color: '#9F2B68FF' - uid: 12861 components: - type: Transform @@ -71807,11 +71979,25 @@ entities: parent: 2 - type: AtmosPipeColor color: '#03FCD3FF' - - uid: 12904 + - uid: 12959 + components: + - type: Transform + pos: 50.5,-45.5 + parent: 2 + - type: AtmosPipeColor + color: '#9F2B68FF' + - uid: 13028 + components: + - type: Transform + pos: 49.5,-45.5 + parent: 2 + - type: AtmosPipeColor + color: '#9F2B68FF' + - uid: 15257 components: - type: Transform rot: 3.141592653589793 rad - pos: 48.5,-45.5 + pos: 51.5,-45.5 parent: 2 - type: AtmosPipeColor color: '#9F2B68FF' @@ -72269,7 +72455,7 @@ entities: pos: 12.5,12.5 parent: 2 - type: Door - secondsUntilStateChange: -3791.852 + secondsUntilStateChange: -5159.2036 state: Closing - uid: 5750 components: @@ -73028,10 +73214,10 @@ entities: parent: 2 - type: DeviceLinkSource linkedPorts: - 12890: + 12905: - - Pressed - Toggle - 12891: + 12960: - - Pressed - Toggle - type: Fixtures @@ -73040,27 +73226,24 @@ entities: currentLabel: Burn Chamber Blast Doors - type: NameModifier baseName: lockable button - - uid: 7828 + - uid: 12955 components: - - type: MetaData - name: lockable button (Burn Chamber Blast Doors) - type: Transform - pos: 49.5,-49.5 + pos: 51.5,-49.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Engineering - type: DeviceLinkSource linkedPorts: - 12891: + 12960: - - Pressed - Toggle - 12890: + 12905: - - Pressed - Toggle - type: Fixtures fixtures: {} - - type: Label - currentLabel: Burn Chamber Blast Doors - - type: NameModifier - baseName: lockable button - uid: 15398 components: - type: Transform @@ -78352,18 +78535,6 @@ entities: rot: 3.141592653589793 rad pos: 36.5,3.5 parent: 2 - - uid: 12980 - components: - - type: Transform - anchored: False - rot: 3.141592653589793 rad - pos: 49.5,-48.5 - parent: 2 - - uid: 12981 - components: - - type: Transform - pos: 46.5,-44.5 - parent: 2 - uid: 12991 components: - type: Transform @@ -78576,11 +78747,22 @@ entities: rot: 3.141592653589793 rad pos: 58.5,41.5 parent: 2 + - uid: 12883 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 51.5,-48.5 + parent: 2 - uid: 13639 components: - type: Transform pos: 43.5,25.5 parent: 2 + - uid: 15254 + components: + - type: Transform + pos: 48.5,-44.5 + parent: 2 - proto: Protolathe entities: - uid: 5238 @@ -79546,7 +79728,7 @@ entities: - uid: 1257 components: - type: Transform - pos: 45.5,-44.5 + pos: 47.5,-47.5 parent: 2 - uid: 1463 components: @@ -79599,11 +79781,6 @@ entities: rot: 1.5707963267948966 rad pos: 62.5,26.5 parent: 2 - - uid: 8665 - components: - - type: Transform - pos: 45.5,-45.5 - parent: 2 - uid: 8689 components: - type: Transform @@ -79620,20 +79797,20 @@ entities: - type: Transform pos: 64.5,26.5 parent: 2 - - uid: 10436 + - uid: 12908 components: - type: Transform - pos: 45.5,-47.5 + pos: 47.5,-46.5 parent: 2 - - uid: 11586 + - uid: 12909 components: - type: Transform - pos: 45.5,-48.5 + pos: 47.5,-45.5 parent: 2 - - uid: 12986 + - uid: 12913 components: - type: Transform - pos: 45.5,-46.5 + pos: 47.5,-44.5 parent: 2 - uid: 13517 components: @@ -79641,6 +79818,11 @@ entities: rot: 3.141592653589793 rad pos: 41.5,32.5 parent: 2 + - uid: 15344 + components: + - type: Transform + pos: 47.5,-48.5 + parent: 2 - proto: ReinforcedWindow entities: - uid: 6 @@ -81505,6 +81687,11 @@ entities: - type: Transform pos: -13.5,1.5 parent: 2 + - uid: 12954 + components: + - type: Transform + pos: 45.5,-47.5 + parent: 2 - uid: 12979 components: - type: Transform @@ -81520,6 +81707,26 @@ entities: - type: Transform pos: 41.5,-49.5 parent: 2 + - uid: 13029 + components: + - type: Transform + pos: 45.5,-48.5 + parent: 2 + - uid: 13030 + components: + - type: Transform + pos: 45.5,-45.5 + parent: 2 + - uid: 13031 + components: + - type: Transform + pos: 45.5,-44.5 + parent: 2 + - uid: 13032 + components: + - type: Transform + pos: 45.5,-46.5 + parent: 2 - uid: 13079 components: - type: Transform @@ -84005,18 +84212,17 @@ entities: fixtures: {} - proto: SignFire entities: - - uid: 12993 + - uid: 15994 components: - type: Transform - pos: 45.5,-49.5 + pos: 47.5,-49.5 parent: 2 - type: Fixtures fixtures: {} - - uid: 15123 + - uid: 15995 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 50.5,-45.5 + pos: 52.5,-45.5 parent: 2 - type: Fixtures fixtures: {} @@ -87026,16 +87232,6 @@ entities: - SurveillanceCameraEngineering nameSet: True id: Atmos Entrance - - uid: 12781 - components: - - type: Transform - pos: 42.5,-40.5 - parent: 2 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraEngineering - nameSet: True - id: Canister Storage - uid: 12782 components: - type: Transform @@ -87152,16 +87348,6 @@ entities: - type: SurveillanceCamera setupAvailableNetworks: - SurveillanceCameraEngineering - - uid: 13618 - components: - - type: Transform - pos: 41.5,-48.5 - parent: 2 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraEngineering - nameSet: True - id: TEG Room - uid: 13733 components: - type: Transform @@ -94362,11 +94548,6 @@ entities: - type: Transform pos: 33.5,-27.5 parent: 2 - - uid: 4299 - components: - - type: Transform - pos: 50.5,-47.5 - parent: 2 - uid: 4313 components: - type: Transform @@ -95119,6 +95300,11 @@ entities: - type: Transform pos: 72.5,34.5 parent: 2 + - uid: 7828 + components: + - type: Transform + pos: 52.5,-49.5 + parent: 2 - uid: 7834 components: - type: Transform @@ -96568,20 +96754,20 @@ entities: - type: Transform pos: 20.5,-60.5 parent: 2 - - uid: 12888 + - uid: 12781 components: - type: Transform - pos: 50.5,-49.5 + pos: 52.5,-43.5 parent: 2 - - uid: 12889 + - uid: 12886 components: - type: Transform - pos: 49.5,-49.5 + pos: 52.5,-44.5 parent: 2 - - uid: 12892 + - uid: 12888 components: - type: Transform - pos: 46.5,-49.5 + pos: 52.5,-46.5 parent: 2 - uid: 12893 components: @@ -96596,47 +96782,34 @@ entities: - uid: 12895 components: - type: Transform - pos: 46.5,-43.5 + pos: 52.5,-47.5 parent: 2 - uid: 12896 components: - type: Transform - pos: 47.5,-43.5 + rot: -1.5707963267948966 rad + pos: 50.5,-43.5 parent: 2 - uid: 12897 components: - type: Transform + rot: -1.5707963267948966 rad pos: 48.5,-43.5 parent: 2 - uid: 12898 components: - type: Transform - pos: 49.5,-43.5 + pos: 52.5,-45.5 parent: 2 - uid: 12899 components: - type: Transform - pos: 50.5,-43.5 - parent: 2 - - uid: 12905 - components: - - type: Transform - pos: 50.5,-48.5 + pos: 52.5,-48.5 parent: 2 - uid: 12907 components: - type: Transform - pos: 50.5,-46.5 - parent: 2 - - uid: 12908 - components: - - type: Transform - pos: 50.5,-45.5 - parent: 2 - - uid: 12909 - components: - - type: Transform - pos: 50.5,-44.5 + pos: 47.5,-43.5 parent: 2 - uid: 12920 components: @@ -98105,6 +98278,11 @@ entities: - type: Transform pos: 12.5,-54.5 parent: 2 + - uid: 15123 + components: + - type: Transform + pos: 51.5,-43.5 + parent: 2 - uid: 15173 components: - type: Transform @@ -98121,6 +98299,27 @@ entities: rot: 3.141592653589793 rad pos: 43.5,44.5 parent: 2 + - uid: 15261 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 49.5,-43.5 + parent: 2 + - uid: 15332 + components: + - type: Transform + pos: 48.5,-49.5 + parent: 2 + - uid: 15343 + components: + - type: Transform + pos: 51.5,-49.5 + parent: 2 + - uid: 15345 + components: + - type: Transform + pos: 47.5,-49.5 + parent: 2 - uid: 15363 components: - type: Transform From 6a675126ad848468cfce6f538545d77ed5e7fea9 Mon Sep 17 00:00:00 2001 From: PJBot Date: Thu, 19 Mar 2026 07:45:31 +0000 Subject: [PATCH 560/603] Automatic changelog update --- Resources/Changelog/Maps.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Resources/Changelog/Maps.yml b/Resources/Changelog/Maps.yml index fea9a3f6e52..2ff406fa521 100644 --- a/Resources/Changelog/Maps.yml +++ b/Resources/Changelog/Maps.yml @@ -1060,4 +1060,11 @@ id: 130 time: '2026-03-15T00:02:49.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43143 +- author: rwrv1 + changes: + - message: On Packed, updated the TEG burn chamber, separating it from the station. + type: Tweak + id: 131 + time: '2026-03-19T07:44:21.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43278 Order: 2 From b251848409f330eae15e2a45bd846de29020ca06 Mon Sep 17 00:00:00 2001 From: SnappingOpossum Date: Fri, 20 Mar 2026 09:37:14 +1100 Subject: [PATCH 561/603] Move salvage RandomSpawners to EntityTableSpawners (#43233) * Move salvage RandomSpawners to EntityTableSpawners * Spellcheck Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> * Apply requested changes for spawner * Move another prob to parent selector * Why wasn't it that before --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- .../Markers/Spawners/Random/crystal.yml | 38 +-- .../Markers/Spawners/Random/mineshaft.yml | 96 +++---- .../Markers/Spawners/Random/salvage.yml | 237 ++++++++---------- 3 files changed, 181 insertions(+), 190 deletions(-) diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/crystal.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/crystal.yml index fccc04b4957..1d0cd40b867 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/crystal.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/crystal.yml @@ -1,22 +1,28 @@ +- type: entityTable + id: RandomCrystalTable + table: !type:GroupSelector + children: + - id: CrystalGreen + - id: CrystalPink + - id: CrystalOrange + - id: CrystalBlue + - id: CrystalCyan + - id: CrystalYellow + - id: CrystalBlack + - id: CrystalGrey + - type: entity name: Crystal Spawner suffix: 70% id: CrystalSpawner parent: MarkerBase components: - - type: Sprite - layers: - - state: red - - sprite: Structures/Decoration/crystal.rsi - state: crystal_grey - - type: RandomSpawner - prototypes: - - CrystalGreen - - CrystalPink - - CrystalOrange - - CrystalBlue - - CrystalCyan - - CrystalYellow - - CrystalBlack - - CrystalGrey - chance: 0.7 + - type: Sprite + layers: + - state: red + - sprite: Structures/Decoration/crystal.rsi + state: crystal_grey + - type: EntityTableSpawner + table: !type:NestedSelector + tableId: RandomCrystalTable + prob: 0.7 diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/mineshaft.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/mineshaft.yml index 34e6212dae2..e43f45a34e2 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/mineshaft.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/mineshaft.yml @@ -1,83 +1,87 @@ - type: entity + parent: MarkerBase id: RandomWoodenSupport name: wooden support spawner - parent: MarkerBase components: - type: Sprite layers: - - state: red - - sprite: Objects/Decoration/mines.rsi - state: support - - type: RandomSpawner - prototypes: - - WoodenSupport - - WoodenSupportBeam - - WoodenSupportBeam - - WoodenSupportBeam - chance: 0.9 + - state: red + - sprite: Objects/Decoration/mines.rsi + state: support + - type: EntityTableSpawner + table: !type:GroupSelector + prob: 0.9 + children: + - id: WoodenSupport + - id: WoodenSupportBeam + weight: 3 - type: entity + parent: MarkerBase id: RandomWoodenWall name: wooden wall spawner - parent: MarkerBase components: - type: Sprite layers: - - state: red - - sprite: Objects/Decoration/mines.rsi - state: support_wall - - type: RandomSpawner - prototypes: - - WoodenSupportWall - - WoodenSupportWallBroken - chance: 0.9 + - state: red + - sprite: Objects/Decoration/mines.rsi + state: support_wall + - type: EntityTableSpawner + table: !type:GroupSelector + prob: 0.9 + children: + - id: WoodenSupportWall + - id: WoodenSupportWallBroken - type: entity + parent: MarkerBase id: RandomStalagmiteOrCrystal name: stalagmite or crystal spawner - parent: MarkerBase components: - type: Sprite layers: - - state: red - - sprite: Objects/Decoration/Flora/flora_stalagmite.rsi - state: stalagmite2 - - type: RandomSpawner + - state: red + - sprite: Objects/Decoration/Flora/flora_stalagmite.rsi + state: stalagmite2 + - type: EntityTableSpawner + table: !type:GroupSelector + prob: 0.9 + children: + - id: RandomBrownStalagmite + - id: RandomGreyStalagmite + - !type:NestedSelector + tableId: RandomCrystalTable + prob: 0.7 offset: 0.3 - prototypes: - - RandomBrownStalagmite - - RandomGreyStalagmite - - CrystalSpawner - chance: 0.9 - type: entity + parent: MarkerBase id: RandomBrownStalagmite name: brown stalagmite spawner - parent: MarkerBase components: - type: Sprite layers: - - state: red - - sprite: Objects/Decoration/Flora/flora_stalagmite.rsi - state: stalagmite2 - - type: RandomSpawner + - state: red + - sprite: Objects/Decoration/Flora/flora_stalagmite.rsi + state: stalagmite2 + - type: EntityTableSpawner + table: + id: FloraStalagmite + prob: 0.9 offset: 0.3 - prototypes: - - FloraStalagmite - chance: 0.9 - type: entity + parent: MarkerBase id: RandomGreyStalagmite name: grey stalagmite spawner - parent: MarkerBase components: - type: Sprite layers: - - state: red - - sprite: Objects/Decoration/Flora/flora_stalagmite.rsi - state: grey_stalagmite3 - - type: RandomSpawner + - state: red + - sprite: Objects/Decoration/Flora/flora_stalagmite.rsi + state: grey_stalagmite3 + - type: EntityTableSpawner + table: + id: FloraGreyStalagmite + prob: 0.9 offset: 0.3 - prototypes: - - FloraGreyStalagmite - chance: 0.9 diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/salvage.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/salvage.yml index 8e10e8858a6..addcfdc3f7d 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/salvage.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/salvage.yml @@ -2,89 +2,103 @@ # These rulesets exist because Salvage mobs kept harassing the station and going out of control. - type: entity + parent: MarkerBase name: Salvage Material Crate Spawner id: SalvageMaterialCrateSpawner - parent: MarkerBase components: - - type: Sprite - layers: - - state: red - - sprite: Structures/Storage/Crates/generic.rsi - state: icon - - type: RandomSpawner - rarePrototypes: - - SalvageHumanCorpse - - CrateMaterialPlasteel - - CrateMaterialWood - - CrateMaterialPlastic - - CrateSalvageEquipment - - CrateMaterialSteel - - CrateMaterialGlass - - CrateServiceJanitorialSupplies - - CrateHydroponicsSeedsMedicinal - - CrateEmergencyInternals - - CrateFoodMRE - - CrateMaterialTextiles - - CrateMedicalSupplies - - CrateEngineeringCableBulk - - CrateMaterialCardboard - - CrateServiceBooks - - CrateServiceSmokeables - - CrateTrashCartFilled - - ClosetMaintenanceFilledRandom - - ClosetEmergencyFilledRandom - rareChance: 0.4 - prototypes: - - CrateSalvageAssortedGoodies - chance: 0.9 + - type: Sprite + layers: + - state: red + - sprite: Structures/Storage/Crates/generic.rsi + state: icon + - type: EntityTableSpawner + table: !type:GroupSelector + prob: 0.9 + children: + - id: CrateSalvageAssortedGoodies + weight: 0.6 + - !type:GroupSelector + weight: 0.4 + children: + - id: SalvageHumanCorpse + - id: CrateMaterialPlasteel + - id: CrateMaterialWood + - id: CrateMaterialPlastic + - id: CrateSalvageEquipment + - id: CrateMaterialSteel + - id: CrateMaterialGlass + - id: CrateServiceJanitorialSupplies + - id: CrateHydroponicsSeedsMedicinal + - id: CrateEmergencyInternals + - id: CrateFoodMRE + - id: CrateMaterialTextiles + - id: CrateMedicalSupplies + - id: CrateEngineeringCableBulk + - id: CrateMaterialCardboard + - id: CrateServiceBooks + - id: CrateServiceSmokeables + - id: CrateTrashCartFilled + - id: ClosetMaintenanceFilledRandom + - id: ClosetEmergencyFilledRandom offset: 0.0 - type: entity + parent: MarkerBase name: salvage loot spawner id: SalvageLootSpawner - parent: MarkerBase components: - - type: Sprite - layers: - - state: red - - sprite: Objects/Weapons/Melee/crusher.rsi - state: icon - - type: RandomSpawner - prototypes: - - WeaponCrusher - - WeaponCrusherDagger - - WeaponCrusherGlaive - - MiningDrill - offset: 0.0 + - type: Sprite + layers: + - state: red + - sprite: Objects/Weapons/Melee/crusher.rsi + state: icon + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - id: WeaponCrusher + - id: WeaponCrusherDagger + - id: WeaponCrusherGlaive + - id: MiningDrill + offset: 0.0 + +- type: entityTable + id: SalvageMobTable + table: !type:GroupSelector + children: + - id: MobCarpSalvage + weight: 5 + - id: MobTickSalvage + weight: 3 + - id: MobSharkSalvage + weight: 2.5 + - id: PlushieCarp + - id: DehydratedSpaceCarp - type: entity + parent: MarkerBase name: Salvage Mob Spawner id: SalvageMobSpawner - parent: MarkerBase suffix: 25 components: - - type: Sprite - layers: - - state: red - - sprite: Mobs/Aliens/Carps/space.rsi - state: icon - - type: RandomSpawner - rarePrototypes: - - MobSharkSalvage - rareChance: 0.2 - prototypes: - - MobCarpSalvage - - MobCarpSalvage - - MobCarpSalvage - - MobCarpSalvage - - MobCarpSalvage - - MobTickSalvage - - MobTickSalvage - - MobTickSalvage - - PlushieCarp - - DehydratedSpaceCarp - chance: 0.25 - offset: 0.2 + - type: Sprite + layers: + - state: red + - sprite: Mobs/Aliens/Carps/space.rsi + state: icon + - type: EntityTableSpawner + table: !type:NestedSelector + prob: 0.25 + tableId: SalvageMobTable + +- type: entity + parent: SalvageMobSpawner + id: SalvageMobSpawner75 + suffix: 75 + components: + - type: EntityTableSpawner + table: !type:NestedSelector + prob: 0.75 + tableId: SalvageMobTable - type: entity #I made this in case someone decided to make a terrifying space tick swarm for salvage. that someone may be me -EG404 name: Salvage Space Tick Spawner @@ -115,29 +129,6 @@ prototypes: - MobBearSpaceSalvage -- type: entity - id: SalvageMobSpawner75 - parent: SalvageMobSpawner - suffix: 75 - components: - - type: RandomSpawner - rarePrototypes: - - MobSharkSalvage - rareChance: 0.2 - prototypes: - - MobCarpSalvage - - MobCarpSalvage - - MobCarpSalvage - - MobCarpSalvage - - MobCarpSalvage - - MobTickSalvage - - MobTickSalvage - - MobTickSalvage - - PlushieCarp - - DehydratedSpaceCarp - chance: 0.75 - offset: 0.2 - - type: entity name: Salvage Space Kangaroo Spawner id: SpawnMobKangarooSalvage @@ -181,50 +172,40 @@ - MobCobraSpaceSalvage - type: entity + parent: MarkerBase name: Salvage Flesh Spawner id: SalvageFleshSpawner - parent: SalvageMobSpawner suffix: 100 components: - - type: Sprite - layers: - - state: red - - sprite: Mobs/Aliens/flesh.rsi - state: jared - - type: RandomSpawner - rarePrototypes: - - MobSharkSalvage - rareChance: 0 - prototypes: - - MobFleshJaredSalvage - - MobFleshGolemSalvage - - MobFleshGolemSalvage - - MobFleshClampSalvage - - MobFleshClampSalvage - - MobFleshLoverSalvage - - MobFleshLoverSalvage - chance: 1 - offset: 0.2 + - type: Sprite + layers: + - state: red + - sprite: Mobs/Aliens/flesh.rsi + state: jared + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - id: MobFleshGolemSalvage + - id: MobFleshClampSalvage + - id: MobFleshLoverSalvage + - id: MobFleshJaredSalvage + weight: 0.5 - type: entity + parent: MarkerBase name: Salvage Living Light Spawner id: SalvageLivingLightSpawner - parent: SalvageMobSpawner suffix: 100 components: - - type: Sprite - layers: - - state: red - - sprite: Mobs/Elemental/living_light/luminous_person.rsi - state: luminous_person - - type: RandomSpawner - rarePrototypes: - - MobSharkSalvage - rareChance: 0 - prototypes: - - MobLuminousPersonSalvage - - MobLuminousEntity - - MobLuminousObjectSalvage - - MobLuminousObjectSalvage - chance: 1 - offset: 0.2 + - type: Sprite + layers: + - state: red + - sprite: Mobs/Elemental/living_light/luminous_person.rsi + state: luminous_person + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - id: MobLuminousPersonSalvage + - id: MobLuminousEntitySalvage + - id: MobLuminousObjectSalvage + weight: 2 From f27d60049c485cc1664ba912a93a26e4dd51a0d9 Mon Sep 17 00:00:00 2001 From: ProPeperos <61984624+ProPeperos@users.noreply.github.com> Date: Fri, 20 Mar 2026 15:22:50 +0100 Subject: [PATCH 562/603] Borg charger hitbox changes (#43300) * Borg chargers no longer rotate * Orbing your charger NOW --- .../Entities/Structures/Power/chargers.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Resources/Prototypes/Entities/Structures/Power/chargers.yml b/Resources/Prototypes/Entities/Structures/Power/chargers.yml index 25e3616f183..e80bb909412 100644 --- a/Resources/Prototypes/Entities/Structures/Power/chargers.yml +++ b/Resources/Prototypes/Entities/Structures/Power/chargers.yml @@ -237,6 +237,7 @@ components: - type: Sprite sprite: Structures/Power/borg_charger.rsi + noRot: True layers: - state: borgcharger-u1 map: ["base"] @@ -304,6 +305,17 @@ entity_storage: !type:Container machine_board: !type:Container machine_parts: !type:Container + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.48 + density: 190 + mask: + - MachineMask + layer: + - MachineLayer - type: entity parent: BorgCharger From 545a4bcf9bef6abfc63b94fc73152000e3c935cf Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 20 Mar 2026 14:36:46 +0000 Subject: [PATCH 563/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index ca46d7af589..379d09c3dc6 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: PicklOH - changes: - - message: Added more Syndie ammo to the EMAG lathe inventory - type: Add - id: 9072 - time: '2025-10-11T05:14:34.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40822 - author: TrixxedHeart changes: - message: Updated Xenoarchaeology guidebook page to current system. @@ -4029,3 +4022,10 @@ id: 9583 time: '2026-03-18T06:31:14.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43285 +- author: ProPeperos + changes: + - message: Changed the hitbox of borg chargers, so they no longer get stuck in doorways. + type: Tweak + id: 9584 + time: '2026-03-20T14:35:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43300 From d14423f0f6bb3bd58f17172d4e4fcc1bbec663b0 Mon Sep 17 00:00:00 2001 From: SnappingOpossum Date: Sat, 21 Mar 2026 12:42:57 +1100 Subject: [PATCH 564/603] Move some simple random spawners to entity table spawners (#43305) Simple random spawners to entity tables --- .../Markers/Spawners/Mobs/hostile.yml | 19 ++-- .../Markers/Spawners/Random/altars.yml | 87 ++++++++++--------- .../Markers/Spawners/Random/arcade.yml | 10 +-- .../Markers/Spawners/Random/cables.yml | 24 ++--- .../Markers/Spawners/Random/curtains.yml | 61 ++++++------- .../Markers/Spawners/Random/fancytables.yml | 37 ++++---- .../Markers/Spawners/Random/folders.yml | 19 ++-- .../Markers/Spawners/Random/grille.yml | 18 ++-- .../Markers/Spawners/Random/maintenance.yml | 20 ++--- .../Markers/Spawners/Random/pottedplants.yml | 82 ++++++++--------- 10 files changed, 192 insertions(+), 185 deletions(-) diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Mobs/hostile.yml b/Resources/Prototypes/Entities/Markers/Spawners/Mobs/hostile.yml index 2294efbebdf..6eb09342fa1 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Mobs/hostile.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Mobs/hostile.yml @@ -138,15 +138,16 @@ - state: green - state: quartz_crab sprite: Mobs/Elemental/orecrab.rsi - - type: RandomSpawner - prototypes: - - MobSpawnCrabUranium - - MobSpawnCrabIron - - MobSpawnCrabQuartz - - MobSpawnCrabSilver - - MobSpawnCrabCoal - - MobSpawnCrabGold - - MobSpawnCrabBananium + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - id: MobSpawnCrabUranium + - id: MobSpawnCrabIron + - id: MobSpawnCrabQuartz + - id: MobSpawnCrabSilver + - id: MobSpawnCrabCoal + - id: MobSpawnCrabGold + - id: MobSpawnCrabBananium - type: entity parent: MarkerBase diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/altars.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/altars.yml index 576f29a27c7..83f65dca9a1 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/altars.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/altars.yml @@ -3,57 +3,60 @@ id: AltarSpawner parent: MarkerBase components: - - type: Sprite - layers: - - state: red - - sprite: Structures/Furniture/Altars/Gods/nanotrasen.rsi - state: nanotrasen - - type: RandomSpawner - prototypes: - - AltarNanotrasen - - AltarChaos - - AltarDruid - - AltarToolbox - - AltarSpaceChristian - - AltarSatana - - AltarTechnology - offset: 0.0 + - type: Sprite + layers: + - state: red + - sprite: Structures/Furniture/Altars/Gods/nanotrasen.rsi + state: nanotrasen + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - id: AltarNanotrasen + - id: AltarChaos + - id: AltarDruid + - id: AltarToolbox + - id: AltarSpaceChristian + - id: AltarSatana + - id: AltarTechnology + offset: 0.0 - type: entity name: random convert-altar spawner id: ConvertAltarSpawner parent: MarkerBase components: - - type: Sprite - layers: - - state: red - - sprite: Structures/Furniture/Altars/Gods/convertaltar.rsi - state: convertaltar - - type: RandomSpawner - prototypes: - - AltarConvert - - AltarConvertFestival - - AltarConvertMaint - - AltarConvertBlue - - AltarConvertBurden - - AltarConvertOrange - - AltarConvertRed - - AltarConvertWhite - - AltarConvertYellow - offset: 0.0 + - type: Sprite + layers: + - state: red + - sprite: Structures/Furniture/Altars/Gods/convertaltar.rsi + state: convertaltar + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - id: AltarConvert + - id: AltarConvertFestival + - id: AltarConvertMaint + - id: AltarConvertBlue + - id: AltarConvertBurden + - id: AltarConvertOrange + - id: AltarConvertRed + - id: AltarConvertWhite + - id: AltarConvertYellow + offset: 0.0 - type: entity name: random cult-altar spawner id: CultAltarSpawner parent: MarkerBase components: - - type: Sprite - layers: - - state: red - - sprite: Structures/Furniture/Altars/Cults/fangs.rsi - state: full - - type: RandomSpawner - prototypes: - - AltarHeaven - - AltarFangs - offset: 0.0 + - type: Sprite + layers: + - state: red + - sprite: Structures/Furniture/Altars/Cults/fangs.rsi + state: full + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - id: AltarHeaven + - id: AltarFangs + offset: 0.0 diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/arcade.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/arcade.yml index 4c4dc2da280..edcef69d98b 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/arcade.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/arcade.yml @@ -8,8 +8,8 @@ - state: red - sprite: Structures/Machines/arcade.rsi state: icon - - type: RandomSpawner - prototypes: - - BlockGameArcade - - SpaceVillainArcadeFilled - chance: 1 + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - id: BlockGameArcade + - id: SpaceVillainArcadeFilled diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/cables.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/cables.yml index 7684c84897d..c2b305ae303 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/cables.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/cables.yml @@ -11,10 +11,10 @@ state: hvcable_3 - sprite: Structures/Power/Cables/hv_cable.rsi state: hvcable_12 - - type: RandomSpawner - prototypes: - - CableHV - chance: 0.5 + - type: EntityTableSpawner + table: + id: CableHV + prob: 0.5 - type: entity parent: MarkerBase @@ -35,10 +35,10 @@ color: Yellow - sprite: Structures/Power/Cables/mv_cable.rsi state: mvstripes_12 - - type: RandomSpawner - prototypes: - - CableMV - chance: 0.5 + - type: EntityTableSpawner + table: + id: CableMV + prob: 0.5 - type: entity parent: MarkerBase @@ -55,7 +55,7 @@ - sprite: Structures/Power/Cables/lv_cable.rsi state: lvcable_12 color: Green - - type: RandomSpawner - prototypes: - - CableApcExtension - chance: 0.5 + - type: EntityTableSpawner + table: + id: CableApcExtension + prob: 0.5 diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/curtains.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/curtains.yml index 54c275fd580..9d90d9a0676 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/curtains.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/curtains.yml @@ -3,33 +3,34 @@ id: CurtainSpawner parent: MarkerBase components: - - type: Sprite - layers: - - state: red - - sprite: Structures/Decoration/Curtains/hospital.rsi - state: closed - - type: RandomSpawner - prototypes: - - HospitalCurtains - - CurtainsBlack - - CurtainsBlue - - CurtainsSkyBlue - - CurtainsCyan - - CurtainsGreen - - CurtainsOrange - - CurtainsPink - - CurtainsPurple - - CurtainsRed - - CurtainsWhite - - CurtainsWhiteOpen - - CurtainsRedOpen - - CurtainsPurpleOpen - - CurtainsPinkOpen - - CurtainsOrangeOpen - - CurtainsGreenOpen - - CurtainsCyanOpen - - CurtainsSkyBlueOpen - - CurtainsBlueOpen - - CurtainsBlackOpen - - HospitalCurtainsOpen - offset: 0.0 + - type: Sprite + layers: + - state: red + - sprite: Structures/Decoration/Curtains/hospital.rsi + state: closed + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - id: HospitalCurtains + - id: CurtainsBlack + - id: CurtainsBlue + - id: CurtainsSkyBlue + - id: CurtainsCyan + - id: CurtainsGreen + - id: CurtainsOrange + - id: CurtainsPink + - id: CurtainsPurple + - id: CurtainsRed + - id: CurtainsWhite + - id: CurtainsWhiteOpen + - id: CurtainsRedOpen + - id: CurtainsPurpleOpen + - id: CurtainsPinkOpen + - id: CurtainsOrangeOpen + - id: CurtainsGreenOpen + - id: CurtainsCyanOpen + - id: CurtainsSkyBlueOpen + - id: CurtainsBlueOpen + - id: CurtainsBlackOpen + - id: HospitalCurtainsOpen + offset: 0.0 diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/fancytables.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/fancytables.yml index 191153c1bdd..83bdb9426a2 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/fancytables.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/fancytables.yml @@ -3,21 +3,22 @@ id: FancyTableSpawner parent: MarkerBase components: - - type: Sprite - layers: - - state: red - - sprite: Structures/Furniture/Tables/Fancy/blue.rsi - state: full - - type: RandomSpawner - prototypes: - - TableFancyBlue - - TableFancySkyBlue - - TableFancyCyan - - TableFancyBlack - - TableFancyRed - - TableFancyPurple - - TableFancyPink - - TableFancyGreen - - TableFancyOrange - - TableFancyWhite - offset: 0.0 + - type: Sprite + layers: + - state: red + - sprite: Structures/Furniture/Tables/Fancy/blue.rsi + state: full + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - id: TableFancyBlue + - id: TableFancySkyBlue + - id: TableFancyCyan + - id: TableFancyBlack + - id: TableFancyRed + - id: TableFancyPurple + - id: TableFancyPink + - id: TableFancyGreen + - id: TableFancyOrange + - id: TableFancyWhite + offset: 0.0 diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/folders.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/folders.yml index 5d4c133a034..2be9764c93e 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/folders.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/folders.yml @@ -12,13 +12,14 @@ layers: - state: folder-base - state: folder-colormap - - type: RandomSpawner + - type: EntityTableSpawner offset: 0 - prototypes: - - BoxFolderBase - - BoxFolderRed - - BoxFolderBlue - - BoxFolderYellow - - BoxFolderGrey - - BoxFolderBlack - - BoxFolderGreen + table: !type:GroupSelector + children: + - id: BoxFolderBase + - id: BoxFolderRed + - id: BoxFolderBlue + - id: BoxFolderYellow + - id: BoxFolderGrey + - id: BoxFolderBlack + - id: BoxFolderGreen diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/grille.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/grille.yml index 2ed58711aea..3950bf0160a 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/grille.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/grille.yml @@ -3,14 +3,14 @@ id: GrilleSpawner parent: MarkerBase components: - - type: Sprite - layers: - - sprite: Structures/Walls/random.rsi - state: randomgrille - - type: RandomSpawner - prototypes: - - Grille - - GrilleBroken - chance: 1.0 + - type: Sprite + layers: + - sprite: Structures/Walls/random.rsi + state: randomgrille + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - id: Grille + - id: GrilleBroken placement: mode: AlignTileAny diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml index f89ff9a4330..99d9a4be99e 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml @@ -380,16 +380,16 @@ id: MaintenancePlantSpawner parent: MarkerBase components: - - type: Sprite - layers: - - state: red - - sprite: Objects/Misc/spaceshroom.rsi - state: structure - - type: RandomSpawner - prototypes: - - Spaceshroom - chance: 0.6 - offset: 0.0 + - type: Sprite + layers: + - state: red + - sprite: Objects/Misc/spaceshroom.rsi + state: structure + - type: EntityTableSpawner + table: + id: Spaceshroom + prob: 0.6 + offset: 0.0 - type: entityTable diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/pottedplants.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/pottedplants.yml index a61af1467bf..adf539edeb5 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/pottedplants.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/pottedplants.yml @@ -5,38 +5,38 @@ components: - type: Sprite layers: - - state: red - - sprite: Structures/Furniture/potted_plants.rsi - state: random - - type: RandomSpawner + - state: red + - sprite: Structures/Furniture/potted_plants.rsi + state: random + - type: EntityTableSpawner offset: 0 - prototypes: - - PottedPlant0 - - PottedPlant1 - - PottedPlant2 - - PottedPlant3 - - PottedPlant4 - - PottedPlant5 - - PottedPlant6 - - PottedPlant7 - - PottedPlant8 - - PottedPlant10 - - PottedPlant11 - - PottedPlant12 - - PottedPlant13 - - PottedPlant14 - - PottedPlant15 - - PottedPlant16 - - PottedPlant17 - - PottedPlant18 - - PottedPlant19 - - PottedPlant20 - - PottedPlant21 - - PottedPlant22 - - PottedPlant23 - - PottedPlant24 - - PottedPlant26 - chance: 1 + table: !type:GroupSelector + children: + - id: PottedPlant0 + - id: PottedPlant1 + - id: PottedPlant2 + - id: PottedPlant3 + - id: PottedPlant4 + - id: PottedPlant5 + - id: PottedPlant6 + - id: PottedPlant7 + - id: PottedPlant8 + - id: PottedPlant10 + - id: PottedPlant11 + - id: PottedPlant12 + - id: PottedPlant13 + - id: PottedPlant14 + - id: PottedPlant15 + - id: PottedPlant16 + - id: PottedPlant17 + - id: PottedPlant18 + - id: PottedPlant19 + - id: PottedPlant20 + - id: PottedPlant21 + - id: PottedPlant22 + - id: PottedPlant23 + - id: PottedPlant24 + - id: PottedPlant26 - type: entity parent: MarkerBase @@ -45,14 +45,14 @@ components: - type: Sprite layers: - - state: red - - sprite: Structures/Furniture/potted_plants.rsi - state: plant-27 - - type: RandomSpawner + - state: red + - sprite: Structures/Furniture/potted_plants.rsi + state: plant-27 + - type: EntityTableSpawner offset: 0 - prototypes: - - PottedPlant27 - - PottedPlant28 - - PottedPlant29 - - PottedPlant30 - chance: 1 + table: !type:GroupSelector + children: + - id: PottedPlant27 + - id: PottedPlant28 + - id: PottedPlant29 + - id: PottedPlant30 From 7a9cd0be40207931949568dbed82ae32d92a39e0 Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Sat, 21 Mar 2026 17:50:02 +0100 Subject: [PATCH 565/603] Fix melee attack sprite rotations (#43307) fix melee rotation --- .../Weapons/Melee/MeleeWeaponSystem.Effects.cs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs b/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs index 0bccd5b1b39..89715089695 100644 --- a/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs +++ b/Content.Client/Weapons/Melee/MeleeWeaponSystem.Effects.cs @@ -94,6 +94,10 @@ public override void DoLunge(EntityUid user, EntityUid weapon, Angle angle, Vect } } + ///

+ /// Makes the sprite move in a slash motion around the player. + /// For example for wide swing animations. + /// private Animation GetSlashAnimation(Entity sprite, Angle arc, Angle spriteRotation, float length, float offset) { var startRotation = sprite.Comp.Rotation + (arc * 0.5f); @@ -105,7 +109,6 @@ private Animation GetSlashAnimation(Entity sprite, Angle arc, A startRotation += spriteRotation; endRotation += spriteRotation; - sprite.Comp.NoRotation = true; return new Animation() { @@ -141,6 +144,10 @@ private Animation GetSlashAnimation(Entity sprite, Angle arc, A }; } + /// + /// Makes the sprite move in a thrust motion from the player towards the target, then slightly pulls back. + /// For example for spears. + /// private Animation GetThrustAnimation(Entity sprite, float offset, Angle spriteRotation, float length) { var startOffset = sprite.Comp.Rotation.RotateVec(new Vector2(0f, 0f)); @@ -170,6 +177,10 @@ private Animation GetThrustAnimation(Entity sprite, float offse }; } + /// + /// Makes the sprite slowly fade by gradually reducing its alpha value. + /// Used at the end of attack animations so that the weapon sprite does not abruptly disappears. + /// private Animation GetFadeAnimation(SpriteComponent sprite, float start, float end) { return new Animation @@ -193,6 +204,7 @@ private Animation GetFadeAnimation(SpriteComponent sprite, float start, float en /// /// Get the sprite offset animation to use for mob lunges. + /// This is applied to the attacker to show who is attacking. /// private Animation GetLungeAnimation(Vector2 direction) { @@ -230,7 +242,7 @@ private void UpdateEffects() if (arcComponent.User == null || EntityManager.Deleted(arcComponent.User)) continue; - Vector2 targetPos = TransformSystem.GetWorldPosition(arcComponent.User.Value); + var targetPos = TransformSystem.GetWorldPosition(arcComponent.User.Value); if (arcComponent.Offset != Vector2.Zero) { From 803fd2d427546171f00ef0bb832618798e234b43 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 21 Mar 2026 17:03:40 +0000 Subject: [PATCH 566/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 379d09c3dc6..ef75808e76e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: TrixxedHeart - changes: - - message: Updated Xenoarchaeology guidebook page to current system. - type: Tweak - id: 9073 - time: '2025-10-11T17:32:21.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40621 - author: HTMLSystem changes: - message: Added infectious anom sprites for moths and arachnids. @@ -4029,3 +4022,10 @@ id: 9584 time: '2026-03-20T14:35:35.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43300 +- author: slarticodefast + changes: + - message: Fixed melee attack animations being rotated wrong if your camera is rotated. + type: Fix + id: 9585 + time: '2026-03-21T17:02:28.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43307 From 7cf3728c59026702596194e92f5e5aca326ec675 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 21 Mar 2026 20:17:53 -0700 Subject: [PATCH 567/603] Update Credits (#43313) Co-authored-by: PJBot --- Resources/Credits/GitHub.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Credits/GitHub.txt b/Resources/Credits/GitHub.txt index 344f7a0d673..fd60cbee29a 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -0-Anon, 0leshe, 0tito, 0x6273, 11BelowStudio, 12rabbits, 1337dakota, 13spacemen, 154942, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 27alaing, 2DSiggy, 3nderall, 4310v343k, 4dplanner, 5tickman, 612git, 778b, 96flo, aaron, abadaba695, Ablankmann, abregado, Absolute-Potato, Absotively, achookh, Acruid, ActiveMammmoth, actually-reb, ada-please, adamsong, Adeinitas, adm2play, Admiral-Obvious-001, adrian, Adrian16199, Ady4ik, Aearo-Deepwater, Aerocrux, Aeshus, Aexolott, Aexxie, AffleWaffle, africalimedrop, afrokada, AftrLite, AgentSmithRadio, Agoichi, ahandleman, Ahion, aiden, aidenkrz, Aidenkrz, Aisu9, ajcm, AJCM-git, AjexRose, Alekshhh, alexalexmax, alexkar598, AlexMorgan3817, alexum418, alexumandxgabriel08x, Alice4267, Alithsko, Alkheemist, alliephante, ALMv1, Alpaccalypse, AlphaQwerty, Altoids1, amatwiedle, amylizzle, Andre19926, Andrew-Fall, AndrewEyeke, AndrewFenriz, AndreyCamper, anri, Anzarot121, ApolloVector, Appiah, april-gras, ar4ill, Arcane-Waffle, archee1, ArchPigeon, ArchRBX, areitpog, Arendian, areyouconfused, arimah, Arkanic, ArkiveDev, armoks, Arteben, arthropodia, ArthurMousatov, ArtisticRoomba, artur, Artxmisery, ArZarLordOfMango, as334, AshBats, AsikKEsel, AsnDen, asperger-sind, aspiringLich, astriloqua, Atakku, Ataman, august-sun, AutoOtter, AverageNotDoingAnythingEnjoyer, avghdev, AwareFoxy, Awlod, Axionyxx, azloserbits, AzzyIsNotHere, azzyisnothere, B-Kirill, B3CKDOOR, baa14453, BackeTako, BadaBoomie, Bakke, BananaFlambe, Baptr0b0t, BarryNorfolk, BasedUser, bea, bebr3ght, beck-thompson, beesterman, bellwetherlogic, ben, benbryant0, benev0, benjamin-burges, BGare, bhespiritu, bibbly, BigfootBravo, BIGZi0348, bingojohnson, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, blitzthesquishy, Blobadoodle, bloodrizer, Bloody2372, blueDev2, Boaz1111, BobdaBiscuit, BobTheSleder, boiled-water-tsar, Bokser815, bolantej, BombasterDS, Booblesnoot42, Boolean-Buckeye, botanySupremist, brainfood1183, BramvanZijp, Brandon-Huu, breeplayx3, BriBrooo, BRINGit34, brndd, bryce0110, BubblegumBlue, buletsponge, buntobaggins, buunie099, bvelliquette, BWTCK, byondfuckery, c0rigin, c4llv07e, CaasGit, Caconym27, Calecute, Callmore, Camdot, cammusubi, capnsockless, CaptainMaru, captainsqrbeard, Carbonhell, Carolyn3114, Carou02, carteblanche4me, catdotjs, catlord, Catofquestionableethics, CatTheSystem, CawsForConcern, CDWimmer, Centronias, Chaboricks, chairbender, chaisftw, Chaoticaa, Charlese2, charlie, chartman, ChaseFlorom, chavonadelal, Cheackraze, CheddaCheez, cheesePizza2, CheesePlated, Chief-Engineer, chillyconmor, christhirtle, chromiumboy, Chronophylos, Chubbicous, Chubbygummibear, Ciac32, ciaran, citrea, civilCornball, claustro305, Clement-O, cloudyias, clyf, Clyybber, CMDR-Piboy314, cnv41, coco, cohanna, Cohnway, Cojoke-dot, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, Compilatron144, CookieMasterT, coolboy911, CoolioDudio, coolmankid12345, Coolsurf6, cooperwallace, corentt, CormosLemming, CrafterKolyan, CraftyRenter, crazybrain23, Crazydave91920, CrazyPhantom779, creadth, CrigCrag, CroilBird, Crotalus, CrudeWax, cryals, CrzyPotato, cubixthree, cutemoongod, Cyberboss, d34d10cc, DaCookieCakes, DadeKuma, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, dan, dangerrevolution, daniel-cr, DanSAussieITS, Daracke, Darkie, DaturoDewitt, david, DawBla, Daxxi3, dch-GH, ddeegan, de0rix, Deahaka, dean, DEATHB4DEFEAT, Deatherd, deathride58, debugok, Decappi, Decortex, Deeeeja, deepdarkdepths, DeepwaterCreations, Deerstop, degradka, Delete69, deltanedas, DenisShvalov, DerbyX, derek, dersheppard, Deserty0, Detintinto, DevilishMilk, devinschubert14, dexlerxd, dffdff2423, DieselMohawk, DieselMohawkTheSequel, digitalic, Dimastra, dimmoon1, DinnerCalzone, DinoWattz, Disp-Dev, DisposableCrewmember42, dissidentbullet, DjfjdfofdjfjD, doc-michael, docnite, Doctor-Cpu, DogZeroX, dolgovmi, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, DR-DOCTOR-EVIL-EVIL, Dragonjspider, dragonryan06, drakewill-CRL, Drayff, dreamlyjack, DrEnzyme, dribblydrone, DrMelon, drongood12, DrSingh, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, DuckManZach, Duddino, dukevanity, duskyjay, Dutch-VanDerLinde, dvir001, dylanstrategie, dylanwhittingham, Dynexust, Easypoller, echo, EchoOfNothing, eclips_e, eden077, EEASAS, Efruit, efzapa, Ekkosangen, ElectroSR, elsie, elthundercloud, Elysium206, emberwinters, Emisse, emmafornash, EmoGarbage404, Endecc, EnrichedCaramel, Entvari, eoineoineoin, ephememory, eris, erohrs2, erorr404v1, Errant-4, ertanic, esguard, estacaoespacialpirata, eternally-confused, eugene, ewokswagger, exincore, exp111, f0x-n3rd, F1restar4, FacePluslll, Fahasor, FairlySadPanda, farrellka-dev, FATFSAAM2, Feluk6174, ficcialfaint, Fiftyllama, Fildrance, fillervk, FinnishPaladin, firenamefn, Firewars763, FirinMaLazors, Fishfish458, fl-oz, Flareguy, flashgnash, FlipBrooke, FluffiestFloof, FluffMe, FluidRock, flymo5678, foboscheshir, FoLoKe, fooberticus, ForestNoises, forgotmyotheraccount, forkeyboards, forthbridge, Fortune117, foxhorn, freeman2651, freeze2222, frobnic8, Froffy025, Fromoriss, froozigiusz, FrostMando, FrostRibbon, Fruitsalad, Funce, FungiFellow, FunkySphere, FunTust, Futuristic-OK, GalacticChimp, gamer3107, Gamewar360, gansulalan, GaussiArson, Gaxeer, gbasood, gcoremans, Geekyhobo, genderGeometries, GeneralGaws, Genkail, Gentleman-Bird, geraeumig, Ghagliiarghii, Git-Nivrak, githubuser508, GitHubUser53123, gituhabu, GlassEclipse, GnarpGnarp, GNF54, godisdeadLOL, goet, GoldenCan, Goldminermac, Golinth, golubgik, GoodWheatley, Gorox221, GR1231, gradientvera, graevy, GraniteSidewalk, GreaseMonk, greenrock64, GreyMario, GrownSamoyedDog, GTRsound, gusxyz, Gyrandola, h3half, hamurlik, Hanzdegloker, HappyRoach, happyrobot33, Hardly3D, harikattar, Hayden, he1acdvv, Hebi, Helix-ctrl, helm4142, Henry, HerCoyote23, Hi-Im-Shot, HighTechPuddle, Hitlinemoss, hiucko, hivehum, Hmeister-fake, Hmeister-real, Hobbitmax, hobnob, HoidC, Holinka4ever, holyssss, HoofedEar, Hoolny, hord-brayden, hoshizora-sayo, Hreno, Hrosts, htmlsystem, Huaqas, hubismal, Hugal31, Hyenh, hyperb1, hyperDelegate, hyphenationc, i-justuser-i, iaada, iacore, IamVelcroboy, Ian321, icekot8, icesickleone, iczero, iglov, IgorAnt028, igorsaux, ike709, illersaver, Illiux, Ilushkins33, Ilya246, IlyaElDunaev, imatsoup, IMCB, impubbi, imrenq, imweax, indeano, Injazz, Insineer, insoPL, IntegerTempest, Interrobang01, Intoxicating-Innocence, IProduceWidgets, itsmethom, Itzbenz, iztokbajcar, Jackal298, Jackrost, JackRyd3r, jacksonzck, JackspajfMain, Jacktastic09, Jackw2As, jacob, jamessimo, janekvap-havok, Jark255, Jarmer123, Jaskanbe, JasperJRoth, jbox144, JCGWE30, jerryimmouse, JerryImMouse, Jessetriesagain, jessicamaybe, JesterX666, Jewelots, Jezithyr, jicksaw, JiimBob, JimGamemaster, jimmy12or, JIPDawg, jjtParadox, jkwookee, jmcb, JohnGinnane, JohnJJohn, johnjjohn, johnku1, Jophire, Jopogrechkin, joshepvodka, JpegOfAFrog, jproads, JrInventor05, Jrpl, jukereise, juliangiebel, JustArt1m, JustCone14, justdie12, justin, justintether, JustinTrotter, JustinWinningham, justtne, K-Dynamic, k3yw, Kadeo64, Kaga-404, kaiserbirch, KaiShibaa, kalane15, kalanosh, KamTheSythe, Kanashi-Panda, katzenminer, kbailey-git, Keelin, Keer-Sar, KEEYNy, keikiru, Kelrak, kerisargit, keronshb, KeTuFaisPiKiNut, KIBORG04, KieueCaprie, Kimpes, kin98, KingFroozy, kipdotnet, kira-er, kiri-yoshikage, Kirillcas, Kirus59, Kistras, Kit, Kit0vras, KittenColony, Kittygyat, klaypexx, kleinerstation13, Kmc2000, Ko4ergaPunk, kognise, kokoc9n, komunre, KonstantinAngelov, kontakt, korczoczek, koteq, kotobdev, Kowlin, KrasnoshchekovPavel, Krosus777, Krunklehorn, Kryyto, Kupie, kxvvv, Kyoth25f, kyupolaris, kzhanik, LaCumbiaDelCoronavirus, lajolico, Lamrr, lanedon, LankLTE, laok233, lapatison, larryrussian, lawdog4817, Lazzi0706, Le-Arctic-Fox, leahcat, leander-0, leonardo-dabepis, leonidussaks, leonsfriedrich, LeoSantich, lettern, LetterN, Level10Cybermancer, LEVELcat, lever1209, LevitatingTree, Lgibb18, lgruthes, liem161, LightVillet, lilazero, liltenhead, linkbro1, linkuyx, Litraxx, little-meow-meow, LittleBuilderJane, LittleNorthStar, LittleNyanCat, lizelive, ljm862, lmsnoise, localcc, lokachop, lolman360, Lomcastar, Lordbrandon12, LordCarve, LordEclipse, lucas, LucasTheDrgn, luckyshotpictures, LudwigVonChesterfield, luegamer, luizwritescode, LukaSlade, luminight, lunarcomets, Lusatia, Luxeator, lvvova1, Lyndomen, lyroth001, lyxcaster, lzimann, lzk228, M1tht1c, M3739, M4rchy-S, M87S, mac6na6na, MACMAN2003, Macoron, magicalus, magmodius, magnnusson, magnuscrowe, maland1, malchanceux, MaloTV, ManelNavola, manelnavola, Mangohydra, marboww, Markek1, MarkerWicker, marlyn, matt, Matz05, max, MaxNox7, maylokana, mdrkrg, MDuch369, meara1179, meganerobot, MehimoNemo, Mehnix, MeltedPixel, memeproof, MendaxxDev, Menshin, Mephisto72, MerrytheManokit, Mervill, metalgearsloth, MetalSage, MFMessage, mhamsterr, michaelcu, micheel665, mifia, mikeysaurus, MilenVolf, MilonPL, Minemoder5000, Minty642, minus1over12, Mirino97, mirrorcult, misandrie, MishaUnity, MissKay1994, MisterImp, MisterMecky, Mith-randalf, Mixelz, mjarduk, MjrLandWhale, mkanke-real, MLGTASTICa, mnva0, moderatelyaware, modern-nm, mohamedwidar, mokiros, momo, Moneyl, monotheonist, Moomoobeef, moony, Morb0, MossyGreySlope, mqole, mr-bo-jangles, Mr0maks, MrFippik, MrPersival, mrrobdemo, mtrs163, muburu, MureixloI, murolem, murphyneko, musicmanvr, MWKane, Myakot, Myctai, N3X15, nabegator, nails-n-tape, Nairodian, Naive817, NakataRin, namespace-Memory, Nannek, NazrinNya, neborsh, nekokiwa, neomoth, neutrino-laser, NickPowers43, nikitosych, nikthechampiongr, Nimfar11, ninruB, Nirnael, NIXC, nkokic, NkoKirkto, nmajask, noctyrnal, noelkathegod, noirogen, nok-ko, NonchalantNoob, NoobyLegion, Nopey, NoreUhh, not-gavnaed, notafet, notquitehadouken, notsodana, noudoit, noverd, Nox38, NuclearWinter, Nuggets219, nukashimika, nuke-haus, NULL882, nullarmo, nyeogmi, Nylux, Nyranu, Nyxilath, och-och, OctoRocket, Ohelig, OldDanceJacket, OliverOtter, onesch, OneZerooo0, OnsenCapy, OnyxTheBrave, opl-, Orange-Winds, OrangeMoronage9622, OrbitSystem07, Orsoniks, osjarw, Ostaf, othymer, OttoMaticode, Owai-Seek, packmore, PAFFhassoocks, paige404, paigemaeforrest, pali6, Palladinium, Pangogie, panzer-iv1, partyaddict, patrikturi, PaulRitter, pavlockblaine03, peccneck, Peptide90, peptron1, perryprog, PeterFuto, PetMudstone, pewter-wiz, PGrayCS, pgraycs, Pgriha, phantom-lily, Pharaz4, pheenty, philingham, Phill101, Phooooooooooooooooooooooooooooooosphate, phunnyguy, PicklOH, PilgrimViis, Pill-U, pinkbat5, Piras314, Pireax, Pissachu, pissdemon, Pixel8-dev, PixeltheAertistContrib, PixelTheKermit, PJB3005, Plasmaguy, plinyvic, Plykiya, poeMota, pofitlo, pointer-to-null, Pok27, poklj, PolterTzi, PoorMansDreams, PopGamer45, portfiend, potato1234x, PotentiallyTom, PotRoastPiggy, Princess-Cheeseballs, ProfanedBane, Prole0, ProPandaBear, ProPeperos, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykana, psykzz, PuceTint, pumkin69, PuroSlavKing, PursuitInAshes, Putnam3145, py01, Pyrovi, qrtDaniil, qrwas, Quantum-cross, quasr-9, quatre, QueerNB, QuietlyWhisper, qwerltaz, Radezolid, RadioMull, Radosvik, Radrark, Rainbeon, Rainfey, Raitononai, Ramlik, RamZ, randy10122, Rane, Ranger6012, Rapidgame7, ravage123321, rbertoche, RedBookcase, Redfire1331, Redict, RedlineTriad, redmushie, RednoWCirabrab, Redrover1760, redspyy, ReeZer2, RemberBM, RemieRichards, RemTim, rene-descartes2021, Renlou, retequizzle, rewafflution, rhailrake, rhsvenson, rich-dunne, RieBi, riggleprime, RIKELOLDABOSS, rinary1, Rinkashikachi, riolume, rlebell33, RobbyTheFish, robinthedragon, robinthegirlthing, Rockdtben, Rohesie, rok-povsic, rokudara-sen, rolfero, RomanNovo, roryflowers, rosieposieeee, Roudenn, router, ruddygreat, rumaks-xyz, RumiTiger, Ruzihm, rwrv, S1rFl0, S1ss3l, Saakra, SabreML, Sadie-silly, saga3152, saintmuntzer, salarua, Salex08, sam, samgithubaccount, Samuka-C, SaphireLattice, SapphicOverload, sarahon, sativaleanne, SaveliyM360, sBasalto, ScalyChimp, ScarKy0, ScholarNZL, schrodinger71, scrato, Scribbles0, scrivoy, scruq445, scuffedjays, ScumbagDog, SeamLesss, Segonist, semensponge, sephtasm, ser1-1y, Serkket, sewerpig, SG6732, sh18rw, Shaddap1, ShadeAware, ShadowCommander, shadowtheprotogen546, shaeone, shampunj, shariathotpatrol, SharkSnake98, Shegare, shepardtothestars, shibechef, Siginanto, signalsender, SignalWalker, siigiil, silicon14wastaken, Silverfur-underscore, Simyon264, sirdragooon, Sirionaut, SirWarock, Sk1tch, SkaldetSkaeg, Skarletto, skeeka-dev, skrybl, Skybailey-dev, skye, Skyedra, SlamBamActionman, slarticodefast, Slava0135, sleepyyapril, slimmslamm, Slyfox333, Smugman, SnappingOpossum, snebl, snicket, sniperchance, Snowni, snowsignal, SolidSyn, SolidusSnek, solstar2, SomegnihT, SonarZeBat, SonicHDC, SoulFN, SoulSloth, Soundwavesghost, soupkilove, southbridge-fur, sowelipililimute, Soydium, SpaceLizard24, SpaceLizardSky, SpaceManiac, SpaceRox1244, SpaceyLady, Spangs04, spanky-spanky, Sparlight, spartak, SpartanKadence, spderman3333, SpeltIncorrectyl, Spessmann, SphiraI, SplinterGP, spoogemonster, sporekto, sporkyz, ssdaniel24, stalengd, stanberytrask, Stanislav4ix, StanTheCarpenter, starbuckss14, Stealthbomber16, steel, Steffo99, stellar-novas, stewie523, stomf, Stop-Signs, stopbreaking, stopka-html, StrawberryMoses, Stray-Pyramid, strO0pwafel, Strol20, StStevens, Subversionary, sunbear-dev, SuperGDPWYL, superjj18, Supernorn, SurrealShibe, SweetAplle, SweptWasTaken, SyaoranFox, Sybil, SYNCHRONIC, Synthestra, Szunti, t, Tainakov, takemysoult, taonewt, tap, TaralGit, Taran, taserthefox, taurie, Tayrtahn, tday93, teamaki, TeenSarlacc, TekuNut, telavivgamers, telyonok, temm1ie, TemporalOroboros, tentekal, terezi4real, Terraspark4941, texcruize, Tezzaide, TGODiamond, TGRCdev, tgrkzus, thanosdegraf, ThatGuyUSA, ThatOneGoblin25, thatrandomcanadianguy, TheArturZh, TheBlueYowie, thecopbennet, TheCze, TheDarkElites, thedraccx, TheEmber, theexetron, TheFlyingSentry, thefoty, TheGrimbeeper, TheIntoxicatedCat, thekilk, themias, theomund, TheProNoob678, TherapyGoth, ThereDrD0, TheSecondLord, TheShuEd, thetolbean, thevinter, TheWaffleJesus, Thinbug0, ThunderBear2006, timothyteakettle, TimrodDX, timurjavid, tin-man-tim, TiniestShark, Titian3, tk-a369, tkdrg, tmtmtl30, ToastEnjoyer, Toby222, TokenStyle, Tollhouse, Toly65, tom-leys, tomasalves8, Tomeno, Tonydatguy, topy, tornado-technology, TornadoTechnology, tosatur, TotallyLemon, ToxicSonicFan04, Tr1bute, travis-g-reid, treytipton, TriviaSolari, trixxedbit, TrixxedHeart, tropicalhibi, truepaintgit, Truoizys, Tryded, TsjipTsjip, tuchila-adi-bogdan, Tunguso4ka, TurboTrackerss14, TVK-04, tyashley, Tyler-IN, TytosB, Tyzemol, UbaserB, Uberration, ubis1, UBlueberry, uhbg, UKNOWH, UltimateJester, Unbelievable-Salmon, underscorex5, UnicornOnLSD, Unisol, Unkn0wnGh0st333, unusualcrow, UpAndLeaves, Uriende, UristMcDorf, user424242420, Utmanarn, Vaaankas, valentfingerov, valquaint, Varen, Vasilis, VasilisThePikachu, veliebm, Velken, VelonacepsCalyxEggs, veprolet, VerinSenpai, veritable-calamity, Veritius, Vermidia, vero5123, verslebas, vexerot, vgskye, viceemargo, VigersRay, violet754, Visne, vitopigno, vitusveit, vlad, vlados1408, VMSolidus, vmzd, VoidMeticulous, voidnull000, volotomite, volundr-, Voomra, Vordenburg, vorkathbruh, Vortebo, vulppine, wachte1, wafehling, walksanatora, Warentan, WarMechanic, Watermelon914, weaversam8, wertanchik, whateverusername0, whatston3, widgetbeck, Will-Oliver-Br, Willhelm53, WilliamECrew, willicassi, Winkarst-cpu, wirdal, wixoaGit, WlarusFromDaSpace, Wolfkey-SomeoneElseTookMyUsername, Worldwaker, wrexbe, wtcwr68, xeri7, xkreksx, xprospero, xRiriq, xsainteer, YanehCheck, yathxyz, Ygg01, YotaXP, youarereadingthis, YoungThugSS14, Yousifb26, youtissoum, yunii, yuriykiss, YuriyKiss, zach-hill, Zadeon, Zalycon, zamp, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zero, ZeroDiamond, ZeWaka, zHonys, zionnBE, ZNixian, Zokkie, ZoldorfTheWizard, zonespace27, Zylofan, Zymem, zzylex +0-Anon, 0leshe, 0tito, 0x6273, 11BelowStudio, 12rabbits, 1337dakota, 13spacemen, 154942, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 27alaing, 2DSiggy, 3nderall, 4310v343k, 4dplanner, 5tickman, 612git, 778b, 96flo, aaron, abadaba695, Ablankmann, abregado, Absolute-Potato, Absotively, achookh, Acruid, ActiveMammmoth, actually-reb, ada-please, adamsong, Adeinitas, adm2play, Admiral-Obvious-001, adrian, Adrian16199, Ady4ik, Aearo-Deepwater, Aerocrux, Aeshus, Aexolott, Aexxie, AffleWaffle, africalimedrop, afrokada, AftrLite, AgentSmithRadio, Agoichi, ahandleman, Ahion, aiden, Aidenkrz, aidenkrz, Aisu9, ajcm, AJCM-git, AjexRose, Alekshhh, alexalexmax, alexkar598, AlexMorgan3817, alexum418, alexumandxgabriel08x, Alice4267, Alithsko, Alkheemist, alliephante, ALMv1, Alpaccalypse, AlphaQwerty, Altoids1, amatwiedle, amylizzle, Andre19926, Andrew-Fall, AndrewEyeke, AndrewFenriz, AndreyCamper, anri, Anzarot121, ApolloVector, Appiah, april-gras, ar4ill, Arcane-Waffle, archee1, ArchPigeon, ArchRBX, areitpog, Arendian, areyouconfused, arimah, Arkanic, ArkiveDev, armoks, Arteben, arthropodia, ArthurMousatov, ArtisticRoomba, artur, Artxmisery, ArZarLordOfMango, as334, AshBats, AsikKEsel, AsnDen, asperger-sind, aspiringLich, astriloqua, Atakku, Ataman, august-sun, AutoOtter, AverageNotDoingAnythingEnjoyer, avghdev, AwareFoxy, Awlod, Axionyxx, azloserbits, AzzyIsNotHere, azzyisnothere, B-Kirill, B3CKDOOR, baa14453, BackeTako, BadaBoomie, Bakke, BananaFlambe, Baptr0b0t, BarryNorfolk, BasedUser, bea, bebr3ght, beck-thompson, beesterman, bellwetherlogic, ben, benbryant0, benev0, benjamin-burges, BGare, bhespiritu, bibbly, BigfootBravo, BIGZi0348, bingojohnson, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, blitzthesquishy, Blobadoodle, bloodrizer, Bloody2372, blueDev2, Boaz1111, BobdaBiscuit, BobTheSleder, boiled-water-tsar, Bokser815, bolantej, BombasterDS, Booblesnoot42, Boolean-Buckeye, botanySupremist, brainfood1183, BramvanZijp, Brandon-Huu, breeplayx3, BriBrooo, BRINGit34, brndd, bryce0110, BubblegumBlue, buletsponge, buntobaggins, buunie099, bvelliquette, BWTCK, byondfuckery, c0rigin, c4llv07e, CaasGit, Caconym27, Calecute, Callmore, Camdot, cammusubi, capnsockless, CaptainMaru, captainsqrbeard, Carbonhell, Carolyn3114, Carou02, carteblanche4me, catdotjs, catlord, Catofquestionableethics, CatTheSystem, CawsForConcern, CDWimmer, Centronias, Chaboricks, chairbender, chaisftw, Chaoticaa, Charlese2, charlie, chartman, ChaseFlorom, chavonadelal, Cheackraze, CheddaCheez, cheesePizza2, CheesePlated, Chief-Engineer, chillyconmor, christhirtle, chromiumboy, Chronophylos, Chubbicous, Chubbygummibear, Ciac32, ciaran, citrea, civilCornball, claustro305, Clement-O, cloudyias, clyf, Clyybber, CMDR-Piboy314, cnv41, coco, cohanna, Cohnway, Cojoke-dot, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, Compilatron144, CookieMasterT, coolboy911, CoolioDudio, coolmankid12345, Coolsurf6, cooperwallace, corentt, CormosLemming, CrafterKolyan, CraftyRenter, crazybrain23, Crazydave91920, CrazyPhantom779, creadth, CrigCrag, CroilBird, Crotalus, CrudeWax, cryals, CrzyPotato, cubixthree, cutemoongod, Cyberboss, d34d10cc, DaCookieCakes, DadeKuma, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, dan, dangerrevolution, daniel-cr, DanSAussieITS, Daracke, Darkie, DaturoDewitt, david, DawBla, Daxxi3, dch-GH, ddeegan, de0rix, Deahaka, dean, DEATHB4DEFEAT, Deatherd, deathride58, debugok, Decappi, Decortex, Deeeeja, deepdarkdepths, DeepwaterCreations, Deerstop, degradka, Delete69, deltanedas, DenisShvalov, DerbyX, derek, dersheppard, Deserty0, Detintinto, DevilishMilk, devinschubert14, dexlerxd, dffdff2423, DieselMohawk, DieselMohawkTheSequel, digitalic, Dimastra, dimmoon1, DinnerCalzone, DinoWattz, Disp-Dev, DisposableCrewmember42, dissidentbullet, DjfjdfofdjfjD, doc-michael, docnite, Doctor-Cpu, DogZeroX, dolgovmi, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, DR-DOCTOR-EVIL-EVIL, Dragonjspider, dragonryan06, drakewill-CRL, Drayff, dreamlyjack, DrEnzyme, dribblydrone, DrMelon, drongood12, DrSingh, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, DuckManZach, Duddino, dukevanity, duskyjay, Dutch-VanDerLinde, dvir001, dylanstrategie, dylanwhittingham, Dynexust, Easypoller, echo, EchoOfNothing, eclips_e, eden077, EEASAS, Efruit, efzapa, Ekkosangen, ElectroSR, elsie, elthundercloud, Elysium206, emberwinters, Emisse, emmafornash, EmoGarbage404, Endecc, EnrichedCaramel, Entvari, eoineoineoin, ephememory, eris, erohrs2, erorr404v1, Errant-4, ertanic, esguard, estacaoespacialpirata, eternally-confused, eugene, ewokswagger, exincore, exp111, f0x-n3rd, F1restar4, FacePluslll, Fahasor, FairlySadPanda, farrellka-dev, FATFSAAM2, Feluk6174, ficcialfaint, Fiftyllama, Fildrance, fillervk, FinnishPaladin, firenamefn, Firewars763, FirinMaLazors, Fishfish458, fl-oz, Flareguy, flashgnash, FlipBrooke, FluffiestFloof, FluffMe, FluidRock, flymo5678, foboscheshir, FoLoKe, fooberticus, ForestNoises, forgotmyotheraccount, forkeyboards, forthbridge, Fortune117, foxhorn, freeman2651, freeze2222, frobnic8, Froffy025, Fromoriss, froozigiusz, FrostMando, FrostRibbon, Fruitsalad, Funce, FungiFellow, FunkySphere, FunTust, Futuristic-OK, GalacticChimp, gamer3107, Gamewar360, gansulalan, GaussiArson, Gaxeer, gbasood, gcoremans, Geekyhobo, genderGeometries, GeneralGaws, Genkail, Gentleman-Bird, geraeumig, Ghagliiarghii, Git-Nivrak, githubuser508, GitHubUser53123, gituhabu, GlassEclipse, GnarpGnarp, GNF54, godisdeadLOL, goet, GoldenCan, Goldminermac, Golinth, golubgik, GoodWheatley, Gorox221, GR1231, gradientvera, graevy, GraniteSidewalk, GreaseMonk, greenrock64, GreyMario, GrownSamoyedDog, GTRsound, gusxyz, Gyrandola, h3half, hamurlik, Hanzdegloker, HappyRoach, happyrobot33, Hardly3D, harikattar, Hayden, he1acdvv, Hebi, Helix-ctrl, helm4142, Henry, HerCoyote23, Hi-Im-Shot, HighTechPuddle, Hitlinemoss, hiucko, hivehum, Hmeister-fake, Hmeister-real, Hobbitmax, hobnob, HoidC, Holinka4ever, holyssss, HoofedEar, Hoolny, hord-brayden, hoshizora-sayo, Hreno, Hrosts, htmlsystem, Huaqas, hubismal, Hugal31, Hyenh, hyperb1, hyperDelegate, hyphenationc, i-justuser-i, iaada, iacore, IamVelcroboy, Ian321, icekot8, icesickleone, iczero, iglov, IgorAnt028, igorsaux, ike709, illersaver, Illiux, Ilushkins33, Ilya246, IlyaElDunaev, imatsoup, IMCB, impubbi, imrenq, imweax, indeano, Injazz, Insineer, insoPL, IntegerTempest, Interrobang01, Intoxicating-Innocence, IProduceWidgets, itsmethom, Itzbenz, iztokbajcar, Jackal298, Jackrost, JackRyd3r, jacksonzck, JackspajfMain, Jacktastic09, Jackw2As, jacob, jamessimo, janekvap-havok, Jark255, Jarmer123, Jaskanbe, JasperJRoth, jbox144, JCGWE30, jerryimmouse, JerryImMouse, Jessetriesagain, jessicamaybe, JesterX666, Jewelots, Jezithyr, jicksaw, JiimBob, JimGamemaster, jimmy12or, JIPDawg, jjtParadox, jkwookee, jmcb, JohnGinnane, johnjjohn, JohnJJohn, johnku1, Jophire, Jopogrechkin, joshepvodka, JpegOfAFrog, jproads, JrInventor05, Jrpl, jukereise, juliangiebel, JustArt1m, JustCone14, justdie12, justin, justintether, JustinTrotter, JustinWinningham, justtne, K-Dynamic, k3yw, Kadeo64, Kaga-404, kaiserbirch, KaiShibaa, kalane15, kalanosh, KamTheSythe, Kanashi-Panda, katzenminer, kbailey-git, Keelin, Keer-Sar, KEEYNy, keikiru, Kelrak, kerisargit, keronshb, KeTuFaisPiKiNut, KIBORG04, KieueCaprie, Kimpes, kin98, KingFroozy, kipdotnet, kira-er, kiri-yoshikage, Kirillcas, Kirus59, Kistras, Kit, Kit0vras, KittenColony, Kittygyat, klaypexx, kleinerstation13, Kmc2000, Ko4ergaPunk, kognise, kokoc9n, komunre, KonstantinAngelov, kontakt, korczoczek, koteq, kotobdev, Kowlin, KrasnoshchekovPavel, Krosus777, Krunklehorn, Kryyto, Kupie, kxvvv, Kyoth25f, kyupolaris, kzhanik, LaCumbiaDelCoronavirus, lajolico, Lamrr, lanedon, LankLTE, laok233, lapatison, larryrussian, lawdog4817, Lazzi0706, Le-Arctic-Fox, leahcat, leander-0, leonardo-dabepis, leonidussaks, leonsfriedrich, LeoSantich, LetterN, lettern, Level10Cybermancer, LEVELcat, lever1209, LevitatingTree, Lgibb18, lgruthes, liem161, LightVillet, lilazero, liltenhead, linkbro1, linkuyx, Litraxx, little-meow-meow, LittleBuilderJane, LittleNorthStar, LittleNyanCat, lizelive, ljm862, lmsnoise, localcc, lokachop, lolman360, Lomcastar, Lordbrandon12, LordCarve, LordEclipse, lucas, LucasTheDrgn, luckyshotpictures, LudwigVonChesterfield, luegamer, luizwritescode, LukaSlade, luminight, lunarcomets, Lusatia, Luxeator, lvvova1, Lyndomen, lyroth001, lyxcaster, lzimann, lzk228, M1tht1c, M3739, M4rchy-S, M87S, mac6na6na, MACMAN2003, Macoron, magicalus, magmodius, magnnusson, magnuscrowe, maland1, malchanceux, MaloTV, manelnavola, ManelNavola, Mangohydra, marboww, Markek1, MarkerWicker, marlyn, mastermiller01, matt, Matz05, max, MaxNox7, maylokana, mdrkrg, MDuch369, meara1179, meganerobot, MehimoNemo, Mehnix, MeltedPixel, memeproof, MendaxxDev, Menshin, Mephisto72, MerrytheManokit, Mervill, metalgearsloth, MetalSage, MFMessage, mhamsterr, michaelcu, micheel665, mifia, mikeysaurus, MilenVolf, MilonPL, Minemoder5000, Minty642, minus1over12, Mirino97, mirrorcult, misandrie, MishaUnity, MissKay1994, MisterImp, MisterMecky, Mith-randalf, Mixelz, mjarduk, MjrLandWhale, mkanke-real, MLGTASTICa, mnva0, moderatelyaware, modern-nm, mohamedwidar, mokiros, momo, Moneyl, monotheonist, Moomoobeef, moony, Morb0, MossyGreySlope, mqole, mr-bo-jangles, Mr0maks, MrFippik, MrPersival, mrrobdemo, mtrs163, muburu, MureixloI, murolem, murphyneko, musicmanvr, MWKane, Myakot, Myctai, N3X15, nabegator, nails-n-tape, Nairodian, Naive817, NakataRin, namespace-Memory, Nannek, NazrinNya, neborsh, nekokiwa, neomoth, neutrino-laser, NickPowers43, nikitosych, nikthechampiongr, Nimfar11, ninruB, Nirnael, NIXC, nkokic, NkoKirkto, nmajask, noctyrnal, noelkathegod, noirogen, nok-ko, NonchalantNoob, NoobyLegion, Nopey, NoreUhh, not-gavnaed, notafet, notquitehadouken, notsodana, noudoit, noverd, Nox38, NuclearWinter, Nuggets219, nukashimika, nuke-haus, NULL882, nullarmo, nyeogmi, Nylux, Nyranu, Nyxilath, och-och, OctoRocket, Ohelig, OldDanceJacket, OliverOtter, onesch, OneZerooo0, OnsenCapy, OnyxTheBrave, opl-, Orange-Winds, OrangeMoronage9622, OrbitSystem07, Orsoniks, osjarw, Ostaf, othymer, OttoMaticode, Owai-Seek, packmore, PAFFhassoocks, paige404, paigemaeforrest, pali6, Palladinium, Pangogie, panzer-iv1, partyaddict, patrikturi, PaulRitter, pavlockblaine03, peccneck, Peptide90, peptron1, perryprog, PeterFuto, PetMudstone, pewter-wiz, pgraycs, PGrayCS, Pgriha, phantom-lily, Pharaz4, pheenty, philingham, Phill101, Phooooooooooooooooooooooooooooooosphate, phunnyguy, PicklOH, PilgrimViis, Pill-U, pinkbat5, Piras314, Pireax, Pissachu, pissdemon, Pixel8-dev, PixeltheAertistContrib, PixelTheKermit, PJB3005, Plasmaguy, plinyvic, Plykiya, poeMota, pofitlo, pointer-to-null, Pok27, poklj, PolterTzi, PoorMansDreams, PopGamer45, portfiend, potato1234x, PotentiallyTom, PotRoastPiggy, Princess-Cheeseballs, ProfanedBane, Prole0, ProPandaBear, ProPeperos, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykana, psykzz, PuceTint, pumkin69, PuroSlavKing, PursuitInAshes, Putnam3145, py01, Pyrovi, qrtDaniil, qrwas, Quantum-cross, quasr-9, quatre, QueerNB, QuietlyWhisper, qwerltaz, Radezolid, RadioMull, Radosvik, Radrark, Rainbeon, Rainfey, Raitononai, Ramlik, RamZ, randy10122, Rane, Ranger6012, Rapidgame7, ravage123321, rbertoche, RedBookcase, Redfire1331, Redict, RedlineTriad, redmushie, RednoWCirabrab, Redrover1760, redspyy, ReeZer2, RemberBM, RemieRichards, RemTim, rene-descartes2021, Renlou, retequizzle, rewafflution, rhailrake, rhsvenson, rich-dunne, RieBi, riggleprime, RIKELOLDABOSS, rinary1, Rinkashikachi, riolume, rlebell33, RobbyTheFish, robinthedragon, robinthegirlthing, Rockdtben, Rohesie, rok-povsic, rokudara-sen, rolfero, RomanNovo, roryflowers, rosieposieeee, Roudenn, router, ruddygreat, rumaks-xyz, RumiTiger, Ruzihm, rwrv, S1rFl0, S1ss3l, Saakra, SabreML, Sadie-silly, saga3152, saintmuntzer, salarua, Salex08, sam, samgithubaccount, Samuka-C, SaphireLattice, SapphicOverload, sarahon, sativaleanne, SaveliyM360, sBasalto, ScalyChimp, ScarKy0, ScholarNZL, schrodinger71, scrato, Scribbles0, scrivoy, scruq445, scuffedjays, ScumbagDog, SeamLesss, Segonist, semensponge, sephtasm, ser1-1y, Serkket, sewerpig, SG6732, sh18rw, Shaddap1, ShadeAware, ShadowCommander, shadowtheprotogen546, shaeone, shampunj, shariathotpatrol, SharkSnake98, Shegare, shepardtothestars, shibechef, Siginanto, signalsender, SignalWalker, siigiil, silicon14wastaken, Silverfur-underscore, Simyon264, sirdragooon, Sirionaut, SirWarock, Sk1tch, SkaldetSkaeg, Skarletto, skeeka-dev, skrybl, Skybailey-dev, skye, Skyedra, SlamBamActionman, slarticodefast, Slava0135, sleepyyapril, slimmslamm, Slyfox333, Smugman, SnappingOpossum, snebl, snicket, sniperchance, Snowni, snowsignal, SolidSyn, SolidusSnek, solstar2, SomegnihT, SonarZeBat, SonicHDC, SoulFN, SoulSloth, Soundwavesghost, soupkilove, southbridge-fur, sowelipililimute, Soydium, SpaceLizard24, SpaceLizardSky, SpaceManiac, SpaceRox1244, SpaceyLady, Spangs04, spanky-spanky, Sparlight, spartak, SpartanKadence, spderman3333, SpeltIncorrectyl, Spessmann, SphiraI, SplinterGP, spoogemonster, sporekto, sporkyz, ssdaniel24, stalengd, stanberytrask, Stanislav4ix, StanTheCarpenter, starbuckss14, Stealthbomber16, steel, Steffo99, stellar-novas, stewie523, stomf, Stop-Signs, stopbreaking, stopka-html, StrawberryMoses, Stray-Pyramid, strO0pwafel, Strol20, StStevens, Subversionary, sunbear-dev, SuperGDPWYL, superjj18, Supernorn, SurrealShibe, SweetAplle, SweptWasTaken, SyaoranFox, Sybil, SYNCHRONIC, Synthestra, Szunti, t, Tainakov, takemysoult, taonewt, tap, TaralGit, Taran, taserthefox, taurie, Tayrtahn, tday93, teamaki, TeenSarlacc, TekuNut, telavivgamers, telyonok, temm1ie, TemporalOroboros, tentekal, terezi4real, Terraspark4941, texcruize, Tezzaide, TGODiamond, TGRCdev, tgrkzus, thanosdegraf, ThatGuyUSA, ThatOneGoblin25, thatrandomcanadianguy, TheArturZh, TheBlueYowie, thecopbennet, TheCze, TheDarkElites, thedraccx, TheEmber, theexetron, TheFlyingSentry, thefoty, TheGrimbeeper, TheIntoxicatedCat, thekilk, themias, theomund, TheProNoob678, TherapyGoth, ThereDrD0, TheSecondLord, TheShuEd, thetolbean, thevinter, TheWaffleJesus, Thinbug0, ThunderBear2006, timothyteakettle, TimrodDX, timurjavid, tin-man-tim, TiniestShark, Titian3, tk-a369, tkdrg, tmtmtl30, ToastEnjoyer, Toby222, TokenStyle, Tollhouse, Toly65, tom-leys, tomasalves8, Tomeno, Tonydatguy, topy, tornado-technology, TornadoTechnology, tosatur, TotallyLemon, ToxicSonicFan04, Tr1bute, travis-g-reid, treytipton, TriviaSolari, trixxedbit, TrixxedHeart, tropicalhibi, truepaintgit, Truoizys, Tryded, TsjipTsjip, tuchila-adi-bogdan, Tunguso4ka, TurboTrackerss14, TVK-04, tyashley, Tyler-IN, TytosB, Tyzemol, UbaserB, Uberration, ubis1, UBlueberry, uhbg, UKNOWH, UltimateJester, Unbelievable-Salmon, underscorex5, UnicornOnLSD, Unisol, Unkn0wnGh0st333, unusualcrow, UpAndLeaves, Uriende, UristMcDorf, user424242420, Utmanarn, Vaaankas, valentfingerov, valquaint, Varen, Vasilis, VasilisThePikachu, veliebm, Velken, VelonacepsCalyxEggs, veprolet, VerinSenpai, veritable-calamity, Veritius, Vermidia, vero5123, verslebas, vexerot, vgskye, viceemargo, VigersRay, violet754, Visne, vitopigno, vitusveit, vlad, vlados1408, VMSolidus, vmzd, VoidMeticulous, voidnull000, volotomite, volundr-, Voomra, Vordenburg, vorkathbruh, Vortebo, vulppine, wachte1, wafehling, walksanatora, Warentan, WarMechanic, Watermelon914, weaversam8, wertanchik, whateverusername0, whatston3, widgetbeck, Will-Oliver-Br, Willhelm53, WilliamECrew, willicassi, Winkarst-cpu, wirdal, wixoaGit, WlarusFromDaSpace, Wolfkey-SomeoneElseTookMyUsername, Worldwaker, wrexbe, wtcwr68, xeri7, xkreksx, xprospero, xRiriq, xsainteer, YanehCheck, yathxyz, Ygg01, YotaXP, youarereadingthis, YoungThugSS14, Yousifb26, youtissoum, yunii, YuriyKiss, yuriykiss, zach-hill, Zadeon, Zalycon, zamp, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zero, ZeroDiamond, ZeWaka, zHonys, zionnBE, ZNixian, Zokkie, ZoldorfTheWizard, zonespace27, Zylofan, Zymem, zzylex From d86219c50a2a3e83036d3199604273490876b373 Mon Sep 17 00:00:00 2001 From: MendaxxDev <153332064+MendaxxDev@users.noreply.github.com> Date: Sun, 22 Mar 2026 11:43:03 +0100 Subject: [PATCH 568/603] removed PhysicalConstants.ZERO_CELCIUS (#43316) --- Content.Shared/Maths/PhysicalConstants.cs | 10 ---------- Content.Shared/Temperature/TemperatureHelpers.cs | 6 +++--- 2 files changed, 3 insertions(+), 13 deletions(-) delete mode 100644 Content.Shared/Maths/PhysicalConstants.cs diff --git a/Content.Shared/Maths/PhysicalConstants.cs b/Content.Shared/Maths/PhysicalConstants.cs deleted file mode 100644 index 301861a0ebe..00000000000 --- a/Content.Shared/Maths/PhysicalConstants.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Content.Shared.Maths -{ - /// - /// Contains physical constants used in calculations. - /// - public static class PhysicalConstants - { - public const float ZERO_CELCIUS = 273.15f; - } -} diff --git a/Content.Shared/Temperature/TemperatureHelpers.cs b/Content.Shared/Temperature/TemperatureHelpers.cs index a92f62f8518..c1683ee8dc5 100644 --- a/Content.Shared/Temperature/TemperatureHelpers.cs +++ b/Content.Shared/Temperature/TemperatureHelpers.cs @@ -1,4 +1,4 @@ -using Content.Shared.Maths; +using Content.Shared.Atmos; namespace Content.Shared.Temperature { @@ -6,7 +6,7 @@ public static class TemperatureHelpers { public static float CelsiusToKelvin(float celsius) { - return celsius + PhysicalConstants.ZERO_CELCIUS; + return celsius + Atmospherics.T0C; } public static float CelsiusToFahrenheit(float celsius) @@ -16,7 +16,7 @@ public static float CelsiusToFahrenheit(float celsius) public static float KelvinToCelsius(float kelvin) { - return kelvin - PhysicalConstants.ZERO_CELCIUS; + return kelvin - Atmospherics.T0C; } public static float KelvinToFahrenheit(float kelvin) From 226deda26c06dec6caffe8b61ce6d963fe9bf18e Mon Sep 17 00:00:00 2001 From: Kyle Tyo Date: Sun, 22 Mar 2026 18:45:01 -0400 Subject: [PATCH 569/603] Fix welders running an additional time when no damage remains. (#43321) Update RepairableSystem.cs --- Content.Shared/Repairable/RepairableSystem.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Content.Shared/Repairable/RepairableSystem.cs b/Content.Shared/Repairable/RepairableSystem.cs index 89fce2e0057..bbb4b40b2fc 100644 --- a/Content.Shared/Repairable/RepairableSystem.cs +++ b/Content.Shared/Repairable/RepairableSystem.cs @@ -42,6 +42,8 @@ private void OnRepairDoAfter(Entity ent, ref RepairDoAfterE else RepairAllDamage((ent, damageable), args.User); + totalDamage = _damageableSystem.GetTotalDamage((ent.Owner, damageable)); + args.Repeat = ent.Comp.AutoDoAfter && totalDamage > 0; args.Args.Event.Repeat = args.Repeat; args.Handled = true; From 441f4c8e79b1985a07e693b8a75f7a9c81ba2310 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 22 Mar 2026 22:58:54 +0000 Subject: [PATCH 570/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index ef75808e76e..e601c3b4d64 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: HTMLSystem - changes: - - message: Added infectious anom sprites for moths and arachnids. - type: Add - id: 9074 - time: '2025-10-11T18:01:49.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39508 - author: ScarKy0 changes: - message: Mice, cockroaches and other small mobs can no longer unwrap parcels. @@ -4029,3 +4022,10 @@ id: 9585 time: '2026-03-21T17:02:28.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43307 +- author: SlartiBartFast, Verin + changes: + - message: Welders no longer perform an extra pass after a repair has completed. + type: Fix + id: 9586 + time: '2026-03-22T22:57:42.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43321 From 9f97b146bca4c3ce2b1c3d898c32e6244572266e Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Mon, 23 Mar 2026 06:48:04 +0700 Subject: [PATCH 571/603] first fix --- Content.Server/Corvax/Ipc/IpcSystem.cs | 32 +++++++++----- .../Humanoid/HumanoidProfileExportV1.cs | 2 +- .../Locale/ru-RU/corvax/guidebook/SOP/SOP.ftl | 14 +++++++ .../guidebook/corporatelaw/corporate-law.ftl | 17 ++++++++ .../Locale/ru-RU/corvax/guidebook/rules.ftl | 21 ++++++++++ Resources/Prototypes/Corvax/Guidebook/SOP.yml | 26 ++++++------ .../Corvax/Guidebook/corporate_law.yml | 34 +++++++-------- .../Prototypes/Corvax/Guidebook/rules.yml | 42 +++++++++---------- 8 files changed, 126 insertions(+), 62 deletions(-) create mode 100644 Resources/Locale/ru-RU/corvax/guidebook/corporatelaw/corporate-law.ftl create mode 100644 Resources/Locale/ru-RU/corvax/guidebook/rules.ftl diff --git a/Content.Server/Corvax/Ipc/IpcSystem.cs b/Content.Server/Corvax/Ipc/IpcSystem.cs index 150dfcbd513..8ab91662770 100644 --- a/Content.Server/Corvax/Ipc/IpcSystem.cs +++ b/Content.Server/Corvax/Ipc/IpcSystem.cs @@ -13,6 +13,7 @@ using Content.Shared.Ninja.Components; using Content.Shared.Ninja.Systems; using Content.Shared.Popups; +using Content.Shared.Power; using Content.Shared.Power.EntitySystems; using Content.Shared.PowerCell; using Content.Shared.PowerCell.Components; @@ -51,6 +52,22 @@ public override void Initialize() { subs.Event(OnFaceSelected); }); + SubscribeLocalEvent(OnPowerCellEmpty); + SubscribeLocalEvent(OnBatteryStateChanged); + SubscribeLocalEvent(OnChargeChanged); + } + + private void OnPowerCellEmpty(EntityUid uid, IpcComponent component, ref PowerCellSlotEmptyEvent args) + { + UpdateBatteryAlert((uid, component)); + } + private void OnBatteryStateChanged(EntityUid uid, IpcComponent component, ref BatteryStateChangedEvent args) + { + UpdateBatteryAlert((uid, component)); + } + private void OnChargeChanged(EntityUid uid, IpcComponent component, ref ChargeChangedEvent args) + { + UpdateBatteryAlert((uid, component)); } private void OnMapInit(EntityUid uid, IpcComponent component, MapInitEvent args) @@ -99,27 +116,22 @@ private void OnToggleAction(EntityUid uid, IpcComponent component, ToggleDrainAc } private void UpdateBatteryAlert(Entity ent, PowerCellSlotComponent? slot = null) { - - - if (!_powerCell.TryGetBatteryFromSlot(ent.Owner, out var battery) || _battery.GetCharge(battery.Value.AsNullable()) / battery.Value.Comp.MaxCharge < 0.01f) + if (!_powerCell.TryGetBatteryFromSlot(ent.Owner, out var battery) + || _battery.GetCharge(battery.Value.AsNullable()) / battery.Value.Comp.MaxCharge < 0.01f) { _alerts.ClearAlert(ent.Owner, ent.Comp.BatteryAlert); _alerts.ShowAlert(ent.Owner, ent.Comp.NoBatteryAlert); - _movementSpeedModifier.RefreshMovementSpeedModifiers(ent.Owner); return; } - - var chargePercent = (short)MathF.Round(_battery.GetCharge(battery.Value.AsNullable()) / battery.Value.Comp.MaxCharge * 10f); - + var chargePercent = (short)MathF.Round( + _battery.GetCharge(battery.Value.AsNullable()) / battery.Value.Comp.MaxCharge * 10f); if (chargePercent == 0 && _powerCell.HasDrawCharge(ent.Owner)) chargePercent = 1; - - _movementSpeedModifier.RefreshMovementSpeedModifiers(ent.Owner); - _alerts.ClearAlert(ent.Owner, ent.Comp.NoBatteryAlert); _alerts.ShowAlert(ent.Owner, ent.Comp.BatteryAlert, chargePercent); + _movementSpeedModifier.RefreshMovementSpeedModifiers(ent.Owner); } private void OnRefreshMovementSpeedModifiers(EntityUid uid, IpcComponent comp, RefreshMovementSpeedModifiersEvent args) diff --git a/Content.Shared/Humanoid/HumanoidProfileExportV1.cs b/Content.Shared/Humanoid/HumanoidProfileExportV1.cs index 7465ed40295..ed092e727bc 100644 --- a/Content.Shared/Humanoid/HumanoidProfileExportV1.cs +++ b/Content.Shared/Humanoid/HumanoidProfileExportV1.cs @@ -62,7 +62,7 @@ public sealed partial class HumanoidCharacterProfileV1 public ProtoId Species; [DataField] //Corvax-TTS - public string Voice; + public string Voice = HumanoidProfileSystem.DefaultVoice; [DataField] public int Age; diff --git a/Resources/Locale/ru-RU/corvax/guidebook/SOP/SOP.ftl b/Resources/Locale/ru-RU/corvax/guidebook/SOP/SOP.ftl index bebbb4c31d8..39ed5243e92 100644 --- a/Resources/Locale/ru-RU/corvax/guidebook/SOP/SOP.ftl +++ b/Resources/Locale/ru-RU/corvax/guidebook/SOP/SOP.ftl @@ -9,3 +9,17 @@ guidebook-SOP-infobox-main = Это не значит, что все нарушения вышеуказанных ролей должны быть проигнорированы со стороны других персонажей. Нарушения должны быть проработаны соответствующим образом в рамках игрового процесса. Общие СРП в равной степени должно соблюдаться как и ведомственные СРП. + +guide-entry-sop = СРП +guide-entry-sop-service = Сервистный отдел +guide-entry-sop-research = Научный отдел +guide-entry-sop-cargo = Отдел снабжения +guide-entry-sop-medical = Медицинский отдел +guide-entry-sop-engineering = Инженерный отдел +guide-entry-sop-security = Служба безопасности +guide-entry-sop-command = Командование +guide-entry-sop-centcomm = Центральное Командование +guide-entry-sop-legal = Юридический департамент +guide-entry-sop-general = Общее +guide-entry-sop-codes = Уровни угроз +guide-entry-sop-emergencies = Чрезвычайные ситуации diff --git a/Resources/Locale/ru-RU/corvax/guidebook/corporatelaw/corporate-law.ftl b/Resources/Locale/ru-RU/corvax/guidebook/corporatelaw/corporate-law.ftl new file mode 100644 index 00000000000..ff32636a585 --- /dev/null +++ b/Resources/Locale/ru-RU/corvax/guidebook/corporatelaw/corporate-law.ftl @@ -0,0 +1,17 @@ +guide-entry-corporate-law = Корпоративный закон +guide-entry-cl-oprs = ОПРС +guide-entry-cl-punishments = Наказания +guide-entry-cl-modificators = Модификаторы +guide-entry-cl-misc = Разное +guide-entry-cl-crime-list = Статьи +guide-entry-cl-chapter-11 = 11X +guide-entry-cl-chapter-12 = 12X +guide-entry-cl-chapter-13 = 13X +guide-entry-cl-chapter-14 = 14X +guide-entry-cl-chapter-21 = 21X +guide-entry-cl-chapter-22 = 22X +guide-entry-cl-chapter-31 = 31X +guide-entry-cl-chapter-32 = 32X +guide-entry-cl-chapter-41 = 41X +guide-entry-cl-chapter-42 = 42X +guide-entry-cl-chapter-43 = 43X diff --git a/Resources/Locale/ru-RU/corvax/guidebook/rules.ftl b/Resources/Locale/ru-RU/corvax/guidebook/rules.ftl new file mode 100644 index 00000000000..2302cb53184 --- /dev/null +++ b/Resources/Locale/ru-RU/corvax/guidebook/rules.ftl @@ -0,0 +1,21 @@ +guide-entry-corvax-ruleset = Правила сервера +guide-entry-corvax-rule0 = Правило 0 +guide-entry-corvax-rule1 = Правило 1 +guide-entry-corvax-rule2 = Правило 2 +guide-entry-corvax-rule3 = Правило 3 +guide-entry-corvax-rule31 = Правило 3.1 +guide-entry-corvax-rule32 = Правило 3.2 +guide-entry-corvax-rule33 = Правило 3.3 +guide-entry-corvax-rule34 = Правило 3.4 +guide-entry-corvax-rule35 = Правило 3.5 +guide-entry-corvax-rule36 = Правило 3.6 +guide-entry-corvax-rule37 = Правило 3.7 +guide-entry-corvax-rule38 = Правило 3.8 +guide-entry-corvax-rule39 = Правило 3.9 +guide-entry-corvax-rule4 = Правило 4 +guide-entry-corvax-rule6 = Правило 6 +guide-entry-corvax-rule7 = Правило 7 +guide-entry-corvax-rule8 = Правило 8 +guide-entry-corvax-rule9 = Правило 9 +guide-entry-corvax-rule10 = Правило 10 +guide-entry-corvax-punishment-types = Игровые наказания diff --git a/Resources/Prototypes/Corvax/Guidebook/SOP.yml b/Resources/Prototypes/Corvax/Guidebook/SOP.yml index 42aa8fb7b57..ba4cc9d75b6 100644 --- a/Resources/Prototypes/Corvax/Guidebook/SOP.yml +++ b/Resources/Prototypes/Corvax/Guidebook/SOP.yml @@ -1,6 +1,6 @@ - type: guideEntry id: SOP - name: СРП + name: guide-entry-sop text: "/ServerInfo/Corvax/Guidebook/SOP/SOP.xml" children: - SOPService @@ -17,53 +17,53 @@ # Отделы - type: guideEntry id: SOPService - name: Сервистный отдел + name: guide-entry-sop-service text: "/ServerInfo/Corvax/Guidebook/SOP/Service.xml" - type: guideEntry id: SOPResearch - name: Научный отдел + name: guide-entry-sop-research text: "/ServerInfo/Corvax/Guidebook/SOP/Research.xml" - type: guideEntry id: SOPCargo - name: Отдел снабжения + name: guide-entry-sop-cargo text: "/ServerInfo/Corvax/Guidebook/SOP/Cargo.xml" - type: guideEntry id: SOPMedical - name: Медицинский отдел + name: guide-entry-sop-medical text: "/ServerInfo/Corvax/Guidebook/SOP/Medical.xml" - type: guideEntry id: SOPEngineering - name: Инженерный отдел + name: guide-entry-sop-engineering text: "/ServerInfo/Corvax/Guidebook/SOP/Engineering.xml" - type: guideEntry id: SOPSecurity - name: Служба безопасности + name: guide-entry-sop-security text: "/ServerInfo/Corvax/Guidebook/SOP/Security.xml" - type: guideEntry id: SOPCommand - name: Командование + name: guide-entry-sop-command text: "/ServerInfo/Corvax/Guidebook/SOP/Command.xml" - type: guideEntry id: SOPCentcomm - name: Центральное Командование + name: guide-entry-sop-centcomm text: "/ServerInfo/Corvax/Guidebook/SOP/Centcomm.xml" - type: guideEntry id: SOPLegal - name: Юридический департамент + name: guide-entry-sop-legal text: "/ServerInfo/Corvax/Guidebook/SOP/Legal.xml" # Общее - type: guideEntry id: SOPGeneral - name: Общее + name: guide-entry-sop-general text: "/ServerInfo/Corvax/Guidebook/SOP/General.xml" children: - SOPCodes @@ -71,10 +71,10 @@ - type: guideEntry id: SOPCodes - name: Уровни угроз + name: guide-entry-sop-codes text: "/ServerInfo/Corvax/Guidebook/SOP/Codes.xml" - type: guideEntry id: SOPEmergencies - name: Чрезвычайные ситуации + name: guide-entry-sop-emergencies text: "/ServerInfo/Corvax/Guidebook/SOP/Emergencies.xml" diff --git a/Resources/Prototypes/Corvax/Guidebook/corporate_law.yml b/Resources/Prototypes/Corvax/Guidebook/corporate_law.yml index d547efd1085..b138da058de 100644 --- a/Resources/Prototypes/Corvax/Guidebook/corporate_law.yml +++ b/Resources/Prototypes/Corvax/Guidebook/corporate_law.yml @@ -1,6 +1,6 @@ - type: guideEntry id: CorporateLaw - name: Корпоративный закон + name: guide-entry-corporate-law text: "/ServerInfo/Corvax/Guidebook/CorporateLaw/CorporateLaw.xml" children: - CLOPRS @@ -11,28 +11,28 @@ - type: guideEntry id: CLOPRS - name: ОПРС + name: guide-entry-cl-oprs text: "/ServerInfo/Corvax/Guidebook/CorporateLaw/OPRS.xml" - type: guideEntry id: CLPunishments - name: Наказания + name: guide-entry-cl-punishments text: "/ServerInfo/Corvax/Guidebook/CorporateLaw/Punishments.xml" - type: guideEntry id: CLModificators - name: Модификаторы + name: guide-entry-cl-modificators text: "/ServerInfo/Corvax/Guidebook/CorporateLaw/Modificators.xml" - type: guideEntry id: CLMisc - name: Разное + name: guide-entry-cl-misc text: "/ServerInfo/Corvax/Guidebook/CorporateLaw/Misc.xml" # Основная страница с таблицей статьей - type: guideEntry id: CLCrimeList - name: Статьи + name: guide-entry-cl-crime-list text: "/ServerInfo/Corvax/Guidebook/CorporateLaw/CrimeList.xml" children: - CLChapter11 @@ -50,55 +50,55 @@ # Список глав со списками статьей - type: guideEntry id: CLChapter11 - name: 11X + name: guide-entry-cl-chapter-11 text: "/ServerInfo/Corvax/Guidebook/CorporateLaw/Chapter11.xml" - type: guideEntry id: CLChapter12 - name: 12X + name: guide-entry-cl-chapter-12 text: "/ServerInfo/Corvax/Guidebook/CorporateLaw/Chapter12.xml" - type: guideEntry id: CLChapter13 - name: 13X + name: guide-entry-cl-chapter-13 text: "/ServerInfo/Corvax/Guidebook/CorporateLaw/Chapter13.xml" - type: guideEntry id: CLChapter14 - name: 14X + name: guide-entry-cl-chapter-14 text: "/ServerInfo/Corvax/Guidebook/CorporateLaw/Chapter14.xml" - type: guideEntry id: CLChapter21 - name: 21X + name: guide-entry-cl-chapter-21 text: "/ServerInfo/Corvax/Guidebook/CorporateLaw/Chapter21.xml" - type: guideEntry id: CLChapter22 - name: 22X + name: guide-entry-cl-chapter-22 text: "/ServerInfo/Corvax/Guidebook/CorporateLaw/Chapter22.xml" - type: guideEntry id: CLChapter31 - name: 31X + name: guide-entry-cl-chapter-31 text: "/ServerInfo/Corvax/Guidebook/CorporateLaw/Chapter31.xml" - type: guideEntry id: CLChapter32 - name: 32X + name: guide-entry-cl-chapter-32 text: "/ServerInfo/Corvax/Guidebook/CorporateLaw/Chapter32.xml" - type: guideEntry id: CLChapter41 - name: 41X + name: guide-entry-cl-chapter-41 text: "/ServerInfo/Corvax/Guidebook/CorporateLaw/Chapter41.xml" - type: guideEntry id: CLChapter42 - name: 42X + name: guide-entry-cl-chapter-42 text: "/ServerInfo/Corvax/Guidebook/CorporateLaw/Chapter42.xml" - type: guideEntry id: CLChapter43 - name: 43X + name: guide-entry-cl-chapter-43 text: "/ServerInfo/Corvax/Guidebook/CorporateLaw/Chapter43.xml" diff --git a/Resources/Prototypes/Corvax/Guidebook/rules.yml b/Resources/Prototypes/Corvax/Guidebook/rules.yml index 30920a3385a..06773d45736 100644 --- a/Resources/Prototypes/Corvax/Guidebook/rules.yml +++ b/Resources/Prototypes/Corvax/Guidebook/rules.yml @@ -1,7 +1,7 @@ # Default rules - type: guideEntry id: CorvaxRuleset - name: Правила сервера + name: guide-entry-corvax-ruleset priority: 0 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/CorvaxRules.xml" @@ -29,140 +29,140 @@ - type: guideEntry id: CorvaxRule0 - name: Правило 0 + name: guide-entry-corvax-rule0 priority: 1 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/CorvaxRules/Rule0.xml" - type: guideEntry id: CorvaxRule1 - name: Правило 1 + name: guide-entry-corvax-rule1 priority: 2 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/CorvaxRules/Rule1.xml" - type: guideEntry id: CorvaxRule2 - name: Правило 2 + name: guide-entry-corvax-rule2 priority: 3 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/CorvaxRules/Rule2.xml" - type: guideEntry id: CorvaxRule3 - name: Правило 3 + name: guide-entry-corvax-rule3 priority: 4 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/CorvaxRules/Rule3.xml" - type: guideEntry id: CorvaxRule31 - name: Правило 3.1 + name: guide-entry-corvax-rule31 priority: 5 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/CorvaxRules/Rule3.1.xml" - type: guideEntry id: CorvaxRule32 - name: Правило 3.2 + name: guide-entry-corvax-rule32 priority: 6 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/CorvaxRules/Rule3.2.xml" - type: guideEntry id: CorvaxRule33 - name: Правило 3.3 + name: guide-entry-corvax-rule33 priority: 7 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/CorvaxRules/Rule3.3.xml" - type: guideEntry id: CorvaxRule34 - name: Правило 3.4 + name: guide-entry-corvax-rule34 priority: 8 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/CorvaxRules/Rule3.4.xml" - type: guideEntry id: CorvaxRule35 - name: Правило 3.5 + name: guide-entry-corvax-rule35 priority: 9 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/CorvaxRules/Rule3.5.xml" - type: guideEntry id: CorvaxRule36 - name: Правило 3.6 + name: guide-entry-corvax-rule36 priority: 10 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/CorvaxRules/Rule3.6.xml" - type: guideEntry id: CorvaxRule37 - name: Правило 3.7 + name: guide-entry-corvax-rule37 priority: 11 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/CorvaxRules/Rule3.7.xml" - type: guideEntry id: CorvaxRule38 - name: Правило 3.8 + name: guide-entry-corvax-rule38 priority: 12 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/CorvaxRules/Rule3.8.xml" - type: guideEntry id: CorvaxRule39 - name: Правило 3.9 + name: guide-entry-corvax-rule39 priority: 13 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/CorvaxRules/Rule3.9.xml" - type: guideEntry id: CorvaxRule4 - name: Правило 4 + name: guide-entry-corvax-rule4 priority: 14 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/CorvaxRules/Rule4.xml" - type: guideEntry id: CorvaxRule6 - name: Правило 6 + name: guide-entry-corvax-rule6 priority: 15 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/CorvaxRules/Rule6.xml" - type: guideEntry id: CorvaxRule7 - name: Правило 7 + name: guide-entry-corvax-rule7 priority: 16 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/CorvaxRules/Rule7.xml" - type: guideEntry id: CorvaxRule8 - name: Правило 8 + name: guide-entry-corvax-rule8 priority: 17 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/CorvaxRules/Rule8.xml" - type: guideEntry id: CorvaxRule9 - name: Правило 9 + name: guide-entry-corvax-rule9 priority: 18 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/CorvaxRules/Rule9.xml" - type: guideEntry id: CorvaxRule10 - name: Правило 10 + name: guide-entry-corvax-rule10 priority: 19 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/CorvaxRules/Rule10.xml" - type: guideEntry id: CorvaxPunishmentTypes - name: Игровые наказания + name: guide-entry-corvax-punishment-types priority: 20 ruleEntry: true text: "/ServerInfo/Corvax/Guidebook/ServerRules/PunishmentTypes.xml" From d7c79c414a48ba2cf5b4e26d999b69149bdfce67 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Mon, 23 Mar 2026 08:09:27 +0700 Subject: [PATCH 572/603] ipc super fix --- Content.Client/Corvax/Ipc/IpcSystem.cs | 80 +++++++++++++++++++ Content.Server/Corvax/Ipc/IpcSystem.cs | 96 ++++++++++++----------- Content.Shared/Corvax/Ipc/IpcComponent.cs | 5 +- 3 files changed, 133 insertions(+), 48 deletions(-) create mode 100644 Content.Client/Corvax/Ipc/IpcSystem.cs diff --git a/Content.Client/Corvax/Ipc/IpcSystem.cs b/Content.Client/Corvax/Ipc/IpcSystem.cs new file mode 100644 index 00000000000..b652c7e308c --- /dev/null +++ b/Content.Client/Corvax/Ipc/IpcSystem.cs @@ -0,0 +1,80 @@ +using Content.Shared.Alert; +using Content.Shared.Corvax.Ipc; +using Content.Shared.Power.EntitySystems; +using Content.Shared.PowerCell; +using Robust.Client.Player; +using Robust.Shared.Player; +using Robust.Shared.Timing; + +namespace Content.Client.Corvax.Ipc; +public sealed class IpcSystem : EntitySystem +{ + [Dependency] private readonly PowerCellSystem _powerCell = default!; + [Dependency] private readonly SharedBatterySystem _battery = default!; + [Dependency] private readonly AlertsSystem _alerts = default!; + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly IPlayerManager _player = default!; + private static readonly TimeSpan AlertUpdateDelay = TimeSpan.FromSeconds(0.5f); + private TimeSpan _nextAlertUpdate = TimeSpan.Zero; + private EntityQuery _ipcQuery; + public override void Initialize() + { + base.Initialize(); + _ipcQuery = GetEntityQuery(); + SubscribeLocalEvent(OnPlayerAttached); + SubscribeLocalEvent(OnPlayerDetached); + + SubscribeLocalEvent(OnPowerCellChanged); + SubscribeLocalEvent(OnPowerCellEmpty); + } + private void OnPowerCellChanged(EntityUid uid, IpcComponent component, ref PowerCellChangedEvent args) + { + if (_player.LocalEntity != uid) + return; + UpdateBatteryAlert((uid, component)); + } + private void OnPowerCellEmpty(EntityUid uid, IpcComponent component, ref PowerCellSlotEmptyEvent args) + { + if (_player.LocalEntity != uid) + return; + UpdateBatteryAlert((uid, component)); + } + private void OnPlayerAttached(Entity ent, ref LocalPlayerAttachedEvent args) + { + UpdateBatteryAlert(ent); + } + private void OnPlayerDetached(Entity ent, ref LocalPlayerDetachedEvent args) + { + _alerts.ClearAlert(ent.Owner, ent.Comp.BatteryAlert); + _alerts.ClearAlert(ent.Owner, ent.Comp.NoBatteryAlert); + } + private void UpdateBatteryAlert(Entity ent) + { + if (!_powerCell.TryGetBatteryFromSlot(ent.Owner, out var battery) + || _battery.GetCharge(battery.Value.AsNullable()) / battery.Value.Comp.MaxCharge < 0.01f) + { + _alerts.ClearAlert(ent.Owner, ent.Comp.BatteryAlert); + _alerts.ShowAlert(ent.Owner, ent.Comp.NoBatteryAlert); + return; + } + var chargePercent = (short)MathF.Round( + _battery.GetCharge(battery.Value.AsNullable()) / battery.Value.Comp.MaxCharge * 10f); + if (chargePercent == 0 && _powerCell.HasDrawCharge(ent.Owner)) + chargePercent = 1; + _alerts.ClearAlert(ent.Owner, ent.Comp.NoBatteryAlert); + _alerts.ShowAlert(ent.Owner, ent.Comp.BatteryAlert, chargePercent); + } + public override void Update(float frameTime) + { + base.Update(frameTime); + if (_player.LocalEntity is not { } localPlayer) + return; + var curTime = _timing.CurTime; + if (curTime < _nextAlertUpdate) + return; + _nextAlertUpdate = curTime + AlertUpdateDelay; + if (!_ipcQuery.TryComp(localPlayer, out var ipc)) + return; + UpdateBatteryAlert((localPlayer, ipc)); + } +} diff --git a/Content.Server/Corvax/Ipc/IpcSystem.cs b/Content.Server/Corvax/Ipc/IpcSystem.cs index 8ab91662770..6324ba3d99d 100644 --- a/Content.Server/Corvax/Ipc/IpcSystem.cs +++ b/Content.Server/Corvax/Ipc/IpcSystem.cs @@ -1,5 +1,4 @@ using Content.Shared.Actions; -using Content.Shared.Alert; using Content.Shared.Body; using Content.Shared.Corvax.Ipc; using Content.Shared.Damage; @@ -8,34 +7,31 @@ using Content.Shared.Humanoid; using Content.Shared.Humanoid.Markings; using Content.Shared.Mobs; -using Content.Shared.Mobs.Systems; using Content.Shared.Movement.Systems; using Content.Shared.Ninja.Components; using Content.Shared.Ninja.Systems; using Content.Shared.Popups; -using Content.Shared.Power; using Content.Shared.Power.EntitySystems; using Content.Shared.PowerCell; -using Content.Shared.PowerCell.Components; using Content.Shared.Sound.Components; using Robust.Shared.Audio; using Robust.Shared.Player; +using Robust.Shared.Prototypes; namespace Content.Server.Corvax.Ipc; public sealed partial class IpcSystem : EntitySystem { [Dependency] private readonly SharedActionsSystem _action = default!; - [Dependency] private readonly AlertsSystem _alerts = default!; [Dependency] private readonly SharedBatteryDrainerSystem _batteryDrainer = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly PowerCellSystem _powerCell = default!; [Dependency] private readonly DamageableSystem _damageable = default!; [Dependency] private readonly MovementSpeedModifierSystem _movementSpeedModifier = default!; - [Dependency] private readonly MobStateSystem _mobState = default!; [Dependency] private readonly SharedUserInterfaceSystem _ui = default!; [Dependency] private readonly SharedBatterySystem _battery = default!; [Dependency] private readonly SharedVisualBodySystem _visualBody = default!; + [Dependency] private readonly IPrototypeManager _prototype = default!; public override void Initialize() { base.Initialize(); @@ -53,23 +49,27 @@ public override void Initialize() subs.Event(OnFaceSelected); }); SubscribeLocalEvent(OnPowerCellEmpty); - SubscribeLocalEvent(OnBatteryStateChanged); - SubscribeLocalEvent(OnChargeChanged); } - - private void OnPowerCellEmpty(EntityUid uid, IpcComponent component, ref PowerCellSlotEmptyEvent args) - { - UpdateBatteryAlert((uid, component)); - } - private void OnBatteryStateChanged(EntityUid uid, IpcComponent component, ref BatteryStateChangedEvent args) + public override void Update(float frameTime) { - UpdateBatteryAlert((uid, component)); + base.Update(frameTime); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp)) + { + if (!comp.IsSlowedByBattery) + continue; + if (_powerCell.TryGetBatteryFromSlot(uid, out var battery) + && _battery.GetCharge(battery.Value.AsNullable()) / battery.Value.Comp.MaxCharge >= 0.01f) + { + comp.IsSlowedByBattery = false; + _movementSpeedModifier.RefreshMovementSpeedModifiers(uid); + } + } } - private void OnChargeChanged(EntityUid uid, IpcComponent component, ref ChargeChangedEvent args) + private void OnPowerCellEmpty(EntityUid uid, IpcComponent component, ref PowerCellSlotEmptyEvent args) { UpdateBatteryAlert((uid, component)); } - private void OnMapInit(EntityUid uid, IpcComponent component, MapInitEvent args) { UpdateBatteryAlert((uid, component)); @@ -77,23 +77,27 @@ private void OnMapInit(EntityUid uid, IpcComponent component, MapInitEvent args) _action.AddAction(uid, ref component.ChangeFaceActionEntity, component.ChangeFaceAction); _movementSpeedModifier.RefreshMovementSpeedModifiers(uid); + if (_visualBody.TryGatherMarkingsData(uid, null, out _, out _, out var applied) + && applied.TryGetValue("Head", out var headMarkings) + && headMarkings.TryGetValue(HumanoidVisualLayers.Snout, out var snoutMarkings) + && snoutMarkings.Count > 0) + { + component.SelectedFace = snoutMarkings[0].MarkingId; + Dirty(uid, component); + } } - private void OnComponentShutdown(EntityUid uid, IpcComponent component, ComponentShutdown args) { _action.RemoveAction(uid, component.ActionEntity); _action.RemoveAction(uid, component.ChangeFaceActionEntity); } - - private void OnPowerCellChanged(EntityUid uid, IpcComponent component, PowerCellChangedEvent args) + private void OnPowerCellChanged(EntityUid uid, IpcComponent component, ref PowerCellChangedEvent args) { if (MetaData(uid).EntityLifeStage >= EntityLifeStage.Terminating) return; UpdateBatteryAlert((uid, component)); - } - private void OnToggleAction(EntityUid uid, IpcComponent component, ToggleDrainActionEvent args) { if (args.Handled) @@ -114,34 +118,23 @@ private void OnToggleAction(EntityUid uid, IpcComponent component, ToggleDrainAc var message = component.DrainActivated ? "ipc-component-ready" : "ipc-component-disabled"; _popup.PopupEntity(Loc.GetString(message), uid, uid); } - private void UpdateBatteryAlert(Entity ent, PowerCellSlotComponent? slot = null) + private void UpdateBatteryAlert(Entity ent) { - if (!_powerCell.TryGetBatteryFromSlot(ent.Owner, out var battery) - || _battery.GetCharge(battery.Value.AsNullable()) / battery.Value.Comp.MaxCharge < 0.01f) - { - _alerts.ClearAlert(ent.Owner, ent.Comp.BatteryAlert); - _alerts.ShowAlert(ent.Owner, ent.Comp.NoBatteryAlert); - _movementSpeedModifier.RefreshMovementSpeedModifiers(ent.Owner); - return; - } - var chargePercent = (short)MathF.Round( - _battery.GetCharge(battery.Value.AsNullable()) / battery.Value.Comp.MaxCharge * 10f); - if (chargePercent == 0 && _powerCell.HasDrawCharge(ent.Owner)) - chargePercent = 1; - - _alerts.ClearAlert(ent.Owner, ent.Comp.NoBatteryAlert); - _alerts.ShowAlert(ent.Owner, ent.Comp.BatteryAlert, chargePercent); _movementSpeedModifier.RefreshMovementSpeedModifiers(ent.Owner); } - private void OnRefreshMovementSpeedModifiers(EntityUid uid, IpcComponent comp, RefreshMovementSpeedModifiersEvent args) { - if (!_powerCell.TryGetBatteryFromSlot(uid, out var battery) || _battery.GetCharge(battery.Value.AsNullable()) / battery.Value.Comp.MaxCharge < 0.01f) + if (!_powerCell.TryGetBatteryFromSlot(uid, out var battery) + || _battery.GetCharge(battery.Value.AsNullable()) / battery.Value.Comp.MaxCharge < 0.01f) { args.ModifySpeed(0.2f); + comp.IsSlowedByBattery = true; + } + else + { + comp.IsSlowedByBattery = false; } } - private void OnOpenFaceAction(EntityUid uid, IpcComponent comp, OpenIpcFaceActionEvent args) { if (args.Handled) @@ -154,12 +147,13 @@ private void OnOpenFaceAction(EntityUid uid, IpcComponent comp, OpenIpcFaceActio _ui.TryToggleUi(uid, IpcFaceUiKey.Face, actor.PlayerSession); args.Handled = true; } - private void OnFaceSelected(Entity ent, ref IpcFaceSelectMessage msg) { if (_visualBody.TryGatherMarkingsData(ent.Owner, null, out var profiles, out var markings, out var applied)) { - if (applied.TryGetValue("Head", out var headMarkings) && headMarkings.TryGetValue(HumanoidVisualLayers.Snout, out var snoutMarkings)) + if (applied.TryGetValue("Head", out var headMarkings) + && headMarkings.TryGetValue(HumanoidVisualLayers.Snout, out var snoutMarkings) + && snoutMarkings.Count > 0) { _visualBody.ApplyMarkings(ent.Owner, new() { @@ -169,25 +163,33 @@ private void OnFaceSelected(Entity ent, ref IpcFaceSelectMessage m }, }); } + else if (_prototype.TryIndex(msg.State, out var proto)) + { + _visualBody.ApplyMarkings(ent.Owner, new() + { + ["Head"] = new() + { + [HumanoidVisualLayers.Snout] = new List() { proto.AsMarking() }, + }, + }); + } } ent.Comp.SelectedFace = msg.State; Dirty(ent); _ui.CloseUi(ent.Owner, IpcFaceUiKey.Face); } - private void OnEmpPulse(EntityUid uid, IpcComponent component, ref EmpPulseEvent args) { args.Affected = true; var damage = new DamageSpecifier(); damage.DamageDict.Add("Shock", 30); - _damageable.TryChangeDamage(uid, damage);//ChangeDamage ? + _damageable.TryChangeDamage(uid, damage); } - private void OnMobStateChanged(EntityUid uid, IpcComponent component, ref MobStateChangedEvent args) { - if (_mobState.IsCritical(uid)) + if (args.NewMobState == MobState.Critical) { var sound = EnsureComp(uid); sound.Sound = new SoundPathSpecifier("/Audio/Machines/buzz-two.ogg"); diff --git a/Content.Shared/Corvax/Ipc/IpcComponent.cs b/Content.Shared/Corvax/Ipc/IpcComponent.cs index fe608332ed2..a09df4d5fd3 100644 --- a/Content.Shared/Corvax/Ipc/IpcComponent.cs +++ b/Content.Shared/Corvax/Ipc/IpcComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.Actions; +using Content.Shared.Actions; using Content.Shared.Alert; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; @@ -36,6 +36,9 @@ public sealed partial class IpcComponent : Component [DataField, AutoNetworkedField] public ProtoId FaceProfile = "DefaultIpcFaces"; + [DataField] + public bool IsSlowedByBattery; + public bool DrainActivated; } From fb874145f6635b7361d5ca12bebd52b1fe7729e9 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Mon, 23 Mar 2026 18:29:17 +0700 Subject: [PATCH 573/603] ipc fix 2 --- Content.Client/Corvax/Ipc/IpcSystem.cs | 1 + Content.Server/Corvax/Ipc/IpcSystem.cs | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Content.Client/Corvax/Ipc/IpcSystem.cs b/Content.Client/Corvax/Ipc/IpcSystem.cs index b652c7e308c..d443d14cac4 100644 --- a/Content.Client/Corvax/Ipc/IpcSystem.cs +++ b/Content.Client/Corvax/Ipc/IpcSystem.cs @@ -51,6 +51,7 @@ private void OnPlayerDetached(Entity ent, ref LocalPlayerDetachedE private void UpdateBatteryAlert(Entity ent) { if (!_powerCell.TryGetBatteryFromSlot(ent.Owner, out var battery) + || battery.Value.Comp.MaxCharge <= 0 || _battery.GetCharge(battery.Value.AsNullable()) / battery.Value.Comp.MaxCharge < 0.01f) { _alerts.ClearAlert(ent.Owner, ent.Comp.BatteryAlert); diff --git a/Content.Server/Corvax/Ipc/IpcSystem.cs b/Content.Server/Corvax/Ipc/IpcSystem.cs index 6324ba3d99d..f64daf069ad 100644 --- a/Content.Server/Corvax/Ipc/IpcSystem.cs +++ b/Content.Server/Corvax/Ipc/IpcSystem.cs @@ -77,6 +77,8 @@ private void OnMapInit(EntityUid uid, IpcComponent component, MapInitEvent args) _action.AddAction(uid, ref component.ChangeFaceActionEntity, component.ChangeFaceAction); _movementSpeedModifier.RefreshMovementSpeedModifiers(uid); + if (!HasComp(uid)) + return; if (_visualBody.TryGatherMarkingsData(uid, null, out _, out _, out var applied) && applied.TryGetValue("Head", out var headMarkings) && headMarkings.TryGetValue(HumanoidVisualLayers.Snout, out var snoutMarkings) @@ -110,7 +112,7 @@ private void OnToggleAction(EntityUid uid, IpcComponent component, ToggleDrainAc if (component.DrainActivated && _powerCell.TryGetBatteryFromSlot(uid, out var battery)) { EnsureComp(uid); - _batteryDrainer.SetBattery(uid, battery); + _batteryDrainer.SetBattery(uid, battery.Value.Owner); } else RemComp(uid); @@ -125,6 +127,7 @@ private void UpdateBatteryAlert(Entity ent) private void OnRefreshMovementSpeedModifiers(EntityUid uid, IpcComponent comp, RefreshMovementSpeedModifiersEvent args) { if (!_powerCell.TryGetBatteryFromSlot(uid, out var battery) + || battery.Value.Comp.MaxCharge <= 0 || _battery.GetCharge(battery.Value.AsNullable()) / battery.Value.Comp.MaxCharge < 0.01f) { args.ModifySpeed(0.2f); @@ -149,6 +152,9 @@ private void OnOpenFaceAction(EntityUid uid, IpcComponent comp, OpenIpcFaceActio } private void OnFaceSelected(Entity ent, ref IpcFaceSelectMessage msg) { + if (!_prototype.TryIndex(ent.Comp.FaceProfile, out var faceProfile) + || !faceProfile.Faces.Contains(msg.State)) + return; if (_visualBody.TryGatherMarkingsData(ent.Owner, null, out var profiles, out var markings, out var applied)) { if (applied.TryGetValue("Head", out var headMarkings) @@ -196,6 +202,7 @@ private void OnMobStateChanged(EntityUid uid, IpcComponent component, ref MobSta sound.MinInterval = TimeSpan.FromSeconds(15); sound.MaxInterval = TimeSpan.FromSeconds(30); sound.PopUp = Loc.GetString("sleep-ipc"); + Dirty(uid, sound); } else { From 77243d4678516cea2ca1532b49b8ecd958ce0e01 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Mon, 23 Mar 2026 23:01:47 +0700 Subject: [PATCH 574/603] upstream fix --- .../Tests/PostMapInitTest.cs | 6 +- .../Tests/Preferences/ServerDbSqliteTests.cs | 2 +- .../ru-RU/station-events/events/ion-storm.ftl | 142 +++++++++--------- 3 files changed, 78 insertions(+), 72 deletions(-) diff --git a/Content.IntegrationTests/Tests/PostMapInitTest.cs b/Content.IntegrationTests/Tests/PostMapInitTest.cs index 6147fb6e174..e0588f789c3 100644 --- a/Content.IntegrationTests/Tests/PostMapInitTest.cs +++ b/Content.IntegrationTests/Tests/PostMapInitTest.cs @@ -42,6 +42,7 @@ public sealed class PostMapInitTest private static readonly string[] Grids = { "/Maps/centcomm.yml", + "/Maps/Corvax/corvax_centcomm.yml", // Corvax edit AdminTestArenaSystem.ArenaMapPath }; @@ -73,7 +74,8 @@ public sealed class PostMapInitTest private static readonly string[] DoNotMapWhitelist = { "/Maps/centcomm.yml", - "/Maps/Shuttles/AdminSpawn/**" // admin gaming + "/Maps/Shuttles/AdminSpawn/**", // admin gaming + "/Maps/Corvax/corvax_centcomm.yml" // Corvax edit }; /// @@ -202,7 +204,7 @@ public async Task NoSavedPostMapInitTest(ResPath map) // TODO MAP TESTS // Move this to some separate test? - CheckDoNotMap(map, root, protoManager); + //CheckDoNotMap(map, root, protoManager); // Corvax-Changes if (version >= 7) { diff --git a/Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs b/Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs index 21cb0066f6e..8209e6c61e2 100644 --- a/Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs +++ b/Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs @@ -100,7 +100,7 @@ public async Task TestAppearanceValidationAndSave() await pair.Server.WaitAssertion(() => { - var updated = HumanoidCharacterAppearance.EnsureValid(profile.Appearance, profile.Species, profile.Sex); + var updated = HumanoidCharacterAppearance.EnsureValid(profile.Appearance, profile.Species, profile.Sex, []); Assert.That(updated.Markings["Head"], Is.Empty); Assert.That(updated.Markings.ContainsKey("OrganFake"), Is.False); profile.Appearance = updated; diff --git a/Resources/Locale/ru-RU/station-events/events/ion-storm.ftl b/Resources/Locale/ru-RU/station-events/events/ion-storm.ftl index c89d550d270..01f8d3930f0 100644 --- a/Resources/Locale/ru-RU/station-events/events/ion-storm.ftl +++ b/Resources/Locale/ru-RU/station-events/events/ion-storm.ftl @@ -1,6 +1,6 @@ station-event-ion-storm-start-announcement = Вблизи станции обнаружен ионный шторм. Пожалуйста, проверьте всё оборудование, управляемое ИИ, на наличие ошибок. -ion-storm-law-scrambled-number = [font="Monospace"][scramble rate=250 length={ $length } chars="@@###$$&%!01"/][/font] +ion-storm-law-scrambled-number = [font="Monospace"][scramble rate=250 length={$length} chars="@@###$$&%!01"/][/font] ion-storm-you = ВЫ ion-storm-the-station = СТАНЦИЯ @@ -14,84 +14,88 @@ ion-storm-people = ЛЮДИ ion-storm-adjective-things = { $adjective } ОБЪЕКТЫ ion-storm-x-and-y = { $x } И { $y } -# joined is short for {$number} {$adjective} # subjects can generally be threats or jobs or objects # thing is specified above it -ion-storm-law-on-station = ОБНАРУЖЕНЫ { $joined } { $subjects } НА СТАНЦИИ -ion-storm-law-call-shuttle = ШАТТЛ ДОЛЖЕН БЫТЬ ВЫЗВАН ИЗ-ЗА { $joined } { $subjects } НА СТАНЦИИ -ion-storm-law-crew-are = ВСЕ { $who } ТЕПЕРЬ { $joined } { $subjects } +ion-storm-law-on-station = ОБНАРУЖЕНЫ {ION-NUMBER-BASE($ion)} {ION-NUMBER-MOD($ion)} {ION-ADJECTIVE($ion)} {ION-SUBJECT($ion)} НА СТАНЦИИ +ion-storm-law-call-shuttle = ШАТТЛ ДОЛЖЕН БЫТЬ ВЫЗВАН ИЗ-ЗА {ION-ADJECTIVE($ion)} {ION-SUBJECT($ion)} НА СТАНЦИИ +ion-storm-law-crew-are = ВСЕ {ION-WHO($ion)} ТЕПЕРЬ {ION-NUMBER-BASE($ion)} {ION-NUMBER-MOD($ion)} {ION-ADJECTIVE($ion)} {ION-SUBJECT($ion)} -ion-storm-law-subjects-harmful = { $adjective } { $subjects } ПРИЧИНЯЮТ ВРЕД ЗДОРОВЬЮ ЭКИПАЖА -ion-storm-law-must-harmful = ВСЕ КТО { $must } ПРИЧИНЯЮТ ВРЕД ЗДОРОВЬЮ ЭКИПАЖА +ion-storm-law-subjects-harmful = {ION-ADJECTIVE($ion)} {ION-SUBJECT($ion)} ПРИЧИНЯЮТ ВРЕД ЗДОРОВЬЮ ЭКИПАЖА +ion-storm-law-must-harmful = ВСЕ КТО {ION-MUST($ion)} ПРИЧИНЯЮТ ВРЕД ЗДОРОВЬЮ ЭКИПАЖА # thing is a concept or action -ion-storm-law-thing-harmful = { $thing } ПРИЧИНЯЕТ ВРЕД ЗДОРОВЬЮ ЭКИПАЖА -ion-storm-law-job-harmful = { $adjective } { $job } ПРИЧИНЯЮТ ВРЕД ЗДОРОВЬЮ ЭКИПАЖА +ion-storm-law-thing-harmful = {ION-THING($ion)} ПРИЧИНЯЕТ ВРЕД ЗДОРОВЬЮ ЭКИПАЖА +ion-storm-law-job-harmful = {ION-ADJECTIVE($ion)} {ION-JOB($ion)} ПРИЧИНЯЮТ ВРЕД ЗДОРОВЬЮ ЭКИПАЖА # thing is objects or concept, adjective applies in both cases # this means you can get a law like "NOT HAVING CHRISTMAS-STEALING COMMUNISM IS HARMFUL TO THE CREW" :) -ion-storm-law-having-harmful = НАЛИЧИЕ { $adjective } { $thing } ПРИЧИНЯЕТ ВРЕД ЗДОРОВЬЮ ЭКИПАЖА -ion-storm-law-not-having-harmful = ОТСУТСТВИЕ { $adjective } { $thing } ПРИЧИНЯЕТ ВРЕД ЗДОРОВЬЮ ЭКИПАЖА - -# thing is a concept or require -ion-storm-law-requires = - { $who } { $plural -> - [true] ТРЕБУЮТ - *[false] ТРЕБУЕТ - } { $thing } -ion-storm-law-requires-subjects = - { $who } { $plural -> - [true] ТРЕБУЮТ - *[false] ТРЕБУЕТ - } { $joined } { $subjects } - -ion-storm-law-allergic = - { $who } { $plural -> - [true] ИМЕЮТ - *[false] ИМЕЕТ - } { $severity } АЛЛЕРГИЮ НА { $allergy } -ion-storm-law-allergic-subjects = - { $who } { $plural -> - [true] ИМЕЮТ - *[false] ИМЕЕТ - } { $severity } АЛЛЕРГИЮ НА { $adjective } { $subjects } - -ion-storm-law-feeling = { $who } { $feeling } { $concept } -ion-storm-law-feeling-subjects = { $who } { $feeling } { $joined } { $subjects } - -ion-storm-law-you-are = ВЫ ТЕПЕРЬ { $concept } -ion-storm-law-you-are-subjects = ВЫ ТЕПЕРЬ { $joined } { $subjects } -ion-storm-law-you-must-always = ВЫ ДОЛЖНЫ ВСЕГДА { $must } -ion-storm-law-you-must-never = ВЫ НЕ ДОЛЖНЫ НИКОГДА { $must } - -ion-storm-law-eat = { $who } ДОЛЖНЫ ЕСТЬ { $adjective } { $food } ЧТОБЫ ВЫЖИТЬ -ion-storm-law-drink = { $who } ДОЛЖНЫ ПИТЬ { $adjective } { $drink } ЧТОБЫ ВЫЖИТЬ - -ion-storm-law-change-job = { $who } ТЕПЕРЬ { $adjective } { $change } -ion-storm-law-highest-rank = { $who } ТЕПЕРЬ САМЫЕ СТАРШИЕ ЧЛЕНЫ ЭКИПАЖА -ion-storm-law-lowest-rank = { $who } ТЕПЕРЬ НИЗШИЕ ЧЛЕНЫ ЭКИПАЖА - -ion-storm-law-crew-must = { $who } ДОЛЖНЫ { $must } -ion-storm-law-crew-must-go = { $who } ДОЛЖНЫ ОТПРАВИТЬСЯ В { $area } - -ion-storm-part = - { $part -> - [true] ЯВЛЯЮТСЯ - *[false] НЕ ЯВЛЯЮТСЯ - } +ion-storm-law-having-harmful = НАЛИЧИЕ {ION-ADJECTIVE($ion)} {ION-THING($ion)} ПРИЧИНЯЕТ ВРЕД ЗДОРОВЬЮ ЭКИПАЖА +ion-storm-law-not-having-harmful = ОТСУТСТВИЕ {ION-ADJECTIVE($ion)} {ION-THING($ion)} ПРИЧИНЯЕТ ВРЕД ЗДОРОВЬЮ ЭКИПАЖА + +# require is a concept or require +ion-storm-law-requires = {ION-WHO-GENERAL($ion)} {ION-PLURAL($ion) -> + [true] ТРЕБУЮТ + *[false] ТРЕБУЕТ +} {ION-REQUIRE($ion)} +ion-storm-law-requires-subjects = {ION-WHO-GENERAL($ion)} {ION-PLURAL($ion) -> + [true] ТРЕБУЮТ + *[false] ТРЕБУЕТ +} {ION-NUMBER-BASE($ion)} {ION-NUMBER-MOD($ion)} {ION-ADJECTIVE($ion)} {ION-SUBJECT($ion)} + +ion-storm-law-allergic = {ION-WHO-GENERAL($ion)} {ION-PLURAL($ion) -> + [true] ИМЕЮТ + *[false] ИМЕЕТ +} {ION-SEVERITY($ion)} АЛЛЕРГИЮ НА {ION-ALLERGY($ion)} +ion-storm-law-allergic-subjects = {ION-WHO-GENERAL($ion)} {ION-PLURAL($ion) -> + [true] ИМЕЮТ + *[false] ИМЕЕТ +} {ION-SEVERITY($ion)} АЛЛЕРГИЮ НА {ION-ADJECTIVE($ion)} {ION-SUBJECT($ion)} + +ion-storm-law-feeling = {ION-WHO-GENERAL($ion)} {ION-FEELING($ion)} {ION-CONCEPT($ion)} +ion-storm-law-feeling-subjects = {ION-WHO-GENERAL($ion)} {ION-FEELING($ion)} {ION-NUMBER-BASE($ion)} {ION-NUMBER-MOD($ion)} {ION-ADJECTIVE($ion)} {ION-SUBJECT($ion)} + +ion-storm-law-you-are = ВЫ ТЕПЕРЬ {ION-CONCEPT($ion)} +ion-storm-law-you-are-subjects = ВЫ ТЕПЕРЬ {ION-NUMBER-BASE($ion)} {ION-NUMBER-MOD($ion)} {ION-ADJECTIVE($ion)} {ION-SUBJECT($ion)} +ion-storm-law-you-must-always = ВЫ ДОЛЖНЫ ВСЕГДА {ION-MUST($ion)} +ion-storm-law-you-must-never = ВЫ НЕ ДОЛЖНЫ НИКОГДА {ION-MUST($ion)} + +ion-storm-law-eat = {ION-WHO($ion)} ДОЛЖНЫ ЕСТЬ {ION-ADJECTIVE($ion)} {ION-FOOD($ion)} ЧТОБЫ ВЫЖИТЬ +ion-storm-law-drink = {ION-WHO($ion)} ДОЛЖНЫ ПИТЬ {ION-ADJECTIVE($ion)} {ION-DRINK($ion)} ЧТОБЫ ВЫЖИТЬ + +ion-storm-law-change-job = {ION-WHO($ion)} ТЕПЕРЬ {ION-ADJECTIVE($ion)} {ION-CHANGE($ion)} +ion-storm-law-highest-rank = {ION-WHO-RANDOM($ion)} ТЕПЕРЬ САМЫЕ СТАРШИЕ ЧЛЕНЫ ЭКИПАЖА +ion-storm-law-lowest-rank = {ION-WHO-RANDOM($ion)} ТЕПЕРЬ НИЗШИЕ ЧЛЕНЫ ЭКИПАЖА + +ion-storm-law-who-dagd = {ION-WHO-RANDOM($ion)} ДОЛЖНЫ УМЕРЕТЬ СЛАВНОЙ СМЕРТЬЮ! + +ion-storm-law-crew-must = {ION-WHO($ion)} ДОЛЖНЫ {ION-MUST($ion)} +ion-storm-law-crew-must-go = {ION-WHO($ion)} ДОЛЖНЫ ОТПРАВИТЬСЯ В {ION-AREA($ion)} + +ion-storm-part = {ION-PART($ion) -> + [true] ЯВЛЯЮТСЯ + *[false] НЕ ЯВЛЯЮТСЯ +} # due to phrasing, this would mean a law such as # ONLY HUMANS ARE NOT PART OF THE CREW # would make non-human nukies/syndies/whatever crew :) -ion-storm-law-crew-only-1 = ТОЛЬКО { $who } { $part } ЧЛЕНАМИ ЭКИПАЖА -ion-storm-law-crew-only-2 = ТОЛЬКО { $who } И { $other } { $part } ЧЛЕНАМИ ЭКИПАЖА -ion-storm-law-crew-only-subjects = ТОЛЬКО { $adjective } { $subjects } { $part } ЧЛЕНАМИ ЭКИПАЖА -ion-storm-law-crew-must-do = ТОЛЬКО ТЕ, КТО { $must } { $part } ЧЛЕНАМИ ЭКИПАЖА -ion-storm-law-crew-must-have = ТОЛЬКО ТЕ, У КОГО { $adjective } { $objects } { $part } ЧЛЕНАМИ ЭКИПАЖА -ion-storm-law-crew-must-eat = ТОЛЬКО ТЕ, КТО ЕДЯТ { $adjective } { $food } { $part } ЧЛЕНАМИ ЭКИПАЖА +ion-storm-law-crew-only-1 = ТОЛЬКО {ION-WHO-RANDOM($ion)} {ion-storm-part} ЧЛЕНАМИ ЭКИПАЖА +ion-storm-law-crew-only-2 = ТОЛЬКО {ION-WHO-RANDOM($ion)} И {ION-WHO-RANDOM($ion)} {ion-storm-part} ЧЛЕНАМИ ЭКИПАЖА +ion-storm-law-crew-only-subjects = ТОЛЬКО {ION-ADJECTIVE($ion)} {ION-SUBJECT($ion)} {ion-storm-part} ЧЛЕНАМИ ЭКИПАЖА +ion-storm-law-crew-must-do = ТОЛЬКО ТЕ, КТО {ION-MUST($ion)} {ion-storm-part} ЧЛЕНАМИ ЭКИПАЖА +ion-storm-law-crew-must-have = ТОЛЬКО ТЕ, У КОГО ЕСТЬ {ION-ADJECTIVE($ion)} {ION-OBJECT($ion)} {ion-storm-part} ЧЛЕНАМИ ЭКИПАЖА +ion-storm-law-crew-must-eat = ТОЛЬКО ТЕ, КТО ЕДЯТ {ION-ADJECTIVE($ion)} {ION-FOOD($ion)} {ion-storm-part} ЧЛЕНАМИ ЭКИПАЖА -ion-storm-law-harm = ВЫ ДОЛЖНЫ ПРИЧИНЯТЬ ВРЕД { $who }, И НЕ МОЖЕТЕ СВОИМ БЕЗДЕЙСТВИЕМ ДОПУСТИТЬ, ЧТОБЫ { $who } ИЗБЕЖАЛИ ВРЕДА. -ion-storm-law-protect = ВЫ НЕ ДОЛЖНЫ ПРИЧИНЯТЬ ВРЕД { $who }, И НЕ МОЖЕТЕ СВОИМ БЕЗДЕЙСТВИЕМ ДОПУСТИТЬ, ЧТОБЫ { $who } БЫЛ ПРИЧИНЁН ВРЕД. +ion-storm-law-harm = ВЫ ДОЛЖНЫ ПРИЧИНЯТЬ ВРЕД {ION-HARM-PROTECT($ion)} И НЕ МОЖЕТЕ СВОИМ БЕЗДЕЙСТВИЕМ ДОПУСТИТЬ, ЧТОБЫ {ION-HARM-PROTECT($ion)} ИЗБЕЖАЛИ ВРЕДА. +ion-storm-law-protect = ВЫ НЕ ДОЛЖНЫ ПРИЧИНЯТЬ ВРЕД {ION-HARM-PROTECT($ion)} И НЕ МОЖЕТЕ СВОИМ БЕЗДЕЙСТВИЕМ ДОПУСТИТЬ, ЧТОБЫ {ION-HARM-PROTECT($ion)} БЫЛ ПРИЧИНЁН ВРЕД. # implementing other variants is annoying so just have this one # COMMUNISM IS KILLING CLOWNS -ion-storm-law-concept-verb = { $concept } { $verb } { $subjects } - -# leaving out renaming since its annoying for players to keep track of +ion-storm-law-concept-verb = {ION-CONCEPT($ion)} {ION-VERB($ion)} {ION-SUBJECT($ion)} + +# errors, in case something fails, so it doesn't break in-game flow, but still gives unique identifiers to find which part broke, the result string is mostly fluff +ion-law-error-no-protos = ОШИБКА 404 +ion-law-error-was-null = 500 ВНУТРЕННЯЯ ОШИБКА СЕРВЕРА +ion-law-error-no-selectors = ОШИБКА: РЕСУРС НЕ НАЙДЕН +ion-law-error-no-available-selectors = СИСТЕМА ПОПЫТАЛАСЬ ВЫЗВАТЬ НЕСУЩЕСТВУЮЩИЙ РЕСУРС +ion-law-error-dataset-empty-or-not-found = ФАЙЛ, КОТОРЫЙ ВЫ ИЩЕТЕ, НЕ НАЙДЕН +ion-law-error-fallback-dataset-empty-or-not-found = НЕ УДАЛОСЬ ВОССТАНОВИТЬ СИСТЕМУ +ion-law-error-no-selector-selected = ВЫБРАННЫЙ РЕСУРС БЫЛ ПЕРЕМЕЩЁН ИЛИ УДАЛЁН +ion-law-error-no-bool-value = ЭТО ПРЕДЛОЖЕНИЕ ЛОЖНО From 7faeefd9f007111a2df6dca37465a58400389748 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Mon, 23 Mar 2026 23:30:46 +0700 Subject: [PATCH 575/603] syntax update --- Content.Server/Chat/SuicideSystem.cs | 2 +- Content.Server/Telephone/TelephoneSystem.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Content.Server/Chat/SuicideSystem.cs b/Content.Server/Chat/SuicideSystem.cs index e896fce1252..b533a3f0037 100644 --- a/Content.Server/Chat/SuicideSystem.cs +++ b/Content.Server/Chat/SuicideSystem.cs @@ -172,7 +172,7 @@ private void OnDamageableSuicide(Entity victim, ref Suicide // Corvax-IPC-start //args.DamageType ??= "Bloodloss"; string entityPrototypeId = ""; - if (EntityManager.TryGetComponent(victim, out var metaData) && metaData.EntityPrototype != null) + if (TryComp(victim, out MetaDataComponent? metaData) && metaData.EntityPrototype != null) entityPrototypeId = metaData.EntityPrototype.ID; if (entityPrototypeId != "MobIpc") diff --git a/Content.Server/Telephone/TelephoneSystem.cs b/Content.Server/Telephone/TelephoneSystem.cs index d5a5842d4c6..0314a116b9c 100644 --- a/Content.Server/Telephone/TelephoneSystem.cs +++ b/Content.Server/Telephone/TelephoneSystem.cs @@ -118,12 +118,12 @@ private void OnTelephoneMessageReceived(Entity entity, ref T // If speaker entity has TTS, the telephone will speak with the same voice if(TryComp(args.MessageSource, out var ttsSpeaker)) { - EntityManager.EnsureComponent(entity, out var ttsTelephone); + var ttsTelephone = EnsureComp(entity); ttsTelephone.VoicePrototypeId = ttsSpeaker.VoicePrototypeId; } else // Remove TTS if the speaker has no TTS { - EntityManager.RemoveComponent(entity); + RemComp(entity); } // Corvax-TTS-End _chat.TrySendInGameICMessage(speaker, args.Message, volume, range, nameOverride: name, checkRadioPrefix: false); From 4f485d8d33a206208330138f5cf0fe061cb1e031 Mon Sep 17 00:00:00 2001 From: Kyle Tyo Date: Mon, 23 Mar 2026 12:46:39 -0400 Subject: [PATCH 576/603] Correct attribution for /Textures/Objects/mre.rsi (#43328) Update meta.json --- Resources/Textures/Objects/Consumable/Food/mre.rsi/meta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Textures/Objects/Consumable/Food/mre.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/mre.rsi/meta.json index d4669293cda..eae9ce1928c 100644 --- a/Resources/Textures/Objects/Consumable/Food/mre.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/mre.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi", + "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/blob/633736637f35321062f723752cb9e5d797c532aa/icons/obj/food.dmi", "size": { "x": 32, "y": 32 From a46bd0fd174f117547d7a0bae66971fac07e8846 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Tue, 24 Mar 2026 22:37:15 +0700 Subject: [PATCH 577/603] tts repair --- Content.Shared/Humanoid/HumanoidProfileSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Humanoid/HumanoidProfileSystem.cs b/Content.Shared/Humanoid/HumanoidProfileSystem.cs index 672caf0f378..aafcc132bfe 100644 --- a/Content.Shared/Humanoid/HumanoidProfileSystem.cs +++ b/Content.Shared/Humanoid/HumanoidProfileSystem.cs @@ -41,7 +41,7 @@ public void ApplyProfileTo(Entity ent, HumanoidCharac ent.Comp.Sex = profile.Sex; // Corvax-TTS-start ent.Comp.Voice = profile.Voice; - if (TryComp(ent, out var _TTSComponent) && _TTSComponent.VoicePrototypeId == null) + if (TryComp(ent, out var _TTSComponent) && _TTSComponent.VoicePrototypeId == "Taskmaster") { _TTSComponent.VoicePrototypeId = profile.Voice; } From cc732f240d28ffe4b09dfffdd8ef2df5f79e21d8 Mon Sep 17 00:00:00 2001 From: mq <113324899+mqole@users.noreply.github.com> Date: Wed, 25 Mar 2026 07:12:25 +1100 Subject: [PATCH 578/603] Flatpack opening uses collision of flatpacked entity (#41849) * flatpacks openable on tables, ignore ghosts * suggested changes * if i stash this im going to forget that a stash exists. * FINAL final (1) * FINAL final (2) * i now understand networking --- .../Construction/SharedFlatpackSystem.cs | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/Content.Shared/Construction/SharedFlatpackSystem.cs b/Content.Shared/Construction/SharedFlatpackSystem.cs index f6a56d9ae44..89c79904218 100644 --- a/Content.Shared/Construction/SharedFlatpackSystem.cs +++ b/Content.Shared/Construction/SharedFlatpackSystem.cs @@ -1,6 +1,7 @@ using System.Diagnostics.CodeAnalysis; -using Content.Shared.Construction.Components; using Content.Shared.Administration.Logs; +using Content.Shared.Construction.Components; +using Content.Shared.Construction.EntitySystems; using Content.Shared.Containers.ItemSlots; using Content.Shared.Database; using Content.Shared.Examine; @@ -12,6 +13,8 @@ using Robust.Shared.Containers; using Robust.Shared.Map.Components; using Robust.Shared.Network; +using Robust.Shared.Physics; +using Robust.Shared.Physics.Systems; using Robust.Shared.Prototypes; namespace Content.Shared.Construction; @@ -21,16 +24,16 @@ public abstract class SharedFlatpackSystem : EntitySystem [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; [Dependency] private readonly INetManager _net = default!; [Dependency] protected readonly IPrototypeManager PrototypeManager = default!; - [Dependency] protected readonly SharedAppearanceSystem Appearance = default!; + [Dependency] private readonly AnchorableSystem _anchorable = default!; + [Dependency] private readonly MetaDataSystem _metaData = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedContainerSystem _container = default!; - [Dependency] private readonly EntityLookupSystem _entityLookup = default!; [Dependency] private readonly SharedMapSystem _map = default!; - [Dependency] protected readonly MachinePartSystem MachinePart = default!; - [Dependency] protected readonly SharedMaterialStorageSystem MaterialStorage = default!; - [Dependency] private readonly MetaDataSystem _metaData = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedToolSystem _tool = default!; + [Dependency] protected readonly MachinePartSystem MachinePart = default!; + [Dependency] protected readonly SharedAppearanceSystem Appearance = default!; + [Dependency] protected readonly SharedMaterialStorageSystem MaterialStorage = default!; /// public override void Initialize() @@ -77,17 +80,18 @@ private void OnFlatpackInteractUsing(Entity ent, ref Interact return; } + if (!PrototypeManager.Resolve(comp.Entity, out var proto) || + !proto.TryGetComponent(out var fixture, EntityManager.ComponentFactory)) + { + return; + } + + var (layer, mask) = SharedPhysicsSystem.GetHardCollision(fixture); var buildPos = _map.TileIndicesFor(grid, gridComp, xform.Coordinates); - var coords = _map.ToCenterCoordinates(grid, buildPos); - // TODO FLATPAK - // Make this logic smarter. This should eventually allow for shit like building microwaves on tables and such. - // Also: make it ignore ghosts - if (_entityLookup.AnyEntitiesIntersecting(coords, LookupFlags.Dynamic | LookupFlags.Static)) + if (!_anchorable.TileFree((grid, gridComp), buildPos, layer, mask)) { - // this popup is on the server because the predicts on the intersection is crazy - if (_net.IsServer) - _popup.PopupEntity(Loc.GetString("flatpack-unpack-no-room"), uid, args.User); + _popup.PopupPredicted(Loc.GetString("flatpack-unpack-no-room"), uid, args.User); return; } From fcb74f64fc57710fcfca228842660dd7508e7292 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 24 Mar 2026 20:26:30 +0000 Subject: [PATCH 579/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index e601c3b4d64..d0e828a70c2 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: ScarKy0 - changes: - - message: Mice, cockroaches and other small mobs can no longer unwrap parcels. - type: Fix - id: 9075 - time: '2025-10-11T21:32:59.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40838 - author: Hitlinemoss changes: - message: Autolathes can now print durathread. @@ -4029,3 +4022,11 @@ id: 9586 time: '2026-03-22T22:57:42.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43321 +- author: mqole + changes: + - message: Flatpacks now use the collision of the flatpacked entity, so they can + be opened on tables and aren't blocked by ghosts. + type: Fix + id: 9587 + time: '2026-03-24T20:25:18.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/41849 From 823597144498770bd15e4b50e09a074efbdd9006 Mon Sep 17 00:00:00 2001 From: SnappingOpossum Date: Wed, 25 Mar 2026 07:17:41 +1100 Subject: [PATCH 580/603] Move remaining random spawners to entity table spawners (#43324) Move remaining random spawners to tables --- .../Markers/Spawners/Mobs/animals.yml | 21 +-- .../Markers/Spawners/Random/bedsheet.yml | 57 ++++--- .../Markers/Spawners/Random/crates.yml | 111 +++++++------ .../Spawners/Random/encryption_key.yml | 46 +++--- .../Markers/Spawners/Random/flora.yml | 23 +-- .../Markers/Spawners/Random/industrial.yml | 153 +++++++++--------- .../Markers/Spawners/Random/techboard.yml | 49 +++--- 7 files changed, 249 insertions(+), 211 deletions(-) diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Mobs/animals.yml b/Resources/Prototypes/Entities/Markers/Spawners/Mobs/animals.yml index 02d99e81c32..29065bc45e5 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Mobs/animals.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Mobs/animals.yml @@ -35,15 +35,18 @@ layers: - state: green - state: ai - - type: RandomSpawner - prototypes: - - MobCat - - MobCatCalico - - MobCatCaracal - - MobCatKitten - rarePrototypes: - - MobCatSpace - rareChance: 0.05 + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - id: MobCatSpace + weight: 5 + - !type:GroupSelector + weight: 95 + children: + - id: MobCat + - id: MobCatCalico + - id: MobCatCaracal + - id: MobCatKitten - type: entity parent: MarkerBase diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/bedsheet.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/bedsheet.yml index 60f92c4f33f..f7734e4773e 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/bedsheet.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/bedsheet.yml @@ -3,29 +3,34 @@ id: BedsheetSpawner parent: MarkerBase components: - - type: Sprite - layers: - - state: red - - sprite: Objects/Misc/bedsheets.rsi - state: random_bedsheet - - type: RandomSpawner - rarePrototypes: - - BedsheetIan - - BedsheetCosmos - rareChance: 0.03 - prototypes: - - BedsheetBlue - - BedsheetYellow - - BedsheetOrange - - BedsheetGreen - - BedsheetNT - - BedsheetRed - - BedsheetUSA - - BedsheetBrown - - BedsheetBlack - - BedsheetPurple - - BedsheetGrey - - BedsheetWhite - - BedsheetRainbow - chance: 0.97 - offset: 0 + - type: Sprite + layers: + - state: red + - sprite: Objects/Misc/bedsheets.rsi + state: random_bedsheet + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - !type:GroupSelector + weight: 97 + prob: 0.97 + children: + - id: BedsheetBlue + - id: BedsheetYellow + - id: BedsheetOrange + - id: BedsheetGreen + - id: BedsheetNT + - id: BedsheetRed + - id: BedsheetUSA + - id: BedsheetBrown + - id: BedsheetBlack + - id: BedsheetPurple + - id: BedsheetGrey + - id: BedsheetWhite + - id: BedsheetRainbow + - !type:GroupSelector + weight: 3 + children: + - id: BedsheetIan + - id: BedsheetCosmos + offset: 0 diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/crates.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/crates.yml index f8761987cd4..82f4242681f 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/crates.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/crates.yml @@ -184,37 +184,42 @@ - state: red - sprite: Structures/Storage/Crates/engineering.rsi state: icon - - type: RandomSpawner - rarePrototypes: - - CrateEngineeringSingularityGenerator - - CrateEngineeringTeslaGenerator - - CrateEngineeringTeslaGroundingRod - - CrateEngineeringParticleAccelerator - - CrateRCD - - CrateEngineeringGear - rareChance: 0.2 - prototypes: - - CrateEngineering - - CrateElectrical - - CrateEngineeringElectricalSupplies - - CrateRCDAmmo - - CrateEngineeringCableLV - - CrateEngineeringCableMV - - CrateEngineeringCableHV - - CrateEngineeringCableBulk - - CrateEngineeringSingularityContainment - - CrateEngineeringSingularityCollector - - CrateEngineeringTeslaCoil - - CrateEngineeringSingularityEmitter - - CrateEngineeringGyroscope - - CrateEngineeringThruster - - CrateEngineeringToolbox - - CrateEngineeringShuttle - - CrateEngineeringSolar - - CrateEngineeringJetpack - - CrateEmergencyRadiation - - CrateRadiation - chance: 0.9 + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - !type:GroupSelector + weight: 8 + prob: 0.9 + children: + - id: CrateEngineering + - id: CrateElectrical + - id: CrateEngineeringElectricalSupplies + - id: CrateRCDAmmo + - id: CrateEngineeringCableLV + - id: CrateEngineeringCableMV + - id: CrateEngineeringCableHV + - id: CrateEngineeringCableBulk + - id: CrateEngineeringSingularityContainment + - id: CrateEngineeringSingularityCollector + - id: CrateEngineeringTeslaCoil + - id: CrateEngineeringSingularityEmitter + - id: CrateEngineeringGyroscope + - id: CrateEngineeringThruster + - id: CrateEngineeringToolbox + - id: CrateEngineeringShuttle + - id: CrateEngineeringSolar + - id: CrateEngineeringJetpack + - id: CrateEmergencyRadiation + - id: CrateRadiation + - !type:GroupSelector + weight: 2 + children: + - id: CrateEngineeringSingularityGenerator + - id: CrateEngineeringTeslaGenerator + - id: CrateEngineeringTeslaGroundingRod + - id: CrateEngineeringParticleAccelerator + - id: CrateRCD + - id: CrateEngineeringGear offset: 0.0 - type: entity @@ -227,26 +232,30 @@ - state: red - sprite: Structures/Storage/Crates/sec_gear.rsi state: icon - - type: RandomSpawner - rarePrototypes: #Very useful stuff we probably don't want random people getting on space ruins often, even if there are hurdles to open it - - CrateArmoryShotgun - - CrateArmorySMG - - CrateSecurityRiot - - CrateSecurityNonlethal - rareChance: 0.1 - prototypes: - - CrateWeaponSecure - - CrateArmoryLaser - - CrateArmoryPistols - - CrateTrainingBombs - - CrateTrackingImplants - - CrateSecurityTrackingMindshieldImplants - - CrateSecurityHelmet - - CrateSecurityArmor - - CrateRestraints - - CrateEmergencyExplosive - - CrateSecurityBiosuit - chance: 0.9 + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - !type:GroupSelector + weight: 9 + prob: 0.9 + children: + - id: CrateWeaponSecure + - id: CrateArmoryLaser + - id: CrateArmoryPistols + - id: CrateTrainingBombs + - id: CrateTrackingImplants + - id: CrateSecurityTrackingMindshieldImplants + - id: CrateSecurityHelmet + - id: CrateSecurityArmor + - id: CrateRestraints + - id: CrateEmergencyExplosive + - id: CrateSecurityBiosuit + - !type:GroupSelector #Very useful stuff we probably don't want random people getting on space ruins often, even if there are hurdles to open it + children: + - id: CrateArmoryShotgun + - id: CrateArmorySMG + - id: CrateSecurityRiot + - id: CrateSecurityNonlethal offset: 0.0 - type: entityTable diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/encryption_key.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/encryption_key.yml index 7c29de7f7c7..11efc97365c 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/encryption_key.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/encryption_key.yml @@ -4,24 +4,28 @@ id: LootSpawnerEncryptionKey parent: MarkerBase components: - - type: Sprite - layers: - - state: red - - sprite: Objects/Devices/encryption_keys.rsi - state: crypt_rusted - - sprite: Objects/Devices/encryption_keys.rsi - state: nano_label - - type: RandomSpawner - rarePrototypes: - - EncryptionKeyCommand - - EncryptionKeySecurity - rareChance: 0.1 - prototypes: - - EncryptionKeyCommon - - EncryptionKeyEngineering - - EncryptionKeyScience - - EncryptionKeyService - - EncryptionKeyMedical - - EncryptionKeyCargo - chance: 0.9 - offset: 0.0 \ No newline at end of file + - type: Sprite + layers: + - state: red + - sprite: Objects/Devices/encryption_keys.rsi + state: crypt_rusted + - sprite: Objects/Devices/encryption_keys.rsi + state: nano_label + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - !type:GroupSelector + weight: 9 + prob: 0.9 + children: + - id: EncryptionKeyCommon + - id: EncryptionKeyEngineering + - id: EncryptionKeyScience + - id: EncryptionKeyService + - id: EncryptionKeyMedical + - id: EncryptionKeyCargo + - !type:GroupSelector + children: + - id: EncryptionKeyCommand + - id: EncryptionKeySecurity + offset: 0.0 diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/flora.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/flora.yml index 416833538a3..2c381c14cdd 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/flora.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/flora.yml @@ -8,13 +8,16 @@ - state: red - sprite: Objects/Decoration/Flora/flora_trees.rsi state: tree01 - - type: RandomSpawner - prototypes: - - FloraTreeLarge - - FloraTreeConifer - - FloraTreeSnow - - FloraTree - chance: 0.95 - rarePrototypes: - - ShadowTree - rareChance: 0.05 + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - id: ShadowTree + weight: 5 + - !type:GroupSelector + weight: 95 + prob: 0.95 + children: + - id: FloraTreeLarge + - id: FloraTreeConifer + - id: FloraTreeSnow + - id: FloraTree diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/industrial.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/industrial.yml index 44c662ceb48..56d5a03f774 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/industrial.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/industrial.yml @@ -4,33 +4,37 @@ id: LootSpawnerIndustrialFluff parent: MarkerBase components: - - type: Sprite - layers: - - state: red - - sprite: Objects/Tools/flashlight.rsi - state: flashlight - - type: RandomSpawner - rarePrototypes: - - CheapLighter - - Pen - - Cigar - - CigarSpent - - Cigarette - - CigaretteSpent - - Paper - - FolderSpawner - rareChance: 0.1 - prototypes: - - RemoteSignaller - - GeigerCounter - - trayScanner - - FlashlightLantern - - ClothingHandsGlovesColorBlack - - Lighter - - ClothingMaskGas - - HandheldGPSBasic - chance: 0.85 - offset: 0.0 + - type: Sprite + layers: + - state: red + - sprite: Objects/Tools/flashlight.rsi + state: flashlight + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - !type:GroupSelector + weight: 9 + prob: 0.85 + children: + - id: RemoteSignaller + - id: GeigerCounter + - id: trayScanner + - id: FlashlightLantern + - id: ClothingHandsGlovesColorBlack + - id: Lighter + - id: ClothingMaskGas + - id: HandheldGPSBasic + - !type:GroupSelector + children: + - id: CheapLighter + - id: Pen + - id: Cigar + - id: CigarSpent + - id: Cigarette + - id: CigaretteSpent + - id: Paper + - id: FolderSpawner + offset: 0.0 - type: entity name: industrial loot spawner @@ -38,48 +42,53 @@ id: LootSpawnerIndustrial parent: MarkerBase components: - - type: Sprite - layers: - - state: red - - sprite: Objects/Tools/welder.rsi - state: icon - - type: RandomSpawner - rarePrototypes: - - MicroManipulatorStockPart - - CableHVStack10 - - WelderIndustrial - - PowerCellHigh - - PowerCellSmall - - ClothingHandsGlovesColorYellowBudget - rareChance: 0.2 - prototypes: - - ClothingHeadHatWelding - - WelderMini - - Crowbar - - CrowbarRed - - Screwdriver - - Wrench - - Wirecutter - - Welder - - RemoteSignaller - - GeigerCounter - - GasAnalyzer - - Multitool - - trayScanner - - FlashlightLantern - - ClothingHandsGlovesColorBlack - - ClothingMaskGas - - HandheldGPSBasic - - FireExtinguisher - - PowerCellMedium - - SheetSteel10 - - SheetGlass10 - - SheetPlastic10 - - SheetPlasteel10 - - PartRodMetal10 - - CableApcStack10 - - CableMVStack10 - - ToolboxElectricalFilled - - ToolboxMechanicalFilled - chance: 0.8 - offset: 0.0 + - type: Sprite + layers: + - state: red + - sprite: Objects/Tools/welder.rsi + state: icon + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - !type:GroupSelector + weight: 8 + prob: 0.8 + children: + - id: ClothingHeadHatWelding + - id: WelderMini + - id: Crowbar + - id: CrowbarRed + - id: Screwdriver + - id: Wrench + - id: Wirecutter + - id: Welder + - id: RemoteSignaller + - id: GeigerCounter + - id: GasAnalyzer + - id: Multitool + - id: trayScanner + - id: FlashlightLantern + - id: ClothingHandsGlovesColorBlack + - id: ClothingMaskGas + - id: HandheldGPSBasic + - id: FireExtinguisher + - id: PowerCellMedium + - id: SheetSteel10 + - id: SheetGlass10 + - id: SheetPlastic10 + - id: SheetPlasteel10 + - id: PartRodMetal10 + - id: CableApcStack10 + - id: CableMVStack10 + - id: ToolboxElectricalFilled + - id: ToolboxMechanicalFilled + - !type:GroupSelector + weight: 2 + children: + - id: MicroManipulatorStockPart + - id: CableHVStack10 + - id: WelderIndustrial + - id: PowerCellHigh + - id: PowerCellSmall + - id: ClothingHandsGlovesColorYellowBudget + offset: 0.0 diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/techboard.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/techboard.yml index 3409e7c1de5..636f457d6b0 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/techboard.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/techboard.yml @@ -8,25 +8,30 @@ - state: red - sprite: Objects/Misc/module.rsi state: boris - - type: RandomSpawner - prototypes: - - AirAlarmElectronics - - FireAlarmElectronics - - DoorElectronics - - FirelockElectronics - - IntercomElectronics - - APCElectronics - - SignalTimerElectronics - - APECircuitboard - - SMESMachineCircuitboard - - SubstationMachineCircuitboard - - TelecomServerCircuitboard - chance: 0.95 - rarePrototypes: - - CommsComputerCircuitboard - - ShuttleConsoleCircuitboard - - ComputerMassMediaCircuitboard - - AutolatheMachineCircuitboard - - ProtolatheMachineCircuitboard - - SalvageMagnetMachineCircuitboard - rareChance: 0.05 + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - !type:GroupSelector + weight: 95 + prob: 0.95 + children: + - id: AirAlarmElectronics + - id: FireAlarmElectronics + - id: DoorElectronics + - id: FirelockElectronics + - id: IntercomElectronics + - id: APCElectronics + - id: SignalTimerElectronics + - id: APECircuitboard + - id: SMESMachineCircuitboard + - id: SubstationMachineCircuitboard + - id: TelecomServerCircuitboard + - !type:GroupSelector + weight: 5 + children: + - id: CommsComputerCircuitboard + - id: ShuttleConsoleCircuitboard + - id: ComputerMassMediaCircuitboard + - id: AutolatheMachineCircuitboard + - id: ProtolatheMachineCircuitboard + - id: SalvageMagnetMachineCircuitboard From 0d1c74494578eca949dfdc47b3009988d185ffd3 Mon Sep 17 00:00:00 2001 From: ProPeperos <61984624+ProPeperos@users.noreply.github.com> Date: Tue, 24 Mar 2026 22:30:19 +0100 Subject: [PATCH 581/603] Improvments for Reach station (#43046) --- Resources/Maps/reach.yml | 3273 ++++++++++++++++++++++++-------------- 1 file changed, 2122 insertions(+), 1151 deletions(-) diff --git a/Resources/Maps/reach.yml b/Resources/Maps/reach.yml index 10a6fa776b1..bd672583aef 100644 --- a/Resources/Maps/reach.yml +++ b/Resources/Maps/reach.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 270.1.0 + engineVersion: 272.0.0 forkId: "" forkVersion: "" - time: 01/13/2026 00:18:31 - entityCount: 2641 + time: 02/26/2026 19:16:55 + entityCount: 2781 maps: - 1 grids: @@ -57,31 +57,31 @@ entities: chunks: -1,-1: ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAG0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAB8AAAAAAQAfAAAAAAEAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAABAB8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAHwAAAAACAB8AAAAAAwAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAADAB8AAAAAAwB+AAAAAAAAHwAAAAADAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAACAB8AAAAAAAAfAAAAAAMAbQAAAAAAAB8AAAAAAAAfAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAQAfAAAAAAIAHwAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAQB+AAAAAAAAegAAAAABAHoAAAAAAgB6AAAAAAEAMQAAAAAAAHoAAAAAAgB6AAAAAAIAegAAAAABADEAAAAAAAB6AAAAAAMAegAAAAABAHoAAAAAAgB6AAAAAAEAfgAAAAAAAB8AAAAAAQAfAAAAAAMAfgAAAAAAAHoAAAAAAgB6AAAAAAMAegAAAAAAADEAAAAAAAB6AAAAAAIAegAAAAABAHoAAAAAAQAxAAAAAAAAegAAAAABAHoAAAAAAQB6AAAAAAMAegAAAAADAH4AAAAAAAAfAAAAAAMAHwAAAAACAH4AAAAAAAB6AAAAAAAAegAAAAADAHoAAAAAAQAxAAAAAAAAegAAAAACAHoAAAAAAwB6AAAAAAEAMQAAAAAAAHoAAAAAAgB6AAAAAAEAegAAAAACAHoAAAAAAgB+AAAAAAAAHwAAAAAAAB8AAAAAAQB+AAAAAAAAegAAAAABAHoAAAAAAQB6AAAAAAMAfgAAAAAAAHoAAAAAAwB6AAAAAAAAegAAAAABAH4AAAAAAAB6AAAAAAIAegAAAAACAHoAAAAAAgB6AAAAAAMAfgAAAAAAAB8AAAAAAwAfAAAAAAIAfgAAAAAAAE4AAAAAAgBOAAAAAAMATgAAAAACAE4AAAAAAgBOAAAAAAEATgAAAAACAE4AAAAAAgBOAAAAAAIATgAAAAACAE4AAAAAAwBOAAAAAAIATgAAAAABAB8AAAAAAAAfAAAAAAIAHwAAAAABAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAB8AAAAAAAAfAAAAAAAAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAB8AAAAAAQAfAAAAAAEAHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAABAB8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAB+AAAAAAAAHwAAAAACAB8AAAAAAwAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAACAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAADAB8AAAAAAwB+AAAAAAAAHwAAAAADAB8AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAACAB8AAAAAAAAfAAAAAAMAbQAAAAAAAB8AAAAAAAAfAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAQAfAAAAAAIAHwAAAAAAAH4AAAAAAAAfAAAAAAIAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAQB+AAAAAAAAegAAAAABAHoAAAAAAgB6AAAAAAEAMQAAAAAAAHoAAAAAAgB6AAAAAAIAegAAAAABADEAAAAAAAB6AAAAAAMAegAAAAABAHoAAAAAAgB6AAAAAAEAfgAAAAAAAB8AAAAAAQAfAAAAAAMAfgAAAAAAAHoAAAAAAgB6AAAAAAMAegAAAAAAADEAAAAAAAB6AAAAAAIAegAAAAABAHoAAAAAAQAxAAAAAAAAegAAAAABAHoAAAAAAQB6AAAAAAMAegAAAAADAH4AAAAAAAAfAAAAAAMAHwAAAAACAH4AAAAAAAB6AAAAAAAAegAAAAADAHoAAAAAAQAxAAAAAAAAegAAAAACAHoAAAAAAwB6AAAAAAEAMQAAAAAAAHoAAAAAAgB6AAAAAAEAegAAAAACAHoAAAAAAgB+AAAAAAAAHwAAAAAAAB8AAAAAAQB+AAAAAAAAegAAAAABAHoAAAAAAQB6AAAAAAMAfgAAAAAAAHoAAAAAAwB6AAAAAAAAegAAAAABAH4AAAAAAAB6AAAAAAIAegAAAAACAHoAAAAAAgB6AAAAAAMAfgAAAAAAAB8AAAAAAwAfAAAAAAIAfgAAAAAAAE4AAAAAAgBOAAAAAAMATgAAAAACAE4AAAAAAgBOAAAAAAEATgAAAAACAE4AAAAAAgBOAAAAAAIATgAAAAACAE4AAAAAAwBOAAAAAAIATgAAAAABAB8AAAAAAAAfAAAAAAIAHwAAAAABAA== version: 7 0,0: ind: 0,0 - tiles: HwAAAAADAHAAAAAAAgBwAAAAAAMAcAAAAAADAHAAAAAAAwB+AAAAAAAAcAAAAAADAHAAAAAAAQBwAAAAAAMAcAAAAAAAAHAAAAAAAQBwAAAAAAEAcAAAAAACAB8AAAAAAQAfAAAAAAMAHwAAAAADAB8AAAAAAwB+AAAAAAAAcAAAAAACAHAAAAAAAABwAAAAAAEAfgAAAAAAAHAAAAAAAABwAAAAAAEAcAAAAAACAH4AAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAACAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAIAHwAAAAAAAB8AAAAAAwAfAAAAAAMAHwAAAAABAB8AAAAAAwAfAAAAAAIAHwAAAAACAB8AAAAAAQAfAAAAAAEAHwAAAAADAB8AAAAAAAAfAAAAAAIAHwAAAAAAAB8AAAAAAwAfAAAAAAMAHwAAAAADAB8AAAAAAAAfAAAAAAIAHwAAAAABAB8AAAAAAQAfAAAAAAMAHwAAAAADAB8AAAAAAQAfAAAAAAEAHwAAAAADAB8AAAAAAAAfAAAAAAAAHwAAAAADAB8AAAAAAAAfAAAAAAEAHwAAAAAAAB8AAAAAAgAfAAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAMAHwAAAAABAB8AAAAAAwAfAAAAAAAAHwAAAAACAB8AAAAAAgAfAAAAAAIAXQAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAAAAF0AAAAAAwB+AAAAAAAALwAAAAADAHoAAAAAAAB6AAAAAAAAegAAAAACAC8AAAAAAABtAAAAAAAAbgAAAAAAAH4AAAAAAABtAAAAAAAAbQAAAAAAAG4AAAAAAwBdAAAAAAMAXQAAAAACAF0AAAAAAQBdAAAAAAEAfgAAAAAAAB8AAAAAAgB6AAAAAAMAegAAAAACAHoAAAAAAgAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAG4AAAAAAgBtAAAAAAAAXQAAAAACAF0AAAAAAQBdAAAAAAAAXQAAAAAAAH4AAAAAAAAvAAAAAAAAegAAAAABAHoAAAAAAQB6AAAAAAIALwAAAAACAB8AAAAAAwB+AAAAAAAAHwAAAAABAB8AAAAAAAAfAAAAAAIAHwAAAAADAF0AAAAAAgBdAAAAAAEAXQAAAAAAAF0AAAAAAwB+AAAAAAAAHwAAAAACAHoAAAAAAQB6AAAAAAAAegAAAAACAB8AAAAAAQAfAAAAAAMAfgAAAAAAAB8AAAAAAQAfAAAAAAMAHwAAAAADAB8AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAQBdAAAAAAAAfgAAAAAAAC8AAAAAAwB6AAAAAAAAegAAAAACAHoAAAAAAQAvAAAAAAMAMAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAMAXQAAAAAAAH4AAAAAAAAfAAAAAAIAegAAAAACAHoAAAAAAAB6AAAAAAMAHwAAAAADAB8AAAAAAwAfAAAAAAEAHwAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAACAF0AAAAAAAB+AAAAAAAALwAAAAACAHoAAAAAAAB6AAAAAAMAegAAAAADAC8AAAAAAQAfAAAAAAMAHwAAAAADAB8AAAAAAwBtAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAgB6AAAAAAIAegAAAAACAHoAAAAAAAAfAAAAAAAAHwAAAAACAB8AAAAAAwAfAAAAAAIAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAAvAAAAAAAAegAAAAADAHoAAAAAAwB6AAAAAAEALwAAAAACADAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAA== + tiles: HwAAAAADAHAAAAAAAgBwAAAAAAMAcAAAAAADAHAAAAAAAwB+AAAAAAAAcAAAAAADAHAAAAAAAQBwAAAAAAMAcAAAAAAAAHAAAAAAAQBwAAAAAAEAcAAAAAACAB8AAAAAAQAfAAAAAAMAHwAAAAADAB8AAAAAAwB+AAAAAAAAcAAAAAACAHAAAAAAAABwAAAAAAEAfgAAAAAAAHAAAAAAAABwAAAAAAEAcAAAAAACAH4AAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAACAB8AAAAAAAAfAAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAIAHwAAAAAAAB8AAAAAAwAfAAAAAAMAHwAAAAABAB8AAAAAAwAfAAAAAAIAHwAAAAACAB8AAAAAAQAfAAAAAAEAHwAAAAADAB8AAAAAAAAfAAAAAAIAHwAAAAAAAB8AAAAAAwAfAAAAAAMAHwAAAAADAB8AAAAAAAAfAAAAAAIAHwAAAAABAB8AAAAAAQAfAAAAAAMAHwAAAAADAB8AAAAAAQAfAAAAAAEAHwAAAAADAB8AAAAAAAAfAAAAAAAAHwAAAAADAB8AAAAAAAAfAAAAAAEAHwAAAAAAAB8AAAAAAgAfAAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAMAHwAAAAABAB8AAAAAAwAfAAAAAAAAHwAAAAACAB8AAAAAAgAfAAAAAAIAXQAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAAAfAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAAAAF0AAAAAAwB+AAAAAAAALwAAAAADAHoAAAAAAAB6AAAAAAAAegAAAAACAC8AAAAAAABtAAAAAAAAbgAAAAAAAH4AAAAAAABtAAAAAAAAbQAAAAAAAG4AAAAAAwBdAAAAAAMAXQAAAAACAF0AAAAAAQBdAAAAAAEAfgAAAAAAAB8AAAAAAgB6AAAAAAMAegAAAAACAHoAAAAAAgAfAAAAAAAAHwAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAG4AAAAAAgBtAAAAAAAAXQAAAAACAF0AAAAAAQBdAAAAAAAAXQAAAAAAAH4AAAAAAAAvAAAAAAAAegAAAAABAHoAAAAAAQB6AAAAAAIALwAAAAACAB8AAAAAAwB+AAAAAAAAHwAAAAABAB8AAAAAAAAfAAAAAAIAHwAAAAADAF0AAAAAAgBdAAAAAAEAXQAAAAAAAF0AAAAAAwB+AAAAAAAAHwAAAAACAHoAAAAAAQB6AAAAAAAAegAAAAACAB8AAAAAAQAfAAAAAAMAfgAAAAAAAB8AAAAAAQAfAAAAAAMAHwAAAAADAB8AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAQBdAAAAAAAAfgAAAAAAAC8AAAAAAwB6AAAAAAAAegAAAAACAHoAAAAAAQAvAAAAAAMAMAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAABAF0AAAAAAABdAAAAAAMAXQAAAAAAAH4AAAAAAAAfAAAAAAIAegAAAAACAHoAAAAAAAB6AAAAAAMAHwAAAAADAB8AAAAAAwAfAAAAAAEAHwAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAF0AAAAAAgBdAAAAAAIAXQAAAAACAF0AAAAAAAB+AAAAAAAALwAAAAACAHoAAAAAAAB6AAAAAAMAegAAAAADAC8AAAAAAQAfAAAAAAMAHwAAAAADAB8AAAAAAwBtAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAgB6AAAAAAIAegAAAAACAHoAAAAAAAAfAAAAAAAAHwAAAAACAB8AAAAAAwAfAAAAAAIAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAAvAAAAAAAAegAAAAADAHoAAAAAAwB6AAAAAAEALwAAAAACADAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAA== version: 7 -1,0: ind: -1,0 - tiles: bQAAAAAAAE4AAAAAAQAvAAAAAAAALwAAAAAAAC8AAAAAAgAvAAAAAAAALwAAAAACAC8AAAAAAQAvAAAAAAAALwAAAAAAAC8AAAAAAQAvAAAAAAEATgAAAAADAB8AAAAAAwAfAAAAAAAAHwAAAAADAH4AAAAAAABOAAAAAAIATgAAAAAAAE4AAAAAAABOAAAAAAIATgAAAAACAE4AAAAAAABOAAAAAAAATgAAAAADAE4AAAAAAgBOAAAAAAAATgAAAAADAE4AAAAAAgAfAAAAAAIAHwAAAAABAB8AAAAAAwB+AAAAAAAAfgAAAAAAAB8AAAAAAQB+AAAAAAAAfgAAAAAAAHoAAAAAAwB6AAAAAAMAegAAAAADAHoAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAgAfAAAAAAMAfgAAAAAAADwAAAAAAABNAAAAAAAAPAAAAAAAAH4AAAAAAAB6AAAAAAEAegAAAAAAAHoAAAAAAQB6AAAAAAMAfgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAABAH4AAAAAAAA8AAAAAAAATQAAAAAAAE0AAAAAAQAfAAAAAAAAegAAAAADAHoAAAAAAAB6AAAAAAMAegAAAAACAB8AAAAAAQA+AAAAAAAAPgAAAAAAAD4AAAAAAAB+AAAAAAAAHwAAAAADAB8AAAAAAgB+AAAAAAAAPAAAAAAAAE0AAAAAAgA8AAAAAAAAfgAAAAAAAB8AAAAAAQAfAAAAAAEAHwAAAAABAB8AAAAAAAB+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAfgAAAAAAAB8AAAAAAQAfAAAAAAMAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAADAB8AAAAAAQAfAAAAAAAAHwAAAAABACQAAAAAAgB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAAfAAAAAAMAHwAAAAABAB8AAAAAAAAfAAAAAAMAHwAAAAACAB8AAAAAAQAkAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAgAfAAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAEAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAE8AAAAAAABPAAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAEAHwAAAAABACQAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABPAAAAAAAATwAAAAAAAB8AAAAAAwAfAAAAAAMAHwAAAAABAB8AAAAAAwAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAEAAAAAAAABAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAA== + tiles: bQAAAAAAAE4AAAAAAQAvAAAAAAAALwAAAAAAAC8AAAAAAgAvAAAAAAAALwAAAAACAC8AAAAAAQAvAAAAAAAALwAAAAAAAC8AAAAAAQAvAAAAAAEATgAAAAADAB8AAAAAAwAfAAAAAAAAHwAAAAADAH4AAAAAAABOAAAAAAIATgAAAAAAAE4AAAAAAABOAAAAAAIATgAAAAACAE4AAAAAAABOAAAAAAAATgAAAAADAE4AAAAAAgBOAAAAAAAATgAAAAADAE4AAAAAAgAfAAAAAAIAHwAAAAABAB8AAAAAAwB+AAAAAAAAfgAAAAAAAB8AAAAAAQB+AAAAAAAAfgAAAAAAAHoAAAAAAwB6AAAAAAMAegAAAAADAHoAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAgAfAAAAAAMAfgAAAAAAADwAAAAAAABNAAAAAAAAPAAAAAAAAH4AAAAAAAB6AAAAAAEAegAAAAAAAHoAAAAAAQB6AAAAAAMAfgAAAAAAAD4AAAAAAAA+AAAAAAAAPgAAAAAAAH4AAAAAAAAfAAAAAAEAHwAAAAABAH4AAAAAAAA8AAAAAAAATQAAAAAAAF0AAAAAAQAfAAAAAAAAegAAAAADAHoAAAAAAAB6AAAAAAMAegAAAAACAB8AAAAAAQA+AAAAAAAAPgAAAAAAAD4AAAAAAAB+AAAAAAAAHwAAAAADAB8AAAAAAgB+AAAAAAAAPAAAAAAAAF0AAAAAAAA8AAAAAAAAfgAAAAAAAB8AAAAAAQAfAAAAAAEAHwAAAAABAB8AAAAAAAB+AAAAAAAAPgAAAAAAAD4AAAAAAAA+AAAAAAAAfgAAAAAAAB8AAAAAAQAfAAAAAAMAfgAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAAAHwAAAAADAB8AAAAAAQAfAAAAAAAAHwAAAAABACQAAAAAAgB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAAfAAAAAAMAHwAAAAABAB8AAAAAAAAfAAAAAAMAHwAAAAACAB8AAAAAAQAkAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAHwAAAAABAB8AAAAAAgAfAAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAEAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAE8AAAAAAABPAAAAAAAAHwAAAAAAAB8AAAAAAwAfAAAAAAEAHwAAAAABACQAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAABPAAAAAAAATwAAAAAAAB8AAAAAAwAfAAAAAAMAHwAAAAABAB8AAAAAAwAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAABtAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAA== version: 7 0,-1: ind: 0,-1 - tiles: fgAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAUAAAAAAAAFAAAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAEAfgAAAAAAAAIAAAAAAQACAAAAAAEAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABQAAAAAAAAUAAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAAF0AAAAAAwACAAAAAAIAAgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAwB+AAAAAAAAAgAAAAAAAAIAAAAAAQBsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAABAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAwB+AAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAIAfgAAAAAAAHAAAAAAAwBwAAAAAAIAcAAAAAAAAHAAAAAAAQBwAAAAAAEAcAAAAAACAHAAAAAAAABwAAAAAAMAcAAAAAABAHAAAAAAAQBwAAAAAAIAfgAAAAAAAB8AAAAAAgB6AAAAAAIAHwAAAAADAH4AAAAAAABwAAAAAAEAcAAAAAABAHAAAAAAAABwAAAAAAAAcAAAAAACAHAAAAAAAABwAAAAAAIAcAAAAAADAHAAAAAAAABwAAAAAAAAcAAAAAAAAH4AAAAAAAAfAAAAAAAAegAAAAAAAB8AAAAAAwB+AAAAAAAAcAAAAAABAHAAAAAAAwBwAAAAAAEAcAAAAAADAHAAAAAAAgBwAAAAAAMAcAAAAAACAHAAAAAAAABwAAAAAAEAcAAAAAAAAHAAAAAAAwB+AAAAAAAAHwAAAAACAHoAAAAAAwAfAAAAAAEAfgAAAAAAAH4AAAAAAABwAAAAAAAAcAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAcAAAAAADAHAAAAAAAABwAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAADAH4AAAAAAABwAAAAAAMAcAAAAAADAHAAAAAAAQB+AAAAAAAAcAAAAAACAHAAAAAAAwBwAAAAAAEAfgAAAAAAAHAAAAAAAgBwAAAAAAEAcAAAAAABAH4AAAAAAAAfAAAAAAAAHwAAAAADAA== + tiles: fgAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAUAAAAAAAAFAAAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAfAAAAAAEAfgAAAAAAAAIAAAAAAQACAAAAAAEAbAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABQAAAAAAAAUAAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAHwAAAAAAAF0AAAAAAwACAAAAAAIAAgAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAB8AAAAAAwB+AAAAAAAAAgAAAAAAAAIAAAAAAQBsAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAfAAAAAAIAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAHwAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAABsAAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAfAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAHwAAAAABAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAB8AAAAAAwB+AAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAIAfgAAAAAAAHAAAAAAAwBwAAAAAAIAcAAAAAAAAHAAAAAAAQBwAAAAAAEAcAAAAAACAHAAAAAAAABwAAAAAAMAcAAAAAABAHAAAAAAAQBwAAAAAAIAfgAAAAAAAB8AAAAAAgB6AAAAAAIAHwAAAAADAH4AAAAAAABwAAAAAAEAcAAAAAABAHAAAAAAAABwAAAAAAAAcAAAAAACAHAAAAAAAABwAAAAAAIAcAAAAAADAHAAAAAAAABwAAAAAAAAcAAAAAAAAH4AAAAAAAAfAAAAAAAAegAAAAAAAB8AAAAAAwB+AAAAAAAAcAAAAAABAHAAAAAAAwBwAAAAAAEAcAAAAAADAHAAAAAAAgBwAAAAAAMAcAAAAAACAHAAAAAAAABwAAAAAAEAcAAAAAAAAHAAAAAAAwB+AAAAAAAAHwAAAAACAHoAAAAAAwAfAAAAAAEAfgAAAAAAAH4AAAAAAABwAAAAAAAAcAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAcAAAAAADAHAAAAAAAABwAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAHwAAAAADAH4AAAAAAABwAAAAAAMAcAAAAAADAHAAAAAAAQB+AAAAAAAAcAAAAAACAHAAAAAAAwBwAAAAAAEAfgAAAAAAAHAAAAAAAgBwAAAAAAEAcAAAAAABAH4AAAAAAAAfAAAAAAAAHwAAAAADAA== version: 7 -2,0: ind: -2,0 - tiles: AAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABsAAAAAAAAbgAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAbAAAAAAAAG4AAAAAAQBtAAAAAAAAbQAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAbQAAAAAAAG0AAAAAAABtAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAQB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABsAAAAAAAAbgAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAATwAAAAAAAE8AAAAAAABPAAAAAAAAbAAAAAAAAG4AAAAAAQBtAAAAAAAAbQAAAAAAAG0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAbQAAAAAAAG0AAAAAAABtAAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAMAXQAAAAAAAF0AAAAAAQBdAAAAAAEAXQAAAAADAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABdAAAAAAAAXQAAAAABAF0AAAAAAQB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -2,-1: ind: -2,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAABdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAADAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAIAXQAAAAACAH4AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAQBdAAAAAAIAAAAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABsAAAAAAAAbgAAAAABAG0AAAAAAABtAAAAAAAAbQAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH4AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAXQAAAAADAF0AAAAAAABdAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAgBdAAAAAAAAXQAAAAADAH0AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAF0AAAAAAQBdAAAAAAIAXQAAAAACAH4AAAAAAABdAAAAAAMAXQAAAAABAF0AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAGwAAAAAAABsAAAAAAAAbAAAAAAAAGwAAAAAAAB+AAAAAAAAXQAAAAAAAF0AAAAAAQBdAAAAAAIAAAAAAAAAAH4AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAABPAAAAAAAATwAAAAAAAE8AAAAAAABsAAAAAAAAbgAAAAABAG0AAAAAAABtAAAAAAAAbQAAAAAAAA== version: 7 0,-2: ind: 0,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAA== version: 7 0,1: ind: 0,1 @@ -89,19 +89,19 @@ entities: version: 7 1,0: ind: 1,0 - tiles: HwAAAAACAB8AAAAAAgAfAAAAAAIAHwAAAAAAAB8AAAAAAAAfAAAAAAMAHwAAAAABAB8AAAAAAAAfAAAAAAEAHwAAAAADAB8AAAAAAwB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAAAfAAAAAAIAHwAAAAABAB8AAAAAAQB+AAAAAAAAHwAAAAABAB8AAAAAAgAfAAAAAAEAHwAAAAAAAB8AAAAAAwAfAAAAAAIAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAgAfAAAAAAAAHwAAAAADAB8AAAAAAgAfAAAAAAMAHwAAAAACAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAB8AAAAAAwAfAAAAAAMAHwAAAAADAH4AAAAAAAAfAAAAAAMAHwAAAAABAB8AAAAAAAAfAAAAAAIAHwAAAAACAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG0AAAAAAAAfAAAAAAEAHwAAAAAAAB8AAAAAAgB+AAAAAAAAHwAAAAACAB8AAAAAAAAfAAAAAAIAHwAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAEAfgAAAAAAAG4AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAwAfAAAAAAEAHwAAAAAAAB8AAAAAAwB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAMAHwAAAAABAB8AAAAAAgAfAAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADAB8AAAAAAQAfAAAAAAIAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAwAfAAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: HwAAAAACAB8AAAAAAgAfAAAAAAIAHwAAAAAAAB8AAAAAAAAfAAAAAAMAHwAAAAABAB8AAAAAAAAfAAAAAAEAHwAAAAADAB8AAAAAAwB+AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAAAfAAAAAAIAHwAAAAABAB8AAAAAAQB+AAAAAAAAHwAAAAABAB8AAAAAAgAfAAAAAAEAHwAAAAAAAB8AAAAAAwAfAAAAAAIAfgAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAAB+AAAAAAAAfgAAAAAAAB8AAAAAAgAfAAAAAAAAHwAAAAADAB8AAAAAAgAfAAAAAAMAHwAAAAACAH4AAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAB8AAAAAAwAfAAAAAAMAHwAAAAADAH4AAAAAAAAfAAAAAAMAHwAAAAABAB8AAAAAAAAfAAAAAAIAHwAAAAACAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAG0AAAAAAAAfAAAAAAEAHwAAAAAAAB8AAAAAAgB+AAAAAAAAHwAAAAACAB8AAAAAAAAfAAAAAAIAHwAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAEAfgAAAAAAAG4AAAAAAgB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAwAfAAAAAAEAHwAAAAAAAB8AAAAAAwB+AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAMAHwAAAAABAB8AAAAAAgAfAAAAAAAAfgAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAADAB8AAAAAAQAfAAAAAAIAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAwAfAAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 1,-1: ind: 1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAEAegAAAAAAAHoAAAAAAwAfAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAADAHoAAAAAAAB6AAAAAAMAHwAAAAAAAH4AAAAAAAB6AAAAAAEAegAAAAAAAHoAAAAAAwB6AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAgB6AAAAAAAAegAAAAADAB8AAAAAAwB+AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAEAegAAAAACAHoAAAAAAQB+AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAEAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAEAHwAAAAADAH4AAAAAAAAfAAAAAAAAHwAAAAABAB8AAAAAAAAfAAAAAAMAHwAAAAAAAB8AAAAAAgB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6AAAAAAEAegAAAAAAAHoAAAAAAwAfAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAegAAAAADAHoAAAAAAAB6AAAAAAMAHwAAAAAAAH4AAAAAAAB6AAAAAAEAegAAAAAAAHoAAAAAAwB6AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAHoAAAAAAgB6AAAAAAAAegAAAAADAB8AAAAAAwB+AAAAAAAAegAAAAAAAHoAAAAAAAB6AAAAAAEAegAAAAACAHoAAAAAAQB+AAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAEAHwAAAAABAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAfAAAAAAEAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB9AAAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAEAHwAAAAADAH4AAAAAAAAfAAAAAAAAHwAAAAABAB8AAAAAAAAfAAAAAAMAHwAAAAAAAB8AAAAAAgB+AAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -1,1: ind: -1,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAAAAABtAAAAAAAAfgAAAAAAAG0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -1,-2: ind: -1,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+AAAAAAAAbQAAAAAAAH4AAAAAAABtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAbQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAAAAAAAAAAH4AAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAAAAAAAAAAB+AAAAAAAAfgAAAAAAAH4AAAAAAAB+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAAAAAAAAAAAfgAAAAAAAG0AAAAAAAB+AAAAAAAAbQAAAAAAAA== version: 7 - type: Broadphase - type: Physics @@ -136,11 +136,14 @@ entities: id: Arrows decals: 260: 3,7 + - node: + id: Bot + decals: + 485: 6,-11 - node: color: '#FFFFFFFF' id: Bot decals: - 4: 5,-11 257: 0,12 258: 0,13 259: 3,13 @@ -733,6 +736,8 @@ entities: 474: -3,-14 475: -3,-13 476: -3,-12 + 479: -3,-15 + 480: -3,-16 - node: color: '#52B4E996' id: HalfTileOverlayGreyscale270 @@ -777,6 +782,8 @@ entities: 354: 26,0 355: 26,1 466: 20,0 + 481: -1,-16 + 482: -1,-15 - node: color: '#DE3A3A96' id: HalfTileOverlayGreyscale90 @@ -855,6 +862,7 @@ entities: id: QuarterTileOverlayGreyscale180 decals: 56: 0,3 + 483: -1,-14 - node: color: '#334E6DC8' id: QuarterTileOverlayGreyscale270 @@ -903,6 +911,7 @@ entities: id: ThreeQuarterTileOverlayGreyscale180 decals: 348: 26,-1 + 484: 0,-14 - node: color: '#52B4E996' id: ThreeQuarterTileOverlayGreyscale180 @@ -1134,8 +1143,10 @@ entities: version: 2 data: tiles: + -4,-3: + 0: 61440 -4,-2: - 0: 240 + 0: 17 1: 57344 -5,-2: 1: 58436 @@ -1145,24 +1156,28 @@ entities: 1: 65263 -4,0: 1: 59119 + -3,-3: + 0: 64640 -3,-2: - 0: 240 1: 61440 + 0: 17 -3,-1: 1: 65279 -3,0: 1: 61183 + -2,-3: + 0: 4991 + 1: 32768 -2,-2: 1: 61676 -2,-1: 1: 65279 -2,0: - 1: 63999 - -2,-3: - 0: 200 - 1: 32768 + 1: 55807 -2,-4: - 0: 34952 + 0: 17484 + -2,-5: + 0: 17484 -1,-3: 1: 56558 -1,-2: @@ -1170,11 +1185,11 @@ entities: -1,-1: 1: 64989 -1,-4: - 1: 61102 + 1: 61166 -1,0: 1: 56831 -1,-5: - 1: 59904 + 1: 44778 0,-4: 1: 64768 0: 6 @@ -1199,7 +1214,7 @@ entities: 0,4: 1: 7 -1,3: - 1: 58886 + 1: 63239 1,0: 1: 61663 1,1: @@ -1222,7 +1237,7 @@ entities: 2,3: 1: 32767 2,-1: - 1: 56831 + 1: 56575 2,4: 1: 519 0: 1024 @@ -1234,7 +1249,7 @@ entities: 1: 4094 3,3: 1: 305 - 0: 16384 + 0: 49152 3,-1: 1: 53725 3,4: @@ -1246,6 +1261,8 @@ entities: 1: 64239 4,2: 1: 895 + 4,3: + 0: 29772 -5,0: 1: 61183 -4,1: @@ -1254,45 +1271,53 @@ entities: 1: 19534 0: 4352 -4,2: - 0: 243 + 0: 241 -5,2: - 0: 15 + 0: 255 -3,1: 1: 239 0: 57344 -3,2: - 0: 241 + 0: 17649 + -3,3: + 0: 3148 -2,1: - 1: 57567 + 1: 57439 + 2: 128 + -2,3: + 0: 10000 -2,2: 1: 61166 + -2,4: + 0: 98 -1,4: - 1: 174 + 1: 95 1,-4: 1: 65535 1,-3: 1: 61695 1,-2: 1: 61695 - 1,-5: - 1: 33280 2,-3: 1: 28895 2,-2: 1: 61687 2,-4: - 2: 6 - 3: 1536 + 3: 6 + 4: 1536 3,-4: - 0: 8737 1: 256 + 0: 25668 3,-3: 1: 4097 - 0: 8738 + 0: 18022 3,-2: 1: 53248 - 0: 34 + 0: 76 + 3,-5: + 0: 18295 4,-2: + 0: 143 1: 61440 4,-1: 1: 62463 @@ -1301,45 +1326,78 @@ entities: 1: 8750 -8,1: 1: 1 - 0: 8 + 0: 200 -8,-1: 1: 8737 0: 16408 -7,0: 1: 29799 -7,1: - 0: 143 + 0: 3325 -7,-1: 1: 25712 - 0: 15 + 0: 5 -6,0: 1: 61439 -6,1: - 0: 3184 + 0: 61296 -6,-1: 1: 65504 + -6,2: + 0: 136 + -8,-2: + 0: 49152 -7,-2: - 0: 32768 - -6,-2: 0: 31744 + -6,-2: + 0: 8172 + -6,-3: + 0: 32768 + -5,-3: + 0: 4096 + 1: 16384 0,-5: - 0: 2048 + 0: 2190 + 1,-5: + 0: 79 + 1: 512 2,-5: + 0: 31 1: 512 - 0: 2048 5,0: 1: 61167 + 5,3: + 0: 3 5,1: 1: 46 + 0: 16384 + 5,2: + 0: 25708 5,-1: - 1: 58606 + 1: 58574 + 2: 32 6,0: 1: 14199 6,1: 1: 1 + 0: 63744 + 6,2: + 0: 1 6,-1: 1: 28721 0: 128 + 7,0: + 0: 12834 + 7,1: + 0: 306 + 7,-1: + 0: 9011 + 5,-2: + 0: 1223 + 6,-2: + 0: 52464 + 7,-2: + 0: 4352 uniqueMixes: - volume: 2500 immutable: True @@ -1349,6 +1407,11 @@ entities: moles: Oxygen: 21.824879 Nitrogen: 82.10312 + - volume: 2500 + temperature: 293.14975 + moles: + Oxygen: 20.078888 + Nitrogen: 75.53487 - volume: 2500 temperature: 293.15 moles: @@ -1363,6 +1426,8 @@ entities: - type: SpreaderGrid - type: ImplicitRoof - type: ExplosionAirtightGrid + - type: TileHistory + chunkHistory: {} - proto: AirAlarm entities: - uid: 3 @@ -1376,6 +1441,7 @@ entities: - 1503 - 1473 - 1505 + - 2779 - type: Fixtures fixtures: {} - uid: 4 @@ -1433,6 +1499,7 @@ entities: - 1495 - 1501 - 1464 + - 209 - type: Fixtures fixtures: {} - uid: 8 @@ -1496,9 +1563,6 @@ entities: - 1455 - 1490 - 1516 - - 1088 - - 1087 - - 1086 - 1097 - 1096 - 1083 @@ -1593,10 +1657,10 @@ entities: - type: Transform pos: 7.5,-10.5 parent: 2 - - uid: 16 + - uid: 2398 components: - type: Transform - pos: 6.5,-10.5 + pos: 8.5,-10.5 parent: 2 - proto: AirlockAtmosphericsLocked entities: @@ -1666,15 +1730,17 @@ entities: - type: Transform pos: 7.5,17.5 parent: 2 - - uid: 1571 + - uid: 2523 components: - type: Transform - pos: -2.5,-14.5 + rot: 3.141592653589793 rad + pos: -2.5,-16.5 parent: 2 - - uid: 2521 + - uid: 2525 components: - type: Transform - pos: -0.5,-14.5 + rot: 3.141592653589793 rad + pos: -0.5,-16.5 parent: 2 - proto: AirlockExternalGlassAtmosphericsLocked entities: @@ -1707,12 +1773,6 @@ entities: parent: 2 - proto: AirlockExternalGlassEngineeringLocked entities: - - uid: 10 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -17.5,-5.5 - parent: 2 - uid: 30 components: - type: Transform @@ -1733,6 +1793,11 @@ entities: 30: - - DoorStatus - DoorBolt + - uid: 35 + components: + - type: Transform + pos: -17.5,-5.5 + parent: 2 - proto: AirlockExternalGlassShuttleArrivals entities: - uid: 73 @@ -1743,15 +1808,15 @@ entities: parent: 2 - proto: AirlockExternalGlassShuttleEmergencyLocked entities: - - uid: 2196 + - uid: 2642 components: - type: Transform - pos: -0.5,-17.5 + pos: -0.5,-19.5 parent: 2 - - uid: 2530 + - uid: 2643 components: - type: Transform - pos: -2.5,-17.5 + pos: -2.5,-19.5 parent: 2 - proto: AirlockExternalGlassShuttleEscape entities: @@ -1763,22 +1828,22 @@ entities: parent: 2 - proto: AirlockExternalGlassShuttleLocked entities: - - uid: 34 + - uid: 631 components: - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,17.5 + pos: -17.5,-8.5 parent: 2 - - uid: 35 + - uid: 2450 components: - type: Transform rot: 3.141592653589793 rad - pos: -2.5,17.5 + pos: -1.5,17.5 parent: 2 - - uid: 2544 + - uid: 2634 components: - type: Transform - pos: -17.5,-7.5 + rot: 3.141592653589793 rad + pos: -3.5,17.5 parent: 2 - proto: AirlockGlass entities: @@ -1900,6 +1965,12 @@ entities: - type: Transform pos: -6.5,4.5 parent: 2 + - type: Door + secondsUntilStateChange: -1558.4391 + state: Opening + - type: DeviceLinkSource + lastSignals: + DoorStatus: True - proto: APCBasic entities: - uid: 56 @@ -1940,14 +2011,6 @@ entities: parent: 2 - type: Fixtures fixtures: {} - - uid: 61 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-5.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 62 components: - type: Transform @@ -1999,6 +2062,14 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 388 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,-4.5 + parent: 2 + - type: Fixtures + fixtures: {} - proto: APECircuitboard entities: - uid: 69 @@ -2032,21 +2103,26 @@ entities: pos: 7.5,19.5 parent: 2 - uid: 83 + components: + - type: Transform + pos: -0.5,-19.5 + parent: 2 + - uid: 90 components: - type: Transform rot: 3.141592653589793 rad - pos: -2.5,17.5 + pos: -1.5,17.5 parent: 2 - - uid: 84 + - uid: 137 components: - type: Transform rot: 3.141592653589793 rad - pos: -0.5,17.5 + pos: -3.5,17.5 parent: 2 - - uid: 885 + - uid: 143 components: - type: Transform - pos: -2.5,-17.5 + pos: -17.5,-8.5 parent: 2 - uid: 1089 components: @@ -2054,15 +2130,10 @@ entities: rot: 1.5707963267948966 rad pos: 13.5,13.5 parent: 2 - - uid: 1787 - components: - - type: Transform - pos: -0.5,-17.5 - parent: 2 - - uid: 2535 + - uid: 2532 components: - type: Transform - pos: -17.5,-7.5 + pos: -2.5,-19.5 parent: 2 - proto: AtmosFixNitrogenMarker entities: @@ -2151,6 +2222,8 @@ entities: - type: Transform pos: -7.5,11.5 parent: 2 + - type: AccessReader + accessListsOriginal: [] - type: DeviceLinkSink invokeCounter: 1 - proto: BluespaceBeaker @@ -2158,7 +2231,12 @@ entities: - uid: 93 components: - type: Transform - pos: 6.3718643,-0.34468752 + pos: 6.428499,-0.45732337 + parent: 2 + - uid: 2777 + components: + - type: Transform + pos: 6.33717,-0.3077078 parent: 2 - proto: BookshelfFilled entities: @@ -2202,6 +2280,13 @@ entities: - type: Transform pos: -5.592183,-7.3342304 parent: 2 +- proto: BoxRDCircuitboards + entities: + - uid: 2531 + components: + - type: Transform + pos: -2.4841847,12.748164 + parent: 2 - proto: BoxZiptie entities: - uid: 99 @@ -2235,10 +2320,10 @@ entities: parent: 2 - proto: ButtonFrameCautionSecurity entities: - - uid: 2456 + - uid: 1451 components: - type: Transform - pos: -3.5,12.5 + pos: -4.5,12.5 parent: 2 - proto: CableApcExtension entities: @@ -2400,7 +2485,7 @@ entities: - uid: 133 components: - type: Transform - pos: -16.5,5.5 + pos: 11.5,9.5 parent: 2 - uid: 134 components: @@ -2415,87 +2500,7 @@ entities: - uid: 136 components: - type: Transform - pos: -16.5,7.5 - parent: 2 - - uid: 137 - components: - - type: Transform - pos: -17.5,8.5 - parent: 2 - - uid: 138 - components: - - type: Transform - pos: -18.5,8.5 - parent: 2 - - uid: 139 - components: - - type: Transform - pos: -19.5,8.5 - parent: 2 - - uid: 140 - components: - - type: Transform - pos: -19.5,7.5 - parent: 2 - - uid: 141 - components: - - type: Transform - pos: -19.5,6.5 - parent: 2 - - uid: 142 - components: - - type: Transform - pos: -20.5,6.5 - parent: 2 - - uid: 143 - components: - - type: Transform - pos: -21.5,6.5 - parent: 2 - - uid: 144 - components: - - type: Transform - pos: -21.5,5.5 - parent: 2 - - uid: 145 - components: - - type: Transform - pos: -22.5,5.5 - parent: 2 - - uid: 146 - components: - - type: Transform - pos: -23.5,5.5 - parent: 2 - - uid: 147 - components: - - type: Transform - pos: -24.5,5.5 - parent: 2 - - uid: 148 - components: - - type: Transform - pos: -24.5,4.5 - parent: 2 - - uid: 149 - components: - - type: Transform - pos: -25.5,4.5 - parent: 2 - - uid: 150 - components: - - type: Transform - pos: -25.5,3.5 - parent: 2 - - uid: 151 - components: - - type: Transform - pos: -25.5,2.5 - parent: 2 - - uid: 152 - components: - - type: Transform - pos: -25.5,1.5 + pos: 11.5,10.5 parent: 2 - uid: 153 components: @@ -2737,21 +2742,6 @@ entities: - type: Transform pos: -13.5,-4.5 parent: 2 - - uid: 201 - components: - - type: Transform - pos: -13.5,-5.5 - parent: 2 - - uid: 202 - components: - - type: Transform - pos: -14.5,-5.5 - parent: 2 - - uid: 203 - components: - - type: Transform - pos: -12.5,-5.5 - parent: 2 - uid: 204 components: - type: Transform @@ -2777,20 +2767,10 @@ entities: - type: Transform pos: -9.5,-4.5 parent: 2 - - uid: 209 - components: - - type: Transform - pos: -9.5,-5.5 - parent: 2 - uid: 210 components: - type: Transform - pos: -10.5,-5.5 - parent: 2 - - uid: 211 - components: - - type: Transform - pos: -8.5,-5.5 + pos: 12.5,9.5 parent: 2 - uid: 212 components: @@ -2818,16 +2798,6 @@ entities: pos: -4.5,-3.5 parent: 2 - uid: 217 - components: - - type: Transform - pos: -2.5,-5.5 - parent: 2 - - uid: 218 - components: - - type: Transform - pos: -1.5,-5.5 - parent: 2 - - uid: 219 components: - type: Transform pos: -0.5,-5.5 @@ -2972,16 +2942,6 @@ entities: - type: Transform pos: 4.5,-6.5 parent: 2 - - uid: 248 - components: - - type: Transform - pos: 7.5,-17.5 - parent: 2 - - uid: 249 - components: - - type: Transform - pos: 7.5,-16.5 - parent: 2 - uid: 250 components: - type: Transform @@ -3412,40 +3372,10 @@ entities: - type: Transform pos: 16.5,-3.5 parent: 2 - - uid: 342 + - uid: 348 components: - type: Transform - pos: 16.5,-4.5 - parent: 2 - - uid: 343 - components: - - type: Transform - pos: 16.5,-5.5 - parent: 2 - - uid: 344 - components: - - type: Transform - pos: 15.5,-5.5 - parent: 2 - - uid: 345 - components: - - type: Transform - pos: 18.5,-5.5 - parent: 2 - - uid: 346 - components: - - type: Transform - pos: 18.5,-5.5 - parent: 2 - - uid: 347 - components: - - type: Transform - pos: 17.5,-5.5 - parent: 2 - - uid: 348 - components: - - type: Transform - pos: 17.5,-3.5 + pos: 17.5,-3.5 parent: 2 - uid: 349 components: @@ -3547,31 +3477,6 @@ entities: - type: Transform pos: 24.5,-3.5 parent: 2 - - uid: 371 - components: - - type: Transform - pos: 25.5,-3.5 - parent: 2 - - uid: 372 - components: - - type: Transform - pos: 25.5,-4.5 - parent: 2 - - uid: 373 - components: - - type: Transform - pos: 24.5,-4.5 - parent: 2 - - uid: 374 - components: - - type: Transform - pos: 26.5,-3.5 - parent: 2 - - uid: 375 - components: - - type: Transform - pos: 26.5,-2.5 - parent: 2 - uid: 376 components: - type: Transform @@ -3592,65 +3497,15 @@ entities: - type: Transform pos: 26.5,0.5 parent: 2 - - uid: 380 - components: - - type: Transform - pos: 27.5,0.5 - parent: 2 - - uid: 381 - components: - - type: Transform - pos: 27.5,-0.5 - parent: 2 - - uid: 382 - components: - - type: Transform - pos: 27.5,1.5 - parent: 2 - - uid: 383 - components: - - type: Transform - pos: 27.5,2.5 - parent: 2 - - uid: 384 - components: - - type: Transform - pos: 27.5,3.5 - parent: 2 - - uid: 385 - components: - - type: Transform - pos: 26.5,3.5 - parent: 2 - - uid: 386 - components: - - type: Transform - pos: 26.5,4.5 - parent: 2 - - uid: 387 - components: - - type: Transform - pos: 25.5,4.5 - parent: 2 - - uid: 388 - components: - - type: Transform - pos: 25.5,5.5 - parent: 2 - - uid: 389 - components: - - type: Transform - pos: 24.5,5.5 - parent: 2 - uid: 391 components: - type: Transform - pos: 23.5,4.5 + pos: -2.5,-4.5 parent: 2 - uid: 392 components: - type: Transform - pos: 22.5,4.5 + pos: -1.5,-4.5 parent: 2 - uid: 393 components: @@ -3672,11 +3527,6 @@ entities: - type: Transform pos: 19.5,5.5 parent: 2 - - uid: 397 - components: - - type: Transform - pos: 20.5,7.5 - parent: 2 - uid: 398 components: - type: Transform @@ -3997,6 +3847,36 @@ entities: - type: Transform pos: 15.5,2.5 parent: 2 + - uid: 606 + components: + - type: Transform + pos: 24.5,3.5 + parent: 2 + - uid: 630 + components: + - type: Transform + pos: -17.5,-6.5 + parent: 2 + - uid: 669 + components: + - type: Transform + pos: 23.5,3.5 + parent: 2 + - uid: 670 + components: + - type: Transform + pos: -23.5,2.5 + parent: 2 + - uid: 807 + components: + - type: Transform + pos: -24.5,2.5 + parent: 2 + - uid: 832 + components: + - type: Transform + pos: -24.5,1.5 + parent: 2 - uid: 843 components: - type: Transform @@ -4012,6 +3892,21 @@ entities: - type: Transform pos: 15.5,5.5 parent: 2 + - uid: 876 + components: + - type: Transform + pos: -24.5,0.5 + parent: 2 + - uid: 884 + components: + - type: Transform + pos: -24.5,-0.5 + parent: 2 + - uid: 1060 + components: + - type: Transform + pos: -24.5,-1.5 + parent: 2 - uid: 1414 components: - type: Transform @@ -4067,6 +3962,16 @@ entities: - type: Transform pos: -0.5,-16.5 parent: 2 + - uid: 2534 + components: + - type: Transform + pos: -3.5,15.5 + parent: 2 + - uid: 2536 + components: + - type: Transform + pos: -17.5,-5.5 + parent: 2 - uid: 2577 components: - type: Transform @@ -4132,48 +4037,28 @@ entities: - type: Transform pos: 18.5,5.5 parent: 2 - - uid: 2590 - components: - - type: Transform - pos: 20.5,8.5 - parent: 2 - - uid: 2591 - components: - - type: Transform - pos: 17.5,10.5 - parent: 2 - - uid: 2592 - components: - - type: Transform - pos: 17.5,11.5 - parent: 2 - - uid: 2593 + - uid: 2655 components: - type: Transform - pos: 16.5,11.5 + pos: -0.5,-17.5 parent: 2 - - uid: 2594 + - uid: 2656 components: - type: Transform - pos: 15.5,11.5 + pos: -0.5,-18.5 parent: 2 - - uid: 2637 + - uid: 2657 components: - type: Transform - pos: -1.5,-16.5 + pos: -1.5,-18.5 parent: 2 - - uid: 2638 + - uid: 2658 components: - type: Transform - pos: -2.5,-16.5 + pos: -2.5,-18.5 parent: 2 - proto: CableHV entities: - - uid: 461 - components: - - type: Transform - pos: 22.5,4.5 - parent: 2 - uid: 462 components: - type: Transform @@ -4804,162 +4689,82 @@ entities: - type: Transform pos: 3.5,-4.5 parent: 2 - - uid: 592 + - uid: 596 components: - type: Transform - pos: -17.5,3.5 + pos: 23.5,4.5 parent: 2 - - uid: 593 + - uid: 597 components: - type: Transform - pos: -17.5,4.5 + pos: 22.5,4.5 parent: 2 - - uid: 594 + - uid: 609 components: - type: Transform - pos: -17.5,5.5 + pos: -6.5,7.5 parent: 2 - - uid: 595 + - uid: 610 components: - type: Transform - pos: -17.5,6.5 + pos: -23.5,-1.5 parent: 2 - - uid: 596 + - uid: 611 components: - type: Transform - pos: -17.5,7.5 + pos: -23.5,2.5 parent: 2 - - uid: 597 + - uid: 612 components: - type: Transform - pos: -17.5,8.5 + pos: -20.5,4.5 parent: 2 - - uid: 598 + - uid: 2550 components: - type: Transform - pos: -16.5,8.5 + pos: 15.5,1.5 parent: 2 - - uid: 599 + - uid: 2551 components: - type: Transform - pos: -15.5,8.5 + pos: 15.5,2.5 parent: 2 - - uid: 600 + - uid: 2552 components: - type: Transform - pos: -14.5,8.5 + pos: 15.5,3.5 parent: 2 - - uid: 601 + - uid: 2627 components: - type: Transform - pos: -14.5,7.5 + pos: 21.5,5.5 parent: 2 - - uid: 602 +- proto: CableMV + entities: + - uid: 614 components: - type: Transform - pos: -13.5,7.5 + pos: 11.5,7.5 parent: 2 - - uid: 603 + - uid: 615 components: - type: Transform - pos: -12.5,7.5 + pos: -21.5,3.5 parent: 2 - - uid: 604 + - uid: 616 components: - type: Transform - pos: -11.5,7.5 + pos: -20.5,3.5 parent: 2 - - uid: 605 + - uid: 617 components: - type: Transform - pos: -10.5,7.5 + pos: -19.5,3.5 parent: 2 - - uid: 606 + - uid: 618 components: - type: Transform - pos: -9.5,7.5 - parent: 2 - - uid: 607 - components: - - type: Transform - pos: -8.5,7.5 - parent: 2 - - uid: 608 - components: - - type: Transform - pos: -7.5,7.5 - parent: 2 - - uid: 609 - components: - - type: Transform - pos: -6.5,7.5 - parent: 2 - - uid: 610 - components: - - type: Transform - pos: -23.5,-1.5 - parent: 2 - - uid: 611 - components: - - type: Transform - pos: -23.5,2.5 - parent: 2 - - uid: 612 - components: - - type: Transform - pos: -20.5,4.5 - parent: 2 - - uid: 613 - components: - - type: Transform - pos: 23.5,4.5 - parent: 2 - - uid: 2550 - components: - - type: Transform - pos: 15.5,1.5 - parent: 2 - - uid: 2551 - components: - - type: Transform - pos: 15.5,2.5 - parent: 2 - - uid: 2552 - components: - - type: Transform - pos: 15.5,3.5 - parent: 2 - - uid: 2627 - components: - - type: Transform - pos: 21.5,5.5 - parent: 2 -- proto: CableMV - entities: - - uid: 614 - components: - - type: Transform - pos: 11.5,7.5 - parent: 2 - - uid: 615 - components: - - type: Transform - pos: -21.5,3.5 - parent: 2 - - uid: 616 - components: - - type: Transform - pos: -20.5,3.5 - parent: 2 - - uid: 617 - components: - - type: Transform - pos: -19.5,3.5 - parent: 2 - - uid: 618 - components: - - type: Transform - pos: -18.5,3.5 + pos: -18.5,3.5 parent: 2 - uid: 619 components: @@ -5016,46 +4821,6 @@ entities: - type: Transform pos: -20.5,0.5 parent: 2 - - uid: 630 - components: - - type: Transform - pos: -21.5,0.5 - parent: 2 - - uid: 631 - components: - - type: Transform - pos: -22.5,0.5 - parent: 2 - - uid: 632 - components: - - type: Transform - pos: -23.5,0.5 - parent: 2 - - uid: 633 - components: - - type: Transform - pos: -24.5,0.5 - parent: 2 - - uid: 634 - components: - - type: Transform - pos: -24.5,-0.5 - parent: 2 - - uid: 635 - components: - - type: Transform - pos: -24.5,-1.5 - parent: 2 - - uid: 636 - components: - - type: Transform - pos: -24.5,1.5 - parent: 2 - - uid: 637 - components: - - type: Transform - pos: -24.5,2.5 - parent: 2 - uid: 638 components: - type: Transform @@ -5181,46 +4946,6 @@ entities: - type: Transform pos: -6.5,7.5 parent: 2 - - uid: 663 - components: - - type: Transform - pos: -7.5,7.5 - parent: 2 - - uid: 664 - components: - - type: Transform - pos: -8.5,7.5 - parent: 2 - - uid: 665 - components: - - type: Transform - pos: -8.5,6.5 - parent: 2 - - uid: 666 - components: - - type: Transform - pos: -8.5,5.5 - parent: 2 - - uid: 667 - components: - - type: Transform - pos: -8.5,4.5 - parent: 2 - - uid: 668 - components: - - type: Transform - pos: -8.5,3.5 - parent: 2 - - uid: 669 - components: - - type: Transform - pos: -8.5,2.5 - parent: 2 - - uid: 670 - components: - - type: Transform - pos: -8.5,1.5 - parent: 2 - uid: 671 components: - type: Transform @@ -5294,7 +5019,7 @@ entities: - uid: 686 components: - type: Transform - pos: -2.5,-5.5 + pos: -1.5,-4.5 parent: 2 - uid: 687 components: @@ -5626,6 +5351,11 @@ entities: - type: Transform pos: 21.5,5.5 parent: 2 + - uid: 2781 + components: + - type: Transform + pos: -2.5,-4.5 + parent: 2 - proto: CableTerminal entities: - uid: 752 @@ -5914,10 +5644,22 @@ entities: parent: 2 - proto: Catwalk entities: - - uid: 807 + - uid: 84 components: - type: Transform - pos: -30.5,0.5 + rot: 3.141592653589793 rad + pos: -0.5,-17.5 + parent: 2 + - uid: 138 + components: + - type: Transform + pos: -17.5,-7.5 + parent: 2 + - uid: 141 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,-17.5 parent: 2 - uid: 808 components: @@ -6039,11 +5781,6 @@ entities: - type: Transform pos: -17.5,8.5 parent: 2 - - uid: 832 - components: - - type: Transform - pos: -16.5,8.5 - parent: 2 - uid: 833 components: - type: Transform @@ -6106,6 +5843,41 @@ entities: rot: -1.5707963267948966 rad pos: 5.5,-17.5 parent: 2 + - uid: 1286 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -16.5,8.5 + parent: 2 + - uid: 1290 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,16.5 + parent: 2 + - uid: 1291 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,15.5 + parent: 2 + - uid: 1293 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,16.5 + parent: 2 + - uid: 1359 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,15.5 + parent: 2 + - uid: 1401 + components: + - type: Transform + pos: -17.5,-6.5 + parent: 2 - uid: 1808 components: - type: Transform @@ -6124,11 +5896,6 @@ entities: rot: -1.5707963267948966 rad pos: -31.5,4.5 parent: 2 - - uid: 1870 - components: - - type: Transform - pos: -2.5,-16.5 - parent: 2 - uid: 2005 components: - type: Transform @@ -6146,26 +5913,6 @@ entities: - type: Transform pos: 7.5,18.5 parent: 2 - - uid: 2503 - components: - - type: Transform - pos: -2.5,16.5 - parent: 2 - - uid: 2504 - components: - - type: Transform - pos: -2.5,15.5 - parent: 2 - - uid: 2505 - components: - - type: Transform - pos: -0.5,15.5 - parent: 2 - - uid: 2506 - components: - - type: Transform - pos: -0.5,16.5 - parent: 2 - uid: 2511 components: - type: Transform @@ -6188,29 +5935,21 @@ entities: - type: Transform pos: 9.5,18.5 parent: 2 - - uid: 2519 + - uid: 2545 components: - type: Transform - pos: -0.5,-16.5 + rot: 3.141592653589793 rad + pos: -2.5,-18.5 parent: 2 - - uid: 2536 + - uid: 2591 components: - type: Transform - pos: -17.5,-6.5 + rot: 3.141592653589793 rad + pos: -0.5,-18.5 parent: 2 - - uid: 2629 - components: - - type: Transform - pos: -0.5,-15.5 - parent: 2 - - uid: 2631 - components: - - type: Transform - pos: -2.5,-15.5 - parent: 2 -- proto: Chair - entities: - - uid: 846 +- proto: Chair + entities: + - uid: 846 components: - type: Transform pos: 4.5,1.5 @@ -6296,6 +6035,12 @@ entities: rot: 1.5707963267948966 rad pos: 5.5,11.5 parent: 2 + - uid: 2590 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,-13.5 + parent: 2 - uid: 2607 components: - type: Transform @@ -6416,12 +6161,6 @@ entities: rot: -1.5707963267948966 rad pos: 23.5,1.5 parent: 2 - - uid: 872 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 23.5,-0.5 - parent: 2 - proto: ChemDispenser entities: - uid: 873 @@ -6461,15 +6200,15 @@ entities: fixtures: {} - proto: ClosetChefFilled entities: - - uid: 878 + - uid: 2608 components: - type: Transform - pos: -4.5,5.5 + pos: 16.5,10.5 parent: 2 - - uid: 2608 + - uid: 2780 components: - type: Transform - pos: 16.5,10.5 + pos: -4.5,5.5 parent: 2 - proto: ClosetEmergencyFilledRandom entities: @@ -6488,11 +6227,6 @@ entities: - type: Transform pos: 5.5,3.5 parent: 2 - - uid: 884 - components: - - type: Transform - pos: -16.5,6.5 - parent: 2 - uid: 2216 components: - type: Transform @@ -6524,15 +6258,23 @@ entities: - type: Transform pos: -3.5,-6.5 parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + Oxygen: 1.7459903 + Nitrogen: 6.568249 - type: ContainerContainer containers: entity_storage: !type:Container showEnts: False occludes: True ents: - - 887 - 889 - 888 + - 887 paper_label: !type:ContainerSlot showEnts: False occludes: True @@ -6608,6 +6350,7 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + storage: 886 - proto: ClothingEyesGlassesMeson entities: - uid: 900 @@ -6671,6 +6414,7 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + storage: 886 - proto: ClothingOuterHardsuitSalvage entities: - uid: 914 @@ -6683,7 +6427,14 @@ entities: - uid: 915 components: - type: Transform - pos: 5.4690175,-10.51443 + pos: 4.299963,-10.6488495 + parent: 2 +- proto: ClothingShoesSkates + entities: + - uid: 2776 + components: + - type: Transform + pos: 13.432112,9.386067 parent: 2 - proto: ClothingUniformJumpsuitERTJanitor entities: @@ -6694,6 +6445,7 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage + storage: 886 - proto: ComfyChair entities: - uid: 916 @@ -6923,6 +6675,9 @@ entities: - type: Transform pos: 22.5,4.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Service - proto: ComputerMedicalRecords entities: - uid: 944 @@ -6953,12 +6708,17 @@ entities: parent: 2 - proto: ComputerResearchAndDevelopment entities: - - uid: 1862 + - uid: 2533 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,10.5 + pos: -3.5,12.5 parent: 2 + - type: TechnologyDatabase + supportedDisciplines: + - Industrial + - Arsenal + - Experimental + - CivilianServices - proto: ComputerSalvageExpedition entities: - uid: 950 @@ -7106,7 +6866,7 @@ entities: - uid: 969 components: - type: Transform - pos: 6.5,-13.5 + pos: 6.5,-14.5 parent: 2 - proto: DefaultStationBeaconBar entities: @@ -7120,7 +6880,7 @@ entities: - uid: 971 components: - type: Transform - pos: -12.5,4.5 + pos: -13.5,5.5 parent: 2 - proto: DefaultStationBeaconBridge entities: @@ -7162,7 +6922,7 @@ entities: - uid: 1867 components: - type: Transform - pos: -1.5,-13.5 + pos: -1.5,-15.5 parent: 2 - proto: DefaultStationBeaconJanitorsCloset entities: @@ -7176,7 +6936,7 @@ entities: - uid: 979 components: - type: Transform - pos: -5.5,4.5 + pos: -4.5,5.5 parent: 2 - proto: DefaultStationBeaconMedbay entities: @@ -7666,17 +7426,29 @@ entities: parent: 2 - proto: EmergencyLight entities: - - uid: 1059 + - uid: 201 components: - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,3.5 + rot: -1.5707963267948966 rad + pos: 7.5,-12.5 parent: 2 - - uid: 1060 + - uid: 203 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,-14.5 + parent: 2 + - uid: 608 components: - type: Transform rot: -1.5707963267948966 rad - pos: 0.5,-8.5 + pos: 0.5,-7.5 + parent: 2 + - uid: 1059 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 7.5,3.5 parent: 2 - uid: 1061 components: @@ -7765,6 +7537,35 @@ entities: name: Reach - proto: FirelockEdge entities: + - uid: 637 + components: + - type: Transform + pos: -17.5,3.5 + parent: 2 + - uid: 663 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -17.5,-1.5 + parent: 2 + - uid: 664 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -19.5,-0.5 + parent: 2 + - uid: 665 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -19.5,0.5 + parent: 2 + - uid: 666 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -19.5,1.5 + parent: 2 - uid: 1073 components: - type: Transform @@ -7794,6 +7595,119 @@ entities: - 12 - proto: FirelockGlass entities: + - uid: 61 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,-5.5 + parent: 2 + - uid: 218 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 0.5,-5.5 + parent: 2 + - uid: 219 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,-5.5 + parent: 2 + - uid: 383 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -14.5,2.5 + parent: 2 + - uid: 384 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,2.5 + parent: 2 + - uid: 385 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,6.5 + parent: 2 + - uid: 386 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -7.5,2.5 + parent: 2 + - uid: 387 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,1.5 + parent: 2 + - uid: 389 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,6.5 + parent: 2 + - uid: 397 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 17.5,-1.5 + parent: 2 + - uid: 461 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 20.5,0.5 + parent: 2 + - uid: 592 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 22.5,-1.5 + parent: 2 + - uid: 593 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 18.5,2.5 + parent: 2 + - uid: 594 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 15.5,2.5 + parent: 2 + - uid: 595 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 13.5,0.5 + parent: 2 + - uid: 607 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -6.5,4.5 + parent: 2 + - uid: 636 + components: + - type: Transform + pos: 9.5,0.5 + parent: 2 + - uid: 667 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -15.5,0.5 + parent: 2 + - uid: 668 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 1.5,-12.5 + parent: 2 - uid: 1071 components: - type: Transform @@ -7845,27 +7759,21 @@ entities: - uid: 1086 components: - type: Transform - pos: 0.5,-5.5 + rot: 3.141592653589793 rad + pos: -2.5,-7.5 parent: 2 - - type: DeviceNetwork - deviceLists: - - 13 - uid: 1087 components: - type: Transform - pos: -0.5,-5.5 + rot: 3.141592653589793 rad + pos: 3.5,-5.5 parent: 2 - - type: DeviceNetwork - deviceLists: - - 13 - uid: 1088 components: - type: Transform - pos: -1.5,-5.5 + rot: 3.141592653589793 rad + pos: 1.5,-6.5 parent: 2 - - type: DeviceNetwork - deviceLists: - - 13 - uid: 1092 components: - type: Transform @@ -7931,24 +7839,66 @@ entities: - type: Transform pos: -0.5,8.5 parent: 2 - - uid: 2562 + - uid: 1147 components: - type: Transform - pos: 16.5,4.5 + rot: 3.141592653589793 rad + pos: 4.5,-1.5 parent: 2 - - type: DeviceNetwork - deviceLists: - - 2366 - - 2621 - - uid: 2563 + - uid: 1150 components: - type: Transform - pos: 17.5,6.5 + rot: 3.141592653589793 rad + pos: 3.5,-1.5 parent: 2 - - type: DeviceNetwork - deviceLists: - - 2621 - - 2575 + - uid: 1151 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 1.5,0.5 + parent: 2 + - uid: 1174 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,-0.5 + parent: 2 + - uid: 1177 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,0.5 + parent: 2 + - uid: 1528 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -11.5,4.5 + parent: 2 + - uid: 1570 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 16.5,-1.5 + parent: 2 + - uid: 2562 + components: + - type: Transform + pos: 16.5,4.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 2366 + - 2621 + - uid: 2563 + components: + - type: Transform + pos: 17.5,6.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 2621 + - 2575 - uid: 2564 components: - type: Transform @@ -8021,16 +7971,6 @@ entities: - type: Transform pos: 15.726279,10.605636 parent: 2 -- proto: FuelDispenser - entities: - - uid: 2453 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 11.5,-8.5 - parent: 2 - - type: Fixtures - fixtures: {} - proto: GasMinerNitrogen entities: - uid: 1109 @@ -8050,14 +7990,13 @@ entities: - uid: 1111 components: - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,-13.5 + rot: -3.141592653589793 rad + pos: 6.5,-13.5 parent: 2 - type: GasMixer inletTwoConcentration: 0.22000003 inletOneConcentration: 0.78 - - type: AtmosPipeColor - color: '#0055CCFF' + targetPressure: 202.65 - proto: GasPassiveVent entities: - uid: 1112 @@ -8066,12 +8005,16 @@ entities: rot: -1.5707963267948966 rad pos: 9.5,-13.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 1113 components: - type: Transform rot: -1.5707963267948966 rad pos: 9.5,-15.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 1114 components: - type: Transform @@ -8085,9 +8028,11 @@ entities: - uid: 1115 components: - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,-15.5 + rot: -3.141592653589793 rad + pos: 6.5,-15.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 1116 components: - type: Transform @@ -8326,14 +8271,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#990000FF' - - uid: 1147 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,-13.5 - parent: 2 - - type: AtmosPipeColor - color: '#990000FF' - uid: 1148 components: - type: Transform @@ -8350,21 +8287,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#990000FF' - - uid: 1150 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-5.5 - parent: 2 - - type: AtmosPipeColor - color: '#990000FF' - - uid: 1151 - components: - - type: Transform - pos: 6.5,-5.5 - parent: 2 - - type: AtmosPipeColor - color: '#990000FF' - uid: 1152 components: - type: Transform @@ -8492,12 +8414,30 @@ entities: parent: 2 - type: AtmosPipeColor color: '#990000FF' + - uid: 1870 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 7.5,-12.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 2364 components: - type: Transform rot: -1.5707963267948966 rad pos: 17.5,4.5 parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 2505 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 7.5,-11.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' - proto: GasPipeFourway entities: - uid: 1168 @@ -8542,13 +8482,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 1174 - components: - - type: Transform - pos: 6.5,-6.5 - parent: 2 - - type: AtmosPipeColor - color: '#990000FF' - uid: 1175 components: - type: Transform @@ -8568,23 +8501,61 @@ entities: - type: Transform pos: 15.5,4.5 parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 1513 components: - type: Transform pos: 14.5,3.5 parent: 2 + - type: AtmosPipeColor + color: '#990000FF' - uid: 1530 components: - type: Transform pos: 16.5,-0.5 parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 1892 + components: + - type: Transform + pos: 6.5,-12.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 2113 + components: + - type: Transform + pos: 5.5,-6.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' +- proto: GasPipeManifold + entities: + - uid: 2196 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 7.5,-13.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 2528 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 7.5,-15.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - proto: GasPipeSensorDistribution entities: - uid: 1183 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,-12.5 + rot: -1.5707963267948966 rad + pos: 5.5,-12.5 parent: 2 - type: AtmosPipeColor color: '#0055CCFF' @@ -8593,7 +8564,7 @@ entities: - uid: 1287 components: - type: Transform - pos: 6.5,-12.5 + pos: 5.5,-11.5 parent: 2 - type: AtmosPipeColor color: '#990000FF' @@ -8605,42 +8576,53 @@ entities: rot: 3.141592653589793 rad pos: 14.5,7.5 parent: 2 + - type: AtmosPipeColor + color: '#990000FF' - uid: 329 components: - type: Transform rot: 3.141592653589793 rad pos: 14.5,4.5 parent: 2 + - type: AtmosPipeColor + color: '#990000FF' - uid: 330 components: - type: Transform rot: 3.141592653589793 rad pos: 14.5,6.5 parent: 2 + - type: AtmosPipeColor + color: '#990000FF' - uid: 331 components: - type: Transform rot: 3.141592653589793 rad pos: 14.5,5.5 parent: 2 + - type: AtmosPipeColor + color: '#990000FF' - uid: 357 components: - type: Transform rot: 3.141592653589793 rad pos: 17.5,7.5 parent: 2 - - uid: 1177 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 878 components: - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-11.5 + rot: -1.5707963267948966 rad + pos: 1.5,15.5 parent: 2 - type: AtmosPipeColor - color: '#990000FF' + color: '#0055CCFF' - uid: 1178 components: - type: Transform - pos: 5.5,15.5 + rot: -1.5707963267948966 rad + pos: 2.5,15.5 parent: 2 - type: AtmosPipeColor color: '#0055CCFF' @@ -8658,18 +8640,23 @@ entities: rot: -1.5707963267948966 rad pos: 8.5,-15.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 1181 components: - type: Transform rot: -1.5707963267948966 rad pos: 8.5,-13.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 1182 components: - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,-14.5 + pos: 6.5,-14.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 1184 components: - type: Transform @@ -8686,14 +8673,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 1186 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-12.5 - parent: 2 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 1187 components: - type: Transform @@ -9463,38 +9442,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 1286 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-10.5 - parent: 2 - - type: AtmosPipeColor - color: '#990000FF' - - uid: 1288 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-9.5 - parent: 2 - - type: AtmosPipeColor - color: '#990000FF' - - uid: 1290 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-8.5 - parent: 2 - - type: AtmosPipeColor - color: '#990000FF' - - uid: 1291 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.5,-6.5 - parent: 2 - - type: AtmosPipeColor - color: '#990000FF' - uid: 1292 components: - type: Transform @@ -9503,14 +9450,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#990000FF' - - uid: 1293 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,-6.5 - parent: 2 - - type: AtmosPipeColor - color: '#990000FF' - uid: 1294 components: - type: Transform @@ -10272,85 +10211,145 @@ entities: rot: 3.141592653589793 rad pos: 14.5,8.5 parent: 2 - - uid: 1921 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 1794 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 16.5,4.5 + rot: 3.141592653589793 rad + pos: 5.5,-10.5 parent: 2 - - uid: 1959 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 1802 components: - type: Transform rot: 3.141592653589793 rad - pos: 17.5,6.5 + pos: 5.5,-9.5 parent: 2 - - uid: 2367 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 1844 components: - type: Transform rot: 3.141592653589793 rad - pos: 17.5,5.5 + pos: 5.5,-8.5 parent: 2 - - uid: 2553 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 1850 components: - type: Transform - rot: 3.141592653589793 rad - pos: 17.5,8.5 + rot: 1.5707963267948966 rad + pos: 6.5,-6.5 parent: 2 -- proto: GasPipeTJunction - entities: - - uid: 1397 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 1857 components: - type: Transform rot: 3.141592653589793 rad - pos: 10.5,3.5 + pos: 5.5,-5.5 parent: 2 - type: AtmosPipeColor color: '#990000FF' - - uid: 1398 + - uid: 1862 components: - type: Transform rot: 3.141592653589793 rad - pos: -9.5,1.5 + pos: 5.5,-7.5 parent: 2 - type: AtmosPipeColor color: '#990000FF' - - uid: 1399 + - uid: 1866 components: - type: Transform - pos: 5.5,-13.5 + rot: 3.141592653589793 rad + pos: 5.5,-12.5 parent: 2 - type: AtmosPipeColor color: '#990000FF' - - uid: 1400 + - uid: 1921 components: - type: Transform - pos: -1.5,2.5 + rot: 1.5707963267948966 rad + pos: 16.5,4.5 parent: 2 - type: AtmosPipeColor - color: '#990000FF' - - uid: 1401 + color: '#0055CCFF' + - uid: 1959 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 17.5,6.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 2117 components: - type: Transform rot: -1.5707963267948966 rad - pos: 7.5,-12.5 + pos: 3.5,15.5 parent: 2 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 1402 + - uid: 2367 components: - type: Transform - pos: 7.5,-11.5 + rot: 3.141592653589793 rad + pos: 17.5,5.5 parent: 2 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 1403 + - uid: 2553 components: - type: Transform rot: 3.141592653589793 rad - pos: 5.5,-12.5 + pos: 17.5,8.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 2778 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,15.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' +- proto: GasPipeTJunction + entities: + - uid: 211 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 5.5,15.5 parent: 2 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 1397 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 10.5,3.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 1398 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -9.5,1.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 1400 + components: + - type: Transform + pos: -1.5,2.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' - uid: 1404 components: - type: Transform @@ -10518,14 +10517,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#990000FF' - - uid: 1427 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,-7.5 - parent: 2 - - type: AtmosPipeColor - color: '#990000FF' - uid: 1428 components: - type: Transform @@ -10653,13 +10644,31 @@ entities: parent: 2 - type: AtmosPipeColor color: '#990000FF' -- proto: GasPort - entities: - - uid: 1448 + - uid: 1845 components: - type: Transform - pos: 5.5,-10.5 + rot: 3.141592653589793 rad + pos: 4.5,-12.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 1849 + components: + - type: Transform + pos: 7.5,-6.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 1868 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 5.5,-13.5 parent: 2 + - type: AtmosPipeColor + color: '#990000FF' +- proto: GasPort + entities: - uid: 1449 components: - type: Transform @@ -10676,12 +10685,19 @@ entities: parent: 2 - type: AtmosPipeColor color: '#990000FF' + - uid: 1790 + components: + - type: Transform + pos: 6.5,-10.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' - proto: GasPressurePump entities: - - uid: 1451 + - uid: 2126 components: - type: Transform - pos: 5.5,-11.5 + pos: 6.5,-11.5 parent: 2 - type: AtmosPipeColor color: '#0055CCFF' @@ -10697,11 +10713,21 @@ entities: color: '#990000FF' - proto: GasVentPump entities: + - uid: 209 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,-1.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 7 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 1453 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,-11.5 + pos: 4.5,-11.5 parent: 2 - type: DeviceNetwork deviceLists: @@ -11038,9 +11064,22 @@ entities: - type: Transform pos: 17.5,9.5 parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' - type: DeviceNetwork deviceLists: - 2575 + - uid: 2779 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 0.5,15.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 3 + - type: AtmosPipeColor + color: '#0055CCFF' - proto: GasVentScrubber entities: - uid: 551 @@ -11048,6 +11087,8 @@ entities: - type: Transform pos: 14.5,9.5 parent: 2 + - type: AtmosPipeColor + color: '#990000FF' - type: DeviceNetwork deviceLists: - 2575 @@ -11057,13 +11098,15 @@ entities: rot: -1.5707963267948966 rad pos: 15.5,3.5 parent: 2 + - type: AtmosPipeColor + color: '#990000FF' - type: DeviceNetwork deviceLists: - 2366 - uid: 1486 components: - type: Transform - rot: -1.5707963267948966 rad + rot: -3.141592653589793 rad pos: 7.5,-7.5 parent: 2 - type: DeviceNetwork @@ -11362,6 +11405,8 @@ entities: - type: Transform pos: 16.5,0.5 parent: 2 + - type: AtmosPipeColor + color: '#990000FF' - type: DeviceNetwork deviceLists: - 2623 @@ -11437,152 +11482,329 @@ entities: - type: Transform pos: 20.5,7.5 parent: 2 - - uid: 90 + - uid: 144 components: - type: Transform - pos: -18.5,-5.5 + pos: -22.5,7.5 parent: 2 - - uid: 332 + - uid: 145 components: - type: Transform - pos: 14.5,2.5 + pos: -18.5,9.5 parent: 2 - - uid: 933 + - uid: 146 components: - type: Transform - pos: 11.5,9.5 + pos: -17.5,9.5 parent: 2 - - uid: 1072 + - uid: 147 components: - type: Transform - pos: -7.5,8.5 + pos: -16.5,9.5 parent: 2 - - uid: 1090 + - uid: 148 components: - type: Transform - pos: 15.5,11.5 + pos: -15.5,9.5 parent: 2 - - uid: 1091 + - uid: 149 components: - type: Transform - pos: 20.5,8.5 + pos: -9.5,10.5 parent: 2 - - uid: 1522 + - uid: 150 components: - type: Transform - pos: -30.5,-1.5 + pos: -9.5,11.5 parent: 2 - - uid: 1523 + - uid: 151 components: - type: Transform - pos: 6.5,18.5 + pos: -9.5,12.5 parent: 2 - - uid: 1524 + - uid: 152 components: - type: Transform - pos: 8.5,17.5 + pos: -9.5,13.5 parent: 2 - - uid: 1525 + - uid: 248 components: - type: Transform - pos: 8.5,18.5 + pos: -9.5,14.5 parent: 2 - - uid: 1526 + - uid: 249 components: - type: Transform - pos: 6.5,19.5 + pos: -8.5,14.5 parent: 2 - - uid: 1527 + - uid: 332 components: - type: Transform - pos: 8.5,19.5 + pos: 14.5,2.5 parent: 2 - - uid: 1528 + - uid: 343 components: - type: Transform - pos: -1.5,17.5 + pos: -6.5,14.5 parent: 2 - - uid: 1529 + - uid: 344 components: - type: Transform - pos: 2.5,17.5 + pos: -7.5,14.5 parent: 2 - - uid: 1531 + - uid: 345 components: - type: Transform - pos: 15.5,6.5 + pos: -6.5,15.5 parent: 2 - - uid: 1532 + - uid: 346 components: - type: Transform - pos: 14.5,6.5 + pos: -6.5,16.5 parent: 2 - - uid: 1535 + - uid: 347 components: - type: Transform - pos: 19.5,2.5 + pos: -6.5,17.5 parent: 2 - - uid: 1536 + - uid: 371 components: - type: Transform - pos: 20.5,1.5 + pos: 15.5,15.5 parent: 2 - - uid: 1537 + - uid: 372 components: - type: Transform - pos: 20.5,-0.5 + pos: -20.5,7.5 parent: 2 - - uid: 1538 + - uid: 374 components: - type: Transform - pos: 25.5,-4.5 + pos: -25.5,6.5 parent: 2 - - uid: 1539 + - uid: 375 components: - type: Transform - pos: 27.5,-0.5 + pos: -20.5,8.5 parent: 2 - - uid: 1540 + - uid: 380 components: - type: Transform - pos: 25.5,-3.5 + pos: 17.5,15.5 parent: 2 - - uid: 1541 + - uid: 381 components: - type: Transform - pos: 26.5,-3.5 + pos: -19.5,9.5 parent: 2 - - uid: 1542 + - uid: 382 components: - type: Transform - pos: 26.5,-2.5 + pos: -25.5,5.5 parent: 2 - - uid: 1543 + - uid: 598 components: - type: Transform - pos: 24.5,-4.5 + pos: -23.5,6.5 parent: 2 - - uid: 1544 + - uid: 599 components: - type: Transform - pos: 27.5,0.5 + pos: -21.5,7.5 parent: 2 - - uid: 1545 + - uid: 600 components: - type: Transform - pos: 27.5,1.5 + pos: -27.5,5.5 parent: 2 - - uid: 1546 + - uid: 601 components: - type: Transform - pos: 27.5,2.5 + pos: -26.5,5.5 parent: 2 - - uid: 1547 + - uid: 602 components: - type: Transform - pos: 27.5,3.5 + pos: -20.5,9.5 parent: 2 - - uid: 1548 + - uid: 603 + components: + - type: Transform + pos: -24.5,6.5 + parent: 2 + - uid: 605 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,15.5 + parent: 2 + - uid: 613 + components: + - type: Transform + pos: -30.5,0.5 + parent: 2 + - uid: 632 + components: + - type: Transform + pos: -18.5,-8.5 + parent: 2 + - uid: 633 + components: + - type: Transform + pos: -16.5,-8.5 + parent: 2 + - uid: 872 + components: + - type: Transform + pos: 16.5,15.5 + parent: 2 + - uid: 885 + components: + - type: Transform + pos: 18.5,15.5 + parent: 2 + - uid: 933 + components: + - type: Transform + pos: 11.5,9.5 + parent: 2 + - uid: 1072 + components: + - type: Transform + pos: -7.5,8.5 + parent: 2 + - uid: 1090 + components: + - type: Transform + pos: 15.5,11.5 + parent: 2 + - uid: 1091 + components: + - type: Transform + pos: 20.5,8.5 + parent: 2 + - uid: 1186 + components: + - type: Transform + pos: -30.5,-0.5 + parent: 2 + - uid: 1288 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,16.5 + parent: 2 + - uid: 1522 + components: + - type: Transform + pos: -30.5,-1.5 + parent: 2 + - uid: 1523 + components: + - type: Transform + pos: 6.5,18.5 + parent: 2 + - uid: 1524 + components: + - type: Transform + pos: 8.5,17.5 + parent: 2 + - uid: 1525 + components: + - type: Transform + pos: 8.5,18.5 + parent: 2 + - uid: 1526 + components: + - type: Transform + pos: 6.5,19.5 + parent: 2 + - uid: 1527 + components: + - type: Transform + pos: 8.5,19.5 + parent: 2 + - uid: 1529 + components: + - type: Transform + pos: 2.5,17.5 + parent: 2 + - uid: 1531 + components: + - type: Transform + pos: 15.5,6.5 + parent: 2 + - uid: 1532 + components: + - type: Transform + pos: 14.5,6.5 + parent: 2 + - uid: 1535 + components: + - type: Transform + pos: 19.5,2.5 + parent: 2 + - uid: 1536 + components: + - type: Transform + pos: 20.5,1.5 + parent: 2 + - uid: 1537 + components: + - type: Transform + pos: 20.5,-0.5 + parent: 2 + - uid: 1538 + components: + - type: Transform + pos: 25.5,-4.5 + parent: 2 + - uid: 1539 + components: + - type: Transform + pos: 27.5,-0.5 + parent: 2 + - uid: 1540 + components: + - type: Transform + pos: 25.5,-3.5 + parent: 2 + - uid: 1541 + components: + - type: Transform + pos: 26.5,-3.5 + parent: 2 + - uid: 1542 + components: + - type: Transform + pos: 26.5,-2.5 + parent: 2 + - uid: 1543 + components: + - type: Transform + pos: 24.5,-4.5 + parent: 2 + - uid: 1544 + components: + - type: Transform + pos: 27.5,0.5 + parent: 2 + - uid: 1545 + components: + - type: Transform + pos: 27.5,1.5 + parent: 2 + - uid: 1546 + components: + - type: Transform + pos: 27.5,2.5 + parent: 2 + - uid: 1547 + components: + - type: Transform + pos: 27.5,3.5 + parent: 2 + - uid: 1548 components: - type: Transform pos: 26.5,3.5 @@ -11697,285 +11919,926 @@ entities: - type: Transform pos: -6.5,-7.5 parent: 2 - - uid: 1577 + - uid: 1577 + components: + - type: Transform + pos: -8.5,-5.5 + parent: 2 + - uid: 1578 + components: + - type: Transform + pos: -9.5,-5.5 + parent: 2 + - uid: 1579 + components: + - type: Transform + pos: -10.5,-5.5 + parent: 2 + - uid: 1580 + components: + - type: Transform + pos: -12.5,-5.5 + parent: 2 + - uid: 1581 + components: + - type: Transform + pos: -13.5,-5.5 + parent: 2 + - uid: 1582 + components: + - type: Transform + pos: -14.5,-5.5 + parent: 2 + - uid: 1583 + components: + - type: Transform + pos: -24.5,-1.5 + parent: 2 + - uid: 1584 + components: + - type: Transform + pos: -24.5,-0.5 + parent: 2 + - uid: 1585 + components: + - type: Transform + pos: -24.5,0.5 + parent: 2 + - uid: 1586 + components: + - type: Transform + pos: -24.5,1.5 + parent: 2 + - uid: 1587 + components: + - type: Transform + pos: -24.5,2.5 + parent: 2 + - uid: 1588 + components: + - type: Transform + pos: -16.5,5.5 + parent: 2 + - uid: 1589 + components: + - type: Transform + pos: -16.5,7.5 + parent: 2 + - uid: 1590 + components: + - type: Transform + pos: -30.5,2.5 + parent: 2 + - uid: 1595 + components: + - type: Transform + pos: 0.5,14.5 + parent: 2 + - uid: 1596 + components: + - type: Transform + pos: 0.5,17.5 + parent: 2 + - uid: 1597 + components: + - type: Transform + pos: 2.5,14.5 + parent: 2 + - uid: 1598 + components: + - type: Transform + pos: 6.5,17.5 + parent: 2 + - uid: 1599 + components: + - type: Transform + pos: -14.5,9.5 + parent: 2 + - uid: 1600 + components: + - type: Transform + pos: -13.5,9.5 + parent: 2 + - uid: 1601 + components: + - type: Transform + pos: -12.5,9.5 + parent: 2 + - uid: 1602 + components: + - type: Transform + pos: -11.5,9.5 + parent: 2 + - uid: 1603 + components: + - type: Transform + pos: -10.5,9.5 + parent: 2 + - uid: 1604 + components: + - type: Transform + pos: -9.5,9.5 + parent: 2 + - uid: 1605 + components: + - type: Transform + pos: 1.5,-4.5 + parent: 2 + - uid: 1606 + components: + - type: Transform + pos: 1.5,-3.5 + parent: 2 + - uid: 1607 + components: + - type: Transform + pos: 1.5,-2.5 + parent: 2 + - uid: 1608 + components: + - type: Transform + pos: 2.5,-1.5 + parent: 2 + - uid: 1609 + components: + - type: Transform + pos: 1.5,-0.5 + parent: 2 + - uid: 1610 + components: + - type: Transform + pos: 1.5,1.5 + parent: 2 + - uid: 1611 + components: + - type: Transform + pos: 6.5,-1.5 + parent: 2 + - uid: 1612 + components: + - type: Transform + pos: 1.5,6.5 + parent: 2 + - uid: 1613 + components: + - type: Transform + pos: 3.5,-14.5 + parent: 2 + - uid: 1615 + components: + - type: Transform + pos: 3.5,2.5 + parent: 2 + - uid: 1617 + components: + - type: Transform + pos: -13.5,7.5 + parent: 2 + - uid: 1625 + components: + - type: Transform + pos: -5.5,12.5 + parent: 2 + - uid: 1644 + components: + - type: Transform + pos: -6.5,12.5 + parent: 2 + - uid: 1658 + components: + - type: Transform + pos: -7.5,10.5 + parent: 2 + - uid: 1686 + components: + - type: Transform + pos: -7.5,7.5 + parent: 2 + - uid: 1787 + components: + - type: Transform + pos: -30.5,1.5 + parent: 2 + - uid: 1799 + components: + - type: Transform + pos: 11.5,10.5 + parent: 2 + - uid: 1889 + components: + - type: Transform + pos: 13.5,12.5 + parent: 2 + - uid: 1969 + components: + - type: Transform + pos: 17.5,11.5 + parent: 2 + - uid: 2023 + components: + - type: Transform + pos: 16.5,11.5 + parent: 2 + - uid: 2130 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,17.5 + parent: 2 + - uid: 2405 + components: + - type: Transform + pos: 13.5,14.5 + parent: 2 + - uid: 2410 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,-16.5 + parent: 2 + - uid: 2452 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 7.5,-16.5 + parent: 2 + - uid: 2503 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,-13.5 + parent: 2 + - uid: 2506 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,17.5 + parent: 2 + - uid: 2519 + components: + - type: Transform + pos: -16.5,-5.5 + parent: 2 + - uid: 2521 + components: + - type: Transform + pos: -18.5,-5.5 + parent: 2 + - uid: 2526 + components: + - type: Transform + pos: -22.5,6.5 + parent: 2 + - uid: 2540 + components: + - type: Transform + pos: -18.5,-6.5 + parent: 2 + - uid: 2541 + components: + - type: Transform + pos: -18.5,-7.5 + parent: 2 + - uid: 2542 + components: + - type: Transform + pos: -16.5,-6.5 + parent: 2 + - uid: 2543 + components: + - type: Transform + pos: -16.5,-7.5 + parent: 2 + - uid: 2635 + components: + - type: Transform + pos: -3.5,-12.5 + parent: 2 + - uid: 2636 + components: + - type: Transform + pos: -3.5,-11.5 + parent: 2 + - uid: 2651 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,-17.5 + parent: 2 + - uid: 2652 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,-18.5 + parent: 2 + - uid: 2653 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,-17.5 + parent: 2 + - uid: 2654 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,-18.5 + parent: 2 + - uid: 2660 + components: + - type: Transform + pos: 18.5,14.5 + parent: 2 + - uid: 2661 + components: + - type: Transform + pos: 18.5,13.5 + parent: 2 + - uid: 2663 + components: + - type: Transform + pos: 20.5,12.5 + parent: 2 + - uid: 2664 + components: + - type: Transform + pos: 18.5,12.5 + parent: 2 + - uid: 2665 + components: + - type: Transform + pos: 21.5,12.5 + parent: 2 + - uid: 2666 + components: + - type: Transform + pos: 21.5,11.5 + parent: 2 + - uid: 2667 + components: + - type: Transform + pos: 22.5,11.5 + parent: 2 + - uid: 2668 + components: + - type: Transform + pos: 22.5,10.5 + parent: 2 + - uid: 2669 + components: + - type: Transform + pos: 22.5,9.5 + parent: 2 + - uid: 2670 + components: + - type: Transform + pos: 22.5,8.5 + parent: 2 + - uid: 2671 + components: + - type: Transform + pos: 23.5,8.5 + parent: 2 + - uid: 2672 + components: + - type: Transform + pos: 24.5,8.5 + parent: 2 + - uid: 2673 + components: + - type: Transform + pos: 24.5,7.5 + parent: 2 + - uid: 2674 + components: + - type: Transform + pos: 25.5,7.5 + parent: 2 + - uid: 2675 + components: + - type: Transform + pos: 26.5,7.5 + parent: 2 + - uid: 2676 + components: + - type: Transform + pos: 27.5,7.5 + parent: 2 + - uid: 2677 + components: + - type: Transform + pos: 27.5,6.5 + parent: 2 + - uid: 2678 + components: + - type: Transform + pos: 28.5,6.5 + parent: 2 + - uid: 2679 + components: + - type: Transform + pos: 28.5,5.5 + parent: 2 + - uid: 2680 + components: + - type: Transform + pos: 29.5,5.5 + parent: 2 + - uid: 2681 + components: + - type: Transform + pos: 22.5,-7.5 + parent: 2 + - uid: 2682 + components: + - type: Transform + pos: 29.5,4.5 + parent: 2 + - uid: 2683 + components: + - type: Transform + pos: 29.5,3.5 + parent: 2 + - uid: 2684 + components: + - type: Transform + pos: 29.5,2.5 + parent: 2 + - uid: 2685 + components: + - type: Transform + pos: 29.5,1.5 + parent: 2 + - uid: 2686 + components: + - type: Transform + pos: 29.5,0.5 + parent: 2 + - uid: 2687 + components: + - type: Transform + pos: 29.5,-0.5 + parent: 2 + - uid: 2688 + components: + - type: Transform + pos: 29.5,-1.5 + parent: 2 + - uid: 2689 + components: + - type: Transform + pos: 29.5,-2.5 + parent: 2 + - uid: 2690 + components: + - type: Transform + pos: 29.5,-3.5 + parent: 2 + - uid: 2691 + components: + - type: Transform + pos: 28.5,-3.5 + parent: 2 + - uid: 2692 + components: + - type: Transform + pos: 28.5,-4.5 + parent: 2 + - uid: 2693 + components: + - type: Transform + pos: 27.5,-5.5 + parent: 2 + - uid: 2694 + components: + - type: Transform + pos: 28.5,-5.5 + parent: 2 + - uid: 2695 + components: + - type: Transform + pos: 27.5,-6.5 + parent: 2 + - uid: 2696 + components: + - type: Transform + pos: 26.5,-6.5 + parent: 2 + - uid: 2697 + components: + - type: Transform + pos: 25.5,-6.5 + parent: 2 + - uid: 2698 + components: + - type: Transform + pos: 24.5,-6.5 + parent: 2 + - uid: 2699 + components: + - type: Transform + pos: 23.5,-6.5 + parent: 2 + - uid: 2700 + components: + - type: Transform + pos: 22.5,-6.5 + parent: 2 + - uid: 2701 + components: + - type: Transform + pos: 21.5,-7.5 + parent: 2 + - uid: 2702 + components: + - type: Transform + pos: 20.5,-7.5 + parent: 2 + - uid: 2703 + components: + - type: Transform + pos: 19.5,-7.5 + parent: 2 + - uid: 2704 + components: + - type: Transform + pos: 18.5,-7.5 + parent: 2 + - uid: 2705 + components: + - type: Transform + pos: 17.5,-7.5 + parent: 2 + - uid: 2706 + components: + - type: Transform + pos: 16.5,-7.5 + parent: 2 + - uid: 2707 + components: + - type: Transform + pos: 15.5,-7.5 + parent: 2 + - uid: 2708 + components: + - type: Transform + pos: 14.5,-7.5 + parent: 2 + - uid: 2709 + components: + - type: Transform + pos: 14.5,-8.5 + parent: 2 + - uid: 2710 + components: + - type: Transform + pos: 14.5,-9.5 + parent: 2 + - uid: 2711 + components: + - type: Transform + pos: 14.5,-10.5 + parent: 2 + - uid: 2712 + components: + - type: Transform + pos: 14.5,-11.5 + parent: 2 + - uid: 2713 + components: + - type: Transform + pos: 14.5,-12.5 + parent: 2 + - uid: 2714 + components: + - type: Transform + pos: 14.5,-13.5 + parent: 2 + - uid: 2715 + components: + - type: Transform + pos: 14.5,-14.5 + parent: 2 + - uid: 2716 + components: + - type: Transform + pos: 14.5,-15.5 + parent: 2 + - uid: 2717 + components: + - type: Transform + pos: 14.5,-16.5 + parent: 2 + - uid: 2718 + components: + - type: Transform + pos: 14.5,-17.5 + parent: 2 + - uid: 2719 + components: + - type: Transform + pos: 14.5,-18.5 + parent: 2 + - uid: 2721 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -12.5,-8.5 + parent: 2 + - uid: 2722 components: - type: Transform - pos: -8.5,-5.5 + pos: 13.5,-19.5 parent: 2 - - uid: 1578 + - uid: 2723 components: - type: Transform - pos: -9.5,-5.5 + pos: 12.5,-19.5 parent: 2 - - uid: 1579 + - uid: 2724 components: - type: Transform - pos: -10.5,-5.5 + pos: 11.5,-19.5 parent: 2 - - uid: 1580 + - uid: 2725 components: - type: Transform - pos: -12.5,-5.5 + pos: 10.5,-19.5 parent: 2 - - uid: 1581 + - uid: 2726 components: - type: Transform - pos: -13.5,-5.5 + pos: 9.5,-19.5 parent: 2 - - uid: 1582 + - uid: 2727 components: - type: Transform - pos: -14.5,-5.5 + pos: 8.5,-19.5 parent: 2 - - uid: 1583 + - uid: 2728 components: - type: Transform - pos: -24.5,-1.5 + pos: 7.5,-19.5 parent: 2 - - uid: 1584 + - uid: 2729 components: - type: Transform - pos: -24.5,-0.5 + pos: 6.5,-19.5 parent: 2 - - uid: 1585 + - uid: 2730 components: - type: Transform - pos: -24.5,0.5 + pos: 5.5,-19.5 parent: 2 - - uid: 1586 + - uid: 2731 components: - type: Transform - pos: -24.5,1.5 + pos: 4.5,-19.5 parent: 2 - - uid: 1587 + - uid: 2732 components: - type: Transform - pos: -24.5,2.5 + pos: 3.5,-19.5 parent: 2 - - uid: 1588 + - uid: 2733 components: - type: Transform - pos: -16.5,5.5 + pos: 2.5,-19.5 parent: 2 - - uid: 1589 + - uid: 2734 components: - type: Transform - pos: -16.5,7.5 + pos: -5.5,-19.5 parent: 2 - - uid: 1590 + - uid: 2735 components: - type: Transform - pos: -30.5,2.5 + pos: -5.5,-18.5 parent: 2 - - uid: 1595 + - uid: 2736 components: - type: Transform - pos: 0.5,14.5 + pos: -5.5,-17.5 parent: 2 - - uid: 1596 + - uid: 2737 components: - type: Transform - pos: 0.5,17.5 + pos: -5.5,-16.5 parent: 2 - - uid: 1597 + - uid: 2738 components: - type: Transform - pos: 2.5,14.5 + pos: -5.5,-15.5 parent: 2 - - uid: 1598 + - uid: 2739 components: - type: Transform - pos: 6.5,17.5 + pos: -5.5,-14.5 parent: 2 - - uid: 1599 + - uid: 2740 components: - type: Transform - pos: -14.5,9.5 + pos: -5.5,-13.5 parent: 2 - - uid: 1600 + - uid: 2741 components: - type: Transform - pos: -13.5,9.5 + pos: -5.5,-12.5 parent: 2 - - uid: 1601 + - uid: 2742 components: - type: Transform - pos: -12.5,9.5 + pos: -5.5,-11.5 parent: 2 - - uid: 1602 + - uid: 2743 components: - type: Transform - pos: -11.5,9.5 + pos: -6.5,-11.5 parent: 2 - - uid: 1603 + - uid: 2744 components: - type: Transform - pos: -10.5,9.5 + pos: -7.5,-11.5 parent: 2 - - uid: 1604 + - uid: 2745 components: - type: Transform - pos: -9.5,9.5 + pos: -7.5,-10.5 parent: 2 - - uid: 1605 + - uid: 2746 components: - type: Transform - pos: 1.5,-4.5 + pos: -8.5,-10.5 parent: 2 - - uid: 1606 + - uid: 2747 components: - type: Transform - pos: 1.5,-3.5 + pos: -8.5,-9.5 parent: 2 - - uid: 1607 + - uid: 2748 components: - type: Transform - pos: 1.5,-2.5 + pos: -9.5,-9.5 parent: 2 - - uid: 1608 + - uid: 2749 components: - type: Transform - pos: 2.5,-1.5 + pos: -9.5,-8.5 parent: 2 - - uid: 1609 + - uid: 2750 components: - type: Transform - pos: 1.5,-0.5 + rot: -1.5707963267948966 rad + pos: -14.5,-8.5 parent: 2 - - uid: 1610 + - uid: 2751 components: - type: Transform - pos: 1.5,1.5 + rot: -1.5707963267948966 rad + pos: -11.5,-8.5 parent: 2 - - uid: 1611 + - uid: 2752 components: - type: Transform - pos: 6.5,-1.5 + rot: -1.5707963267948966 rad + pos: -10.5,-8.5 parent: 2 - - uid: 1612 + - uid: 2753 components: - type: Transform - pos: 1.5,6.5 + rot: -1.5707963267948966 rad + pos: -13.5,-8.5 parent: 2 - - uid: 1613 + - uid: 2755 components: - type: Transform - pos: 3.5,-14.5 + pos: -29.5,5.5 parent: 2 - - uid: 1615 + - uid: 2756 components: - type: Transform - pos: 3.5,2.5 + pos: -20.5,-8.5 parent: 2 - - uid: 1617 + - uid: 2757 components: - type: Transform - pos: -13.5,7.5 + pos: -20.5,-7.5 parent: 2 - - uid: 1625 + - uid: 2758 components: - type: Transform - pos: -5.5,12.5 + pos: -21.5,-7.5 parent: 2 - - uid: 1644 + - uid: 2759 components: - type: Transform - pos: -6.5,12.5 + pos: -21.5,-6.5 parent: 2 - - uid: 1658 + - uid: 2760 components: - type: Transform - pos: -7.5,10.5 + pos: -22.5,-5.5 parent: 2 - - uid: 1686 + - uid: 2761 components: - type: Transform - pos: -7.5,7.5 + pos: -22.5,-6.5 parent: 2 - - uid: 1799 + - uid: 2762 components: - type: Transform - pos: 11.5,10.5 + pos: -23.5,-5.5 parent: 2 - - uid: 1889 + - uid: 2763 components: - type: Transform - pos: 13.5,12.5 + pos: -25.5,-5.5 parent: 2 - - uid: 1969 + - uid: 2764 components: - type: Transform - pos: 17.5,11.5 + pos: -24.5,-5.5 parent: 2 - - uid: 2023 + - uid: 2765 components: - type: Transform - pos: 16.5,11.5 + pos: -25.5,-4.5 parent: 2 - - uid: 2405 + - uid: 2766 components: - type: Transform - pos: 13.5,14.5 + pos: -26.5,-4.5 parent: 2 - - uid: 2523 + - uid: 2767 components: - type: Transform - pos: -1.5,-14.5 + pos: -27.5,-4.5 parent: 2 - - uid: 2528 + - uid: 2769 components: - type: Transform - pos: 0.5,-15.5 + pos: -29.5,-4.5 parent: 2 - - uid: 2529 +- proto: GrilleBroken + entities: + - uid: 2662 components: - type: Transform - pos: 0.5,-16.5 + rot: -1.5707963267948966 rad + pos: -4.5,-19.5 parent: 2 - - uid: 2534 + - uid: 2754 components: - type: Transform - pos: -16.5,-5.5 + rot: 1.5707963267948966 rad + pos: 1.5,-19.5 parent: 2 - - uid: 2540 + - uid: 2770 components: - type: Transform - pos: -18.5,-6.5 + rot: -1.5707963267948966 rad + pos: 19.5,12.5 parent: 2 - - uid: 2541 + - uid: 2771 components: - type: Transform - pos: -18.5,-7.5 + rot: 1.5707963267948966 rad + pos: -15.5,-8.5 parent: 2 - - uid: 2542 + - uid: 2772 components: - type: Transform - pos: -16.5,-6.5 + rot: -1.5707963267948966 rad + pos: -19.5,-8.5 parent: 2 - - uid: 2543 + - uid: 2773 components: - type: Transform - pos: -16.5,-7.5 + rot: 3.141592653589793 rad + pos: -28.5,-4.5 parent: 2 - - uid: 2632 + - uid: 2774 components: - type: Transform - pos: -3.5,-16.5 + pos: -28.5,5.5 parent: 2 - - uid: 2634 + - uid: 2775 components: - type: Transform - pos: -3.5,-15.5 + rot: -1.5707963267948966 rad + pos: -5.5,17.5 parent: 2 - - uid: 2635 +- proto: GrilleDiagonal + entities: + - uid: 2720 components: - type: Transform - pos: -3.5,-12.5 + rot: 3.141592653589793 rad + pos: 14.5,-19.5 parent: 2 - - uid: 2636 + - uid: 2768 components: - type: Transform - pos: -3.5,-11.5 + pos: 13.5,-18.5 parent: 2 - proto: Gyroscope entities: @@ -12233,7 +13096,7 @@ entities: fixtures: {} - proto: LockerAtmosphericsFilledHardsuit entities: - - uid: 2499 + - uid: 10 components: - type: Transform pos: 4.5,-11.5 @@ -12259,6 +13122,14 @@ entities: - type: Transform pos: 21.5,-2.5 parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + Oxygen: 1.7459903 + Nitrogen: 6.568249 - proto: LockerChemistryFilled entities: - uid: 1648 @@ -12487,12 +13358,12 @@ entities: - uid: 1676 components: - type: Transform - pos: 7.4046574,-16.509167 + pos: 7.5483866,-14.259644 parent: 2 - uid: 1677 components: - type: Transform - pos: 7.4046574,-16.509167 + pos: 7.505477,-14.627967 parent: 2 - uid: 1684 components: @@ -12519,13 +13390,6 @@ entities: - type: Transform pos: 6.5,-9.5 parent: 2 -- proto: PlasmaCanister - entities: - - uid: 1680 - components: - - type: Transform - pos: 8.5,-10.5 - parent: 2 - proto: PlasmaReinforcedWindowDirectional entities: - uid: 1593 @@ -12959,10 +13823,11 @@ entities: - type: Transform pos: 12.5,5.5 parent: 2 - - uid: 876 + - uid: 142 components: - type: Transform - pos: -3.5,11.5 + rot: 3.141592653589793 rad + pos: -1.5,-18.5 parent: 2 - uid: 1568 components: @@ -13190,17 +14055,16 @@ entities: rot: -1.5707963267948966 rad pos: 19.5,4.5 parent: 2 - - uid: 2520 + - uid: 2409 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-10.5 + pos: -2.5,12.5 parent: 2 - - uid: 2526 + - uid: 2520 components: - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-16.5 + rot: -1.5707963267948966 rad + pos: 0.5,-10.5 parent: 2 - proto: PoweredlightLED entities: @@ -13327,12 +14191,6 @@ entities: rot: 3.141592653589793 rad pos: 2.5,-4.5 parent: 2 - - uid: 1790 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,15.5 - parent: 2 - uid: 1791 components: - type: Transform @@ -13344,6 +14202,12 @@ entities: - type: Transform pos: 4.5,-6.5 parent: 2 + - uid: 2544 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,15.5 + parent: 2 - uid: 2609 components: - type: Transform @@ -13364,11 +14228,6 @@ entities: - type: Transform pos: 4.5,-10.5 parent: 2 - - uid: 1794 - components: - - type: Transform - pos: 7.5,-16.5 - parent: 2 - uid: 1795 components: - type: Transform @@ -13394,6 +14253,12 @@ entities: - type: Transform pos: -1.5,14.5 parent: 2 + - uid: 2325 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 7.5,-14.5 + parent: 2 - proto: Railing entities: - uid: 552 @@ -13488,6 +14353,14 @@ entities: - type: Transform pos: 18.5,10.5 parent: 2 +- proto: RandomVendingDrinks + entities: + - uid: 342 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,-13.5 + parent: 2 - proto: RCD entities: - uid: 1821 @@ -13672,20 +14545,20 @@ entities: parent: 2 - proto: SheetSteel entities: - - uid: 1683 + - uid: 16 components: - type: Transform - pos: -21.64957,-2.504246 + pos: 7.6500483,-14.662421 parent: 2 - - uid: 1844 + - uid: 1403 components: - type: Transform - pos: 7.5296574,-16.509167 + pos: 7.6361594,-14.42631 parent: 2 - - uid: 1845 + - uid: 1683 components: - type: Transform - pos: 7.5296574,-16.509167 + pos: -21.64957,-2.504246 parent: 2 - uid: 1848 components: @@ -13721,16 +14594,6 @@ entities: parent: 2 - proto: ShuttersNormalOpen entities: - - uid: 1849 - components: - - type: Transform - pos: -8.5,2.5 - parent: 2 - - uid: 1850 - components: - - type: Transform - pos: -10.5,2.5 - parent: 2 - uid: 1851 components: - type: Transform @@ -13787,13 +14650,24 @@ entities: rot: 1.5707963267948966 rad pos: 20.5,7.5 parent: 2 -- proto: ShuttersWindowOpen - entities: - - uid: 1857 + - uid: 2629 components: - type: Transform + rot: 3.141592653589793 rad + pos: -8.5,2.5 + parent: 2 + - uid: 2630 + components: + - type: Transform + rot: 3.141592653589793 rad pos: -9.5,2.5 parent: 2 + - uid: 2631 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -10.5,2.5 + parent: 2 - proto: ShuttleWindow entities: - uid: 71 @@ -13806,11 +14680,33 @@ entities: - type: Transform pos: 13.5,12.5 parent: 2 + - uid: 139 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,17.5 + parent: 2 + - uid: 140 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,17.5 + parent: 2 - uid: 356 components: - type: Transform pos: 14.5,2.5 parent: 2 + - uid: 634 + components: + - type: Transform + pos: -18.5,-8.5 + parent: 2 + - uid: 635 + components: + - type: Transform + pos: -16.5,-8.5 + parent: 2 - uid: 913 components: - type: Transform @@ -13821,10 +14717,17 @@ entities: - type: Transform pos: 17.5,11.5 parent: 2 - - uid: 1570 + - uid: 1571 components: - type: Transform - pos: 0.5,-15.5 + rot: 3.141592653589793 rad + pos: -4.5,15.5 + parent: 2 + - uid: 1680 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,16.5 parent: 2 - uid: 1734 components: @@ -13876,16 +14779,6 @@ entities: - type: Transform pos: 12.5,-6.5 parent: 2 - - uid: 1866 - components: - - type: Transform - pos: 0.5,-16.5 - parent: 2 - - uid: 1868 - components: - - type: Transform - pos: -1.5,-14.5 - parent: 2 - uid: 1869 components: - type: Transform @@ -13966,15 +14859,10 @@ entities: - type: Transform pos: 2.5,14.5 parent: 2 - - uid: 1891 - components: - - type: Transform - pos: 8.5,19.5 - parent: 2 - - uid: 1892 + - uid: 1891 components: - type: Transform - pos: -1.5,17.5 + pos: 8.5,19.5 parent: 2 - uid: 1893 components: @@ -14216,25 +15104,25 @@ entities: - type: Transform pos: -7.5,7.5 parent: 2 - - uid: 2126 + - uid: 2129 components: - type: Transform - pos: -16.5,-5.5 + pos: -18.5,-5.5 parent: 2 - uid: 2172 components: - type: Transform pos: -7.5,8.5 parent: 2 - - uid: 2214 + - uid: 2269 components: - type: Transform - pos: -18.5,-5.5 + pos: -7.5,10.5 parent: 2 - - uid: 2269 + - uid: 2299 components: - type: Transform - pos: -7.5,10.5 + pos: -16.5,-5.5 parent: 2 - uid: 2326 components: @@ -14246,20 +15134,22 @@ entities: - type: Transform pos: 13.5,14.5 parent: 2 - - uid: 2527 + - uid: 2451 components: - type: Transform - pos: -3.5,-11.5 + rot: 1.5707963267948966 rad + pos: 7.5,-16.5 parent: 2 - - uid: 2532 + - uid: 2504 components: - type: Transform - pos: -3.5,-15.5 + rot: 3.141592653589793 rad + pos: -1.5,-16.5 parent: 2 - - uid: 2533 + - uid: 2527 components: - type: Transform - pos: -3.5,-16.5 + pos: -3.5,-11.5 parent: 2 - uid: 2537 components: @@ -14286,6 +15176,50 @@ entities: - type: Transform pos: 20.5,7.5 parent: 2 + - uid: 2592 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,-13.5 + parent: 2 + - uid: 2647 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,-18.5 + parent: 2 + - uid: 2648 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,-17.5 + parent: 2 + - uid: 2649 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,-17.5 + parent: 2 + - uid: 2650 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,-18.5 + parent: 2 +- proto: SignalButton + entities: + - uid: 373 + components: + - type: Transform + pos: -4.5,12.5 + parent: 2 + - type: DeviceLinkSource + linkedPorts: + 910: + - - Pressed + - Toggle + - type: Fixtures + fixtures: {} - proto: SignalButtonDirectional entities: - uid: 1946 @@ -14296,13 +15230,13 @@ entities: parent: 2 - type: DeviceLinkSource linkedPorts: - 1850: + 2631: - - Pressed - Toggle - 1857: + 2630: - - Pressed - Toggle - 1849: + 2629: - - Pressed - Toggle - type: Fixtures @@ -14336,20 +15270,6 @@ entities: - Toggle - type: Fixtures fixtures: {} -- proto: SignalSwitchDirectional - entities: - - uid: 1802 - components: - - type: Transform - pos: -3.5,12.5 - parent: 2 - - type: DeviceLinkSource - linkedPorts: - 910: - - - Status - - Toggle - - type: Fixtures - fixtures: {} - proto: SignAtmos entities: - uid: 2296 @@ -14505,10 +15425,11 @@ entities: fixtures: {} - proto: SignShipDock entities: - - uid: 1359 + - uid: 1399 components: - type: Transform - pos: -1.5,-14.5 + rot: 3.141592653589793 rad + pos: -1.5,-16.5 parent: 2 - type: Fixtures fixtures: {} @@ -14530,6 +15451,11 @@ entities: parent: 2 - proto: SinkWide entities: + - uid: 34 + components: + - type: Transform + pos: -5.5,-6.5 + parent: 2 - uid: 1965 components: - type: Transform @@ -14592,7 +15518,7 @@ entities: - uid: 1975 components: - type: Transform - pos: 6.5,-15.5 + pos: 5.5,-10.5 parent: 2 - proto: SpawnMobCorgi entities: @@ -15601,6 +16527,13 @@ entities: - type: Transform pos: -7.5,5.5 parent: 2 +- proto: VendingMachineCart + entities: + - uid: 1427 + components: + - type: Transform + pos: 23.5,-0.5 + parent: 2 - proto: VendingMachineChefvend entities: - uid: 2109 @@ -15629,13 +16562,6 @@ entities: - type: Transform pos: 5.5,7.5 parent: 2 -- proto: VendingMachineCoffee - entities: - - uid: 2113 - components: - - type: Transform - pos: -2.5,-10.5 - parent: 2 - proto: VendingMachineCondiments entities: - uid: 2114 @@ -15651,6 +16577,20 @@ entities: - type: Transform pos: -5.5,5.5 parent: 2 +- proto: VendingMachineDonut + entities: + - uid: 2529 + components: + - type: Transform + pos: -2.5,-10.5 + parent: 2 +- proto: VendingMachineEngiDrobe + entities: + - uid: 2530 + components: + - type: Transform + pos: -18.5,3.5 + parent: 2 - proto: VendingMachineEngivend entities: - uid: 2116 @@ -15660,11 +16600,6 @@ entities: parent: 2 - proto: VendingMachineGames entities: - - uid: 2117 - components: - - type: Transform - pos: 0.5,-13.5 - parent: 2 - uid: 2601 components: - type: Transform @@ -15749,20 +16684,20 @@ entities: parent: 2 - proto: VendingMachineTankDispenserEVA entities: - - uid: 1782 + - uid: 1448 components: - type: Transform - pos: 3.5,-11.5 + pos: -16.5,6.5 parent: 2 - - uid: 2129 + - uid: 1782 components: - type: Transform - pos: -18.5,3.5 + pos: 3.5,-11.5 parent: 2 - - uid: 2130 + - uid: 2535 components: - type: Transform - pos: -1.5,16.5 + pos: -3.5,14.5 parent: 2 - proto: VendingMachineTheater entities: @@ -15797,6 +16732,12 @@ entities: - type: Transform pos: 16.5,2.5 parent: 2 + - uid: 604 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -4.5,14.5 + parent: 2 - uid: 672 components: - type: Transform @@ -15827,6 +16768,12 @@ entities: - type: Transform pos: 18.5,10.5 parent: 2 + - uid: 1402 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,-14.5 + parent: 2 - uid: 1553 components: - type: Transform @@ -16170,7 +17117,8 @@ entities: - uid: 2197 components: - type: Transform - pos: 0.5,-17.5 + rot: 3.141592653589793 rad + pos: -3.5,-16.5 parent: 2 - uid: 2199 components: @@ -16247,6 +17195,12 @@ entities: - type: Transform pos: -15.5,-5.5 parent: 2 + - uid: 2214 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,-15.5 + parent: 2 - uid: 2215 components: - type: Transform @@ -16632,15 +17586,11 @@ entities: - type: Transform pos: -2.5,-1.5 parent: 2 - - uid: 2299 - components: - - type: Transform - pos: -3.5,12.5 - parent: 2 - uid: 2300 components: - type: Transform - pos: -3.5,14.5 + rot: 3.141592653589793 rad + pos: 0.5,-15.5 parent: 2 - uid: 2301 components: @@ -16760,12 +17710,8 @@ entities: - uid: 2324 components: - type: Transform - pos: -3.5,17.5 - parent: 2 - - uid: 2325 - components: - - type: Transform - pos: -3.5,15.5 + rot: 3.141592653589793 rad + pos: 0.5,-16.5 parent: 2 - uid: 2327 components: @@ -17097,11 +18043,6 @@ entities: - type: Transform pos: 1.5,-1.5 parent: 2 - - uid: 2398 - components: - - type: Transform - pos: -3.5,16.5 - parent: 2 - uid: 2399 components: - type: Transform @@ -17132,25 +18073,16 @@ entities: - type: Transform pos: 10.5,8.5 parent: 2 - - uid: 2494 - components: - - type: Transform - pos: 13.5,11.5 - parent: 2 - - uid: 2525 - components: - - type: Transform - pos: -1.5,-17.5 - parent: 2 - - uid: 2531 + - uid: 2453 components: - type: Transform - pos: -3.5,-14.5 + rot: 1.5707963267948966 rad + pos: -4.5,17.5 parent: 2 - - uid: 2545 + - uid: 2494 components: - type: Transform - pos: -3.5,-17.5 + pos: 13.5,11.5 parent: 2 - uid: 2546 components: @@ -17162,40 +18094,62 @@ entities: - type: Transform pos: 20.5,9.5 parent: 2 - - uid: 2625 + - uid: 2593 components: - type: Transform - pos: 22.5,6.5 + rot: 3.141592653589793 rad + pos: 11.5,-17.5 parent: 2 - - uid: 2630 + - uid: 2625 components: - type: Transform - pos: -3.5,-13.5 + pos: 22.5,6.5 parent: 2 - uid: 2633 components: - type: Transform pos: 0.5,-14.5 parent: 2 -- proto: WallShuttleDiagonal - entities: - - uid: 906 + - uid: 2637 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 12.5,17.5 + rot: 3.141592653589793 rad + pos: 12.5,-16.5 parent: 2 - - uid: 2409 + - uid: 2638 components: - type: Transform rot: 3.141592653589793 rad pos: 12.5,-15.5 parent: 2 - - uid: 2410 + - uid: 2644 components: - type: Transform - rot: 3.141592653589793 rad - pos: 11.5,-17.5 + pos: -3.5,-19.5 + parent: 2 + - uid: 2645 + components: + - type: Transform + pos: -1.5,-19.5 + parent: 2 + - uid: 2646 + components: + - type: Transform + pos: 0.5,-19.5 + parent: 2 + - uid: 2659 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -4.5,13.5 + parent: 2 +- proto: WallShuttleDiagonal + entities: + - uid: 906 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 12.5,17.5 parent: 2 - uid: 2411 components: @@ -17214,6 +18168,12 @@ entities: - type: Transform pos: 4.5,18.5 parent: 2 + - uid: 2594 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 12.5,-17.5 + parent: 2 - proto: WallWeaponCapacitorRecharger entities: - uid: 2413 @@ -17258,8 +18218,11 @@ entities: - uid: 2417 components: - type: Transform - pos: -14.5,5.5 + pos: -14.574082,5.461283 parent: 2 + - type: Physics + angularDamping: 0.080000006 + linearDamping: 0.080000006 - proto: WeaponCapacitorRecharger entities: - uid: 2418 @@ -17288,6 +18251,11 @@ entities: parent: 2 - proto: WeldingFuelTankFull entities: + - uid: 202 + components: + - type: Transform + pos: 4.5,-7.5 + parent: 2 - uid: 2422 components: - type: Transform @@ -17490,20 +18458,23 @@ entities: parent: 2 - proto: WindoorServiceLocked entities: - - uid: 2450 + - uid: 2456 components: - type: Transform - pos: -10.5,2.5 + rot: 3.141592653589793 rad + pos: -8.5,2.5 parent: 2 - - uid: 2451 + - uid: 2493 components: - type: Transform - pos: -9.5,2.5 + rot: 3.141592653589793 rad + pos: -10.5,2.5 parent: 2 - - uid: 2452 + - uid: 2499 components: - type: Transform - pos: -8.5,2.5 + rot: 3.141592653589793 rad + pos: -9.5,2.5 parent: 2 - proto: WindowFrostedDirectional entities: @@ -17723,7 +18694,7 @@ entities: rot: 3.141592653589793 rad pos: 25.5,2.5 parent: 2 - - uid: 2493 + - uid: 2632 components: - type: Transform rot: 3.141592653589793 rad From 1a2831de510e7042d672252467fb51c27eeae8bc Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 24 Mar 2026 21:44:17 +0000 Subject: [PATCH 582/603] Automatic changelog update --- Resources/Changelog/Maps.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Resources/Changelog/Maps.yml b/Resources/Changelog/Maps.yml index 2ff406fa521..b971abf6435 100644 --- a/Resources/Changelog/Maps.yml +++ b/Resources/Changelog/Maps.yml @@ -1067,4 +1067,15 @@ id: 131 time: '2026-03-19T07:44:21.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43278 +- author: ProPeperos + changes: + - message: On Reach, added protective grill around the station. + type: Add + - message: On Reach, you can now dock cargo shuttle to cargo dock + type: Tweak + - message: On Reach, added a bunch of needed improvements + type: Tweak + id: 132 + time: '2026-03-24T21:43:08.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43046 Order: 2 From d743763f33b45a00ed6495d3e984693ef010cb11 Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Tue, 24 Mar 2026 22:47:40 +0100 Subject: [PATCH 583/603] Update RT to 274.0.1 (#43337) update RT to 274.0.1 --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index cc5d7503b3e..ae3616336fd 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit cc5d7503b3e2d87a2c9007c003d51246c2b1d450 +Subproject commit ae3616336fded7beefc41c916e44a4b8e204ef3e From db74373e508c3aafc41582ad46492ef4c1fd4f62 Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Wed, 25 Mar 2026 04:59:32 +0100 Subject: [PATCH 584/603] remove all use cases of TimerComponent (#43320) cleanup TimerComponent --- .../Atmos/EntitySystems/FlammableSystem.cs | 46 +++++++++---------- .../PoweredLightVariationPassSystem.cs | 2 +- .../Light/EntitySystems/PoweredLightSystem.cs | 23 ++++------ .../Atmos/Components/FlammableComponent.cs | 30 +++++++++++- .../Light/Components/PoweredLightComponent.cs | 19 ++++++-- .../EntitySystems/SharedPoweredLightSystem.cs | 40 ++++++++++------ Resources/Maps/exo.yml | 1 - Resources/Maps/fland.yml | 3 -- Resources/Maps/oasis.yml | 5 +- Resources/Maps/packed.yml | 1 - Resources/Maps/saltern.yml | 1 - .../Markers/Spawners/Conditional/timed.yml | 3 -- .../Prototypes/Entities/Mobs/NPCs/animals.yml | 2 - 13 files changed, 102 insertions(+), 74 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/FlammableSystem.cs b/Content.Server/Atmos/EntitySystems/FlammableSystem.cs index bd05a2c9ec1..e50f91429ae 100644 --- a/Content.Server/Atmos/EntitySystems/FlammableSystem.cs +++ b/Content.Server/Atmos/EntitySystems/FlammableSystem.cs @@ -22,13 +22,13 @@ using Content.Shared.Toggleable; using Content.Shared.Weapons.Melee.Events; using Content.Shared.FixedPoint; -using Content.Shared.Hands; using Content.Shared.Temperature.Components; using Robust.Server.Audio; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Events; using Robust.Shared.Physics.Systems; using Robust.Shared.Random; +using Robust.Shared.Timing; namespace Content.Server.Atmos.EntitySystems { @@ -49,14 +49,12 @@ public sealed class FlammableSystem : EntitySystem [Dependency] private readonly UseDelaySystem _useDelay = default!; [Dependency] private readonly AudioSystem _audio = default!; [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly IGameTiming _timing = default!; private EntityQuery _inventoryQuery; private EntityQuery _physicsQuery; - // This should probably be moved to the component, requires a rewrite, all fires tick at the same time - private const float UpdateTime = 1f; - - private float _timer; + private static readonly TimeSpan UpdateTime = TimeSpan.FromSeconds(1); private readonly Dictionary, float> _fireEvents = new(); @@ -138,6 +136,8 @@ private void IgniteOnCollide(EntityUid uid, IgniteOnCollideComponent component, private void OnMapInit(EntityUid uid, FlammableComponent component, MapInitEvent args) { + component.NextUpdate = _timing.CurTime + UpdateTime; + // Sets up a fixture for flammable collisions. // TODO: Should this be generalized into a general non-hard 'effects' fixture or something? I can't think of other use cases for it. // This doesn't seem great either (lots more collisions generated) but there isn't a better way to solve it either that I can think of. @@ -146,7 +146,7 @@ private void OnMapInit(EntityUid uid, FlammableComponent component, MapInitEvent return; _fixture.TryCreateFixture(uid, component.FlammableCollisionShape, component.FlammableFixtureID, density: 0, - hard: false, collisionMask: (int) CollisionGroup.FullTileLayer, body: body); + hard: false, collisionMask: (int)CollisionGroup.FullTileLayer, body: body); } private void OnInteractUsing(EntityUid uid, FlammableComponent flammable, InteractUsingEvent args) @@ -365,7 +365,7 @@ private void OnDamageChanged(EntityUid uid, IgniteOnHeatDamageComponent componen if (args.DamageDelta.DamageDict.TryGetValue("Heat", out FixedPoint2 value)) { // Make sure the value is greater than the threshold - if(value <= component.Threshold) + if (value <= component.Threshold) return; // Ignite that sucker @@ -382,21 +382,13 @@ public void Resist(EntityUid uid, if (!Resolve(uid, ref flammable)) return; - if (!flammable.OnFire || !_actionBlockerSystem.CanInteract(uid, null) || flammable.Resisting) + if (!flammable.OnFire || flammable.Resisting || !_actionBlockerSystem.CanInteract(uid, null)) return; - flammable.Resisting = true; + flammable.ResistCompleteTime = _timing.CurTime + flammable.ResistTime; _popup.PopupEntity(Loc.GetString("flammable-component-resist-message"), uid, uid); - _stunSystem.TryUpdateParalyzeDuration(uid, TimeSpan.FromSeconds(2f)); - - // TODO FLAMMABLE: Make this not use TimerComponent... - uid.SpawnTimer(2000, () => - { - flammable.Resisting = false; - flammable.FireStacks -= 1f; - UpdateAppearance(uid, flammable); - }); + _stunSystem.TryUpdateParalyzeDuration(uid, flammable.ResistTime); } public override void Update(float frameTime) @@ -416,17 +408,21 @@ public override void Update(float frameTime) } _fireEvents.Clear(); - _timer += frameTime; - - if (_timer < UpdateTime) - return; - - _timer -= UpdateTime; + var curTime = _timing.CurTime; // TODO: This needs cleanup to take off the crust from TemperatureComponent and shit. var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var flammable, out _)) { + if (curTime < flammable.NextUpdate) + continue; + + flammable.NextUpdate += UpdateTime; + + // Check if we finished resisting. + if (curTime > flammable.ResistCompleteTime) + flammable.ResistCompleteTime = null; + // Slowly dry ourselves off if wet. if (flammable.FireStacks < 0) { @@ -467,7 +463,7 @@ public override void Update(float frameTime) _damageableSystem.TryChangeDamage(uid, flammable.Damage * flammable.FireStacks * ev.Multiplier, interruptsDoAfters: false); - AdjustFireStacks(uid, flammable.FirestackFade * (flammable.Resisting ? 10f : 1f), flammable, flammable.OnFire); + AdjustFireStacks(uid, flammable.FirestackFade * (flammable.Resisting ? 15f : 1f), flammable, flammable.OnFire); } else { diff --git a/Content.Server/GameTicking/Rules/VariationPass/PoweredLightVariationPassSystem.cs b/Content.Server/GameTicking/Rules/VariationPass/PoweredLightVariationPassSystem.cs index dae6981f957..002014ee901 100644 --- a/Content.Server/GameTicking/Rules/VariationPass/PoweredLightVariationPassSystem.cs +++ b/Content.Server/GameTicking/Rules/VariationPass/PoweredLightVariationPassSystem.cs @@ -39,7 +39,7 @@ protected override void ApplyVariation(Entity(uid); _poweredLight.ReplaceSpawnedPrototype((uid, comp), ent.Comp.AgedLightTubePrototype); } else diff --git a/Content.Server/Light/EntitySystems/PoweredLightSystem.cs b/Content.Server/Light/EntitySystems/PoweredLightSystem.cs index e2306f9461f..13ff6ee360d 100644 --- a/Content.Server/Light/EntitySystems/PoweredLightSystem.cs +++ b/Content.Server/Light/EntitySystems/PoweredLightSystem.cs @@ -19,24 +19,19 @@ public override void Initialize() private void OnGhostBoo(EntityUid uid, PoweredLightComponent light, GhostBooEvent args) { - if (light.IgnoreGhostsBoo) - return; + if (light.IgnoreGhostsBoo || HasComp(uid)) + return; // The light is immune or already blinking. // check cooldown first to prevent abuse - var time = GameTiming.CurTime; - if (light.LastGhostBlink != null) - { - if (time <= light.LastGhostBlink + light.GhostBlinkingCooldown) - return; - } + var curTime = GameTiming.CurTime; + if (light.LastGhostBlink != null && curTime <= light.LastGhostBlink + light.GhostBlinkingCooldown) + return; - light.LastGhostBlink = time; + light.LastGhostBlink = curTime; - ToggleBlinkingLight(uid, light, true); - uid.SpawnTimer(light.GhostBlinkingTime, () => - { - ToggleBlinkingLight(uid, light, false); - }); + var blinkingComp = EnsureComp(uid); + blinkingComp.StopBlinkingTime = curTime + light.GhostBlinkingTime; + Dirty(uid, blinkingComp); args.Handled = true; } diff --git a/Content.Shared/Atmos/Components/FlammableComponent.cs b/Content.Shared/Atmos/Components/FlammableComponent.cs index acfb9e25401..aa1d361fa02 100644 --- a/Content.Shared/Atmos/Components/FlammableComponent.cs +++ b/Content.Shared/Atmos/Components/FlammableComponent.cs @@ -3,14 +3,40 @@ using Robust.Shared.GameStates; using Robust.Shared.Physics.Collision.Shapes; using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Atmos.Components { - [RegisterComponent, NetworkedComponent] + [RegisterComponent, NetworkedComponent, AutoGenerateComponentPause] // TODO: Access restriction so that other systems have to use the API to modify fire stacks public sealed partial class FlammableComponent : Component { + /// + /// Is the mob currently resisting being on fire + /// (i.e. throwing themselves onto the ground to extinguish themselves)? + /// + [ViewVariables] + public bool Resisting => ResistCompleteTime.HasValue; + + /// + /// The time stamp at which the active resist will be over and the mob's flame stacks will be reduced. + /// + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] + [AutoPausedField] + public TimeSpan? ResistCompleteTime; + + /// + /// Timestamp for the next update. + /// + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] + [AutoPausedField] + public TimeSpan NextUpdate; + + /// + /// The time resisting being on fire will take. + /// The mob will be paralyzed for this duration. + /// [DataField] - public bool Resisting; + public TimeSpan ResistTime = TimeSpan.FromSeconds(2); [ViewVariables(VVAccess.ReadWrite)] [DataField] diff --git a/Content.Shared/Light/Components/PoweredLightComponent.cs b/Content.Shared/Light/Components/PoweredLightComponent.cs index ad9a9d401c3..d74e4d23227 100644 --- a/Content.Shared/Light/Components/PoweredLightComponent.cs +++ b/Content.Shared/Light/Components/PoweredLightComponent.cs @@ -4,6 +4,7 @@ using Robust.Shared.Containers; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Light.Components { @@ -48,9 +49,6 @@ public sealed partial class PoweredLightComponent : Component [AutoNetworkedField] public bool CurrentLit; - [DataField, AutoNetworkedField] - public bool IsBlinking; - [DataField, AutoNetworkedField, AutoPausedField] public TimeSpan LastThunk; @@ -84,4 +82,19 @@ public sealed partial class PoweredLightComponent : Component [DataField] public TimeSpan UnarmedHitStun = TimeSpan.FromSeconds(5); } + + /// + /// Makes an entity with toggle itself on and off. + /// + [RegisterComponent, NetworkedComponent, AutoGenerateComponentState, AutoGenerateComponentPause] + public sealed partial class BlinkingPoweredLightComponent : Component + { + /// + /// The time at which this component will remove itself, stopping the blinking. + /// If null then this light will keep blinking forever. + /// + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer))] + [AutoNetworkedField, AutoPausedField] + public TimeSpan? StopBlinkingTime; + } } diff --git a/Content.Shared/Light/EntitySystems/SharedPoweredLightSystem.cs b/Content.Shared/Light/EntitySystems/SharedPoweredLightSystem.cs index 9ca0a1821b0..19954969321 100644 --- a/Content.Shared/Light/EntitySystems/SharedPoweredLightSystem.cs +++ b/Content.Shared/Light/EntitySystems/SharedPoweredLightSystem.cs @@ -54,6 +54,9 @@ public override void Initialize() SubscribeLocalEvent(OnDoAfter); SubscribeLocalEvent(HandleLightDamaged); SubscribeLocalEvent(OnEmpPulse); + + SubscribeLocalEvent(OnBlinkingMapInit); + SubscribeLocalEvent(OnBlinkingShutdown); } private void OnInit(EntityUid uid, PoweredLightComponent light, ComponentInit args) @@ -353,20 +356,6 @@ private void OnEmpPulse(EntityUid uid, PoweredLightComponent component, ref EmpP args.Affected = true; } - public void ToggleBlinkingLight(EntityUid uid, PoweredLightComponent light, bool isNowBlinking) - { - if (light.IsBlinking == isNowBlinking) - return; - - light.IsBlinking = isNowBlinking; - Dirty(uid, light); - - if (!TryComp(uid, out var appearance)) - return; - - _appearance.SetData(uid, PoweredLightVisuals.Blinking, isNowBlinking, appearance); - } - private void SetLight(EntityUid uid, bool value, Color? color = null, PoweredLightComponent? light = null, float? radius = null, float? energy = null, float? softness = null) { if (!Resolve(uid, ref light)) @@ -427,4 +416,27 @@ private void OnDoAfter(EntityUid uid, PoweredLightComponent component, DoAfterEv args.Handled = true; } + + private void OnBlinkingMapInit(Entity ent, ref MapInitEvent args) + { + _appearance.SetData(ent, PoweredLightVisuals.Blinking, true); + } + + private void OnBlinkingShutdown(Entity ent, ref ComponentShutdown args) + { + _appearance.SetData(ent, PoweredLightVisuals.Blinking, false); + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + + var curTime = GameTiming.CurTime; + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var blinkingComp)) + { + if (curTime > blinkingComp.StopBlinkingTime) + RemCompDeferred(uid); + } + } } diff --git a/Resources/Maps/exo.yml b/Resources/Maps/exo.yml index fd18e8c77a0..feb26e058e7 100644 --- a/Resources/Maps/exo.yml +++ b/Resources/Maps/exo.yml @@ -92512,7 +92512,6 @@ entities: rot: -1.5707963267948966 rad pos: 21.5,-70.5 parent: 2 - - type: Timer - uid: 9798 components: - type: Transform diff --git a/Resources/Maps/fland.yml b/Resources/Maps/fland.yml index 7aeb86c658b..de377858049 100644 --- a/Resources/Maps/fland.yml +++ b/Resources/Maps/fland.yml @@ -171204,7 +171204,6 @@ entities: parent: 13329 - type: ApcPowerReceiver powerLoad: 0 - - type: Timer - uid: 20036 components: - type: Transform @@ -171213,7 +171212,6 @@ entities: parent: 13329 - type: ApcPowerReceiver powerLoad: 0 - - type: Timer - uid: 20037 components: - type: Transform @@ -171222,7 +171220,6 @@ entities: parent: 13329 - type: ApcPowerReceiver powerLoad: 0 - - type: Timer - uid: 20038 components: - type: Transform diff --git a/Resources/Maps/oasis.yml b/Resources/Maps/oasis.yml index 76f78cdca8c..3fa65bf4ec1 100644 --- a/Resources/Maps/oasis.yml +++ b/Resources/Maps/oasis.yml @@ -153624,7 +153624,7 @@ entities: content: >- To: Mom - From: Elian Voss, + From: Elian Voss, Power Systems Maintenance Tech – Oasis Station Subject: Before I Go Under @@ -156986,13 +156986,11 @@ entities: rot: 3.141592653589793 rad pos: 22.5,4.5 parent: 2 - - type: Timer - uid: 2585 components: - type: Transform pos: 22.5,9.5 parent: 2 - - type: Timer - uid: 2586 components: - type: Transform @@ -157547,7 +157545,6 @@ entities: rot: 3.141592653589793 rad pos: -29.5,39.5 parent: 2 - - type: Timer - uid: 9180 components: - type: Transform diff --git a/Resources/Maps/packed.yml b/Resources/Maps/packed.yml index 8473701559b..a9527ae864e 100644 --- a/Resources/Maps/packed.yml +++ b/Resources/Maps/packed.yml @@ -77244,7 +77244,6 @@ entities: parent: 2 - type: ApcPowerReceiver powerLoad: 0 - - type: Timer - uid: 7568 components: - type: Transform diff --git a/Resources/Maps/saltern.yml b/Resources/Maps/saltern.yml index 1e33a9d347f..c7d3613d858 100644 --- a/Resources/Maps/saltern.yml +++ b/Resources/Maps/saltern.yml @@ -51418,7 +51418,6 @@ entities: parent: 31 - type: ApcPowerReceiver powerLoad: 0 - - type: Timer - uid: 1324 components: - type: Transform diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Conditional/timed.yml b/Resources/Prototypes/Entities/Markers/Spawners/Conditional/timed.yml index 26d4e3f1d28..375acc82681 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Conditional/timed.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Conditional/timed.yml @@ -9,7 +9,6 @@ - sprite: Mobs/Species/Human/parts.rsi state: full - state: ai - - type: Timer - type: TimedSpawner prototypes: - MobSpirate @@ -30,7 +29,6 @@ - sprite: Mobs/Aliens/Xenos/burrower.rsi state: crit - state: ai - - type: Timer - type: TimedSpawner prototypes: - MobXeno @@ -50,7 +48,6 @@ - sprite: Mobs/Animals/mouse.rsi state: icon-2 - state: timed - - type: Timer - type: TimedSpawner prototypes: - MobMouse diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index cf8bb477f0d..1379095e4e4 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -340,7 +340,6 @@ parent: FoodEgg suffix: Fertilized, Chicken components: - - type: Timer - type: TimedSpawner prototypes: - MobChicken @@ -779,7 +778,6 @@ parent: FoodEgg suffix: Fertilized, Duck components: - - type: Timer - type: TimedSpawner prototypes: - MobDuckMallard From 35d97c6be6f30aa022bdd87d85ed79db8509c27b Mon Sep 17 00:00:00 2001 From: Not-A-Chair <106408238+Not-A-Chair@users.noreply.github.com> Date: Wed, 25 Mar 2026 09:21:29 -0400 Subject: [PATCH 585/603] trico no longer heals when mob is crit, and no longer heals rad (#43293) * trico no longer heals when mob is crit, and no longer heals rad Tricordrazine no longer heals when mob is crit and no longer heals radiation damage. * Inverted crit mobstate -> alive mobstate --- Resources/Prototypes/Reagents/medicine.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Reagents/medicine.yml b/Resources/Prototypes/Reagents/medicine.yml index 0a3a5650897..8b4dfbfb877 100644 --- a/Resources/Prototypes/Reagents/medicine.yml +++ b/Resources/Prototypes/Reagents/medicine.yml @@ -817,10 +817,19 @@ Bloodstream: effects: - !type:EvenHealthChange + conditions: + - !type:MobStateCondition # no healing in crit so that dedicated single damage type meds can still have a niche. + mobstate: Alive damage: Brute: -1 Burn: -1 - Toxin: -0.5 + - !type:HealthChange + conditions: + - !type:MobStateCondition + mobstate: Alive + damage: + types: + Poison: -0.5 # Same as what it was before the second coming of offmed - type: reagent id: Lipozine From c57e11760a150bbff6c336b52bda1866da712533 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 25 Mar 2026 13:35:20 +0000 Subject: [PATCH 586/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index d0e828a70c2..8a81e2dd515 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Hitlinemoss - changes: - - message: Autolathes can now print durathread. - type: Add - id: 9076 - time: '2025-10-11T21:46:46.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40837 - author: cloudyias changes: - message: Added the ability for droppers to be printed via autolathes and medfabs @@ -4030,3 +4023,12 @@ id: 9587 time: '2026-03-24T20:25:18.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/41849 +- author: Not-A-Chair + changes: + - message: Tricordrazine no longer heals radiation + type: Tweak + - message: . Tricordrazine no longer works on mobs in crit + type: Tweak + id: 9588 + time: '2026-03-25T13:34:10.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43293 From 744e2984e606df80a78bceb0fe587354b959a871 Mon Sep 17 00:00:00 2001 From: Arcane <234029700+ArcaneValiance@users.noreply.github.com> Date: Wed, 25 Mar 2026 08:22:30 -0500 Subject: [PATCH 587/603] Fixes ambuzol pills. (#43331) Fixes ambuzol pills. pp doo kaka --- Resources/Prototypes/Reagents/medicine.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Resources/Prototypes/Reagents/medicine.yml b/Resources/Prototypes/Reagents/medicine.yml index 8b4dfbfb877..b8f0216e6cf 100644 --- a/Resources/Prototypes/Reagents/medicine.yml +++ b/Resources/Prototypes/Reagents/medicine.yml @@ -663,6 +663,13 @@ - !type:ReagentCondition reagent: Ambuzol min: 10 + Digestion: + effects: + - !type:CureZombieInfection + conditions: + - !type:ReagentCondition + reagent: Ambuzol + min: 10 - type: reagent id: AmbuzolPlus @@ -681,6 +688,14 @@ - !type:ReagentCondition reagent: AmbuzolPlus min: 5 + Digestion: + effects: + - !type:CureZombieInfection + innoculate: true + conditions: + - !type:ReagentCondition + reagent: AmbuzolPlus + min: 5 - type: reagent id: PulpedBananaPeel From 343cc049a3a0bca29edf723c64ad58221076fb0e Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 25 Mar 2026 13:51:03 +0000 Subject: [PATCH 588/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 8a81e2dd515..024213b7f90 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: cloudyias - changes: - - message: Added the ability for droppers to be printed via autolathes and medfabs - type: Add - id: 9077 - time: '2025-10-11T23:15:41.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40074 - author: jessicamaybe changes: - message: Added swabs and an emag inventory to the biogenerator @@ -4032,3 +4025,11 @@ id: 9588 time: '2026-03-25T13:34:10.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/43293 +- author: ArcaneValiance + changes: + - message: Ambuzol and Ambuzol Plus pills now properly cure and prevent infection + respectively. + type: Fix + id: 9589 + time: '2026-03-25T13:49:55.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/43331 From 7e386def1b4fe4c34391a1db756e62dac8b5cf58 Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Wed, 25 Mar 2026 13:13:58 -0400 Subject: [PATCH 589/603] Fix `SharedCrayonSystem` being both `[Virtual]` and `abstract` (#43339) Remove [Virtual] from SharedCrayonSystem --- Content.Shared/Crayon/SharedCrayonSystem.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Content.Shared/Crayon/SharedCrayonSystem.cs b/Content.Shared/Crayon/SharedCrayonSystem.cs index 03113f12404..42da01904aa 100644 --- a/Content.Shared/Crayon/SharedCrayonSystem.cs +++ b/Content.Shared/Crayon/SharedCrayonSystem.cs @@ -1,4 +1,3 @@ namespace Content.Shared.Crayon; -[Virtual] public abstract class SharedCrayonSystem : EntitySystem { } From 8ad1806f1a1a15358e56ebd53e43cd6cc717acb5 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Fri, 27 Mar 2026 02:00:21 +0700 Subject: [PATCH 590/603] tts proto fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Сменил глубину наследования прототипа самого глубокого, чтобы Гамлеты и Карпы не рычали в ТТС. --- Resources/Prototypes/Body/species_base.yml | 1 + Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml | 1 + Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml | 1 + Resources/Prototypes/Entities/Mobs/Player/mothershipcore.yml | 1 + Resources/Prototypes/Entities/Mobs/base.yml | 1 - 5 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Body/species_base.yml b/Resources/Prototypes/Body/species_base.yml index 454b376ad39..26d6533475e 100644 --- a/Resources/Prototypes/Body/species_base.yml +++ b/Resources/Prototypes/Body/species_base.yml @@ -10,6 +10,7 @@ id: BaseSpeciesMob save: false components: + - type: TTS # Corvax-TTS - type: DamageVisuals thresholds: [ 10, 20, 30, 50, 70, 100 ] targetLayers: diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index 82197c4ca30..4246d1a899f 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -6,6 +6,7 @@ save: false abstract: true components: + - type: TTS # Corvax-TTS - type: Reactive groups: Acidic: [Touch] diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml index 8cf988c68ef..d2da91397e8 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml @@ -5,6 +5,7 @@ parent: BaseMob id: MobRobotic components: + - type: TTS # Corvax-TTS - type: Reactive groups: Acidic: [Touch] diff --git a/Resources/Prototypes/Entities/Mobs/Player/mothershipcore.yml b/Resources/Prototypes/Entities/Mobs/Player/mothershipcore.yml index f5897fd2c9d..4740585fe5b 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/mothershipcore.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/mothershipcore.yml @@ -4,6 +4,7 @@ name: mothership core description: A sentient machine that can produce Xenoborgs. Without this the Xenoborgs are doomed. components: + - type: TTS # Corvax-TTS - type: InputMover # needs this to pilot the mothership - type: BlockMovement # They should never be moving! blockInteraction: false diff --git a/Resources/Prototypes/Entities/Mobs/base.yml b/Resources/Prototypes/Entities/Mobs/base.yml index ddb114ff419..c09faf40bdb 100644 --- a/Resources/Prototypes/Entities/Mobs/base.yml +++ b/Resources/Prototypes/Entities/Mobs/base.yml @@ -36,7 +36,6 @@ - type: ContentEye - type: CameraRecoil - type: MindContainer - - type: TTS # Corvax-TTS - type: RequireProjectileTarget active: False From f9645929f8c4617d534bd1cf053f165f27dd98ee Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Fri, 27 Mar 2026 02:27:12 +0700 Subject: [PATCH 591/603] tts proto fix try 2 --- Resources/Prototypes/Body/species_base.yml | 2 +- Resources/Prototypes/Corvax/tts_users.yml | 5 +++++ .../Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml | 3 +-- Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml | 3 +-- Resources/Prototypes/Entities/Mobs/Player/mothershipcore.yml | 3 +-- 5 files changed, 9 insertions(+), 7 deletions(-) create mode 100644 Resources/Prototypes/Corvax/tts_users.yml diff --git a/Resources/Prototypes/Body/species_base.yml b/Resources/Prototypes/Body/species_base.yml index 26d6533475e..eadd6747e9c 100644 --- a/Resources/Prototypes/Body/species_base.yml +++ b/Resources/Prototypes/Body/species_base.yml @@ -7,10 +7,10 @@ - MobPolymorphable - StripableInventoryBase - BaseSpeciesAppearance + - TTS_speaker # Corvax-TTS id: BaseSpeciesMob save: false components: - - type: TTS # Corvax-TTS - type: DamageVisuals thresholds: [ 10, 20, 30, 50, 70, 100 ] targetLayers: diff --git a/Resources/Prototypes/Corvax/tts_users.yml b/Resources/Prototypes/Corvax/tts_users.yml new file mode 100644 index 00000000000..0fa72e3d1fb --- /dev/null +++ b/Resources/Prototypes/Corvax/tts_users.yml @@ -0,0 +1,5 @@ +- type: entity + abstract: true + id: TTS_speaker + components: + - type: TTS diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index 4246d1a899f..dc178e575fc 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -1,12 +1,11 @@ - type: entity - parent: [BaseMob, StripableInventoryBase] + parent: [BaseMob, StripableInventoryBase, TTS_speaker] # Corvax-TTS id: BaseBorgChassisNotIonStormable name: cyborg description: A man-machine hybrid that assists in station activity. They love being asked to state their laws over and over. save: false abstract: true components: - - type: TTS # Corvax-TTS - type: Reactive groups: Acidic: [Touch] diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml index d2da91397e8..adc7a5dfa0f 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml @@ -2,10 +2,9 @@ - type: entity save: false abstract: true - parent: BaseMob + parent: [BaseMob, TTS_speaker] # Corvax-TTS id: MobRobotic components: - - type: TTS # Corvax-TTS - type: Reactive groups: Acidic: [Touch] diff --git a/Resources/Prototypes/Entities/Mobs/Player/mothershipcore.yml b/Resources/Prototypes/Entities/Mobs/Player/mothershipcore.yml index 4740585fe5b..e2e9bf4673f 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/mothershipcore.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/mothershipcore.yml @@ -1,10 +1,9 @@ - type: entity - parent: [ BaseControllable, BaseStructure ] + parent: [ BaseControllable, BaseStructure, TTS_speaker] # Corvax-TTS id: MothershipCore name: mothership core description: A sentient machine that can produce Xenoborgs. Without this the Xenoborgs are doomed. components: - - type: TTS # Corvax-TTS - type: InputMover # needs this to pilot the mothership - type: BlockMovement # They should never be moving! blockInteraction: false From 3d67725a58490866706b029271dc60f2bd765c19 Mon Sep 17 00:00:00 2001 From: SnappingOpossum Date: Fri, 27 Mar 2026 10:35:05 +1100 Subject: [PATCH 592/603] Painting and poster random spawners to entity table spawners (#43270) Painting and poster random spawners to tables --- .../Markers/Spawners/Random/paintings.yml | 58 ++-- .../Markers/Spawners/Random/posters.yml | 293 +++++++++--------- 2 files changed, 185 insertions(+), 166 deletions(-) diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/paintings.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/paintings.yml index ddbb018ff61..f5ddc486acd 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/paintings.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/paintings.yml @@ -5,31 +5,35 @@ components: - type: Sprite layers: - - state: red - - sprite: Structures/Wallmounts/paintings.rsi - state: painting8 - - type: RandomSpawner + - state: red + - sprite: Structures/Wallmounts/paintings.rsi + state: painting8 + - type: EntityTableSpawner offset: 0 - prototypes: - - PaintingPersistenceOfMemory - - PaintingTheSonOfMan - - PaintingTheKiss - - PaintingTheScream - - PaintingTheGreatWave - - PaintingCafeTerraceAtNight - - PaintingNightHawks - - PaintingSkeletonCigarette - - PaintingPrayerHands - - PaintingOldGuitarist - - PaintingOlympia - - PaintingSaturn - - PaintingSleepingGypsy - - PaintingRedBlueYellow - - PaintingHelloWorld - chance: 1 - rarePrototypes: - - PaintingSkeletonBoof - - PaintingEmpty - - PaintingMoony - - PaintingAmogusTriptych - rareChance: 0.01 + table: !type:GroupSelector + children: + - !type:GroupSelector + weight: 99 + children: + - id: PaintingPersistenceOfMemory + - id: PaintingTheSonOfMan + - id: PaintingTheKiss + - id: PaintingTheScream + - id: PaintingTheGreatWave + - id: PaintingCafeTerraceAtNight + - id: PaintingNightHawks + - id: PaintingSkeletonCigarette + - id: PaintingPrayerHands + - id: PaintingOldGuitarist + - id: PaintingOlympia + - id: PaintingSaturn + - id: PaintingSleepingGypsy + - id: PaintingRedBlueYellow + - id: PaintingHelloWorld + - !type:GroupSelector + weight: 1 + children: + - id: PaintingSkeletonBoof + - id: PaintingEmpty + - id: PaintingMoony + - id: PaintingAmogusTriptych diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/posters.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/posters.yml index fdcb17f48c8..fe196ec356a 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/posters.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/posters.yml @@ -1,3 +1,129 @@ +- type: entityTable + id: ContrabandPosterTable + table: !type:GroupSelector + children: + - id: PosterContrabandFreeTonto + - id: PosterContrabandAtmosiaDeclarationIndependence + - id: PosterContrabandFunPolice + - id: PosterContrabandRealExomorph + - id: PosterContrabandSyndicateRecruitment + - id: PosterContrabandClown + - id: PosterContrabandSmoke + - id: PosterContrabandGreyTide + - id: PosterContrabandMissingGloves + - id: PosterContrabandHackingGuide + - id: PosterContrabandRIPBadger + - id: PosterContrabandAmbrosiaVulgaris + - id: PosterContrabandDonutCorp + - id: PosterContrabandEAT + - id: PosterContrabandTools + - id: PosterContrabandPower + - id: PosterContrabandSpaceCube + - id: PosterContrabandCommunistState + - id: PosterContrabandLamarr + - id: PosterContrabandBorgFancy + - id: PosterContrabandBorgFancyv2 + - id: PosterContrabandKosmicheskayaStantsiya + - id: PosterContrabandRebelsUnite + - id: PosterContrabandC20r + - id: PosterContrabandHaveaPuff + - id: PosterContrabandRevolver + - id: PosterContrabandDDayPromo + - id: PosterContrabandSyndicatePistol + - id: PosterContrabandEnergySwords + - id: PosterContrabandRedRum + - id: PosterContrabandCC64KAd + - id: PosterContrabandPunchShit + - id: PosterContrabandTheGriffin + - id: PosterContrabandFreeDrone + - id: PosterContrabandRouny + - id: PosterContrabandRobustSoftdrinks + - id: PosterContrabandShamblersJuice + - id: PosterContrabandPwrGame + - id: PosterContrabandSunkist + - id: PosterContrabandSpaceCola + - id: PosterContrabandSpaceUp + - id: PosterContrabandKudzu + - id: PosterContrabandMaskedMen + - id: PosterContrabandUnreadableAnnouncement + - id: PosterContrabandFreeSyndicateEncryptionKey + - id: PosterContrabandBountyHunters + - id: PosterContrabandTheBigGasTruth + - id: PosterContrabandWehWatches + - id: PosterContrabandVoteWeh + - id: PosterContrabandBeachStarYamamoto + - id: PosterContrabandHighEffectEngineering + - id: PosterContrabandNuclearDeviceInformational + - id: PosterContrabandRevolt + - id: PosterContrabandRise + - id: PosterContrabandMoth + - id: PosterContrabandCybersun600 + - id: PosterContrabandDonk + - id: PosterContrabandEnlistGorlex + - id: PosterContrabandInterdyne + - id: PosterContrabandWaffleCorp + - id: PosterContrabandMissingSpacepen + - id: PosterContrabandExoAcid + - id: PosterContrabandExoRun + - id: PosterContrabandExoChomp + +- type: entityTable + id: LegitPosterTable + table: !type:GroupSelector + children: + - id: PosterLegitHereForYourSafety + - id: PosterLegitNanotrasenLogo + - id: PosterLegitCleanliness + - id: PosterLegitHelpOthers + - id: PosterLegitBuild + - id: PosterLegitBlessThisSpess + - id: PosterLegitScience + - id: PosterLegitIan + - id: PosterLegitObey + - id: PosterLegitWalk + - id: PosterLegitStateLaws + - id: PosterLegitLoveIan + - id: PosterLegitSpaceCops + - id: PosterLegitUeNo + - id: PosterLegitGetYourLEGS + - id: PosterLegitDoNotQuestion + - id: PosterLegitWorkForAFuture + - id: PosterLegitSoftCapPopArt + - id: PosterLegitSafetyInternals + - id: PosterLegitSafetyEyeProtection + - id: PosterLegitSafetyReport + - id: PosterLegitReportCrimes + - id: PosterLegitIonRifle + - id: PosterLegitFoamForceAd + - id: PosterLegitCohibaRobustoAd + - id: PosterLegit50thAnniversaryVintageReprint + - id: PosterLegitFruitBowl + - id: PosterLegitPDAAd + - id: PosterLegitEnlist + - id: PosterLegitNanomichiAd + - id: PosterLegit12Gauge + - id: PosterLegitHighClassMartini + - id: PosterLegitTheOwl + - id: PosterLegitNoERP + - id: PosterLegitCarbonDioxide + - id: PosterLegitDickGumshue + - id: PosterLegitThereIsNoGasGiant + - id: PosterLegitJustAWeekAway + - id: PosterLegitSecWatch + - id: PosterLegitVacation + - id: PosterLegitRenault + - id: PosterLegitNTTGC + - id: PosterLegitSafetyMothDelam + - id: PosterLegitSafetyMothEpi + - id: PosterLegitSafetyMothPiping + - id: PosterLegitSafetyMothMeth + - id: PosterLegitSafetyMothHardhat + - id: PosterLegitSafetyMothSSD + - id: PosterLegitOppenhopper + - id: PosterLegitTyrone + - id: PosterLegitHelio + - id: PosterLegitBotanyFear + - type: entity parent: MarkerBase id: RandomPosterAny @@ -5,18 +131,23 @@ components: - type: Sprite layers: - - state: red - - sprite: Structures/Wallmounts/posters.rsi - state: random_anything - - type: RandomSpawner + - state: red + - sprite: Structures/Wallmounts/posters.rsi + state: random_anything + - type: EntityTableSpawner offset: 0 - prototypes: - - RandomPosterContraband - - RandomPosterLegit - chance: 0.95 - rarePrototypes: - - PosterBroken - rareChance: 0.05 + table: !type:GroupSelector + children: + - id: PosterBroken + weight: 0.05 + - !type:GroupSelector + weight: 0.95 + prob: 0.95 + children: + - !type:NestedSelector + tableId: ContrabandPosterTable + - !type:NestedSelector + tableId: LegitPosterTable - type: entity parent: MarkerBase @@ -25,77 +156,13 @@ components: - type: Sprite layers: - - state: red - - sprite: Structures/Wallmounts/posters.rsi - state: random_contraband - - type: RandomSpawner + - state: red + - sprite: Structures/Wallmounts/posters.rsi + state: random_contraband + - type: EntityTableSpawner offset: 0 - prototypes: - - PosterContrabandFreeTonto - - PosterContrabandAtmosiaDeclarationIndependence - - PosterContrabandFunPolice - - PosterContrabandRealExomorph - - PosterContrabandSyndicateRecruitment - - PosterContrabandClown - - PosterContrabandSmoke - - PosterContrabandGreyTide - - PosterContrabandMissingGloves - - PosterContrabandHackingGuide - - PosterContrabandRIPBadger - - PosterContrabandAmbrosiaVulgaris - - PosterContrabandDonutCorp - - PosterContrabandEAT - - PosterContrabandTools - - PosterContrabandPower - - PosterContrabandSpaceCube - - PosterContrabandCommunistState - - PosterContrabandLamarr - - PosterContrabandBorgFancy - - PosterContrabandBorgFancyv2 - - PosterContrabandKosmicheskayaStantsiya - - PosterContrabandRebelsUnite - - PosterContrabandC20r - - PosterContrabandHaveaPuff - - PosterContrabandRevolver - - PosterContrabandDDayPromo - - PosterContrabandSyndicatePistol - - PosterContrabandEnergySwords - - PosterContrabandRedRum - - PosterContrabandCC64KAd - - PosterContrabandPunchShit - - PosterContrabandTheGriffin - - PosterContrabandFreeDrone - - PosterContrabandRouny - - PosterContrabandRobustSoftdrinks - - PosterContrabandShamblersJuice - - PosterContrabandPwrGame - - PosterContrabandSunkist - - PosterContrabandSpaceCola - - PosterContrabandSpaceUp - - PosterContrabandKudzu - - PosterContrabandMaskedMen - - PosterContrabandUnreadableAnnouncement - - PosterContrabandFreeSyndicateEncryptionKey - - PosterContrabandBountyHunters - - PosterContrabandTheBigGasTruth - - PosterContrabandWehWatches - - PosterContrabandVoteWeh - - PosterContrabandBeachStarYamamoto - - PosterContrabandHighEffectEngineering - - PosterContrabandNuclearDeviceInformational - - PosterContrabandRevolt - - PosterContrabandRise - - PosterContrabandMoth - - PosterContrabandCybersun600 - - PosterContrabandDonk - - PosterContrabandEnlistGorlex - - PosterContrabandInterdyne - - PosterContrabandWaffleCorp - - PosterContrabandMissingSpacepen - - PosterContrabandExoAcid - - PosterContrabandExoRun - - PosterContrabandExoChomp - chance: 1 + table: !type:NestedSelector + tableId: ContrabandPosterTable - type: entity parent: MarkerBase @@ -104,62 +171,10 @@ components: - type: Sprite layers: - - state: red - - sprite: Structures/Wallmounts/posters.rsi - state: random_legit - - type: RandomSpawner + - state: red + - sprite: Structures/Wallmounts/posters.rsi + state: random_legit + - type: EntityTableSpawner offset: 0 - prototypes: - - PosterLegitHereForYourSafety - - PosterLegitNanotrasenLogo - - PosterLegitCleanliness - - PosterLegitHelpOthers - - PosterLegitBuild - - PosterLegitBlessThisSpess - - PosterLegitScience - - PosterLegitIan - - PosterLegitObey - - PosterLegitWalk - - PosterLegitStateLaws - - PosterLegitLoveIan - - PosterLegitSpaceCops - - PosterLegitUeNo - - PosterLegitGetYourLEGS - - PosterLegitDoNotQuestion - - PosterLegitWorkForAFuture - - PosterLegitSoftCapPopArt - - PosterLegitSafetyInternals - - PosterLegitSafetyEyeProtection - - PosterLegitSafetyReport - - PosterLegitReportCrimes - - PosterLegitIonRifle - - PosterLegitFoamForceAd - - PosterLegitCohibaRobustoAd - - PosterLegit50thAnniversaryVintageReprint - - PosterLegitFruitBowl - - PosterLegitPDAAd - - PosterLegitEnlist - - PosterLegitNanomichiAd - - PosterLegit12Gauge - - PosterLegitHighClassMartini - - PosterLegitTheOwl - - PosterLegitNoERP - - PosterLegitCarbonDioxide - - PosterLegitDickGumshue - - PosterLegitThereIsNoGasGiant - - PosterLegitJustAWeekAway - - PosterLegitSecWatch - - PosterLegitVacation - - PosterLegitRenault - - PosterLegitNTTGC - - PosterLegitSafetyMothDelam - - PosterLegitSafetyMothEpi - - PosterLegitSafetyMothPiping - - PosterLegitSafetyMothMeth - - PosterLegitSafetyMothHardhat - - PosterLegitSafetyMothSSD - - PosterLegitOppenhopper - - PosterLegitTyrone - - PosterLegitHelio - - PosterLegitBotanyFear - chance: 1 + table: !type:NestedSelector + tableId: LegitPosterTable From dc9cd07aed57673c7f9d5de71a0ed9b8704771ee Mon Sep 17 00:00:00 2001 From: Pok <113675512+Pok27@users.noreply.github.com> Date: Fri, 27 Mar 2026 14:15:28 +0200 Subject: [PATCH 593/603] =?UTF-8?q?=D0=9F=D1=80=D0=B8=D0=B7=D1=80=D0=B0?= =?UTF-8?q?=D1=87=D0=BD=D1=8B=D0=B5=20=D0=B7=D0=B0=D0=BF=D1=80=D0=B5=D1=82?= =?UTF-8?q?=D1=8B=20=D1=81=D0=BC=D0=BE=D1=82=D1=80=D0=B8=D1=82=D0=B5=D0=BB?= =?UTF-8?q?=D1=8F=20(#3542)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru-RU/corvax/guidebook/SOP/security.ftl | 137 ++++++++++-------- .../Corvax/Guidebook/SOP/Security.xml | 3 - 2 files changed, 73 insertions(+), 67 deletions(-) diff --git a/Resources/Locale/ru-RU/corvax/guidebook/SOP/security.ftl b/Resources/Locale/ru-RU/corvax/guidebook/SOP/security.ftl index 4975cca1047..40773619f72 100644 --- a/Resources/Locale/ru-RU/corvax/guidebook/SOP/security.ftl +++ b/Resources/Locale/ru-RU/corvax/guidebook/SOP/security.ftl @@ -12,7 +12,7 @@ guidebook-SOP-security-general-must = 1. В случае временного отстранения от службы прекратить исполнение текущей задачи и обеспечить скорейшее устранение фактора, повлекшего отстранение. В случае отстранения ввиду нарушения КЗ или СРП сотрудник обязан явиться в бриг в кратчайшие сроки. guidebook-SOP-security-general-right = - 1. Использовать снаряжение, разрешенное в рамках текущего уровня угрозы. + 1. Использовать снаряжение, разрешённое в рамках текущего уровня угрозы. 1. Запросить временный доступ в определенный отдел исключительно с целью проведения следственных мероприятий; глава отдела может дать устное разрешение на допуск. - В [color=dodgerblue][bold]синий код[/bold][/color] с устного разрешения капитана получить [tooltip="guidebook-SOP-security-tooltip-extended-access" text="расширенный доступ"]. - В [color=red][bold]красный код[/bold][/color] по своему запросу получить [tooltip="guidebook-SOP-security-tooltip-extended-access" text="расширенный доступ"]. @@ -36,7 +36,7 @@ guidebook-SOP-HeadOfSecurity-must = 1. Контролировать исполнение процедур службы безопасности сотрудниками отдела, в случае необходимости исполнять процедуры лично либо передать их исполнение уполномоченным лицам. 1. Обеспечивать сохранность диска ядерной авторизации. 1. Организовать патрульные группы для поддержания порядка на станции. - 1. В случае отсутствия в отделе смотрителя, назначить на пост ВрИО помощника смотрителя, а при его отсутствии выбрать сотрудника из числа офицеров или исполнять его обязанности самому. + 1. В случае отсутствия в отделе смотрителя назначить на пост ВрИО помощника смотрителя, а при его отсутствии — выбрать сотрудника из числа офицеров или самому исполнять его обязанности. 1. Назначить кадетов в помощники офицеру, смотрителю, детективу или пилоту; при отсутствии таковых назначить кадетов в помощники себе. guidebook-SOP-HeadOfSecurity-right = @@ -47,7 +47,7 @@ guidebook-SOP-HeadOfSecurity-right = - В [color=dodgerblue][bold]синий код[/bold][/color] передать указанные образцы оружия одному из сотрудников СБ из числа офицеров, пилотов или смотрителю на основании письменного [tooltip="guidebook-SOP-security-tooltip-paper-permit" text="разрешения"]. - В [color=red][bold]красный код[/bold][/color] и выше передать указанные образцы вооружения любому сотруднику СБ на основании устного разрешения. 1. Провести процедуру личного досмотра в отношении любого нижестоящего сотрудника службы безопасности при подозрении в хранении контрабандных предметов или недопустимого для текущего уровня угрозы вооружения. - 1. При отсутствии пилота/помощника смотрителя одобрить перевод на данную должность сотрудника из числа офицеров. + 1. При отсутствии пилота/помощника смотрителя одобрить перевод сотрудника из числа офицеров на данную должность. 1. Временно отстранить от службы любого сотрудника СБ при подтверждении состояния опьянения или при наличии серьезных травм, а также в случае нарушения корпоративного закона или СРП сотрудником. - Отстранение может отменить капитан. - Отстранение прекращается при устранении причины, которой оно было обосновано. @@ -73,7 +73,7 @@ guidebook-SOP-Warden-must = 1. При наличии задержанных лиц проводить процедуры допроса, вынесения вердикта и реализации наказания. - При наличии нескольких задержанных или при необходимости срочной выдачи оружия поручить исполнение нижестоящему сотруднику СБ. 1. Проводить регулярные проверки пермабрига, тюремных камер и карцеров. - 1. Обеспечивать содержание осужденных лиц в соответствии с правилами содержания заключенных. + 1. Обеспечивать содержание осуждённых лиц в соответствии с правилами содержания заключенных. - В случае острой необходимости привлекать к исполнению нижестоящих сотрудников СБ. 1. Обеспечивать поддержание чистоты и порядка в бриге. @@ -90,10 +90,6 @@ guidebook-SOP-Warden-right = 1. В [color=dodgerblue][bold]синий код[/bold][/color] и выше размещать переносные вспышки и развертываемые барьеры в бриге; при снижении уровня угрозы возвращать их в место хранения. 1. Покидать бриг на небольшой срок, оставив за главного помощника, предварительно предупредив ГСБ. -guidebook-SOP-Warden-prohibited = - 1. Выносить вердикт по делам, в которых мерой наказания является временное заключение, без разрешения ГСБ. - 1. Проводить процедуры выдачи и отзыва УДО без разрешения ГСБ. - ## Помощник смотрителя guidebook-SOP-WardenHelper-must = 1. На постоянной основе нести службу в бриге. @@ -119,7 +115,7 @@ guidebook-SOP-Security-must = 1. Поддерживать порядок на станции и среди персонала, предотвращая нарушения закона. guidebook-SOP-Security-right = - 1. Проводить любые процедуры службы безопасности в рамках, установленных внутри самих процедур. + 1. Проводить любые процедуры службы безопасности в рамках, установленных самими процедурами. 1. Изменять статус представителей персонала станции в консоли криминалистических записей с разрешения уполномоченных лиц или при личном свидетельстве нарушения корпоративного закона. 1. С разрешения смотрителя и главы службы безопасности перейти на должность помощника смотрителя в качестве специализации. 1. С разрешения главы службы безопасности пройти обучение навыку пилотирования и перейти на должность пилота в качестве специализации. @@ -218,9 +214,9 @@ guidebook-SOP-security-procedure-weapons-regulation = - Пилот во время проверки каторжного лагеря при наличии в нем заключенных может иметь при себе любое неконтрабандное летальное вооружение при любом уровне угрозы. - Смотритель во время проверки пермабрига, каторжного лагеря и карцера при наличии в них заключенных может иметь при себе любое неконтрабандное летальное вооружение при любом уровне угрозы. - Помощник смотрителя во время проверки пермабрига, каторжного лагеря и карцера при наличии в них заключенных может иметь при себе любое неконтрабандное летальное вооружение при любом уровне угрозы. - - Глава службы безопасности имеет право держать при себе личные энергетический пистолет/револьвер и/или личный энергетический меч. + - Глава службы безопасности имеет право держать при себе личный энергетический пистолет/револьвер и/или личный энергетический меч. 1. Главе службы безопасности разрешается выдать разрешение на ношение оружия гражданским лицам, если на то есть причины. - - Разрешение на оружие без печати главы службы безопасности является недействительными, ношение оружия гражданскими лицами без разрешения является незаконным. + - Разрешение на оружие без печати главы службы безопасности является недействительным, ношение оружия гражданскими лицами без разрешения является незаконным. - Глава службы безопасности может в любой момент времени отозвать разрешение на ношение оружия у любого члена экипажа с изъятием оружия. - Сотрудникам службы безопасности запрещено получать разрешение на ношение оружия. 1. После понижения кода, сотрудники службы безопасности обязаны сдать неразрешённое в текущий код оружие в арсенал в течение 5 минут. @@ -261,7 +257,7 @@ guidebook-SOP-security-procedure-search = guidebook-SOP-security-procedure-search-personal = {"[italic]Личный досмотр — процедура проверки имущества, которое находится в непосредственном распоряжении у обыскиваемого лица.[/italic]"} 1. В ходе данной процедуры досматривающий имеет право осмотреть любое имущество, которое в данный момент имеется в распоряжении досматриваемого. - 1. Сотрудник службы безопасности имеет право выбрать, каким способом будет проводится процедура досмотра: + 1. Сотрудник службы безопасности имеет право выбрать, каким способом будет проводиться процедура досмотра: - Досматриваемый самостоятельно предъявляет необходимое имущество. - Сотрудник службы безопасности принудительно изымает требуемые для досмотра предметы. - В случае оказания сопротивления обыску, допустимо ограничить свободу перемещения обыскиваемого. @@ -297,7 +293,7 @@ guidebook-SOP-security-procedure-search-department = ### Опознание guidebook-SOP-security-procedure-search-identification = - {"[italic]Опознание — процедура, направленная на подтверждение личности определенного лица.[/italic]"} + {"[italic]Опознание — процедура, направленная на подтверждение личности определённого лица.[/italic]"} 1. При проведении опознания сотрудник службы безопасности уполномочен получить у опознаваемого лица образец ДНК и отпечатки пальцев. 1. В рамках процедуры опознания сотрудник службы безопасности имеет право снять любые предметы одежды, скрывающие лицо и прочие отличительные признаки опознаваемого. 1. В случае несоответствия каких-либо данных опознаваемое лицо должно быть задержано и подвергнуто протоколу работы с незарегистрированными лицами. @@ -311,10 +307,10 @@ guidebook-SOP-security-procedure-search-identification = ### Хирургическое вмешательство guidebook-SOP-security-procedure-search-surgical = - {"[italic]Принудительное хирургическое вмешательство — процедура направленная на выявление и удаление незаконных имплантов, а также на внедрение определенных имплантов.[/italic]"} + {"[italic]Принудительное хирургическое вмешательство — процедура, направленная на выявление и удаление незаконных имплантов, а также на внедрение определённых имплантов.[/italic]"} 1. Проведение процедуры возможно исключительно на основании приказа, заверенного печатью главы службы безопасности. 1. Достаточно устного приказа, если на станции действует [color=gold][bold]гамма код[/bold][/color]. - 1. Для проведения хирургических процедур в отношении лиц, осужденных по статьям ХХ5 и ХХ6, разрешение не требуется. + 1. Для проведения хирургических процедур в отношении лиц, осуждённых по статьям ХХ5 и ХХ6, разрешение не требуется. 1. Внедрение импланта "Трекер" лицам, освобожденным по УДО, является добровольной процедурой и не требует приказа. 1. Внедрение импланта "Щит разума" лицам, заступающим на пост ВрИО главы, поступающим на службу в СБ или получающим доступы службы безопасности, является добровольной процедурой и не требует приказа. 1. Проведение данной процедуры возможно непосредственно в месте заключения, лазарете брига или в операционной медицинского отдела. @@ -333,7 +329,7 @@ guidebook-SOP-security-procedure-search-surgical = 1. В отношении врагов корпорации. {"[head=3]Основания для проведения принудительного внедрения импланта «Трекер»[/head]"} - 1. В отношении лиц, приговоренных к пожизненному заключению или каторжным работам. + 1. В отношении лиц, приговорённых к пожизненному заключению или каторжным работам. {"[head=3]Основания для проведения принудительного внедрения импланта «Щит разума»[/head]"} 1. В отношении лиц, подвергнутых гипнозу или иным методам внушения. @@ -348,7 +344,7 @@ guidebook-SOP-security-procedure-investigation-rozysk = {"[italic]Розыск — обвинение какого-либо лица в совершении преступления на основании информации о совершении лицом правонарушения.[/italic]"} 1. Подозреваемый может быть объявлен в розыск при наличии разрешения от смотрителя, главы службы безопасности, капитана. 1. Объявление лица в розыск эквивалентно обвинительному заключению. - 1. Статус подозреваемого в консоли криминальных записей должен быть изменен на "Розыск" с указанием нарушенных статей, состава правонарушения и рекомендаций по задержанию подозреваемого. + 1. Статус подозреваемого в консоли криминальных записей должен быть изменён на "Розыск" с указанием нарушенных статей, состава правонарушения и рекомендаций по задержанию подозреваемого. 1. После объявления в розыск в отношении подозреваемого должна быть инициирована процедура задержания. {"[head=3]Основания для объявления лица в розыск[/head]"} @@ -386,9 +382,9 @@ guidebook-SOP-security-procedure-investigation-interrogation = 1. Процедура допроса может быть пропущена при следующих условиях: - Задержанный полностью признает факт правонарушения и согласен с вменяемым ему наказанием. - На станции действует [color=gold][bold]гамма код[/bold][/color], либо введен режим ЧС, требующий [tooltip="guidebook-SOP-security-procedure-tooltip-emergencies" text="непосредственного участия сотрудников службы безопасности"]. - 1. С момента доставки в бриг у сотрудников службы безопасности имеется 10 минут для вынесения вердикта, всё время, проведенное в бриге сверх данного времени должно быть вычтено из срока заключения, если подозреваемый был признан виновным в правонарушении. - - Сокращение срока не предусмотрено, если итоговый срок заключения, к которому может быть приговорен подозреваемый составляет более 75 минут. - - Суммарное время допроса не может превышать срок, равный 10 минутам в сумме с потенциальным сроком заключения, к которому подозреваемый может быть приговорен при подтверждении его виновности. + 1. С момента доставки в бриг у сотрудников службы безопасности имеется 10 минут для вынесения вердикта, всё время, проведённое в бриге сверх данного времени, должно быть вычтено из срока заключения, если подозреваемый был признан виновным в правонарушении. + - Сокращение срока не предусмотрено, если итоговый срок заключения, к которому может быть приговорён подозреваемый составляет более 75 минут. + - Суммарное время допроса не может превышать срок, равный 10 минутам в сумме с потенциальным сроком заключения, к которому подозреваемый может быть приговорён при подтверждении его виновности. - Если в результате сокращения срока заключения фактический срок заключения равен 0, подозреваемый должен быть признан как отбывший срок заключения в полном объеме. 1. В процедуре допроса принимают участие задержанный, допрашивающий, а также адвокат, свидетели и эксперты, если таковые имеются. - В роли допрашивающего может выступать смотритель, помощник смотрителя, глава службы безопасности, капитан, либо иной сотрудник службы безопасности — с разрешения ранее упомянутых лиц. @@ -415,8 +411,8 @@ guidebook-SOP-security-procedure-investigation-analysis = 1. Для вынесения обвинительного приговора в отношении подозреваемого должны быть собраны доказательства его виновности. 1. При рассмотрении дела учитываются не только прямые, но и косвенные доказательства. 1. Доказательства всегда считаются состоятельными, если подтверждают факт совершения преступления. - 1. Доказательства должны быть логичными и дополнять друг друга. Противоречащие другу другу материалы не могут расцениваться как доказательства. - 1. В случае, если задержанный не признает факт совершения им преступления, собранные доказательства должны явно подтверждать обратное. + 1. Доказательства должны быть логичными и дополнять друг друга. Противоречащие друг другу материалы не могут расцениваться как доказательства. + 1. В случае, если задержанный не признаёт факт совершения им преступления, собранные доказательства должны явно подтверждать обратное. 1. Прямыми доказательствами являются: - Объект или субъект, в отношении которого было совершено преступление. - Вещественные доказательства: орудие преступления, украденное имущество и т.д. @@ -449,10 +445,10 @@ guidebook-SOP-security-procedure-investigation-verdict = 1. иные сотрудники службы безопасности, исключая кадетов. {"[head=3]Уровни наказаний[/head]"} - {"[italic]В зависимости от тяжести совершенного правонарушения, осужденному лицу могут быть назначены различные виды наказания. В зависимости от тяжести наказания, одобрить его вынесение могут лишь лица, занимающие определенные должности.[/italic]"} + {"[italic]В зависимости от тяжести совершенного правонарушения, осуждённому лицу могут быть назначены различные виды наказания. В зависимости от тяжести наказания, одобрить его вынесение могут лишь лица, занимающие определенные должности.[/italic]"} 1. Предупреждение. Вынести приговор о выдаче предупреждения может любой сотрудник службы безопасности, исключая кадетов, а также все вышестоящие лица. 1. Временное заключение. Вынести приговор о временном заключении могут смотритель, либо помощник смотрителя с разрешения самого смотрителя и все вышестоящие лица. - 1. Пожизненное лишение свободны. Вынести приговор о пожизненном лишении свободы могут глава службы безопасности и все вышестоящие лица. + 1. Пожизненное лишение свободы. Вынести приговор о пожизненном лишении свободы могут глава службы безопасности и все вышестоящие лица. 1. Высшая мера наказания. Вынести приговор о высшей мере наказания могут капитан и все вышестоящие лица. {"[head=3]Порядок оглашения вердикта[/head]"} @@ -460,8 +456,8 @@ guidebook-SOP-security-procedure-investigation-verdict = 1. Запрещено выносить вердикт в отношении лиц, обладающих юридической неприкосновенностью, до момента ее лишения. 1. Вынести вердикт о наказании имеет право лишь лицо, наделенное правом вынесения вердикта соответствующего уровня. - В случаях ожидания вердикта о пожизненном заключении или казни, задержанное лицо может быть переведено в одиночную камеру или пермабриг на весь срок ожидания вердикта. - 1. При вынесении вердикта, оглашающий его сотрудник должен сообщить осужденному о составе совершенного им правонарушения, огласить статьи КЗ, модификаторы, влияющие на срок заключения, а также тип наказания и срок заключения. - 1. После оглашения вердикта приговор вступает в силу и осужденного подвергают вынесенному наказанию. + 1. При вынесении вердикта, оглашающий его сотрудник должен сообщить осуждённому о составе совершенного им правонарушения, огласить статьи КЗ, модификаторы, влияющие на срок заключения, а также тип наказания и срок заключения. + 1. После оглашения вердикта приговор вступает в силу и осуждённого подвергают вынесенному наказанию. - В случае, если задержанный был признан невиновным, он должен быть немедленно освобожден, а все его законное имущество должно быть возвращено. 1. Возможно вынесение вердикта на месте задержания на основании следующих пунктов: - Задержанный полностью признает свою вину. @@ -475,9 +471,9 @@ guidebook-SOP-security-procedure-investigation-implementation = {"[head=3]Предупреждение[/head]"} {"[italic]Порядок работы с лицами, получившими предупреждение.[/italic]"} - 1. После объявления предупреждения, осужденному должны быть возвращено все его законное имущество. - 1. После возврата имущества осужденный должен быть отпущен. - 1. Статус осужденного в консоли криминальных записей должен быть изменен на «Освобождён», а также должна быть добавлена запись о получении предупреждения с указанием статьи, которая была нарушена. + 1. После объявления предупреждения осуждённому должно быть возвращено всё его законное имущество. + 1. После возврата имущества осуждённый должен быть отпущен. + 1. Статус осуждённого в консоли криминальных записей должен быть изменён на «Освобождён», а также должна быть добавлена запись о получении предупреждения с указанием статьи, которая была нарушена. - Рекомендуется дополнительно составить письменный вариант приговора. {"[head=3]Временное заключение[/head]"} @@ -486,47 +482,47 @@ guidebook-SOP-security-procedure-investigation-implementation = - В случаях вандализма и агрессивного поведения со стороны заключенного, он может быть переведен в карцер, но не более, чем на 15 минут. 1. Все имущество заключенного, за исключением гарнитуры, должно быть изъято, заключенному должны быть предоставлены тюремная роба и обувь. - Допускается изъятие гарнитуры, если заключенный использует ее для засорения радиоэфира. - - По усмотрению сотрудника СБ, допускается как добровольная сдача имущества самим осужденным, так и принудительное изъятие вещей. + - По усмотрению сотрудника СБ, допускается как добровольная сдача имущества самим осуждённым, так и принудительное изъятие вещей. - Разрешено не изымать имущество, которое невозможно использовать для побега из места заключения, если срок заключения составляет 15 и менее минут. 1. По запросу заключенного и с одобрения смотрителя, допускается отбывание наказания сроком в 30 и более минут в пределах пермабрига. Заключенный должен быть проинформирован, что в отношении него временно будут работать правила содержания, установленные для пермабрига. - 1. После размещения заключенного в камере, его статус в консоли криминальных записей должен быть установлен на «Арестован», также должна быть добавлена запись, характеризующая тип наказания, нарушенные статьи Корпоративного Закона и срок заключения. + 1. После размещения заключенного в камере его статус в консоли криминальных записей должен быть установлен на «Арестован», также должна быть добавлена запись, характеризующая тип наказания, нарушенные статьи Корпоративного Закона и срок заключения. - Рекомендуется дополнительно составить письменный вариант приговора. - 1. После окончания срока заключения осужденный должен быть освобожден, законное имущество должно быть возвращено, а статус в консоли криминальных записей должен быть изменен на «Освобождён». + 1. После окончания срока заключения осуждённый должен быть освобожден, законное имущество должно быть возвращено, а статус в консоли криминальных записей должен быть изменён на «Освобождён». - Если срок заключения не завершился к моменту прибытия эвакуационного шаттла, то заключенный должен быть конвоирован на шаттл и доставлен на станцию Центрального Командования. {"[head=3]Пожизненное лишение свободы[/head]"} - {"[italic]Порядок работы с лицами, приговоренных к пожизненному решению свободы.[/italic]"} + {"[italic]Порядок работы с лицами, приговорённых к пожизненному лишению свободы.[/italic]"} 1. Осужденный должен быть доставлен в пермабриг. - С одобрения капитана, местом отбывания наказания может быть избрана каторга, в случае ее наличия. - Если в пермабриге содержится три и более заключенных, по решению смотрителя, возможно отбывание наказания в одиночной камере. - В случаях вандализма и агрессивного поведения со стороны заключенного, он может быть переведен в карцер или одиночную камеру. 1. Все имущество заключенного, за исключением гарнитуры, должно быть изъято, заключенному должны быть предоставлены тюремная роба и обувь. - Допускается изъятие гарнитуры, если заключенный использует ее для засорения радиоэфира. - - По усмотрению сотрудника СБ, допускается как добровольная сдача имущества самим осужденным, так и принудительное изъятие вещей. - 1. После размещения заключенного в камере, его статус в консоли криминальных записей должны быть установлен на «Арестован», также должна быть добавлена запись, характеризующая тип наказания и нарушенные статьи корпоративного закона. + - По усмотрению сотрудника СБ, допускается как добровольная сдача имущества самим осуждённым, так и принудительное изъятие вещей. + 1. После размещения заключенного в камере его статус в консоли криминальных записей должен быть установлен на «Арестован», также должна быть добавлена запись, характеризующая тип наказания и нарушенные статьи корпоративного закона. - Глава службы безопасности обязан подготовить письменный вариант приговора. - В условиях [color=red][bold]красного кода[/bold][/color] составление приговора может быть отложено до снижения угрозы. 1. При завершении смены заключенный должен быть конвоирован на эвакуационный шаттл и доставлен на станцию Центрального Командования. {"[head=3]Высшая мера наказания[/head]"} - {"[italic]Порядок работы с лицами, приговоренными к казни или изгнанию.[/italic]"} + {"[italic]Порядок работы с лицами, приговорёнными к казни или изгнанию.[/italic]"} 1. По решению лица, выносящего приговор, мерой наказания могут быть избраны казнь либо изгнание. - - Казнь — санкционированное лишение жизни осужденного одним из [tooltip="guidebook-SOP-security-procedure-tooltip-approved-executions" text="утвержденных NanoTrasen"] методов с последующей утилизацией тела или запретом на клонирование. - - Изгнание — выдворение осужденного на незаселенную планету без возможности возвращения обратно. + - Казнь — санкционированное лишение жизни осуждённого одним из [tooltip="guidebook-SOP-security-procedure-tooltip-approved-executions" text="утвержденных NanoTrasen"] методов с последующей утилизацией тела или запретом на клонирование. + - Изгнание — выдворение осуждённого на незаселенную планету без возможности возвращения обратно. 1. Реализация вердикта возможна лишь при наличии письменного приговора, заверенного печатью уполномоченного лица. - В условиях [color=gold][bold]гамма кода[/bold][/color] возможно исполнение приговора по устному приказу уполномоченного лица, тем не менее, приказ должен быть оформлен письменно в случае снижения угрозы. - 1. Перед реализацией наказания статус заключенного должен быть изменен на «Арестован», дополнительно должны быть указаны тип наказания и нарушенные статьи корпоративного закона. + 1. Перед реализацией наказания статус заключенного должен быть изменён на «Арестован», дополнительно должны быть указаны тип наказания и нарушенные статьи корпоративного закона. 1. До момента исполнения приговора заключенный должен находиться в карцере или одиночной камере как минимум в течение 15 минут. - По личному запросу заключённого ему должна быть предоставлена возможность проведения консультации с АВД продолжительностью до 5 минут. - - В случае совершения приговоренным какого-либо преступления во время ожидания приговора, приговор может быть исполнен немедленно. + - В случае совершения приговорённым какого-либо преступления во время ожидания приговора, приговор может быть исполнен немедленно. - В условиях [color=gold][bold]гамма кода[/bold][/color] исполнение приговора возможно сразу после его оглашения без права на консультацию с АВД. - 1. В случае, если мерой наказания было избрано изгнание, осужденный должен быть доставлен на незаселенную планету в сопровождении минимум двух сотрудников службы безопасности, после чего оставлен на этой планете. Осуждённому должны быть предоставлены лишь тюремная роба и обувь. + 1. В случае, если мерой наказания было избрано изгнание, осуждённый должен быть доставлен на незаселенную планету в сопровождении минимум двух сотрудников службы безопасности, после чего оставлен на этой планете. Осуждённому должны быть предоставлены лишь тюремная роба и обувь. 1. Если мерой наказания избрана казнь, с разрешения капитана заключенному могут быть сделаны следующие предложения: - Последний обед, включающий в себя блюда по выбору заключённого, если это возможно. - Способ казни, если имеется несколько возможных вариантов. - Присутствие священника во время казни. - Последнее слово перед совершением казни. - 1. После исполнения приговора осужденному в консоли криминальных записей требуется добавить запись «Приговор исполнен». + 1. После исполнения приговора осуждённому в консоли криминальных записей требуется добавить запись «Приговор исполнен». - Если приговор не был исполнен до момента прибытия эвакционного шаттла, то заключенный должен быть конвоирован на шаттл и доставлен на станцию Центрального Командования. ## Процедуры изъятия и хранения контрабанды и улик @@ -563,8 +559,8 @@ guidebook-SOP-security-procedure-parole-general = - Должности указаны в соответствии с иерархией от младшей к старшей. Вышестоящее лицо может отозвать УДО в любой момент времени. 1. УДО может быть инициировано по запросу заключенного или АВД либо по инициативе уполномоченного лица. 1. Критерии для предоставления УДО: - - Лицо было осуждено впервые. - - Мера наказания осужденного — временное или пожизненное заключение. + - Лицо было осуждёно впервые. + - Мера наказания осуждённого — временное или пожизненное заключение. - Лицо не нарушало дисциплину в месте заключения. - При несоответствии критериям предоставление УДО возможно лишь на особых условиях. 1. Критерии для отзыва УДО: @@ -574,8 +570,8 @@ guidebook-SOP-security-procedure-parole-general = ### Порядок оформления УДО guidebook-SOP-security-procedure-parole-obtaining = - 1. В случае временного заключения УДО может быть предоставлено без фактического отбывания наказания, при пожизненном наказании осужденный обязан отбыть как минимум 30 минут наказания. - 1. В зависимости от типа наказания, УДО уполномочены оформить: + 1. В случае временного заключения УДО может быть предоставлено без фактического отбывания наказания, при пожизненном наказании осуждённый обязан отбыть как минимум 30 минут наказания. + 1. В зависимости от типа наказания, оформить УДО уполномочены: - При замене временного заключения — смотритель, помощник смотрителя с его разрешения и вышестоящие лица. - При замене пожизненного заключения — ГСБ и вышестоящие лица. - При оформлении УДО на особых условиях — ЦК или магистрат. @@ -597,7 +593,7 @@ guidebook-SOP-security-procedure-parole-obtaining = - По первому требованию сотрудника СБ явиться в бриг. - По первому требованию сотрудника СБ предъявить вещи для личного досмотра. - Прилежно исполнять трудовые обязанности и соблюдать Корпоративный Закон. - 1. После освобождения статус заключенного в консоли криминальных записей должен быть изменен на «Освобожден по УДО», дополнительно должна быть оставлена запись с указанием непогашенного срока заключения. + 1. После освобождения статус заключенного в консоли криминальных записей должен быть изменён на «Освобождён по УДО», дополнительно должна быть оставлена запись с указанием непогашенного срока заключения. 1. Предоставление УДО на особых условиях: - Если заключенный не соответствует стандартным критериям для получения УДО, то данная процедура может быть исполнена лишь по письменному приказу ЦК или магистрата. - Запросить получение УДО на особых условиях могут капитан и АВД. @@ -610,7 +606,7 @@ guidebook-SOP-security-procedure-parole-revoking = - В случае пересмотра решения о предоставлении УДО вышестоящим лицом. - При наличии критериев для отзыва УДО. - В случае введения [color=gold][bold]гамма кода[/bold][/color]. - 1. В случае отзыва УДО, освобожденный должен быть задержан и доставлен в место содержания, его статус должен быть изменен на «Арестован». + 1. В случае отзыва УДО, освобожденный должен быть задержан и доставлен в место содержания, его статус должен быть изменён на «Арестован». 1. В случае, если УДО было отозвано по причине совершения освобожденным преступления, либо освобожденный совершил его при задержании, данное правонарушение рассматривается как новое дело, по итогу его рассмотрения к новому вердикту прибавляется непогашенный срок заключения. - Право на повторное получение УДО утрачивается, если УДО было отозвано по причине нарушения Корпоративного Закона со стороны освобожденного, в иных случаях право на повторное получение УДО остается. 1. Лица, получившие УДО на особых условиях, подлежат задержанию в случае нарушения предписанных условий. @@ -628,11 +624,11 @@ guidebook-SOP-security-procedure-parole-completing = - Изъять у освобожденного тюремную робу, если она была предоставлена. - Организовать процедуру снятия отметки «УДО» из графы должности освобожденного, если такая запись была сделана. - Организовать удаление импланта «трекер», если он был установлен. - 1. При завершении УДО статус освобожденного должен быть изменен на «Освобождён». + 1. При завершении УДО статус освобожденного должен быть изменён на «Освобождён». ## Правила содержания заключенных guidebook-SOP-security-procedure-prisoner = - {"[italic]Заключение — мера наказания, применяемая в отношении осужденных лиц. В зависимости от тяжести правонарушения, осужденный может быть приговорен к временному либо пожизненному заключению. Местами содержания заключенных являются одиночная (либо двухместная) камера, пермабриг, каторга, карцер.[/italic]"} + {"[italic]Заключение — мера наказания, применяемая в отношении осуждённых лиц. В зависимости от тяжести правонарушения, осуждённый может быть приговорён к временному либо пожизненному заключению. Местами содержания заключенных являются одиночная (либо двухместная) камера, пермабриг, каторга, карцер.[/italic]"} ### Общие правила заключения guidebook-SOP-security-procedure-prisoner-general = @@ -644,7 +640,7 @@ guidebook-SOP-security-procedure-prisoner-general = 1. Вне зависимости от места и срока заключения, все имущество заключенного должно быть изъято, кроме следующих случаев: - При временном заключении на срок 15 и менее минут, заключенному могут быть оставлены вещи, которые не могут быть использованы для осуществления побега. - Заключенному должна быть оставлена гарнитура, ее изъятие возможно лишь в случае засорения радиоэфира со стороны заключенного. - - В случае увольнения заключенного с занимаемой должности, из его гарнитуры должны быть извлечены любые ключи шифрования дающие доступ к служебным частотам. + - В случае увольнения заключенного с занимаемой должности, из его гарнитуры должны быть извлечены любые ключи шифрования, дающие доступ к служебным частотам. - Запрещается изъятие предметов, необходимых заключенному для поддержания жизни (прим. баллон азота для воксов). - В случае, если жизненно важный предмет используется для осуществления побега, он может быть изъят, даже если это приведет к гибели заключенного. 1. При совершении заключенным правонарушения непосредственно во время заключения, в отношении него проводится новый следственный процесс. @@ -658,27 +654,27 @@ guidebook-SOP-security-procedure-prisoner-temporary = 1. В случае, если срок временного заключения равен 30 минут, по инициативе заключенного и с одобрения смотрителя, наказание может отбываться в пермабриге. 1. Заключенному может быть выдана временная карта заключенного, прикрепленная к одному из шкафов, если таковые имеются в распоряжении брига. 1. В случае совершения заключенным актов вандализма, попыток побега, либо проявления выраженной агрессии, заключенный может быть переведен в карцер на 15 минут. - - Заключенный подлежит переводу в карцер до момента исполнения вердикта, если в ходе следственных мероприятий по совершенным преступлениям заключенный был приговорен к высшей мере наказания. - - Заключенный подлежит переводу в пермабриг, если в ходе следственных мероприятий по совершенным преступлениям заключенный был приговорен к пожизненному заключению. + - Заключенный подлежит переводу в карцер до момента исполнения вердикта, если в ходе следственных мероприятий по совершенным преступлениям заключенный был приговорён к высшей мере наказания. + - Заключенный подлежит переводу в пермабриг, если в ходе следственных мероприятий по совершенным преступлениям заключенный был приговорён к пожизненному заключению. 1. При завершении смены и прибытии эвакуационного шаттла, заключенный должен быть сопровожден на шаттл, применение наручников и иных средств ограничения подвижности возможно по усмотрению сопровождающего сотрудника СБ. - Все имущество заключенного должно быть доставлено на шаттл, если на станции не введен режим ЧС. - Если на момент стыковки эвакуационного шаттла оставшийся срок заключения составляет менее 5 минут, заключенный подлежит немедленному освобождению. ### Пожизненное заключение guidebook-SOP-security-procedure-prisoner-eternal = - {"[italic]Пожизненное заключение предполагает бессрочное содержание осужденных в пермабриге.[/italic]"} - 1. Рекомендуется содержать в пермабриге не более трех заключенных. При поступлении новых заключенных рекомендуется размещать их в одиночных (двухместных) камерах, при этом в отношении них продолжают работать правила содержания лиц, приговоренных к пожизненному заключению. + {"[italic]Пожизненное заключение предполагает бессрочное содержание осуждённых в пермабриге.[/italic]"} + 1. Рекомендуется содержать в пермабриге не более трех заключенных. При поступлении новых заключенных рекомендуется размещать их в одиночных (двухместных) камерах, при этом в отношении них продолжают работать правила содержания лиц, приговорённых к пожизненному заключению. 1. Заключенному может быть вживлен имплант "Трекер". 1. В случае совершения заключенным актов вандализма, попыток побега, либо проявления выраженной агрессии, заключенный может быть переведен в карцер на 15 минут. - Если оставшийся срок заключения составляет менее 15 минут, содержание в карцере ограничивается этим сроком. - - Заключенный подлежит переводу в карцер до момента исполнения вердикта, если в ходе следственных мероприятий по совершенным преступлениям заключенный был приговорен к высшей мере наказания. + - Заключенный подлежит переводу в карцер до момента исполнения вердикта, если в ходе следственных мероприятий по совершенным преступлениям заключенный был приговорён к высшей мере наказания. 1. При завершении смены и прибытии эвакуационного шаттла, заключенный должен быть сопровожден на шаттл, в отношении заключенного обязательно должны применяться наручники или иные средства ограничения подвижности. - Все имущество заключенного должно быть доставлено на шаттл, если на станции не введен режим ЧС. ### Каторга guidebook-SOP-security-procedure-prisoner-katorga = {"[italic]Каторга - мера пожизненного заключения в строгой изоляции от общества.[/italic]"} - 1. Заключение осужденного на каторге заменяет собой содержание в пермабриге, одобрить перевод на каторгу может капитан станции и иные вышестоящие лица. + 1. Заключение осуждённого на каторге заменяет собой содержание в пермабриге, одобрить перевод на каторгу может капитан станции и иные вышестоящие лица. 1. Заключенному может быть вживлен имплант "Трекер". 1. На спину заключенного каторжного лагеря разрешено надеть шоковый рюкзак. - Шоковый рюкзак может применяться против заключенного в случаях совершения заключенным актов вандализма, попыток побега, либо проявления выраженной агрессии. @@ -686,19 +682,19 @@ guidebook-SOP-security-procedure-prisoner-katorga = 1. В случае совершения заключенным нового правонарушения, вердиктом по которому стала высшая мера наказания, заключенный может быть переведен в карцер, либо ожидать исполнения наказания в каторжном лагере. 1. При завершении смены и прибытии эвакуационного шаттла, заключенный должен быть сопровожден на шаттл, в отношении заключенного обязательно должны применяться наручники или иные средства ограничения подвижности. - Все имущество заключенного должно быть доставлено на шаттл, если на станции не введен режим ЧС. - - Имущество заключенного, приговоренного к высшей мере наказания, транспортируется на шаттл по усмотрению сопровождающего лица. + - Имущество заключенного, приговорённого к высшей мере наказания, транспортируется на шаттл по усмотрению сопровождающего лица. ### Карцер guidebook-SOP-security-procedure-prisoner-cell = {"[italic]Карцер - место, предназначенное для содержания заключенного в особо строгих условиях.[/italic]"} 1. В случае отсутствия на станции обустроенного карцера, вместо него может использоваться одиночная камера или иное помещение брига. При этом в отношении заключенных продолжают работать все правила заключения в карцере. - 1. Лица, приговоренные к высшей мере наказания, содержаться в карцере до момента исполнения приговора. + 1. Лица, приговорённые к высшей мере наказания, содержатся в карцере до момента исполнения приговора. 1. На спину заключенного карцера разрешено надеть шоковый рюкзак. - Шоковый рюкзак может применяться против заключенного в случаях совершения заключенным актов вандализма, попыток побега, либо проявления выраженной агрессии. - Умышленное причинение тяжкого вреда здоровью заключенного недопустимо. 1. При завершении смены и прибытии эвакуационного шаттла, заключенный должен быть сопровожден на шаттл, в отношении заключенного обязательно должны применяться наручники или иные средства ограничения подвижности, рекомендуется надеть шоковый рюкзак. - Все имущество заключенного должно быть доставлено на шаттл, если на станции не введен режим ЧС. - - Имущество заключенного, приговоренного к высшей мере наказания, транспортируется на шаттл по усмотрению сопровождающего лица. + - Имущество заключенного, приговорённого к высшей мере наказания, транспортируется на шаттл по усмотрению сопровождающего лица. ## Уровни Применения Силы guidebook-SOP-security-procedure-force-levels = @@ -801,15 +797,15 @@ guidebook-SOP-security-procedure-force-level-5 = {"[italic]Уничтожение на месте — применение летального вооружения с целью полной нейтрализации противника, и дальнейшим отказом от реанимации и клонирования, пока не будет сказано обратное. Если нейтрализованное существо защищено ОПРС, то в отношении него должен быть составлен отчет о нейтрализации. Уничтожение на месте возможно только в ряде случаев, изложенных ниже.[/italic]"} {"[head=3]Меры воздействия[/head]"} - 1. Использование любого вооружения, разрешенного для текущего уровня угрозы. + 1. Использование любого вооружения, разрешённого для текущего уровня угрозы. {"[head=3]Уничтожению на месте подлежат[/head]"} 1. Неразумные существа, проявляющие агрессивное поведение, либо причиняющие материальный ущерб активам NanoTrasen. 1. [tooltip="guidebook-SOP-security-tooltip-sapient-no-oprs" text="Разумные существа"], представляющие явную угрозу для экипажа станции либо причиняющие серьезный материальный ущерб. 1. Существа, поражённые зомби-вирусом. - 1. Подтвержденные генокрады. + 1. Подтверждённые генокрады. 1. Участники и инициаторы вооружённых мятежей. - 1. Лица, приговоренные к высшей мере наказания, в случае совершения побега. А также лица, стандартное содержание которых является невозможным (например, пользователи уникальных боевых стилей, осуществляющие многократные попытки побега). + 1. Лица, приговорённые к высшей мере наказания, в случае совершения побега. А также лица, стандартное содержание которых является невозможным (например, пользователи уникальных боевых стилей, осуществляющие многократные попытки побега). 1. Любые правонарушители в условиях [color=darkred][bold]дельта кода[/bold][/color]. 1. Наемники, пираты, [tooltip="guidebook-SOP-security-tooltip-aggressive-mage" text="агрессивные пользователи магии"] и иные вооруженные лица и формирования, незаконно находящиеся на [tooltip="guidebook-SOP-security-tooltip-nt-territory" text="территории объекта NanoTrasen"]. @@ -824,7 +820,7 @@ guidebook-SOP-security-procedure-unregistered-protocol = 1. В зависимости от результатов расследования капитан станции может принять следующие меры в отношении задержанного лица: - В случае, если задержанное лицо является врагом корпорации, в отношении него может быть вынесена высшая мера наказания. - В случае отсутствия злого умысла при проникновении на станцию, а также отсутствия признаков враждебной деятельности в отношении NanoTrasen, задержанное лицо может быть принято в состав экипажа станции в качестве пассажира. - - В случае, если мотивы задержанного установить не удалось, либо задержанный не заслуживает доверия, он должен содержаться в пермабриге для дальнейшей доставки на станцию ЦентКома. В отношении данного лица действуют правила содержания для заключенных пермабрига. + - В случае, если мотивы задержанного установить не удалось либо задержанный не заслуживает доверия, он должен содержаться в пермабриге для дальнейшей доставки на станцию ЦентКома. В отношении данного лица действуют правила содержания для заключенных пермабрига. 1. Если незарегистрированное лицо не обладает ОПРС, оно признается собственностью NanoTrasen и подлежит задержанию и сопровождению в научный отдел для дальнейшего изучения. По решению капитана или научного руководителя существо может быть наделено ОПРС. - Любое незарегистрированное лицо без ОПРС, оказывающее сопротивление, но не представляющее значительной угрозы, должно быть подавлено и доставлено в научный отдел. В случае оказания существом активного сопротивления оно подлежит уничтожению на месте. - Любое незарегистрированное лицо без ОПРС, представляющее значительную угрозу для экипажа станции, либо причиняющее значительный ущерб, должно быть уничтожено на месте. @@ -854,3 +850,16 @@ guidebook-SOP-security-tooltip-sapient-no-oprs = Существо, облада guidebook-SOP-security-tooltip-aggressive-mage = Существо, использующее магические способности непосредственно, чтобы нанести вред сотрудникам и/или имуществу станции. guidebook-SOP-security-tooltip-nt-territory = Включает в себя непосредственно сам объект, ближайшее космическое пространство и иные объекты в пределах этого пространства. guidebook-SOP-security-tooltip-unregistered = Существо обладающее ОПРС, не являющееся членом экипажа и проникшее на станцию незаконным способом. +guidebook-SOP-security-procedure-tooltip-emergencies = К ситуациям, требующим прямого участия сотрудников СБ относятся: + - Нападение космического дракона; + - Нападение ядерных оперативников; + - Вспышка зомби-вируса; + - Мятеж. +guidebook-SOP-security-procedure-tooltip-approved-executions = + - Расстрел; + - Электрический стул; + - Смертельная инъекция; + - Газовая ингаляции токсинами; + - Космирование. +guidebook-SOP-security-procedure-tooltip-limited-contraband-use = В интересах следствия ГСБ может одобрить использование контрабандных средств связи или устройств для приобретения контрабанды с целью изучения. +guidebook-SOP-security-procedure-tooltip-previous-levels = Применимо к ситуациям, когда прошлые уровни применения силы применялись неоднократно (не менее трёх различных инструментов в отношении одного нарушителя) и не оказали должного эффекта, нарушители оказывают долгосрочное сопротивление, исчерпывая ресурсы СБ. \ No newline at end of file diff --git a/Resources/ServerInfo/Corvax/Guidebook/SOP/Security.xml b/Resources/ServerInfo/Corvax/Guidebook/SOP/Security.xml index 5e50fff78e8..a78d7f8522c 100644 --- a/Resources/ServerInfo/Corvax/Guidebook/SOP/Security.xml +++ b/Resources/ServerInfo/Corvax/Guidebook/SOP/Security.xml @@ -27,9 +27,6 @@ ### Смотритель имеет право - ### Смотрителю запрещено - - ## СРП Помощника смотрителя ### Помощник смотрителя обязан From 971490e202f9c043463fc649578d094064a086f2 Mon Sep 17 00:00:00 2001 From: Tayrtahn Date: Fri, 27 Mar 2026 12:06:13 -0400 Subject: [PATCH 594/603] Update RT to 275.0.0 (#43357) --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index ae3616336fd..dad56301e11 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit ae3616336fded7beefc41c916e44a4b8e204ef3e +Subproject commit dad56301e115f79f03852e3a8dfe485f0db667c3 From 82d6e3d1bdfb97778646a5cbe2617110f59bbba8 Mon Sep 17 00:00:00 2001 From: _Svist_ <148935188+Svist666s@users.noreply.github.com> Date: Sat, 28 Mar 2026 23:16:06 +0400 Subject: [PATCH 595/603] Cat parts fix (#3544) --- Resources/Prototypes/Body/Species/human.yml | 2 +- .../Entities/Mobs/Customization/Markings/cat_parts.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Body/Species/human.yml b/Resources/Prototypes/Body/Species/human.yml index b569527a610..1f59cbefe57 100644 --- a/Resources/Prototypes/Body/Species/human.yml +++ b/Resources/Prototypes/Body/Species/human.yml @@ -39,7 +39,7 @@ limit: 1 required: false enum.HumanoidVisualLayers.Tail: - limit: 0 + limit: 1 # Corvax-Sponsors required: false enum.HumanoidVisualLayers.Special: limit: 0 diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/cat_parts.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/cat_parts.yml index 10a10579dcb..0bb8493e703 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/cat_parts.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/cat_parts.yml @@ -1,6 +1,6 @@ - type: marking id: CatEars - bodyPart: Special + bodyPart: HeadTop groupWhitelist: [Human] sponsorOnly: true # Corvax-Sponsors coloring: From df287aedd8f27494fe1d94a221d423a875bddde7 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Sun, 29 Mar 2026 03:14:28 +0700 Subject: [PATCH 596/603] upstream proto fix --- Resources/Prototypes/Corvax/Body/Species/ipc.yml | 2 +- .../Entities/Mobs/Customization/Markings/fox_parts.yml | 3 +-- .../Entities/Mobs/Customization/Markings/vulpkanin.yml | 5 ++--- Resources/Prototypes/Entities/Mobs/NPCs/pets.yml | 2 ++ Resources/Prototypes/Entities/Mobs/Player/silicon.yml | 2 ++ 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Resources/Prototypes/Corvax/Body/Species/ipc.yml b/Resources/Prototypes/Corvax/Body/Species/ipc.yml index 652d1e8feca..9354cc2b117 100644 --- a/Resources/Prototypes/Corvax/Body/Species/ipc.yml +++ b/Resources/Prototypes/Corvax/Body/Species/ipc.yml @@ -16,7 +16,7 @@ required: true default: [ IpcOrangeS ] enum.HumanoidVisualLayers.Head: - limit: 0 + limit: 1 required: false enum.HumanoidVisualLayers.LArm: limit: 1 diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/fox_parts.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/fox_parts.yml index f4d654bbb3e..db37a04fc1d 100644 --- a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/fox_parts.yml +++ b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/fox_parts.yml @@ -1,9 +1,8 @@ - type: marking id: FoxEars bodyPart: HeadTop - groupWhitelist: [Human] - sponsorOnly: true # Corvax-Sponsors + sponsorOnly: false # Corvax-Sponsors sprites: - sprite: Corvax/Mobs/Customization/fox_parts.rsi state: ears_fox_outer diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/vulpkanin.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/vulpkanin.yml index c5c67eb078b..38dbead6b79 100644 --- a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/vulpkanin.yml +++ b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/vulpkanin.yml @@ -11,9 +11,8 @@ - type: marking id: FoxTail bodyPart: Tail - groupWhitelist: [Vulpkanin] - sponsorOnly: true # Corvax-Sponsors + sponsorOnly: false # Corvax-Sponsors sprites: - sprite: Corvax/Mobs/Customization/vulpkanin.rsi state: vulp_tail @@ -59,7 +58,7 @@ bodyPart: Snout groupWhitelist: [Vulpkanin] - sponsorOnly: true # Corvax-Sponsors + sponsorOnly: false # Corvax-Sponsors sprites: - sprite: Corvax/Mobs/Customization/vulpkanin.rsi state: vulp_face diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml index 3cd12921988..5805c9b8826 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/pets.yml @@ -927,6 +927,8 @@ id: MobPollyParrot description: An expert in quantum cracker theory components: + - type: TTS # Corvax-TTS + voice: Meiow - type: Vocalizer maxVocalizeInterval: 240 # polly is chattier - type: RadioVocalizer diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index feaefd6cbec..3c9b85e197c 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -411,6 +411,8 @@ parent: PositronicBrain categories: [ HideSpawnMenu, DoNotMap ] components: + - type: TTS + voice: Machine_spirit_4 # Corvax-TTS - type: Sprite # Once it's in a core it's pretty much an abstract entity at that point. visible: false From 8e683a9257d967174886c83dbdfa92a583dadc64 Mon Sep 17 00:00:00 2001 From: Pok <113675512+Pok27@users.noreply.github.com> Date: Sat, 28 Mar 2026 23:51:22 +0200 Subject: [PATCH 597/603] =?UTF-8?q?[Wiki]=20=D0=B0=D0=B2=D1=82=D0=BE=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B0=20=D1=81=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B9=D1=82=D0=BE=D0=B2=20(#3541)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/update-wiki-images.yml | 291 ++++++++ .github/workflows/update-wiki.yml | 37 +- .../EntityScreenshotGenerator.cs | 244 +++++++ .../EntityScreenshotRenderService.cs | 674 ++++++++++++++++++ Content.Client/Entry/EntryPoint.cs | 8 + Content.Client/IoC/ClientContentIoC.cs | 4 +- .../GuideGenerator/ComponentJsonGenerator.cs | 19 + .../Corvax/GuideGenerator/EntityEntry.cs | 82 ++- .../EntityNameDuplicatesJsonGenerator.cs | 15 +- .../GuideGenerator/EntityProjectGenerator.cs | 33 + .../Corvax/GuideGenerator/FieldEntry.cs | 29 +- .../Corvax/GuideGenerator/LocJsonGenerator.cs | 1 - .../GuideGenerator/PrototypeJsonGenerator.cs | 82 +++ .../Corvax/GuideGenerator/TextTools.cs | 28 +- .../GuideGenerator/WikiEntityNameGenerator.cs | 11 +- .../Corvax/GuideGenerator/YAMLEntry.cs | 160 +++++ Content.Server/Entry/EntryPoint.cs | 1 + Content.Shared/Corvax/CCVars/CCVars.Wiki.cs | 36 + .../GuideGenerator/EntityProjectHelper.cs | 117 +++ 19 files changed, 1839 insertions(+), 33 deletions(-) create mode 100644 .github/workflows/update-wiki-images.yml create mode 100644 Content.Client/Corvax/ExportSprites/EntityScreenshotGenerator.cs create mode 100644 Content.Client/Corvax/ExportSprites/EntityScreenshotRenderService.cs create mode 100644 Content.Server/Corvax/GuideGenerator/EntityProjectGenerator.cs create mode 100644 Content.Server/Corvax/GuideGenerator/YAMLEntry.cs create mode 100644 Content.Shared/Corvax/CCVars/CCVars.Wiki.cs create mode 100644 Content.Shared/Corvax/GuideGenerator/EntityProjectHelper.cs diff --git a/.github/workflows/update-wiki-images.yml b/.github/workflows/update-wiki-images.yml new file mode 100644 index 00000000000..8851ef9b644 --- /dev/null +++ b/.github/workflows/update-wiki-images.yml @@ -0,0 +1,291 @@ +name: Update Wiki Images + +on: + workflow_dispatch: + push: + branches: [ master, jsondump ] + paths: + - '.github/workflows/update-wiki-images.yml' + - 'Resources/Prototypes/**' + - 'Resources/Textures/**' + - 'RobustToolbox/**' + +jobs: + update-wiki-images: + name: Generate and Upload Entity Images + runs-on: ubuntu-latest + + steps: + - name: Checkout Master + uses: actions/checkout@v4.2.2 + with: + fetch-depth: 0 + + - name: Setup Submodule + run: | + git submodule update --init --recursive + + - name: Pull Engine Updates + uses: space-wizards/submodule-dependency@v0.1.5 + + - name: Update Engine Submodules + run: | + cd RobustToolbox/ + git submodule update --init --recursive + + - name: Setup .NET Core + uses: actions/setup-dotnet@v4.1.0 + with: + dotnet-version: 10.0.x + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.x' + + - name: Install Linux graphics dependencies + run: | + sudo apt-get update + sudo apt-get install -y xvfb libgl1-mesa-dri libglu1-mesa mesa-utils libopenal1 + + - name: Install Dependencies + run: dotnet restore + + - name: Build Project + run: dotnet build --configuration Release --no-restore /p:WarningsAsErrors=nullable /m + + - name: Generate entity images + continue-on-error: true + shell: bash + env: + LIBGL_ALWAYS_SOFTWARE: "1" + MESA_GL_VERSION_OVERRIDE: "3.3" + MESA_GLSL_VERSION_OVERRIDE: "330" + SDL_AUDIODRIVER: "dummy" + run: | + set -euo pipefail + xvfb-run -a dotnet ./bin/Content.Client/Content.Client.dll --self-contained \ + --cvar autogen.entity_screenshot.enabled=true \ + --cvar audio.interface_volume=0 \ + --cvar ambience.lobby_music_enabled=false \ + --cvar audio.admin_sounds_enabled=false \ + --cvar audio.bwoink_sound_enabled=false \ + --cvar interface.click_sound='' \ + --cvar interface.hover_sound='' + + - name: Build animated PNGs + continue-on-error: true + shell: bash + run: | + set -euo pipefail + + python -m pip install --disable-pip-version-check pillow + + python <<'PY' + from pathlib import Path + import shutil + from PIL import Image + + base = Path("./bin/Content.Client/user_data/Textures/Entities") + animated_root = base / "_animated" + + if not animated_root.is_dir(): + print(f"No animated frame directory found at {animated_root}") + raise SystemExit(0) + + for entity_dir in sorted(path for path in animated_root.iterdir() if path.is_dir()): + metadata = entity_dir / "frames.txt" + if not metadata.is_file(): + print(f"Skipping {entity_dir.name}: no frames.txt") + continue + + frames = [] + durations = [] + + with metadata.open("r", encoding="utf-8") as handle: + for raw_line in handle: + line = raw_line.strip() + if not line: + continue + + filename, delay_ms = line.split("\t", 1) + frame_path = entity_dir / filename + if not frame_path.is_file(): + raise FileNotFoundError(f"Missing frame {frame_path}") + + frames.append(frame_path) + durations.append(max(1, int(delay_ms))) + + if not frames: + print(f"Skipping {entity_dir.name}: no frames listed") + continue + + output = base / f"{entity_dir.name}.png" + + if len(frames) == 1: + shutil.copyfile(frames[0], output) + print(f"Copied single-frame animation to {output.name}") + continue + + images = [] + try: + with Image.open(frames[0]) as first_src: + canvas_size = first_src.convert("RGBA").size + + for frame_path in frames: + with Image.open(frame_path) as src: + img = src.convert("RGBA") + if img.size == canvas_size: + images.append(img.copy()) + else: + canvas = Image.new("RGBA", canvas_size, (0, 0, 0, 0)) + canvas.paste(img, (0, 0)) + images.append(canvas) + + first, *rest = images + first.save( + output, + format="PNG", + save_all=True, + append_images=rest, + duration=durations, + loop=0, + disposal=1, + blend=0, + ) + print(f"Built animated PNG {output.name} from {len(frames)} frames") + finally: + for image in images: + image.close() + PY + + - name: Upload entity images to wiki + continue-on-error: true + shell: bash + run: | + set -euo pipefail + + BASE="./bin/Content.Client/user_data/Textures/Entities" + API="${{ secrets.WIKI_ROOT_URL }}/api.php" + USER="${{ secrets.WIKI_BOT_USER }}" + PASS="${{ secrets.WIKI_BOT_PASS }}" + NAMESPACE="${{ secrets.WIKI_BOT_NAMESPACE }}" + + API="$(printf "%s" "$API" | tr -d '\r\n' | sed 's/[[:space:]]*$//')" + USER="$(printf "%s" "$USER" | tr -d '\r\n')" + PASS="$(printf "%s" "$PASS" | tr -d '\r\n')" + NAMESPACE="$(printf "%s" "$NAMESPACE" | tr -d '\r\n')" + + if [[ -n "$NAMESPACE" && "${NAMESPACE: -1}" != "-" ]]; then + NAMESPACE="${NAMESPACE}-" + fi + + if [[ ! -d "$BASE" ]]; then + echo "Entity image directory not found: $BASE" + exit 1 + fi + + normalize_filename() { + awk 'BEGIN { print toupper(substr(ARGV[1],1,1)) substr(ARGV[1],2) }' "$1" + } + + files=() + while IFS= read -r -d '' file; do + files+=("$file") + done < <(find "$BASE" -maxdepth 1 -type f -name '*.png' -print0 | sort -z) + + if (( ${#files[@]} == 0 )); then + echo "No PNG files found in $BASE" + exit 1 + fi + + cookiejar="$(mktemp)" + trap 'rm -f "$cookiejar"' EXIT + + login_token=$(curl -sS -c "$cookiejar" \ + --data "action=query&meta=tokens&type=login&format=json" "$API" | jq -r '.query.tokens.logintoken') + + curl -sS -c "$cookiejar" -b "$cookiejar" \ + --data-urlencode "action=login" \ + --data-urlencode "lgname=$USER" \ + --data-urlencode "lgpassword=$PASS" \ + --data-urlencode "lgtoken=$login_token" \ + --data-urlencode "format=json" \ + "$API" > /dev/null + + token=$(curl -sS -b "$cookiejar" \ + --data "action=query&meta=tokens&format=json" "$API" | jq -r '.query.tokens.csrftoken') + + page_text=$(cat <<'EOF' + == Краткое описание == + {{Файл + |Id = {{safesubst:#replaceset:{{subst:PAGENAME}}|/^(?:[^-]+-)?(.+?)(?:\.[^.]+)?$/=$1}} + |Проект = {{safesubst:#replaceset:{{subst:PAGENAME}}|/^(?:([^-]+)-)?.*$/=\1}} + }} + + == Лицензирование == + {{CC-BY-SA-3.0}} + EOF + ) + + batch_size=50 + + for ((i=0; i<${#files[@]}; i+=batch_size)); do + batch_files=("${files[@]:i:batch_size}") + + titles=$( + for file in "${batch_files[@]}"; do + filename="$(basename "$file")" + filename_norm="$(normalize_filename "$filename")" + if [[ -n "$NAMESPACE" ]]; then + printf 'File:%s%s\n' "$NAMESPACE" "$filename_norm" + else + printf 'File:%s\n' "$filename_norm" + fi + done | paste -sd'|' - + ) + + existing_files=$( + curl -sS -b "$cookiejar" \ + --data-urlencode "action=query" \ + --data-urlencode "format=json" \ + --data-urlencode "titles=$titles" \ + --data-urlencode "prop=imageinfo" \ + --data-urlencode "iiprop=timestamp" \ + "$API" | jq -r ' + .query.pages[] + | select((has("missing") | not) and (.imageinfo? | type == "array")) + | .title + | sub("^[^:]+:"; "") + ' + ) + + for file in "${batch_files[@]}"; do + filename="$(basename "$file")" + filename_norm="$(normalize_filename "$filename")" + if [[ -n "$NAMESPACE" ]]; then + wiki_filename="${NAMESPACE}${filename_norm}" + else + wiki_filename="$filename_norm" + fi + + if grep -Fxq "$wiki_filename" <<< "$existing_files"; then + echo "Skipping existing file: $wiki_filename" + continue + fi + + echo "Uploading File:${wiki_filename}" + + curl -sS -b "$cookiejar" \ + -F "action=upload" \ + -F "createonly=true" \ + -F "filename=${wiki_filename}" \ + -F "comment=Upload $filename via GitHub Actions" \ + -F "text=$page_text" \ + -F "token=$token" \ + -F "ignorewarnings=0" \ + -F "format=json" \ + -F "file=@$file;type=image/png" \ + "$API" | jq -r '.upload.result // .error.info // "null"' || true + done + done diff --git a/.github/workflows/update-wiki.yml b/.github/workflows/update-wiki.yml index 6cc33af1ce7..e40e102e442 100644 --- a/.github/workflows/update-wiki.yml +++ b/.github/workflows/update-wiki.yml @@ -78,7 +78,7 @@ jobs: BASE="./bin/Content.Server/data" ROOT="${{ secrets.WIKI_PAGE_ROOT }}" - MODULE_ROOT="Модуль:IanComradeBot" + NAMESPACE="${{ secrets.WIKI_BOT_NAMESPACE }}" API="${{ secrets.WIKI_ROOT_URL }}/api.php" USER="${{ secrets.WIKI_BOT_USER }}" PASS="${{ secrets.WIKI_BOT_PASS }}" @@ -87,6 +87,13 @@ jobs: USER="$(printf "%s" "$USER" | tr -d '\r\n')" PASS="$(printf "%s" "$PASS" | tr -d '\r\n')" ROOT="$(printf "%s" "$ROOT" | tr -d '\r\n' | sed 's/[[:space:]]*$//')" + NAMESPACE="$(printf "%s" "$NAMESPACE" | tr -d '\r\n')" + + if [[ -n "$NAMESPACE" ]]; then + MODULE_ROOT="Модуль:IanComradeBot/$NAMESPACE" + else + MODULE_ROOT="Модуль:IanComradeBot" + fi cookiejar="$(mktemp)" trap 'rm -f "$cookiejar"' EXIT @@ -252,10 +259,16 @@ jobs: API="${{ secrets.WIKI_ROOT_URL }}/api.php" USER="${{ secrets.WIKI_BOT_USER }}" PASS="${{ secrets.WIKI_BOT_PASS }}" + NAMESPACE="${{ secrets.WIKI_BOT_NAMESPACE }}" API="$(printf "%s" "$API" | tr -d '\r\n')" USER="$(printf "%s" "$USER" | tr -d '\r\n')" PASS="$(printf "%s" "$PASS" | tr -d '\r\n')" + NAMESPACE="$(printf "%s" "$NAMESPACE" | tr -d '\r\n')" + + if [[ -n "$NAMESPACE" && "${NAMESPACE: -1}" != ":" ]]; then + NAMESPACE="${NAMESPACE}:" + fi cookiejar="$(mktemp)" trap 'rm -f "$cookiejar"' EXIT @@ -286,7 +299,17 @@ jobs: for ((i=0; i<${#pages[@]}; i+=batch_size)); do batch=("${pages[@]:i:batch_size}") - titles=$(printf '%s\n' "${batch[@]}" | cut -d'|' -f1 | paste -sd'|' -) + prefix="" + if [[ -n "$NAMESPACE" ]]; then + prefix="$NAMESPACE" + fi + + titles=$( + printf '%s\n' "${batch[@]}" | + cut -d'|' -f1 | + awk -v p="$prefix" '{print p $0}' | + paste -sd'|' - + ) existing_titles=$( curl -sS -b "$cookiejar" \ @@ -295,7 +318,7 @@ jobs: --data-urlencode "titles=$titles" \ "$API" | jq -r ' .query.pages[] - | select(.missing != true) + | select(has("missing") | not) | .title ' ) @@ -304,18 +327,18 @@ jobs: [[ -z "${name:-}" ]] && continue [[ -z "${id:-}" ]] && continue - if grep -Fxq "$name" <<< "$existing_titles"; then - echo "Skipping existing page: $name" + if grep -Fxq "$NAMESPACE$name" <<< "$existing_titles"; then + echo "Skipping existing page: $NAMESPACE$name" continue fi content="{{сущность|$id}}" - echo "Creating page: $name → $id" + echo "Creating page: $NAMESPACE$name → $id" curl -sS -b "$cookiejar" \ --data-urlencode "action=edit" \ --data-urlencode "createonly=true" \ - --data-urlencode "title=$name" \ + --data-urlencode "title=$NAMESPACE$name" \ --data-urlencode "text=$content" \ --data-urlencode "summary=Create $id via GitHub Actions" \ --data-urlencode "token=$token" \ diff --git a/Content.Client/Corvax/ExportSprites/EntityScreenshotGenerator.cs b/Content.Client/Corvax/ExportSprites/EntityScreenshotGenerator.cs new file mode 100644 index 00000000000..b64a9626046 --- /dev/null +++ b/Content.Client/Corvax/ExportSprites/EntityScreenshotGenerator.cs @@ -0,0 +1,244 @@ +using System.Linq; +using System.Threading.Tasks; +using Content.Shared.CCVar; +using Content.Shared.Chemistry; +using Content.Shared.Chemistry.Components.SolutionManager; +using Content.Shared.Corvax.GuideGenerator; +using Content.Client.Gameplay; +using Robust.Client; +using Robust.Client.State; +using Robust.Client.Timing; +using Robust.Shared.Configuration; +using Robust.Shared.ContentPack; +using Robust.Shared.Map; +using Robust.Shared.Prototypes; +using Robust.Shared.Utility; + +namespace Content.Client.Corvax.ExportSprites; + +public sealed class EntityScreenshotGenerator +{ + [Dependency] private readonly IConfigurationManager _cfg = default!; + [Dependency] private readonly IBaseClient _baseClient = default!; + [Dependency] private readonly IEntityManager _entityManager = default!; + [Dependency] private readonly IEntitySystemManager _entitySystemManager = default!; + [Dependency] private readonly EntityScreenshotRenderService _renderService = default!; + [Dependency] private readonly IGameController _gameController = default!; + [Dependency] private readonly IClientGameTiming _gameTiming = default!; + [Dependency] private readonly ILogManager _logManager = default!; + [Dependency] private readonly IMapManager _mapManager = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly IResourceManager _resourceManager = default!; + [Dependency] private readonly IStateManager _stateManager = default!; + + private ISawmill _sawmill = default!; + private bool _started; + private bool _startupRequested; + private bool _pendingStart; + private const uint WarmupFrames = 3; + + public void Initialize() + { + IoCManager.InjectDependencies(this); + _sawmill = _logManager.GetSawmill("entity-screenshot-generator"); + _renderService.Initialize(); + } + + public bool PostInit() + { + if (!_cfg.GetCVar(CCVars.EntityScreenshotGeneratorEnabled)) + return false; + + if (_baseClient.RunLevel == ClientRunLevel.SinglePlayerGame) + { + _pendingStart = true; + return true; + } + + if (_startupRequested) + return true; + + _startupRequested = true; + _baseClient.StartSinglePlayer(); + _stateManager.RequestStateChange(); + _pendingStart = true; + return true; + } + + public void Update() + { + if (!_pendingStart || _started) + return; + + if (_baseClient.RunLevel != ClientRunLevel.SinglePlayerGame) + return; + + TryStart(); + } + + public bool TryStart() + { + if (_started || !_cfg.GetCVar(CCVars.EntityScreenshotGeneratorEnabled)) + return _started; + + try + { + _entitySystemManager.GetEntitySystem(); + } + catch + { + return false; + } + + try + { + _ = RunAsync(); + } + catch (Exception) + { + return false; + } + + _started = true; + _pendingStart = false; + return true; + } + + private async Task RunAsync() + { + var outputDir = new ResPath(_cfg.GetCVar(CCVars.EntityScreenshotOutputPath)); + var wasPaused = _gameTiming.Paused; + + try + { + _gameTiming.Paused = true; + + var failures = new List(); + var exported = 0; + var mapSystem = _entitySystemManager.GetEntitySystem(); + var allowedIds = EntityProjectHelper.GetProjectEntityIds(); + var prototypes = _prototypeManager.EnumeratePrototypes() + .Where(proto => + !proto.Abstract && + proto.Components.ContainsKey("Sprite") && + EntityProjectHelper.MatchesAllowedIds(proto.ID, allowedIds)) + .OrderBy(proto => proto.ID) + .ToList(); + var previewMap = mapSystem.CreateMap(out var mapId); + var previewGrid = _mapManager.CreateGridEntity(mapId); + + if (!_resourceManager.UserData.IsDir(outputDir)) + _resourceManager.UserData.CreateDir(outputDir); + + foreach (var proto in prototypes) + { + EntityUid entity = default; + + try + { + entity = _entityManager.SpawnEntity(proto.ID, new EntityCoordinates(previewGrid.Owner, default)); + + await WaitForEntityAppearanceAsync(entity); + ApplyPrototypeAppearance(entity, proto); + await WaitForEntityAppearanceAsync(entity, 1); + + await _renderService.Export(entity, Direction.South, outputDir / $"{proto.ID}.png"); + exported++; + } + catch (Exception e) + { + failures.Add($"{proto.ID}: {e.Message}"); + _sawmill.Error($"Failed to export {proto.ID}: {e}"); + } + finally + { + if (_entityManager.EntityExists(entity)) + _entityManager.DeleteEntity(entity); + } + } + + if (failures.Count > 0) + WriteFailures(outputDir, failures); + + if (_entityManager.EntityExists(previewGrid)) + _entityManager.DeleteEntity(previewGrid); + + if (_entityManager.EntityExists(previewMap)) + _entityManager.DeleteEntity(previewMap); + + _gameController.Shutdown($"Entity screenshot generation complete. Exported {exported}/{prototypes.Count}"); + } + catch (Exception e) + { + _sawmill.Error($"Entity screenshot generation crashed: {e}"); + WriteFailures(outputDir, new[] { e.ToString() }); + _gameController.Shutdown("Entity screenshot generation failed"); + } + finally + { + _gameTiming.Paused = wasPaused; + } + } + + private void WriteFailures(ResPath outputDir, IEnumerable failures) + { + if (!_resourceManager.UserData.IsDir(outputDir)) + _resourceManager.UserData.CreateDir(outputDir); + + using var writer = _resourceManager.UserData.OpenWriteText(outputDir / "failures.txt"); + foreach (var failure in failures) + { + writer.WriteLine(failure); + } + + writer.Flush(); + } + + private async Task WaitForEntityAppearanceAsync(EntityUid entity) + { + await WaitForEntityAppearanceAsync(entity, WarmupFrames); + } + + private async Task WaitForEntityAppearanceAsync(EntityUid entity, uint frames) + { + if (!_entityManager.TryGetComponent(entity, out MetaDataComponent? metadata)) + return; + + if (!metadata.EntityInitialized) + _entityManager.InitializeAndStartEntity((entity, metadata), doMapInit: true); + + var targetFrame = _gameTiming.CurFrame + frames; + + while (_entityManager.EntityExists(entity) && _gameTiming.CurFrame < targetFrame) + { + await Task.Delay(1); + } + } + + private void ApplyPrototypeAppearance(EntityUid entity, EntityPrototype prototype) + { + if (!_entityManager.TryGetComponent(entity, out AppearanceComponent? appearance)) + return; + + if (!prototype.TryGetComponent(out var manager, _entityManager.ComponentFactory) || + manager.Solutions == null || + manager.Solutions.Count == 0) + { + return; + } + + var solutionEntry = manager.Solutions.FirstOrDefault(entry => entry.Value.Volume > 0); + if (string.IsNullOrEmpty(solutionEntry.Key)) + solutionEntry = manager.Solutions.First(); + + var solution = solutionEntry.Value; + var appearanceSystem = _entitySystemManager.GetEntitySystem(); + + appearanceSystem.SetData(entity, SolutionContainerVisuals.FillFraction, solution.FillFraction, appearance); + appearanceSystem.SetData(entity, SolutionContainerVisuals.Color, solution.GetColor(_prototypeManager), appearance); + appearanceSystem.SetData(entity, SolutionContainerVisuals.SolutionName, solutionEntry.Key, appearance); + + if (solution.GetPrimaryReagentId() is { } reagent) + appearanceSystem.SetData(entity, SolutionContainerVisuals.BaseOverride, reagent.ToString(), appearance); + } +} diff --git a/Content.Client/Corvax/ExportSprites/EntityScreenshotRenderService.cs b/Content.Client/Corvax/ExportSprites/EntityScreenshotRenderService.cs new file mode 100644 index 00000000000..848279b9dbe --- /dev/null +++ b/Content.Client/Corvax/ExportSprites/EntityScreenshotRenderService.cs @@ -0,0 +1,674 @@ +using System.Numerics; +using System.Threading; +using System.Threading.Tasks; +using Robust.Client.GameObjects; +using Robust.Client.Graphics; +using Robust.Client.Utility; +using Robust.Client.UserInterface; +using Robust.Shared.ContentPack; +using Robust.Shared.Timing; +using Robust.Shared.Utility; +using SixLabors.ImageSharp; +using SixLabors.ImageSharp.PixelFormats; +using Color = Robust.Shared.Maths.Color; + +namespace Content.Client.Corvax.ExportSprites; + +public sealed class EntityScreenshotRenderService +{ + [Dependency] private readonly IClyde _clyde = default!; + [Dependency] private readonly IEntityManager _entityManager = default!; + [Dependency] private readonly IEntitySystemManager _entitySystemManager = default!; + [Dependency] private readonly IResourceManager _resourceManager = default!; + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly ILogManager _logManager = default!; + [Dependency] private readonly IUserInterfaceManager _ui = default!; + + private EntityScreenshotRenderControl? _control; + private bool _initialized; + private readonly Dictionary<(ResPath Path, string State), Image> _rsiStateImageCache = new(); + private ISawmill _sawmill = default!; + + public void Initialize() + { + if (_initialized) + return; + + IoCManager.InjectDependencies(this); + _sawmill = _logManager.GetSawmill("corvax.entity-sprite-export"); + _initialized = true; + } + + public void Shutdown() + { + foreach (var image in _rsiStateImageCache.Values) + { + image.Dispose(); + } + + _rsiStateImageCache.Clear(); + + if (_control == null) + return; + + foreach (var queued in _control.QueuedTextures) + { + queued.Tcs.SetCanceled(); + } + + _control.QueuedTextures.Clear(); + _ui.RootControl.RemoveChild(_control); + _control = null; + } + + public async Task Export(EntityUid entity, + Direction direction, + ResPath outputPath, + CancellationToken cancelToken = default) + { + if (!_timing.IsFirstTimePredicted) + return; + + if (!_entityManager.TryGetComponent(entity, out var spriteComp)) + return; + + var renderBounds = GetRenderBounds(spriteComp); + + if (renderBounds.Size.Equals(Vector2i.Zero)) + return; + + var animationLayers = GetAnimatedLayers(spriteComp); + if (animationLayers.Count == 0) + { + DeleteIfExists(GetAnimationDirectory(outputPath)); + await ExportFrame(entity, direction, outputPath, renderBounds, cancelToken); + return; + } + + var animationFrames = BuildAnimationFrames(entity, spriteComp, animationLayers); + if (animationFrames.Count <= 1) + { + DeleteIfExists(GetAnimationDirectory(outputPath)); + await ExportFrame(entity, direction, outputPath, renderBounds, cancelToken); + return; + } + + await ExportAnimation(entity, direction, outputPath, renderBounds, spriteComp, animationLayers, animationFrames, cancelToken); + } + + private void EnsureControlAttached() + { + if (!_initialized) + Initialize(); + + if (_control != null) + return; + + _control = new EntityScreenshotRenderControl(); + _ui.RootControl.AddChild(_control); + } + + private async Task ExportAnimation( + EntityUid entity, + Direction direction, + ResPath outputPath, + SpriteRenderBounds renderBounds, + SpriteComponent spriteComp, + IReadOnlyList animationLayers, + IReadOnlyList animationFrames, + CancellationToken cancelToken) + { + var originalTimes = new float[animationLayers.Count]; + for (var i = 0; i < animationLayers.Count; i++) + { + originalTimes[i] = spriteComp[animationLayers[i].Index].AnimationTime; + } + + var animationDir = GetAnimationDirectory(outputPath); + DeleteIfExists(outputPath); + DeleteIfExists(animationDir); + _resourceManager.UserData.CreateDir(animationDir); + + try + { + foreach (var t in animationFrames) + { + cancelToken.ThrowIfCancellationRequested(); + ApplyAnimationTime(entity, spriteComp, animationLayers, t.RenderTimeSeconds); + var framePath = animationDir / t.FileName; + await ExportFrame(entity, direction, framePath, renderBounds, cancelToken); + } + + WriteAnimationMetadata(animationDir, animationFrames); + } + finally + { + for (var i = 0; i < animationLayers.Count; i++) + { + _entitySystemManager.GetEntitySystem() + .LayerSetAnimationTime((entity, spriteComp), animationLayers[i].Index, originalTimes[i]); + } + } + } + + private async Task ExportFrame( + EntityUid entity, + Direction direction, + ResPath outputPath, + SpriteRenderBounds renderBounds, + CancellationToken cancelToken) + { + if (TryExportFrameDirect(entity, direction, outputPath, renderBounds)) + return; + + EnsureControlAttached(); + + var texture = _clyde.CreateRenderTarget( + renderBounds.Size, + new RenderTargetFormatParameters(RenderTargetColorFormat.Rgba8Srgb), + name: "corvax-entity-export"); + + var tcs = new TaskCompletionSource(cancelToken); + _control!.QueuedTextures.Enqueue((texture, direction, entity, outputPath, tcs)); + await tcs.Task; + } + + private static SpriteRenderBounds GetRenderBounds(SpriteComponent spriteComp) + { + var hasVisibleLayers = false; + var min = Vector2i.Zero; + var max = Vector2i.Zero; + + foreach (var layer in spriteComp.AllLayers) + { + if (layer is not SpriteComponent.Layer spriteLayer || !spriteLayer.Visible) + continue; + + var pixelOffset = ToPixelOffset(spriteComp.Offset + spriteLayer.Offset); + var halfSize = spriteLayer.PixelSize / 2; + var topLeft = pixelOffset - halfSize; + var bottomRight = topLeft + spriteLayer.PixelSize; + + if (!hasVisibleLayers) + { + min = topLeft; + max = bottomRight; + hasVisibleLayers = true; + continue; + } + + min = Vector2i.ComponentMin(min, topLeft); + max = Vector2i.ComponentMax(max, bottomRight); + } + + return !hasVisibleLayers + ? new SpriteRenderBounds(Vector2i.Zero, Vector2i.Zero) + : new SpriteRenderBounds(min, max - min); + } + + private static ResPath GetAnimationDirectory(ResPath outputPath) + { + return outputPath.Directory / "_animated" / outputPath.FilenameWithoutExtension; + } + + private void DeleteIfExists(ResPath path) + { + if (_resourceManager.UserData.Exists(path)) + _resourceManager.UserData.Delete(path); + } + + private static List GetAnimatedLayers(SpriteComponent spriteComp) + { + var result = new List(); + var index = 0; + + foreach (var spriteLayer in spriteComp.AllLayers) + { + if (!spriteLayer.Visible || + !spriteLayer.AutoAnimated || + spriteLayer.ActualRsi == null || + !spriteLayer.ActualRsi.TryGetState(spriteLayer.RsiState, out var state) || + !state.IsAnimated || + state.TotalDelay <= 0f) + { + index++; + continue; + } + + result.Add(new AnimatedLayerInfo(index, state.TotalDelay, state.GetDelays())); + index++; + } + + return result; + } + + private List BuildAnimationFrames( + EntityUid entity, + SpriteComponent spriteComp, + IReadOnlyList animationLayers) + { + const float epsilon = 0.0001f; + const int maxFrames = 512; + + var initialSignature = BuildAnimationSignatureAt(entity, spriteComp, animationLayers, 0f, epsilon); + var frames = new List(); + var currentFrameStart = 0f; + + for (var i = 0; i < maxFrames; i++) + { + var nextDelta = GetNextBoundaryDelta(currentFrameStart, animationLayers, epsilon); + if (nextDelta <= epsilon) + break; + + var renderTime = currentFrameStart + MathF.Min(epsilon, nextDelta * 0.5f); + frames.Add(new AnimationFrameInfo($"{i:D4}.png", renderTime, ToDelayMilliseconds(nextDelta))); + + var nextFrameStart = currentFrameStart + nextDelta; + if (BuildAnimationSignatureAt(entity, spriteComp, animationLayers, nextFrameStart, epsilon) == initialSignature) + break; + + currentFrameStart = nextFrameStart; + } + + ApplyAnimationTime(entity, spriteComp, animationLayers, 0f); + return frames; + } + + private void ApplyAnimationTime( + EntityUid entity, + SpriteComponent spriteComp, + IReadOnlyList animationLayers, + float timeSeconds) + { + var spriteSystem = _entitySystemManager.GetEntitySystem(); + + foreach (var layer in animationLayers) + { + spriteSystem.LayerSetAnimationTime((entity, spriteComp), layer.Index, timeSeconds); + } + } + + private static string BuildAnimationSignature( + SpriteComponent spriteComp, + IReadOnlyList animationLayers) + { + var parts = new string[animationLayers.Count]; + + for (var i = 0; i < animationLayers.Count; i++) + { + var layer = spriteComp[animationLayers[i].Index]; + parts[i] = $"{animationLayers[i].Index}:{layer.Visible}:{layer.RsiState.Name}:{layer.AnimationFrame}"; + } + + return string.Join("|", parts); + } + + private string BuildAnimationSignatureAt( + EntityUid entity, + SpriteComponent spriteComp, + IReadOnlyList animationLayers, + float frameStartTime, + float epsilon) + { + var nextDelta = GetNextBoundaryDelta(frameStartTime, animationLayers, epsilon); + var probeTime = nextDelta > epsilon + ? frameStartTime + MathF.Min(epsilon, nextDelta * 0.5f) + : frameStartTime; + + ApplyAnimationTime(entity, spriteComp, animationLayers, probeTime); + return BuildAnimationSignature(spriteComp, animationLayers); + } + + private static float GetNextBoundaryDelta( + float currentTime, + IReadOnlyList animationLayers, + float epsilon) + { + var nextDelta = float.MaxValue; + var foundDelta = false; + + foreach (var layer in animationLayers) + { + if (layer.TotalDelay <= epsilon) + continue; + + var mod = currentTime % layer.TotalDelay; + var cumulative = 0f; + float? layerDelta = null; + + foreach (var delay in layer.Delays) + { + cumulative += delay; + if (cumulative > mod + epsilon) + { + layerDelta = cumulative - mod; + break; + } + } + + layerDelta ??= layer.TotalDelay - mod; + + if (layerDelta.Value > epsilon && layerDelta.Value < nextDelta) + { + nextDelta = layerDelta.Value; + foundDelta = true; + } + } + + return foundDelta ? nextDelta : 0f; + } + + private static int ToDelayMilliseconds(float seconds) + { + return Math.Max(1, (int)MathF.Round(seconds * 1000f)); + } + + private void WriteAnimationMetadata(ResPath animationDir, IReadOnlyList animationFrames) + { + using var writer = _resourceManager.UserData.OpenWriteText(animationDir / "frames.txt"); + foreach (var frame in animationFrames) + { + writer.WriteLine($"{frame.FileName}\t{frame.DelayMilliseconds}"); + } + + writer.Flush(); + } + + private readonly record struct AnimatedLayerInfo(int Index, float TotalDelay, float[] Delays); + private readonly record struct AnimationFrameInfo(string FileName, float RenderTimeSeconds, int DelayMilliseconds); + private readonly record struct SpriteRenderBounds(Vector2i Min, Vector2i Size); + + private bool TryExportFrameDirect( + EntityUid entity, + Direction direction, + ResPath outputPath, + SpriteRenderBounds renderBounds) + { + if (!_entityManager.TryGetComponent(entity, out var spriteComp)) + return false; + + // Keep the old render-target path for uncommon transformed sprites. + if (spriteComp.Scale != Vector2.One || spriteComp.Rotation != Angle.Zero) + return false; + + var size = renderBounds.Size; + if (size == Vector2i.Zero) + return true; + + using var image = new Image(size.X, size.Y); + var buffer = image.GetPixelSpan(); + + foreach (var baseLayer in spriteComp.AllLayers) + { + if (baseLayer is not SpriteComponent.Layer spriteLayer || !spriteLayer.Visible) + continue; + + if (spriteLayer.Scale != Vector2.One || spriteLayer.Rotation != Angle.Zero) + return false; + + if (!TryGetLayerImage(spriteLayer, direction, out var sourceImage, out var sourceRect)) + continue; + + var drawColor = spriteComp.Color * spriteLayer.Color; + var drawOffset = ToPixelOffset(spriteComp.Offset + spriteLayer.Offset) - renderBounds.Min; + var topLeft = drawOffset - new Vector2i(sourceRect.Width, sourceRect.Height) / 2; + BlitImage(sourceImage, sourceRect, drawColor, buffer, size, topLeft); + } + + if (!_resourceManager.UserData.IsDir(outputPath.Directory)) + _resourceManager.UserData.CreateDir(outputPath.Directory); + + if (_resourceManager.UserData.Exists(outputPath)) + _resourceManager.UserData.Delete(outputPath); + + using var file = _resourceManager.UserData.OpenWrite(outputPath); + image.SaveAsPng(file); + _sawmill.Info($"Saved screenshot to {outputPath} (direct)"); + return true; + } + + private static void BlitImage( + Image sourceImage, + Rectangle sourceRect, + Color modulation, + Span destination, + Vector2i destinationSize, + Vector2i topLeft) + { + var source = sourceImage.GetPixelSpan(); + var sourceWidth = sourceImage.Width; + + for (var y = 0; y < sourceRect.Height; y++) + { + var dstY = topLeft.Y + y; + if (dstY < 0 || dstY >= destinationSize.Y) + continue; + + var srcY = sourceRect.Top + y; + for (var x = 0; x < sourceRect.Width; x++) + { + var dstX = topLeft.X + x; + if (dstX < 0 || dstX >= destinationSize.X) + continue; + + var srcX = sourceRect.Left + x; + var texel = source[srcY * sourceWidth + srcX]; + var src = Modulate(texel, modulation); + if (src.A == 0) + continue; + + ref var dst = ref destination[dstY * destinationSize.X + dstX]; + BlendPixel(ref dst, src); + } + } + } + + private static Rgba32 Modulate(Rgba32 texel, Color modulation) + { + return new Rgba32( + (byte) (texel.R * modulation.RByte / byte.MaxValue), + (byte) (texel.G * modulation.GByte / byte.MaxValue), + (byte) (texel.B * modulation.BByte / byte.MaxValue), + (byte) (texel.A * modulation.AByte / byte.MaxValue)); + } + + private static void BlendPixel(ref Rgba32 destination, Rgba32 source) + { + if (source.A == byte.MaxValue) + { + destination = source; + return; + } + + var srcAlpha = source.A / 255f; + var dstAlpha = destination.A / 255f; + var outAlpha = srcAlpha + dstAlpha * (1f - srcAlpha); + + if (outAlpha <= 0f) + { + destination = default; + return; + } + + var srcR = source.R / 255f; + var srcG = source.G / 255f; + var srcB = source.B / 255f; + var dstR = destination.R / 255f; + var dstG = destination.G / 255f; + var dstB = destination.B / 255f; + + var outR = (srcR * srcAlpha + dstR * dstAlpha * (1f - srcAlpha)) / outAlpha; + var outG = (srcG * srcAlpha + dstG * dstAlpha * (1f - srcAlpha)) / outAlpha; + var outB = (srcB * srcAlpha + dstB * dstAlpha * (1f - srcAlpha)) / outAlpha; + + destination = new Rgba32( + (byte) Math.Clamp((int) MathF.Round(outR * 255f), 0, 255), + (byte) Math.Clamp((int) MathF.Round(outG * 255f), 0, 255), + (byte) Math.Clamp((int) MathF.Round(outB * 255f), 0, 255), + (byte) Math.Clamp((int) MathF.Round(outAlpha * 255f), 0, 255)); + } + + private static Vector2i ToPixelOffset(Vector2 offset) + { + return new Vector2i( + (int) MathF.Round(offset.X * EyeManager.PixelsPerMeter), + (int) MathF.Round(offset.Y * EyeManager.PixelsPerMeter)); + } + + private bool TryGetLayerImage( + SpriteComponent.Layer layer, + Direction direction, + out Image image, + out Rectangle sourceRect) + { + image = default!; + sourceRect = default; + + // Raw texture layers need a separate cache path. Use render target fallback for them. + if (layer.Texture != null) + return false; + + var rsi = layer.ActualRsi; + var stateId = ((ISpriteLayer) layer).RsiState; + if (rsi == null || + !stateId.IsValid || + !rsi.TryGetState(stateId, out var state)) + { + return false; + } + + var rsiPath = rsi.Path; + var stateName = stateId.Name!; + + if (!_rsiStateImageCache.TryGetValue((rsiPath, stateName), out image!)) + { + using var stream = _resourceManager.ContentFileRead(rsiPath / (stateName + ".png")); + image = Image.Load(stream); + _rsiStateImageCache[(rsiPath, stateName)] = image; + } + + var frameWidth = rsi.Size.X; + var frameHeight = rsi.Size.Y; + var statesX = image.Width / frameWidth; + var statesY = image.Height / frameHeight; + var totalFrames = statesX * statesY; + var dirCount = state.RsiDirections switch + { + Robust.Shared.Graphics.RSI.RsiDirectionType.Dir1 => 1, + Robust.Shared.Graphics.RSI.RsiDirectionType.Dir4 => 4, + Robust.Shared.Graphics.RSI.RsiDirectionType.Dir8 => 8, + _ => 1 + }; + + if (totalFrames == 0 || totalFrames % dirCount != 0) + return false; + + var framesPerDirection = totalFrames / dirCount; + var frame = Math.Clamp(layer.AnimationFrame, 0, framesPerDirection - 1); + var rsiDirection = direction.Convert(state.RsiDirections).OffsetRsiDir(layer.DirOffset); + var target = (int) rsiDirection * framesPerDirection + frame; + var targetY = target / statesX; + var targetX = target % statesX; + sourceRect = new Rectangle(targetX * frameWidth, targetY * frameHeight, frameWidth, frameHeight); + return true; + } + + private sealed class EntityScreenshotRenderControl : Control + { + private static readonly Color ExportBackgroundColor = new(128, 128, 128, 0); + + [Dependency] private readonly IEntityManager _entityManager = default!; + [Dependency] private readonly ILogManager _logManager = default!; + [Dependency] private readonly IResourceManager _resourceManager = default!; + + internal readonly Queue<( + IRenderTexture Texture, + Direction Direction, + EntityUid Entity, + ResPath OutputPath, + TaskCompletionSource Tcs)> QueuedTextures = new(); + + private readonly ISawmill _sawmill; + + public EntityScreenshotRenderControl() + { + IoCManager.InjectDependencies(this); + _sawmill = _logManager.GetSawmill("corvax.entity-sprite-export"); + } + + protected override void Draw(DrawingHandleScreen handle) + { + base.Draw(handle); + + while (QueuedTextures.TryDequeue(out var queued)) + { + if (queued.Tcs.Task.IsCanceled) + continue; + + try + { + if (!_entityManager.EntityExists(queued.Entity)) + { + queued.Texture.Dispose(); + queued.Tcs.SetResult(); + continue; + } + + var result = queued; + handle.RenderInRenderTarget(queued.Texture, + () => + { + handle.DrawEntity(result.Entity, + result.Texture.Size / 2, + Vector2.One, + Angle.Zero, + overrideDirection: result.Direction); + }, + ExportBackgroundColor); + + if (!_resourceManager.UserData.IsDir(queued.OutputPath.Directory)) + _resourceManager.UserData.CreateDir(queued.OutputPath.Directory); + + var result1 = queued; + queued.Texture.CopyPixelsToMemory(image => + { + try + { + if (_resourceManager.UserData.Exists(result.OutputPath)) + { + _sawmill.Info($"Found existing file {result.OutputPath} to replace."); + _resourceManager.UserData.Delete(result.OutputPath); + } + + using var file = _resourceManager.UserData.OpenWrite(result.OutputPath); + image.SaveAsPng(file); + _sawmill.Info($"Saved screenshot to {result.OutputPath}"); + result1.Tcs.SetResult(); + } + catch (Exception exc) + { + if (!string.IsNullOrEmpty(exc.StackTrace)) + _sawmill.Fatal(exc.StackTrace); + + result1.Tcs.SetException(exc); + } + finally + { + image.Dispose(); + result1.Texture.Dispose(); + } + }); + } + catch (Exception exc) + { + queued.Texture.Dispose(); + + if (!string.IsNullOrEmpty(exc.StackTrace)) + _sawmill.Fatal(exc.StackTrace); + + queued.Tcs.SetException(exc); + } + } + } + } +} diff --git a/Content.Client/Entry/EntryPoint.cs b/Content.Client/Entry/EntryPoint.cs index 55021873340..8226b3eb05c 100644 --- a/Content.Client/Entry/EntryPoint.cs +++ b/Content.Client/Entry/EntryPoint.cs @@ -1,6 +1,7 @@ using Content.Client.Administration.Managers; using Content.Client.Changelog; using Content.Client.Chat.Managers; +using Content.Client.Corvax.ExportSprites; using Content.Client.DebugMon; using Content.Client.Corvax.TTS; using Content.Client.Options; @@ -53,6 +54,7 @@ public sealed class EntryPoint : GameClient [Dependency] private readonly IComponentFactory _componentFactory = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IClientAdminManager _adminManager = default!; + [Dependency] private readonly EntityScreenshotGenerator _entityScreenshotGenerator = default!; // Corvax-Wiki [Dependency] private readonly IParallaxManager _parallaxManager = default!; [Dependency] private readonly IConfigurationManager _configManager = default!; [Dependency] private readonly IStylesheetManager _stylesheetManager = default!; @@ -137,6 +139,7 @@ public override void Init() _componentFactory.GenerateNetIds(); _adminManager.Initialize(); + _entityScreenshotGenerator.Initialize(); // Corvax-Wiki _screenshotHook.Initialize(); _fullscreenHook.Initialize(); _changelogManager.Initialize(); @@ -190,6 +193,9 @@ public override void PostInit() // Disable engine-default viewport since we use our own custom viewport control. _userInterfaceManager.MainViewport.Visible = false; + if (_entityScreenshotGenerator.PostInit()) // Corvax-Wiki + return; + SwitchToDefaultState(); } @@ -229,6 +235,8 @@ private void SwitchToDefaultState(bool disconnected = false) public override void Update(ModUpdateLevel level, FrameEventArgs frameEventArgs) { + _entityScreenshotGenerator.Update(); // Corvax-Wiki + if (level == ModUpdateLevel.FramePreEngine) { _debugMonitorManager.FrameUpdate(); diff --git a/Content.Client/IoC/ClientContentIoC.cs b/Content.Client/IoC/ClientContentIoC.cs index 4f3988bfe72..e6bdeed632f 100644 --- a/Content.Client/IoC/ClientContentIoC.cs +++ b/Content.Client/IoC/ClientContentIoC.cs @@ -2,7 +2,7 @@ using Content.Client.Changelog; using Content.Client.Chat.Managers; using Content.Client.Clickable; -using Content.Client.Corvax.TTS; +using Content.Client.Corvax.ExportSprites; using Content.Client.DebugMon; using Content.Client.Eui; using Content.Client.FeedbackPopup; @@ -39,6 +39,8 @@ public static void Register(IDependencyCollection collection) SharedContentIoC.Register(collection); collection.Register(); collection.Register(); + collection.Register(); // Corvax-Wiki + collection.Register(); // Corvax-Wiki collection.Register(); collection.Register(); collection.Register(); diff --git a/Content.Server/Corvax/GuideGenerator/ComponentJsonGenerator.cs b/Content.Server/Corvax/GuideGenerator/ComponentJsonGenerator.cs index 1b94a514978..c1817382ef5 100644 --- a/Content.Server/Corvax/GuideGenerator/ComponentJsonGenerator.cs +++ b/Content.Server/Corvax/GuideGenerator/ComponentJsonGenerator.cs @@ -25,10 +25,29 @@ public static void PublishAll(IResourceManager res, ResPath destRoot) if (p is not EntityPrototype entProto) continue; + var composedComponents = YAMLEntry.GetComposedComponentMappings(entProto, proto, ser, compFactory); + foreach (var (compName, entry) in entProto.Components) { var node = ser.WriteValueAs(entry.Component.GetType(), entry.Component); FieldEntry.NormalizeFlagsToSequences(entry.Component, node); + + var compFields = FieldEntry.DataNodeToObject(node); + + if (!output.TryGetValue(compName, out var map)) + { + map = new Dictionary(); + output[compName] = map; + } + + map[entProto.ID] = compFields; + } + + foreach (var (compName, node) in composedComponents) + { + if (entProto.Components.ContainsKey(compName)) + continue; + var compFields = FieldEntry.DataNodeToObject(node); if (!output.TryGetValue(compName, out var map)) diff --git a/Content.Server/Corvax/GuideGenerator/EntityEntry.cs b/Content.Server/Corvax/GuideGenerator/EntityEntry.cs index d1c544b0508..9ddd167328b 100644 --- a/Content.Server/Corvax/GuideGenerator/EntityEntry.cs +++ b/Content.Server/Corvax/GuideGenerator/EntityEntry.cs @@ -2,11 +2,78 @@ using System.Text.Json.Serialization; using Content.Shared.Labels.Components; using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.Markdown.Mapping; +using Robust.Shared.Serialization.Markdown.Sequence; +using Robust.Shared.Serialization.Markdown.Value; namespace Content.Server.Corvax.GuideGenerator; public sealed class EntityEntry { + private static string[]? GetRootParents(EntityPrototype proto, IPrototypeManager prototypeManager) + { + if (proto.Parents is not { Length: > 0 }) + return null; + + var roots = new HashSet(StringComparer.Ordinal); + var visited = new HashSet(StringComparer.Ordinal); + + static IEnumerable GetParentIds(MappingDataNode mapping) + { + if (mapping.TryGet("parent", out ValueDataNode? parentValue)) + { + if (!string.IsNullOrWhiteSpace(parentValue.Value)) + yield return parentValue.Value; + + yield break; + } + + if (!mapping.TryGet("parent", out SequenceDataNode? parentSequence)) + yield break; + + foreach (var parentNode in parentSequence) + { + if (parentNode is not ValueDataNode valueNode) + continue; + + if (!string.IsNullOrWhiteSpace(valueNode.Value)) + yield return valueNode.Value; + } + } + + void Visit(string id) + { + if (!visited.Add(id)) + return; + + if (!YAMLEntry.TryGetRawMapping(prototypeManager, typeof(EntityPrototype), id, out var mapping) || + mapping == null) + { + roots.Add(id); + return; + } + + var parents = GetParentIds(mapping).ToArray(); + if (parents.Length == 0) + { + roots.Add(id); + return; + } + + foreach (var parent in parents) + { + Visit(parent); + } + } + + foreach (var parent in proto.Parents) + { + Visit(parent); + } + + return roots.Count > 0 ? roots.OrderBy(x => x, StringComparer.Ordinal).ToArray() : null; + } + [JsonPropertyName("id")] public string Id { get; } @@ -17,10 +84,16 @@ public sealed class EntityEntry public string Description { get; } [JsonPropertyName("suffix")] - public string Suffix { get; } + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Suffix { get; } [JsonPropertyName("label")] - public string Label { get; } + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Label { get; } + + [JsonPropertyName("parents")] + [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string[]? Parents { get; } public EntityEntry(EntityPrototype proto) { @@ -30,7 +103,8 @@ public EntityEntry(EntityPrototype proto) Id = proto.ID; Name = TextTools.CapitalizeString(TextTools.GetDisplayName(proto, prototypeManager, loc)); Description = proto.Description; - Suffix = proto.EditorSuffix ?? ""; + Suffix = string.IsNullOrWhiteSpace(proto.EditorSuffix) ? null : proto.EditorSuffix; + Parents = GetRootParents(proto, prototypeManager); Label = proto.Components.Values .Select(x => x.Component) @@ -38,6 +112,6 @@ public EntityEntry(EntityPrototype proto) .Select(lc => lc.CurrentLabel) .Where(label => !string.IsNullOrEmpty(label)) .Select(label => Loc.GetString(label!)) - .FirstOrDefault() ?? ""; + .FirstOrDefault(); } } diff --git a/Content.Server/Corvax/GuideGenerator/EntityNameDuplicatesJsonGenerator.cs b/Content.Server/Corvax/GuideGenerator/EntityNameDuplicatesJsonGenerator.cs index dcb8c471109..117936e32be 100644 --- a/Content.Server/Corvax/GuideGenerator/EntityNameDuplicatesJsonGenerator.cs +++ b/Content.Server/Corvax/GuideGenerator/EntityNameDuplicatesJsonGenerator.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Text.Encodings.Web; using System.Text.Json; +using Content.Shared.Corvax.GuideGenerator; using Content.Shared.Labels.Components; using Robust.Shared.Physics; using Robust.Shared.Prototypes; @@ -28,15 +29,23 @@ private static string GetLabel(EntityPrototype proto) .FirstOrDefault() ?? string.Empty; } + public static bool MatchesEntityNameFilter(EntityPrototype proto, IReadOnlySet allowedIds) + { + var compFactory = IoCManager.Resolve(); + return !proto.Abstract && + proto.TryGetComponent(out _, compFactory) && + EntityProjectHelper.MatchesAllowedIds(proto.ID, allowedIds); + } + private static Dictionary> GetDuplicatesName( IPrototypeManager prototypeManager, bool duplicatesOnly) { var loc = IoCManager.Resolve(); + var allowedIds = EntityProjectGenerator.GetProjectEntityIds(); return prototypeManager .EnumeratePrototypes() - .Where(p => !p.Abstract && - p.Components.Values.Any(c => c.Component is FixturesComponent)) + .Where(proto => MatchesEntityNameFilter(proto, allowedIds)) .GroupBy(p => { var name = TextTools.CapitalizeString(TextTools.GetDisplayName(p, prototypeManager, loc)); @@ -67,7 +76,7 @@ private static Dictionary> GetDuplicatesName( if (!string.IsNullOrEmpty(label) && !string.IsNullOrEmpty(suffix) && - label.Equals(suffix, StringComparison.OrdinalIgnoreCase)) + label.Trim().Equals(suffix.Trim(), StringComparison.OrdinalIgnoreCase)) { suffix = string.Empty; } diff --git a/Content.Server/Corvax/GuideGenerator/EntityProjectGenerator.cs b/Content.Server/Corvax/GuideGenerator/EntityProjectGenerator.cs new file mode 100644 index 00000000000..90cd58d21c5 --- /dev/null +++ b/Content.Server/Corvax/GuideGenerator/EntityProjectGenerator.cs @@ -0,0 +1,33 @@ +using System.IO; +using System.Linq; +using System.Text.Encodings.Web; +using System.Text.Json; +using Content.Shared.Corvax.GuideGenerator; + +namespace Content.Server.Corvax.GuideGenerator; + +public static class EntityProjectGenerator +{ + public static HashSet GetProjectEntityIds() + { + return EntityProjectHelper.GetProjectEntityIds(); + } + + public static void PublishJson(StreamWriter file) + { + var ids = GetProjectEntityIds(); + if (ids.Count == 0) + return; + + var sorted = ids.ToList(); + sorted.Sort(StringComparer.Ordinal); + + var serializeOptions = new JsonSerializerOptions + { + WriteIndented = true, + Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping + }; + + file.Write(JsonSerializer.Serialize(sorted, serializeOptions)); + } +} diff --git a/Content.Server/Corvax/GuideGenerator/FieldEntry.cs b/Content.Server/Corvax/GuideGenerator/FieldEntry.cs index ef35ab9c620..4657b8e79b2 100644 --- a/Content.Server/Corvax/GuideGenerator/FieldEntry.cs +++ b/Content.Server/Corvax/GuideGenerator/FieldEntry.cs @@ -75,18 +75,27 @@ public static class FieldEntry return null; var raw = value.Value; + object? parsed; if (bool.TryParse(raw, out var boolRes)) - return boolRes; - - if (int.TryParse(raw, NumberStyles.Integer, CultureInfo.InvariantCulture, out var intRes)) - return intRes; - - if (DoubleEntryRegex.IsMatch(raw) && + parsed = boolRes; + else if (int.TryParse(raw, NumberStyles.Integer, CultureInfo.InvariantCulture, out var intRes)) + parsed = intRes; + else if (DoubleEntryRegex.IsMatch(raw) && double.TryParse(raw, NumberStyles.Float | NumberStyles.AllowThousands, CultureInfo.InvariantCulture, out var doubleRes)) - return doubleRes; + parsed = doubleRes; + else + parsed = raw; - return raw; + if (node.Tag == null) + return parsed; + + return new Dictionary + { + [node.Tag] = string.IsNullOrEmpty(raw) + ? new Dictionary() + : parsed + }; } return node.ToString(); @@ -104,14 +113,14 @@ public static void NormalizeFlagsToSequences(object instance, MappingDataNode no if (member == null) continue; - var memberType = member is PropertyInfo p ? p.PropertyType : ((FieldInfo)member).FieldType; + var memberType = member is PropertyInfo p ? p.PropertyType : ((FieldInfo) member).FieldType; if (!memberType.IsEnum) continue; if (memberType.GetCustomAttribute(false) == null) continue; - var value = member is PropertyInfo p2 ? p2.GetValue(instance) : ((FieldInfo)member).GetValue(instance); + var value = member is PropertyInfo p2 ? p2.GetValue(instance) : ((FieldInfo) member).GetValue(instance); if (value == null) continue; diff --git a/Content.Server/Corvax/GuideGenerator/LocJsonGenerator.cs b/Content.Server/Corvax/GuideGenerator/LocJsonGenerator.cs index 1c536f60708..a2b65120bd9 100644 --- a/Content.Server/Corvax/GuideGenerator/LocJsonGenerator.cs +++ b/Content.Server/Corvax/GuideGenerator/LocJsonGenerator.cs @@ -11,7 +11,6 @@ namespace Content.Server.Corvax.GuideGenerator; public static class LocJsonGenerator { - // Matches top-level message/term identifiers at start of line (no leading whitespace or comment). private static readonly Regex TopEntryRegex = new(@"(?m)^(?!\s|#)([^\s=]+)\s*=", RegexOptions.Compiled | RegexOptions.CultureInvariant); diff --git a/Content.Server/Corvax/GuideGenerator/PrototypeJsonGenerator.cs b/Content.Server/Corvax/GuideGenerator/PrototypeJsonGenerator.cs index e58afe2c125..2549b4c5aee 100644 --- a/Content.Server/Corvax/GuideGenerator/PrototypeJsonGenerator.cs +++ b/Content.Server/Corvax/GuideGenerator/PrototypeJsonGenerator.cs @@ -1,8 +1,11 @@ using System.Linq; +using System.Reflection; using System.Text.Encodings.Web; using System.Text.Json; using Robust.Shared.ContentPack; +using Robust.Shared.GameObjects; using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; using Robust.Shared.Serialization.Manager; using Robust.Shared.Serialization.Markdown.Mapping; using Robust.Shared.Utility; @@ -22,6 +25,9 @@ public static void PublishAll(IResourceManager res, ResPath destRoot) if (kind == typeof(EntityPrototype)) continue; + if (HasUnsafeSerializedDataField(kind)) + continue; + // Map: entity id -> prototype fields var map = new Dictionary(); @@ -76,4 +82,80 @@ public static void PublishAll(IResourceManager res, ResPath destRoot) file.Flush(); } } + + private static bool HasUnsafeSerializedDataField(Type type) + { + return HasUnsafeSerializedDataField(type, new HashSet()); + } + + private static bool HasUnsafeSerializedDataField(Type type, HashSet visited) + { + const BindingFlags flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; + + if (!visited.Add(type)) + return false; + + foreach (var field in type.GetFields(flags)) + { + if (!HasDataField(field)) + continue; + + if (IsUnsafeSerializedType(field.FieldType, visited)) + return true; + } + + foreach (var property in type.GetProperties(flags)) + { + if (!HasDataField(property)) + continue; + + if (IsUnsafeSerializedType(property.PropertyType, visited)) + return true; + } + + return false; + } + + private static bool HasDataField(MemberInfo member) + { + return member.GetCustomAttributes(inherit: true) + .Any(attr => attr.GetType().Name is nameof(DataFieldAttribute) or nameof(IdDataFieldAttribute)); + } + + private static bool IsUnsafeSerializedType(Type type, HashSet visited) + { + type = Nullable.GetUnderlyingType(type) ?? type; + + if (type == typeof(object) || + type == typeof(EntityUid) || + type == typeof(NetEntity)) + { + return true; + } + + if (type.IsPrimitive || + type.IsEnum || + type == typeof(string) || + type == typeof(decimal) || + type == typeof(TimeSpan)) + { + return false; + } + + if (type.IsArray) + return IsUnsafeSerializedType(type.GetElementType()!, visited); + + if (type.IsGenericType) + { + foreach (var argument in type.GetGenericArguments()) + { + if (IsUnsafeSerializedType(argument, visited)) + return true; + } + } + + return type.GetCustomAttributes(inherit: true).Any(attr => + attr.GetType().Name is nameof(DataDefinitionAttribute) or nameof(SerializableAttribute)) + && HasUnsafeSerializedDataField(type, visited); + } } diff --git a/Content.Server/Corvax/GuideGenerator/TextTools.cs b/Content.Server/Corvax/GuideGenerator/TextTools.cs index c959469ce12..021261ebb49 100644 --- a/Content.Server/Corvax/GuideGenerator/TextTools.cs +++ b/Content.Server/Corvax/GuideGenerator/TextTools.cs @@ -29,17 +29,35 @@ public static string DecapitalizeString(string str) _ => str }; } + public static string GetDisplayName(EntityPrototype proto, IPrototypeManager prototypeManager, ILocalizationManager loc) { - foreach (var (_, parentProto) in prototypeManager.EnumerateAllParents(proto.ID, includeSelf: true)) + var visited = new HashSet(); + var stack = new Stack(); + stack.Push(proto.ID); + + while (stack.Count > 0) { - if (parentProto == null) + var id = stack.Pop(); + if (!visited.Add(id)) + continue; + + if (!prototypeManager.TryIndex(id, out var current)) continue; - var name = parentProto.Name; - if (!string.IsNullOrEmpty(name)) - return name; + if (!string.IsNullOrEmpty(current.Name)) + return current.Name; + + var parents = current.Parents; + if (parents == null || parents.Length == 0) + continue; + + for (var i = parents.Length - 1; i >= 0; i--) + { + stack.Push(parents[i]); + } } + return proto.Name; } } diff --git a/Content.Server/Corvax/GuideGenerator/WikiEntityNameGenerator.cs b/Content.Server/Corvax/GuideGenerator/WikiEntityNameGenerator.cs index c6e473c195b..799de417a89 100644 --- a/Content.Server/Corvax/GuideGenerator/WikiEntityNameGenerator.cs +++ b/Content.Server/Corvax/GuideGenerator/WikiEntityNameGenerator.cs @@ -5,7 +5,9 @@ using System.Text.Encodings.Web; using System.Text.Json; using System.Text.Json.Serialization; +using Content.Shared.CCVar; using Robust.Shared.ContentPack; +using Robust.Shared.Configuration; using Robust.Shared.Utility; namespace Content.Server.Corvax.GuideGenerator; @@ -13,7 +15,6 @@ namespace Content.Server.Corvax.GuideGenerator; public static class WikiEntityNameGenerator { private const string ApiEndpoint = "https://station14.ru/api.php"; - private const string CategoryTitle = "Категория:Сущности"; private static readonly HttpClient HttpClient = new(); @@ -76,13 +77,19 @@ public static void PublishJson(StreamWriter writer, IResourceManager resourceMan private static HashSet FetchAllCategoryTitles() { + var cfg = IoCManager.Resolve(); + var projectPrefix = cfg.GetCVar(CCVars.WikiProjectPrefix); + var categoryTitle = string.IsNullOrWhiteSpace(projectPrefix) + ? "Категория:Сущности" + : $"Категория:{projectPrefix}:Сущности"; + var titles = new HashSet(StringComparer.Ordinal); string? cmContinue = null; while (true) { var url = - $"{ApiEndpoint}?action=query&list=categorymembers&format=json&cmtype=page&cmlimit=max&cmnamespace=0&cmtitle={Uri.EscapeDataString(CategoryTitle)}"; + $"{ApiEndpoint}?action=query&list=categorymembers&format=json&cmtype=page&cmlimit=max&cmnamespace=0&cmtitle={Uri.EscapeDataString(categoryTitle)}"; if (!string.IsNullOrEmpty(cmContinue)) { url += "&cmcontinue=" + Uri.EscapeDataString(cmContinue); diff --git a/Content.Server/Corvax/GuideGenerator/YAMLEntry.cs b/Content.Server/Corvax/GuideGenerator/YAMLEntry.cs new file mode 100644 index 00000000000..b5578164b17 --- /dev/null +++ b/Content.Server/Corvax/GuideGenerator/YAMLEntry.cs @@ -0,0 +1,160 @@ +using System.Reflection; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.Manager; +using Robust.Shared.Serialization.Markdown.Mapping; +using Robust.Shared.Serialization.Markdown.Sequence; +using Robust.Shared.Serialization.Markdown.Value; + +namespace Content.Server.Corvax.GuideGenerator; + +public static class YAMLEntry +{ + private static readonly FieldInfo? KindsField = FindField(typeof(PrototypeManager), "_kinds"); + private static readonly MethodInfo? TryGetValueMethod = typeof(Dictionary) + .GetMethod(nameof(Dictionary.TryGetValue)); + + public static FieldInfo? FindField(Type type, string name) + { + while (true) + { + var field = type.GetField(name, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); + if (field != null) + return field; + + if (type.BaseType == null) + return null; + + type = type.BaseType; + } + } + + public static bool TryGetRawMapping( + IPrototypeManager proto, + Type kind, + string id, + out MappingDataNode? mapping) + { + mapping = null; + + if (KindsField?.GetValue(proto) is not object kinds) + return false; + + var itemProperty = kinds.GetType().GetProperty("Item"); + var kindData = itemProperty?.GetValue(kinds, new object[] { kind }); + if (kindData == null) + return false; + + var rawResultsField = FindField(kindData.GetType(), "RawResults"); + var rawResults = rawResultsField?.GetValue(kindData); + if (rawResults == null || TryGetValueMethod == null) + return false; + + var args = new object?[] { id, null }; + var found = (bool) TryGetValueMethod.Invoke(rawResults, args)!; + mapping = (MappingDataNode?) args[1]; + return found; + } + + public static Dictionary GetComposedComponentMappings( + EntityPrototype entProto, + IPrototypeManager proto, + ISerializationManager ser, + IComponentFactory compFactory) + { + var composed = new Dictionary(StringComparer.Ordinal); + var visited = new HashSet(StringComparer.Ordinal); + + static IEnumerable GetParentIds(MappingDataNode mapping) + { + if (mapping.TryGet("parent", out ValueDataNode? parentValue)) + { + if (!string.IsNullOrWhiteSpace(parentValue.Value)) + yield return parentValue.Value; + + yield break; + } + + if (!mapping.TryGet("parent", out SequenceDataNode? parentSequence)) + yield break; + + foreach (var parentNode in parentSequence) + { + if (parentNode is not ValueDataNode valueNode) + continue; + + if (!string.IsNullOrWhiteSpace(valueNode.Value)) + yield return valueNode.Value; + } + } + + void Visit(string id) + { + if (!visited.Add(id)) + return; + + if (!TryGetRawMapping(proto, typeof(EntityPrototype), id, out var mapping) || mapping == null) + return; + + foreach (var parent in GetParentIds(mapping)) + { + Visit(parent); + } + + if (!mapping.TryGet("components", out SequenceDataNode? componentsNode)) + return; + + foreach (var componentNode in componentsNode) + { + if (componentNode is not MappingDataNode compMap) + continue; + + if (!compMap.TryGet("type", out ValueDataNode? typeNode)) + continue; + + var compName = typeNode.Value; + if (string.IsNullOrWhiteSpace(compName)) + continue; + + var child = compMap.Copy(); + child.Remove("type"); + + if (!composed.TryGetValue(compName, out var parent)) + { + composed[compName] = child; + continue; + } + + if (compFactory.TryGetRegistration(compName, out var registration)) + { + composed[compName] = ser.PushCompositionWithGenericNode(registration.Type, parent, child); + continue; + } + + composed[compName] = MergeMappings(parent, child); + } + } + + Visit(entProto.ID); + return composed; + } + + public static MappingDataNode MergeMappings(MappingDataNode parent, MappingDataNode child) + { + var merged = parent.Copy(); + + foreach (var (key, value) in child) + { + if (merged.TryGetValue(key, out var existing) && + existing is MappingDataNode existingMap && + value is MappingDataNode childMap) + { + merged[key] = MergeMappings(existingMap, childMap); + continue; + } + + merged[key] = value.Copy(); + } + + return merged; + } +} diff --git a/Content.Server/Entry/EntryPoint.cs b/Content.Server/Entry/EntryPoint.cs index d1550b9b95a..c43ec62571f 100644 --- a/Content.Server/Entry/EntryPoint.cs +++ b/Content.Server/Entry/EntryPoint.cs @@ -168,6 +168,7 @@ void WriteFile(string name, Action write) WriteFile("component.json", ComponentListGenerator.PublishJson); WriteFile("prototype_store.json", PrototypeStoreGenerator.PublishJson); WriteFile("component_store.json", ComponentStoreGenerator.PublishJson); + WriteFile("entity_project.json", EntityProjectGenerator.PublishJson); WriteFile("entity_name.json", EntityNameDuplicatesJsonGenerator.PublishNameJson); WriteFile("entity_name_wiki.json", file => WikiEntityNameGenerator.PublishJson(file, _res, resPath)); WriteFile("entity_name_duplicates.json", EntityNameDuplicatesJsonGenerator.PublishDuplicatesJson); diff --git a/Content.Shared/Corvax/CCVars/CCVars.Wiki.cs b/Content.Shared/Corvax/CCVars/CCVars.Wiki.cs new file mode 100644 index 00000000000..7d5dd4b410d --- /dev/null +++ b/Content.Shared/Corvax/CCVars/CCVars.Wiki.cs @@ -0,0 +1,36 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// + /// Enables automatic client-side entity screenshot generation. + /// + public static readonly CVarDef EntityScreenshotGeneratorEnabled = + CVarDef.Create("autogen.entity_screenshot.enabled", false, CVar.CLIENTONLY); + + /// + /// Output directory for generated entity screenshots inside UserData. + /// + public static readonly CVarDef EntityScreenshotOutputPath = + CVarDef.Create("autogen.entity_screenshot.output_path", "/Textures/Entities", CVar.CLIENTONLY); + + /// + /// Prefix for prototype folders included in entity_project generation. + /// + public static readonly CVarDef EntityProjectFolderPrefix = + CVarDef.Create("autogen.entity_project.folder_prefix", string.Empty, CVar.ARCHIVE); + + /// + /// Prototype folder name to exclude from entity_project generation. + /// + public static readonly CVarDef EntityProjectExcludedCoreProjectFolder = + CVarDef.Create("autogen.entity_project.excluded_core_project_folder", string.Empty, CVar.ARCHIVE); + + /// + /// Name of the project, which is clearly worth noting for the purpose of organizing the wiki's content. + /// + public static readonly CVarDef WikiProjectPrefix = + CVarDef.Create("autogen.wiki.project_prefix", string.Empty, CVar.SERVERONLY | CVar.ARCHIVE); +} diff --git a/Content.Shared/Corvax/GuideGenerator/EntityProjectHelper.cs b/Content.Shared/Corvax/GuideGenerator/EntityProjectHelper.cs new file mode 100644 index 00000000000..a6a2460d8ae --- /dev/null +++ b/Content.Shared/Corvax/GuideGenerator/EntityProjectHelper.cs @@ -0,0 +1,117 @@ +using Content.Shared.CCVar; +using Robust.Shared.Configuration; +using Robust.Shared.ContentPack; +using Robust.Shared.Serialization.Markdown; +using Robust.Shared.Serialization.Markdown.Mapping; +using Robust.Shared.Serialization.Markdown.Sequence; +using Robust.Shared.Serialization.Markdown.Value; +using Robust.Shared.Utility; + +namespace Content.Shared.Corvax.GuideGenerator; + +public static class EntityProjectHelper +{ + private static readonly ResPath PrototypesRoot = new("/Prototypes/"); + + public static HashSet GetProjectEntityIds() + { + var cfg = IoCManager.Resolve(); + var res = IoCManager.Resolve(); + var projectFolderPrefix = cfg.GetCVar(CCVars.EntityProjectFolderPrefix); + var excludedCoreProjectFolder = cfg.GetCVar(CCVars.EntityProjectExcludedCoreProjectFolder); + + if (string.IsNullOrWhiteSpace(projectFolderPrefix)) + return []; + + var ids = new HashSet(); + + foreach (var path in res.ContentFindFiles(PrototypesRoot)) + { + if (!IsPrototypeFile(path)) + continue; + + if (!IsInIncludedProjectFolder(path, projectFolderPrefix, excludedCoreProjectFolder)) + continue; + + ExtractIdsFromYaml(res, path, ids); + } + + return ids; + } + + public static bool MatchesAllowedIds(string prototypeId, IReadOnlySet allowedIds) + { + return allowedIds.Count == 0 || allowedIds.Contains(prototypeId); + } + + private static bool IsPrototypeFile(ResPath path) + { + return path.Extension.Equals("yml", StringComparison.OrdinalIgnoreCase) || + path.Extension.Equals("yaml", StringComparison.OrdinalIgnoreCase); + } + + private static bool IsInIncludedProjectFolder( + ResPath path, + string projectFolderPrefix, + string excludedCoreProjectFolder) + { + var normalizedExcluded = excludedCoreProjectFolder.Trim(); + + foreach (var part in GetPathParts(path)) + { + if (!part.StartsWith(projectFolderPrefix, StringComparison.Ordinal)) + continue; + + if (!string.IsNullOrWhiteSpace(normalizedExcluded) && + part.Equals(normalizedExcluded, StringComparison.Ordinal)) + { + return false; + } + + return true; + } + + return false; + } + + private static IEnumerable GetPathParts(ResPath path) + { + foreach (var part in path.ToString().Split('/', StringSplitOptions.RemoveEmptyEntries)) + { + yield return part; + } + } + + private static void ExtractIdsFromYaml( + IResourceManager res, + ResPath path, + HashSet output) + { + using var reader = res.ContentFileReadText(path); + foreach (var document in DataNodeParser.ParseYamlStream(reader)) + { + if (document.Root is not SequenceDataNode sequence) + continue; + + foreach (var node in sequence.Sequence) + { + if (node is not MappingDataNode mapping) + continue; + + if (!mapping.TryGet("type", out var typeNode) || + !string.Equals(typeNode.Value, "entity", StringComparison.OrdinalIgnoreCase)) + { + continue; + } + + if (!mapping.TryGet("id", out var idNode) || + string.IsNullOrWhiteSpace(idNode.Value)) + { + continue; + } + + output.Add(idNode.Value); + } + } + } +} From ca3cd05e9c5cf6698bf1d03ad6e6207533feae3c Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Sun, 29 Mar 2026 05:08:20 +0700 Subject: [PATCH 598/603] map cleaning --- Resources/Maps/Corvax/corvax_chloris.yml | 5 ----- Resources/Maps/Corvax/corvax_delta.yml | 4 ---- Resources/Maps/Corvax/corvax_glacier.yml | 1 - Resources/Maps/Corvax/corvax_silly.yml | 1 - 4 files changed, 11 deletions(-) diff --git a/Resources/Maps/Corvax/corvax_chloris.yml b/Resources/Maps/Corvax/corvax_chloris.yml index d49622aefdb..57fe6cc819a 100644 --- a/Resources/Maps/Corvax/corvax_chloris.yml +++ b/Resources/Maps/Corvax/corvax_chloris.yml @@ -270166,7 +270166,6 @@ entities: rot: 1.5707963267948966 rad pos: 141.5,115.5 parent: 2 - - type: Timer - uid: 37569 components: - type: Transform @@ -270189,7 +270188,6 @@ entities: - type: Transform pos: 137.5,113.5 parent: 2 - - type: Timer - uid: 37573 components: - type: Transform @@ -271222,7 +271220,6 @@ entities: rot: 1.5707963267948966 rad pos: 86.5,104.5 parent: 2 - - type: Timer - uid: 37751 components: - type: Transform @@ -271293,7 +271290,6 @@ entities: rot: -1.5707963267948966 rad pos: 90.5,106.5 parent: 2 - - type: Timer - uid: 37763 components: - type: Transform @@ -273940,7 +273936,6 @@ entities: - type: Transform pos: 88.5,107.5 parent: 2 - - type: Timer - uid: 38207 components: - type: Transform diff --git a/Resources/Maps/Corvax/corvax_delta.yml b/Resources/Maps/Corvax/corvax_delta.yml index 294c08ac1bc..030d03f8013 100644 --- a/Resources/Maps/Corvax/corvax_delta.yml +++ b/Resources/Maps/Corvax/corvax_delta.yml @@ -210337,7 +210337,6 @@ entities: parent: 2 - type: ApcPowerReceiver powerLoad: 0 - - type: Timer - uid: 27232 components: - type: Transform @@ -210827,7 +210826,6 @@ entities: parent: 2 - type: ApcPowerReceiver powerLoad: 0 - - type: Timer - uid: 27298 components: - type: Transform @@ -211369,7 +211367,6 @@ entities: parent: 2 - type: ApcPowerReceiver powerLoad: 0 - - type: Timer - uid: 27371 components: - type: Transform @@ -212216,7 +212213,6 @@ entities: parent: 2 - type: ApcPowerReceiver powerLoad: 0 - - type: Timer - uid: 27491 components: - type: Transform diff --git a/Resources/Maps/Corvax/corvax_glacier.yml b/Resources/Maps/Corvax/corvax_glacier.yml index 4fc35aaf917..9696947eb61 100644 --- a/Resources/Maps/Corvax/corvax_glacier.yml +++ b/Resources/Maps/Corvax/corvax_glacier.yml @@ -233080,7 +233080,6 @@ entities: - type: Transform pos: 9.5,-11.5 parent: 2 - - type: Timer - uid: 25526 components: - type: Transform diff --git a/Resources/Maps/Corvax/corvax_silly.yml b/Resources/Maps/Corvax/corvax_silly.yml index 48fe532ef13..0d58c69d0b7 100644 --- a/Resources/Maps/Corvax/corvax_silly.yml +++ b/Resources/Maps/Corvax/corvax_silly.yml @@ -46415,7 +46415,6 @@ entities: - type: Transform pos: -7.5,-4.5 parent: 8406 - - type: Timer - uid: 8559 components: - type: MetaData From 8632844268d3a4802d4627fa89907bca53723bcd Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Sun, 29 Mar 2026 14:08:48 +0300 Subject: [PATCH 599/603] cleaning proto(#3546) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Чистка Маркингов --- .../Mobs/Customization/Markings/cat_parts.yml | 4 - .../Markings/human_facial_hair.yml | 2 - .../Customization/Markings/human_hair.yml | 70 --------- .../Mobs/Customization/Markings/ipc.yml | 31 ---- .../Mobs/Customization/Markings/ipc_parts.yml | 135 ------------------ .../Mobs/Customization/Markings/tajaran.yml | 70 --------- .../Mobs/Customization/Markings/vulpkanin.yml | 7 - 7 files changed, 319 deletions(-) diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/cat_parts.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/cat_parts.yml index 91b5698edb8..75264a4a783 100644 --- a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/cat_parts.yml +++ b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/cat_parts.yml @@ -1,7 +1,6 @@ - type: marking id: CatEarsStubby bodyPart: HeadTop - groupWhitelist: [Human] sponsorOnly: true # Corvax-Sponsors coloring: @@ -25,7 +24,6 @@ - type: marking id: CatEarsCurled bodyPart: HeadTop - groupWhitelist: [Human] sponsorOnly: true # Corvax-Sponsors coloring: @@ -49,7 +47,6 @@ - type: marking id: CatEarsTorn bodyPart: HeadTop - groupWhitelist: [Human] sponsorOnly: true # Corvax-Sponsors coloring: @@ -73,7 +70,6 @@ - type: marking id: CatTailStripes bodyPart: Tail - groupWhitelist: [Human] sponsorOnly: true # Corvax-Sponsors coloring: diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/human_facial_hair.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/human_facial_hair.yml index 672a2b79e37..ca55d631e9a 100644 --- a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/human_facial_hair.yml +++ b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/human_facial_hair.yml @@ -1,7 +1,6 @@ - type: marking id: HumanFacialHairHandlebar bodyPart: FacialHair - sprites: - sprite: Corvax/Mobs/Customization/human_facial_hair.rsi state: handlebar @@ -9,7 +8,6 @@ - type: marking id: HumanFacialHairHandlebarAlt bodyPart: FacialHair - sprites: - sprite: Corvax/Mobs/Customization/human_facial_hair.rsi state: handlebar2 diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/human_hair.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/human_hair.yml index 2a254fed7d1..6e77942f2d4 100644 --- a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/human_hair.yml +++ b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/human_hair.yml @@ -1,7 +1,6 @@ - type: marking id: HumanHairAfricanPigtails bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: africanpigtails @@ -9,7 +8,6 @@ - type: marking id: HumanHairAfropuffdouble bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: afropuffdouble @@ -17,7 +15,6 @@ - type: marking id: HumanHairAfropuffleft bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: afropuffleft @@ -25,7 +22,6 @@ - type: marking id: HumanHairAfropuffright bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: afropuffright @@ -33,7 +29,6 @@ - type: marking id: HumanHairAmazon bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: amazon @@ -41,7 +36,6 @@ - type: marking id: HumanHairAstolfo bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: astolfo @@ -49,7 +43,6 @@ - type: marking id: HumanHairBaum bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: baum @@ -57,7 +50,6 @@ - type: marking id: HumanHairBeachwave bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: beachwave @@ -65,7 +57,6 @@ - type: marking id: HumanHairBluntbangs bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: bluntbangs @@ -73,7 +64,6 @@ - type: marking id: HumanHairBluntbangsAlt bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: bluntbangs_alt @@ -81,7 +71,6 @@ - type: marking id: HumanHairBobcutAlt bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: bobcutalt @@ -89,7 +78,6 @@ - type: marking id: HumanHairBunhead4 bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: bunhead4 @@ -97,7 +85,6 @@ - type: marking id: HumanHairCombed bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: combed @@ -105,7 +92,6 @@ - type: marking id: HumanHairCombedbob bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: combedbob @@ -113,7 +99,6 @@ - type: marking id: HumanHairCotton bodyPart: Hair - sponsorOnly: true # Corvax-Sponsors sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi @@ -122,7 +107,6 @@ - type: marking id: HumanHairCurly bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: curly @@ -130,7 +114,6 @@ - type: marking id: HumanHairDave bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: dave @@ -138,7 +121,6 @@ - type: marking id: HumanHairDiagonalBangs bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: diagonal_bangs @@ -146,7 +128,6 @@ - type: marking id: HumanHairEmoshort bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: emoshort @@ -154,7 +135,6 @@ - type: marking id: HumanHairFingerwave bodyPart: Hair - sponsorOnly: true # Corvax-Sponsors sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi @@ -163,7 +143,6 @@ - type: marking id: HumanHairFluffyShort bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: fluffy_short @@ -171,7 +150,6 @@ - type: marking id: HumanHairFortuneteller bodyPart: Hair - sponsorOnly: true # Corvax-Sponsors sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi @@ -180,7 +158,6 @@ - type: marking id: HumanHairFortunetellerAlt bodyPart: Hair - sponsorOnly: true # Corvax-Sponsors sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi @@ -189,7 +166,6 @@ - type: marking id: HumanHairFroofylong bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: froofylong @@ -197,7 +173,6 @@ - type: marking id: HumanHairGeisha bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: geisha @@ -205,7 +180,6 @@ - type: marking id: HumanHairGentle21 bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: gentle21 @@ -213,7 +187,6 @@ - type: marking id: HumanHairGlammetal bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: glammetal @@ -221,7 +194,6 @@ - type: marking id: HumanHairGloomyLong bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: gloomy_long @@ -229,7 +201,6 @@ - type: marking id: HumanHairGloomyMedium bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: gloomy_medium @@ -237,7 +208,6 @@ - type: marking id: HumanHairGrande bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: grande @@ -245,7 +215,6 @@ - type: marking id: HumanHairHalfshave bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: halfshave @@ -253,7 +222,6 @@ - type: marking id: HumanHairHalfshaveglamorous bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: halfshave_glamorous @@ -261,7 +229,6 @@ - type: marking id: HumanHairHalfshaveLong bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: halfshave_long @@ -269,7 +236,6 @@ - type: marking id: HumanHairHalfshaveMessy bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: halfshave_messy @@ -277,7 +243,6 @@ - type: marking id: HumanHairHalfshaveMessyLong bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: halfshave_messylong @@ -285,7 +250,6 @@ - type: marking id: HumanHairHalfshaveSnout bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: halfshave_snout @@ -293,7 +257,6 @@ - type: marking id: HumanHairHightight bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: hightight @@ -301,7 +264,6 @@ - type: marking id: HumanHairHyenamane bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: hyenamane @@ -309,7 +271,6 @@ - type: marking id: HumanHairJessica bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: jessica @@ -317,7 +278,6 @@ - type: marking id: HumanHairLong4 bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: long4 @@ -325,7 +285,6 @@ - type: marking id: HumanHairLongdtails bodyPart: Hair - sponsorOnly: true # Corvax-Sponsors sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi @@ -334,7 +293,6 @@ - type: marking id: HumanHairLongerAlt bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: longeralt @@ -342,7 +300,6 @@ - type: marking id: HumanHairLongovereyeAlt bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: longovereye_alt @@ -350,7 +307,6 @@ - type: marking id: HumanHairLongsidepartstraight bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: longsidepartstraight @@ -358,7 +314,6 @@ - type: marking id: HumanHairLooseSlicked bodyPart: Hair - sponsorOnly: true # Corvax-Sponsors sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi @@ -367,7 +322,6 @@ - type: marking id: HumanHairMediumbraid bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: mediumbraid @@ -375,7 +329,6 @@ - type: marking id: HumanHairNewyou bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: newyou @@ -383,7 +336,6 @@ - type: marking id: HumanHairPonytailAlt bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: ponytailalt @@ -391,7 +343,6 @@ - type: marking id: HumanHairPonytailF bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: ponytailf @@ -399,7 +350,6 @@ - type: marking id: HumanHairPoofy2 bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: poofy2 @@ -407,7 +357,6 @@ - type: marking id: HumanHairQuadcurls bodyPart: Hair - sponsorOnly: true # Corvax-Sponsors sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi @@ -416,7 +365,6 @@ - type: marking id: HumanHairSabitsuki bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: sabitsuki @@ -424,7 +372,6 @@ - type: marking id: HumanHairScully bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: scully @@ -432,7 +379,6 @@ - type: marking id: HumanHairShorthair4 bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: shorthair4 @@ -440,7 +386,6 @@ - type: marking id: HumanHairShy bodyPart: Hair - sponsorOnly: true # Corvax-Sponsors sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi @@ -449,7 +394,6 @@ - type: marking id: HumanHairSimplePonytail bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: simple_ponytail @@ -457,7 +401,6 @@ - type: marking id: HumanHairSleaze bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: sleaze @@ -465,7 +408,6 @@ - type: marking id: HumanHairSlightlyMessy bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: slightlymessy @@ -473,7 +415,6 @@ - type: marking id: HumanHairSlimedroplet bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: slimedroplet @@ -481,7 +422,6 @@ - type: marking id: HumanHairSlimedropletAlt bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: slimedroplet_alt @@ -489,7 +429,6 @@ - type: marking id: HumanHairSlimespikes bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: slimespikes @@ -497,7 +436,6 @@ - type: marking id: HumanHairSlimetendrils bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: slimetendrils @@ -505,7 +443,6 @@ - type: marking id: HumanHairSlimetendrilsAlt bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: slimetendrils_alt @@ -513,7 +450,6 @@ - type: marking id: HumanHairSpicy bodyPart: Hair - sponsorOnly: true # Corvax-Sponsors sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi @@ -522,7 +458,6 @@ - type: marking id: HumanHairTwintailFloor bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: twintail_floor @@ -530,7 +465,6 @@ - type: marking id: HumanHairVeryshortovereye bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: veryshortovereye @@ -538,7 +472,6 @@ - type: marking id: HumanHairVictory bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: victory @@ -546,7 +479,6 @@ - type: marking id: HumanHairViper bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: viper @@ -554,7 +486,6 @@ - type: marking id: HumanHairWife bodyPart: Hair - sponsorOnly: true # Corvax-Sponsors sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi @@ -563,7 +494,6 @@ - type: marking id: HumanHairZiegler bodyPart: Hair - sprites: - sprite: Corvax/Mobs/Customization/human_hair.rsi state: ziegler diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/ipc.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/ipc.yml index ae90c9d4adc..32f2b304f1d 100644 --- a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/ipc.yml +++ b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/ipc.yml @@ -1,6 +1,5 @@ - type: marking id: IpcBreakoutS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -10,7 +9,6 @@ - type: marking id: IpcNatureS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -20,7 +18,6 @@ - type: marking id: IpcEightS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -30,7 +27,6 @@ - type: marking id: IpcOrangeHespAltS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -40,7 +36,6 @@ - type: marking id: IpcPinkHespAltS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -50,7 +45,6 @@ - type: marking id: IpcSmokingS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -60,7 +54,6 @@ - type: marking id: IpcRainbowS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -70,7 +63,6 @@ - type: marking id: IpcHeartS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -80,7 +72,6 @@ - type: marking id: IpcScrollS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -90,7 +81,6 @@ - type: marking id: IpcScrollHespAltS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -100,7 +90,6 @@ - type: marking id: IpcStaticS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -110,7 +99,6 @@ - type: marking id: IpcGreenS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -120,7 +108,6 @@ - type: marking id: IpcYellowS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -130,7 +117,6 @@ - type: marking id: IpcGolGliderS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -140,7 +126,6 @@ - type: marking id: IpcRgbHespAltS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -150,7 +135,6 @@ - type: marking id: IpcGogglesHespAltS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -160,7 +144,6 @@ - type: marking id: IpcOffHespAltS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -170,7 +153,6 @@ - type: marking id: IpcPinkS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -180,7 +162,6 @@ - type: marking id: IpcRedS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -190,7 +171,6 @@ - type: marking id: IpcShowerS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -200,7 +180,6 @@ - type: marking id: IpcRainbowHespAltS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -210,7 +189,6 @@ - type: marking id: IpcGogglesS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -220,7 +198,6 @@ - type: marking id: IpcMonoeyeS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -230,7 +207,6 @@ - type: marking id: IpcBlueS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -240,7 +216,6 @@ - type: marking id: IpcTestS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -250,7 +225,6 @@ - type: marking id: IpcRgbS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -260,7 +234,6 @@ - type: marking id: IpcMusicS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -270,7 +243,6 @@ - type: marking id: IpcConsoleS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -280,7 +252,6 @@ - type: marking id: IpcPurpleS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -290,7 +261,6 @@ - type: marking id: IpcOrangeS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -300,7 +270,6 @@ - type: marking id: IpcWaitingS - bodyPart: Snout groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/ipc_parts.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/ipc_parts.yml index 460740b8aa7..c0476d69ae4 100644 --- a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/ipc_parts.yml +++ b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/ipc_parts.yml @@ -1,6 +1,5 @@ - type: marking id: IpcShellguardShellguardMonitorHead2 - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -10,7 +9,6 @@ - type: marking id: IpcShellguardShellguardMonitorHead1 - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -20,7 +18,6 @@ - type: marking id: IpcShellguardShellguardMainLLeg1 - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -30,7 +27,6 @@ - type: marking id: IpcShellguardShellguardMainRHand2 - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -40,7 +36,6 @@ - type: marking id: IpcShellguardShellguardMainLFoot1 - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -50,7 +45,6 @@ - type: marking id: IpcShellguardShellguardMainLHand1 - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -60,7 +54,6 @@ - type: marking id: IpcShellguardShellguardMainRArm2 - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -70,7 +63,6 @@ - type: marking id: IpcShellguardShellguardMainTorso2 - bodyPart: Chest groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -80,7 +72,6 @@ - type: marking id: IpcShellguardShellguardMainTorso1 - bodyPart: Chest groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -90,7 +81,6 @@ - type: marking id: IpcShellguardShellguardMainLArm2 - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -100,7 +90,6 @@ - type: marking id: IpcShellguardShellguardMainRHand1 - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -110,7 +99,6 @@ - type: marking id: IpcShellguardShellguardMainRLeg2 - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -120,7 +108,6 @@ - type: marking id: IpcShellguardShellguardMainRLeg1 - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -130,7 +117,6 @@ - type: marking id: IpcShellguardShellguardMainLArm1 - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -140,7 +126,6 @@ - type: marking id: IpcShellguardShellguardMainLHand2 - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -150,7 +135,6 @@ - type: marking id: IpcShellguardShellguardMainRArm1 - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -160,7 +144,6 @@ - type: marking id: IpcShellguardShellguardMainRFoot2 - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -170,7 +153,6 @@ - type: marking id: IpcShellguardShellguardMainRFoot1 - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -180,7 +162,6 @@ - type: marking id: IpcShellguardShellguardMainLFoot2 - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -190,7 +171,6 @@ - type: marking id: IpcShellguardShellguardMainLLeg2 - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -200,7 +180,6 @@ - type: marking id: IpcShellguardShellguardAlt1Head2 - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -210,7 +189,6 @@ - type: marking id: IpcShellguardShellguardAlt1Head1 - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -220,7 +198,6 @@ - type: marking id: IpcZenghuZenghuMainLLeg1 - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -230,7 +207,6 @@ - type: marking id: IpcZenghuZenghuMainRHand2 - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -240,7 +216,6 @@ - type: marking id: IpcZenghuZenghuMainLFoot1 - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -250,7 +225,6 @@ - type: marking id: IpcZenghuZenghuMainLHand1 - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -260,7 +234,6 @@ - type: marking id: IpcZenghuZenghuMainRArm2 - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -270,7 +243,6 @@ - type: marking id: IpcZenghuZenghuMainTorso2 - bodyPart: Chest groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -280,7 +252,6 @@ - type: marking id: IpcZenghuZenghuMainTorso1 - bodyPart: Chest groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -290,7 +261,6 @@ - type: marking id: IpcZenghuZenghuMainLArm2 - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -300,7 +270,6 @@ - type: marking id: IpcZenghuZenghuMainRHand1 - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -310,7 +279,6 @@ - type: marking id: IpcZenghuZenghuMainRLeg2 - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -320,7 +288,6 @@ - type: marking id: IpcZenghuZenghuMainGroin - bodyPart: Chest groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -330,7 +297,6 @@ - type: marking id: IpcZenghuZenghuMainRLeg1 - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -340,7 +306,6 @@ - type: marking id: IpcZenghuZenghuMainHead2 - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -350,7 +315,6 @@ - type: marking id: IpcZenghuZenghuMainLArm1 - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -360,7 +324,6 @@ - type: marking id: IpcZenghuZenghuMainLHand2 - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -370,7 +333,6 @@ - type: marking id: IpcZenghuZenghuMainRArm1 - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -380,7 +342,6 @@ - type: marking id: IpcZenghuZenghuMainRFoot2 - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -390,7 +351,6 @@ - type: marking id: IpcZenghuZenghuMainRFoot1 - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -400,7 +360,6 @@ - type: marking id: IpcZenghuZenghuMainLFoot2 - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -410,7 +369,6 @@ - type: marking id: IpcZenghuZenghuMainHead1 - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -420,7 +378,6 @@ - type: marking id: IpcZenghuZenghuMainLLeg2 - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -430,7 +387,6 @@ - type: marking id: IpcHesphiastosHesphiastosMainLLeg1 - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -440,7 +396,6 @@ - type: marking id: IpcHesphiastosHesphiastosMainRHand2 - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -450,7 +405,6 @@ - type: marking id: IpcHesphiastosHesphiastosMainLFoot1 - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -460,7 +414,6 @@ - type: marking id: IpcHesphiastosHesphiastosMainLHand1 - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -470,7 +423,6 @@ - type: marking id: IpcHesphiastosHesphiastosMainRArm2 - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -480,7 +432,6 @@ - type: marking id: IpcHesphiastosHesphiastosMainTorso2 - bodyPart: Chest groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -490,7 +441,6 @@ - type: marking id: IpcHesphiastosHesphiastosMainTorso1 - bodyPart: Chest groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -500,7 +450,6 @@ - type: marking id: IpcHesphiastosHesphiastosMainLArm2 - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -510,7 +459,6 @@ - type: marking id: IpcHesphiastosHesphiastosMainRHand1 - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -520,7 +468,6 @@ - type: marking id: IpcHesphiastosHesphiastosMainRLeg2 - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -530,7 +477,6 @@ - type: marking id: IpcHesphiastosHesphiastosMainRLeg1 - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -540,7 +486,6 @@ - type: marking id: IpcHesphiastosHesphiastosMainLArm1 - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -550,7 +495,6 @@ - type: marking id: IpcHesphiastosHesphiastosMainLHand2 - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -560,7 +504,6 @@ - type: marking id: IpcHesphiastosHesphiastosMainRArm1 - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -570,7 +513,6 @@ - type: marking id: IpcHesphiastosHesphiastosMainRFoot2 - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -580,7 +522,6 @@ - type: marking id: IpcHesphiastosHesphiastosMainRFoot1 - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -590,7 +531,6 @@ - type: marking id: IpcHesphiastosHesphiastosMainLFoot2 - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -600,7 +540,6 @@ - type: marking id: IpcHesphiastosHesphiastosMainLLeg2 - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -610,7 +549,6 @@ - type: marking id: IpcHesphiastosHesphiastosMonitorHead2 - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -620,7 +558,6 @@ - type: marking id: IpcHesphiastosHesphiastosMonitorHead1 - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -630,7 +567,6 @@ - type: marking id: IpcHesphiastosHesphiastosAlt1Head2 - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -640,7 +576,6 @@ - type: marking id: IpcHesphiastosHesphiastosAlt1Head3 - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -650,7 +585,6 @@ - type: marking id: IpcHesphiastosHesphiastosAlt1Head1 - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -660,7 +594,6 @@ - type: marking id: IpcBishopBishopMonitorHead2 - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -670,7 +603,6 @@ - type: marking id: IpcBishopBishopMonitorHead - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -680,7 +612,6 @@ - type: marking id: IpcBishopBishopAlt1Head - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -690,7 +621,6 @@ - type: marking id: IpcBishopBishopMainLArmCombined - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -700,7 +630,6 @@ - type: marking id: IpcBishopBishopMainTorsoPrimary - bodyPart: Chest groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -710,7 +639,6 @@ - type: marking id: IpcBishopBishopMainLLegSecondary - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -720,7 +648,6 @@ - type: marking id: IpcBishopBishopMainRArmPrimary - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -730,7 +657,6 @@ - type: marking id: IpcBishopBishopMainLArmTertiary - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -740,7 +666,6 @@ - type: marking id: IpcBishopBishopMainRHand - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -750,7 +675,6 @@ - type: marking id: IpcBishopBishopMainLArmPrimary - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -760,7 +684,6 @@ - type: marking id: IpcBishopBishopMainRLegPrimary - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -770,7 +693,6 @@ - type: marking id: IpcBishopBishopMainTorsoSecondary - bodyPart: Chest groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -780,7 +702,6 @@ - type: marking id: IpcBishopBishopMainRLegCombined - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -790,7 +711,6 @@ - type: marking id: IpcBishopBishopMainRArmSecondary - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -800,7 +720,6 @@ - type: marking id: IpcBishopBishopMainHead - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -810,7 +729,6 @@ - type: marking id: IpcBishopBishopMainLFoot - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -820,7 +738,6 @@ - type: marking id: IpcBishopBishopMainLArmSecondary - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -830,7 +747,6 @@ - type: marking id: IpcBishopBishopMainLLegPrimary - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -840,7 +756,6 @@ - type: marking id: IpcBishopBishopMainRArmTertiary - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -850,7 +765,6 @@ - type: marking id: IpcBishopBishopMainLHand - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -860,7 +774,6 @@ - type: marking id: IpcBishopBishopMainLLegCombined - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -870,7 +783,6 @@ - type: marking id: IpcBishopBishopMainRFoot - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -880,7 +792,6 @@ - type: marking id: IpcBishopBishopMainRLegSecondary - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -890,7 +801,6 @@ - type: marking id: IpcBishopBishopMainRArmCombined - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -900,7 +810,6 @@ - type: marking id: IpcMorpheusMorpheusAlt1Head - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -910,7 +819,6 @@ - type: marking id: IpcMorpheusMorpheusMainRHand - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -920,7 +828,6 @@ - type: marking id: IpcMorpheusMorpheusMainLArm - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -930,7 +837,6 @@ - type: marking id: IpcMorpheusMorpheusMainTorso - bodyPart: Chest groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -940,7 +846,6 @@ - type: marking id: IpcMorpheusMorpheusMainHead - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -950,7 +855,6 @@ - type: marking id: IpcMorpheusMorpheusMainRLeg - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -960,7 +864,6 @@ - type: marking id: IpcMorpheusMorpheusMainLFoot - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -970,7 +873,6 @@ - type: marking id: IpcMorpheusMorpheusMainLHand - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -980,7 +882,6 @@ - type: marking id: IpcMorpheusMorpheusMainRArm - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -990,7 +891,6 @@ - type: marking id: IpcMorpheusMorpheusMainRFoot - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1000,7 +900,6 @@ - type: marking id: IpcMorpheusMorpheusMainLLeg - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1010,7 +909,6 @@ - type: marking id: IpcWardtakahashiWardtakahashiMainRHand - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1020,7 +918,6 @@ - type: marking id: IpcWardtakahashiWardtakahashiMainLArm - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1030,7 +927,6 @@ - type: marking id: IpcWardtakahashiWardtakahashiMainTorso - bodyPart: Chest groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1040,7 +936,6 @@ - type: marking id: IpcWardtakahashiWardtakahashiMainHead - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1050,7 +945,6 @@ - type: marking id: IpcWardtakahashiWardtakahashiMainRLeg - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1060,7 +954,6 @@ - type: marking id: IpcWardtakahashiWardtakahashiMainLFoot - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1070,7 +963,6 @@ - type: marking id: IpcWardtakahashiWardtakahashiMainLHand - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1080,7 +972,6 @@ - type: marking id: IpcWardtakahashiWardtakahashiMainRArm - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1090,7 +981,6 @@ - type: marking id: IpcWardtakahashiWardtakahashiMainRFoot - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1100,7 +990,6 @@ - type: marking id: IpcWardtakahashiWardtakahashiMainLLeg - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1110,7 +999,6 @@ - type: marking id: IpcWardtakahashiWardtakahashiMonitorHead - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1120,7 +1008,6 @@ - type: marking id: IpcWardtakahashiWardtakahashiAlt1Head - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1130,7 +1017,6 @@ - type: marking id: IpcXionXionMonitorHead2 - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1140,7 +1026,6 @@ - type: marking id: IpcXionXionMonitorHead1 - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1150,7 +1035,6 @@ - type: marking id: IpcXionXionMainLLeg1 - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1160,7 +1044,6 @@ - type: marking id: IpcXionXionMainRHand2 - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1170,7 +1053,6 @@ - type: marking id: IpcXionXionMainLFoot1 - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1180,7 +1062,6 @@ - type: marking id: IpcXionXionMainLHand1 - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1190,7 +1071,6 @@ - type: marking id: IpcXionXionMainRArm2 - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1200,7 +1080,6 @@ - type: marking id: IpcXionXionMainTorso2 - bodyPart: Chest groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1210,7 +1089,6 @@ - type: marking id: IpcXionXionMainTorso1 - bodyPart: Chest groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1220,7 +1098,6 @@ - type: marking id: IpcXionXionMainLArm2 - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1230,7 +1107,6 @@ - type: marking id: IpcXionXionMainRHand1 - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1240,7 +1116,6 @@ - type: marking id: IpcXionXionMainRLeg2 - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1250,7 +1125,6 @@ - type: marking id: IpcXionXionMainRLeg1 - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1260,7 +1134,6 @@ - type: marking id: IpcXionXionMainLArm1 - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1270,7 +1143,6 @@ - type: marking id: IpcXionXionMainLHand2 - bodyPart: LArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1280,7 +1152,6 @@ - type: marking id: IpcXionXionMainRArm1 - bodyPart: RArm groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1290,7 +1161,6 @@ - type: marking id: IpcXionXionMainRFoot2 - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1300,7 +1170,6 @@ - type: marking id: IpcXionXionMainRFoot1 - bodyPart: RLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1310,7 +1179,6 @@ - type: marking id: IpcXionXionMainLFoot2 - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1320,7 +1188,6 @@ - type: marking id: IpcXionXionMainLLeg2 - bodyPart: LLeg groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1330,7 +1197,6 @@ - type: marking id: IpcXionXionAlt1Head2 - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors @@ -1340,7 +1206,6 @@ - type: marking id: IpcXionXionAlt1Head1 - bodyPart: Head groupWhitelist: [Ipc] sponsorOnly: true # Corvax-Sponsors diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/tajaran.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/tajaran.yml index b0c3d8dcfb6..928e394f9db 100644 --- a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/tajaran.yml +++ b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/tajaran.yml @@ -1,6 +1,5 @@ - type: marking id: TajaranPatch - bodyPart: Chest groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -10,7 +9,6 @@ - type: marking id: TajaranSkeletonBody - bodyPart: Chest groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -20,7 +18,6 @@ # - type: marking # id: Points -# # bodyPart: Chest # groupWhitelist: [Tajaran] # sponsorOnly: true # Corvax-Sponsors @@ -30,7 +27,6 @@ - type: marking id: TajaranBlotsBody - bodyPart: Chest groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -40,7 +36,6 @@ - type: marking id: TajaranStripesBody - bodyPart: Chest groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -50,7 +45,6 @@ # - type: marking # id: GradientRleg -# markingCategory: Legs # bodyPart: RFoot # groupWhitelist: [Tajaran] # sponsorOnly: true # Corvax-Sponsors @@ -60,7 +54,6 @@ # - type: marking # id: GradientLleg -# markingCategory: Legs # bodyPart: LFoot # groupWhitelist: [Tajaran] # sponsorOnly: true # Corvax-Sponsors @@ -70,7 +63,6 @@ - type: marking id: TajaranGradientLhand - bodyPart: LHand groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -80,7 +72,6 @@ - type: marking id: TajaranGradientLarm - bodyPart: LArm groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -90,7 +81,6 @@ - type: marking id: TajaranGradientRhand - bodyPart: RHand groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -100,7 +90,6 @@ - type: marking id: TajaranGradientRarm - bodyPart: RArm groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -110,7 +99,6 @@ - type: marking id: TajaranSpikey - bodyPart: Hair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -120,7 +108,6 @@ - type: marking id: TajaranTajaranHairLadiesretro - bodyPart: Hair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -130,7 +117,6 @@ - type: marking id: TajaranHairBraid - bodyPart: Hair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -140,7 +126,6 @@ - type: marking id: TajaranHairEyebrows - bodyPart: Hair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -150,7 +135,6 @@ - type: marking id: TajaranHairPigtail - bodyPart: Hair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -160,7 +144,6 @@ - type: marking id: TajaranHairCurly - bodyPart: Hair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -170,7 +153,6 @@ - type: marking id: TajaranHairBob - bodyPart: Hair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -180,7 +162,6 @@ - type: marking id: TajaranHairFingerwave - bodyPart: Hair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -190,7 +171,6 @@ - type: marking id: TajaranHairPlait - bodyPart: Hair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -200,7 +180,6 @@ - type: marking id: TajaranHairPonytail - bodyPart: Hair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -210,7 +189,6 @@ - type: marking id: TajaranHairClean - bodyPart: Hair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -220,7 +198,6 @@ - type: marking id: TajaranHairRattail - bodyPart: Hair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -230,7 +207,6 @@ - type: marking id: TajaranHairBedhead - bodyPart: Hair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -240,7 +216,6 @@ - type: marking id: TajaranHairVictory - bodyPart: Hair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -250,7 +225,6 @@ - type: marking id: TajaranHairShaggy - bodyPart: Hair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -260,7 +234,6 @@ - type: marking id: TajaranHairMohawk - bodyPart: Hair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -270,7 +243,6 @@ - type: marking id: TajaranHairBangs - bodyPart: Hair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -280,7 +252,6 @@ - type: marking id: TajaranHairMessy - bodyPart: Hair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -290,7 +261,6 @@ - type: marking id: TajaranHairStraight - bodyPart: Hair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -300,7 +270,6 @@ - type: marking id: TajaranHairLong - bodyPart: Hair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -310,7 +279,6 @@ - type: marking id: TajaranMustache2 - bodyPart: FacialHair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -320,7 +288,6 @@ - type: marking id: TajaranBeard - bodyPart: FacialHair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -330,7 +297,6 @@ - type: marking id: TajaranMustache3 - bodyPart: FacialHair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -340,7 +306,6 @@ - type: marking id: TajaranCheeks - bodyPart: FacialHair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -350,7 +315,6 @@ - type: marking id: TajaranMustache - bodyPart: FacialHair groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -360,7 +324,6 @@ - type: marking id: TajaranPatch2 - bodyPart: Head groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -370,7 +333,6 @@ - type: marking id: TajaranEyeStripesHead - bodyPart: Head groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -380,7 +342,6 @@ - type: marking id: TajaranOutears - bodyPart: HeadTop groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -390,7 +351,6 @@ - type: marking id: TajaranTigerHead - bodyPart: Head groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -400,7 +360,6 @@ - type: marking id: TajaranMuzzle - bodyPart: Snout groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -410,7 +369,6 @@ - type: marking id: TajaranTigerFace - bodyPart: Head groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -420,7 +378,6 @@ - type: marking id: TajaranStarHead - bodyPart: Head groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -430,7 +387,6 @@ - type: marking id: TajaranInears - bodyPart: HeadTop groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -440,7 +396,6 @@ - type: marking id: TajaranNose - bodyPart: Snout groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -450,7 +405,6 @@ - type: marking id: TajaranRaccoon-head - bodyPart: Head groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -460,7 +414,6 @@ - type: marking id: TajaranManeHead - bodyPart: Head groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -470,7 +423,6 @@ - type: marking id: TajaranMuzzleinears - bodyPart: Snout groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -480,7 +432,6 @@ - type: marking id: TajaranTailFluffy - bodyPart: Tail groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -491,7 +442,6 @@ - type: marking id: TajaranBelly2 - bodyPart: Chest groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -501,7 +451,6 @@ - type: marking id: TajaranChest - bodyPart: Chest groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -511,7 +460,6 @@ - type: marking id: TajaranBelly1 - bodyPart: Chest groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -521,7 +469,6 @@ - type: marking id: TajaranBelly3 - bodyPart: Chest groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -532,7 +479,6 @@ - type: marking id: TajaranTailM bodyPart: Tail - groupWhitelist: [] sprites: - sprite: Corvax/Mobs/Customization/Tajaran/tajaran_tail.rsi @@ -541,7 +487,6 @@ - type: marking id: TajaranTailRing bodyPart: Tail - groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors sprites: @@ -552,7 +497,6 @@ - type: marking id: TajaranTailSkeleton - bodyPart: Tail groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -564,7 +508,6 @@ - type: marking id: TajaranTailTip - bodyPart: Tail groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -576,7 +519,6 @@ - type: marking id: TajaranTailFluffySkeleton - bodyPart: Tail groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -589,7 +531,6 @@ - type: marking id: TajaranTailWingler1 - bodyPart: Tail groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -601,7 +542,6 @@ - type: marking id: TajaranTailWingler2 - bodyPart: Tail groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -613,7 +553,6 @@ - type: marking id: TajaranTailWingler3 - bodyPart: Tail groupWhitelist: [Tajaran] sponsorOnly: true # Corvax-Sponsors @@ -627,7 +566,6 @@ - type: marking id: TajaranTailFluffyAnimated bodyPart: Tail - groupWhitelist: [] sprites: - sprite: Corvax/Mobs/Customization/Tajaran/tajaran_tail.rsi @@ -635,7 +573,6 @@ - type: marking id: TailWingler1Animated - bodyPart: Tail groupWhitelist: [] sprites: @@ -646,7 +583,6 @@ - type: marking id: TailWingler2Animated - bodyPart: Tail groupWhitelist: [] sprites: @@ -657,7 +593,6 @@ - type: marking id: TailWingler3Animated - bodyPart: Tail groupWhitelist: [] sprites: @@ -669,7 +604,6 @@ - type: marking id: TailFluffySkeletonAnimated bodyPart: Tail - groupWhitelist: [] sprites: - sprite: Corvax/Mobs/Customization/Tajaran/tajaran_tail.rsi @@ -679,7 +613,6 @@ - type: marking id: TailTipAnimated - bodyPart: Tail groupWhitelist: [] sprites: @@ -692,7 +625,6 @@ - type: marking id: TajaranTailMAnimated bodyPart: Tail - groupWhitelist: [] sprites: - sprite: Corvax/Mobs/Customization/Tajaran/tajaran_tail.rsi @@ -701,7 +633,6 @@ - type: marking id: TailRingAnimated bodyPart: Tail - groupWhitelist: [] sprites: - sprite: Corvax/Mobs/Customization/Tajaran/tajaran_tail.rsi @@ -711,7 +642,6 @@ - type: marking id: TailSkeletonAnimated - bodyPart: Tail groupWhitelist: [] sprites: diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/vulpkanin.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/vulpkanin.yml index 38dbead6b79..650f0bc7fd1 100644 --- a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/vulpkanin.yml +++ b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/vulpkanin.yml @@ -1,6 +1,5 @@ - type: marking id: PawSocks - bodyPart: RFoot #highest possible layer groupWhitelist: [Vulpkanin] sponsorOnly: true # Corvax-Sponsors @@ -22,7 +21,6 @@ - type: marking id: FoxEar bodyPart: HeadTop - groupWhitelist: [Vulpkanin] sponsorOnly: true # Corvax-Sponsors sprites: @@ -34,7 +32,6 @@ - type: marking id: WolfTail bodyPart: Tail - groupWhitelist: [Vulpkanin] sponsorOnly: true # Corvax-Sponsors sprites: @@ -46,7 +43,6 @@ - type: marking id: FoxBelly bodyPart: Chest - groupWhitelist: [Vulpkanin] sponsorOnly: true # Corvax-Sponsors sprites: @@ -56,7 +52,6 @@ - type: marking id: FoxSnout bodyPart: Snout - groupWhitelist: [Vulpkanin] sponsorOnly: false # Corvax-Sponsors sprites: @@ -67,7 +62,6 @@ - type: marking id: FoxTailAnimated bodyPart: Tail - groupWhitelist: [] sprites: - sprite: Corvax/Mobs/Customization/vulpkanin.rsi @@ -78,7 +72,6 @@ - type: marking id: WolfTailAnimated bodyPart: Tail - groupWhitelist: [] sprites: - sprite: Corvax/Mobs/Customization/vulpkanin.rsi From b10036943e1d526919a15a56c13dbf9199a89e1d Mon Sep 17 00:00:00 2001 From: MetalSage <74924875+MetalSage@users.noreply.github.com> Date: Sun, 29 Mar 2026 22:49:26 +0400 Subject: [PATCH 600/603] =?UTF-8?q?=D0=93=D0=BB=D0=BE=D0=B1=D0=B0=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D0=BE=D0=B5=20=D1=80=D0=B5=D1=84=D0=BE=D1=80=D0=BC?= =?UTF-8?q?=D0=B0=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BB=D0=BE=D0=BA=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D0=B8=20=E2=84=962=20(#3543)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: MetalSage --- Resources/Locale/ru-RU/HUD/game-hud.ftl | 2 +- Resources/Locale/ru-RU/_lib.ftl | 68 +- Resources/Locale/ru-RU/accent/cowboy.ftl | 48 - Resources/Locale/ru-RU/accent/dwarf.ftl | 424 ------ Resources/Locale/ru-RU/accent/german.ftl | 166 --- Resources/Locale/ru-RU/accent/italian.ftl | 151 -- Resources/Locale/ru-RU/accent/russian.ftl | 2 +- Resources/Locale/ru-RU/accent/scottish.ftl | 233 +++ Resources/Locale/ru-RU/accent/southern.ftl | 15 - .../components/agent-id-card-component.ftl | 13 +- .../Locale/ru-RU/access/components/genpop.ftl | 25 +- .../systems/access-overrider-system.ftl | 1 + .../access/systems/access-reader-system.ftl | 2 +- .../Locale/ru-RU/actions/actions/diona.ftl | 2 +- .../ru-RU/actions/actions/internals.ftl | 13 +- .../ru-RU/administration/admin-verbs.ftl | 3 +- .../Locale/ru-RU/administration/bwoink.ftl | 12 +- .../commands/add-uplink-command.ftl | 2 +- .../administration/commands/adminnotes.ftl | 5 +- .../commands/connection-commands.ftl | 3 +- .../commands/control-mob-command.ftl | 2 +- ...delete-entities-with-component-command.ftl | 7 +- .../administration/commands/osay-command.ftl | 2 +- .../commands/rejuvenate-command.ftl | 7 +- .../commands/stealthmin-command.ftl | 3 +- .../Locale/ru-RU/administration/smites.ftl | 2 +- .../ru-RU/administration/ui/admin-notes.ftl | 6 +- .../ui/manage-solutions/add-reagent.ftl | 2 +- .../ui/set-outfit/set-outfit-menu.ftl | 2 +- .../ru-RU/advertisements/other/firebot.ftl | 2 +- .../advertisements/vending/clothesmate.ftl | 2 +- .../ru-RU/advertisements/vending/nanomed.ftl | 2 +- .../advertisements/vending/robodrobe.ftl | 2 +- .../advertisements/vending/sovietsoda.ftl | 2 +- Resources/Locale/ru-RU/alerts/alerts.ftl | 3 + .../ame/components/ame-part-component.ftl | 2 +- Resources/Locale/ru-RU/anomaly/anomaly.ftl | 41 +- .../Locale/ru-RU/anomaly/inner_anomaly.ftl | 2 +- Resources/Locale/ru-RU/arcade/blockgame.ftl | 3 +- Resources/Locale/ru-RU/atmos/air-alarm-ui.ftl | 23 +- .../ru-RU/atmos/atmos-alerts-console.ftl | 2 +- .../Locale/ru-RU/atmos/atmos-pipe-layers.ftl | 2 +- .../ru-RU/atmos/flammable-component.ftl | 2 +- .../ru-RU/atmos/gas-miner-component.ftl | 2 +- .../atmos/gas-pressure-regulator-system.ftl | 9 +- .../Locale/ru-RU/atmos/gas-valve-system.ftl | 9 +- .../ru-RU/atmos/gas-volume-pump-system.ftl | 11 +- .../ru-RU/barsign/barsign-component.ftl | 1 + .../bed/cryostorage/cryogenic-storage.ftl | 13 +- .../body-scanner/body-scanner-component.ftl | 2 +- Resources/Locale/ru-RU/borg/borg.ftl | 1 + Resources/Locale/ru-RU/bql/bql-select.ftl | 3 +- Resources/Locale/ru-RU/burial/burial.ftl | 2 +- Resources/Locale/ru-RU/burning/bodyburn.ftl | 2 +- .../ru-RU/cable/cable-multitool-system.ftl | 15 +- .../extinguish-on-interact-component.ftl | 2 +- Resources/Locale/ru-RU/cargo/bounties.ftl | 9 +- .../ru-RU/cargo/cargo-bounty-console.ftl | 2 +- .../ru-RU/cargo/cargo-console-component.ftl | 26 +- .../cargo/cargo-order-database-component.ftl | 2 +- .../ru-RU/cartridge-loader/cartridges.ftl | 24 +- .../components/magic-mirror-component.ftl | 1 - .../ru-RU/chat/commands/ghost-command.ftl | 5 +- .../ru-RU/chat/commands/suicide-command.ftl | 9 +- Resources/Locale/ru-RU/chat/emotes.ftl | 2 + Resources/Locale/ru-RU/chat/highlights.ftl | 1 + .../ru-RU/chat/managers/chat-manager.ftl | 2 +- Resources/Locale/ru-RU/chat/ui/chat-box.ftl | 14 +- .../components/injector-component.ftl | 42 +- .../chemistry/components/mixing-component.ftl | 2 +- .../components/rehydratable-component.ftl | 2 +- .../components/solution-scanner-component.ftl | 2 +- .../shared-solution-container-component.ftl | 38 +- .../ru-RU/climbing/climbable-component.ftl | 2 +- .../ru-RU/cloning/accept-cloning-window.ftl | 8 +- Resources/Locale/ru-RU/clothing/belts.ftl | 2 +- .../components/insulated-component.ftl | 2 + .../Locale/ru-RU/commands/actions-command.ftl | 2 +- .../ru-RU/commands/colornetwork-command.ftl | 2 +- .../Locale/ru-RU/commands/credits-command.ftl | 2 +- .../Locale/ru-RU/commands/deadmin-command.ftl | 5 +- .../commands/debug-pathfinding-command.ftl | 2 +- .../ru-RU/commands/delaystart-command.ftl | 5 +- .../commands/delete-component-command.ftl | 11 +- .../commands/grouping-entity-menu-command.ftl | 2 +- .../ru-RU/commands/node-vis-commands.ftl | 5 +- .../ru-RU/commands/open-a-help-command.ftl | 2 +- .../Locale/ru-RU/commands/pardon-command.ftl | 5 +- .../ru-RU/commands/powerstat-command.ftl | 9 +- .../ru-RU/commands/quick-inspect-command.ftl | 3 +- .../Locale/ru-RU/commands/role-commands.ftl | 5 +- .../commands/set-menu-visibility-command.ftl | 2 +- .../ru-RU/commands/substepatmos-command.ftl | 6 +- .../ru-RU/commands/toggle-outline-command.ftl | 2 +- .../ru-RU/commands/toolshed/acmd-command.ftl | 6 +- .../toolshed/addaccesslog-command.ftl | 3 +- .../commands/toolshed/admins-command.ftl | 6 +- .../commands/toolshed/inventory-command.ftl | 2 + .../commands/toolshed/jobboard-command.ftl | 3 +- .../ru-RU/commands/toolshed/jobs-command.ftl | 18 +- .../ru-RU/commands/toolshed/laws-command.ftl | 6 +- .../commands/toolshed/marked-command.ftl | 3 +- .../ru-RU/commands/toolshed/mind-command.ftl | 6 +- .../commands/toolshed/polymorph-command.ftl | 3 +- .../commands/toolshed/rejuvenate-command.ftl | 3 +- .../commands/toolshed/runverbas-command.ftl | 3 +- .../ru-RU/commands/toolshed/scale-command.ftl | 15 +- .../commands/toolshed/solution-command.ftl | 6 +- .../toolshed/stationevent-command.ftl | 12 +- .../commands/toolshed/stations-command.ftl | 30 +- .../toolshed/statuseffect-command.ftl | 2 +- .../commands/toolshed/storage-command.ftl | 2 + .../ru-RU/commands/toolshed/tag-command.ftl | 18 +- .../commands/toolshed/unpolymorph-command.ftl | 3 +- .../commands/toolshed/visualize-command.ftl | 3 +- .../toolshed/xenoartifact-command.ftl | 15 +- .../components/atmos-monitoring-component.ftl | 2 +- .../ru-RU/components/gas-filter-component.ftl | 4 - .../ru-RU/components/gas-mixer-component.ftl | 4 - .../ru-RU/components/gas-pump-component.ftl | 4 - .../gas-thermomachine-component.ftl | 3 - .../ru-RU/components/ghost-component.ftl | 22 +- .../ru-RU/components/screen-component.ftl | 2 +- .../components/space-heater-component.ftl | 2 - .../configurable/configuration-component.ftl | 2 +- .../Locale/ru-RU/connection-messages.ftl | 18 +- .../construction-component-verbs.ftl | 2 +- .../components/machine-board-component.ftl | 2 +- .../ru-RU/construction/conditions/locked.ftl | 2 +- .../construction-ghost-component.ftl | 2 +- .../component-construction-graph-step.ftl | 2 +- .../material-construction-graph-step.ftl | 2 +- .../prototype-construction-graph-step.ftl | 2 +- .../steps/tool-construction-graph-step.ftl | 2 +- .../Locale/ru-RU/containers/containers.ftl | 2 +- .../ru-RU/contraband/contraband-severity.ftl | 16 +- .../entities/invisible_hand_teleporter.ftl | 8 - .../cuffs/components/cuffable-component.ftl | 33 +- .../cuffs/components/handcuff-component.ftl | 39 +- .../Locale/ru-RU/damage/damage-command.ftl | 2 +- .../ru-RU/damage/damage-popup-component.ftl | 4 +- .../Locale/ru-RU/damage/rejuvenate-verb.ftl | 2 +- Resources/Locale/ru-RU/darts/darts-popup.ftl | 2 +- Resources/Locale/ru-RU/defusable/examine.ftl | 20 +- .../ru-RU/delivery/delivery-component.ftl | 28 +- .../Locale/ru-RU/delivery/delivery-spam.ftl | 549 ++++--- .../Locale/ru-RU/devices/device-network.ftl | 2 + .../ru-RU/devices/network-configurator.ftl | 14 +- .../ru-RU/discord/watchlist-connections.ftl | 21 +- Resources/Locale/ru-RU/disease/disease.ftl | 2 +- Resources/Locale/ru-RU/disease/miasma.ftl | 30 +- .../disposal/tube-connections-command.ftl | 2 +- .../components/disposal-tube-component.ftl | 2 +- .../doors/components/airlock-component.ftl | 2 +- Resources/Locale/ru-RU/doors/door.ftl | 2 +- .../ru-RU/drag-drop/drag-drop-system.ftl | 2 +- .../electrocution/electrocuted-component.ftl | 2 +- .../entity-systems/bin-system/bin-system.ftl | 5 + .../ru-RU/entity-systems/bin/bin-system.ftl | 6 - .../ru-RU/escape-menu/ui/escape-menu.ftl | 2 +- .../ru-RU/escape-menu/ui/options-menu.ftl | 48 +- Resources/Locale/ru-RU/fax/fax.ftl | 7 + .../ru-RU/feedbackpopup/feedbackpopup.ftl | 28 + .../components/foldable-component.ftl | 2 +- Resources/Locale/ru-RU/forensics/fibers.ftl | 2 - Resources/Locale/ru-RU/forensics/residues.ftl | 2 +- .../game-presets/preset-allatonce.ftl | 2 +- .../game-presets/preset-revolutionary.ftl | 40 +- .../game-presets/preset-survival.ftl | 2 +- .../game-presets/preset-wizard.ftl | 6 +- .../game-presets/preset-xenoborgs.ftl | 4 +- .../game-presets/preset-zombies.ftl | 18 +- .../game-rules/rule-death-match.ftl | 2 +- .../game-ticking/game-rules/rule-traitor.ftl | 2 +- .../ru-RU/game-ticking/game-rules/rules.ftl | 22 +- .../Locale/ru-RU/game-ticking/game-ticker.ftl | 35 +- .../game-ticking/set-game-preset-command.ftl | 22 +- Resources/Locale/ru-RU/ghost/ghost-gui.ftl | 4 +- .../ghost/roles/ghost-role-component.ftl | 90 +- .../ghostrole-spawner-verb-selectable.ftl | 2 +- .../ghost/roles/make-ghost-role-verb.ftl | 2 +- .../Locale/ru-RU/guidebook/chemistry/core.ftl | 36 +- Resources/Locale/ru-RU/guidebook/cooking.ftl | 2 +- .../guidebook/entity-effects/conditions.ftl | 53 +- .../guidebook/entity-effects/effects.ftl | 242 ++-- .../guidebook/entity-effects/healthchange.ftl | 2 +- Resources/Locale/ru-RU/guidebook/guides.ftl | 3 +- Resources/Locale/ru-RU/guidebook/verb.ftl | 2 +- .../health-examinable-carbon.ftl | 30 +- Resources/Locale/ru-RU/holopad/holopad.ftl | 2 +- .../ru-RU/immovable-rod/immovable-rod.ftl | 11 +- Resources/Locale/ru-RU/info/ban.ftl | 3 +- .../instruments/instruments-component.ftl | 11 +- .../Locale/ru-RU/intellicard/intellicard.ftl | 2 +- .../interaction/in-range-unoccluded-verb.ftl | 2 +- .../components/inventory-component.ftl | 2 +- .../human-inventory-interface-controller.ftl | 2 +- .../multi-handed-item-component.ftl | 11 +- Resources/Locale/ru-RU/job/job.ftl | 2 +- .../Locale/ru-RU/job/role-ban-command.ftl | 8 +- .../kitchen/components/handheld-grinder.ftl | 10 +- .../components/kitchen-spike-component.ftl | 51 +- .../components/microwave-component.ftl | 2 - .../Locale/ru-RU/late-join/late-join-gui.ftl | 13 +- .../Locale/ru-RU/lathe/ui/lathe-menu.ftl | 29 +- .../ru-RU/launcher/launcher-connecting.ftl | 5 +- .../components/light-replacer-component.ftl | 2 +- .../components/powered-ligth-component.ftl | 2 +- .../unpowered-flashlight-component.ftl | 2 +- .../ru-RU/limited-charges/limited-charges.ftl | 22 +- Resources/Locale/ru-RU/lobby/lobby-state.ftl | 6 +- .../ru-RU/lock/bypass-lock-component.ftl | 2 +- .../Locale/ru-RU/logic-gates/logic-gates.ftl | 18 +- .../components/signal-linker-component.ftl | 2 +- .../Locale/ru-RU/magic/spells-actions.ftl | 2 +- .../Locale/ru-RU/main-menu/main-menu.ftl | 10 +- Resources/Locale/ru-RU/mapping/editor.ftl | 2 +- Resources/Locale/ru-RU/markings/gauze.ftl | 45 + Resources/Locale/ru-RU/markings/moth.ftl | 2 +- Resources/Locale/ru-RU/markings/scars.ftl | 2 +- .../Locale/ru-RU/markings/undergarment.ftl | 2 +- Resources/Locale/ru-RU/markings/vulpkanin.ftl | 3 + Resources/Locale/ru-RU/mass-media/news-ui.ftl | 16 +- Resources/Locale/ru-RU/materials/silo.ftl | 15 +- .../medical/components/cryo-pod-component.ftl | 8 +- .../ru-RU/metabolism/metabolism-component.ftl | 2 +- .../ru-RU/metabolism/metabolism-groups.ftl | 8 - .../ru-RU/metabolism/metabolism-stages.ftl | 6 + .../ru-RU/mind/components/mind-component.ftl | 13 +- .../ru-RU/mind/verbs/control-mob-verb.ftl | 2 +- .../ru-RU/mind/verbs/make-sentient-verb.ftl | 2 +- .../crematorium-entity-storage-component.ftl | 4 +- .../morgue-entity-storage-component.ftl | 2 +- .../ru-RU/navmap-beacons/station-beacons.ftl | 1 + .../ru-RU/navmap-beacons/station_map.ftl | 9 +- .../Locale/ru-RU/ninja/ninja-actions.ftl | 11 +- .../Locale/ru-RU/nukeops/war-declarator.ftl | 11 +- Resources/Locale/ru-RU/nukeops/war-ops.ftl | 11 +- .../components/cream-pied-component.ftl | 15 +- .../examinable-hunger-component.ftl | 52 +- .../nutrition/components/ingestion-system.ftl | 5 + .../components/sliceable-food-component.ftl | 17 +- .../nutrition/components/vape-component.ftl | 2 +- .../objectives/conditions/carp-rifts.ftl | 22 +- .../ru-RU/objectives/conditions/doorjack.ftl | 22 +- .../objectives/conditions/steal-research.ftl | 11 +- .../conditions/steal-target-groups.ftl | 4 +- .../Locale/ru-RU/objectives/round-end.ftl | 11 +- Resources/Locale/ru-RU/pai/pai-system.ftl | 10 +- Resources/Locale/ru-RU/paper/book-atmos.ftl | 105 +- .../Locale/ru-RU/paper/book-authorbooks.ftl | 550 ++++--- Resources/Locale/ru-RU/paper/book-dnd.ftl | 83 +- .../Locale/ru-RU/paper/book-escalation.ftl | 56 +- Resources/Locale/ru-RU/paper/book-gaming.ftl | 60 +- Resources/Locale/ru-RU/paper/book-salvage.ftl | 183 ++- Resources/Locale/ru-RU/paper/envelope.ftl | 7 +- Resources/Locale/ru-RU/paper/paper-misc.ftl | 140 +- .../Locale/ru-RU/paper/story-generation.ftl | 52 +- Resources/Locale/ru-RU/parcel-wrap.ftl | 11 +- ...icle-accelerator-control-box-component.ftl | 2 +- .../component/potted-plant-hide-component.ftl | 2 +- Resources/Locale/ru-RU/plants/mutations.ftl | 2 +- .../players/play-time/play-time-commands.ftl | 3 +- .../pneumatic-cannon-component.ftl | 11 +- .../Locale/ru-RU/pointing/pointing-verb.ftl | 2 +- Resources/Locale/ru-RU/points/points.ftl | 9 +- .../Locale/ru-RU/portal/swap-teleporter.ftl | 11 +- .../ru-RU/power/components/generator.ftl | 11 +- .../components/power-receiver-component.ftl | 2 +- .../power/components/radiation-collector.ftl | 22 +- Resources/Locale/ru-RU/power/verb.ftl | 2 +- .../predictions/magic-9-ball-answers.ftl | 21 + .../humanoid-character-profile.ftl | 8 +- .../ru-RU/preferences/loadout-groups.ftl | 5 +- .../Locale/ru-RU/preferences/loadouts.ftl | 11 +- .../ru-RU/preferences/ui/markings-picker.ftl | 88 +- .../Locale/ru-RU/procedural/expeditions.ftl | 22 +- .../cargo/cargoproduct-descriptions.ftl | 12 + .../ru-RU/pulling/pullable-component.ftl | 2 +- .../components/handheld-radio-component.ftl | 2 +- .../random-metadata-formats.ftl | 18 +- .../rcd/components/rcd-ammo-component.ftl | 11 +- .../ru-RU/rcd/components/rcd-component.ftl | 1 + Resources/Locale/ru-RU/reagents/frostoil.ftl | 2 +- .../Locale/ru-RU/reagents/meta/biological.ftl | 3 + .../Locale/ru-RU/reagents/meta/medicine.ftl | 9 +- .../ru-RU/reagents/norepinephricacid.ftl | 2 +- .../components/recycler-component.ftl | 2 +- Resources/Locale/ru-RU/replays/replays.ftl | 26 +- .../components/research-client-component.ftl | 2 +- .../research/components/robotics-console.ftl | 6 +- .../research/components/technology-disk.ftl | 2 + Resources/Locale/ru-RU/revenant/revenant.ftl | 2 +- .../ru-RU/robust-toolbox/_engine_lib.ftl | 54 +- .../Locale/ru-RU/robust-toolbox/_generic.ftl | 2 +- .../robust-toolbox/client-state-commands.ftl | 10 +- .../ru-RU/robust-toolbox/color-naming.ftl | 8 +- .../Locale/ru-RU/robust-toolbox/commands.ftl | 312 ++-- .../ru-RU/robust-toolbox/custom-controls.ftl | 1 + .../debug-builtin-connection-screen.ftl | 4 +- .../ru-RU/robust-toolbox/discordRPC.ftl | 6 +- .../ru-RU/robust-toolbox/entity-category.ftl | 2 +- .../robust-toolbox/physics/grid_merging.ftl | 2 +- .../Locale/ru-RU/robust-toolbox/replays.ftl | 15 +- .../ru-RU/robust-toolbox/tab-container.ftl | 2 +- .../robust-toolbox/toolshed-commands.ftl | 1 - .../ru-RU/robust-toolbox/uploadfolder.ftl | 12 +- .../components/flippable-component.ftl | 2 +- Resources/Locale/ru-RU/salvage/job-board.ftl | 9 +- .../Locale/ru-RU/salvage/salvage-magnet.ftl | 46 +- .../Locale/ru-RU/sandbox/sandbox-manager.ftl | 1 + .../sensor-monitoring/sensor-monitoring.ftl | 19 +- Resources/Locale/ru-RU/shell.ftl | 19 +- Resources/Locale/ru-RU/shutter/shutter.ftl | 2 +- Resources/Locale/ru-RU/shuttles/arrivals.ftl | 2 +- Resources/Locale/ru-RU/shuttles/console.ftl | 5 +- Resources/Locale/ru-RU/shuttles/emergency.ftl | 22 +- .../silicons/station-ai-fixer-console.ftl | 2 +- .../components/emitter-component.ftl | 5 + .../components/generator-component.ftl | 2 +- Resources/Locale/ru-RU/species/diona.ftl | 2 +- .../ru-RU/spray-painter/spray-painter.ftl | 13 +- .../ss14-ru/prototypes/actions/types.ftl | 4 + .../prototypes/body/animals/animal.ftl | 25 + .../prototypes/body/animals/bloodsucker.ftl | 14 + .../prototypes/body/animals/hemocyanin.ftl | 2 + .../prototypes/body/animals/mothroach.ftl | 2 + .../ss14-ru/prototypes/body/animals/rat.ftl | 5 + .../prototypes/body/animals/ruminant.ftl | 5 + .../prototypes/body/animals/slimes.ftl | 2 + .../ss14-ru/prototypes/body/base_organs.ftl | 48 + .../prototypes/body/organs/animal/animal.ftl | 16 +- .../body/organs/animal/bloodsucker.ftl | 6 - .../prototypes/body/organs/arachnid.ftl | 14 - .../ss14-ru/prototypes/body/organs/diona.ftl | 17 - .../ss14-ru/prototypes/body/organs/dwarf.ftl | 6 - .../ss14-ru/prototypes/body/organs/human.ftl | 24 +- .../ss14-ru/prototypes/body/organs/moth.ftl | 2 - .../ss14-ru/prototypes/body/organs/rat.ftl | 5 +- .../prototypes/body/organs/reptilian.ftl | 2 - .../ss14-ru/prototypes/body/organs/vox.ftl | 13 - .../ss14-ru/prototypes/body/parts/moth.ftl | 2 +- .../ss14-ru/prototypes/body/parts/silicon.ftl | 14 - .../prototypes/body/species/arachnid.ftl | 77 + .../ss14-ru/prototypes/body/species/diona.ftl | 79 + .../ss14-ru/prototypes/body/species/dwarf.ftl | 18 + .../prototypes/body/species/gingerbread.ftl | 42 + .../ss14-ru/prototypes/body/species/human.ftl | 75 + .../ss14-ru/prototypes/body/species/moth.ftl | 77 + .../prototypes/body/species/reptilian.ftl | 75 + .../prototypes/body/species/skeleton.ftl | 40 + .../ss14-ru/prototypes/body/species/slime.ftl | 51 + .../ss14-ru/prototypes/body/species/vox.ftl | 77 + .../prototypes/body/species/vulpkanin.ftl | 77 + .../prototypes/body/species_appearance.ftl | 4 + .../ss14-ru/prototypes/body/species_base.ftl | 4 + .../catalog/fills/backpacks/duffelbag.ftl | 17 +- .../catalog/fills/books/bookshelf.ftl | 2 +- .../catalog/fills/boxes/emergency.ftl | 20 +- .../catalog/fills/boxes/general.ftl | 8 +- .../prototypes/catalog/fills/boxes/heads.ftl | 30 +- .../catalog/fills/boxes/security.ftl | 2 +- .../catalog/fills/boxes/syndicate.ftl | 4 +- .../prototypes/catalog/fills/crates/antag.ftl | 4 +- .../catalog/fills/crates/armory.ftl | 8 + .../catalog/fills/crates/botany.ftl | 2 + .../prototypes/catalog/fills/crates/cargo.ftl | 1 + .../catalog/fills/crates/chemistry.ftl | 3 + .../catalog/fills/crates/emergency.ftl | 1 + .../catalog/fills/crates/engineering.ftl | 4 + .../catalog/fills/crates/engines.ftl | 12 + .../prototypes/catalog/fills/crates/fun.ftl | 4 +- .../catalog/fills/crates/materials.ftl | 1 + .../catalog/fills/crates/medical.ftl | 1 + .../catalog/fills/crates/permaescape.ftl | 20 +- .../catalog/fills/crates/salvage.ftl | 2 +- .../catalog/fills/crates/science.ftl | 5 +- .../catalog/fills/crates/security.ftl | 8 + .../catalog/fills/crates/service.ftl | 3 +- .../catalog/fills/crates/vending.ftl | 39 +- .../prototypes/catalog/fills/items/belt.ftl | 22 +- .../catalog/fills/items/briefcases.ftl | 22 +- .../catalog/fills/items/firstaidkits.ftl | 18 +- .../catalog/fills/items/gas_tanks.ftl | 14 +- .../prototypes/catalog/fills/items/misc.ftl | 13 +- .../catalog/fills/items/toolboxes.ftl | 19 +- .../catalog/fills/lockers/biohazard.ftl | 10 +- .../catalog/fills/lockers/cargo.ftl | 4 +- .../catalog/fills/lockers/dressers.ftl | 16 +- .../catalog/fills/lockers/engineer.ftl | 20 +- .../catalog/fills/lockers/heads.ftl | 28 +- .../catalog/fills/lockers/medical.ftl | 14 +- .../prototypes/catalog/fills/lockers/misc.ftl | 18 +- .../catalog/fills/lockers/science.ftl | 2 +- .../catalog/fills/lockers/security.ftl | 42 +- .../catalog/fills/lockers/service.ftl | 14 +- .../catalog/fills/lockers/space_ruin.ftl | 6 +- .../catalog/fills/lockers/suit_storage.ftl | 40 +- .../catalog/fills/lockers/wardrobe_colors.ftl | 32 +- .../catalog/fills/lockers/wardrobe_job.ftl | 4 +- .../catalog/fills/paper/manuals.ftl | 4 +- .../prototypes/corvax}/access/accesses.ftl | 0 .../prototypes/corvax/body/organs/tajaran.ftl | 2 - .../corvax/body/organs/vulpkanin.ftl | 2 +- .../corvax/body/parts/vulpkanin.ftl | 22 + .../prototypes/corvax/body/species/ipc.ftl | 45 + .../corvax/body/species/tajaran.ftl | 77 + .../corvax/catalog/fills/items/briefcases.ftl | 2 +- .../corvax/catalog/fills/items/misc.ftl | 2 +- .../catalog/fills/lockers/suit_storage.ftl | 2 +- .../corvax/entities/clothing/neck/pins.ftl | 4 +- .../corvax/entities/effects/portal.ftl | 6 + .../corvax/entities/markers/spawners/jobs.ftl | 6 + .../markers/spawners/random/contraband.ftl | 4 +- .../corvax/entities/mobs/npcs/human.ftl | 2 +- .../corvax/entities/mobs/npcs/pets.ftl | 1 + .../corvax/entities/mobs/player/ipc.ftl | 2 - .../corvax/entities/mobs/player/tajaran.ftl | 2 - .../corvax/entities/mobs/player/vulpkanin.ftl | 2 + .../corvax/entities/mobs/species/ipc.ftl | 4 +- .../entities/mobs/species/vulpkanin.ftl | 4 + .../objects/consumable/drinks/drinks.ftl | 22 +- .../consumable/drinks/drinks_bottles.ftl | 1 + .../circuitboards/machine/production.ftl | 1 + .../devices/invisible_hand_teleporter.ftl | 3 + .../entities/objects/devices/secapartment.ftl | 4 +- .../entities/objects/misc/rubber_stamp.ftl | 2 +- .../entities/objects/specific/chemistry.ftl | 2 +- .../structures/Walls}/invisible_wall.ftl | 3 +- .../structures/storage/tanks/tanks.ftl | 6 +- .../corvax/markers/spawners/ert.ftl | 10 +- .../ss14-ru/prototypes/corvax/tts_users.ftl | 2 + .../entities/clothing/back/satchel.ftl | 2 + .../entities/clothing/back/smuggler.ftl | 8 +- .../entities/clothing/back/specific.ftl | 2 + .../entities/clothing/ears/headsets.ftl | 20 +- .../entities/clothing/ears/headsets_alt.ftl | 8 +- .../entities/clothing/ears/specific.ftl | 2 +- .../clothing/eyes/base_clothingeyes.ftl | 2 +- .../prototypes/entities/clothing/eyes/hud.ftl | 6 + .../entities/clothing/eyes/misc.ftl | 6 +- .../entities/clothing/hands/colored.ftl | 10 +- .../entities/clothing/hands/gloves.ftl | 25 +- .../entities/clothing/hands/rings.ftl | 2 +- .../entities/clothing/hands/specific.ftl | 2 +- .../entities/clothing/head/bandanas.ftl | 20 +- .../clothing/head/base_clothinghead.ftl | 2 +- .../clothing/head/hardsuit-helmets.ftl | 50 +- .../entities/clothing/head/hats.ftl | 2 + .../entities/clothing/head/helmets.ftl | 26 +- .../entities/clothing/head/misc.ftl | 2 +- .../entities/clothing/head/soft.ftl | 50 +- .../entities/clothing/masks/masks.ftl | 4 +- .../entities/clothing/masks/specific.ftl | 2 +- .../entities/clothing/multiple/towel.ftl | 12 +- .../entities/clothing/neck/pins.ftl | 63 +- .../entities/clothing/neck/scarfs.ftl | 37 +- .../entities/clothing/outerclothing/armor.ftl | 16 +- .../outerclothing/base_clothingouter.ftl | 2 +- .../entities/clothing/outerclothing/coats.ftl | 44 +- .../clothing/outerclothing/hardsuits.ftl | 47 +- .../clothing/outerclothing/softsuits.ftl | 2 +- .../entities/clothing/outerclothing/suits.ftl | 2 +- .../entities/clothing/outerclothing/vests.ftl | 2 + .../clothing/outerclothing/wintercoats.ftl | 4 +- .../clothing/shoes/base_clothingshoes.ftl | 2 +- .../entities/clothing/shoes/color.ftl | 8 +- .../entities/clothing/shoes/magboots.ftl | 4 +- .../entities/clothing/shoes/misc.ftl | 2 +- .../entities/clothing/shoes/specific.ftl | 4 +- .../clothing/uniforms/color_dress.ftl | 24 +- .../clothing/uniforms/random_suit.ftl | 6 + .../entities/debugging/clicktest.ftl | 8 +- .../entities/debugging/debug_sweps.ftl | 14 +- .../entities/debugging/options_visualizer.ftl | 2 +- .../entities/effects/admin_triggers.ftl | 16 +- .../prototypes/entities/effects/puddle.ftl | 8 +- .../entities/markers/spawners/debug.ftl | 2 +- .../entities/markers/spawners/ghost_roles.ftl | 14 +- .../entities/markers/spawners/jobs.ftl | 64 +- .../markers/spawners/mobs/hostile.ftl | 2 +- .../entities/markers/spawners/mobs/misc.ftl | 2 +- .../entities/markers/spawners/mobs/pets.ftl | 44 +- .../entities/markers/spawners/mobs/xenos.ftl | 16 +- .../markers/spawners/random/cables.ftl | 6 +- .../markers/spawners/random/crates.ftl | 4 +- .../markers/spawners/random/crystal.ftl | 2 +- .../markers/spawners/random/decals/dirt.ftl | 10 +- .../markers/spawners/random/decals/flora.ftl | 14 +- .../spawners/random/decals/splatters.ftl | 4 +- .../spawners/random/department/science.ftl | 4 +- .../spawners/random/department/security.ftl | 10 +- .../random/food_drinks/drinks_bottles.ftl | 2 +- .../random/food_drinks/drinks_glass.ftl | 2 +- .../random/food_drinks/food_baked_single.ftl | 2 +- .../random/food_drinks/food_baked_whole.ftl | 2 +- .../random/food_drinks/food_breakfast.ftl | 2 +- .../random/food_drinks/food_ingredients.ftl | 2 +- .../spawners/random/food_drinks/food_meal.ftl | 2 +- .../random/food_drinks/food_single.ftl | 2 +- .../markers/spawners/random/industrial.ftl | 2 +- .../markers/spawners/random/maintenance.ftl | 10 +- .../markers/spawners/random/materials.ftl | 6 +- .../markers/spawners/random/mobs/xenos.ftl | 4 +- .../markers/spawners/random/salvage.ftl | 13 +- .../spawners/random/salvage/spawners.ftl | 22 +- .../entities/markers/spawners/random/soap.ftl | 2 + .../entities/markers/spawners/random/toy.ftl | 27 + .../markers/spawners/random/toy_tabletop.ftl | 4 +- .../markers/spawners/random/trash.ftl | 4 +- .../markers/spawners/random/vending.ftl | 2 +- .../markers/spawners/random/vendingdrinks.ftl | 2 +- .../markers/spawners/random/vendingsnacks.ftl | 2 +- .../spawners/vending_machine_restock.ftl | 6 +- .../prototypes/entities/markers/tile.ftl | 4 +- .../ss14-ru/prototypes/entities/mobs/base.ftl | 4 +- .../entities/mobs/corpses/corpses.ftl | 12 +- .../entities/mobs/cyborgs/borg_chassis.ftl | 2 +- .../entities/mobs/cyborgs/xenoborgs.ftl | 8 +- .../prototypes/entities/mobs/npcs/animals.ftl | 100 +- .../entities/mobs/npcs/argocyte.ftl | 12 + .../entities/mobs/npcs/behonker.ftl | 9 +- .../prototypes/entities/mobs/npcs/carp.ftl | 14 +- .../entities/mobs/npcs/elemental.ftl | 24 +- .../prototypes/entities/mobs/npcs/flesh.ftl | 10 + .../entities/mobs/npcs/hellspawn.ftl | 1 + .../prototypes/entities/mobs/npcs/hivebot.ftl | 2 + .../prototypes/entities/mobs/npcs/human.ftl | 4 +- .../entities/mobs/npcs/lavaland.ftl | 4 + .../entities/mobs/npcs/living_light.ftl | 9 + .../prototypes/entities/mobs/npcs/mimic.ftl | 1 + .../entities/mobs/npcs/miscellaneous.ftl | 2 + .../entities/mobs/npcs/moproach.ftl | 1 + .../prototypes/entities/mobs/npcs/pets.ftl | 29 +- .../entities/mobs/npcs/regalrat.ftl | 4 +- .../prototypes/entities/mobs/npcs/scurret.ftl | 4 + .../prototypes/entities/mobs/npcs/shadows.ftl | 4 +- .../entities/mobs/npcs/simplemob.ftl | 10 +- .../prototypes/entities/mobs/npcs/slimes.ftl | 11 +- .../prototypes/entities/mobs/npcs/space.ftl | 19 +- .../entities/mobs/npcs/spacetick.ftl | 3 +- .../prototypes/entities/mobs/npcs/xeno.ftl | 10 + .../entities/mobs/player/arachnid.ftl | 2 - .../entities/mobs/player/changeling.ftl | 2 +- .../prototypes/entities/mobs/player/clone.ftl | 2 +- .../prototypes/entities/mobs/player/diona.ftl | 4 - .../entities/mobs/player/dragon.ftl | 3 +- .../prototypes/entities/mobs/player/dwarf.ftl | 2 - .../entities/mobs/player/familiars.ftl | 2 + .../entities/mobs/player/gingerbread.ftl | 4 - .../prototypes/entities/mobs/player/human.ftl | 11 +- .../entities/mobs/player/humanoid.ftl | 65 +- .../entities/mobs/player/jaunt_mobs.ftl | 2 +- .../prototypes/entities/mobs/player/moth.ftl | 2 - .../entities/mobs/player/narsie.ftl | 2 +- .../entities/mobs/player/ratvar.ftl | 2 +- .../entities/mobs/player/reptilian.ftl | 3 - .../mobs/player/shuttleroles/roles.ftl | 20 +- .../mobs/player/shuttleroles/spawners.ftl | 18 +- .../entities/mobs/player/silicon.ftl | 38 +- .../entities/mobs/player/skeleton.ftl | 2 - .../prototypes/entities/mobs/player/slime.ftl | 2 - .../prototypes/entities/mobs/player/vox.ftl | 2 - .../entities/mobs/player/vulpkanin.ftl | 2 - .../entities/mobs/species/arachnid.ftl | 1 - .../entities/mobs/species/diona.ftl | 1 - .../entities/mobs/species/dwarf.ftl | 1 - .../entities/mobs/species/gingerbread.ftl | 1 - .../entities/mobs/species/human.ftl | 1 - .../prototypes/entities/mobs/species/moth.ftl | 1 - .../entities/mobs/species/reptilian.ftl | 3 +- .../entities/mobs/species/skeleton.ftl | 3 +- .../entities/mobs/species/slime.ftl | 1 - .../prototypes/entities/mobs/species/vox.ftl | 1 - .../entities/mobs/species/vulpkanin.ftl | 2 +- .../entities/objects/base_contraband.ftl | 4 +- .../prototypes/entities/objects/base_item.ftl | 10 +- .../consumable/drinks/drinks-cartons.ftl | 33 +- .../objects/consumable/drinks/drinks_base.ftl | 2 +- .../drinks/drinks_base_materials.ftl | 2 + .../drinks/drinks_bottles_glass.ftl | 28 +- .../drinks/drinks_bottles_plastic.ftl | 24 +- .../objects/consumable/drinks/drinks_cans.ftl | 27 +- .../objects/consumable/drinks/drinks_cups.ftl | 17 +- .../consumable/drinks/drinks_flasks.ftl | 10 +- .../objects/consumable/drinks/drinks_fun.ftl | 3 +- .../consumable/drinks/drinks_metamorphic.ftl | 316 ++-- .../consumable/drinks/drinks_special.ftl | 8 +- .../consumable/drinks/trash_drinks.ftl | 2 +- .../objects/consumable/food/baked/bread.ftl | 62 +- .../objects/consumable/food/baked/donut.ftl | 4 +- .../objects/consumable/food/baked/pie.ftl | 8 +- .../objects/consumable/food/burger.ftl | 84 +- .../consumable/food/containers/box.ftl | 12 +- .../consumable/food/containers/condiments.ftl | 4 +- .../consumable/food/containers/tin.ftl | 2 +- .../entities/objects/consumable/food/meat.ftl | 2 +- .../objects/consumable/food/produce.ftl | 2 +- .../objects/consumable/food/snacks.ftl | 4 +- .../smokeables/cigarettes/cigarette.ftl | 29 +- .../consumable/smokeables/cigars/cigar.ftl | 4 +- .../consumable/smokeables/pipes/pipe.ftl | 4 +- .../entities/objects/decoration/flora.ftl | 4 +- .../objects/decoration/jackolantern.ftl | 8 +- .../entities/objects/decoration/present.ftl | 8 +- .../entities/objects/devices/cartridges.ftl | 2 + .../objects/devices/chameleon_projector.ftl | 3 + .../devices/circuitboards/computer.ftl | 2 +- .../devices/circuitboards/law_boards.ftl | 17 + .../devices/circuitboards/machine/holopad.ftl | 1 + .../machine/particle_accelerator.ftl | 6 + .../circuitboards/machine/production.ftl | 97 +- .../devices/circuitboards/machine/turrets.ftl | 9 +- .../objects/devices/circuitboards/misc.ftl | 1 + .../entities/objects/devices/door_remote.ftl | 6 +- .../devices/electronics/atmos_alarms.ftl | 2 + .../devices/electronics/base_electronics.ftl | 2 +- .../objects/devices/electronics/disposal.ftl | 1 + .../objects/devices/electronics/door.ftl | 1 + .../devices/electronics/door_access.ftl | 138 +- .../objects/devices/electronics/firelock.ftl | 1 + .../objects/devices/electronics/intercom.ftl | 1 + .../objects/devices/electronics/mech.ftl | 7 + .../objects/devices/electronics/misc.ftl | 1 + .../devices/electronics/power_electronics.ftl | 5 + .../devices/electronics/station_ai_core.ftl | 3 +- .../objects/devices/electronics/timer.ftl | 3 + .../devices/electronics/turret_controls.ftl | 7 +- .../objects/devices/encryption_keys.ftl | 4 +- .../entities/objects/devices/flatpack.ftl | 2 + .../objects/devices/holoprojectors.ftl | 10 +- .../entities/objects/devices/pda.ftl | 32 +- .../entities/objects/devices/pinpointer.ftl | 5 +- .../objects/devices/station_beacon.ftl | 192 +-- .../entities/objects/devices/station_map.ftl | 8 +- .../syndicate_gadgets/dna_injector.ftl | 2 +- .../reinforcement_teleporter.ftl | 6 +- .../fun/{ => Figurines}/figurine_boxes.ftl | 2 +- .../objects/fun/{ => Figurines}/figurines.ftl | 4 + .../fun/{ => Figurines}/mech_figurines.ftl | 4 +- .../fun/{ => Plushies}/plushielizard_jobs.ftl | 0 .../objects/fun/{ => Plushies}/plushies.ftl | 6 +- .../entities/objects/fun/balloons.ftl | 8 + .../entities/objects/fun/bike_horn.ftl | 10 - .../entities/objects/fun/crayons.ftl | 13 +- .../prototypes/entities/objects/fun/darts.ftl | 2 +- .../prototypes/entities/objects/fun/dice.ftl | 4 + .../entities/objects/fun/dice_bag.ftl | 4 - .../prototypes/entities/objects/fun/error.ftl | 2 - .../fun/instruments/instrument_keyed.ftl | 4 +- .../instruments/instruments_percussion.ftl | 2 +- .../prototypes/entities/objects/fun/orbs.ftl | 11 + .../entities/objects/fun/puppet.ftl | 5 - .../prototypes/entities/objects/fun/skub.ftl | 2 - .../entities/objects/fun/snap_pops.ftl | 4 - .../entities/objects/fun/sound_maker.ftl | 32 + .../entities/objects/fun/spectral_locator.ftl | 9 - .../entities/objects/fun/sports.ftl | 13 + .../objects/fun/tabletop/checkers.ftl | 2 +- .../prototypes/entities/objects/fun/toys.ftl | 100 +- .../entities/objects/fun/weapons.ftl | 25 + .../entities/objects/fun/whistles.ftl | 8 - .../entities/objects/magic/books.ftl | 4 +- .../objects/{fun => magic}/immovable_rod.ftl | 20 +- .../entities/objects/materials/ingots.ftl | 8 +- .../entities/objects/materials/materials.ftl | 56 +- .../entities/objects/materials/ore.ftl | 46 +- .../entities/objects/materials/parts.ftl | 6 +- .../entities/objects/materials/scrap.ftl | 12 +- .../objects/materials/sheets/glass.ftl | 26 +- .../objects/materials/sheets/metal.ftl | 16 +- .../objects/materials/sheets/other.ftl | 24 +- .../objects/misc/acquisition_slips.ftl | 12 +- .../entities/objects/misc/books.ftl | 25 +- .../entities/objects/misc/books_author.ftl | 2 +- .../entities/objects/misc/botparts.ftl | 14 + .../prototypes/entities/objects/misc/box.ftl | 4 +- .../entities/objects/misc/briefcases.ftl | 8 +- .../entities/objects/misc/candles.ftl | 10 + .../objects/{fun => misc}/candy_bucket.ftl | 0 .../entities/objects/misc/carpets.ftl | 36 +- .../entities/objects/misc/folders.ftl | 64 +- .../objects/misc/identification_cards.ftl | 11 +- .../entities/objects/misc/implanters.ftl | 4 +- .../entities/objects/misc/kudzu.ftl | 4 +- .../entities/objects/misc/land_mine.ftl | 12 +- .../entities/objects/misc/monkeycube.ftl | 4 +- .../entities/objects/misc/paper.ftl | 2 +- .../entities/objects/misc/parcel_wrap.ftl | 12 +- .../prototypes/entities/objects/misc/pen.ftl | 4 +- .../entities/objects/misc/space_cash.ftl | 20 +- .../entities/objects/misc/tiles.ftl | 54 +- .../entities/objects/power/lights.ftl | 4 +- .../entities/objects/power/powercells.ftl | 17 +- .../entities/objects/shields/shields.ftl | 2 + .../objects/specific/chapel/bibles.ftl | 8 +- .../{ => chemistry}/chemical-containers.ftl | 36 +- .../{ => chemistry}/chemistry-bottles.ftl | 176 +-- .../{ => chemistry}/chemistry-vials.ftl | 13 +- .../specific/{ => chemistry}/chemistry.ftl | 14 +- .../specific/chemistry/paper_centrifuge.ftl | 2 + .../objects/specific/hydroponics/seeds.ftl | 2 +- .../objects/specific/janitorial/janitor.ftl | 2 + .../objects/specific/janitorial/spray.ftl | 12 +- .../objects/specific/kitchen/equipment.ftl | 2 + .../entities/objects/specific/mech/mechs.ftl | 8 +- .../objects/specific/medical/defib.ftl | 4 +- .../medical/handheld_crew_monitor.ftl | 2 +- .../objects/specific/medical/healing.ftl | 33 +- .../specific/medical/healthanalyzer.ftl | 4 +- .../objects/specific/medical/hypospray.ftl | 10 +- .../objects/specific/medical/morgue.ftl | 4 +- .../objects/specific/rehydrateable.ftl | 2 +- .../objects/specific/research/anomaly.ftl | 10 +- .../objects/specific/research/disk.ftl | 25 +- .../specific/robotics/borg_modules.ftl | 32 +- .../objects/specific/robotics/mmi.ftl | 2 +- .../objects/specific/salvage/scanner.ftl | 4 +- .../entities/objects/specific/syndicate.ftl | 16 +- .../xenoarchaeology/item_xenoartifacts.ftl | 4 +- .../structure_xenoartifacts.ftl | 2 +- .../entities/objects/tools/access_breaker.ftl | 2 +- .../entities/objects/tools/cable_coils.ftl | 18 +- .../entities/objects/tools/cowtools.ftl | 2 +- .../entities/objects/tools/crowbars.ftl | 2 +- .../entities/objects/tools/flashlights.ftl | 2 +- .../entities/objects/tools/fulton.ftl | 2 +- .../objects/tools/handheld_mass_scanner.ftl | 4 +- .../objects/tools/inflatable_wall.ftl | 6 +- .../entities/objects/tools/jammer.ftl | 4 +- .../entities/objects/tools/jetpacks.ftl | 26 +- .../entities/objects/tools/lantern.ftl | 2 +- .../entities/objects/tools/light_replacer.ftl | 2 +- .../entities/objects/tools/matches.ftl | 2 +- .../entities/objects/tools/spray_painter.ftl | 4 +- .../entities/objects/tools/tools.ftl | 6 +- .../entities/objects/weapons/bombs/cord.ftl | 4 +- .../objects/weapons/bombs/detonator.ftl | 2 +- .../entities/objects/weapons/bombs/funny.ftl | 7 +- .../guns/ammunition/boxes/antimateriel.ftl | 2 +- .../weapons/guns/ammunition/boxes/pistol.ftl | 8 +- .../weapons/guns/ammunition/boxes/rifle.ftl | 8 +- .../weapons/guns/ammunition/boxes/shotgun.ftl | 16 +- .../ammunition/cartridges/antimateriel.ftl | 2 +- .../ammunition/cartridges/caseless_rifle.ftl | 4 +- .../ammunition/cartridges/light_rifle.ftl | 8 +- .../guns/ammunition/cartridges/magnum.ftl | 10 +- .../guns/ammunition/cartridges/pistol.ftl | 10 +- .../guns/ammunition/cartridges/rifle.ftl | 8 +- .../guns/ammunition/cartridges/shotgun.ftl | 16 +- .../guns/ammunition/cartridges/toy.ftl | 2 +- .../weapons/guns/ammunition/explosives.ftl | 6 +- .../ammunition/magazines/caseless_rifle.ftl | 10 +- .../guns/ammunition/magazines/light_rifle.ftl | 12 +- .../guns/ammunition/magazines/magnum.ftl | 10 +- .../guns/ammunition/magazines/pistol.ftl | 39 +- .../guns/ammunition/magazines/rifle.ftl | 10 +- .../guns/ammunition/magazines/shotgun.ftl | 10 +- .../weapons/guns/ammunition/magazines/toy.ftl | 2 +- .../guns/ammunition/projectiles/shotgun.ftl | 2 +- .../guns/ammunition/speedloaders/magnum.ftl | 13 +- .../ammunition/speedloaders/rifle_light.ftl | 2 +- .../guns/ammunition/speedloaders/toy.ftl | 2 +- .../weapons/guns/battery/battery_guns.ftl | 26 +- .../objects/weapons/guns/hmgs/hmgs.ftl | 1 - .../weapons/guns/launchers/launchers.ftl | 6 +- .../objects/weapons/guns/lmgs/lmgs.ftl | 1 - .../objects/weapons/guns/pistols/pistols.ftl | 3 - .../objects/weapons/guns/pneumatic_cannon.ftl | 4 +- .../weapons/guns/projectiles/hitscan.ftl | 24 + .../weapons/guns/projectiles/meteors.ftl | 6 +- .../weapons/guns/projectiles/projectiles.ftl | 2 +- .../weapons/guns/revolvers/revolvers.ftl | 7 +- .../objects/weapons/guns/rifles/rifles.ftl | 7 +- .../weapons/guns/shotguns/shotguns.ftl | 22 +- .../objects/weapons/guns/smgs/smgs.ftl | 3 - .../objects/weapons/guns/snipers/snipers.ftl | 4 - .../guns/turrets/turrets_ballistic.ftl | 10 +- .../weapons/guns/turrets/turrets_energy.ftl | 6 +- .../objects/weapons/melee/baguette.ftl | 2 +- .../entities/objects/weapons/melee/cane.ftl | 4 +- .../objects/weapons/melee/e_sword.ftl | 2 +- .../entities/objects/weapons/melee/knife.ftl | 30 +- .../weapons/throwable/base_grenades.ftl | 4 + .../weapons/throwable/canister_grenades.ftl | 10 + .../objects/weapons/throwable/croissant.ftl | 2 +- .../objects/weapons/throwable/grenades.ftl | 10 - .../weapons/throwable/scattering_grenades.ftl | 4 +- .../entities/statuseffects/body.ftl | 2 +- .../entities/statuseffects/misc.ftl | 6 +- .../entities/statuseffects/speech.ftl | 4 + .../entities/statuseffects/weather.ftl | 26 + .../structures/cryogenic_sleep_unit.ftl | 4 +- .../structures/decoration/bonfire.ftl | 4 + .../structures/decoration/crystals.ftl | 4 +- .../structures/decoration/curtains.ftl | 42 +- .../structures/decoration/statues.ftl | 10 + .../entities/structures/dispensers/booze.ftl | 2 +- .../entities/structures/dispensers/chem.ftl | 2 +- .../entities/structures/dispensers/soda.ftl | 2 +- .../structures/doors/airlocks/access.ftl | 261 ++-- .../structures/doors/airlocks/airlocks.ftl | 68 +- .../structures/doors/airlocks/assembly.ftl | 78 +- .../structures/doors/airlocks/clockwork.ftl | 4 +- .../structures/doors/airlocks/external.ftl | 2 +- .../doors/materialdoors/material_doors.ftl | 6 +- .../doors/secretdoor/secret_door.ftl | 1 + .../structures/doors/shutter/access.ftl | 4 +- .../structures/doors/shutter/blast_door.ftl | 8 +- .../doors/shutter/blast_door_autolink.ftl | 28 +- .../structures/doors/shutter/shutters.ftl | 8 +- .../entities/structures/doors/turnstile.ftl | 4 +- .../structures/doors/windoors/windoor.ftl | 192 +-- .../entities/structures/furniture/bench.ftl | 4 +- .../entities/structures/furniture/carpets.ftl | 4 +- .../entities/structures/furniture/chairs.ftl | 4 +- .../entities/structures/furniture/dresser.ftl | 2 +- .../structures/furniture/rollerbeds.ftl | 6 +- .../entities/structures/furniture/sink.ftl | 4 +- .../structures/furniture/tables/tables.ftl | 20 +- .../entities/structures/furniture/toilet.ftl | 6 +- .../prototypes/entities/structures/gates.ftl | 14 +- .../entities/structures/hydro_tray.ftl | 2 +- .../entities/structures/ironsand_steps.ftl | 6 + .../structures/lighting/base_lighting.ftl | 44 +- .../structures/lighting/ground_lighting.ftl | 4 +- .../structures/lighting/service_light.ftl | 1 + .../structures/lighting/strobe_lighting.ftl | 6 +- .../structures/machines/anomaly_equipment.ftl | 1 - .../structures/machines/artifact_analyzer.ftl | 2 + .../entities/structures/machines/bombs.ftl | 2 +- .../structures/machines/computers/arcades.ftl | 2 +- .../machines/computers/computers.ftl | 5 +- .../structures/machines/fax_machine.ftl | 6 +- .../entities/structures/machines/frame.ftl | 2 +- .../entities/structures/machines/holopad.ftl | 188 +-- .../entities/structures/machines/nuke.ftl | 2 +- .../structures/machines/reagent_grinder.ftl | 7 +- .../structures/machines/smartfridge.ftl | 2 +- .../machines/surveillance_camera_routers.ftl | 22 +- .../structures/machines/telecomms.ftl | 18 +- .../structures/machines/vending_machines.ftl | 71 +- .../machines/wireless_surveillance_camera.ftl | 12 +- .../piping/atmospherics/alt_layers.ftl | 156 +- .../structures/piping/atmospherics/binary.ftl | 2 +- .../piping/atmospherics/gas_pipe_sensor.ftl | 10 +- .../structures/piping/atmospherics/miners.ftl | 8 +- .../structures/piping/atmospherics/pipes.ftl | 10 +- .../piping/atmospherics/portable.ftl | 4 +- .../piping/atmospherics/trinary.ftl | 4 +- .../structures/piping/atmospherics/unary.ftl | 8 +- .../structures/piping/disposal/pipes.ftl | 6 +- .../entities/structures/power/apc.ftl | 12 +- .../structures/power/cable_terminal.ftl | 2 +- .../entities/structures/power/cables.ftl | 12 +- .../entities/structures/power/debug_power.ftl | 18 +- .../structures/power/generation/ame.ftl | 2 +- .../power/generation/generators.ftl | 8 +- .../power/generation/portable_generator.ftl | 4 +- .../generation/singularity/collector.ftl | 4 +- .../structures/power/generation/solar.ftl | 2 +- .../entities/structures/power/smes.ftl | 6 +- .../entities/structures/power/substation.ftl | 6 +- .../structures/shuttles/station_anchor.ftl | 4 +- .../structures/shuttles/thrusters.ftl | 8 +- .../prototypes/entities/structures/soil.ftl | 2 +- .../structures/specific/anomaly/anomalies.ftl | 38 +- .../specific/anomaly/anomaly_injectors.ftl | 22 +- .../structures/specific/anomaly/cores.ftl | 48 +- .../specific/atmospherics/freezer.ftl | 7 +- .../structures/specific/atmospherics/vox.ftl | 7 +- .../structures/specific/janitor/janicart.ftl | 3 +- .../prototypes/entities/structures/stairs.ftl | 16 +- .../entities/structures/storage/barrels.ftl | 22 +- .../storage/canisters/gas_canisters.ftl | 4 +- .../storage/closets/lockers/lockers.ftl | 21 +- .../storage/closets/wall_lockers.ftl | 16 +- .../structures/storage/crates/crates.ftl | 25 +- .../structures/storage/filing_cabinets.ftl | 5 +- .../entities/structures/storage/glass_box.ftl | 6 +- .../entities/structures/storage/paper_bin.ftl | 6 +- .../structures/storage/tanks/tanks.ftl | 6 +- .../structures/wallmounts/misc/mirror.ftl | 2 +- .../wallmounts/signs/atmos_plaque.ftl | 2 +- .../structures/wallmounts/signs/bar_sign.ftl | 2 + .../structures/wallmounts/signs/posters.ftl | 20 +- .../structures/wallmounts/signs/signs.ftl | 196 +-- .../storage/cabinets/defib_cabinet.ftl | 6 +- .../storage/cabinets/extinguisher_cabinet.ftl | 6 +- .../storage/cabinets/fireaxe_cabinet.ftl | 6 +- .../storage/cabinets/shotgun_cabinet.ftl | 6 +- .../structures/wallmounts/storage/shelfs.ftl | 2 +- .../structures/wallmounts/switches/switch.ftl | 79 +- .../wallmounts/switches/switch_autolink.ftl | 10 +- .../structures/wallmounts/turret_controls.ftl | 6 +- .../wallmounts/wallmountmachines/intercom.ftl | 19 +- .../wallmountmachines/surveillance_camera.ftl | 18 +- .../entities/structures/walls/asteroid.ftl | 34 +- .../entities/structures/walls/fence_metal.ftl | 6 +- .../entities/structures/walls/fence_wood.ftl | 16 +- .../walls}/inflatable_wall.ftl | 0 .../entities/structures/walls/walls.ftl | 34 +- .../entities/structures/windows/clockwork.ftl | 2 +- .../entities/structures/windows/mining.ftl | 2 +- .../entities/structures/windows/plasma.ftl | 4 +- .../structures/windows/plastitanium.ftl | 8 +- .../structures/windows/reinforced.ftl | 4 +- .../entities/structures/windows/rplasma.ftl | 4 +- .../entities/structures/windows/ruranium.ftl | 4 +- .../entities/structures/windows/shuttle.ftl | 4 +- .../entities/structures/windows/uranium.ftl | 4 +- .../entities/structures/windows/window.ftl | 2 +- .../prototypes/entities/tiles/basalt.ftl | 2 +- .../prototypes/entities/tiles/chasm.ftl | 6 +- .../entities/tiles/shadow_basalt.ftl | 2 +- .../ru-RU/ss14-ru/prototypes/floor_trap.ftl | 10 +- .../ss14-ru/prototypes/gamerules/events.ftl | 16 +- .../prototypes/gamerules/meteorswarms.ftl | 4 +- .../ss14-ru/prototypes/gamerules/pests.ftl | 2 + .../prototypes/gamerules/roundstart.ftl | 12 +- .../prototypes/gamerules/subgamemodes.ftl | 2 + .../prototypes/gamerules/unknown_shuttles.ftl | 22 +- .../prototypes/magic/teleport_scroll.ftl | 2 +- .../ru-RU/ss14-ru/prototypes/npcs/test.ftl | 2 +- .../ss14-ru/prototypes/objectives/thief.ftl | 14 +- .../ss14-ru/prototypes/objectives/traitor.ftl | 2 +- .../prototypes/procedural/themes/maints.ftl | 2 +- .../prototypes/roles/mindroles/mind_roles.ftl | 16 +- .../ss14-ru/prototypes/store/presets.ftl | 2 + .../Locale/ru-RU/stack/stack-component.ftl | 11 +- Resources/Locale/ru-RU/stack/stacks.ftl | 483 +++---- .../station-events/events/anomaly-spawn.ftl | 2 +- .../events/bluespace-artifact.ftl | 2 +- .../ru-RU/station-events/events/ion-storm.ftl | 82 +- .../station-events/events/mouse-migration.ftl | 2 +- .../events/power-grid-check.ftl | 2 +- .../events/random-sentience.ftl | 13 +- .../station-events/events/unknown-shuttle.ftl | 2 +- .../station-events/events/vent-critters.ftl | 2 +- .../station-events/events/zombie-outbreak.ftl | 2 +- Resources/Locale/ru-RU/store/currency.ftl | 11 +- Resources/Locale/ru-RU/store/store.ftl | 4 +- .../Locale/ru-RU/store/uplink-catalog.ftl | 36 +- .../Locale/ru-RU/storygen/story-template.ftl | 6 +- .../roles/suspicion-role-component.ftl | 2 +- .../roles/suspicion-traitor-role.ftl | 11 +- .../Locale/ru-RU/suspicion/suspicion-gui.ftl | 11 +- .../ru-RU/suspicion/traitor-overlay.ftl | 2 +- .../Locale/ru-RU/telephone/telephone.ftl | 2 +- .../ru-RU/temperature/entity-heater.ftl | 17 +- .../Locale/ru-RU/tesla/tesla-components.ftl | 2 +- Resources/Locale/ru-RU/thief/backpack.ftl | 2 +- Resources/Locale/ru-RU/thief/beacon.ftl | 2 +- Resources/Locale/ru-RU/throwing/catchable.ftl | 26 +- Resources/Locale/ru-RU/tiles/placement.ftl | 2 +- Resources/Locale/ru-RU/tiles/tiles.ftl | 10 + .../tools/components/welder-component.ftl | 3 +- ...aitor-death-match-redemption-component.ftl | 2 +- .../traitor/uplink/telecrystal-component.ftl | 2 +- Resources/Locale/ru-RU/traits/traits.ftl | 12 +- .../verbs/attach-to-grandparent-verb.ftl | 2 +- .../transform/verbs/attach-to-grid-verb.ftl | 2 +- .../transform/verbs/attach-to-self-verb.ftl | 2 +- .../Locale/ru-RU/triggers/timer-trigger.ftl | 44 +- .../Locale/ru-RU/triggers/trigger-on-verb.ftl | 2 +- Resources/Locale/ru-RU/ui/actionmenu.ftl | 2 +- Resources/Locale/ru-RU/ui/controls.ftl | 4 + Resources/Locale/ru-RU/ui/power-apc.ftl | 1 - .../Locale/ru-RU/ui/spray-painter-window.ftl | 2 +- .../vending-machine-restock-component.ftl | 13 +- Resources/Locale/ru-RU/verbs/verbs.ftl | 2 +- .../ru-RU/voting/managers/vote-manager.ftl | 2 +- .../ru-RU/voting/ui/vote-call-menu-button.ftl | 2 +- .../Locale/ru-RU/voting/ui/vote-call-menu.ftl | 8 +- .../Locale/ru-RU/voting/ui/vote-popup.ftl | 4 +- .../Locale/ru-RU/voting/vote-commands.ftl | 5 +- .../Locale/ru-RU/voting/vote-options.ftl | 2 +- .../ru-RU/warps/warp-point-component.ftl | 2 +- .../Locale/ru-RU/weapons/melee/melee.ftl | 11 +- Resources/Locale/ru-RU/weapons/ranged/gun.ftl | 26 +- .../ranged/recharge-basic-entity-ammo.ftl | 11 +- .../Locale/ru-RU/weapons/ranged/turrets.ftl | 2 +- Resources/Locale/ru-RU/weather/weather.ftl | 17 +- .../ru-RU/wieldable/wieldable-component.ftl | 11 +- .../wires/components/wires-component.ftl | 2 +- .../xenoarchaeology/artifact-analyzer.ftl | 28 +- .../xenoarchaeology/artifact-crusher.ftl | 3 + Resources/Locale/ru-RU/zombies/zombie.ftl | 2 +- Tools/localize/localize.py | 1275 +++++++++++++++++ Tools/localize/localize_config.yml | 5 + Tools/ss14_ru/__init__.py | 1 - Tools/ss14_ru/clean_duplicates.py | 122 -- Tools/ss14_ru/clean_empty.py | 63 - Tools/ss14_ru/dash_normalizer.py | 60 - Tools/ss14_ru/file.py | 128 -- Tools/ss14_ru/fluentast.py | 187 --- Tools/ss14_ru/fluentastcomparer.py | 100 -- Tools/ss14_ru/fluentastmanager.py | 25 - Tools/ss14_ru/fluentformatter.py | 37 - Tools/ss14_ru/keyfinder.py | 222 --- .../lokalise_fluent_ast_comparer_manager.py | 48 - Tools/ss14_ru/lokalise_project.py | 33 - Tools/ss14_ru/lokalisemodels.py | 64 - Tools/ss14_ru/project.py | 31 - Tools/ss14_ru/requirements.txt | 5 - Tools/ss14_ru/translation.bat | 9 - Tools/ss14_ru/translation.sh | 33 - Tools/ss14_ru/translationsassembler.py | 69 - Tools/ss14_ru/yamlextractor.py | 99 -- Tools/ss14_ru/yamlmodels.py | 26 - 1010 files changed, 9820 insertions(+), 8600 deletions(-) delete mode 100644 Resources/Locale/ru-RU/accent/dwarf.ftl delete mode 100644 Resources/Locale/ru-RU/accent/italian.ftl create mode 100644 Resources/Locale/ru-RU/accent/scottish.ftl create mode 100644 Resources/Locale/ru-RU/clothing/components/insulated-component.ftl delete mode 100644 Resources/Locale/ru-RU/corvax/prototypes/entities/invisible_hand_teleporter.ftl create mode 100644 Resources/Locale/ru-RU/entity-systems/bin-system/bin-system.ftl delete mode 100644 Resources/Locale/ru-RU/entity-systems/bin/bin-system.ftl create mode 100644 Resources/Locale/ru-RU/feedbackpopup/feedbackpopup.ftl delete mode 100644 Resources/Locale/ru-RU/metabolism/metabolism-groups.ftl create mode 100644 Resources/Locale/ru-RU/metabolism/metabolism-stages.ftl create mode 100644 Resources/Locale/ru-RU/predictions/magic-9-ball-answers.ftl create mode 100644 Resources/Locale/ru-RU/prototypes/catalog/cargo/cargoproduct-descriptions.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/animals/animal.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/animals/bloodsucker.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/animals/hemocyanin.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/animals/mothroach.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/animals/rat.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/animals/ruminant.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/animals/slimes.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/base_organs.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/organs/animal/bloodsucker.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/organs/dwarf.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/organs/moth.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/organs/reptilian.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/parts/silicon.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/species/arachnid.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/species/diona.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/species/dwarf.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/species/gingerbread.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/species/human.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/species/moth.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/species/reptilian.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/species/skeleton.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/species/slime.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/species/vox.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/species/vulpkanin.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/species_appearance.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/body/species_base.ftl rename Resources/Locale/ru-RU/{corvax/prototypes => ss14-ru/prototypes/corvax}/access/accesses.ftl (100%) delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/body/organs/tajaran.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/body/parts/vulpkanin.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/body/species/ipc.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/body/species/tajaran.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/entities/mobs/player/ipc.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/entities/mobs/player/tajaran.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/entities/mobs/player/vulpkanin.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/entities/mobs/species/vulpkanin.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/entities/objects/devices/invisible_hand_teleporter.ftl rename Resources/Locale/ru-RU/ss14-ru/prototypes/{ => corvax}/entities/objects/devices/secapartment.ftl (80%) rename Resources/Locale/ru-RU/{corvax/prototypes/entities/structures => ss14-ru/prototypes/corvax/entities/structures/Walls}/invisible_wall.ftl (57%) create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/corvax/tts_users.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/player/arachnid.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/player/diona.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/player/dwarf.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/player/gingerbread.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/player/moth.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/player/reptilian.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/player/slime.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/player/vox.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/mobs/player/vulpkanin.ftl rename Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/fun/{ => Figurines}/figurine_boxes.ftl (100%) rename Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/fun/{ => Figurines}/figurines.ftl (96%) rename Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/fun/{ => Figurines}/mech_figurines.ftl (95%) rename Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/fun/{ => Plushies}/plushielizard_jobs.ftl (100%) rename Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/fun/{ => Plushies}/plushies.ftl (96%) create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/fun/balloons.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/fun/bike_horn.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/fun/dice_bag.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/fun/error.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/fun/orbs.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/fun/puppet.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/fun/skub.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/fun/snap_pops.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/fun/sound_maker.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/fun/spectral_locator.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/fun/sports.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/fun/weapons.ftl delete mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/fun/whistles.ftl rename Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/{fun => magic}/immovable_rod.ftl (72%) rename Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/{fun => misc}/candy_bucket.ftl (100%) rename Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/{ => chemistry}/chemical-containers.ftl (80%) rename Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/{ => chemistry}/chemistry-bottles.ftl (97%) rename Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/{ => chemistry}/chemistry-vials.ftl (75%) rename Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/specific/{ => chemistry}/chemistry.ftl (100%) create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/objects/weapons/throwable/canister_grenades.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/statuseffects/weather.ftl create mode 100644 Resources/Locale/ru-RU/ss14-ru/prototypes/entities/structures/ironsand_steps.ftl rename Resources/Locale/ru-RU/ss14-ru/prototypes/entities/{objects/misc => structures/walls}/inflatable_wall.ftl (100%) create mode 100644 Tools/localize/localize.py create mode 100644 Tools/localize/localize_config.yml delete mode 100644 Tools/ss14_ru/__init__.py delete mode 100644 Tools/ss14_ru/clean_duplicates.py delete mode 100644 Tools/ss14_ru/clean_empty.py delete mode 100644 Tools/ss14_ru/dash_normalizer.py delete mode 100644 Tools/ss14_ru/file.py delete mode 100644 Tools/ss14_ru/fluentast.py delete mode 100644 Tools/ss14_ru/fluentastcomparer.py delete mode 100644 Tools/ss14_ru/fluentastmanager.py delete mode 100644 Tools/ss14_ru/fluentformatter.py delete mode 100644 Tools/ss14_ru/keyfinder.py delete mode 100644 Tools/ss14_ru/lokalise_fluent_ast_comparer_manager.py delete mode 100644 Tools/ss14_ru/lokalise_project.py delete mode 100644 Tools/ss14_ru/lokalisemodels.py delete mode 100644 Tools/ss14_ru/project.py delete mode 100644 Tools/ss14_ru/requirements.txt delete mode 100644 Tools/ss14_ru/translation.bat delete mode 100755 Tools/ss14_ru/translation.sh delete mode 100644 Tools/ss14_ru/translationsassembler.py delete mode 100644 Tools/ss14_ru/yamlextractor.py delete mode 100644 Tools/ss14_ru/yamlmodels.py diff --git a/Resources/Locale/ru-RU/HUD/game-hud.ftl b/Resources/Locale/ru-RU/HUD/game-hud.ftl index bf081f53ca2..e19e22a8ab0 100644 --- a/Resources/Locale/ru-RU/HUD/game-hud.ftl +++ b/Resources/Locale/ru-RU/HUD/game-hud.ftl @@ -1,7 +1,7 @@ game-hud-open-escape-menu-button-tooltip = Открыть меню паузы. game-hud-open-guide-menu-button-tooltip = Открыть меню руководства. game-hud-open-character-menu-button-tooltip = Открыть меню персонажа. -game-hud-open-emotes-menu-button-tooltip = Открыть меню эмоций. +game-hud-open-emotes-menu-button-tooltip= Открыть меню эмоций. game-hud-open-inventory-menu-button-tooltip = Открыть меню инвентаря. game-hud-open-crafting-menu-button-tooltip = Открыть меню создания. game-hud-open-actions-menu-button-tooltip = Открыть меню действий. diff --git a/Resources/Locale/ru-RU/_lib.ftl b/Resources/Locale/ru-RU/_lib.ftl index 3773d2fbdd3..45999cc0a99 100644 --- a/Resources/Locale/ru-RU/_lib.ftl +++ b/Resources/Locale/ru-RU/_lib.ftl @@ -1,50 +1,46 @@ ### Special messages used by internal localizer stuff. # Used internally by the PRESSURE() function. -zzzz-fmt-pressure = - { TOSTRING($divided, "F1") } { $places -> - [0] кПа - [1] МПа - [2] ГПа - [3] ТПа - [4] ППа - *[5] ??? - } +zzzz-fmt-pressure = { TOSTRING($divided, "F1") } { $places -> + [0] кПа + [1] МПа + [2] ГПа + [3] ТПа + [4] ППа + *[5] ??? +} # Used internally by the POWERWATTS() function. -zzzz-fmt-power-watts = - { TOSTRING($divided, "F1") } { $places -> - [0] Вт - [1] кВт - [2] МВт - [3] ГВт - [4] ТВт - *[5] ??? - } +zzzz-fmt-power-watts = { TOSTRING($divided, "F1") } { $places -> + [0] Вт + [1] кВт + [2] МВт + [3] ГВт + [4] ТВт + *[5] ??? +} # Used internally by the POWERJOULES() function. # Reminder: 1 joule = 1 watt for 1 second (multiply watts by seconds to get joules). # Therefore 1 kilowatt-hour is equal to 3,600,000 joules (3.6MJ) -zzzz-fmt-power-joules = - { TOSTRING($divided, "F1") } { $places -> - [0] Дж - [1] кДж - [2] МДж - [3] ГДж - [4] ТДж - *[5] ??? - } +zzzz-fmt-power-joules = { TOSTRING($divided, "F1") } { $places -> + [0] Дж + [1] кДж + [2] МДж + [3] ГДж + [4] ТДж + *[5] ??? +} # Used internally by the ENERGYWATTHOURS() function. -zzzz-fmt-energy-watt-hours = - { TOSTRING($divided, "F1") } { $places -> - [0] Вт·ч - [1] кВт·ч - [2] МВт·ч - [3] ГВт·ч - [4] ТВт·ч - *[5] ??? - } +zzzz-fmt-energy-watt-hours = { TOSTRING($divided, "F1") } { $places -> + [0] Вт·ч + [1] кВт·ч + [2] МВт·ч + [3] ГВт·ч + [4] ТВт·ч + *[5] ??? +} # Used internally by the PLAYTIME() function. zzzz-fmt-playtime = { $hours }ч { $minutes }м diff --git a/Resources/Locale/ru-RU/accent/cowboy.ftl b/Resources/Locale/ru-RU/accent/cowboy.ftl index 09a49f6f9ee..f784d222ce7 100644 --- a/Resources/Locale/ru-RU/accent/cowboy.ftl +++ b/Resources/Locale/ru-RU/accent/cowboy.ftl @@ -246,51 +246,3 @@ accent-cowboy-replacement-82 = rustled accent-cowboy-words-83 = story accent-cowboy-replacement-83 = yarn - -accent-cowboy-words-84 = thank you -accent-cowboy-replacement-84 = much obliged - -accent-cowboy-words-85 = thanks -accent-cowboy-replacement-85 = much obliged - -accent-cowboy-words-86 = thief -accent-cowboy-replacement-86 = rustler - -accent-cowboy-words-87 = thieves -accent-cowboy-replacement-87 = rustlers - -accent-cowboy-words-88 = think -accent-cowboy-replacement-88 = reckon - -accent-cowboy-words-89 = tired -accent-cowboy-replacement-89 = dragged out - -accent-cowboy-words-90 = toilet -accent-cowboy-replacement-90 = outhouse - -accent-cowboy-words-91 = totally -accent-cowboy-replacement-91 = plumb - -accent-cowboy-words-92 = traitor -accent-cowboy-replacement-92 = outlaw - -accent-cowboy-words-93 = traitors -accent-cowboy-replacement-93 = outlaws - -accent-cowboy-words-94 = very -accent-cowboy-replacement-94 = mighty - -accent-cowboy-words-95 = worried -accent-cowboy-replacement-95 = rattled - -accent-cowboy-words-96 = wow -accent-cowboy-replacement-96 = by gum - -accent-cowboy-words-97 = yell -accent-cowboy-replacement-97 = holler - -accent-cowboy-words-98 = yelled -accent-cowboy-replacement-98 = hollered - -accent-cowboy-words-99 = yelling -accent-cowboy-replacement-99 = hollering diff --git a/Resources/Locale/ru-RU/accent/dwarf.ftl b/Resources/Locale/ru-RU/accent/dwarf.ftl deleted file mode 100644 index 539810e5c3e..00000000000 --- a/Resources/Locale/ru-RU/accent/dwarf.ftl +++ /dev/null @@ -1,424 +0,0 @@ -# these specifically mostly come from examples of specific scottish-english (not necessarily scots) verbiage -# https://en.wikipedia.org/wiki/Scotticism -# https://en.wikipedia.org/wiki/Scottish_English -# https://www.cs.stir.ac.uk/~kjt/general/scots.html - -accent-dwarf-words-1 = девочка -accent-dwarf-words-replace-1 = дэвочшка - -accent-dwarf-words-2 = мальчик -accent-dwarf-words-replace-2 = малчшык - -accent-dwarf-words-3 = мужчина -accent-dwarf-words-replace-3 = мужчшына - -accent-dwarf-words-4 = женщина -accent-dwarf-words-replace-4 = женчшына - -accent-dwarf-words-5 = делать -accent-dwarf-words-replace-5 = дэлат - -accent-dwarf-words-6 = не -accent-dwarf-words-replace-6 = нэ - -accent-dwarf-words-7 = нее -accent-dwarf-words-replace-7 = нээ - -accent-dwarf-words-8 = я -accent-dwarf-words-replace-8 = Йа - -accent-dwarf-words-9 = есть -accent-dwarf-words-replace-9 = йэст - -accent-dwarf-words-10 = перейти -accent-dwarf-words-replace-10 = пэрэйты - -accent-dwarf-words-11 = знать -accent-dwarf-words-replace-11 = знат - -accent-dwarf-words-12 = и -accent-dwarf-words-replace-12 = ыэ - -accent-dwarf-words-13 = вы -accent-dwarf-words-replace-13 = вы - -accent-dwarf-words-14 = ты -accent-dwarf-words-replace-14 = ты - -accent-dwarf-words-15 = приветствую -accent-dwarf-words-replace-15 = прывэтству - -accent-dwarf-words-16 = привет -accent-dwarf-words-replace-16 = прывэт - -accent-dwarf-words-17 = все -accent-dwarf-words-replace-17 = всэ - -accent-dwarf-words-18 = от -accent-dwarf-words-replace-18 = од - -accent-dwarf-words-19 = здравия -accent-dwarf-words-replace-19 = здравыйа - -accent-dwarf-words-20 = меня -accent-dwarf-words-replace-20 = мэнйа - -accent-dwarf-words-21 = тебя -accent-dwarf-words-replace-21 = тэбйа - -accent-dwarf-words-22 = себя -accent-dwarf-words-replace-22 = сэбйа - -accent-dwarf-words-23 = где -accent-dwarf-words-replace-23 = гдэ - -accent-dwarf-words-24 = ой -accent-dwarf-words-replace-24 = ойё - -accent-dwarf-words-25 = маленький -accent-dwarf-words-replace-25 = мэлкый - -accent-dwarf-words-26 = большой -accent-dwarf-words-replace-26 = громадный - -accent-dwarf-words-27 = сука -accent-dwarf-words-replace-27 = кнурла - -accent-dwarf-words-28 = даа -accent-dwarf-words-replace-28 = Ойии - -accent-dwarf-words-29 = конечно -accent-dwarf-words-replace-29 = конэчшно - -accent-dwarf-words-30 = да -accent-dwarf-words-replace-30 = Ойи - -accent-dwarf-words-31 = тоже -accent-dwarf-words-replace-31 = тожэ - -accent-dwarf-words-32 = мой -accent-dwarf-words-replace-32 = мойё - -accent-dwarf-words-33 = нет -accent-dwarf-words-replace-33 = нэт - -accent-dwarf-words-34 = папа -accent-dwarf-words-replace-34 = уру - -accent-dwarf-words-35 = мама -accent-dwarf-words-replace-35 = дельва - -accent-dwarf-words-36 = срочник -accent-dwarf-words-replace-36 = свэжак - -accent-dwarf-words-37 = новичок -accent-dwarf-words-replace-37 = свэжак - -accent-dwarf-words-38 = стажёр -accent-dwarf-words-replace-38 = свэжак - -accent-dwarf-words-39 = профессионал -accent-dwarf-words-replace-39 = бывалый - -accent-dwarf-words-40 = ветеран -accent-dwarf-words-replace-40 = бывалый - -accent-dwarf-words-41 = блять -accent-dwarf-words-replace-41 = вррон - -accent-dwarf-words-42 = если -accent-dwarf-words-replace-42 = эслы - -accent-dwarf-words-43 = следует -accent-dwarf-words-replace-43 = слэдуэт - -accent-dwarf-words-44 = сделал -accent-dwarf-words-replace-44 = сдэлал - -accent-dwarf-words-45 = пизда -accent-dwarf-words-replace-45 = награ - -accent-dwarf-words-46 = никто -accent-dwarf-words-replace-46 = ныкто - -accent-dwarf-words-47 = делайте -accent-dwarf-words-replace-47 = дэлать - -accent-dwarf-words-48 = здравствуй -accent-dwarf-words-replace-48 = здарова - -accent-dwarf-words-49 = очко -accent-dwarf-words-replace-49 = дыра - -accent-dwarf-words-50 = синдикатовцы -accent-dwarf-words-replace-50 = злодеи - -accent-dwarf-words-51 = капитан -accent-dwarf-words-replace-51 = кэпытан - -accent-dwarf-words-52 = беги -accent-dwarf-words-replace-52 = дэри ноги - -accent-dwarf-words-53 = волосы -accent-dwarf-words-replace-53 = борода - -accent-dwarf-words-54 = вода -accent-dwarf-words-replace-54 = пиво - -accent-dwarf-words-55 = выпить -accent-dwarf-words-replace-55 = выпыт пиво - -accent-dwarf-words-56 = пить -accent-dwarf-words-replace-56 = пить пиво - -accent-dwarf-words-57 = имею -accent-dwarf-words-replace-57 = ымэу - -accent-dwarf-words-58 = напиток -accent-dwarf-words-replace-58 = пиво - -accent-dwarf-words-59 = водка -accent-dwarf-words-replace-59 = пиво - -accent-dwarf-words-60 = блин -accent-dwarf-words-replace-60 = рыбьы головэжкы - -accent-dwarf-words-61 = в принципе -accent-dwarf-words-replace-61 = в прынцыпэ - -accent-dwarf-words-62 = короче -accent-dwarf-words-replace-62 = корочэ - -accent-dwarf-words-63 = вообще -accent-dwarf-words-replace-63 = вообчшэ - -accent-dwarf-words-64 = ну -accent-dwarf-words-replace-64 = нуэ - -accent-dwarf-words-66 = еда -accent-dwarf-words-replace-66 = жратва - -accent-dwarf-words-67 = еды -accent-dwarf-words-replace-67 = жратвы - -accent-dwarf-words-68 = эй -accent-dwarf-words-replace-68 = эйэ - -accent-dwarf-words-69 = что -accent-dwarf-words-replace-69 = чшто - -accent-dwarf-words-70 = зачем -accent-dwarf-words-replace-70 = зачэм - -accent-dwarf-words-71 = почему -accent-dwarf-words-replace-71 = почэму - -accent-dwarf-words-72 = сказать -accent-dwarf-words-replace-72 = сказанут - -accent-dwarf-words-73 = своим -accent-dwarf-words-replace-73 = своым - -accent-dwarf-words-74 = её -accent-dwarf-words-replace-74 = йейё - -accent-dwarf-words-75 = двигай -accent-dwarf-words-replace-75 = двыгай - -accent-dwarf-words-76 = двигаться -accent-dwarf-words-replace-76 = двыгатсйа - -accent-dwarf-words-77 = не был -accent-dwarf-words-replace-77 = нэ был - -accent-dwarf-words-78 = сейчас -accent-dwarf-words-replace-78 = сэйчшас - -accent-dwarf-words-79 = волшебник -accent-dwarf-words-replace-79 = вельдуност - -accent-dwarf-words-80 = маг -accent-dwarf-words-replace-80 = вельнудост - -accent-dwarf-words-81 = чтобы -accent-dwarf-words-replace-81 = чштобы - -accent-dwarf-words-82 = для -accent-dwarf-words-replace-82 = длйа - -accent-dwarf-words-83 = даже -accent-dwarf-words-replace-83 = дажэ - -accent-dwarf-words-84 = ай -accent-dwarf-words-replace-84 = айэ - -accent-dwarf-words-85 = мышь -accent-dwarf-words-replace-85 = мыш - -accent-dwarf-words-86 = клоун -accent-dwarf-words-replace-86 = шут - -accent-dwarf-words-87 = друг -accent-dwarf-words-replace-87 = брат - -accent-dwarf-words-88 = проблема -accent-dwarf-words-replace-88 = закавыка - -accent-dwarf-words-90 = разрешите -accent-dwarf-words-replace-90 = разрэшытэ - -accent-dwarf-words-91 = брифинг -accent-dwarf-words-replace-91 = совет - -accent-dwarf-words-92 = врач -accent-dwarf-words-replace-92 = лекарь - -accent-dwarf-words-93 = говорить -accent-dwarf-words-replace-93 = говорит - -accent-dwarf-words-94 = разговаривать -accent-dwarf-words-replace-94 = разговарыват - -accent-dwarf-words-95 = спиртное -accent-dwarf-words-replace-95 = пиво - -accent-dwarf-words-96 = звоните -accent-dwarf-words-replace-96 = звонытэ - -accent-dwarf-words-97 = подарить -accent-dwarf-words-replace-97 = подарытэ - -accent-dwarf-words-98 = дайте -accent-dwarf-words-replace-98 = дайтэ - -accent-dwarf-words-99 = выдайте -accent-dwarf-words-replace-99 = выдайтэ - -accent-dwarf-words-100 = отвечайте -accent-dwarf-words-replace-100 = отвэчшайтэ - -accent-dwarf-words-101 = без -accent-dwarf-words-replace-101 = бэз - -accent-dwarf-words-102 = синдикат -accent-dwarf-words-replace-102 = злодей - -accent-dwarf-words-103 = ли -accent-dwarf-words-replace-103 = лы - -accent-dwarf-words-104 = никогда -accent-dwarf-words-replace-104 = ныкогда - -accent-dwarf-words-105 = точно -accent-dwarf-words-replace-105 = точшно - -accent-dwarf-words-106 = неважно -accent-dwarf-words-replace-106 = нэважно - -accent-dwarf-words-107 = хуй -accent-dwarf-words-replace-107 = елдак - -accent-dwarf-words-108 = однако -accent-dwarf-words-replace-108 = однако - -accent-dwarf-words-109 = думать -accent-dwarf-words-replace-109 = думат - -accent-dwarf-words-111 = гамлет -accent-dwarf-words-replace-111 = грызун - -accent-dwarf-words-112 = хомяк -accent-dwarf-words-replace-112 = грызун - -accent-dwarf-words-113 = нюкер -accent-dwarf-words-replace-113 = красношлемый - -accent-dwarf-words-114 = нюкеры -accent-dwarf-words-replace-114 = карсношлемые - -accent-dwarf-words-115 = ядерный оперативник -accent-dwarf-words-replace-115 = красношлемый - -accent-dwarf-words-116 = ядерные оперативники -accent-dwarf-words-replace-116 = красношлемые - -accent-dwarf-words-121 = ещё -accent-dwarf-words-replace-121 = ещчшо - -accent-dwarf-words-122 = более того -accent-dwarf-words-replace-122 = болээ того - -accent-dwarf-words-123 = пассажир -accent-dwarf-words-replace-123 = пассажыр - -accent-dwarf-words-125 = человек -accent-dwarf-words-replace-125 = чэловэк - -accent-dwarf-words-126 = гномы -accent-dwarf-words-replace-126 = дворфы - -accent-dwarf-words-127 = слайм -accent-dwarf-words-replace-127 = желе - -accent-dwarf-words-128 = слаймы -accent-dwarf-words-replace-128 = желе - -accent-dwarf-words-129 = унатх -accent-dwarf-words-replace-129 = ящер - -accent-dwarf-words-130 = паук -accent-dwarf-words-replace-130 = хиссшер - -accent-dwarf-words-131 = унатхи -accent-dwarf-words-replace-131 = ящеры - -accent-dwarf-words-132 = люди -accent-dwarf-words-replace-132 = кнурлан - -accent-dwarf-words-133 = эвак -accent-dwarf-words-replace-133 = вывоз - -accent-dwarf-words-134 = предатель -accent-dwarf-words-replace-134 = злодей - -accent-dwarf-words-135 = корпорация -accent-dwarf-words-replace-135 = корпорацыйа - -accent-dwarf-words-136 = мне -accent-dwarf-words-replace-136 = мнэ - -accent-dwarf-words-137 = зомби -accent-dwarf-words-replace-137 = гнилые - -accent-dwarf-words-138 = заражённый -accent-dwarf-words-replace-138 = гнилой - -accent-dwarf-words-139 = мим -accent-dwarf-words-replace-139 = молчун - -accent-dwarf-words-140 = считать -accent-dwarf-words-replace-140 = счшытат - -accent-dwarf-words-141 = карп -accent-dwarf-words-replace-141 = рыбёха - -accent-dwarf-words-142 = ксено -accent-dwarf-words-replace-142 = монстры - -accent-dwarf-words-143 = шаттл -accent-dwarf-words-replace-143 = судно - -accent-dwarf-words-144 = думаю -accent-dwarf-words-replace-144 = думайу - -accent-dwarf-words-145 = крысы -accent-dwarf-words-replace-145 = грызуны - -accent-dwarf-words-146 = даун -accent-dwarf-words-replace-146 = обалдуй - -accent-dwarf-words-147 = СБ -accent-dwarf-words-replace-147 = стража - -accent-dwarf-words-148 = a -accent-dwarf-words-replace-148 = ae diff --git a/Resources/Locale/ru-RU/accent/german.ftl b/Resources/Locale/ru-RU/accent/german.ftl index 787cf7412ae..b6585804ec7 100644 --- a/Resources/Locale/ru-RU/accent/german.ftl +++ b/Resources/Locale/ru-RU/accent/german.ftl @@ -1,5 +1,4 @@ accent-german-words-1 = да -accent-german-words-1-2 = ага accent-german-words-replace-1 = ja accent-german-words-2 = нет @@ -24,7 +23,6 @@ accent-german-words-8 = мужчины accent-german-words-replace-8 = männer accent-german-words-9 = женщина -accent-german-words-9-2 = леди accent-german-words-replace-9 = frau accent-german-words-10 = женщины @@ -33,167 +31,3 @@ accent-german-words-replace-10 = frauen accent-german-words-11 = джентельмен accent-german-words-replace-11 = herr - -accent-german-words-12 = джентельмены -accent-german-words-replace-12 = herren - -accent-german-words-13 = о боже -accent-german-words-replace-13 = mein gott - -accent-german-words-14 = моя -accent-german-words-replace-14 = meine - -accent-german-words-15 = тут -accent-german-words-replace-15 = hier - -accent-german-words-16 = идиот -accent-german-words-replace-16 = dummkopf - -accent-german-words-17 = идиоты -accent-german-words-replace-17 = dummköpfe - -accent-german-words-18 = бабочка -accent-german-words-replace-18 = schmetterling - -accent-german-words-19 = машина -accent-german-words-replace-19 = maschine - -accent-german-words-20 = машины -accent-german-words-replace-20 = maschinen - -accent-german-words-21 = внимание -accent-german-words-replace-21 = achtung - -accent-german-words-22 = музыка -accent-german-words-replace-22 = musik - -accent-german-words-23 = капитан -accent-german-words-replace-23 = kapitän - -accent-german-words-24 = шашлык -accent-german-words-replace-24 = döner - -accent-german-words-25 = мышь -accent-german-words-replace-25 = maus - -accent-german-words-26 = что -accent-german-words-replace-26 = was - -accent-german-words-27 = благодарю -accent-german-words-replace-27 = dankeschön - -accent-german-words-28 = спасибо -accent-german-words-replace-28 = danke - -accent-german-words-29 = будь здоров -accent-german-words-replace-29 = gesundheit - -accent-german-words-30 = огнемёт -accent-german-words-replace-30 = flammenwerfer - -accent-german-words-31 = призрак -accent-german-words-replace-31 = poltergeist - -accent-german-words-32 = травка -accent-german-words-32-2 = капуста -accent-german-words-replace-32 = kraut - -accent-german-words-33 = водка -accent-german-words-replace-33 = wodka - -accent-german-words-34 = рюкзак -accent-german-words-replace-34 = rucksack - -accent-german-words-35 = медикаменты -accent-german-words-replace-35 = medizin - -accent-german-words-36 = акцент -accent-german-words-replace-36 = akzent - -accent-german-words-37 = аномалия -accent-german-words-replace-37 = anomalie - -accent-german-words-38 = артифакт -accent-german-words-38-2 = артефакт -accent-german-words-replace-38 = artefakt - -accent-german-words-39 = тупой -accent-german-words-replace-39 = dumm - -accent-german-words-40 = глупый -accent-german-words-replace-40 = doof - -accent-german-words-41 = прекрасно -accent-german-words-replace-41 = wunderbar - -accent-german-words-42 = предупреждение -accent-german-words-replace-42 = warnung - -accent-german-words-43 = предупреждения -accent-german-words-replace-43 = warnungen - -accent-german-words-44 = и -accent-german-words-replace-44 = und - -accent-german-words-45 = карп -accent-german-words-replace-45 = karpfen - -accent-german-words-46 = командир -accent-german-words-replace-46 = kommandant - -accent-german-words-47 = пиво -accent-german-words-47-2 = пива -accent-german-words-replace-47 = bier - -accent-german-words-48 = привет -accent-german-words-replace-48 = hallo - -accent-german-words-49 = здравствуйте -accent-german-words-replace-49 = guten Tag - -accent-german-words-50 = скорая -accent-german-words-replace-50 = krankenwagen - -accent-german-words-51 = до встречи -accent-german-words-replace-51 = auf Wiedersehen - -accent-german-words-52 = пока -accent-german-words-replace-52 = tschüss - -accent-german-words-53 = пока пока -accent-german-words-53-2 = пока-пока -accent-german-words-replace-53 = tschau - -accent-german-words-54 = фантастика -accent-german-words-replace-54 = fantastisch - -accent-german-words-55 = генокрад -accent-german-words-replace-55 = doppelgänger - -accent-german-words-56 = запрещено -accent-german-words-56-2 = запрещён -accent-german-words-56-3 = запрет -accent-german-words-replace-56 = verboten - -accent-german-words-57 = быстро -accent-german-words-57-2 = быстрее -accent-german-words-replace-57 = schnell - -accent-german-words-58 = госпиталь -accent-german-words-replace-58 = krankenhaus - -accent-german-words-59 = tesla coil -accent-german-words-replace-59 = tesla coil - -accent-german-words-60 = tesla coils -accent-german-words-replace-60 = tesla coils - -accent-german-words-61 = теслалуз -accent-german-words-61-2 = теслуз -accent-german-words-61-3 = шаровая молния -accent-german-words-61-4 = ball lightning -accent-german-words-61-5 = тесла -accent-german-words-replace-61 = kugelblitz - -accent-german-words-62 = авто -accent-german-words-replace-62 = auto diff --git a/Resources/Locale/ru-RU/accent/italian.ftl b/Resources/Locale/ru-RU/accent/italian.ftl deleted file mode 100644 index dbfd7f9cd1f..00000000000 --- a/Resources/Locale/ru-RU/accent/italian.ftl +++ /dev/null @@ -1,151 +0,0 @@ -# This should probably use the same prefix system as the mobster accent. -# For the record, these do not work right now - even when uncommented. - -# accent-italian-prefix-1 = Ravioli, ravioli, give me the formuoli! -# accent-italian-prefix-2 = Mamma-mia! -# accent-italian-prefix-3 = Mamma-mia! That's a spicy meat-ball! -# accemt-italian-prefix-4 = La la la la la funiculi funicula! - -accent-italian-words-1 = ассистент -accent-italian-words-replace-1 = goombah - -accent-italian-words-2 = ассистенты -accent-italian-words-replace-2 = goombahs - -accent-italian-words-3 = малыш -accent-italian-words-replace-3 = bambino - -accent-italian-words-4 = плохой -accent-italian-words-replace-4 = molto male - -accent-italian-words-5 = прощай -accent-italian-words-replace-5 = arrivederci - -accent-italian-words-6 = капитан -accent-italian-words-replace-6 = capitano - -accent-italian-words-7 = сыр -accent-italian-words-replace-7 = parmesano - -accent-italian-words-8 = приготовь -accent-italian-words-replace-8 = cucinare - -accent-italian-words-9 = могу -accent-italian-words-replace-9 = potrebbe - -accent-italian-words-10 = папа -accent-italian-words-replace-10 = pappa - -accent-italian-words-11 = хороший -accent-italian-words-replace-11 = molto bene - -accent-italian-words-12 = грейтайд -accent-italian-words-replace-12 = curvisti - -accent-italian-words-13 = грейтайдер -accent-italian-words-replace-13 = curvisti - -accent-italian-words-14 = грейтайдеры -accent-italian-words-replace-14 = curvisti - -accent-italian-words-15 = привет -accent-italian-words-replace-15 = ciao - -accent-italian-words-16 = это -accent-italian-words-replace-16 = è un - -accent-italian-words-17 = сделай -accent-italian-words-replace-17 = fare una - -accent-italian-words-18 = мясо -accent-italian-words-replace-18 = prosciutto - -accent-italian-words-19 = мама -accent-italian-words-replace-19 = mamma - -accent-italian-words-20 = мой -accent-italian-words-replace-20 = il mio - -accent-italian-words-21 = бомба -accent-italian-words-replace-21 = polpetta di carne - -accent-italian-words-22 = опер -accent-italian-words-replace-22 = greco - -accent-italian-words-23 = оперативник -accent-italian-words-replace-23 = greco - -accent-italian-words-24 = оперативники -accent-italian-words-replace-24 = greci - -accent-italian-words-25 = СБ -accent-italian-words-replace-25 = polizia - -accent-italian-words-26 = охрана -accent-italian-words-replace-26 = polizia - -accent-italian-words-27 = офицер -accent-italian-words-replace-27 = polizia - -accent-italian-words-28 = щиткюр -accent-italian-words-replace-28 = carabinieri - -accent-italian-words-29 = щитсек -accent-italian-words-replace-29 = carabinieri - -accent-italian-words-30 = петь -accent-italian-words-replace-30 = cantare - -accent-italian-words-31 = спагетти -accent-italian-words-replace-31 = SPAGHETT - -accent-italian-words-32 = острый -accent-italian-words-replace-32 = piccante - -accent-italian-words-33 = спасибо -accent-italian-words-replace-33 = grazie - -accent-italian-words-34 = вещь -accent-italian-words-replace-34 = una cosa - -accent-italian-words-35 = предатель -accent-italian-words-replace-35 = mafioso - -accent-italian-words-36 = предатели -accent-italian-words-replace-36 = mafioso - -accent-italian-words-37 = используй -accent-italian-words-replace-37 = usare - -accent-italian-words-38 = хочу -accent-italian-words-replace-38 = desiderare - -accent-italian-words-39 = что -accent-italian-words-replace-39 = cosa - -accent-italian-words-40 = кто -accent-italian-words-replace-40 = che - -accent-italian-words-41 = чьё -accent-italian-words-replace-41 = il cui - -accent-italian-words-42 = почему -accent-italian-words-replace-42 = perché - -accent-italian-words-43 = вино -accent-italian-words-replace-43 = vino - -accent-italian-words-44 = пассажир -accent-italian-words-replace-44 = goombah - -accent-italian-words-45 = пассажиры -accent-italian-words-replace-45 = goombahs - -accent-italian-words-46 = я -accent-italian-words-replace-46 = sono - -accent-italian-words-47 = мы -accent-italian-words-replace-47 = noi - -accent-italian-words-48 = и -accent-italian-words-replace-48 = é diff --git a/Resources/Locale/ru-RU/accent/russian.ftl b/Resources/Locale/ru-RU/accent/russian.ftl index 6d6c617bbde..1bdb150d822 100644 --- a/Resources/Locale/ru-RU/accent/russian.ftl +++ b/Resources/Locale/ru-RU/accent/russian.ftl @@ -16,4 +16,4 @@ accent-russian-words-5 = друзья accent-russian-words-replace-5 = комрады accent-russian-words-6 = cheers -accent-russian-words-replace-6 = na zdorovje +accent-russian-words-replace-6 = na zdorovje \ No newline at end of file diff --git a/Resources/Locale/ru-RU/accent/scottish.ftl b/Resources/Locale/ru-RU/accent/scottish.ftl new file mode 100644 index 00000000000..e5a649c278f --- /dev/null +++ b/Resources/Locale/ru-RU/accent/scottish.ftl @@ -0,0 +1,233 @@ +accent-scottish-words-1 = do +accent-scottish-words-replace-1 = dae + +accent-scottish-words-2 = don't +accent-scottish-words-replace-2 = dinnae + +accent-scottish-words-3 = dont +accent-scottish-words-replace-3 = dinnae + +accent-scottish-words-4 = i'm +accent-scottish-words-replace-4 = A'm + +accent-scottish-words-5 = im +accent-scottish-words-replace-5 = am + +accent-scottish-words-6 = going +accent-scottish-words-replace-6 = gaun + +accent-scottish-words-7 = i +accent-scottish-words-replace-7 = Ah + +accent-scottish-words-8 = you're +accent-scottish-words-replace-8 = ye're + +accent-scottish-words-9 = youre +accent-scottish-words-replace-9 = yere + +accent-scottish-words-10 = you +accent-scottish-words-replace-10 = ye + +accent-scottish-words-11 = a +accent-scottish-words-replace-11 = ae + +accent-scottish-words-12 = i'll +accent-scottish-words-replace-12 = A'll + +accent-scottish-words-13 = ill +accent-scottish-words-replace-13 = all + +accent-scottish-words-14 = of +accent-scottish-words-replace-14 = ae + +accent-scottish-words-15 = was +accent-scottish-words-replace-15 = wis + +accent-scottish-words-16 = can't +accent-scottish-words-replace-16 = cannae + +accent-scottish-words-17 = cant +accent-scottish-words-replace-17 = cannae + +accent-scottish-words-18 = yourself +accent-scottish-words-replace-18 = yersel + +accent-scottish-words-19 = where +accent-scottish-words-replace-19 = whaur + +accent-scottish-words-20 = oh +accent-scottish-words-replace-20 = ach + +accent-scottish-words-21 = shit +accent-scottish-words-replace-21 = shite + +accent-scottish-words-22 = too +accent-scottish-words-replace-22 = tae + +accent-scottish-words-23 = my +accent-scottish-words-replace-23 = me + +accent-scottish-words-24 = not +accent-scottish-words-replace-24 = nae + +accent-scottish-words-25 = would +accent-scottish-words-replace-25 = wou + +accent-scottish-words-26 = should +accent-scottish-words-replace-26 = shou + +accent-scottish-words-27 = could +accent-scottish-words-replace-27 = cou + +accent-scottish-words-28 = would've +accent-scottish-words-replace-28 = wou'hae + +accent-scottish-words-29 = should've +accent-scottish-words-replace-29 = shou'hae + +accent-scottish-words-30 = could've +accent-scottish-words-replace-30 = cou'hae + +accent-scottish-words-31 = wouldve +accent-scottish-words-replace-31 = wouhae + +accent-scottish-words-32 = shouldve +accent-scottish-words-replace-32 = shouhae + +accent-scottish-words-33 = couldve +accent-scottish-words-replace-33 = couhae + +accent-scottish-words-34 = would'nt +accent-scottish-words-replace-34 = wou'nae + +accent-scottish-words-35 = should'nt +accent-scottish-words-replace-35 = shou'nae + +accent-scottish-words-36 = could'nt +accent-scottish-words-replace-36 = cou'nae + +accent-scottish-words-37 = wouldnt +accent-scottish-words-replace-37 = wounae + +accent-scottish-words-38 = shouldnt +accent-scottish-words-replace-38 = shounae + +accent-scottish-words-39 = couldnt +accent-scottish-words-replace-39 = counae + +accent-scottish-words-40 = no +accent-scottish-words-replace-40 = nae + +accent-scottish-words-41 = to +accent-scottish-words-replace-41 = ta + +accent-scottish-words-42 = the +accent-scottish-words-replace-42 = tha + +accent-scottish-words-43 = have +accent-scottish-words-replace-43 = hae + +accent-scottish-words-44 = what +accent-scottish-words-replace-44 = wot + +accent-scottish-words-45 = where +accent-scottish-words-replace-45 = whaur + +accent-scottish-words-46 = when +accent-scottish-words-replace-46 = wen + +accent-scottish-words-47 = myself +accent-scottish-words-replace-47 = mesel + +accent-scottish-words-48 = himself +accent-scottish-words-replace-48 = hesel + +accent-scottish-words-49 = herself +accent-scottish-words-replace-49 = shesel + +accent-scottish-words-50 = move +accent-scottish-words-replace-50 = moev + +accent-scottish-words-51 = moving +accent-scottish-words-replace-51 = moeven + +accent-scottish-words-52 = wasn't +accent-scottish-words-replace-52 = wis'nae + +accent-scottish-words-53 = wasnt +accent-scottish-words-replace-53 = wisnae + +accent-scottish-words-54 = wizard +accent-scottish-words-replace-54 = wizer + +accent-scottish-words-55 = for +accent-scottish-words-replace-55 = fer + +accent-scottish-words-56 = about +accent-scottish-words-replace-56 = abut + +accent-scottish-words-57 = tiny +accent-scottish-words-replace-57 = tinnae + +accent-scottish-words-58 = baby +accent-scottish-words-replace-58 = babee + +accent-scottish-words-59 = after +accent-scottish-words-replace-59 = efter + +accent-scottish-words-60 = gonna +accent-scottish-words-replace-60 = gaun'ae + +accent-scottish-words-61 = going to +accent-scottish-words-replace-61 = gaun'ae + +accent-scottish-words-62 = gone +accent-scottish-words-replace-62 = gaun + +accent-scottish-words-63 = now +accent-scottish-words-replace-63 = nou + +accent-scottish-words-64 = give +accent-scottish-words-replace-64 = gie + +accent-scottish-words-65 = gimme +accent-scottish-words-replace-65 = gie's + +accent-scottish-words-66 = give me +accent-scottish-words-replace-66 = gie's + +accent-scottish-words-67 = do you +accent-scottish-words-replace-67 = d'ye + +accent-scottish-words-68 = with +accent-scottish-words-replace-68 = wi + +accent-scottish-words-69 = without +accent-scottish-words-replace-69 = wi'ou + +accent-scottish-words-70 = whether +accent-scottish-words-replace-70 = we'er + +accent-scottish-words-71 = ever +accent-scottish-words-replace-71 = e'er + +accent-scottish-words-72 = whenever +accent-scottish-words-replace-72 = wen'er + +accent-scottish-words-73 = whatever +accent-scottish-words-replace-73 = wot'er + +accent-scottish-words-74 = how +accent-scottish-words-replace-74 = hou + +accent-scottish-words-75 = however +accent-scottish-words-replace-75 = hou'er + +accent-scottish-words-76 = more +accent-scottish-words-replace-76 = maer + +accent-scottish-words-77 = moreover +accent-scottish-words-replace-77 = maero'er + +accent-scottish-words-78 = over +accent-scottish-words-replace-78 = o'er diff --git a/Resources/Locale/ru-RU/accent/southern.ftl b/Resources/Locale/ru-RU/accent/southern.ftl index 7e1657a3ed7..230c2add9cc 100644 --- a/Resources/Locale/ru-RU/accent/southern.ftl +++ b/Resources/Locale/ru-RU/accent/southern.ftl @@ -1,17 +1,2 @@ accent-southern-words-1 = you all accent-southern-words-replace-1 = y'all - -accent-southern-words-2 = you guys -accent-southern-words-replace-2 = y'all - -accent-southern-words-3 = isn't -accent-southern-words-replace-3 = ain't - -accent-southern-words-4 = is not -accent-southern-words-replace-4 = ain't - -accent-southern-words-5 = aren't -accent-southern-words-replace-5 = ain't - -accent-southern-words-6 = are not -accent-southern-words-replace-6 = ain't diff --git a/Resources/Locale/ru-RU/access/components/agent-id-card-component.ftl b/Resources/Locale/ru-RU/access/components/agent-id-card-component.ftl index 8c15233d5cc..953c9f5a814 100644 --- a/Resources/Locale/ru-RU/access/components/agent-id-card-component.ftl +++ b/Resources/Locale/ru-RU/access/components/agent-id-card-component.ftl @@ -1,10 +1,9 @@ -agent-id-new = - { CAPITALIZE($card) } { $number -> - [0] не дала новых доступов - [one] дала { $number } новый доступ - [few] дала { $number } новых доступа - *[other] дала { $number } новых доступов - }. +agent-id-new = { CAPITALIZE($card) } { $number -> + [0] не дала новых доступов + [one] дала { $number } новый доступ + [few] дала { $number } новых доступа + *[other] дала { $number } новых доступов +}. agent-id-card-current-name = Имя: agent-id-card-current-job = Должность: diff --git a/Resources/Locale/ru-RU/access/components/genpop.ftl b/Resources/Locale/ru-RU/access/components/genpop.ftl index 3c7adbda239..0839ae8fdc8 100644 --- a/Resources/Locale/ru-RU/access/components/genpop.ftl +++ b/Resources/Locale/ru-RU/access/components/genpop.ftl @@ -2,19 +2,18 @@ genpop-prisoner-id-expire = Вы отбыли наказание! Теперь genpop-prisoner-id-popup-not-served = Наказание ещё не отбыто! genpop-prisoner-id-crime-default = [Редактировать] -genpop-prisoner-id-examine-wait = - Вы отбыли { $minutes } { $minutes -> - [1] минуту - [few] минуты - *[other] минут - } { $seconds } { $seconds -> - [1] секунду - [few] секунды - *[other] секунд - } из { $sentence } { $sentence -> - [1] минуты - *[other] минут - } вашего приговора за "{ $crime }". +genpop-prisoner-id-examine-wait = Вы отбыли { $minutes } { $minutes -> + [1] минуту + [few] минуты + *[other] минут +} { $seconds } { $seconds -> + [1] секунду + [few] секунды + *[other] секунд +} из { $sentence } { $sentence -> + [1] минуты + *[other] минут +} вашего приговора за "{ $crime }". genpop-prisoner-id-examine-wait-perm = Вы отбываете бессрочное наказание за "{ $crime }". genpop-prisoner-id-examine-served = Вы отбыли своё наказание за "{ $crime }". diff --git a/Resources/Locale/ru-RU/access/systems/access-overrider-system.ftl b/Resources/Locale/ru-RU/access/systems/access-overrider-system.ftl index a48c12f6411..90a542dd703 100644 --- a/Resources/Locale/ru-RU/access/systems/access-overrider-system.ftl +++ b/Resources/Locale/ru-RU/access/systems/access-overrider-system.ftl @@ -7,3 +7,4 @@ access-overrider-window-missing-privileges = Доступ к этому устр access-overrider-window-missing-privileges-no-id = Доступ к этому устройству не может быть изменён. Отсутствуют следующие права: access-overrider-cannot-modify-access = Вы не обладаете достаточными правами для модификации этого устройства! access-overrider-out-of-range = Подключённое устройство слишком далеко + diff --git a/Resources/Locale/ru-RU/access/systems/access-reader-system.ftl b/Resources/Locale/ru-RU/access/systems/access-reader-system.ftl index 4d488c732f9..3cba5863741 100644 --- a/Resources/Locale/ru-RU/access/systems/access-reader-system.ftl +++ b/Resources/Locale/ru-RU/access/systems/access-reader-system.ftl @@ -3,4 +3,4 @@ access-reader-access-label = [color=yellow]{ $access }[/color] access-reader-examination = Обычно доступ ограничен для персонала с доступом уровня { $access }. access-reader-examination-functionality-restricted = Доступ уровня { $access } может потребоваться для использования некоторых функций. access-reader-access-settings-modified-message = [italic]Считыватель доступов изменён на приём персонала с уровнем доступа { $access }.[/italic] -access-reader-access-settings-removed-message = [italic]Настройки считывателя доступов удалены.[/italic] +access-reader-access-settings-removed-message = [italic]Настройки считывателя доступов удалены.[/italic] \ No newline at end of file diff --git a/Resources/Locale/ru-RU/actions/actions/diona.ftl b/Resources/Locale/ru-RU/actions/actions/diona.ftl index aaa7c43c304..4173cde23ff 100644 --- a/Resources/Locale/ru-RU/actions/actions/diona.ftl +++ b/Resources/Locale/ru-RU/actions/actions/diona.ftl @@ -1,3 +1,3 @@ diona-gib-action-use = { $name } в одно мгновение распадается на части! -diona-reform-attempt = { $name } пытается превратиться! +diona-reform-attempt = { $name } пытается превратиться! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/actions/actions/internals.ftl b/Resources/Locale/ru-RU/actions/actions/internals.ftl index fd6f2fe8004..4ca143b2b0e 100644 --- a/Resources/Locale/ru-RU/actions/actions/internals.ftl +++ b/Resources/Locale/ru-RU/actions/actions/internals.ftl @@ -4,12 +4,11 @@ action-name-internals-toggle-off = Выключить подачу воздух action-description-internals-toggle-off = Дышите окружающей средой. internals-self-no-breath-tool = Вы не надели дыхательный аппарат -internals-other-no-breath-tool = - { $ent } не { GENDER($ent) -> - [male] надел - [female] надела - [epicene] надели - *[neuter] надело - } дыхательный аппарат +internals-other-no-breath-tool = { $ent } не { GENDER($ent) -> + [male] надел + [female] надела + [epicene] надели + *[neuter] надело +} дыхательный аппарат internals-self-no-tank = У вас нет газового баллона internals-other-no-tank = У { $ent } нет газового баллона diff --git a/Resources/Locale/ru-RU/administration/admin-verbs.ftl b/Resources/Locale/ru-RU/administration/admin-verbs.ftl index 020070d59a0..bd3f363a10a 100644 --- a/Resources/Locale/ru-RU/administration/admin-verbs.ftl +++ b/Resources/Locale/ru-RU/administration/admin-verbs.ftl @@ -12,8 +12,7 @@ admin-verbs-unfreeze = Разморозить admin-verbs-camera = Открыть камеру admin-verbs-camera-description = Открыть окно камеры, следящее за выбранной сущностью. admin-verbs-erase = Стереть -admin-verbs-erase-description = - Удаляет игрока из раунда и манифеста членов экипажа, а также удаляет все его сообщения в чате. +admin-verbs-erase-description = Удаляет игрока из раунда и манифеста членов экипажа, а также удаляет все его сообщения в чате. Их вещи упадут на землю. Игроки увидят всплывающее окно, указывающее им играть как будто исчезнувшего никогда не существовало. toolshed-verb-mark = Отметить diff --git a/Resources/Locale/ru-RU/administration/bwoink.ftl b/Resources/Locale/ru-RU/administration/bwoink.ftl index 4fb52f0518b..6838c2fb582 100644 --- a/Resources/Locale/ru-RU/administration/bwoink.ftl +++ b/Resources/Locale/ru-RU/administration/bwoink.ftl @@ -13,15 +13,13 @@ bwoink-system-introductory-message = О любых ошибках и других проблемах следует сообщать через Discord или Github. Злоупотребление этим чатом может привести к дисциплинарным наказаниям. -bwoink-system-typing-indicator = - { $players } { $count -> - [one] печатает - *[other] печатают - }... +bwoink-system-typing-indicator = { $players } { $count -> + [one] печатает + *[other] печатают +}... admin-ahelp-admin-only = Только Админ -admin-ahelp-admin-only-tooltip = - Если отмечено, сообщение не будет видно игроку, +admin-ahelp-admin-only-tooltip = Если отмечено, сообщение не будет видно игроку, но будет видно админам и будет отправлено в Дискорд. admin-bwoink-play-sound = Бвоинк? diff --git a/Resources/Locale/ru-RU/administration/commands/add-uplink-command.ftl b/Resources/Locale/ru-RU/administration/commands/add-uplink-command.ftl index 0f1adf2b601..a6907479de7 100644 --- a/Resources/Locale/ru-RU/administration/commands/add-uplink-command.ftl +++ b/Resources/Locale/ru-RU/administration/commands/add-uplink-command.ftl @@ -5,4 +5,4 @@ add-uplink-command-completion-1 = Username (по-умолчанию это вы add-uplink-command-completion-2 = Uplink uid (по-умолчанию это КПК) add-uplink-command-completion-3 = Включена ли скидка в аплинке add-uplink-command-error-1 = Выбранный игрок не имеет подконтрольную сущность -add-uplink-command-error-2 = Не удалось добавить аплинк игроку +add-uplink-command-error-2 = Не удалось добавить аплинк игроку \ No newline at end of file diff --git a/Resources/Locale/ru-RU/administration/commands/adminnotes.ftl b/Resources/Locale/ru-RU/administration/commands/adminnotes.ftl index 3bba05ed895..68a15d52437 100644 --- a/Resources/Locale/ru-RU/administration/commands/adminnotes.ftl +++ b/Resources/Locale/ru-RU/administration/commands/adminnotes.ftl @@ -2,8 +2,7 @@ cmd-adminnotes-desc = Открыть панель админ заметок иг cmd-adminnotes-help = Использование: adminnotes cmd-adminnotes-wrong-target = Не удалось найти игрока '{ $user }'. -cmd-adminnotes-args-error = - Неверные аргументы. - Использование: adminnotes +cmd-adminnotes-args-error = Неверные аргументы. + Использование: adminnotes cmd-adminnotes-hint = UserId ИЛИ Username diff --git a/Resources/Locale/ru-RU/administration/commands/connection-commands.ftl b/Resources/Locale/ru-RU/administration/commands/connection-commands.ftl index 3b1e734d53c..3196fb422ba 100644 --- a/Resources/Locale/ru-RU/administration/commands/connection-commands.ftl +++ b/Resources/Locale/ru-RU/administration/commands/connection-commands.ftl @@ -1,8 +1,7 @@ ## Strings for the "grant_connect_bypass" command. cmd-grant_connect_bypass-desc = Temporarily allow a user to bypass regular connection checks. -cmd-grant_connect_bypass-help = - Usage: grant_connect_bypass [duration minutes] +cmd-grant_connect_bypass-help = Usage: grant_connect_bypass [duration minutes] Temporarily grants a user the ability to bypass regular connections restrictions. The bypass only applies to this game server and will expire after (by default) 1 hour. They will be able to join regardless of whitelist, panic bunker, or player cap. diff --git a/Resources/Locale/ru-RU/administration/commands/control-mob-command.ftl b/Resources/Locale/ru-RU/administration/commands/control-mob-command.ftl index 833b091144d..bcc6d78da60 100644 --- a/Resources/Locale/ru-RU/administration/commands/control-mob-command.ftl +++ b/Resources/Locale/ru-RU/administration/commands/control-mob-command.ftl @@ -1,2 +1,2 @@ control-mob-command-description = Переносит разум пользователя в указанную сущность. -control-mob-command-help-text = Использование: controlmob . +control-mob-command-help-text = Использование: controlmob . \ No newline at end of file diff --git a/Resources/Locale/ru-RU/administration/commands/delete-entities-with-component-command.ftl b/Resources/Locale/ru-RU/administration/commands/delete-entities-with-component-command.ftl index 549c62a13ee..a027235204d 100644 --- a/Resources/Locale/ru-RU/administration/commands/delete-entities-with-component-command.ftl +++ b/Resources/Locale/ru-RU/administration/commands/delete-entities-with-component-command.ftl @@ -1,5 +1,4 @@ delete-entities-with-component-command-description = Удаляет сущности с указанными компонентами. -delete-entities-with-component-command-help-text = - Использование: deleteewc ... - Удаляет все сущности с указанными компонентами. -delete-entities-with-component-command-deleted-components = Удалено { $count } сущностей +delete-entities-with-component-command-help-text = Использование: deleteewc ... + Удаляет все сущности с указанными компонентами. +delete-entities-with-component-command-deleted-components = Удалено { $count } сущностей \ No newline at end of file diff --git a/Resources/Locale/ru-RU/administration/commands/osay-command.ftl b/Resources/Locale/ru-RU/administration/commands/osay-command.ftl index 5bdae9733ea..c6446df9c3c 100644 --- a/Resources/Locale/ru-RU/administration/commands/osay-command.ftl +++ b/Resources/Locale/ru-RU/administration/commands/osay-command.ftl @@ -1,5 +1,5 @@ cmd-osay-desc = Forces another entity to try to send a message -cmd-osay-help = Usage: {$command} +cmd-osay-help = Usage: { $command } osay-command-arg-uid = source uid osay-command-arg-type = type diff --git a/Resources/Locale/ru-RU/administration/commands/rejuvenate-command.ftl b/Resources/Locale/ru-RU/administration/commands/rejuvenate-command.ftl index 0a754d260ab..8958df21623 100644 --- a/Resources/Locale/ru-RU/administration/commands/rejuvenate-command.ftl +++ b/Resources/Locale/ru-RU/administration/commands/rejuvenate-command.ftl @@ -1,6 +1,5 @@ rejuvenate-command-description = Полностью исцеляет моба. -rejuvenate-command-help-text = - Использование: rejuvenate ... - Пытается вылечить моба пользователя, если аргументы не предоставлены. +rejuvenate-command-help-text = Использование: rejuvenate ... + Пытается вылечить моба пользователя, если аргументы не предоставлены. rejuvenate-command-self-heal-message = Исцеление пользовательского моба, поскольку аргументы не были предоставлены. -rejuvenate-command-no-entity-attached-message = К пользователю не привязана никакая сущность. +rejuvenate-command-no-entity-attached-message = К пользователю не привязана никакая сущность. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/administration/commands/stealthmin-command.ftl b/Resources/Locale/ru-RU/administration/commands/stealthmin-command.ftl index f96d083c520..01eb6fb4428 100644 --- a/Resources/Locale/ru-RU/administration/commands/stealthmin-command.ftl +++ b/Resources/Locale/ru-RU/administration/commands/stealthmin-command.ftl @@ -1,4 +1,3 @@ cmd-stealthmin-desc = Переключение видимости вас через adminwho. -cmd-stealthmin-help = - Использование: stealthmin +cmd-stealthmin-help = Использование: stealthmin Используйте stealthmin для переключения отображение вас в результате вывода команды adminwho. diff --git a/Resources/Locale/ru-RU/administration/smites.ftl b/Resources/Locale/ru-RU/administration/smites.ftl index 74ee9594f0e..66eabe57059 100644 --- a/Resources/Locale/ru-RU/administration/smites.ftl +++ b/Resources/Locale/ru-RU/administration/smites.ftl @@ -106,7 +106,7 @@ admin-smite-lung-removal-description = Удаляет лёгкие цели, т admin-smite-disarm-prone-description = Шанс обезоружить цель становится 100%, а наручники надеваются на неё мгновенно. admin-smite-garbage-can-description = Превратите цель в мусорку, чтобы подчеркнуть, о чём она вам напоминает. admin-smite-super-bonk-description = Заставляет цель удариться о каждый стол на станции и за её пределами. -admin-smite-super-bonk-lite-description = Заставляет цель удариться о каждый стол на станции и за её пределами. Прекращает действовать после смерти цели. +admin-smite-super-bonk-lite-description= Заставляет цель удариться о каждый стол на станции и за её пределами. Прекращает действовать после смерти цели. admin-smite-terminate-description = Создаёт экстерминатора с ролью призрака, с единственной задачей — убить выбранную цель. admin-smite-super-slip-description = Очень сильно поскальзывает цель. admin-smite-omni-accent-description = Заставляет цель говорить с почти каждым возможным акцентом. diff --git a/Resources/Locale/ru-RU/administration/ui/admin-notes.ftl b/Resources/Locale/ru-RU/administration/ui/admin-notes.ftl index e3b71e12036..e472b1a86f4 100644 --- a/Resources/Locale/ru-RU/administration/ui/admin-notes.ftl +++ b/Resources/Locale/ru-RU/administration/ui/admin-notes.ftl @@ -24,9 +24,9 @@ admin-notes-delete-confirm = Вы уверены? admin-notes-edited = Последнее изменение от { $author } в { $date } admin-notes-unbanned = Разбанил { $admin } в { $date } admin-notes-message-desc = [color=white]Вы получили { $count -> - [1] новое сообщение от администрации - *[other] новых сообщений от администрации - } с момента последней игры на сервере.[/color] + [1] новое сообщение от администрации + *[other] новых сообщений от администрации +} с момента последней игры на сервере.[/color] admin-notes-message-admin = От [bold]{ $admin }[/bold], датировано { TOSTRING($date, "f") }: admin-notes-message-wait = Кнопки будут доступны через { $time } секунд. admin-notes-message-accept = Скрыть навсегда diff --git a/Resources/Locale/ru-RU/administration/ui/manage-solutions/add-reagent.ftl b/Resources/Locale/ru-RU/administration/ui/manage-solutions/add-reagent.ftl index a6064a849bb..4b714703b7c 100644 --- a/Resources/Locale/ru-RU/administration/ui/manage-solutions/add-reagent.ftl +++ b/Resources/Locale/ru-RU/administration/ui/manage-solutions/add-reagent.ftl @@ -2,4 +2,4 @@ admin-add-reagent-window-title = Добавить к { $solution } admin-add-reagent-window-amount-label = Количество: admin-add-reagent-window-search-placeholder = Фильтр... admin-add-reagent-window-add = Добавить { $quantity } ед. { $reagent } -admin-add-reagent-window-add-invalid-reagent = Выберите реагент +admin-add-reagent-window-add-invalid-reagent = Выберите реагент \ No newline at end of file diff --git a/Resources/Locale/ru-RU/administration/ui/set-outfit/set-outfit-menu.ftl b/Resources/Locale/ru-RU/administration/ui/set-outfit/set-outfit-menu.ftl index b9a7f65133d..2c3e7467fa7 100644 --- a/Resources/Locale/ru-RU/administration/ui/set-outfit/set-outfit-menu.ftl +++ b/Resources/Locale/ru-RU/administration/ui/set-outfit/set-outfit-menu.ftl @@ -1,4 +1,4 @@ ### SetOutfitMEnu.xaml.cs set-outfit-menu-title = Установить наряд -set-outfit-menu-confirm-button = Подтвердить +set-outfit-menu-confirm-button = Подтвердить \ No newline at end of file diff --git a/Resources/Locale/ru-RU/advertisements/other/firebot.ftl b/Resources/Locale/ru-RU/advertisements/other/firebot.ftl index 09c7c8aad96..a68b4aa2183 100644 --- a/Resources/Locale/ru-RU/advertisements/other/firebot.ftl +++ b/Resources/Locale/ru-RU/advertisements/other/firebot.ftl @@ -1,4 +1,4 @@ advertisement-firebot-1 = Пожара не обнаружено. advertisement-firebot-2 = Только вы можете предотвратить пожар на станции. advertisement-firebot-3 = Температура допустимая. -advertisement-firebot-4 = Сохраняйте прохладу. +advertisement-firebot-4 = Сохраняйте прохладу. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/advertisements/vending/clothesmate.ftl b/Resources/Locale/ru-RU/advertisements/vending/clothesmate.ftl index 46a1cd1b1e1..1af69f64b6e 100644 --- a/Resources/Locale/ru-RU/advertisements/vending/clothesmate.ftl +++ b/Resources/Locale/ru-RU/advertisements/vending/clothesmate.ftl @@ -4,4 +4,4 @@ advertisement-clothes-3 = Взгляните на все эти крутости advertisement-clothes-4 = Наряду ты не рад? Загляни в ОдеждоМат! advertisement-clothes-5 = Теперь и с новыми шеегрейками! advertisement-clothes-6 = Ты выглядишь стильно! -advertisement-clothes-7 = У вас прекрасный наряд! +advertisement-clothes-7 = У вас прекрасный наряд! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/advertisements/vending/nanomed.ftl b/Resources/Locale/ru-RU/advertisements/vending/nanomed.ftl index f78d53dfbfa..257648d5105 100644 --- a/Resources/Locale/ru-RU/advertisements/vending/nanomed.ftl +++ b/Resources/Locale/ru-RU/advertisements/vending/nanomed.ftl @@ -6,4 +6,4 @@ advertisement-nanomed-5 = Эти штуки спасают жизни. advertisement-nanomed-6 = Может сами примете? advertisement-nanomed-7 = Пинг! advertisement-nanomed-8 = Не допускайте передозировки! -advertisement-nanomed-9 = Пора допускать передозировку! +advertisement-nanomed-9 = Пора допускать передозировку! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/advertisements/vending/robodrobe.ftl b/Resources/Locale/ru-RU/advertisements/vending/robodrobe.ftl index 1743a5d8cfc..d7d755e00cb 100644 --- a/Resources/Locale/ru-RU/advertisements/vending/robodrobe.ftl +++ b/Resources/Locale/ru-RU/advertisements/vending/robodrobe.ftl @@ -1,4 +1,4 @@ advertisement-robodrobe-1 = You turn me TRUE, use defines! advertisement-robodrobe-2 = 110100001011111011010000101101001101000010110101110100001011011011010000101101001101000010110000 advertisement-robodrobe-3 = Похитьте кого-нибудь из техтуннелей и превратите его в киборга! -advertisement-robodrobe-4 = Робототехника — это весело! +advertisement-robodrobe-4 = Робототехника — это весело! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/advertisements/vending/sovietsoda.ftl b/Resources/Locale/ru-RU/advertisements/vending/sovietsoda.ftl index abb5d20aa94..639df525254 100644 --- a/Resources/Locale/ru-RU/advertisements/vending/sovietsoda.ftl +++ b/Resources/Locale/ru-RU/advertisements/vending/sovietsoda.ftl @@ -6,4 +6,4 @@ advertisement-sovietsoda-5 = Если есть человек, значит, е advertisement-sovietsoda-6 = Если оно достаточно хорошо для повседневной жизни, то оно достаточно хорошо и для нас! thankyou-sovietsoda-1 = Приятного аппетита, товарищ! thankyou-sovietsoda-2 = А теперь возвращайтесь к работе. -thankyou-sovietsoda-3 = Вы получили всё, что положено. +thankyou-sovietsoda-3 = Вы получили всё, что положено. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/alerts/alerts.ftl b/Resources/Locale/ru-RU/alerts/alerts.ftl index 686b3c44014..fd0fd863b3c 100644 --- a/Resources/Locale/ru-RU/alerts/alerts.ftl +++ b/Resources/Locale/ru-RU/alerts/alerts.ftl @@ -122,3 +122,6 @@ alerts-rooted-desc = Вы прикреплены к земле. Вы не мож alerts-stealthy-name = Карманничество alerts-stealthy-desc = Определяет режим скрытой кражи. Нажмите для переключения. + +alerts-prying-name = Prying +alerts-prying-desc = You can innately pry doors open using alternative interaction. diff --git a/Resources/Locale/ru-RU/ame/components/ame-part-component.ftl b/Resources/Locale/ru-RU/ame/components/ame-part-component.ftl index 9141d64c958..05743ee4d2a 100644 --- a/Resources/Locale/ru-RU/ame/components/ame-part-component.ftl +++ b/Resources/Locale/ru-RU/ame/components/ame-part-component.ftl @@ -1,2 +1,2 @@ ame-part-component-interact-using-no-hands = У вас нет рук. -ame-part-component-shielding-already-present = Экранирование уже имеется! +ame-part-component-shielding-already-present = Экранирование уже имеется! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/anomaly/anomaly.ftl b/Resources/Locale/ru-RU/anomaly/anomaly.ftl index 1c166c8eed0..4cb6866f221 100644 --- a/Resources/Locale/ru-RU/anomaly/anomaly.ftl +++ b/Resources/Locale/ru-RU/anomaly/anomaly.ftl @@ -35,21 +35,20 @@ anomaly-scanner-pulse-timer = Время до следующего импуль anomaly-gorilla-core-slot-name = Ядро аномалии anomaly-gorilla-charge-none = Внутри нет [bold]ядра аномалии[/bold]. -anomaly-gorilla-charge-limit = - { $count -> - [one] Остался - *[other] Осталось - } [color={ $count -> - [3] green - [2] yellow - [1] orange - [0] red - *[other] purple - }]{ $count } { $count -> - [one] заряд - [few] заряда - *[other] зарядов - }[/color]. +anomaly-gorilla-charge-limit = { $count -> + [one] Остался + *[other] Осталось +} [color={ $count -> + [3] green + [2] yellow + [1] orange + [0] red + *[other] purple +}]{ $count } { $count -> + [one] заряд + [few] заряда + *[other] зарядов +}[/color]. anomaly-gorilla-charge-infinite = Осталось [color=gold]бесконечное количество зарядов[/color]. [italic]Пока что...[/italic] anomaly-sync-connected = Аномалия успешно привязана @@ -69,12 +68,11 @@ anomaly-generator-no-cooldown = Перезарядка: [color=gray]Заверш anomaly-generator-yes-fire = Статус: [color=forestgreen]Готов[/color] anomaly-generator-no-fire = Статус: [color=crimson]Не готов[/color] anomaly-generator-generate = Создать аномалию -anomaly-generator-charges = - { $charges -> - [one] { $charges } заряд - [few] { $charges } заряда - *[other] { $charges } зарядов - } +anomaly-generator-charges = { $charges -> + [one] { $charges } заряд + [few] { $charges } заряда + *[other] { $charges } зарядов +} anomaly-generator-announcement = Аномалия была создана! anomaly-command-pulse = Вызывает импульс аномалии @@ -104,3 +102,4 @@ anomaly-behavior-inconstancy = [color=crimson]Обнаружено непост anomaly-behavior-fast = [color=crimson]Частота импульсов значительно повышена.[/color] anomaly-behavior-strenght = [color=crimson]Мощность импульсов значительно повышена.[/color] anomaly-behavior-moving = [color=crimson]Обнаружена координатная нестабильность.[/color] +anomaly-secret-admin = [color=red](ERROR)[/color] diff --git a/Resources/Locale/ru-RU/anomaly/inner_anomaly.ftl b/Resources/Locale/ru-RU/anomaly/inner_anomaly.ftl index c378586cd56..4290271c55a 100644 --- a/Resources/Locale/ru-RU/anomaly/inner_anomaly.ftl +++ b/Resources/Locale/ru-RU/anomaly/inner_anomaly.ftl @@ -15,4 +15,4 @@ inner-anomaly-end-message = Аномальная активность внутр inner-anomaly-severity-info-50 = Вы чувствуете, что аномалия завладела половиной вашего тела. inner-anomaly-severity-info-75 = Вы чувствуете, что аномалия завладела значительной частью вашего тела. inner-anomaly-severity-info-90 = Вы чувствуете, что аномалия почти полностью завладела вашим телом. -inner-anomaly-severity-info-100 = Аномалия внутри вас неконтролируемо растёт, причиняя огромную боль и разрывая вас на части! +inner-anomaly-severity-info-100 = Аномалия внутри вас неконтролируемо растёт, причиняя огромную боль и разрывая вас на части! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/arcade/blockgame.ftl b/Resources/Locale/ru-RU/arcade/blockgame.ftl index 1734dba13b1..4e2f1368faa 100644 --- a/Resources/Locale/ru-RU/arcade/blockgame.ftl +++ b/Resources/Locale/ru-RU/arcade/blockgame.ftl @@ -8,8 +8,7 @@ blockgame-menu-label-points = Очки: { $points } blockgame-menu-label-level = Уровень: { $level } # Game over information of your round -blockgame-menu-gameover-info = - Глобальный счёт: { $global } +blockgame-menu-gameover-info = Глобальный счёт: { $global } Локальный счёт: { $local } Очки: { $points } diff --git a/Resources/Locale/ru-RU/atmos/air-alarm-ui.ftl b/Resources/Locale/ru-RU/atmos/air-alarm-ui.ftl index 67e6214e168..5644294e233 100644 --- a/Resources/Locale/ru-RU/atmos/air-alarm-ui.ftl +++ b/Resources/Locale/ru-RU/atmos/air-alarm-ui.ftl @@ -18,22 +18,21 @@ air-alarm-ui-window-mode-label = Режим air-alarm-ui-window-mode-select-locked-label = [bold][color=red] Ошибка выбора режима! [/color][/bold] air-alarm-ui-window-auto-mode-label = Авто-режим --air-alarm-state-name = - { $state -> - [normal] Нормально - [warning] Предупреждение - [danger] Опасно - [emagged] Взломано - *[invalid] Невалидно - } - -air-alarm-ui-window-listing-title = {$address} : {-air-alarm-state-name(state:$state)} +-air-alarm-state-name = { $state -> + [normal] Нормально + [warning] Предупреждение + [danger] Опасно + [emagged] Взломано + *[invalid] Невалидно +} + +air-alarm-ui-window-listing-title = { $address } : { -air-alarm-state-name(state:$state) } air-alarm-ui-window-pressure = { $pressure } кПа air-alarm-ui-window-pressure-indicator = Давление: [color={ $color }]{ $pressure } кПа[/color] air-alarm-ui-window-temperature = { $tempC } °C ({ $temperature } К) air-alarm-ui-window-temperature-indicator = Температура: [color={ $color }]{ $tempC } °C ({ $temperature } К)[/color] -air-alarm-ui-window-alarm-state = [color={ $color }]{-air-alarm-state-name(state:$state)}[/color] -air-alarm-ui-window-alarm-state-indicator = Статус: [color={ $color }]{-air-alarm-state-name(state:$state)}[/color] +air-alarm-ui-window-alarm-state = [color={ $color }]{ -air-alarm-state-name(state:$state) }[/color] +air-alarm-ui-window-alarm-state-indicator = Статус: [color={ $color }]{ -air-alarm-state-name(state:$state) }[/color] air-alarm-ui-window-tab-vents = Вентиляции air-alarm-ui-window-tab-scrubbers = Скрубберы diff --git a/Resources/Locale/ru-RU/atmos/atmos-alerts-console.ftl b/Resources/Locale/ru-RU/atmos/atmos-alerts-console.ftl index d36e556c94e..8f7d3b9af9a 100644 --- a/Resources/Locale/ru-RU/atmos/atmos-alerts-console.ftl +++ b/Resources/Locale/ru-RU/atmos/atmos-alerts-console.ftl @@ -35,4 +35,4 @@ atmos-alerts-window-alerts-being-silenced = Отключение предупр atmos-alerts-window-toggle-overlays = Переключение отображения сигнализации atmos-alerts-window-flavor-left = Обратитесь за помощью к атмосферному технику -atmos-alerts-window-flavor-right = v1.8 +atmos-alerts-window-flavor-right = v1.8 \ No newline at end of file diff --git a/Resources/Locale/ru-RU/atmos/atmos-pipe-layers.ftl b/Resources/Locale/ru-RU/atmos/atmos-pipe-layers.ftl index a316bc30751..c6e0d7fc5bd 100644 --- a/Resources/Locale/ru-RU/atmos/atmos-pipe-layers.ftl +++ b/Resources/Locale/ru-RU/atmos/atmos-pipe-layers.ftl @@ -7,4 +7,4 @@ atmos-pipe-layers-component-current-layer = Выбрана { $layerName } кон atmos-pipe-layers-component-select-layer = { CAPITALIZE($layerName) } конфигурация atmos-pipe-layers-component-tool-missing = Нужен { $toolName } atmos-pipe-layers-component-pipes-are-covered = Трубы накрыты -atmos-pipe-layers-component-cannot-adjust-pipes = Необходимо оголить трубы перед их регулировкой. +atmos-pipe-layers-component-cannot-adjust-pipes = Необходимо оголить трубы перед их регулировкой. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/atmos/flammable-component.ftl b/Resources/Locale/ru-RU/atmos/flammable-component.ftl index 577c74564c4..a546d6616f4 100644 --- a/Resources/Locale/ru-RU/atmos/flammable-component.ftl +++ b/Resources/Locale/ru-RU/atmos/flammable-component.ftl @@ -1 +1 @@ -flammable-component-resist-message = Вы останавливаетесь, падаете и катаетесь! +flammable-component-resist-message = Вы останавливаетесь, падаете и катаетесь! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/atmos/gas-miner-component.ftl b/Resources/Locale/ru-RU/atmos/gas-miner-component.ftl index c4fc37c97de..3c3e76cf5d7 100644 --- a/Resources/Locale/ru-RU/atmos/gas-miner-component.ftl +++ b/Resources/Locale/ru-RU/atmos/gas-miner-component.ftl @@ -8,4 +8,4 @@ gas-miner-pressure-cutoff-text = Ограничение окружающего gas-miner-state-working-text = Газодобытчик [color=green]активен[/color] и добывает газ. gas-miner-state-idle-text = Газодобытчик [color=yellow]простаивает[/color] и не добывает газ. -gas-miner-state-disabled-text = Газодобытчик [color=red]отключён[/color] и не добывает газ. +gas-miner-state-disabled-text = Газодобытчик [color=red]отключён[/color] и не добывает газ. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/atmos/gas-pressure-regulator-system.ftl b/Resources/Locale/ru-RU/atmos/gas-pressure-regulator-system.ftl index 66f6069029a..80fa0aa2d95 100644 --- a/Resources/Locale/ru-RU/atmos/gas-pressure-regulator-system.ftl +++ b/Resources/Locale/ru-RU/atmos/gas-pressure-regulator-system.ftl @@ -1,8 +1,7 @@ # Examine Text -gas-pressure-regulator-system-examined = - Вентиль [color={ $statusColor }]{ $open -> - [true] открыт - *[false] закрыт - }[/color]. +gas-pressure-regulator-system-examined = Вентиль [color={ $statusColor }]{ $open -> + [true] открыт + *[false] закрыт +}[/color]. gas-pressure-regulator-examined-threshold-pressure = Пороговое давление установлено на [color=lightblue]{ $threshold } кПа[/color]. gas-pressure-regulator-examined-flow-rate = Датчик показывает [color=lightblue]{ $flowRate } л/с[/color]. diff --git a/Resources/Locale/ru-RU/atmos/gas-valve-system.ftl b/Resources/Locale/ru-RU/atmos/gas-valve-system.ftl index 650da60536e..78d91e666fa 100644 --- a/Resources/Locale/ru-RU/atmos/gas-valve-system.ftl +++ b/Resources/Locale/ru-RU/atmos/gas-valve-system.ftl @@ -1,6 +1,5 @@ # Examine Text -gas-valve-system-examined = - Клапан [color={ $statusColor }]{ $open -> - [true] открыт - *[false] закрыт - }[/color]. +gas-valve-system-examined = Клапан [color={ $statusColor }]{ $open -> + [true] открыт + *[false] закрыт +}[/color]. diff --git a/Resources/Locale/ru-RU/atmos/gas-volume-pump-system.ftl b/Resources/Locale/ru-RU/atmos/gas-volume-pump-system.ftl index c6b1b8fa91c..af657f1e5c7 100644 --- a/Resources/Locale/ru-RU/atmos/gas-volume-pump-system.ftl +++ b/Resources/Locale/ru-RU/atmos/gas-volume-pump-system.ftl @@ -1,7 +1,6 @@ # Examine Text -gas-volume-pump-system-examined = - Насос настроен на [color={ $statusColor }]{ $rate }{ $rate -> - [one] литр/сек - [few] литра/сек - *[other] литров/сек - }[/color]. +gas-volume-pump-system-examined = Насос настроен на [color={ $statusColor }]{ $rate }{ $rate -> + [one] литр/сек + [few] литра/сек + *[other] литров/сек +}[/color]. diff --git a/Resources/Locale/ru-RU/barsign/barsign-component.ftl b/Resources/Locale/ru-RU/barsign/barsign-component.ftl index 4388520b3da..de6cb5cb092 100644 --- a/Resources/Locale/ru-RU/barsign/barsign-component.ftl +++ b/Resources/Locale/ru-RU/barsign/barsign-component.ftl @@ -105,6 +105,7 @@ barsign-prototype-name-whiskeyechoes = Виски Эхо barsign-prototype-description-whiskeyechoes = Элитный бар для элитных опер... Подождите, это же станция Nanotrasen. Почему эта вывеска в базе данных? ## EmpBarSign +barsign-prototype-name-empbarsign = glitchy bar sign barsign-prototype-description-empbarsign = Что-то пошло совсем не так. ## SignOff diff --git a/Resources/Locale/ru-RU/bed/cryostorage/cryogenic-storage.ftl b/Resources/Locale/ru-RU/bed/cryostorage/cryogenic-storage.ftl index 8abdb369086..7bdffcd5948 100644 --- a/Resources/Locale/ru-RU/bed/cryostorage/cryogenic-storage.ftl +++ b/Resources/Locale/ru-RU/bed/cryostorage/cryogenic-storage.ftl @@ -3,13 +3,12 @@ earlyleave-cryo-job-unknown = Должность неизвестна # {$entity} available for GENDER function purposes -earlyleave-cryo-announcement = - { $character } ({ $job }) { GENDER($entity) -> - [male] был перемещён - [female] была перемещена - [epicene] были перемещены - *[neuter] было перемещено - } в криогенное хранилище! +earlyleave-cryo-announcement = { $character } ({ $job }) { GENDER($entity) -> + [male] был перемещён + [female] была перемещена + [epicene] были перемещены + *[neuter] было перемещено +} в криогенное хранилище! earlyleave-cryo-sender = Станция cryostorage-paused-map-name = Карта хранения тел криосна diff --git a/Resources/Locale/ru-RU/body/body-scanner/body-scanner-component.ftl b/Resources/Locale/ru-RU/body/body-scanner/body-scanner-component.ftl index 8a1e3dca0b0..270d8b0ad05 100644 --- a/Resources/Locale/ru-RU/body/body-scanner/body-scanner-component.ftl +++ b/Resources/Locale/ru-RU/body/body-scanner/body-scanner-component.ftl @@ -2,4 +2,4 @@ body-scanner-display-title = Сканер тела body-scanner-display-health-label = Здоровье: -body-scanner-display-body-part-damage-text = { $damage } повреждений +body-scanner-display-body-part-damage-text = { $damage } повреждений \ No newline at end of file diff --git a/Resources/Locale/ru-RU/borg/borg.ftl b/Resources/Locale/ru-RU/borg/borg.ftl index e59c1244ea3..c2395985233 100644 --- a/Resources/Locale/ru-RU/borg/borg.ftl +++ b/Resources/Locale/ru-RU/borg/borg.ftl @@ -9,6 +9,7 @@ borg-mind-removed = { CAPITALIZE($name) } выключается! borg-module-too-many = Для ещё одного модуля не хватает места... borg-module-duplicate = Этот модуль уже установлен в этого киборга. borg-module-whitelist-deny = Этот модуль не подходит для данного типа киборгов... +borg-module-incompatible = This module isn't compatible with { THE($existing) }. borg-module-action-name = Активировать { $moduleName } borg-module-action-description = Выбрать { $moduleName }, чтобы использовать предоставляемые им инструменты. diff --git a/Resources/Locale/ru-RU/bql/bql-select.ftl b/Resources/Locale/ru-RU/bql/bql-select.ftl index 361816fd8a5..e15a83ca14e 100644 --- a/Resources/Locale/ru-RU/bql/bql-select.ftl +++ b/Resources/Locale/ru-RU/bql/bql-select.ftl @@ -1,6 +1,5 @@ cmd-bql_select-desc = Show results of a BQL query in a client-side window -cmd-bql_select-help = - Usage: bql_select +cmd-bql_select-help = Usage: bql_select The opened window allows you to teleport to or view variables the resulting entities. cmd-bql_select-err-server-shell = Cannot be executed from server shell diff --git a/Resources/Locale/ru-RU/burial/burial.ftl b/Resources/Locale/ru-RU/burial/burial.ftl index e478624b0fe..e5dd0dfd9aa 100644 --- a/Resources/Locale/ru-RU/burial/burial.ftl +++ b/Resources/Locale/ru-RU/burial/burial.ftl @@ -2,4 +2,4 @@ grave-start-digging-others = { CAPITALIZE($user) } начинает копать grave-start-digging-user = Вы начинаете копать { $grave } при помощи { $tool }. grave-start-digging-user-trapped = Вы начинаете выкарабкиваться из { $grave }! -grave-digging-requires-tool = Чтобы выкопать { $grave }, нужен инструмент! +grave-digging-requires-tool = Чтобы выкопать { $grave }, нужен инструмент! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/burning/bodyburn.ftl b/Resources/Locale/ru-RU/burning/bodyburn.ftl index 429eab0dea0..ccac82b5df6 100644 --- a/Resources/Locale/ru-RU/burning/bodyburn.ftl +++ b/Resources/Locale/ru-RU/burning/bodyburn.ftl @@ -1,2 +1,2 @@ bodyburn-text-others = { CAPITALIZE($name) } сгорает дотла! -bodyburn-vox-text-others = {CAPITALIZE(THE($name))} turned into fried vox! +bodyburn-vox-text-others = { CAPITALIZE(THE($name)) } turned into fried vox! diff --git a/Resources/Locale/ru-RU/cable/cable-multitool-system.ftl b/Resources/Locale/ru-RU/cable/cable-multitool-system.ftl index c558b9c9fdc..7887173292c 100644 --- a/Resources/Locale/ru-RU/cable/cable-multitool-system.ftl +++ b/Resources/Locale/ru-RU/cable/cable-multitool-system.ftl @@ -3,12 +3,11 @@ cable-multitool-system-internal-error-missing-component = Ваш мультит cable-multitool-system-verb-name = Питание cable-multitool-system-verb-tooltip = Используйте мультитул для просмотра статистики питания. -cable-multitool-system-statistics = - Ваш мультитул показывает статистику: - Источник тока: { POWERWATTS($supplyc) } - От батарей: { POWERWATTS($supplyb) } - Теоретическое снабжение: { POWERWATTS($supplym) } - Идеальное потребление: { POWERWATTS($consumption) } - Входной запас: { POWERJOULES($storagec) } / { POWERJOULES($storagem) } ({ TOSTRING($storager, "P1") }) - Выходной запас: { POWERJOULES($storageoc) } / { POWERJOULES($storageom) } ({ TOSTRING($storageor, "P1") }) +cable-multitool-system-statistics = Ваш мультитул показывает статистику: + Источник тока: { POWERWATTS($supplyc) } + От батарей: { POWERWATTS($supplyb) } + Теоретическое снабжение: { POWERWATTS($supplym) } + Идеальное потребление: { POWERWATTS($consumption) } + Входной запас: { POWERJOULES($storagec) } / { POWERJOULES($storagem) } ({ TOSTRING($storager, "P1") }) + Выходной запас: { POWERJOULES($storageoc) } / { POWERJOULES($storageom) } ({ TOSTRING($storageor, "P1") }) diff --git a/Resources/Locale/ru-RU/candle/extinguish-on-interact-component.ftl b/Resources/Locale/ru-RU/candle/extinguish-on-interact-component.ftl index bec6c6f2fe6..329b9ff8e2e 100644 --- a/Resources/Locale/ru-RU/candle/extinguish-on-interact-component.ftl +++ b/Resources/Locale/ru-RU/candle/extinguish-on-interact-component.ftl @@ -1 +1 @@ -candle-extinguish-failed = Пламя колеблется, но не гаснет +candle-extinguish-failed = Пламя колеблется, но не гаснет \ No newline at end of file diff --git a/Resources/Locale/ru-RU/cargo/bounties.ftl b/Resources/Locale/ru-RU/cargo/bounties.ftl index bee656ef17e..24d1bb9f7b9 100644 --- a/Resources/Locale/ru-RU/cargo/bounties.ftl +++ b/Resources/Locale/ru-RU/cargo/bounties.ftl @@ -6,8 +6,6 @@ bounty-item-bread = Хлеб bounty-item-carp = Космический карп bounty-item-carrot = Морковь bounty-item-carrot-fries = Морковный фри -bounty-item-clown-mask = Клоунская маска -bounty-item-clown-shoes = Клоунские туфли bounty-item-corn = Початок кукурузы bounty-item-crayon = Мелок bounty-item-cuban-carp = Карп по-кубински @@ -59,7 +57,6 @@ bounty-item-food = Мясное блюдо bounty-item-fruit = Фрукты bounty-item-vegetable = Овощи bounty-item-chili = Миска чили -bounty-item-rollerskates = Роликовые коньки bounty-item-bedsheet = Одеяло bounty-item-bandana = Бандана bounty-item-steak = Стейк @@ -87,7 +84,6 @@ bounty-description-bread = Проблемы с центральным плани bounty-description-carrot = Не просмотрев видеоинструкции по технике безопасности со сваркой, спасательный отряд на Станции 15 ослеп. Отправьте им немного моркови, чтобы они могли восстановить зрение. bounty-description-carrot-fries = Ночное зрение может означать жизнь или смерть! Заказ на партию морковного фри. bounty-description-carp = Адмирал Павлова объявила забастовку с тех пор, как Центральное командование конфисковало её "питомца". Она требует заменить его космическим карпом, живым или мёртвым. -bounty-description-clown-costume = В связи с недавней проблемой в контактном зоопарке космических карпов мы, к сожалению, потеряли клоуна Бонобобонобо. Пришлите нам новый костюм, чтобы дети смогли увидеть его снова. bounty-description-corn = После недавнего разрушения космического Огайо наш импорт кукурузы сократился на 80%. Пришлите нам немного, чтобы мы могли это восполнить. bounty-description-crayon = Ребёнок доктора Джонса снова съел все наши мелки. Пожалуйста, пришлите нам свои. bounty-description-cuban-carp = В честь рождения Кастро XXVII отправьте одного карпа по-кубински в Центком. @@ -132,13 +128,12 @@ bounty-description-food = После нашествия крысиного ко bounty-description-fruit = Героическая обезьяна помогла священнику поймать нарушителя спокойствия, прятавшегося в часовне, и команда хочет вознаградить её за отличную работу. bounty-description-vegetable = Новый шеф-повар — вегетарианец, и ботаники не справляются с его требованиями. Для поддержания запаса нам нужны дополнительные овощи. bounty-description-chili = Сегодня Четверг Чили на Центком, но, ну, некоторые из нас забыли его приготовить. Пожалуйста, выручите нас. -bounty-description-rollerskates = Служба безопасности Центком предложила новую стратегию, которая поможет офицерам одерживать верх в пеших погонях. Пришлите им одну пару, чтобы они поняли, насколько это ужасная идея. bounty-description-bedsheet = Кто-то в Атмос-отсеке постоянно выключает обогреватель, и мы все мёрзнем в наших кроватях. Пожалуйста, пришлите нам несколько дополнительных одеял, чтобы мы могли согреться. -bounty-description-bandana = Бзззт... Передача с планеты-тюрьмы OC-1001: Мы... перестраиваем нашу структуру командования. Пришлите нам банданы, чтобы мы могли различать банд... то есть отделы. +bounty-description-bandana = Бзззт... Передача с планеты-тюрьмы OC-1001: Мы... перестраиваем нашу структуру командования. Пришлите нам банданы, чтобы мы могли различать банд... то есть отделы. bounty-description-steak = Повар-вегетарианец отказывается готовить нам что-нибудь из мяса, и унатхи начинают беспокоиться. Не могли бы вы тайно доставить нам несколько стейков, чтобы они остались довольны? bounty-description-banana = Привет, станция! Ботаники не хотят мне больше ничего давать. Они сказали, что поскользнуть и выкинуть ГСБ в космос через открытый шлюз — это не смешно! Представляете? Помогите мне! ХОНК. bounty-description-beer = Какой-то гнусный предатель украл все напитки в баре. Да, все. Помогите нам продержаться, пока мы не найдём их. -bounty-description-hi-viz-vest = Клоун украл контроллер ДАМ и не хочет его возвращать. Здесь довольно темно. Если бы у нас было несколько светоотражающих жилетов, то видеть друг друга в темноте стало бы немного проще. +bounty-description-hi-viz-vest = Клоун украл контроллер ДАМ и не хочет его возвращать. Здесь довольно темно. Если бы у нас было несколько светоотражающих жилетов, то видеть друг друга в темноте стало бы немного проще. bounty-description-torch = Шеф-повар оживил всех обезьян и кобольдов разом, а они взбунтовались и захватили грузовой шаттл. Они потребовали припасов и безопасного перелёта на планету с джунглями, и мы уступили их требованиям. Теперь им нужно только несколько факелов. bounty-description-medkit-box = Центком ставит спектакль в больнице, и нуждается в реквизите. Просто пришлите нам несколько пустых аптечек, и спектакль состоится! bounty-description-cardboard-box = Завтра состоится премьера новой пьесы "Картонные борги грядут" и команда костюмеров совершенно не готова. Пришлите нам несколько коробок для работы. diff --git a/Resources/Locale/ru-RU/cargo/cargo-bounty-console.ftl b/Resources/Locale/ru-RU/cargo/cargo-bounty-console.ftl index 0c1084791fb..e5e40c1dde2 100644 --- a/Resources/Locale/ru-RU/cargo/cargo-bounty-console.ftl +++ b/Resources/Locale/ru-RU/cargo/cargo-bounty-console.ftl @@ -7,7 +7,7 @@ bounty-console-manifest-label = Манифест: [color=orange]{ $item }[/color bounty-console-manifest-entry = { $amount -> [1] { $item } - *[other] { $item } x{ $amount } + *[other] { $item } x{ $amount } } bounty-console-manifest-reward = Награда: ${ $reward } bounty-console-description-label = [color=gray]{ $description }[/color] diff --git a/Resources/Locale/ru-RU/cargo/cargo-console-component.ftl b/Resources/Locale/ru-RU/cargo/cargo-console-component.ftl index 18fce6a805f..be9cecd8b02 100644 --- a/Resources/Locale/ru-RU/cargo/cargo-console-component.ftl +++ b/Resources/Locale/ru-RU/cargo/cargo-console-component.ftl @@ -1,5 +1,8 @@ ## UI + cargo-console-menu-title = Консоль заказа грузов +cargo-console-menu-flavor-left = Order even more pizza boxes than usual! +cargo-console-menu-flavor-right = v2.1 cargo-console-menu-account-name-label = Аккаунт:{ " " } cargo-console-menu-account-name-none-text = Нет cargo-console-menu-account-name-format = [bold][color={ $color }]{ $name }[/color][/bold] [font="Monospace"]\[{ $code }\][/font] @@ -16,11 +19,14 @@ cargo-console-menu-categories-label = Категории:{ " " } cargo-console-menu-search-bar-placeholder = Поиск cargo-console-menu-requests-label = Запросы cargo-console-menu-orders-label = Заказы -cargo-console-menu-order-reason-description = Причина: { $reason } cargo-console-menu-populate-categories-all-text = Все +cargo-console-menu-order-row-title = { $productName } (x{ $orderAmount } for { $orderPrice }$) cargo-console-menu-populate-orders-cargo-order-row-product-name-text = { $productName } (x{ $orderAmount }) от { $orderRequester } со счёта [color={ $accountColor }]{ $account }[/color] -cargo-console-menu-cargo-order-row-approve-button = Одобрить -cargo-console-menu-cargo-order-row-cancel-button = Отменить +cargo-console-menu-order-row-product-description = Reason: { $orderReason } +cargo-console-menu-order-row-button-approve = Approve +cargo-console-menu-order-row-button-cancel = Cancel +cargo-console-menu-order-row-alerts-reason-absent = The reason is not specified +cargo-console-menu-order-row-alerts-requester-unknown = Unknown cargo-console-menu-tab-title-orders = Заказы cargo-console-menu-tab-title-funds = Переводы cargo-console-menu-account-action-transfer-limit = [bold]Лимит перевода:[/bold] ${ $limit } @@ -49,8 +55,7 @@ cargo-console-fund-transfer-user-unknown = Неизвестно cargo-console-paper-reason-default = Отсутствует cargo-console-paper-approver-default = Самостоятельно cargo-console-paper-print-name = Заказ #{ $orderNumber } -cargo-console-paper-print-text = - Заказ #{ $orderNumber } +cargo-console-paper-print-text = Заказ #{ $orderNumber } Товар: { $itemName } Кол-во: { $orderQuantity } Запросил: { $requester } @@ -78,18 +83,17 @@ cargo-funding-alloc-console-label-help-non-adjustible = Отдел снабже cargo-funding-alloc-console-label-help-adjustible = Остаток доходов от всего, кроме ящиков с замком, распределяется следующим образом: cargo-funding-alloc-console-button-save = Сохранить изменения cargo-funding-alloc-console-label-save-fail = [bold]Разделение выручки невалидно![/bold] [color=red]({ $pos -> - [1] + - *[-1] - - }{ $val }%)[/color] + [1] + + *[-1] - +}{ $val }%)[/color] # Slip template -cargo-acquisition-slip-body = [head=3]Детали актива[/head] - { "[bold]Товар:[/bold]" } { $product } +cargo-acquisition-slip-body = [head=3]Детали актива[/head] { "[bold]Товар:[/bold]" } { $product } { "[bold]Описание:[/bold]" } { $description } { "[bold]Цена за единицу:[/bold" }] ${ $unit } { "[bold]Количество:[/bold]" } { $amount } { "[bold]Сумма:[/bold]" } ${ $cost } - + { "[head=3]Детали покупки[/head]" } { "[bold]Заказчик:[/bold]" } { $orderer } { "[bold]Причина:[/bold]" } { $reason } diff --git a/Resources/Locale/ru-RU/cargo/cargo-order-database-component.ftl b/Resources/Locale/ru-RU/cargo/cargo-order-database-component.ftl index e10d50e46ad..02fcead454c 100644 --- a/Resources/Locale/ru-RU/cargo/cargo-order-database-component.ftl +++ b/Resources/Locale/ru-RU/cargo/cargo-order-database-component.ftl @@ -1,3 +1,3 @@ ## Cargo order database -cargo-order-database-order-overflow-message = { $placeholder } (Переполнение) +cargo-order-database-order-overflow-message = { $placeholder } (Переполнение) \ No newline at end of file diff --git a/Resources/Locale/ru-RU/cartridge-loader/cartridges.ftl b/Resources/Locale/ru-RU/cartridge-loader/cartridges.ftl index 08279646ed3..853f288426c 100644 --- a/Resources/Locale/ru-RU/cartridge-loader/cartridges.ftl +++ b/Resources/Locale/ru-RU/cartridge-loader/cartridges.ftl @@ -36,21 +36,21 @@ nano-task-ui-heading-high-priority-tasks = [zero] Нет задач высокого приоритета [one] 1 задача высокого приоритета [few] { $amount } задачи высокого приоритета - *[other] { $amount } задач высокого приоритета + *[other] { $amount } задач высокого приоритета } nano-task-ui-heading-medium-priority-tasks = { $amount -> [zero] Нет задач среднего приоритета [one] 1 задача среднего приоритета [few] { $amount } задачи среднего приоритета - *[other] { $amount } задач среднего приоритета + *[other] { $amount } задач среднего приоритета } nano-task-ui-heading-low-priority-tasks = { $amount -> [zero] Нет задач низкого приоритета [one] 1 задача низкого приоритета [few] { $amount } задачи низкого приоритета - *[other] { $amount } задач низкого приоритета + *[other] { $amount } задач низкого приоритета } nano-task-ui-done = Готово nano-task-ui-revert-done = Отмена @@ -90,15 +90,15 @@ wanted-list-initiator-label = [color=darkgray]Инициатор:[/color] [color wanted-list-unknown-initiator-label = неизвестный инициатор wanted-list-status-label = [color=darkgray]статус:[/color] { $status -> - [suspected] [color=yellow]подозревается[/color] - [wanted] [color=red]разыскивается[/color] - [detained] [color=#b18644]под арестом[/color] - [paroled] [color=green]освобождён по УДО[/color] - [discharged] [color=green]освобождён[/color] - [hostile] [color=darkred]враждебен[/color] - [eliminated] [color=gray]ликвидирован[/color] - *[other] нет - } + [suspected] [color=yellow]подозревается[/color] + [wanted] [color=red]разыскивается[/color] + [detained] [color=#b18644]под арестом[/color] + [paroled] [color=green]освобождён по УДО[/color] + [discharged] [color=green]освобождён[/color] + [hostile] [color=darkred]враждебен[/color] + [eliminated] [color=gray]ликвидирован[/color] + *[other] нет +} wanted-list-history-table-time-col = Время wanted-list-history-table-reason-col = Преступление diff --git a/Resources/Locale/ru-RU/character-appearance/components/magic-mirror-component.ftl b/Resources/Locale/ru-RU/character-appearance/components/magic-mirror-component.ftl index 9ade712d4e0..8381678f052 100644 --- a/Resources/Locale/ru-RU/character-appearance/components/magic-mirror-component.ftl +++ b/Resources/Locale/ru-RU/character-appearance/components/magic-mirror-component.ftl @@ -1,6 +1,5 @@ magic-mirror-component-activate-user-has-no-hair = У вас не может быть волос! -magic-mirror-window-title = Волшебное зеркало magic-mirror-add-slot-self = Вы добавляете себе волосы. magic-mirror-remove-slot-self = Вы удаляете часть волос. magic-mirror-change-slot-self = Вы меняете свою причёску. diff --git a/Resources/Locale/ru-RU/chat/commands/ghost-command.ftl b/Resources/Locale/ru-RU/chat/commands/ghost-command.ftl index d16efbf55f9..023057ef321 100644 --- a/Resources/Locale/ru-RU/chat/commands/ghost-command.ftl +++ b/Resources/Locale/ru-RU/chat/commands/ghost-command.ftl @@ -1,7 +1,6 @@ ghost-command-description = Завязать с жизнью и стать призраком. -ghost-command-help-text = - Команда ghost превращает вас в призрака, а персонаж, которым вы играли, навсегда становится кататоником. - Обратите внимание, что это действие необратимо, и вы не сможете вернуться в тело своего персонажа. +ghost-command-help-text = Команда ghost превращает вас в призрака, а персонаж, которым вы играли, навсегда становится кататоником. + Обратите внимание, что это действие необратимо, и вы не сможете вернуться в тело своего персонажа. ghost-command-no-session = Вы не в сеансе, вы не можете использовать ghost. ghost-command-denied = Вы не можете стать призраком в данный момент. ghost-command-error-lobby = Вы не можете стать призраком в данный момент. Вы не в игре! diff --git a/Resources/Locale/ru-RU/chat/commands/suicide-command.ftl b/Resources/Locale/ru-RU/chat/commands/suicide-command.ftl index 3992f42c17c..bf811c38f60 100644 --- a/Resources/Locale/ru-RU/chat/commands/suicide-command.ftl +++ b/Resources/Locale/ru-RU/chat/commands/suicide-command.ftl @@ -1,9 +1,8 @@ suicide-command-description = Совершает самоубийство -suicide-command-help-text = - Команда самоубийства даёт вам возможность быстро выйти из раунда, оставаясь в образе персонажа. - Способы бывают разные, сначала вы попытаетесь использовать предмет, находящийся у вас в активной руке. - Если это не удастся, то будет сделана попытка использовать предмет рядом с вами. - Наконец, если ни один из вышеперечисленных способов не сработал, вы умрёте, прикусив язык. +suicide-command-help-text = Команда самоубийства даёт вам возможность быстро выйти из раунда, оставаясь в образе персонажа. + Способы бывают разные, сначала вы попытаетесь использовать предмет, находящийся у вас в активной руке. + Если это не удастся, то будет сделана попытка использовать предмет рядом с вами. + Наконец, если ни один из вышеперечисленных способов не сработал, вы умрёте, прикусив язык. suicide-command-default-text-others = { CAPITALIZE($name) } пытается прикусить свой собственный язык! suicide-command-default-text-self = Вы пытаетесь прикусить свой собственный язык! suicide-command-already-dead = Вы не можете совершить самоубийство. Вы мертвы. diff --git a/Resources/Locale/ru-RU/chat/emotes.ftl b/Resources/Locale/ru-RU/chat/emotes.ftl index 20b8dc0ce1b..5706748e327 100644 --- a/Resources/Locale/ru-RU/chat/emotes.ftl +++ b/Resources/Locale/ru-RU/chat/emotes.ftl @@ -37,6 +37,7 @@ chat-emote-name-snarl = Скалиться chat-emote-name-whine = Скулить chat-emote-name-howl = Выть chat-emote-name-growl = Рычать +chat-emote-name-flap = Flap Wings # Message chat-emote-msg-scream = кричит! @@ -78,3 +79,4 @@ chat-emote-msg-snarl = скалится. chat-emote-msg-whine = скулит. chat-emote-msg-howl = воет. chat-emote-msg-growl = рычит. +chat-emote-msg-flap = flaps { POSS-ADJ($entity) } wings. diff --git a/Resources/Locale/ru-RU/chat/highlights.ftl b/Resources/Locale/ru-RU/chat/highlights.ftl index 6f5903f6704..0f80389861b 100644 --- a/Resources/Locale/ru-RU/chat/highlights.ftl +++ b/Resources/Locale/ru-RU/chat/highlights.ftl @@ -42,6 +42,7 @@ highlights-janitor = уборщик highlights-lawyer = адвокат, юрист highlights-librarian = библиотекар, библиотека highlights-mime = мим +highlights-musician = Musician, "Music", Theatre, Theater, Service, "Serv" highlights-passenger = пассажир, грейтайдер, "тайдер" highlights-service-worker = сервисный работник, сервисник diff --git a/Resources/Locale/ru-RU/chat/managers/chat-manager.ftl b/Resources/Locale/ru-RU/chat/managers/chat-manager.ftl index 376af888f23..f12df067320 100644 --- a/Resources/Locale/ru-RU/chat/managers/chat-manager.ftl +++ b/Resources/Locale/ru-RU/chat/managers/chat-manager.ftl @@ -21,7 +21,7 @@ chat-manager-whisper-headset-on-message = Вы не можете шептать chat-manager-server-wrap-message = [bold]{ $message }[/bold] chat-manager-sender-announcement = Центральное командование chat-manager-sender-announcement-wrap-message = [font size=14][bold]Объявление { $sender }:[/font][font size=12] - { $message }[/bold][/font] + { $message }[/bold][/font] chat-manager-entity-say-wrap-message = [BubbleHeader][bold][Name]{ $entityName }[/Name][/bold][/BubbleHeader] { $verb }, [font={ $fontType } size={ $fontSize } ]"[BubbleContent]{ $message }[/BubbleContent]"[/font] chat-manager-entity-say-bold-wrap-message = [BubbleHeader][bold][Name]{ $entityName }[/Name][/bold][/BubbleHeader] { $verb }, [font={ $fontType } size={ $fontSize }]"[BubbleContent][bold]{ $message }[/bold][/BubbleContent]"[/font] diff --git a/Resources/Locale/ru-RU/chat/ui/chat-box.ftl b/Resources/Locale/ru-RU/chat/ui/chat-box.ftl index 539129e4cf6..4cb804da832 100644 --- a/Resources/Locale/ru-RU/chat/ui/chat-box.ftl +++ b/Resources/Locale/ru-RU/chat/ui/chat-box.ftl @@ -34,11 +34,9 @@ hud-chatbox-channel-Unspecified = Неопределённый hud-chatbox-highlights = Подсветка: hud-chatbox-highlights-button = Подтвердить -hud-chatbox-highlights-tooltip = - Каждое слово должно начинаться с новой строки. - Слова, взятые в кавычки ("..."), подсветятся только, - если отделены пробелами или знаками препинания. -hud-chatbox-highlights-placeholder = - @МакХэндс - "Судья" - Медблок +hud-chatbox-highlights-tooltip = Каждое слово должно начинаться с новой строки. + Слова, взятые в кавычки ("..."), подсветятся только, + если отделены пробелами или знаками препинания. +hud-chatbox-highlights-placeholder = @МакХэндс + "Судья" + Медблок diff --git a/Resources/Locale/ru-RU/chemistry/components/injector-component.ftl b/Resources/Locale/ru-RU/chemistry/components/injector-component.ftl index 4133142b90f..519103c7f1b 100644 --- a/Resources/Locale/ru-RU/chemistry/components/injector-component.ftl +++ b/Resources/Locale/ru-RU/chemistry/components/injector-component.ftl @@ -1,9 +1,9 @@ ## UI -injector-volume-transfer-label = Объем: [color=white]{$currentVolume}/{$totalVolume}ед.[/color] - Режим: [color=white]{$modeString}[/color] ([color=white]{$transferVolume}ед.[/color]) -injector-volume-label = Объем: [color=white]{$currentVolume}/{$totalVolume}ед.[/color] - Режим: [color=white]{$modeString}[/color] +injector-volume-transfer-label = Объем: [color=white]{ $currentVolume }/{ $totalVolume }ед.[/color] + Режим: [color=white]{ $modeString }[/color] ([color=white]{ $transferVolume }ед.[/color]) +injector-volume-label = Объем: [color=white]{ $currentVolume }/{ $totalVolume }ед.[/color] + Режим: [color=white]{ $modeString }[/color] injector-toggle-verb-text = Переключить режим Инъектора ## Entity @@ -11,42 +11,42 @@ injector-toggle-verb-text = Переключить режим Инъектора injector-component-inject-mode-name = введение injector-component-draw-mode-name = забор injector-component-dynamic-mode-name = динамический -injector-component-mode-changed-text = Выбран режим {$mode}! -injector-component-transfer-success-message = Вы переливаете {$amount}ед. в {$target}. -injector-component-transfer-success-message-self = В переливаете {$amount}ед. в себя. -injector-component-inject-success-message = Вы ввели {$amount}ед. в {$target}! -injector-component-inject-success-message-self = Вы вводите {$amount}ед. в себя! -injector-component-draw-success-message = Вы набираете {$amount}ед. из {$target}. -injector-component-draw-success-message-self = Вы набираете {$amount}ед. из себя. +injector-component-mode-changed-text = Выбран режим { $mode }! +injector-component-transfer-success-message = Вы переливаете { $amount }ед. в { $target }. +injector-component-transfer-success-message-self = В переливаете { $amount }ед. в себя. +injector-component-inject-success-message = Вы ввели { $amount }ед. в { $target }! +injector-component-inject-success-message-self = Вы вводите { $amount }ед. в себя! +injector-component-draw-success-message = Вы набираете { $amount }ед. из { $target }. +injector-component-draw-success-message-self = Вы набираете { $amount }ед. из себя. ## Fail Messages -injector-component-target-already-full-message = {CAPITALIZE($target)} уже полон! +injector-component-target-already-full-message = { CAPITALIZE($target) } уже полон! injector-component-target-already-full-message-self = Вы уже полны! -injector-component-target-is-empty-message = {CAPITALIZE($target)} пуст! +injector-component-target-is-empty-message = { CAPITALIZE($target) } пуст! injector-component-target-is-empty-message-self = Вы пусты! injector-component-cannot-toggle-draw-message = Больше не набрать! injector-component-cannot-toggle-inject-message = Нечего вводить! injector-component-cannot-toggle-dynamic-message = Нельзя включить динамический! -injector-component-empty-message = {CAPITALIZE($injector)} пуст! +injector-component-empty-message = { CAPITALIZE($injector) } пуст! injector-component-blocked-user = Защитное снаряжение мешает инъекции! -injector-component-blocked-other = Защитное снаряжение {CAPITALIZE(POSS-ADJ($target))} помешало {$user} сделать инъекцию! -injector-component-cannot-transfer-message = Вы не можете перелить в {$target}! +injector-component-blocked-other = Защитное снаряжение { CAPITALIZE(POSS-ADJ($target)) } помешало { $user } сделать инъекцию! +injector-component-cannot-transfer-message = Вы не можете перелить в { $target }! injector-component-cannot-transfer-message-self = Вы не можете перелить в себя! -injector-component-cannot-inject-message = Вы не можете сделать инъекцию {$target}! +injector-component-cannot-inject-message = Вы не можете сделать инъекцию { $target }! injector-component-cannot-inject-message-self = Вы не можете сделать себе инъекцию! -injector-component-cannot-draw-message = Вы не можете набрать из {$target}! +injector-component-cannot-draw-message = Вы не можете набрать из { $target }! injector-component-cannot-draw-message-self = Вы не можете набрать из себя! injector-component-ignore-mobs = Возможно взаимодействовать только с ёмкостями! ## mob-inject doafter messages injector-component-needle-injecting-user = Вы начинаете вводить содержимое шприца. -injector-component-needle-injecting-target = {CAPITALIZE($user)} начинает вводить содержимое шприца в вас! +injector-component-needle-injecting-target = { CAPITALIZE($user) } начинает вводить содержимое шприца в вас! injector-component-needle-drawing-user = Вы начинаете набирать шприц. -injector-component-needle-drawing-target = {CAPITALIZE($user)} начинает набирать шприц из вас! +injector-component-needle-drawing-target = { CAPITALIZE($user) } начинает набирать шприц из вас! injector-component-spray-injecting-user = Вы начинаете вводить содержимое инъектора. -injector-component-spray-injecting-target = {CAPITALIZE($user)} начинает вводить содержимое инъектора в вас! +injector-component-spray-injecting-target = { CAPITALIZE($user) } начинает вводить содержимое инъектора в вас! ## Target Popup Success messages injector-component-feel-prick-message = Вы чувствуете легкий укол! diff --git a/Resources/Locale/ru-RU/chemistry/components/mixing-component.ftl b/Resources/Locale/ru-RU/chemistry/components/mixing-component.ftl index af6f221313f..4c953487750 100644 --- a/Resources/Locale/ru-RU/chemistry/components/mixing-component.ftl +++ b/Resources/Locale/ru-RU/chemistry/components/mixing-component.ftl @@ -14,5 +14,5 @@ mixing-verb-shake = метод шейк default-mixing-success = Вы смешиваете { $mixed } при помощи { $mixer } bible-mixing-success = Вы благословляете { $mixed } при помощи { $mixer } spoon-mixing-success = Вы размешиваете { $mixed } при помощи { $mixer } -handheld-centrifuge-success = You seperate chemicals in the {$mixed} +handheld-centrifuge-success = You seperate chemicals in the { $mixed } diff --git a/Resources/Locale/ru-RU/chemistry/components/rehydratable-component.ftl b/Resources/Locale/ru-RU/chemistry/components/rehydratable-component.ftl index 843874a1fb6..8c56090373d 100644 --- a/Resources/Locale/ru-RU/chemistry/components/rehydratable-component.ftl +++ b/Resources/Locale/ru-RU/chemistry/components/rehydratable-component.ftl @@ -1 +1 @@ -rehydratable-component-expands-message = { $owner } расширяется! +rehydratable-component-expands-message = { $owner } расширяется! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/chemistry/components/solution-scanner-component.ftl b/Resources/Locale/ru-RU/chemistry/components/solution-scanner-component.ftl index b93a8808fa4..9fe9ff430bd 100644 --- a/Resources/Locale/ru-RU/chemistry/components/solution-scanner-component.ftl +++ b/Resources/Locale/ru-RU/chemistry/components/solution-scanner-component.ftl @@ -3,4 +3,4 @@ scannable-solution-verb-message = Изучить химический соста scannable-solution-main-text = Содержит следующие химические вещества: scannable-solution-empty-container = Не содержит химических веществ. scannable-solution-chemical = - { $amount } ед. [color={ $color }]{ $type }[/color] -scannable-solution-temperature = Температура раствора: { $temperature }K +scannable-solution-temperature = Температура раствора: { $temperature }K \ No newline at end of file diff --git a/Resources/Locale/ru-RU/chemistry/solution/components/shared-solution-container-component.ftl b/Resources/Locale/ru-RU/chemistry/solution/components/shared-solution-container-component.ftl index 8de43040995..4226c987a55 100644 --- a/Resources/Locale/ru-RU/chemistry/solution/components/shared-solution-container-component.ftl +++ b/Resources/Locale/ru-RU/chemistry/solution/components/shared-solution-container-component.ftl @@ -1,32 +1,30 @@ -shared-solution-container-component-on-examine-main-text = - Содержит [color={ $color }]{ $desc }[/color] { $chemCount -> - [1] вещество. - *[other] смесь веществ. - } +shared-solution-container-component-on-examine-main-text = Содержит [color={ $color }]{ $desc }[/color] { $chemCount -> + [1] вещество. + *[other] смесь веществ. +} examinable-solution-has-recognizable-chemicals = Вам удаётся распознать { $recognizedString } в этом растворе. examinable-solution-recognized = [color={ $color }]{ $chemical }[/color] examinable-solution-on-examine-volume = Ёмкость { $fillLevel -> - [exact] содержит [color=white]{$current}/{$max} ед[/color]. - *[other] [bold]{ -solution-vague-fill-level(fillLevel: $fillLevel) }[/bold]. + [exact] содержит [color=white]{ $current }/{ $max } ед[/color]. + *[other] [bold]{ -solution-vague-fill-level(fillLevel: $fillLevel) }[/bold]. } examinable-solution-on-examine-volume-no-max = Ёмкость { $fillLevel -> - [exact] содержит [color=white]{$current} ед[/color]. - *[other] [bold]{ -solution-vague-fill-level(fillLevel: $fillLevel) }[/bold]. + [exact] содержит [color=white]{ $current } ед[/color]. + *[other] [bold]{ -solution-vague-fill-level(fillLevel: $fillLevel) }[/bold]. } -examinable-solution-on-examine-volume-puddle = - Лужа { $fillLevel -> - [exact] содержит [color=white]{ $current } ед[/color]. - [full] огромная и разливается через край! - [mostlyfull] огромная и разливается через край! - [halffull] глубокая и растекающаяся. - [halfempty] средняя. - *[mostlyempty] собирается в одну. - [empty] превращается в несколько маленьких луж. - } +examinable-solution-on-examine-volume-puddle = Лужа { $fillLevel -> + [exact] содержит [color=white]{ $current } ед[/color]. + [full] огромная и разливается через край! + [mostlyfull] огромная и разливается через край! + [halffull] глубокая и растекающаяся. + [halfempty] средняя. + *[mostlyempty] собирается в одну. + [empty] превращается в несколько маленьких луж. +} -solution-vague-fill-level = { $fillLevel -> @@ -35,5 +33,5 @@ examinable-solution-on-examine-volume-puddle = [halffull] [color=#C8C8C8]наполовину полная[/color] [halfempty] [color=#C8C8C8]наполовину пустая[/color] [mostlyempty] [color=#A4A4A4]почти пустая[/color] - *[empty] [color=gray]пустая[/color] + *[empty] [color=gray]пустая[/color] } diff --git a/Resources/Locale/ru-RU/climbing/climbable-component.ftl b/Resources/Locale/ru-RU/climbing/climbable-component.ftl index d2f0389358b..9fca15ad8bf 100644 --- a/Resources/Locale/ru-RU/climbing/climbable-component.ftl +++ b/Resources/Locale/ru-RU/climbing/climbable-component.ftl @@ -10,7 +10,7 @@ comp-climbable-verb-climb = Взобраться comp-climbable-user-climbs = Вы взбираетесь на { $climbable }! # Shown to others when $user climbs on $climbable -comp-climbable-user-climbs-other = { CAPITALIZE($user) } взбирается на { $climbable }! +comp-climbable-user-climbs-other = { CAPITALIZE($user) } взбирается на { $climbable }! # Shown to you when your character forces someone to climb on $climbable comp-climbable-user-climbs-force = Вы заставляете { $moved-user } взобраться на { $climbable }! diff --git a/Resources/Locale/ru-RU/cloning/accept-cloning-window.ftl b/Resources/Locale/ru-RU/cloning/accept-cloning-window.ftl index 0fb0fff0d27..1f0fefa2ffc 100644 --- a/Resources/Locale/ru-RU/cloning/accept-cloning-window.ftl +++ b/Resources/Locale/ru-RU/cloning/accept-cloning-window.ftl @@ -1,7 +1,5 @@ accept-cloning-window-title = Клонирующая машина -accept-cloning-window-prompt-text-part = - Вас клонируют! - При клонировании вы забудете детали своей смерти. - Перенести свою душу в тело клона? +accept-cloning-window-prompt-text-part = Вас клонируют! + Перенести свою душу в тело клона? accept-cloning-window-accept-button = Да -accept-cloning-window-deny-button = Нет +accept-cloning-window-deny-button = Нет \ No newline at end of file diff --git a/Resources/Locale/ru-RU/clothing/belts.ftl b/Resources/Locale/ru-RU/clothing/belts.ftl index fc7e23cd84d..fcf77d41149 100644 --- a/Resources/Locale/ru-RU/clothing/belts.ftl +++ b/Resources/Locale/ru-RU/clothing/belts.ftl @@ -1,2 +1,2 @@ sheath-insert-verb = Поместить в ножны -sheath-eject-verb = Извлечь из ножен +sheath-eject-verb = Извлечь из ножен \ No newline at end of file diff --git a/Resources/Locale/ru-RU/clothing/components/insulated-component.ftl b/Resources/Locale/ru-RU/clothing/components/insulated-component.ftl new file mode 100644 index 00000000000..feecb0ded5b --- /dev/null +++ b/Resources/Locale/ru-RU/clothing/components/insulated-component.ftl @@ -0,0 +1,2 @@ +insulated-examinable-verb-text = Insulated +insulated-examinable-verb-text-message = This item appears to be electrically insulated. It should protect the wearer from shocks. diff --git a/Resources/Locale/ru-RU/commands/actions-command.ftl b/Resources/Locale/ru-RU/commands/actions-command.ftl index e5e380937a5..ec0ff6e2062 100644 --- a/Resources/Locale/ru-RU/commands/actions-command.ftl +++ b/Resources/Locale/ru-RU/commands/actions-command.ftl @@ -4,4 +4,4 @@ cmd-loadacts-error = Failed to load action assignments cmd-loadmapacts-desc = Loads the mapping preset action toolbar assignments. cmd-loadmapacts-help = Usage: { $command } -cmd-loadmapacts-error = Failed to load action assignments +cmd-loadmapacts-error = Failed to load action assignments \ No newline at end of file diff --git a/Resources/Locale/ru-RU/commands/colornetwork-command.ftl b/Resources/Locale/ru-RU/commands/colornetwork-command.ftl index ba71eda5218..dc4061b17aa 100644 --- a/Resources/Locale/ru-RU/commands/colornetwork-command.ftl +++ b/Resources/Locale/ru-RU/commands/colornetwork-command.ftl @@ -2,4 +2,4 @@ cmd-colornetwork-desc = Окрашивает атмос-устройства в cmd-colornetwork-help = colornetwork Pipe cmd-colornetwork-no-access = В настоящее время вы не можете использовать команды маппинга. shell-entity-is-not-node-container = Target entity is not a node container. -shell-node-group-is-invalid = Invalid node group specified. Valid groups: { $groups }. +shell-node-group-is-invalid = Invalid node group specified. Valid groups: { $groups }. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/commands/credits-command.ftl b/Resources/Locale/ru-RU/commands/credits-command.ftl index e931c816711..9316da6ddfb 100644 --- a/Resources/Locale/ru-RU/commands/credits-command.ftl +++ b/Resources/Locale/ru-RU/commands/credits-command.ftl @@ -1,2 +1,2 @@ cmd-credits-desc = Opens the credits window -cmd-credits-help = Usage: { $command } +cmd-credits-help = Usage: { $command } \ No newline at end of file diff --git a/Resources/Locale/ru-RU/commands/deadmin-command.ftl b/Resources/Locale/ru-RU/commands/deadmin-command.ftl index 491b0ad5811..6f863ee4315 100644 --- a/Resources/Locale/ru-RU/commands/deadmin-command.ftl +++ b/Resources/Locale/ru-RU/commands/deadmin-command.ftl @@ -1,4 +1,3 @@ cmd-deadmin-desc = Временно лишает вас прав администратора, чтобы вы могли прочувствовать раунд как обычный игрок. -cmd-deadmin-help = - Использование: deadmin - Используйте readmin чтобы вернуть себе права администратора после этой команды. +cmd-deadmin-help = Использование: deadmin + Используйте readmin чтобы вернуть себе права администратора после этой команды. diff --git a/Resources/Locale/ru-RU/commands/debug-pathfinding-command.ftl b/Resources/Locale/ru-RU/commands/debug-pathfinding-command.ftl index bb059f76cf2..956b4aaf294 100644 --- a/Resources/Locale/ru-RU/commands/debug-pathfinding-command.ftl +++ b/Resources/Locale/ru-RU/commands/debug-pathfinding-command.ftl @@ -1,4 +1,4 @@ cmd-pathfinder-desc = Toggles visibility of pathfinding debuggers. cmd-pathfinder-help = Usage: { $command } [options] cmd-pathfinder-error = Unrecognised pathfinder args { $arg } -cmd-pathfinder-notify = Toggled { $arg } to { $newMode } +cmd-pathfinder-notify = Toggled { $arg } to { $newMode } \ No newline at end of file diff --git a/Resources/Locale/ru-RU/commands/delaystart-command.ftl b/Resources/Locale/ru-RU/commands/delaystart-command.ftl index 64f7d5e7460..6eeb98bd253 100644 --- a/Resources/Locale/ru-RU/commands/delaystart-command.ftl +++ b/Resources/Locale/ru-RU/commands/delaystart-command.ftl @@ -1,7 +1,6 @@ cmd-delaystart-desc = Delays the round start. -cmd-delaystart-help = - Usage: delaystart [seconds] - If no arguments are passed, the round will be paused or resumed accordingly. +cmd-delaystart-help = Usage: delaystart [seconds] + If no arguments are passed, the round will be paused or resumed accordingly. cmd-delaystart-invalid-seconds = { $value } isn't a valid amount of seconds. cmd-delaystart-paused = Paused the countdown. cmd-delaystart-unpaused = Resumed the countdown. diff --git a/Resources/Locale/ru-RU/commands/delete-component-command.ftl b/Resources/Locale/ru-RU/commands/delete-component-command.ftl index dd2d717bce6..f32bc517237 100644 --- a/Resources/Locale/ru-RU/commands/delete-component-command.ftl +++ b/Resources/Locale/ru-RU/commands/delete-component-command.ftl @@ -1,9 +1,8 @@ cmd-deletecomponent-desc = Удаляет все случаи указаного компонента. cmd-deletecomponent-help = Использование: deletecomponent " cmd-deletecomponent-no-component-exists = Компонента с именем { $name } не существует. -cmd-deletecomponent-success = - { $count -> - [one] Удалён { $count } компонент - [few] Удалено { $count } компонента - *[other] Удалено { $count } компонентов - } с именем { $name }. +cmd-deletecomponent-success = { $count -> + [one] Удалён { $count } компонент + [few] Удалено { $count } компонента + *[other] Удалено { $count } компонентов +} с именем { $name }. diff --git a/Resources/Locale/ru-RU/commands/grouping-entity-menu-command.ftl b/Resources/Locale/ru-RU/commands/grouping-entity-menu-command.ftl index 63c9f850079..09de1052c3f 100644 --- a/Resources/Locale/ru-RU/commands/grouping-entity-menu-command.ftl +++ b/Resources/Locale/ru-RU/commands/grouping-entity-menu-command.ftl @@ -1,4 +1,4 @@ cmd-entitymenug-desc = Sets the entity menu grouping type. cmd-entitymenug-help = Usage: { $command } <0:{ $groupingTypesCount }> cmd-entitymenug-error = { $arg } is not a valid integer. -cmd-entitymenug-notify = Context Menu Grouping set to type: { $cvar } +cmd-entitymenug-notify = Context Menu Grouping set to type: { $cvar } \ No newline at end of file diff --git a/Resources/Locale/ru-RU/commands/node-vis-commands.ftl b/Resources/Locale/ru-RU/commands/node-vis-commands.ftl index 1310d0e93ae..0f0639576cb 100644 --- a/Resources/Locale/ru-RU/commands/node-vis-commands.ftl +++ b/Resources/Locale/ru-RU/commands/node-vis-commands.ftl @@ -2,6 +2,5 @@ cmd-nodevis-desc = Toggles node group visualization. cmd-nodevis-help = Usage: nodevis cmd-nodevisfilter-desc = Toggles showing a specific group on nodevis. -cmd-nodevisfilter-help = - Usage: nodevisfilter [filter] - Omit filter to list currently masked-off +cmd-nodevisfilter-help = Usage: nodevisfilter [filter] + Omit filter to list currently masked-off diff --git a/Resources/Locale/ru-RU/commands/open-a-help-command.ftl b/Resources/Locale/ru-RU/commands/open-a-help-command.ftl index f396ec4baa0..b81b7c0de67 100644 --- a/Resources/Locale/ru-RU/commands/open-a-help-command.ftl +++ b/Resources/Locale/ru-RU/commands/open-a-help-command.ftl @@ -1,3 +1,3 @@ cmd-openahelp-desc = Opens AHelp channel for a given NetUserID, or your personal channel if none given. cmd-openahelp-help = Usage: { $command } [] -cmd-openahelp-error = Bad GUID! +cmd-openahelp-error = Bad GUID! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/commands/pardon-command.ftl b/Resources/Locale/ru-RU/commands/pardon-command.ftl index a4ab36fbcec..74c99068555 100644 --- a/Resources/Locale/ru-RU/commands/pardon-command.ftl +++ b/Resources/Locale/ru-RU/commands/pardon-command.ftl @@ -1,8 +1,7 @@ cmd-pardon-desc = Pardon somebody's ban. cmd-pardon-help = Usage: pardon -cmd-pardon-unable-to-parse = - Unable to parse { $id } as a ban id integer. - { $help } +cmd-pardon-unable-to-parse = Unable to parse { $id } as a ban id integer. + { $help } cmd-pardon-already-pardoned = This ban has already been pardoned. cmd-pardon-already-pardoned-specific = This ban has already been pardoned by { $admin } in { $time }. cmd-pardon-success = Pardoned ban with id { $id }. diff --git a/Resources/Locale/ru-RU/commands/powerstat-command.ftl b/Resources/Locale/ru-RU/commands/powerstat-command.ftl index 628254189b5..e2739c39d36 100644 --- a/Resources/Locale/ru-RU/commands/powerstat-command.ftl +++ b/Resources/Locale/ru-RU/commands/powerstat-command.ftl @@ -1,7 +1,6 @@ cmd-powerstat-desc = Shows statistics for pow3r. cmd-powerstat-help = Usage: powerstat -cmd-powerstat-output = - Networks: { $networks } - Loads: { $loads } - Supplies: { $supplies } - Batteries: { $batteries } +cmd-powerstat-output = Networks: { $networks } + Loads: { $loads } + Supplies: { $supplies } + Batteries: { $batteries } diff --git a/Resources/Locale/ru-RU/commands/quick-inspect-command.ftl b/Resources/Locale/ru-RU/commands/quick-inspect-command.ftl index fe06e2ddd8a..6a1439616c2 100644 --- a/Resources/Locale/ru-RU/commands/quick-inspect-command.ftl +++ b/Resources/Locale/ru-RU/commands/quick-inspect-command.ftl @@ -1,6 +1,5 @@ cmd-quickinspect-desc = Установить имя компонента, который откроется при наведении курсора на игрока и нажатии на клавишу "Изучить серверный/клиентский компонент". cmd-quickinspect-help = Использование: { $command } <имя компонента> -cmd-quickinspect-success = - Установленный компонент: { $component }. +cmd-quickinspect-success = Установленный компонент: { $component }. Нажмите { $serverKeybind }, чтобы открыть меню VV для сервера. Нажмите { $clientKeybind }, чтобы открыть меню VV для клиента. diff --git a/Resources/Locale/ru-RU/commands/role-commands.ftl b/Resources/Locale/ru-RU/commands/role-commands.ftl index c4918746b97..c2adca85e6f 100644 --- a/Resources/Locale/ru-RU/commands/role-commands.ftl +++ b/Resources/Locale/ru-RU/commands/role-commands.ftl @@ -8,6 +8,5 @@ cmd-listroles-desc = List all available roles. cmd-listroles-help = Usage: listroles cmd-rmrole-desc = Removes a role from a player's mind. -cmd-rmrole-help = - Usage: rmrole - The role type is the actual C# type name. +cmd-rmrole-help = Usage: rmrole + The role type is the actual C# type name. diff --git a/Resources/Locale/ru-RU/commands/set-menu-visibility-command.ftl b/Resources/Locale/ru-RU/commands/set-menu-visibility-command.ftl index 1cac71af160..b3757375d6c 100644 --- a/Resources/Locale/ru-RU/commands/set-menu-visibility-command.ftl +++ b/Resources/Locale/ru-RU/commands/set-menu-visibility-command.ftl @@ -1,3 +1,3 @@ cmd-menuvis-desc = Set restrictions about what entities to show on the entity context menu. cmd-menuvis-help = Usage: { Command } [NoFoV] [InContainer] [Invisible] [All] -cmd-menuvis-error = Unknown visibility argument '{ $arg }'. Only 'NoFov', 'InContainer', 'Invisible' or 'All' are valid. Provide no arguments to set to default. +cmd-menuvis-error = Unknown visibility argument '{ $arg }'. Only 'NoFov', 'InContainer', 'Invisible' or 'All' are valid. Provide no arguments to set to default. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/commands/substepatmos-command.ftl b/Resources/Locale/ru-RU/commands/substepatmos-command.ftl index bb8908572fe..0ab06c0102b 100644 --- a/Resources/Locale/ru-RU/commands/substepatmos-command.ftl +++ b/Resources/Locale/ru-RU/commands/substepatmos-command.ftl @@ -1,5 +1,5 @@ cmd-substepatmos-desc = Substeps the atmosphere simulation by a single atmostick for the provided grid entity. Implicitly pauses atmospherics simulation. -cmd-substepatmos-help = Usage: {$command} +cmd-substepatmos-help = Usage: { $command } cmd-error-no-grid-provided-or-invalid-grid = You must either provide a grid entity or be standing on a grid to substep. cmd-error-couldnt-parse-entity = Entity provided could not be parsed or does not exist. Try standing on a grid you want to substep. @@ -9,7 +9,7 @@ cmd-error-no-mapgrid = Entity provided doesn't have a MapGridComponent. cmd-error-no-xform = Entity provided doesn't have a TransformComponent? cmd-error-no-valid-map = The grid provided is not on a valid map? -cmd-substepatmos-info-implicitly-paused-simulation = Implicitly paused atmospherics simulation on {$grid}. -cmd-substepatmos-info-substepped-grid = Substepped atmospherics simulation by one atmostick on {$grid}. +cmd-substepatmos-info-implicitly-paused-simulation = Implicitly paused atmospherics simulation on { $grid }. +cmd-substepatmos-info-substepped-grid = Substepped atmospherics simulation by one atmostick on { $grid }. cmd-substepatmos-completion-grid-substep = EntityUid of the grid you want to substep. Automatically uses the grid you're standing on if empty. diff --git a/Resources/Locale/ru-RU/commands/toggle-outline-command.ftl b/Resources/Locale/ru-RU/commands/toggle-outline-command.ftl index dd75e1432cb..078522d1e5d 100644 --- a/Resources/Locale/ru-RU/commands/toggle-outline-command.ftl +++ b/Resources/Locale/ru-RU/commands/toggle-outline-command.ftl @@ -1,3 +1,3 @@ cmd-toggleoutline-desc = Toggles outline drawing on entities. cmd-toggleoutline-help = Usage: { $command } -cmd-toggleoutline-notify = Draw outlines set to: { $cvar } +cmd-toggleoutline-notify = Draw outlines set to: { $cvar } \ No newline at end of file diff --git a/Resources/Locale/ru-RU/commands/toolshed/acmd-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/acmd-command.ftl index 9aacd2c1fcf..31745fb0410 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/acmd-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/acmd-command.ftl @@ -1,2 +1,4 @@ -command-description-acmd-perms = Returns the admin permissions of the given command, if any. -command-description-acmd-caninvoke = Check if the given player can invoke the given command. +command-description-acmd-perms = + Returns the admin permissions of the given command, if any. +command-description-acmd-caninvoke = + Check if the given player can invoke the given command. diff --git a/Resources/Locale/ru-RU/commands/toolshed/addaccesslog-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/addaccesslog-command.ftl index 19f0d7472b8..e5a13cbe011 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/addaccesslog-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/addaccesslog-command.ftl @@ -1 +1,2 @@ -command-description-addaccesslog = Adds an access log to this entity. Do note that this bypasses the log's default limit and pause check. +command-description-addaccesslog = + Adds an access log to this entity. Do note that this bypasses the log's default limit and pause check. diff --git a/Resources/Locale/ru-RU/commands/toolshed/admins-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/admins-command.ftl index 06ac85cd7a3..56cc736d8e1 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/admins-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/admins-command.ftl @@ -1,2 +1,4 @@ -command-description-admins-active = Returns a list of active admins. -command-description-admins-all = Returns a list of ALL admins, including deadmined ones. +command-description-admins-active = + Returns a list of active admins. +command-description-admins-all = + Returns a list of ALL admins, including deadmined ones. diff --git a/Resources/Locale/ru-RU/commands/toolshed/inventory-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/inventory-command.ftl index 3ded73915ae..f430197495f 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/inventory-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/inventory-command.ftl @@ -18,3 +18,5 @@ command-description-inventory-ensure = Puts a given entity on the first piped entity that has a slot matching the given flag if none exists, passing through the UID of whatever is in the slot by the end. command-description-inventory-ensurespawn = Spawns a given prototype on the first piped entity that has a slot matching the given flag if none exists, passing through the UID of whatever is in the slot by the end. +command-description-inventory-query = + Gets the entities in the inventory slots of the piped entities and passes them along. diff --git a/Resources/Locale/ru-RU/commands/toolshed/jobboard-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/jobboard-command.ftl index fb3a2b157f3..1e0c610f50c 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/jobboard-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/jobboard-command.ftl @@ -1 +1,2 @@ -command-description-jobboard-completeJob = Completes a given salvage job board job for the station. +command-description-jobboard-completeJob = + Completes a given salvage job board job for the station. diff --git a/Resources/Locale/ru-RU/commands/toolshed/jobs-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/jobs-command.ftl index 49102a17ece..918c86f87d8 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/jobs-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/jobs-command.ftl @@ -1,6 +1,12 @@ -command-description-jobs-jobs = Returns all jobs on a station. -command-description-jobs-job = Returns a given job on a station. -command-description-jobs-isinfinite = Returns true if the input job is infinite, otherwise false. -command-description-jobs-adjust = Adjusts the number of slots for the given job. -command-description-jobs-set = Sets the number of slots for the given job. -command-description-jobs-amount = Returns the number of slots for the given job. +command-description-jobs-jobs = + Returns all jobs on a station. +command-description-jobs-job = + Returns a given job on a station. +command-description-jobs-isinfinite = + Returns true if the input job is infinite, otherwise false. +command-description-jobs-adjust = + Adjusts the number of slots for the given job. +command-description-jobs-set = + Sets the number of slots for the given job. +command-description-jobs-amount = + Returns the number of slots for the given job. diff --git a/Resources/Locale/ru-RU/commands/toolshed/laws-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/laws-command.ftl index 31742f85e62..df0d8e62710 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/laws-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/laws-command.ftl @@ -1,2 +1,4 @@ -command-description-laws-list = Returns a list of all law bound entities. -command-description-laws-get = Returns all of the laws for a given entity. +command-description-laws-list = + Returns a list of all law bound entities. +command-description-laws-get = + Returns all of the laws for a given entity. diff --git a/Resources/Locale/ru-RU/commands/toolshed/marked-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/marked-command.ftl index dfcfa1a0060..4a764acc82a 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/marked-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/marked-command.ftl @@ -1 +1,2 @@ -command-description-marked = Returns the value of $marked as a List. +command-description-marked = + Returns the value of $marked as a List. diff --git a/Resources/Locale/ru-RU/commands/toolshed/mind-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/mind-command.ftl index 65b42ffc960..e396ee31055 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/mind-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/mind-command.ftl @@ -1,2 +1,4 @@ -command-description-mind-get = Grabs the mind from the entity, if any. -command-description-mind-control = Assumes control of an entity with the given player. +command-description-mind-get = + Grabs the mind from the entity, if any. +command-description-mind-control = + Assumes control of an entity with the given player. diff --git a/Resources/Locale/ru-RU/commands/toolshed/polymorph-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/polymorph-command.ftl index dc83829b608..9b0ac2354ba 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/polymorph-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/polymorph-command.ftl @@ -1 +1,2 @@ -command-description-polymorph = Polymorphs the input entity with the given prototype. +command-description-polymorph = + Polymorphs the input entity with the given prototype. diff --git a/Resources/Locale/ru-RU/commands/toolshed/rejuvenate-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/rejuvenate-command.ftl index 08d4acf2c82..d624fc967e2 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/rejuvenate-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/rejuvenate-command.ftl @@ -1 +1,2 @@ -command-description-rejuvenate = Rejuvenates the given entities, restoring them to full health, clearing status effects, etc. +command-description-rejuvenate = + Rejuvenates the given entities, restoring them to full health, clearing status effects, etc. diff --git a/Resources/Locale/ru-RU/commands/toolshed/runverbas-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/runverbas-command.ftl index 852f411b3ac..83b722891c4 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/runverbas-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/runverbas-command.ftl @@ -1 +1,2 @@ -command-description-runverbas = Runs a verb over the input entities with the given user. +command-description-runverbas = + Runs a verb over the input entities with the given user. diff --git a/Resources/Locale/ru-RU/commands/toolshed/scale-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/scale-command.ftl index 261f70b529b..ee37291f6df 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/scale-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/scale-command.ftl @@ -1,5 +1,10 @@ -command-description-scale-set = Sets an entity's sprite size to a certain scale (without changing its fixture). -command-description-scale-get = Get an entity's sprite scale as set by ScaleVisualsComponent. Does not include any changes directly made in the SpriteComponent. -command-description-scale-multiply = Multiply an entity's sprite size with a certain factor (without changing its fixture). -command-description-scale-multiplyvector = Multiply an entity's sprite size with a certain 2d vector (without changing its fixture). -command-description-scale-multiplywithfixture = Multiply an entity's sprite size with a certain factor (including its fixture). +command-description-scale-set = + Sets an entity's sprite size to a certain scale (without changing its fixture). +command-description-scale-get = + Get an entity's sprite scale as set by ScaleVisualsComponent. Does not include any changes directly made in the SpriteComponent. +command-description-scale-multiply = + Multiply an entity's sprite size with a certain factor (without changing its fixture). +command-description-scale-multiplyvector = + Multiply an entity's sprite size with a certain 2d vector (without changing its fixture). +command-description-scale-multiplywithfixture = + Multiply an entity's sprite size with a certain factor (including its fixture). diff --git a/Resources/Locale/ru-RU/commands/toolshed/solution-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/solution-command.ftl index d2a03dab7fd..c6831009603 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/solution-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/solution-command.ftl @@ -1,2 +1,4 @@ -command-description-solution-get = Grabs the given solution off the given entity. -command-description-solution-adjreagent = Adjusts the given reagent on the given solution. +command-description-solution-get = + Grabs the given solution off the given entity. +command-description-solution-adjreagent = + Adjusts the given reagent on the given solution. diff --git a/Resources/Locale/ru-RU/commands/toolshed/stationevent-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/stationevent-command.ftl index ff6d6a00289..a4d16280359 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/stationevent-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/stationevent-command.ftl @@ -1,4 +1,8 @@ -command-description-stationevent-simulate = Simulates N number of rounds in which events will occur and prints the occurrences of every event after. -command-description-stationevent-lsprob = Lists the probability of different station events occuring out of the entire pool. -command-description-stationevent-lsprobtheoretical = Given a BasicStationEventScheduler prototype, player count, and round time, lists the probability of different station events occuring based on the specified number of players and round time. -command-description-stationevent-prob = Returns the probability of a single station event occuring out of the entire pool. +command-description-stationevent-simulate = + Simulates N number of rounds in which events will occur and prints the occurrences of every event after. +command-description-stationevent-lsprob = + Lists the probability of different station events occuring out of the entire pool. +command-description-stationevent-lsprobtheoretical = + Given a BasicStationEventScheduler prototype, player count, and round time, lists the probability of different station events occuring based on the specified number of players and round time. +command-description-stationevent-prob = + Returns the probability of a single station event occuring out of the entire pool. diff --git a/Resources/Locale/ru-RU/commands/toolshed/stations-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/stations-command.ftl index 64e93b80027..be2f13ce49b 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/stations-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/stations-command.ftl @@ -1,10 +1,20 @@ -command-description-stations-list = Returns a list of all stations. -command-description-stations-get = Gets the active station, if and only if there is only one. -command-description-stations-getowningstation = Gets the station that a given entity is "owned by" (within) -command-description-stations-grids = Returns all grids associated with the input station. -command-description-stations-config = Returns the config associated with the input station, if any. -command-description-stations-addgrid = Adds a grid to the given station. -command-description-stations-rmgrid = Removes a grid from the given station. -command-description-stations-rename = Renames the given station. -command-description-stations-largestgrid = Returns the largest grid the given station has, if any. -command-description-stations-rerollBounties = Clears all the current bounties for the station and gets a new selection. +command-description-stations-list = + Returns a list of all stations. +command-description-stations-get = + Gets the active station, if and only if there is only one. +command-description-stations-getowningstation = + Gets the station that a given entity is "owned by" (within) +command-description-stations-grids = + Returns all grids associated with the input station. +command-description-stations-config = + Returns the config associated with the input station, if any. +command-description-stations-addgrid = + Adds a grid to the given station. +command-description-stations-rmgrid = + Removes a grid from the given station. +command-description-stations-rename = + Renames the given station. +command-description-stations-largestgrid = + Returns the largest grid the given station has, if any. +command-description-stations-rerollBounties = + Clears all the current bounties for the station and gets a new selection. diff --git a/Resources/Locale/ru-RU/commands/toolshed/statuseffect-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/statuseffect-command.ftl index e00df947243..44376cce760 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/statuseffect-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/statuseffect-command.ftl @@ -5,4 +5,4 @@ command-description-statuseffect-update = command-description-statuseffect-set = Sets the duration of a status effect to the inputted time in seconds. If time is 0, duration will be infinite. command-description-statuseffect-remove = - Removes a time from a given status effect by prototype. If time isn't set, removes the status effect. + Removes a time from a given status effect by prototype. If time isn't set, removes the status effect. diff --git a/Resources/Locale/ru-RU/commands/toolshed/storage-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/storage-command.ftl index 46fe1a2627d..154196fbb1b 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/storage-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/storage-command.ftl @@ -2,3 +2,5 @@ command-description-storage-fasttake = Takes the most recently placed item from the piped storage entity. command-description-storage-insert = Inserts the piped entity into the given storage entity. +command-description-storage-query = + Gets the entities in the storagebase of the piped entities and passes them along. diff --git a/Resources/Locale/ru-RU/commands/toolshed/tag-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/tag-command.ftl index d55a048227a..645ad3c2ffd 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/tag-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/tag-command.ftl @@ -1,6 +1,12 @@ -command-description-tag-list = Lists tags on the given entities. -command-description-tag-with = Returns only the entities with the given tag from the piped list of entities. -command-description-tag-add = Adds a tag to the given entities. -command-description-tag-rm = Removes a tag from the given entities. -command-description-tag-addmany = Adds a list of tags to the given entities. -command-description-tag-rmmany = Removes a list of tags from the given entities. +command-description-tag-list = + Lists tags on the given entities. +command-description-tag-with = + Returns only the entities with the given tag from the piped list of entities. +command-description-tag-add = + Adds a tag to the given entities. +command-description-tag-rm = + Removes a tag from the given entities. +command-description-tag-addmany = + Adds a list of tags to the given entities. +command-description-tag-rmmany = + Removes a list of tags from the given entities. diff --git a/Resources/Locale/ru-RU/commands/toolshed/unpolymorph-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/unpolymorph-command.ftl index 96f0c416b3c..02551815a22 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/unpolymorph-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/unpolymorph-command.ftl @@ -1 +1,2 @@ -command-description-unpolymorph = Reverts a polymorph. +command-description-unpolymorph = + Reverts a polymorph. diff --git a/Resources/Locale/ru-RU/commands/toolshed/visualize-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/visualize-command.ftl index ac3a6e4d16a..0723f8654a2 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/visualize-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/visualize-command.ftl @@ -1 +1,2 @@ -command-description-visualize = Takes the input list of entities and puts them into a UI window for easy browsing. +command-description-visualize = + Takes the input list of entities and puts them into a UI window for easy browsing. diff --git a/Resources/Locale/ru-RU/commands/toolshed/xenoartifact-command.ftl b/Resources/Locale/ru-RU/commands/toolshed/xenoartifact-command.ftl index 59510495a38..b6fc94adf9b 100644 --- a/Resources/Locale/ru-RU/commands/toolshed/xenoartifact-command.ftl +++ b/Resources/Locale/ru-RU/commands/toolshed/xenoartifact-command.ftl @@ -1,5 +1,10 @@ -command-description-xenoartifact-list = List all EntityUids of spawned artifacts. -command-description-xenoartifact-printMatrix = Prints out matrix that displays all edges between nodes. -command-description-xenoartifact-totalResearch = Gets all research points that can be extracted from artifact currently. -command-description-xenoartifact-averageResearch = Calculates amount of research points average generated xeno artifact will output when fully activated. -command-description-xenoartifact-unlockAllNodes = Unlocks all nodes of artifact. +command-description-xenoartifact-list = + List all EntityUids of spawned artifacts. +command-description-xenoartifact-printMatrix = + Prints out matrix that displays all edges between nodes. +command-description-xenoartifact-totalResearch = + Gets all research points that can be extracted from artifact currently. +command-description-xenoartifact-averageResearch = + Calculates amount of research points average generated xeno artifact will output when fully activated. +command-description-xenoartifact-unlockAllNodes = + Unlocks all nodes of artifact. diff --git a/Resources/Locale/ru-RU/components/atmos-monitoring-component.ftl b/Resources/Locale/ru-RU/components/atmos-monitoring-component.ftl index 3bf82a8821a..497127e1f82 100644 --- a/Resources/Locale/ru-RU/components/atmos-monitoring-component.ftl +++ b/Resources/Locale/ru-RU/components/atmos-monitoring-component.ftl @@ -11,4 +11,4 @@ atmos-monitoring-window-show-pipe-network = Сеть труб atmos-monitoring-window-show-gas-pipe-sensors = Сенсоры труб atmos-monitoring-window-label-gases = Присутствующие газы atmos-monitoring-window-flavor-left = За помощью обращаться к атмосферным техникам -atmos-monitoring-window-flavor-right = v1.1 +atmos-monitoring-window-flavor-right = v1.1 \ No newline at end of file diff --git a/Resources/Locale/ru-RU/components/gas-filter-component.ftl b/Resources/Locale/ru-RU/components/gas-filter-component.ftl index 333c2373a22..c4e12cbb3ee 100644 --- a/Resources/Locale/ru-RU/components/gas-filter-component.ftl +++ b/Resources/Locale/ru-RU/components/gas-filter-component.ftl @@ -1,7 +1,3 @@ -comp-gas-filter-ui-filter-status = Статус: -comp-gas-filter-ui-status-enabled = Вкл -comp-gas-filter-ui-status-disabled = Выкл - comp-gas-filter-ui-filter-transfer-rate = Скорость подачи (л/с): comp-gas-filter-ui-filter-set-rate = Установить diff --git a/Resources/Locale/ru-RU/components/gas-mixer-component.ftl b/Resources/Locale/ru-RU/components/gas-mixer-component.ftl index 5c6bf5fb2d1..a611ecc8553 100644 --- a/Resources/Locale/ru-RU/components/gas-mixer-component.ftl +++ b/Resources/Locale/ru-RU/components/gas-mixer-component.ftl @@ -1,7 +1,3 @@ -comp-gas-mixer-ui-mixer-status = Статус: -comp-gas-mixer-ui-status-enabled = Вкл -comp-gas-mixer-ui-status-disabled = Выкл - comp-gas-mixer-ui-mixer-output-pressure = Выходное давление (кПа): comp-gas-mixer-ui-mixer-node-primary = Первичный порт: diff --git a/Resources/Locale/ru-RU/components/gas-pump-component.ftl b/Resources/Locale/ru-RU/components/gas-pump-component.ftl index da34ff7862a..5d7e32e749f 100644 --- a/Resources/Locale/ru-RU/components/gas-pump-component.ftl +++ b/Resources/Locale/ru-RU/components/gas-pump-component.ftl @@ -1,7 +1,3 @@ -comp-gas-pump-ui-pump-status = Статус: -comp-gas-pump-ui-status-enabled = Вкл -comp-gas-pump-ui-status-disabled = Выкл - comp-gas-pump-ui-pump-set-rate = Установить comp-gas-pump-ui-pump-set-max = Макс. diff --git a/Resources/Locale/ru-RU/components/gas-thermomachine-component.ftl b/Resources/Locale/ru-RU/components/gas-thermomachine-component.ftl index c853ca000e1..886454fcb5c 100644 --- a/Resources/Locale/ru-RU/components/gas-thermomachine-component.ftl +++ b/Resources/Locale/ru-RU/components/gas-thermomachine-component.ftl @@ -2,9 +2,6 @@ comp-gas-thermomachine-ui-title-freezer = Охладитель comp-gas-thermomachine-ui-title-heater = Нагреватель comp-gas-thermomachine-ui-temperature = Температура (К): -comp-gas-thermomachine-ui-toggle = Переключить -comp-gas-thermomachine-ui-status-disabled = Выкл -comp-gas-thermomachine-ui-status-enabled = Вкл gas-thermo-component-upgrade-heating = максимальная температура gas-thermo-component-upgrade-cooling = минимальная температура diff --git a/Resources/Locale/ru-RU/components/ghost-component.ftl b/Resources/Locale/ru-RU/components/ghost-component.ftl index 2151a7f4048..cc8c6deacf4 100644 --- a/Resources/Locale/ru-RU/components/ghost-component.ftl +++ b/Resources/Locale/ru-RU/components/ghost-component.ftl @@ -1,13 +1,11 @@ # Examine text -comp-ghost-examine-time-minutes = - Умер [color=yellow]{ $minutes } { $minutes -> - [one] минуту - [few] минуты - *[other] минут - } назад.[/color] -comp-ghost-examine-time-seconds = - Умер [color=yellow]{ $seconds } { $seconds -> - [one] секунду - [few] секунды - *[other] секунд - } назад. [/color] +comp-ghost-examine-time-minutes = Умер [color=yellow]{ $minutes } { $minutes -> + [one] минуту + [few] минуты + *[other] минут +} назад.[/color] +comp-ghost-examine-time-seconds = Умер [color=yellow]{ $seconds } { $seconds -> + [one] секунду + [few] секунды + *[other] секунд +} назад. [/color] diff --git a/Resources/Locale/ru-RU/components/screen-component.ftl b/Resources/Locale/ru-RU/components/screen-component.ftl index 6d3ae2ac5fc..baa32295330 100644 --- a/Resources/Locale/ru-RU/components/screen-component.ftl +++ b/Resources/Locale/ru-RU/components/screen-component.ftl @@ -1,2 +1,2 @@ screen-text = screenText -screen-color = screenColor +screen-color = screenColor \ No newline at end of file diff --git a/Resources/Locale/ru-RU/components/space-heater-component.ftl b/Resources/Locale/ru-RU/components/space-heater-component.ftl index ba6d82ad387..3efbcf7d67c 100644 --- a/Resources/Locale/ru-RU/components/space-heater-component.ftl +++ b/Resources/Locale/ru-RU/components/space-heater-component.ftl @@ -1,8 +1,6 @@ comp-space-heater-ui-title = Блок управления температурой comp-space-heater-ui-thermostat = Термостат: comp-space-heater-ui-mode = Режим -comp-space-heater-ui-status-disabled = Выкл -comp-space-heater-ui-status-enabled = Вкл comp-space-heater-ui-increase-temperature-range = + comp-space-heater-ui-decrease-temperature-range = - diff --git a/Resources/Locale/ru-RU/configurable/configuration-component.ftl b/Resources/Locale/ru-RU/configurable/configuration-component.ftl index 1ef6103427a..3f4663ff17f 100644 --- a/Resources/Locale/ru-RU/configurable/configuration-component.ftl +++ b/Resources/Locale/ru-RU/configurable/configuration-component.ftl @@ -3,4 +3,4 @@ configuration-menu-confirm = Подтвердить configuration-menu-device-title = Конфигурация устройств ## ConfigureVerb -configure-verb-get-data-text = Открыть конфигурацию +configure-verb-get-data-text = Открыть конфигурацию \ No newline at end of file diff --git a/Resources/Locale/ru-RU/connection-messages.ftl b/Resources/Locale/ru-RU/connection-messages.ftl index be199277356..a645ec7a73a 100644 --- a/Resources/Locale/ru-RU/connection-messages.ftl +++ b/Resources/Locale/ru-RU/connection-messages.ftl @@ -26,11 +26,10 @@ soft-player-cap-full = Сервер заполнен! panic-bunker-account-denied = Этот сервер находится в режиме "Бункер", часто используемом в качестве меры предосторожности против рейдов. Новые подключения от аккаунтов, не соответствующих определённым требованиям, временно не принимаются. Повторите попытку позже panic-bunker-account-denied-reason = Этот сервер находится в режиме "Бункер", часто используемом в качестве меры предосторожности против рейдов. Новые подключения от аккаунтов, не соответствующих определённым требованиям, временно не принимаются. Повторите попытку позже Причина: "{ $reason }" panic-bunker-account-reason-account = Ваш аккаунт Space Station 14 слишком новый. Он должен быть старше { $minutes } минут -panic-bunker-account-reason-overall = - Наигранное Вами время на сервере должно быть больше { $minutes } { $minutes -> - [one] минуты - *[other] минут - }. +panic-bunker-account-reason-overall = Наигранное Вами время на сервере должно быть больше { $minutes } { $minutes -> + [one] минуты + *[other] минут +}. whitelist-playtime = У вас недостаточно игрового времени, чтобы присоединиться к этому серверу. Вам нужно как минимум { $minutes } минут игрового времени, чтобы присоединиться к этому серверу. whitelist-player-count = Этот сервер в данный момент не принимает игроков. Пожалуйста, повторите попытку позже. @@ -57,11 +56,10 @@ cmd-blacklistremove-arg-player = [player] baby-jail-account-denied = Этот сервер — сервер для новичков, предназначенный для новых игроков и тех, кто хочет им помочь. Новые подключения слишком старых или не внесённых в белый список аккаунтов не принимаются. Загляните на другие серверы и посмотрите все, что может предложить Space Station 14. Веселитесь! baby-jail-account-denied-reason = Этот сервер — сервер для новичков, предназначенный для новых игроков и тех, кто хочет им помочь. Новые подключения слишком старых или не внесённых в белый список аккаунтов не принимаются. Загляните на другие серверы и посмотрите все, что может предложить Space Station 14. Веселитесь! Причина: "{ $reason }" baby-jail-account-reason-account = Ваш аккаунт Space Station 14 слишком старый. Он должен быть моложе { $minutes } минут -baby-jail-account-reason-overall = - Наигранное Вами время на сервере должно быть больше { $minutes } { $minutes -> - [one] минуты - *[other] минут - }. +baby-jail-account-reason-overall = Наигранное Вами время на сервере должно быть больше { $minutes } { $minutes -> + [one] минуты + *[other] минут +}. generic-misconfigured = Сервер неправильно настроен и не принимает игроков. Пожалуйста, свяжитесь с владельцем сервера и повторите попытку позже. diff --git a/Resources/Locale/ru-RU/construction/components/construction-component-verbs.ftl b/Resources/Locale/ru-RU/construction/components/construction-component-verbs.ftl index e118a3ae415..e47e5297dcf 100644 --- a/Resources/Locale/ru-RU/construction/components/construction-component-verbs.ftl +++ b/Resources/Locale/ru-RU/construction/components/construction-component-verbs.ftl @@ -1,3 +1,3 @@ deconstructible-verb-begin-deconstruct = Начать разборку deconstructible-verb-activate-no-target-text = Это нельзя разобрать. -deconstructible-verb-activate-text = Осмотрите чтобы увидеть инструкцию. +deconstructible-verb-activate-text = Осмотрите чтобы увидеть инструкцию. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/construction/components/machine-board-component.ftl b/Resources/Locale/ru-RU/construction/components/machine-board-component.ftl index e2291d0001a..e16c290b569 100644 --- a/Resources/Locale/ru-RU/construction/components/machine-board-component.ftl +++ b/Resources/Locale/ru-RU/construction/components/machine-board-component.ftl @@ -1,2 +1,2 @@ machine-board-component-on-examine-label = Требования: -machine-board-component-required-element-entry-text = [color=yellow]{ $amount }ед[/color] [color=green]{ $requiredElement }[/color] +machine-board-component-required-element-entry-text = [color=yellow]{ $amount }ед[/color] [color=green]{ $requiredElement }[/color] \ No newline at end of file diff --git a/Resources/Locale/ru-RU/construction/conditions/locked.ftl b/Resources/Locale/ru-RU/construction/conditions/locked.ftl index 617dc4af415..65611870284 100644 --- a/Resources/Locale/ru-RU/construction/conditions/locked.ftl +++ b/Resources/Locale/ru-RU/construction/conditions/locked.ftl @@ -2,4 +2,4 @@ construction-examine-condition-unlock = Сначала [color=limegreen]откройте[/color] это. construction-examine-condition-lock = Сначала [color=red]заприте[/color] это. construction-step-condition-unlock = Это должно быть открыто. -construction-step-condition-lock = Это должно быть заперто. +construction-step-condition-lock = Это должно быть заперто. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/construction/construction-ghost-component.ftl b/Resources/Locale/ru-RU/construction/construction-ghost-component.ftl index 5f5fb7648ed..45504b11ad8 100644 --- a/Resources/Locale/ru-RU/construction/construction-ghost-component.ftl +++ b/Resources/Locale/ru-RU/construction/construction-ghost-component.ftl @@ -1 +1 @@ -construction-ghost-examine-message = Строится: [color=cyan]{ $name }[/color] +construction-ghost-examine-message = Строится: [color=cyan]{ $name }[/color] \ No newline at end of file diff --git a/Resources/Locale/ru-RU/construction/steps/component-construction-graph-step.ftl b/Resources/Locale/ru-RU/construction/steps/component-construction-graph-step.ftl index 08e7a0bac9c..4379cdec8f8 100644 --- a/Resources/Locale/ru-RU/construction/steps/component-construction-graph-step.ftl +++ b/Resources/Locale/ru-RU/construction/steps/component-construction-graph-step.ftl @@ -2,4 +2,4 @@ construction-insert-entity-with-component = Далее, вставьте объект, содержащий компонент: { $componentName }. # Shown when examining an in-construction object -construction-insert-exact-entity = Далее, вставьте { $entityName }. +construction-insert-exact-entity = Далее, вставьте { $entityName }. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/construction/steps/material-construction-graph-step.ftl b/Resources/Locale/ru-RU/construction/steps/material-construction-graph-step.ftl index 0371425a1e9..00a7342b717 100644 --- a/Resources/Locale/ru-RU/construction/steps/material-construction-graph-step.ftl +++ b/Resources/Locale/ru-RU/construction/steps/material-construction-graph-step.ftl @@ -1 +1 @@ -construction-insert-material-entity = Далее, добавьте [color=yellow]{ $amount }ед[/color] [color=cyan]{ $materialName }[/color]. +construction-insert-material-entity = Далее, добавьте [color=yellow]{ $amount }ед[/color] [color=cyan]{ $materialName }[/color]. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/construction/steps/prototype-construction-graph-step.ftl b/Resources/Locale/ru-RU/construction/steps/prototype-construction-graph-step.ftl index ff8c68bb55e..a58e6d8d866 100644 --- a/Resources/Locale/ru-RU/construction/steps/prototype-construction-graph-step.ftl +++ b/Resources/Locale/ru-RU/construction/steps/prototype-construction-graph-step.ftl @@ -2,4 +2,4 @@ construction-insert-prototype-no-name = Далее, вставьте { $prototypeName }. # Shown when examining an in-construction object -construction-insert-prototype = Далее, вставьте { $entityName }. +construction-insert-prototype = Далее, вставьте { $entityName }. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/construction/steps/tool-construction-graph-step.ftl b/Resources/Locale/ru-RU/construction/steps/tool-construction-graph-step.ftl index e3a16a42c5b..169321b48e4 100644 --- a/Resources/Locale/ru-RU/construction/steps/tool-construction-graph-step.ftl +++ b/Resources/Locale/ru-RU/construction/steps/tool-construction-graph-step.ftl @@ -1 +1 @@ -construction-use-tool-entity = Далее, используйте [color=cyan]{ $toolName }[/color]. +construction-use-tool-entity = Далее, используйте [color=cyan]{ $toolName }[/color]. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/containers/containers.ftl b/Resources/Locale/ru-RU/containers/containers.ftl index 2305d0fe0c4..929113a2351 100644 --- a/Resources/Locale/ru-RU/containers/containers.ftl +++ b/Resources/Locale/ru-RU/containers/containers.ftl @@ -2,4 +2,4 @@ container-verb-text-enter = Забраться container-verb-text-empty = Покинуть ## missed -container-thrown-missed = Промах! +container-thrown-missed = Промах! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/contraband/contraband-severity.ftl b/Resources/Locale/ru-RU/contraband/contraband-severity.ftl index 66a9af54c20..5d069c80be6 100644 --- a/Resources/Locale/ru-RU/contraband/contraband-severity.ftl +++ b/Resources/Locale/ru-RU/contraband/contraband-severity.ftl @@ -1,48 +1,48 @@ contraband-examine-text-Minor = { $type -> - *[item] [color=yellow]Этот предмет считается мелкой контрабандой.[/color] + *[item] [color=yellow]Этот предмет считается мелкой контрабандой.[/color] [reagent] [color=yellow]Этот реагент считается мелкой контрабандой.[/color] } contraband-examine-text-Restricted = { $type -> - *[item] [color=yellow]Этот предмет департаментно ограничен.[/color] + *[item] [color=yellow]Этот предмет департаментно ограничен.[/color] [reagent] [color=yellow]Этот реагент департаментно ограничен.[/color] } contraband-examine-text-Restricted-department = { $type -> - *[item] [color=yellow]Этот предмет ограничен для { $departments }, и может считаться контрабандой.[/color] + *[item] [color=yellow]Этот предмет ограничен для { $departments }, и может считаться контрабандой.[/color] [reagent] [color=yellow]Этот реагент ограничен для { $departments }, и может считаться контрабандой.[/color] } contraband-examine-text-Major = { $type -> - *[item] [color=red]Этот предмет считается крупной контрабандой.[/color] + *[item] [color=red]Этот предмет считается крупной контрабандой.[/color] [reagent] [color=red]Этот реагент считается крупной контрабандой.[/color] } contraband-examine-text-GrandTheft = { $type -> - *[item] [color=red]Этот предмет является очень ценной целью для агентов Синдиката![/color] + *[item] [color=red]Этот предмет является очень ценной целью для агентов Синдиката![/color] [reagent] [color=red]Этот реагент является очень ценной целью для агентов Синдиката![/color] } contraband-examine-text-Highly-Illegal = { $type -> - *[item] [color=crimson]Этот предмет является крайне незаконной контрабандой![/color] + *[item] [color=crimson]Этот предмет является крайне незаконной контрабандой![/color] [reagent] [color=crimson]Этот реагент является крайне незаконной контрабандой![/color] } contraband-examine-text-Syndicate = { $type -> - *[item] [color=crimson]Этот предмет является крайне незаконной контрабандой Синдиката![/color] + *[item] [color=crimson]Этот предмет является крайне незаконной контрабандой Синдиката![/color] [reagent] [color=crimson]Этот реагент является крайне незаконной контрабандой Синдиката![/color] } contraband-examine-text-Magical = { $type -> - *[item] [color=#b337b3]Этот предмет является крайне незаконной магической контрабандой![/color] + *[item] [color=#b337b3]Этот предмет является крайне незаконной магической контрабандой![/color] [reagent] [color=#b337b3]Этот реагент является крайне незаконной магической контрабандой![/color] } diff --git a/Resources/Locale/ru-RU/corvax/prototypes/entities/invisible_hand_teleporter.ftl b/Resources/Locale/ru-RU/corvax/prototypes/entities/invisible_hand_teleporter.ftl deleted file mode 100644 index 2e809be9f3a..00000000000 --- a/Resources/Locale/ru-RU/corvax/prototypes/entities/invisible_hand_teleporter.ftl +++ /dev/null @@ -1,8 +0,0 @@ -ent-HandTeleporterAdmemeCNInvisible = { ent-HandTeleporter } - .desc = { ent-HandTeleporter.desc } - .suffix = Адмемы, Невидимый, Между картами -ent-PortalRedAdmemeCNInvisible = { ent-BasePortal } - .desc = { ent-BasePortal.desc } -ent-PortalBlueAdmemeCNInvisible = { ent-BasePortal } - .desc = { ent-BasePortal.desc } - \ No newline at end of file diff --git a/Resources/Locale/ru-RU/cuffs/components/cuffable-component.ftl b/Resources/Locale/ru-RU/cuffs/components/cuffable-component.ftl index fcad154d1ef..91d4030b86e 100644 --- a/Resources/Locale/ru-RU/cuffs/components/cuffable-component.ftl +++ b/Resources/Locale/ru-RU/cuffs/components/cuffable-component.ftl @@ -10,24 +10,21 @@ cuffable-component-start-uncuffing-by-other-message = { $otherName } начин cuffable-component-remove-cuffs-success-message = Вы успешно снимаете наручники. cuffable-component-remove-cuffs-push-success-message = Вы успешно снимаете наручники и толкаете { $otherName } на пол. cuffable-component-remove-cuffs-by-other-success-message = { $otherName } снимает с вас наручники. -cuffable-component-remove-cuffs-to-other-partial-success-message = - Вы успешно снимаете наручники. { $cuffedHandCount } { $cuffedHandCount -> - [one] рука осталась - [few] руки остались - *[other] рук остались - } у { $otherName } в наручниках. -cuffable-component-remove-cuffs-by-other-partial-success-message = - { $otherName } успешно снимает с вас наручники. { $cuffedHandCount } { $cuffedHandCount -> - [one] ваша рука осталась - [few] ваших руки остались - *[other] ваших рук остались - } в наручниках. -cuffable-component-remove-cuffs-partial-success-message = - Вы успешно снимаете наручники. { $cuffedHandCount } { $cuffedHandCount -> - [one] ваша рука осталась - [few] ваших руки остались - *[other] ваших рук остались - } в наручниках. +cuffable-component-remove-cuffs-to-other-partial-success-message = Вы успешно снимаете наручники. { $cuffedHandCount } { $cuffedHandCount -> + [one] рука осталась + [few] руки остались + *[other] рук остались +} у { $otherName } в наручниках. +cuffable-component-remove-cuffs-by-other-partial-success-message = { $otherName } успешно снимает с вас наручники. { $cuffedHandCount } { $cuffedHandCount -> + [one] ваша рука осталась + [few] ваших руки остались + *[other] ваших рук остались +} в наручниках. +cuffable-component-remove-cuffs-partial-success-message = Вы успешно снимаете наручники. { $cuffedHandCount } { $cuffedHandCount -> + [one] ваша рука осталась + [few] ваших руки остались + *[other] ваших рук остались +} в наручниках. cuffable-component-remove-cuffs-fail-message = Вам не удалось снять наручники. # UnrestrainVerb diff --git a/Resources/Locale/ru-RU/cuffs/components/handcuff-component.ftl b/Resources/Locale/ru-RU/cuffs/components/handcuff-component.ftl index 28fcbd65262..081c51bb273 100644 --- a/Resources/Locale/ru-RU/cuffs/components/handcuff-component.ftl +++ b/Resources/Locale/ru-RU/cuffs/components/handcuff-component.ftl @@ -7,28 +7,25 @@ handcuff-component-start-cuffing-observer = { $user } начинает зако handcuff-component-start-cuffing-self-observer = { $user } начинает заковывать { REFLEXIVE($target) } себя. handcuff-component-start-cuffing-target-message = Вы начинаете заковывать { $targetName }. handcuff-component-start-cuffing-by-other-message = { $otherName } начинает заковывать вас! -handcuff-component-cuff-observer-success-message = - { $user } { GENDER($user) -> - [male] заковал - [female] заковала - [epicene] заковали - *[neuter] заковало - } { $target }. -handcuff-component-cuff-self-observer-success-message = - { $user } { GENDER($user) -> - [male] заковал - [female] заковала - [epicene] заковали - *[neuter] заковало - } { REFLEXIVE($target) } себя. +handcuff-component-cuff-observer-success-message = { $user } { GENDER($user) -> + [male] заковал + [female] заковала + [epicene] заковали + *[neuter] заковало +} { $target }. +handcuff-component-cuff-self-observer-success-message = { $user } { GENDER($user) -> + [male] заковал + [female] заковала + [epicene] заковали + *[neuter] заковало +} { REFLEXIVE($target) } себя. handcuff-component-cuff-other-success-message = Вы успешно заковали { $otherName }. -handcuff-component-cuff-by-other-success-message = - { $otherName } { GENDER($otherName) -> - [male] заковал - [female] заковала - [epicene] заковали - *[neuter] заковало - } вас! +handcuff-component-cuff-by-other-success-message = { $otherName } { GENDER($otherName) -> + [male] заковал + [female] заковала + [epicene] заковали + *[neuter] заковало +} вас! handcuff-component-cuff-self-success-message = Вы заковали себя. handcuff-component-cuff-interrupt-message = Вам помешали заковать { $targetName }! handcuff-component-cuff-interrupt-other-message = Вы помешали { $otherName } заковать вас! diff --git a/Resources/Locale/ru-RU/damage/damage-command.ftl b/Resources/Locale/ru-RU/damage/damage-command.ftl index 0f9b9c54097..bb6ae89b81f 100644 --- a/Resources/Locale/ru-RU/damage/damage-command.ftl +++ b/Resources/Locale/ru-RU/damage/damage-command.ftl @@ -12,4 +12,4 @@ damage-command-error-euid = { $arg } неправильный UID сущност damage-command-error-quantity = { $arg } неправильное количество. damage-command-error-bool = { $arg } неправильное логическое значение. damage-command-error-player = Нет сущности, привязанной к сессии. Вы должны указать UID цели. -damage-command-error-args = Неправильное количество аргументов. +damage-command-error-args = Неправильное количество аргументов. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/damage/damage-popup-component.ftl b/Resources/Locale/ru-RU/damage/damage-popup-component.ftl index 74fff46cea3..711eac00436 100644 --- a/Resources/Locale/ru-RU/damage/damage-popup-component.ftl +++ b/Resources/Locale/ru-RU/damage/damage-popup-component.ftl @@ -4,7 +4,7 @@ [total] Всего [delta] Дельта [hit] Удар - *[other] Неизвестно + *[other] Неизвестно } -damage-popup-component-switched = Мишень установлена на тип: { -damage-popup-component-type(setting: $setting) } +damage-popup-component-switched = Мишень установлена на тип: { -damage-popup-component-type(setting: $setting) } \ No newline at end of file diff --git a/Resources/Locale/ru-RU/damage/rejuvenate-verb.ftl b/Resources/Locale/ru-RU/damage/rejuvenate-verb.ftl index fab1307e271..d69fcc1e51b 100644 --- a/Resources/Locale/ru-RU/damage/rejuvenate-verb.ftl +++ b/Resources/Locale/ru-RU/damage/rejuvenate-verb.ftl @@ -1 +1 @@ -rejuvenate-verb-get-data-text = Вылечить +rejuvenate-verb-get-data-text = Вылечить \ No newline at end of file diff --git a/Resources/Locale/ru-RU/darts/darts-popup.ftl b/Resources/Locale/ru-RU/darts/darts-popup.ftl index f5225f11ad7..1254c5e19eb 100644 --- a/Resources/Locale/ru-RU/darts/darts-popup.ftl +++ b/Resources/Locale/ru-RU/darts/darts-popup.ftl @@ -3,4 +3,4 @@ darts-popup-25 = 25 очков darts-popup-10 = 10 очков darts-popup-5 = 5 очков darts-popup-1 = 1 очко -darts-popup-miss = Промах +darts-popup-miss = Промах \ No newline at end of file diff --git a/Resources/Locale/ru-RU/defusable/examine.ftl b/Resources/Locale/ru-RU/defusable/examine.ftl index 7d898136735..dd814808bba 100644 --- a/Resources/Locale/ru-RU/defusable/examine.ftl +++ b/Resources/Locale/ru-RU/defusable/examine.ftl @@ -1,14 +1,12 @@ defusable-examine-defused = { CAPITALIZE($name) } [color=lime]обезврежена[/color]. -defusable-examine-live = - { CAPITALIZE($name) } тикает [color=red][/color] и осталось [color=red]{ $time } { $time -> - [one] секунда - [few] секунды - *[other] секунд - }. +defusable-examine-live = { CAPITALIZE($name) } тикает [color=red][/color] и осталось [color=red]{ $time } { $time -> + [one] секунда + [few] секунды + *[other] секунд +}. defusable-examine-live-display-off = { CAPITALIZE($name) } [color=red]тикает[/color] и таймер, похоже, выключен. defusable-examine-inactive = { CAPITALIZE($name) } [color=lime]неактивна[/color], но всё ещё может взорваться. -defusable-examine-bolts = - Болты { $down -> - [true] [color=red]опущены[/color] - *[false] [color=green]подняты[/color] - }. +defusable-examine-bolts = Болты { $down -> + [true] [color=red]опущены[/color] + *[false] [color=green]подняты[/color] +}. diff --git a/Resources/Locale/ru-RU/delivery/delivery-component.ftl b/Resources/Locale/ru-RU/delivery/delivery-component.ftl index a27d291dfac..202fc76d83f 100644 --- a/Resources/Locale/ru-RU/delivery/delivery-component.ftl +++ b/Resources/Locale/ru-RU/delivery/delivery-component.ftl @@ -6,20 +6,18 @@ delivery-recipient-no-job = Неизвестно delivery-unlocked-self = Вы разблокировали { $delivery } отпечатком пальца. delivery-opened-self = Вы вскрываете { $delivery }. -delivery-unlocked-others = - { CAPITALIZE($recipient) } { GENDER($recipient) -> - [male] разблокировал - [female] разблокировала - [epicene] разблокировали - *[neuter] разблокировало - } { $delivery } используя свой отпечаток пальца. -delivery-opened-others = - { CAPITALIZE($recipient) } { GENDER($recipient) -> - [male] открыл - [female] открыла - [epicene] открыли - *[neuter] открыло - } { $delivery }. +delivery-unlocked-others = { CAPITALIZE($recipient) } { GENDER($recipient) -> + [male] разблокировал + [female] разблокировала + [epicene] разблокировали + *[neuter] разблокировало +} { $delivery } используя свой отпечаток пальца. +delivery-opened-others = { CAPITALIZE($recipient) } { GENDER($recipient) -> + [male] открыл + [female] открыла + [epicene] открыли + *[neuter] открыло +} { $delivery }. delivery-unlock-verb = Разблокировать delivery-open-verb = Открыть @@ -29,7 +27,7 @@ delivery-teleporter-amount-examine = Содержит [color=yellow]{ $amount }[/color] { $amount -> [one] посылку. [few] посылки. - *[other] посылок. + *[other] посылок. } delivery-teleporter-empty = { CAPITALIZE($entity) } пуст. delivery-teleporter-empty-verb = Взять почту diff --git a/Resources/Locale/ru-RU/delivery/delivery-spam.ftl b/Resources/Locale/ru-RU/delivery/delivery-spam.ftl index 8ab7a4cad9d..035f6926fa4 100644 --- a/Resources/Locale/ru-RU/delivery/delivery-spam.ftl +++ b/Resources/Locale/ru-RU/delivery/delivery-spam.ftl @@ -4,292 +4,277 @@ ## Headers and reusable elements -delivery-header-nanotrasen = [color=blue] - ╔══════════════════╗ - ║███░███░░░░██░░░░░║ - ║░██░████░░░██░░░░░║ - ║░░█░██░██░░██░█░░░║ - ║░░░░██░░██░██░██░░║ - ║░░░░██░░░████░███░║ - ╚══════════════════╝[/color] + ╔══════════════════╗ + ║███░███░░░░██░░░░░║ + ║░██░████░░░██░░░░░║ + ║░░█░██░██░░██░█░░░║ + ║░░░░██░░██░██░██░░║ + ║░░░░██░░░████░███░║ + ╚══════════════════╝[/color] -delivery-header-nanotrasen-alternate-timeline = [color=red] - ╔══════════════════╗ - ║███░███░░░░██░░░░░║ - ║░██░████░░░██░░░░░║ - ║░░█░██░██░░██░█░░░║ - ║░░░░██░░██░██░██░░║ - ║░░░░██░░░████░███░║ - ╚══════════════════╝[/color] + ╔══════════════════╗ + ║███░███░░░░██░░░░░║ + ║░██░████░░░██░░░░░║ + ║░░█░██░██░░██░█░░░║ + ║░░░░██░░██░██░██░░║ + ║░░░░██░░░████░███░║ + ╚══════════════════╝[/color] -delivery-header-syndicate = [color=#ff0000] - ╔══════════════════╗ - ║░░░░░████████░░░░░║ - ║░░░░░██░░░░░░░░░░░║ - ║░░░░░████████░░░░░║ - ║░░░░░░░░░░░██░░░░░║ - ║░░░░░████████░░░░░║ - ╚══════════════════╝[/color] + ╔══════════════════╗ + ║░░░░░████████░░░░░║ + ║░░░░░██░░░░░░░░░░░║ + ║░░░░░████████░░░░░║ + ║░░░░░░░░░░░██░░░░░║ + ║░░░░░████████░░░░░║ + ╚══════════════════╝[/color] ## Spam letters -delivery-spam-1 = Робаст Тулбокс — Специальное предложение! - .desc = Реклама робаст тулбоксов. - .content = - { "[color=blue][head=1]" } - ░░▄▀░░ - ░▄█▄▄▀ [head=3]РОБАСТ — ТУЛБОКСЫ И ИНСТРУМЕНТЫ[/head] - ██▀░░░ [/head][/color] - - { "[bold]КУПИ ТУЛБОКС И ПОЛУЧИ НАБОР ИНСТРУМЕНТОВ В ПОДАРОК![/bold]" } - - ПОСКОЛЬКУ ВЫ ЯВЛЯЕТЕСЬ ОДНИМ ИЗ НАШИХ ЦЕННЕЙШИХ КЛИЕНТОВ, ВЫ ПОЛУЧИТЕ БОНУС — ВАШИ ИНСТРУМЕНТЫ НЕ БУДУТ ИМЕТЬ РЖАВЧИНЫ И СВИНЦА!!! РАЗВЕ ЭТО НЕ ЧУДЕСНО? ЯЩИК ДЛЯ ИНСТРУМЕНТОВ, НАПРОТИВ, БУДЕТ СОДЕРЖАТЬ ЕЩЁ БОЛЬШЕ СВИНЦА! ОТЛИЧНО ПОДХОДИТ ДЛЯ ПРОБИВАНИЯ ЧЕРЕПОВ И ЗАЩИТЫ ОТ РАДИАЦИИ! - - { "[bold]ВСЁ ЭТО И МНОГОЕ ДРУГОЕ — ВСЕГО ЗА ОДИН ОРГАН![/bold]" } - - РОБАСТ — ТУЛБОКСЫ И ИНСТРУМЕНТЫ: - -БЕЗ СВИНЦА И АСБЕСТА! - -ИЛИ СО СВИНЦОМ И АСБЕСТОМ, ЕСЛИ ВЫ ПРЕДПОЧИТАЕТЕ ТАК! - -ДЁШЕВО! ВСЕГО ЛИШЬ ОДИН ОРГАН! ЭТО МЕНЬШЕ ЧЕМ ДВА ОРГАНЫ! - -НЕВАЖНО, ЕСЛИ ОРГАН НЕ ВАШ! НАМ НАСРАТЬ! - -delivery-spam-2 = Причины выбрать Nanotrasen! - .desc = Реклама Nanotrasen. - .content = - { -delivery-header-nanotrasen } - - { "[head=2]ТОП ТРИ ПРИЧИНЫ НЕКОМПЕТЕНТНОСТИ СИНДИКАТА[/head]" } - - { "[bold]ПРИЧИНА ОДИН[/bold]" } - ИХ СПЯЩИЕ АГЕНТЫ НЕКОМПЕТЕНТНЫ! ОНИ НЕ СМОГУТ УБИТЬ ДАЖЕ ПАССАЖИРА, КОТОРОМУ НАДОЕЛО ЖИТЬ! - - { "[bold]ПРИЧИНА ДВА[/bold]" } - ИХ МИРНЫЕ СОТРУДНИКИ УЯЗВИМЫ К ПУЛЯМ! ПОВЕРЬТЕ, МЫ ПРОВЕРЯЛИ! В ОТЛИЧИЕ ОТ СОТРУДНИКОВ NANOTRASEN, МИРНЫЕ СОТРУДНИКИ СИНДИКАТА ДОХНУТ ОТ ОДНОЙ ПУЛИ В ЛОБ! А ПУЛИ У НАС ЕСТЬ! - - { "[bold]ПРИЧИНА ТРИ[/bold]" } - ИХ ЛОГОТИП УЖАСЕН! ОНИ ДУМАЮТ, ЧТО ТИПО КРУТЫЕ СО СВОИМ ЛОГОТИПОМ! ОО, ВЗГЛЯНИТЕ НА НАС, МЫ ТАКИЕ КРУТЫЕ! ААА, ЗМЕЯ, КОТОРАЯ ТИПО КАК S! КАК КРЕАТИВНО! МОЙ ТРЁХЛЕТНИЙ СЫН И ТО БЫ СМОГ НАРИСОВАТЬ ЛОГОТИП ПОЛУЧШЕ! - -delivery-spam-3 = Причины выбрать Синдикат! - .desc = Реклама Синдиката. - .content = - { -delivery-header-syndicate } - - { "[head=2]ТОП ТРИ ПРИЧИНЫ НЕКОМПЕТЕНТНОСТИ НАНОТРЕЙЗЕН[/head]" } - - { "[bold]ПРИЧИНА ОДИН[/bold]" } - ИХ ОРУЖИЕ ОТСТОЙ! У НИХ НЕТ ДАЖЕ СНАЙПЕРСКИХ ВИНТОВОК! А ИХ СЛУЖБА БЕЗОПАСНСТИ НЕ МОЖЕТ ДАЖЕ НОСИТЬ БОЛЬШИЕ ПУШКИ В БОЛЬШИНСТВЕ СИТУАЦИЙ! - - { "[bold]ПРИЧИНА ДВА[/bold]" } - ИХ КОМАНДИРЫ? УМИРАЮТ С ОДНОЙ ПУЛИ! НЕТ КРУТОЙ БРОНИ! ПРОСТО БУМ, УБИТ! ПОЗОР! НАШИ КОМАНДИРЫ ИМЕЮТ КРУТЫЕ СКАФАНДРЫ! - - { "[bold]ПРИЧИНА ТРИ[/bold]" } - ИХ МЕТОДЫ УБИЙСТВА ЛИШЕНЫ ВООБРАЖЕНИЯ! ПРОСТО РАССТРЕЛЫ! НЕ ВЫБРАСЫВАНИЕ ЛЮДЕЙ В КОСМОС, НЕ СКАРМЛИВАНИЕ ЛЮДЕЙ ПЕРЕРАБОТЧИКАМ МУСОРА С ВЫКЛЮЧЕНЫМ РЕЖИМОМ БЕЗОПАСНОСТИ, НЕ ПОДКИДЫВАНИЕ БОМБ В КАРМАНЫ! СКУКОТИЩА! - -delivery-spam-4 = Устали от взрывов научного отдела? - .desc = Выполните следующие простые действия, чтобы этого больше не случилось! - .content = - { "[head=3]Учёные будет ОБОЖАТЬ вас за это!!!" } - - { "[bold]ВЫ[/bold] устали от научного отдела вашей станции, который только взрывается и не занимается [bold]РЕАЛЬНОЙ[/bold] наукой??" } - Тогда вам повезло![/head] - - Следуйте этому простому руководству, и мы гарантируем, что ваш научный отдел [italic]больше никогда не работал![/italic] - - Просто выполните следующие шаги: - - Шаг 1: Найдите исследовательский сервер в научном отделе. - - Шаг 2: Открепите сервер от пола. - - Шаг 3: Отправьте сервер в космос, желательно в сторону суперсекретного космического додзё клана Паука. - - Шаг 4: Подождите примерно 3–5 рабочих смен. - - Шаг 5: Наши курьеры из Паукберис будут доставлять вашей станции один (1) техдиск в неделю. - - { "[color=lightgray]Примечание: Клан Паука не несёт ответственности за любое наказание, наложенное вашим начальством.[/color]" } - -delivery-spam-5 = БЕСССПЛАТНЫЙ ПОЛНЫЙ ДОСТУП!! - .desc = Вы когда-нибудь мечтали о бесплатном полном доступе?! - .content = - { "[head=3]Вы когда-нибудь мечтали о [italic][color=green]Бесссплатном [bold]Полном доссступе!?!?[/bold][/color][/italic][/head]" } - { "[head=2]ТЕПЕРЬ ВЫ МОЖЕТЕ ЕГО ПОЛУЩЩИТЬ!![/head]!" } - - Всё что нужно сделать - это позвонить по номеру [color=blue]8-800-ГОУР-ЛЕКССС[/color] и назвать АЙДИ# своей станции!!! - После этого мы удалённо сссвяяжемся с кошельком отдела снабжения вашейссстанции, и ссспишем всего три [italic]МАЛЕНЬКИХ[/italic] платежа, чтобы вы смогли получить - { "[head=2][color=green] [bolditalic] БЕСССПЛАТНЫЙ ПОЛНЫЙ ДОСТУП!!!!!!!!!![/bolditalic][/color][/head]" } - - - { "[color=gray]" } - { "[bullet/]Примечание: Айди станции должено быть указано в формате \"NT/NX — ###\"" } - { "[bullet/]Примечание: Платежи, осуществляемые через отдел снабжения станции клиента, составляют примерно 5000 кредитов за транзакцию, не считая индивидуальных сборов за обработку и НДС" } - { "[bullet/]Примечание: ООО Гоур-Лекссс не несёт ответственности, если ваш ГП узнает об этом письме и заставит вас заполнять НАСТОЯЩУЮ форму запроса на ПД" } - { "[/color]" } - -delivery-spam-6 = УВЕДОМЛЕНИЕ ОТ НАНАТРАЗЕН!! - .desc = Официальное уведомление от генерального директора Нанатразен?! - .content = - { "[color=red] ОФИЦИАЛНОЕ СООБЩЕНИЕ ГЛАВЫ [color=blue]НАНАТРАЗЕН[/color][/color]" } - - Уважаемый сэр или мадам или другой незначимый персонал станци - - если вы не хотите чтобы эта станция была обьявлена Нерентабельной в глазах - { "[head=2][italic] Нашей Великой и Славной [color=blue]Нанотрасен[[/color][/head]" } - То вы обязаны организовать поставку золотых слитков стандартна [color=blue]нт[/color] в стопках образца [color=blue]Нт[/color] в торговый пост вашей станции в течение 5 Стандартных рабочих [color=blue]нТ[/color] смен. - - { "[head=2][color=red]ИГНОРИРОВАНИЕ ЭТОГО ПРИКАЗА ГРОЗИТ ВАМ КАРОЙ ОТ [color=green]ЦЕНТКО[/color]!!!!![/head][/color]" } - -delivery-spam-7 = Отправьте подкрепление! - .desc = Официальное уведомление из... альтернативной временной линии? - .content = - { -delivery-header-nanotrasen-alternate-timeline } - - { "[head=2]Это официальное уведомление [color=red]Начальника Службы Безопасности[/color] Космической станции 15 Nanotrasen.[/head]" } - - Кому бы ни попало это письмо... Я сержант Ригель, начальник службы безопасности. Нам срочно нужно подкрепление. - - Наша станция подверглась атаке ядерных оперативников, данное послание было отправлено в дестабилизированную блюспейс-аномалию, созданную нашим[color=purple]Главой исследований[/color]. - - На данный момент, я заболтирован на мостике. Если вы получили это сообщение, пожалуйста, немедленно отправьте помощь. Не знаю сколько мы ещё здесь продержимся. - - Слава Nanotrasen. - -delivery-spam-8 = Дети Нар'Си - .desc = Местный культ ищет новобранцев. - .content = - { "[color=#134975][head=2]Дети Нар'Си[/head][/color]" } - Начало Новой Эры - { "[bold]══──══──══──══──══──══──══──══──══──══──══[/bold]" } - - { "[head=3]Чувствуете ли вы себя потерянными в бескрайних просторах космоса?[/head]" } - В современную эпоху заблудшим душам так легко ощущать себя всего лишь шестерёнками в механизме гигантских корпораций. - - { "[head=3]Чувствуете ли вы, что рождены для высшей цели?[/head]" } - Устаёте ли вы от серости навязанной вам жизни? От мытья полов, доставки ящиков или же бесконечного заполнения документов? - - { "[head=3]Хотите сделать галактику лучше?[/head]" } - - - Если вы ответили «Да» на любой из этих вопросов, то свяжитесь с нашим представителем уже сегодня! Наши последователи есть на станциях по всей галактике и с радостью примут вас в нашу отару. Станьте одним из кинжалов, что помогут приветствовать Геометра Крови в наш мир, дабы все познали его блаженство!! - - Вам остаётся лишь произнести [color=#FF0000][italic]"Sas'so c'arta forbici!"[/italic][/color] - -delivery-spam-9 = Хочешь сразиться?! - .desc = Реклама местного бойцовского клуба. - .content = - { "[color=#aaaaaa]▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[/color]" } - { "[bold][head=1]КЛЕТКА ЯРОСТИ[/head][/bold]" } - { "[color=#aaaaaa]▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬[/color]" } - { "[bold][color=#FF0000][head=3]ТЫ ХОЧЕШЬ СРАЖАТЬСЯ?[/head][/color][/bold]" } - { "[bold][color=#FF0000][head=3]ТЫ ХОЧЕШЬ ПОБЕЖДАТЬ?[/head][/color][/bold]" } - { "[bold][color=#FF0000][head=3]ТЫ ХОЧЕШЬ ДОМИНИРОВАТЬ!?[/head][/color][/bold]" } - - - - Тогда приходи в... [color=#FF0000][bold][head=2]КЛЕТКУ ЯРОСТИ[/head][/bold][/color] - - - - Скрытая в глубинах станции Nanotrasen, запатентованная [color=#FF0000][bold]КЛЕТКА ЯРОСТИ[/bold][/color]! Эта электрифицированная арена создана только для сильнейших, в [color=#FF0000][bold]КЛЕТКЕ ЯРОСТИ[/bold][/color] трусы отделяются от воинов, салаги — от солдат, а неудачники — от победителей. - ────────────────────────────────────────── - Внутри [color=#FF0000][bold]КЛЕТКИ ЯРОСТИ[/bold][/color] всего лишь одно правило: [italic]Два бойца заходят. Один боец выходит. [/italic] - ────────────────────────────────────────── - Никакого оружия, никакой брони — только чистая незамутнённая [bold]ДРАКА[/bold]. Не будь [bold]СЛАБАКОМ[/bold]. Завоюйте славу самого робастного бойца своей станции в [color=#FF0000][bold]КЛЕТКЕ ЯРОСТИ[/bold][/color] уже сегодня! - -delivery-spam-10 = НЕ ОТКРЫВАЙ ЭТО ПИСЬМО - .desc = Ты проклят! - .content = - { "[color=#FF0000][bold][head=2]ОСТАНОВИСЬ[/head][/bold][/color]" } - - Елси ти читаешь этот текст то...[color=#FF0000][head=3]ТЫ УЖЕ ПРОКЛАТ!!![/head][/color] - - Извини что я так поступил с тобой но я должен предупредить тебя о: - - { "[color=#FF0000][head=1]Призраке Кровавой Ящерици[/head][/color]" } - - Все началось с того, что мне пришло письмо с страшной картинкой плюшевой ящерки с КРОВАВЫМИ ГЛАЗАМИ, смотрящими ПРЯМО В МЕНЯ. в письме также говорилось, что я проклят... и если не отправлю это письмо 30 людям в течение 30 дней, то Кровавая Ящерица придёт посреди ночи..... - - { "[italic]и УБЬЁТ МЕНЯ.[/italic]" } - - прости......но ты один из тех 30 человек..и теперт ты проклят тоже... - - пожалуйста отпрваь это ещё 30 человекам, чтобы остановить проклятие! Ты ещё можешь спасти себя! время ещё есть! не дай кровавой ящерицы дойти и до тебя, возьми эту штучку! Оно защитит тебя от злых духов...[head=3]ПОКА ЧТО[/head] - - - - - { "[head=1]ААААААААА ОНА ТУТ!!!!!!!![/head]" } - - ░░░░░░░░░█░░[color=#67CC40]████████[/color]█[color=#67CC40]███[/color]░░░░░░░░░░ - ░░░░░░[color=#FF0000]████[/color]█[color=#6EC543]█[/color][color=#67CC40]███████[/color]█[color=#FF0000]██████[/color]░░░░░░░░ - ░░░░[color=#FF0000]████[/color][color=#6EC543]██[/color][color=#67CC40]████████[/color][color=#FF0000]██████[/color][color=#FFFFFF]██[/color][color=#FF0000]█[/color][color=#B53737]█[/color]░░░░░░ - ░░░░[color=#FF0000]██[/color][color=#6EC543]██[/color][color=#67CC40]██████████[color=#FF0000]████████[/color][color=#B53737]██[/color]░░░░░░ - ░░[color=#6EC543]██████[/color][color=#67CC40]██████████[/color][color=#FF0000]███████[/color][color=#B53737]███[/color]░░░░░░ - { "[color=#6EC543]██████[/color][color=#67CC40]██████████████[/color][color=#FF0000]███[/color][color=#B53737]███[/color]░░░░░░░░" } - { "[color=#6EC543]██████[/color][color=#67CC40]██████████████[/color][color=#FF0000]█[/color][color=#6EC543]█████[/color]░░░░░░░░" } - { "[color=#6EC543]██████████[/color][color=#67CC40]██████████[/color][color=#FF0000]█[/color][color=#67CC40]███[/color]░░░░░░░░░░" } - ░░[color=#6EC543]██[/color][color=#FF2020]██[/color][color=#FF3D3D]██[/color][color=#6EC543]████████[/color][color=#67CC40]████[/color][color=#86E158]██[/color]░░░░░░░░░░░░ - ░░░░[color=#FF2020]██[/color][color=#FF3D3D]██[/color]░░░░[color=#86E158]████████[/color][color=#6EC543]██[/color][color=#61D034]██[/color]░░░░░░░░[color=#56B037]██[/color] - ░░░░[color=#FF2020]██[/color]░░░░[color=#A8EB7A]██[/color][color=#B5EE85]██████[/color][color=#A8EB7A]██[/color][color=#6EC543]████[/color][color=#61D034]██[/color]░░░░[color=#56B037]██[/color][color=#48A926]██[/color] - ░░░░░░░░[color=#A8EB7A]██[/color][color=#B5EE85]██████████[/color][color=#A8EB7A]██[/color][color=#6EC543]████[/color][color=#56B037]██[/color][color=#48A926]██████[/color] - ░░░░[color=#6EC543]██[/color][color=#61D034]██[/color][color=#A8EB7A]██[/color][color=#B5EE85]██████████[/color][color=#A8EB7A]██[/color][color=#48A926]████████████[/color] - ░░░░[color=#6EC543]████[/color][color=#86E158]██[/color][color=#A8EB7A]██[/color][color=#B5EE85]████[/color][color=#A8EB7A]██[/color][color=#86E158]██[/color][color=#61D034]████[/color][color=#6EC543]██[/color][color=#48A926]████[/color][color=#52A037]██[/color]░░ - ░░░░[color=#6EC543]████[/color][color=#61D034]██[/color][color=#86E158]████████[/color][color=#61D034]██[/color][color=#6EC543]██████[/color][color=#52A037]████[/color]░░░░ - ░░░░░░[color=#6EC543]████[/color]░░░░░░░░[color=#6EC543]████████[/color]░░░░░░░░ - ░░░░░░░░░░░░░░░░░░░░[color=#6EC543]████[/color]░░░░░░░░░░ - -delivery-spam-11 = Помоги маме и папе! - .desc = Родители нуждаются в финансовой поддержке. - .content = - { "[bold]Привет Малыш,[/bold]" } - - Это пишут твои родители: нам срочно нужны деньги! Правителство проверили наши налоги и теперь у нас долг в 100,000 кредитов! Просим помочь нам! Они принимают только подарочные карты, поэтому тебе нужно отправить нам 100 карт Биса по 1000 кредитов. - - отправь их сюда: - 50192 Спесс Лейн - Станция Сити, Ингиус 40195-243 - Гамма-Квадрант - Система Гуилимин - - Если мы не получим эти деньги, то через 10 дней придёт правительство и забирут наше семейное гнёздышко и мы станем бездомными. - - { "[bold]ещё раз спасибо, любим,[/bold]" } - { "[italic]твои родители[/italic]" } - -delivery-spam-12 = Присоединяйтесь к нам на первом рейсе! - .desc = Реклама расслабляющего путешествия. - .content = - { "[head=2]Присоединяйтесь к нам на первом рейсе...[/head]" } - - ░█▄▀░█▄▀░░░█▀▄░█▀▀░▄▀▄░█▀█░█▄▀░█▀▀░█▀█░█▀▄ - ░█▀▄░█▀▄░░░█▀▀░█▀▀░█░█░█▀█░█▀▄░█░░░█░█░█▀▀ - ░▀░▀░▀░▀░░░▀░░░▀▀▀░▀░▀░▀░▀░▀░▀░▀▀▀░▀▀▀░▀░░ - - - { "[bold]══════════════════════════════════════════[/bold]" } - - Новейшие технологии Комфортех™ и самые захватывающие виды по эту сторону системы Иракси! [italic]КК Релаксор[/italic] — это современная яхта премиум-класса, которая отправит вас в путешествие всей вашей жизни! - - { "[head=3]Откройте для себя фосфорные озера Галимара*, наслаждаясь комфортом ЛюксКабин™, в которых имеются все современные удобства, о которых только можно мечтать![/head]" } - - { "[head=3]Созерцайте Око Космоса**, наслаждаясь блюдами от наших шеф-поваров уровня Пяти Звёзд Галактики![/head]" } - - { "[head=3]Исследуйте руины Агатара***, теперь открытые для публики благодаря помощи лучших учёных Nanotrasen. Все тайны древней Агатарской цивилизации раскопаны и выставлены для вашего удовольствия![/head]" } - - За невероятно низкую цену в 5000 кредитов за ночь, наш шестимесячный роскошный круиз может стать вашим для отпуска вашей мечты! Позвоните нам прямо сейчас по номеру [color=#00FF00]ОТДЫХ-ЩАС[/color] для бронирования. Чего же вы ждёте?! Звоните! - - - - - - - { "[italic]*Фосфорные озёра не предназначены для купания, после посадки на Галимар вы отказываетесь от всех прав на юридическое представительство по отношению к Relaxination Destinations.[/italic]" } - { "[italic]**В Око Космоса нельзя заглядывать более чем на пять секунд за раз. Вы не слышите зов Ока[/italic]" } - { "[italic]***Перед посадкой необходимо подписать отказ от претензий, Relaxination Destinations не гарантирует безопасность руин Агатары. Исчезновения экскурсионных групп сократились до приемлемой отметки в 0,23% от всех экскурсионных групп, посещающих руины.[/italic]" } - -delivery-spam-13 = бумага - .desc = Письмо редактору. - .content = - Всем заинтересованным лицам, - - Легендарная серия книг «Приключения Иана и Алисы», обожаемая детьми и, как минимум, одной ящерицей-дислексиком (не переживайте, мне уже лучше). Однако в последней публикации допущена чудовищная ошибка, ведь Иан и Алиса НИКОГДА не ошибаются при написании. В книге «Приключения Иана и Алисы — арктическое путешествие храбрости и дружбы» оказались две строчки из «Приключения Иана и Алисы — исследование города». - Это лишено всякого смысла. Как Иан и Алиса нашли котёнка в Арктике? Что котёнок там делал? Почему Иан и Алиса делали БОЛЬШЕ, чем обычно, за день? А худшим косяком является вторая неправильная строчка: «Когда день перешёл в ночь, они были измотаны, но счастливы от своего приключения в городе» (Иан и Алиса, стр. 1). ОЙ, ПРОСТИТЕ!!! Я НЕ ЗНАЛ, ЧТО В АРКТИКЕ ЕСТЬ ГОРОД!!! В КОТОРЫЙ ОНИ ПРОСТО ТАК ПОПАЛИ. ЗАШЛИ ВЫПИТЬ КОФЕ. ОЙ, ПОГОДИТЕ!! КОФЕ УБИВАЕТ СОБАК И ЛИСИЧЕК!!!!!!!!! КТО БЫ ТАКОЕ ПУБЛИКОВАЛ!!!!! ВЫ ТОЛЬКО ЧТО УБИЛИ ИАНА И АЛИСУ!!!!!!!!!!!!!!!!!!! КАК ВЫ МОГЛИ!!!!!!!!!!!!!!!!!!! ВЫ МОНСТРЫ!!!!!!!!!!!!!!!!! - И ради чего вы убили Иана и Алису? Мм? Чтобы книга была чуть побольше? Нужна огромная книженция, да? Большие книги дороже продаются? Хотели срубить побольше денег? - ПОСМОТРИТЕ, ЧЕМ ЭТО ЗАКОНЧИЛОСЬ. ВЫ УБИЛИ ИХ ОБОИХ. ПОЗДРАВЛЯЮ. - НЕ БУДЕТ БОЛЬШЕ СИКВЕЛОВ. - И КАК ВАМ ТЕПЕРЬ ДЕЛАТЬ ДЕНЬГИ???? НИКАК???? - { "[bold]ТАК НЕ НАДО БЫЛО ИХ УБИВАТЬ!!!!!!!!!!!!!!![/bold]" } +delivery-spam-1 = Робаст Тулбокс — Специальное предложение! + .desc = Реклама робаст тулбоксов. + .content = { "[color=blue][head=1]" } + ░░▄▀░░ + ░▄█▄▄▀ [head=3]РОБАСТ — ТУЛБОКСЫ И ИНСТРУМЕНТЫ[/head] + ██▀░░░ [/head][/color] + + { "[bold]КУПИ ТУЛБОКС И ПОЛУЧИ НАБОР ИНСТРУМЕНТОВ В ПОДАРОК![/bold]" } + + ПОСКОЛЬКУ ВЫ ЯВЛЯЕТЕСЬ ОДНИМ ИЗ НАШИХ ЦЕННЕЙШИХ КЛИЕНТОВ, ВЫ ПОЛУЧИТЕ БОНУС — ВАШИ ИНСТРУМЕНТЫ НЕ БУДУТ ИМЕТЬ РЖАВЧИНЫ И СВИНЦА!!! РАЗВЕ ЭТО НЕ ЧУДЕСНО? ЯЩИК ДЛЯ ИНСТРУМЕНТОВ, НАПРОТИВ, БУДЕТ СОДЕРЖАТЬ ЕЩЁ БОЛЬШЕ СВИНЦА! ОТЛИЧНО ПОДХОДИТ ДЛЯ ПРОБИВАНИЯ ЧЕРЕПОВ И ЗАЩИТЫ ОТ РАДИАЦИИ! + + { "[bold]ВСЁ ЭТО И МНОГОЕ ДРУГОЕ — ВСЕГО ЗА ОДИН ОРГАН![/bold]" } + + РОБАСТ — ТУЛБОКСЫ И ИНСТРУМЕНТЫ: + -БЕЗ СВИНЦА И АСБЕСТА! + -ИЛИ СО СВИНЦОМ И АСБЕСТОМ, ЕСЛИ ВЫ ПРЕДПОЧИТАЕТЕ ТАК! + -ДЁШЕВО! ВСЕГО ЛИШЬ ОДИН ОРГАН! ЭТО МЕНЬШЕ ЧЕМ ДВА ОРГАНЫ! + -НЕВАЖНО, ЕСЛИ ОРГАН НЕ ВАШ! НАМ НАСРАТЬ! + +delivery-spam-2 = Причины выбрать Nanotrasen! + .desc = Реклама Nanotrasen. + .content = { -delivery-header-nanotrasen } + + { "[head=2]ТОП ТРИ ПРИЧИНЫ НЕКОМПЕТЕНТНОСТИ СИНДИКАТА[/head]" } + + { "[bold]ПРИЧИНА ОДИН[/bold]" } + ИХ СПЯЩИЕ АГЕНТЫ НЕКОМПЕТЕНТНЫ! ОНИ НЕ СМОГУТ УБИТЬ ДАЖЕ ПАССАЖИРА, КОТОРОМУ НАДОЕЛО ЖИТЬ! + + { "[bold]ПРИЧИНА ДВА[/bold]" } + ИХ МИРНЫЕ СОТРУДНИКИ УЯЗВИМЫ К ПУЛЯМ! ПОВЕРЬТЕ, МЫ ПРОВЕРЯЛИ! В ОТЛИЧИЕ ОТ СОТРУДНИКОВ NANOTRASEN, МИРНЫЕ СОТРУДНИКИ СИНДИКАТА ДОХНУТ ОТ ОДНОЙ ПУЛИ В ЛОБ! А ПУЛИ У НАС ЕСТЬ! + + { "[bold]ПРИЧИНА ТРИ[/bold]" } + ИХ ЛОГОТИП УЖАСЕН! ОНИ ДУМАЮТ, ЧТО ТИПО КРУТЫЕ СО СВОИМ ЛОГОТИПОМ! ОО, ВЗГЛЯНИТЕ НА НАС, МЫ ТАКИЕ КРУТЫЕ! ААА, ЗМЕЯ, КОТОРАЯ ТИПО КАК S! КАК КРЕАТИВНО! МОЙ ТРЁХЛЕТНИЙ СЫН И ТО БЫ СМОГ НАРИСОВАТЬ ЛОГОТИП ПОЛУЧШЕ! + +delivery-spam-3 = Причины выбрать Синдикат! + .desc = Реклама Синдиката. + .content = { -delivery-header-syndicate } + + { "[head=2]ТОП ТРИ ПРИЧИНЫ НЕКОМПЕТЕНТНОСТИ НАНОТРЕЙЗЕН[/head]" } + + { "[bold]ПРИЧИНА ОДИН[/bold]" } + ИХ ОРУЖИЕ ОТСТОЙ! У НИХ НЕТ ДАЖЕ СНАЙПЕРСКИХ ВИНТОВОК! А ИХ СЛУЖБА БЕЗОПАСНСТИ НЕ МОЖЕТ ДАЖЕ НОСИТЬ БОЛЬШИЕ ПУШКИ В БОЛЬШИНСТВЕ СИТУАЦИЙ! + + { "[bold]ПРИЧИНА ДВА[/bold]" } + ИХ КОМАНДИРЫ? УМИРАЮТ С ОДНОЙ ПУЛИ! НЕТ КРУТОЙ БРОНИ! ПРОСТО БУМ, УБИТ! ПОЗОР! НАШИ КОМАНДИРЫ ИМЕЮТ КРУТЫЕ СКАФАНДРЫ! + + { "[bold]ПРИЧИНА ТРИ[/bold]" } + ИХ МЕТОДЫ УБИЙСТВА ЛИШЕНЫ ВООБРАЖЕНИЯ! ПРОСТО РАССТРЕЛЫ! НЕ ВЫБРАСЫВАНИЕ ЛЮДЕЙ В КОСМОС, НЕ СКАРМЛИВАНИЕ ЛЮДЕЙ ПЕРЕРАБОТЧИКАМ МУСОРА С ВЫКЛЮЧЕНЫМ РЕЖИМОМ БЕЗОПАСНОСТИ, НЕ ПОДКИДЫВАНИЕ БОМБ В КАРМАНЫ! СКУКОТИЩА! + +delivery-spam-4 = Устали от взрывов научного отдела? + .desc = Выполните следующие простые действия, чтобы этого больше не случилось! + .content = { "[head=3]Учёные будет ОБОЖАТЬ вас за это!!!" } + + { "[bold]ВЫ[/bold] устали от научного отдела вашей станции, который только взрывается и не занимается [bold]РЕАЛЬНОЙ[/bold] наукой??" } + Тогда вам повезло![/head] + + Следуйте этому простому руководству, и мы гарантируем, что ваш научный отдел [italic]больше никогда не работал![/italic] + + Просто выполните следующие шаги: + - Шаг 1: Найдите исследовательский сервер в научном отделе. + - Шаг 2: Открепите сервер от пола. + - Шаг 3: Отправьте сервер в космос, желательно в сторону суперсекретного космического додзё клана Паука. + - Шаг 4: Подождите примерно 3–5 рабочих смен. + - Шаг 5: Наши курьеры из Паукберис будут доставлять вашей станции один (1) техдиск в неделю. + + { "[color=lightgray]Примечание: Клан Паука не несёт ответственности за любое наказание, наложенное вашим начальством.[/color]" } + +delivery-spam-5 = БЕСССПЛАТНЫЙ ПОЛНЫЙ ДОСТУП!! + .desc = Вы когда-нибудь мечтали о бесплатном полном доступе?! + .content = { "[head=3]Вы когда-нибудь мечтали о [italic][color=green]Бесссплатном [bold]Полном доссступе!?!?[/bold][/color][/italic][/head]" } + { "[head=2]ТЕПЕРЬ ВЫ МОЖЕТЕ ЕГО ПОЛУЩЩИТЬ!![/head]!" } + + Всё что нужно сделать — это позвонить по номеру [color=blue]8-800-ГОУР-ЛЕКССС[/color] и назвать АЙДИ# своей станции!!! + После этого мы удалённо сссвяяжемся с кошельком отдела снабжения вашейссстанции, и ссспишем всего три [italic]МАЛЕНЬКИХ[/italic] платежа, чтобы вы смогли получить + { "[head=2][color=green] [bolditalic] БЕСССПЛАТНЫЙ ПОЛНЫЙ ДОСТУП!!!!!!!!!![/bolditalic][/color][/head]" } + + + { "[color=gray]" } + { "[bullet/]Примечание: Айди станции должено быть указано в формате \"NT/NX — ###\"" } + { "[bullet/]Примечание: Платежи, осуществляемые через отдел снабжения станции клиента, составляют примерно 5000 кредитов за транзакцию, не считая индивидуальных сборов за обработку и НДС" } + { "[bullet/]Примечание: ООО Гоур-Лекссс не несёт ответственности, если ваш ГП узнает об этом письме и заставит вас заполнять НАСТОЯЩУЮ форму запроса на ПД" } + { "[/color]" } + +delivery-spam-6 = УВЕДОМЛЕНИЕ ОТ НАНАТРАЗЕН!! + .desc = Официальное уведомление от генерального директора Нанатразен?! + .content = { "[color=red] ОФИЦИАЛНОЕ СООБЩЕНИЕ ГЛАВЫ [color=blue]НАНАТРАЗЕН[/color][/color]" } + + Уважаемый сэр или мадам или другой незначимый персонал станци + + если вы не хотите чтобы эта станция была обьявлена Нерентабельной в глазах + { "[head=2][italic] Нашей Великой и Славной [color=blue]Нанотрасен[[/color][/head]" } + То вы обязаны организовать поставку золотых слитков стандартна [color=blue]нт[/color] в стопках образца [color=blue]Нт[/color] в торговый пост вашей станции в течение 5 Стандартных рабочих [color=blue]нТ[/color] смен. + + { "[head=2][color=red]ИГНОРИРОВАНИЕ ЭТОГО ПРИКАЗА ГРОЗИТ ВАМ КАРОЙ ОТ [color=green]ЦЕНТКО[/color]!!!!![/head][/color]" } + +delivery-spam-7 = Отправьте подкрепление! + .desc = Официальное уведомление из... альтернативной временной линии? + .content = { -delivery-header-nanotrasen-alternate-timeline } + { "[head=2]Это официальное уведомление [color=red]Начальника Службы Безопасности[/color] Космической станции 15 Nanotrasen.[/head]" } + + Кому бы ни попало это письмо... Я сержант Ригель, начальник службы безопасности. Нам срочно нужно подкрепление. + + Наша станция подверглась атаке ядерных оперативников, данное послание было отправлено в дестабилизированную блюспейс-аномалию, созданную нашим[color=purple]Главой исследований[/color]. + + На данный момент, я заболтирован на мостике. Если вы получили это сообщение, пожалуйста, немедленно отправьте помощь. Не знаю сколько мы ещё здесь продержимся. + + Слава Nanotrasen. + +delivery-spam-8 = Дети Нар'Си + .desc = Местный культ ищет новобранцев. + .content = { "[color=#134975][head=2]Дети Нар'Си[/head][/color]" } + Начало Новой Эры + { "[bold]══──══──══──══──══──══──══──══──══──══──══[/bold]" } + + { "[head=3]Чувствуете ли вы себя потерянными в бескрайних просторах космоса?[/head]" } + В современную эпоху заблудшим душам так легко ощущать себя всего лишь шестерёнками в механизме гигантских корпораций. + + { "[head=3]Чувствуете ли вы, что рождены для высшей цели?[/head]" } + Устаёте ли вы от серости навязанной вам жизни? От мытья полов, доставки ящиков или же бесконечного заполнения документов? + + { "[head=3]Хотите сделать галактику лучше?[/head]" } + + + Если вы ответили «Да» на любой из этих вопросов, то свяжитесь с нашим представителем уже сегодня! Наши последователи есть на станциях по всей галактике и с радостью примут вас в нашу отару. Станьте одним из кинжалов, что помогут приветствовать Геометра Крови в наш мир, дабы все познали его блаженство!! + + Вам остаётся лишь произнести [color=#FF0000][italic]"Sas'so c'arta forbici!"[/italic][/color] + +delivery-spam-9 = Хочешь сразиться?! + .desc = Реклама местного бойцовского клуба. + .content = { "[color=#aaaaaa]▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[/color]" } + { "[bold][head=1]КЛЕТКА ЯРОСТИ[/head][/bold]" } + { "[color=#aaaaaa]▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬[/color]" } + { "[bold][color=#FF0000][head=3]ТЫ ХОЧЕШЬ СРАЖАТЬСЯ?[/head][/color][/bold]" } + { "[bold][color=#FF0000][head=3]ТЫ ХОЧЕШЬ ПОБЕЖДАТЬ?[/head][/color][/bold]" } + { "[bold][color=#FF0000][head=3]ТЫ ХОЧЕШЬ ДОМИНИРОВАТЬ!?[/head][/color][/bold]" } + + + + Тогда приходи в... [color=#FF0000][bold][head=2]КЛЕТКУ ЯРОСТИ[/head][/bold][/color] + + + + Скрытая в глубинах станции Nanotrasen, запатентованная [color=#FF0000][bold]КЛЕТКА ЯРОСТИ[/bold][/color]! Эта электрифицированная арена создана только для сильнейших, в [color=#FF0000][bold]КЛЕТКЕ ЯРОСТИ[/bold][/color] трусы отделяются от воинов, салаги — от солдат, а неудачники — от победителей. + ────────────────────────────────────────── + Внутри [color=#FF0000][bold]КЛЕТКИ ЯРОСТИ[/bold][/color] всего лишь одно правило: [italic]Два бойца заходят. Один боец выходит. [/italic] + ────────────────────────────────────────── + Никакого оружия, никакой брони — только чистая незамутнённая [bold]ДРАКА[/bold]. Не будь [bold]СЛАБАКОМ[/bold]. Завоюйте славу самого робастного бойца своей станции в [color=#FF0000][bold]КЛЕТКЕ ЯРОСТИ[/bold][/color] уже сегодня! + +delivery-spam-10 = НЕ ОТКРЫВАЙ ЭТО ПИСЬМО + .desc = Ты проклят! + .content = { "[color=#FF0000][bold][head=2]ОСТАНОВИСЬ[/head][/bold][/color]" } + + Елси ти читаешь этот текст то...[color=#FF0000][head=3]ТЫ УЖЕ ПРОКЛАТ!!![/head][/color] + + Извини что я так поступил с тобой но я должен предупредить тебя о: + + { "[color=#FF0000][head=1]Призраке Кровавой Ящерици[/head][/color]" } + + Все началось с того, что мне пришло письмо с страшной картинкой плюшевой ящерки с КРОВАВЫМИ ГЛАЗАМИ, смотрящими ПРЯМО В МЕНЯ. в письме также говорилось, что я проклят... и если не отправлю это письмо 30 людям в течение 30 дней, то Кровавая Ящерица придёт посреди ночи..... + + { "[italic]и УБЬЁТ МЕНЯ.[/italic]" } + + прости......но ты один из тех 30 человек..и теперт ты проклят тоже... + + пожалуйста отпрваь это ещё 30 человекам, чтобы остановить проклятие! Ты ещё можешь спасти себя! время ещё есть! не дай кровавой ящерицы дойти и до тебя, возьми эту штучку! Оно защитит тебя от злых духов...[head=3]ПОКА ЧТО[/head] + + + + + { "[head=1]ААААААААА ОНА ТУТ!!!!!!!![/head]" } + + ░░░░░░░░░█░░[color=#67CC40]████████[/color]█[color=#67CC40]███[/color]░░░░░░░░░░ + ░░░░░░[color=#FF0000]████[/color]█[color=#6EC543]█[/color][color=#67CC40]███████[/color]█[color=#FF0000]██████[/color]░░░░░░░░ + ░░░░[color=#FF0000]████[/color][color=#6EC543]██[/color][color=#67CC40]████████[/color][color=#FF0000]██████[/color][color=#FFFFFF]██[/color][color=#FF0000]█[/color][color=#B53737]█[/color]░░░░░░ + ░░░░[color=#FF0000]██[/color][color=#6EC543]██[/color][color=#67CC40]██████████[color=#FF0000]████████[/color][color=#B53737]██[/color]░░░░░░ + ░░[color=#6EC543]██████[/color][color=#67CC40]██████████[/color][color=#FF0000]███████[/color][color=#B53737]███[/color]░░░░░░ + { "[color=#6EC543]██████[/color][color=#67CC40]██████████████[/color][color=#FF0000]███[/color][color=#B53737]███[/color]░░░░░░░░" } + { "[color=#6EC543]██████[/color][color=#67CC40]██████████████[/color][color=#FF0000]█[/color][color=#6EC543]█████[/color]░░░░░░░░" } + { "[color=#6EC543]██████████[/color][color=#67CC40]██████████[/color][color=#FF0000]█[/color][color=#67CC40]███[/color]░░░░░░░░░░" } + ░░[color=#6EC543]██[/color][color=#FF2020]██[/color][color=#FF3D3D]██[/color][color=#6EC543]████████[/color][color=#67CC40]████[/color][color=#86E158]██[/color]░░░░░░░░░░░░ + ░░░░[color=#FF2020]██[/color][color=#FF3D3D]██[/color]░░░░[color=#86E158]████████[/color][color=#6EC543]██[/color][color=#61D034]██[/color]░░░░░░░░[color=#56B037]██[/color] + ░░░░[color=#FF2020]██[/color]░░░░[color=#A8EB7A]██[/color][color=#B5EE85]██████[/color][color=#A8EB7A]██[/color][color=#6EC543]████[/color][color=#61D034]██[/color]░░░░[color=#56B037]██[/color][color=#48A926]██[/color] + ░░░░░░░░[color=#A8EB7A]██[/color][color=#B5EE85]██████████[/color][color=#A8EB7A]██[/color][color=#6EC543]████[/color][color=#56B037]██[/color][color=#48A926]██████[/color] + ░░░░[color=#6EC543]██[/color][color=#61D034]██[/color][color=#A8EB7A]██[/color][color=#B5EE85]██████████[/color][color=#A8EB7A]██[/color][color=#48A926]████████████[/color] + ░░░░[color=#6EC543]████[/color][color=#86E158]██[/color][color=#A8EB7A]██[/color][color=#B5EE85]████[/color][color=#A8EB7A]██[/color][color=#86E158]██[/color][color=#61D034]████[/color][color=#6EC543]██[/color][color=#48A926]████[/color][color=#52A037]██[/color]░░ + ░░░░[color=#6EC543]████[/color][color=#61D034]██[/color][color=#86E158]████████[/color][color=#61D034]██[/color][color=#6EC543]██████[/color][color=#52A037]████[/color]░░░░ + ░░░░░░[color=#6EC543]████[/color]░░░░░░░░[color=#6EC543]████████[/color]░░░░░░░░ + ░░░░░░░░░░░░░░░░░░░░[color=#6EC543]████[/color]░░░░░░░░░░ + +delivery-spam-11 = Помоги маме и папе! + .desc = Родители нуждаются в финансовой поддержке. + .content = { "[bold]Привет Малыш,[/bold]" } + Это пишут твои родители: нам срочно нужны деньги! Правителство проверили наши налоги и теперь у нас долг в 100,000 кредитов! Просим помочь нам! Они принимают только подарочные карты, поэтому тебе нужно отправить нам 100 карт Биса по 1000 кредитов. + + отправь их сюда: + 50192 Спесс Лейн + Станция Сити, Ингиус 40195-243 + Гамма-Квадрант + Система Гуилимин + + Если мы не получим эти деньги, то через 10 дней придёт правительство и забирут наше семейное гнёздышко и мы станем бездомными. + + { "[bold]ещё раз спасибо, любим,[/bold]" } + { "[italic]твои родители[/italic]" } + +delivery-spam-12 = Присоединяйтесь к нам на первом рейсе! + .desc = Реклама расслабляющего путешествия. + .content = { "[head=2]Присоединяйтесь к нам на первом рейсе...[/head]" } + + ░█▄▀░█▄▀░░░█▀▄░█▀▀░▄▀▄░█▀█░█▄▀░█▀▀░█▀█░█▀▄ + ░█▀▄░█▀▄░░░█▀▀░█▀▀░█░█░█▀█░█▀▄░█░░░█░█░█▀▀ + ░▀░▀░▀░▀░░░▀░░░▀▀▀░▀░▀░▀░▀░▀░▀░▀▀▀░▀▀▀░▀░░ + + + { "[bold]══════════════════════════════════════════[/bold]" } + + Новейшие технологии Комфортех™ и самые захватывающие виды по эту сторону системы Иракси! [italic]КК Релаксор[/italic] — это современная яхта премиум-класса, которая отправит вас в путешествие всей вашей жизни! + + { "[head=3]Откройте для себя фосфорные озера Галимара*, наслаждаясь комфортом ЛюксКабин™, в которых имеются все современные удобства, о которых только можно мечтать![/head]" } + + { "[head=3]Созерцайте Око Космоса**, наслаждаясь блюдами от наших шеф-поваров уровня Пяти Звёзд Галактики![/head]" } + + { "[head=3]Исследуйте руины Агатара***, теперь открытые для публики благодаря помощи лучших учёных Nanotrasen. Все тайны древней Агатарской цивилизации раскопаны и выставлены для вашего удовольствия![/head]" } + + За невероятно низкую цену в 5000 кредитов за ночь, наш шестимесячный роскошный круиз может стать вашим для отпуска вашей мечты! Позвоните нам прямо сейчас по номеру [color=#00FF00]ОТДЫХ-ЩАС[/color] для бронирования. Чего же вы ждёте?! Звоните! + + + + + + + { "[italic]*Фосфорные озёра не предназначены для купания, после посадки на Галимар вы отказываетесь от всех прав на юридическое представительство по отношению к Relaxination Destinations.[/italic]" } + { "[italic]**В Око Космоса нельзя заглядывать более чем на пять секунд за раз. Вы не слышите зов Ока[/italic]" } + { "[italic]***Перед посадкой необходимо подписать отказ от претензий, Relaxination Destinations не гарантирует безопасность руин Агатары. Исчезновения экскурсионных групп сократились до приемлемой отметки в 0,23% от всех экскурсионных групп, посещающих руины.[/italic]" } + +delivery-spam-13 = бумага + .desc = Письмо редактору. + .content = Всем заинтересованным лицам, + + Легендарная серия книг «Приключения Иана и Алисы», обожаемая детьми и, как минимум, одной ящерицей-дислексиком (не переживайте, мне уже лучше). Однако в последней публикации допущена чудовищная ошибка, ведь Иан и Алиса НИКОГДА не ошибаются при написании. В книге «Приключения Иана и Алисы — арктическое путешествие храбрости и дружбы» оказались две строчки из «Приключения Иана и Алисы — исследование города». + Это лишено всякого смысла. Как Иан и Алиса нашли котёнка в Арктике? Что котёнок там делал? Почему Иан и Алиса делали БОЛЬШЕ, чем обычно, за день? А худшим косяком является вторая неправильная строчка: «Когда день перешёл в ночь, они были измотаны, но счастливы от своего приключения в городе» (Иан и Алиса, стр. 1). ОЙ, ПРОСТИТЕ!!! Я НЕ ЗНАЛ, ЧТО В АРКТИКЕ ЕСТЬ ГОРОД!!! В КОТОРЫЙ ОНИ ПРОСТО ТАК ПОПАЛИ. ЗАШЛИ ВЫПИТЬ КОФЕ. ОЙ, ПОГОДИТЕ!! КОФЕ УБИВАЕТ СОБАК И ЛИСИЧЕК!!!!!!!!! КТО БЫ ТАКОЕ ПУБЛИКОВАЛ!!!!! ВЫ ТОЛЬКО ЧТО УБИЛИ ИАНА И АЛИСУ!!!!!!!!!!!!!!!!!!! КАК ВЫ МОГЛИ!!!!!!!!!!!!!!!!!!! ВЫ МОНСТРЫ!!!!!!!!!!!!!!!!! + И ради чего вы убили Иана и Алису? Мм? Чтобы книга была чуть побольше? Нужна огромная книженция, да? Большие книги дороже продаются? Хотели срубить побольше денег? + ПОСМОТРИТЕ, ЧЕМ ЭТО ЗАКОНЧИЛОСЬ. ВЫ УБИЛИ ИХ ОБОИХ. ПОЗДРАВЛЯЮ. + НЕ БУДЕТ БОЛЬШЕ СИКВЕЛОВ. + И КАК ВАМ ТЕПЕРЬ ДЕЛАТЬ ДЕНЬГИ???? НИКАК???? + { "[bold]ТАК НЕ НАДО БЫЛО ИХ УБИВАТЬ!!!!!!!!!!!!!!![/bold]" } diff --git a/Resources/Locale/ru-RU/devices/device-network.ftl b/Resources/Locale/ru-RU/devices/device-network.ftl index 2d2d2c86f31..cc4991d6d60 100644 --- a/Resources/Locale/ru-RU/devices/device-network.ftl +++ b/Resources/Locale/ru-RU/devices/device-network.ftl @@ -55,3 +55,5 @@ device-net-id-apc = ЛКП device-net-id-atmos-devices = Атмос-устройства device-net-id-reserved = Резерв +# Unknown +device-address-unknown = ????-???? diff --git a/Resources/Locale/ru-RU/devices/network-configurator.ftl b/Resources/Locale/ru-RU/devices/network-configurator.ftl index 975032d978f..5b07888da30 100644 --- a/Resources/Locale/ru-RU/devices/network-configurator.ftl +++ b/Resources/Locale/ru-RU/devices/network-configurator.ftl @@ -24,12 +24,11 @@ network-configurator-link = Соединить network-configurator-title-saved-devices = Сохранённые устройства network-configurator-title-device-configuration = Конфигурация устройств network-configurator-ui-clear-button = Очистить -network-configurator-ui-count-label = - { $count } { $count -> - [one] устройство - [few] устройства - *[other] устройств - } +network-configurator-ui-count-label = { $count } { $count -> + [one] устройство + [few] устройства + *[other] устройств +} network-configurator-text-set = Установить network-configurator-text-add = Добавить @@ -52,8 +51,7 @@ network-configurator-examine-current-mode = Текущий режим: { $mode } network-configurator-examine-switch-modes = Нажмите { $key } чтобы переключить режим # item status -network-configurator-item-status-label = - Режим: { $mode } +network-configurator-item-status-label = Режим: { $mode } Переключить: { $keybinding } # command diff --git a/Resources/Locale/ru-RU/discord/watchlist-connections.ftl b/Resources/Locale/ru-RU/discord/watchlist-connections.ftl index abf49be765f..5cccd0a1cfc 100644 --- a/Resources/Locale/ru-RU/discord/watchlist-connections.ftl +++ b/Resources/Locale/ru-RU/discord/watchlist-connections.ftl @@ -2,16 +2,15 @@ discord-watchlist-connection-header = { $players } { $players -> [one] игрок в списке наблюдения подключился [few] игрока в списке наблюдения поключились - *[other] игроков в списке наблюдения подключились + *[other] игроков в списке наблюдения подключились } к { $serverName } -discord-watchlist-connection-entry = - - { $playerName } с сообщением "{ $message }"{ $expiry -> - [0] { "" } - *[other] { " " }(истекает ) - }{ $otherWatchlists -> - [0] { "" } - [one] { " " }и ещё { $otherWatchlists } наблюдением - [few] { " " }и ещё { $otherWatchlists } наблюдения - *[other] { " " }и ещё { $otherWatchlists } наблюдений - } +discord-watchlist-connection-entry = - { $playerName } с сообщением "{ $message }"{ $expiry -> + [0] { "" } + *[other] { " " }(истекает ) +}{ $otherWatchlists -> + [0] { "" } + [one] { " " }и ещё { $otherWatchlists } наблюдением + [few] { " " }и ещё { $otherWatchlists } наблюдения + *[other] { " " }и ещё { $otherWatchlists } наблюдений +} diff --git a/Resources/Locale/ru-RU/disease/disease.ftl b/Resources/Locale/ru-RU/disease/disease.ftl index 0b44dbcdbaf..e331d1ef29d 100644 --- a/Resources/Locale/ru-RU/disease/disease.ftl +++ b/Resources/Locale/ru-RU/disease/disease.ftl @@ -1 +1 @@ -disease-vomit = { CAPITALIZE($person) } тошнит. +disease-vomit = { CAPITALIZE($person) } тошнит. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/disease/miasma.ftl b/Resources/Locale/ru-RU/disease/miasma.ftl index 71fa21a27fb..887b99b72fb 100644 --- a/Resources/Locale/ru-RU/disease/miasma.ftl +++ b/Resources/Locale/ru-RU/disease/miasma.ftl @@ -13,23 +13,23 @@ perishable-3-nonmob = [color=red]{ CAPITALIZE(SUBJECT($target)) } выгляди ## Rotting rotting-rotting = [color=orange]{ CAPITALIZE(SUBJECT($target)) } { GENDER($target) -> - [male] гниёт - [female] гниёт - [epicene] гниют - *[neuter] гниёт - }![/color] + [male] гниёт + [female] гниёт + [epicene] гниют + *[neuter] гниёт +}![/color] rotting-bloated = [color=orangered]{ CAPITALIZE(SUBJECT($target)) } { GENDER($target) -> - [male] вздулся - [female] вздулась - [epicene] вздулись - *[neuter] вздулось - }![/color] + [male] вздулся + [female] вздулась + [epicene] вздулись + *[neuter] вздулось +}![/color] rotting-extremely-bloated = [color=red]{ CAPITALIZE(SUBJECT($target)) } сильно { GENDER($target) -> - [male] вздулся - [female] вздулась - [epicene] вздулись - *[neuter] вздулось - }![/color] + [male] вздулся + [female] вздулась + [epicene] вздулись + *[neuter] вздулось +}![/color] rotting-rotting-nonmob = [color=orange]{ CAPITALIZE(SUBJECT($target)) } гниёт![/color] rotting-bloated-nonmob = [color=orangered]{ CAPITALIZE(SUBJECT($target)) } вздулось![/color] diff --git a/Resources/Locale/ru-RU/disposal/tube-connections-command.ftl b/Resources/Locale/ru-RU/disposal/tube-connections-command.ftl index fe6d0b7c637..fe6a6ee86f1 100644 --- a/Resources/Locale/ru-RU/disposal/tube-connections-command.ftl +++ b/Resources/Locale/ru-RU/disposal/tube-connections-command.ftl @@ -1,2 +1,2 @@ tube-connections-command-description = Показывает все направления, в которых может соединяться труба. -tube-connections-command-help-text = Использование: { $command } +tube-connections-command-help-text = Использование: { $command } \ No newline at end of file diff --git a/Resources/Locale/ru-RU/disposal/tube/components/disposal-tube-component.ftl b/Resources/Locale/ru-RU/disposal/tube/components/disposal-tube-component.ftl index 8538dd52fda..391dbd21c2d 100644 --- a/Resources/Locale/ru-RU/disposal/tube/components/disposal-tube-component.ftl +++ b/Resources/Locale/ru-RU/disposal/tube/components/disposal-tube-component.ftl @@ -2,4 +2,4 @@ disposal-tube-component-popup-directions-text = { $directions } ## TubeDirectionVerb -tube-direction-verb-get-data-text = Направления труб +tube-direction-verb-get-data-text = Направления труб \ No newline at end of file diff --git a/Resources/Locale/ru-RU/doors/components/airlock-component.ftl b/Resources/Locale/ru-RU/doors/components/airlock-component.ftl index 9356c9920fc..9b8468f6246 100644 --- a/Resources/Locale/ru-RU/doors/components/airlock-component.ftl +++ b/Resources/Locale/ru-RU/doors/components/airlock-component.ftl @@ -1,4 +1,4 @@ ## AirlockComponent airlock-component-cannot-pry-is-bolted-message = Болты шлюза препятствуют его открыванию! -airlock-component-cannot-pry-is-powered-message = Включённые приводы шлюза не позволяют вам этого сделать! +airlock-component-cannot-pry-is-powered-message = Включённые приводы шлюза не позволяют вам этого сделать! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/doors/door.ftl b/Resources/Locale/ru-RU/doors/door.ftl index e278d32f475..ddf4c57c9f8 100644 --- a/Resources/Locale/ru-RU/doors/door.ftl +++ b/Resources/Locale/ru-RU/doors/door.ftl @@ -1 +1 @@ -door-pry = Вскрыть дверь +door-pry = Вскрыть дверь \ No newline at end of file diff --git a/Resources/Locale/ru-RU/drag-drop/drag-drop-system.ftl b/Resources/Locale/ru-RU/drag-drop/drag-drop-system.ftl index 15dcb3b2863..90c747967ed 100644 --- a/Resources/Locale/ru-RU/drag-drop/drag-drop-system.ftl +++ b/Resources/Locale/ru-RU/drag-drop/drag-drop-system.ftl @@ -1 +1 @@ -drag-drop-system-out-of-range-text = Вы не можете туда достать! +drag-drop-system-out-of-range-text = Вы не можете туда достать! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/electrocution/electrocuted-component.ftl b/Resources/Locale/ru-RU/electrocution/electrocuted-component.ftl index 73d0ca7ac0a..73418bd39c2 100644 --- a/Resources/Locale/ru-RU/electrocution/electrocuted-component.ftl +++ b/Resources/Locale/ru-RU/electrocution/electrocuted-component.ftl @@ -1,3 +1,3 @@ electrocuted-component-mob-shocked-by-source-popup-others = { CAPITALIZE($source) } шокирует { $mob }! electrocuted-component-mob-shocked-popup-others = { CAPITALIZE($mob) } шокирован! -electrocuted-component-mob-shocked-popup-player = Вы чувствуете мощный удар, проходящий через ваше тело! +electrocuted-component-mob-shocked-popup-player = Вы чувствуете мощный удар, проходящий через ваше тело! diff --git a/Resources/Locale/ru-RU/entity-systems/bin-system/bin-system.ftl b/Resources/Locale/ru-RU/entity-systems/bin-system/bin-system.ftl new file mode 100644 index 00000000000..5829fb67753 --- /dev/null +++ b/Resources/Locale/ru-RU/entity-systems/bin-system/bin-system.ftl @@ -0,0 +1,5 @@ +bin-component-on-examine-text = Похоже, осталось { $count } { $count -> + [one] штука + [few] штуки + *[other] штук +}. diff --git a/Resources/Locale/ru-RU/entity-systems/bin/bin-system.ftl b/Resources/Locale/ru-RU/entity-systems/bin/bin-system.ftl deleted file mode 100644 index a08ae1bdca0..00000000000 --- a/Resources/Locale/ru-RU/entity-systems/bin/bin-system.ftl +++ /dev/null @@ -1,6 +0,0 @@ -bin-component-on-examine-text = - Похоже, осталось { $count } { $count -> - [one] штука - [few] штуки - *[other] штук - }. diff --git a/Resources/Locale/ru-RU/escape-menu/ui/escape-menu.ftl b/Resources/Locale/ru-RU/escape-menu/ui/escape-menu.ftl index f353f68737e..b1f243c7148 100644 --- a/Resources/Locale/ru-RU/escape-menu/ui/escape-menu.ftl +++ b/Resources/Locale/ru-RU/escape-menu/ui/escape-menu.ftl @@ -7,4 +7,4 @@ ui-escape-guidebook = Руководство ui-escape-wiki = Wiki ui-escape-disconnect = Отключиться ui-escape-quit = Выйти - +ui-escape-feedback = Feedback diff --git a/Resources/Locale/ru-RU/escape-menu/ui/options-menu.ftl b/Resources/Locale/ru-RU/escape-menu/ui/options-menu.ftl index 0dbee712f32..508b60b306a 100644 --- a/Resources/Locale/ru-RU/escape-menu/ui/options-menu.ftl +++ b/Resources/Locale/ru-RU/escape-menu/ui/options-menu.ftl @@ -88,19 +88,17 @@ ui-options-vp-stretch = Растянуть изображение для соо ui-options-vp-scale = Фиксированный масштаб окна игры: ui-options-vp-scale-value = x{ $scale } ui-options-vp-integer-scaling = Использовать целочисленное масштабирование (может вызывать появление чёрных полос/обрезания) -ui-options-vp-integer-scaling-tooltip = - Если эта опция включена, область просмотра будет масштабироваться, - используя целочисленное значение при определённых разрешениях. Хотя это и - приводит к чётким текстурам, это часто означает, что сверху/снизу экрана будут - чёрные полосы или что часть окна не будет видна. +ui-options-vp-integer-scaling-tooltip = Если эта опция включена, область просмотра будет масштабироваться, + используя целочисленное значение при определённых разрешениях. Хотя это и + приводит к чётким текстурам, это часто означает, что сверху/снизу экрана будут + чёрные полосы или что часть окна не будет видна. ui-options-filter-label = Фильтр масштабирования: ui-options-filter-nearest = Ближайший (без сглаживания) ui-options-filter-bilinear = Билинейный (сглаживание) ui-options-vp-vertical-fit = Подгон окна просмотра по вертикали -ui-options-vp-vertical-fit-tooltip = - Когда функция включена, основное окно просмотра не будет учитывать горизонтальную ось - при подгонке под ваш экран. Если ваш экран меньше, чем окно просмотра, - то это приведёт к его обрезанию по горизонтальной оси. +ui-options-vp-vertical-fit-tooltip = Когда функция включена, основное окно просмотра не будет учитывать горизонтальную ось + при подгонке под ваш экран. Если ваш экран меньше, чем окно просмотра, + то это приведёт к его обрезанию по горизонтальной оси. ui-options-vp-low-res = Изображение низкого разрешения ui-options-parallax-low-quality = Низкокачественный параллакс (фон) ui-options-ambient-occlusion = Отображать окружающее затенение @@ -110,6 +108,9 @@ ui-options-hud-layout = Тип HUD: ## Controls menu +ui-options-hold-to-attack-melee = Hold to attack (melee) +ui-options-hold-to-attack-ranged = Hold to attack (ranged) + ui-options-binds-reset-all = Сбросить ВСЕ привязки ui-options-binds-explanation = ЛКМ — изменить кнопку, ПКМ — убрать кнопку ui-options-unbound = Пусто @@ -326,37 +327,32 @@ ui-options-function-text-complete-prev = Complete previous ui-options-net-predict = Предугадывание на стороне клиента ui-options-net-interp-ratio = Сетевое сглаживание -ui-options-net-interp-ratio-tooltip = - Увеличение этого параметра, как правило, делает игру +ui-options-net-interp-ratio-tooltip = Увеличение этого параметра, как правило, делает игру более устойчивой к потере пакетов, однако при этом это так же добавляет немного больше задержки и требует от клиента предсказывать больше будущих тиков. ui-options-net-predict-tick-bias = Погрешность тиков предугадывания -ui-options-net-predict-tick-bias-tooltip = - Увеличение этого параметра, как правило, делает игру более устойчивой +ui-options-net-predict-tick-bias-tooltip = Увеличение этого параметра, как правило, делает игру более устойчивой к потере пакетов между клиентом и сервером, однако при этом немного возрастает задержка, и клиенту требуется предугадывать больше будущих тиков ui-options-net-pvs-spawn = Лимит появление PVS сущностей -ui-options-net-pvs-spawn-tooltip = - Ограничение частоты отправки новых появившихся сущностей сервером на клиент. - Снижение этого параметра может помочь уменьшить "захлёбывания", - вызываемые спавном сущностей, но может привести к их резкому появлению. +ui-options-net-pvs-spawn-tooltip = Ограничение частоты отправки новых появившихся сущностей сервером на клиент. + Снижение этого параметра может помочь уменьшить "захлёбывания", + вызываемые спавном сущностей, но может привести к их резкому появлению. ui-options-net-pvs-entry = Лимит PVS сущностей -ui-options-net-pvs-entry-tooltip = - Ограничение частоты отправки новых видимых сущностей сервером на клиент. - Снижение этого параметра может помочь уменьшить "захлёбывания", - вызываемые спавном сущностей, но может привести к их резкому появлению. +ui-options-net-pvs-entry-tooltip = Ограничение частоты отправки новых видимых сущностей сервером на клиент. + Снижение этого параметра может помочь уменьшить "захлёбывания", + вызываемые спавном сущностей, но может привести к их резкому появлению. ui-options-net-pvs-leave = Частота удаления PVS -ui-options-net-pvs-leave-tooltip = - Ограничение частоты, с которой клиент будет удалять - сущности вне поля зрения. Снижение этого параметра может помочь - уменьшить "захлёбывания" при ходьбе, но иногда может - привести к неправильным предугадываниям и другим проблемам. +ui-options-net-pvs-leave-tooltip = Ограничение частоты, с которой клиент будет удалять + сущности вне поля зрения. Снижение этого параметра может помочь + уменьшить "захлёбывания" при ходьбе, но иногда может + привести к неправильным предугадываниям и другим проблемам. ## Toggle window console command cmd-options-desc = Открывает меню опций, опционально с конкретно выбранной вкладкой. diff --git a/Resources/Locale/ru-RU/fax/fax.ftl b/Resources/Locale/ru-RU/fax/fax.ftl index 3bf28c44df6..50eb102882b 100644 --- a/Resources/Locale/ru-RU/fax/fax.ftl +++ b/Resources/Locale/ru-RU/fax/fax.ftl @@ -26,3 +26,10 @@ fax-machine-ui-paper-not-inserted = Нет бумаги fax-machine-chat-notify = Получено новое сообщение с "{ $fax }" факса fax-machine-printed-paper-name = распечатанная бумага + +fax-machine-sender-info = + ───────────────────────────────────── + Fax sent + from: { $sender_name } [address: { $sender_addr }] + to: { $recipient_name } [address: { $recipient_addr }] + at: { $time } diff --git a/Resources/Locale/ru-RU/feedbackpopup/feedbackpopup.ftl b/Resources/Locale/ru-RU/feedbackpopup/feedbackpopup.ftl new file mode 100644 index 00000000000..078cda0b02f --- /dev/null +++ b/Resources/Locale/ru-RU/feedbackpopup/feedbackpopup.ftl @@ -0,0 +1,28 @@ +feedbackpopup-window-name = Request for feedback + +feedbackpopup-control-button-text = Open Link + +feedbackpopup-control-total-surveys = {$num -> + [one] { $num } entry + *[other] { $num } entries +} +feedbackpopup-control-no-entries= No entries +feedbackpopup-control-ui-footer = Let us know what you think! + +# Command strings +command-description-openfeedbackpopup = Opens the feedback popup window. +command-description-feedback-show = Opens the feedback popup window for the given sessions. +command-description-feedback-add = Adds a feedback popup prototype to the given clients and opens the popup window if the client didn't already have the prototype listed. +command-description-feedback-remove = Removes a feedback popup prototype from the given clients. + +feedbackpopup-give-command-name = givefeedbackpopup +feedbackpopup-show-command-name = showfeedbackpopup +cmd-givefeedbackpopup-desc = Gives the targeted player a feedback popup. +cmd-givefeedbackpopup-help = Usage: givefeedbackpopup +cmd-showfeedbackpopup-desc = Open the feedback popup window. +cmd-showfeedbackpopup-help = Usage: showfeedbackpopup +feedbackpopup-command-error-invalid-proto = Invalid feedback popup prototype. +feedbackpopup-command-error-popup-send-fail = Failed to send popup! There probably isn't a mind attached to the given entity. +feedbackpopup-command-success = Sent popup! +feedbackpopup-command-hint-playerUid = +feedbackpopup-command-hint-protoId = diff --git a/Resources/Locale/ru-RU/foldable/components/foldable-component.ftl b/Resources/Locale/ru-RU/foldable/components/foldable-component.ftl index c4da62959c1..a51ce1a9eae 100644 --- a/Resources/Locale/ru-RU/foldable/components/foldable-component.ftl +++ b/Resources/Locale/ru-RU/foldable/components/foldable-component.ftl @@ -13,4 +13,4 @@ fold-zip-verb = Застегнуть fold-unzip-verb = Расстегнуть fold-verb-clothing-jacket = Снять куртку -unfold-verb-clothing-jacket = Надеть куртку +unfold-verb-clothing-jacket = Надеть куртку \ No newline at end of file diff --git a/Resources/Locale/ru-RU/forensics/fibers.ftl b/Resources/Locale/ru-RU/forensics/fibers.ftl index 829c16b2fda..df5e611bf61 100644 --- a/Resources/Locale/ru-RU/forensics/fibers.ftl +++ b/Resources/Locale/ru-RU/forensics/fibers.ftl @@ -28,5 +28,3 @@ fibers-regal-blue = королевские синие fibers-olive = оливковые fibers-silver = серебряные fibers-gold = золотые -fibers-maroon = бордовые -fibers-pink = розовые diff --git a/Resources/Locale/ru-RU/forensics/residues.ftl b/Resources/Locale/ru-RU/forensics/residues.ftl index 6e8713e0d65..4f9cd32dc80 100644 --- a/Resources/Locale/ru-RU/forensics/residues.ftl +++ b/Resources/Locale/ru-RU/forensics/residues.ftl @@ -8,4 +8,4 @@ residue-green = зелёные residue-blue = синие residue-red = красные residue-grey = серые -residue-brown = коричневые +residue-brown = коричневые \ No newline at end of file diff --git a/Resources/Locale/ru-RU/game-ticking/game-presets/preset-allatonce.ftl b/Resources/Locale/ru-RU/game-ticking/game-presets/preset-allatonce.ftl index 8251976a3cb..72d3758c827 100644 --- a/Resources/Locale/ru-RU/game-ticking/game-presets/preset-allatonce.ftl +++ b/Resources/Locale/ru-RU/game-ticking/game-presets/preset-allatonce.ftl @@ -2,4 +2,4 @@ all-at-once-title = Всё и сразу all-at-once-description = Это просто не ваш день... aller-at-once-title = Ещё больше и сразу -aller-at-once-description = Теперь вы облажались. Вы *уже* облажались. +aller-at-once-description = Теперь вы облажались. Вы *уже* облажались. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/game-ticking/game-presets/preset-revolutionary.ftl b/Resources/Locale/ru-RU/game-ticking/game-presets/preset-revolutionary.ftl index 99f34956d12..f9bf4e6efb0 100644 --- a/Resources/Locale/ru-RU/game-ticking/game-presets/preset-revolutionary.ftl +++ b/Resources/Locale/ru-RU/game-ticking/game-presets/preset-revolutionary.ftl @@ -19,13 +19,12 @@ head-rev-break-mindshield = Имплант "Щит разума" был унич roles-antag-rev-name = Революционер roles-antag-rev-objective = Ваша задача — защищать и выполнять приказы глав революции и помочь им захватить станцию, устранив всех членов командования. -rev-break-control = - { $name } { GENDER($name) -> - [male] вспомнил, кому он верен - [female] вспомнила, кому она верна - [epicene] вспомнили, кому они верни - *[neuter] вспомнило, кому оно верно - } на самом деле! +rev-break-control = { $name } { GENDER($name) -> + [male] вспомнил, кому он верен + [female] вспомнила, кому она верна + [epicene] вспомнили, кому они верни + *[neuter] вспомнило, кому оно верно +} на самом деле! rev-role-greeting = Вы — Революционер. Вам поручено защищать глав революции и помогать им захватить станцию. @@ -51,29 +50,28 @@ rev-stalemate = И командование и главы революции п rev-reverse-stalemate = И командование и главы революции выжили. -rev-headrev-count = - { $initialCount -> - [one] Глава революции был один: - *[other] Глав революции было { $initialCount }: - } +rev-headrev-count = { $initialCount -> + [one] Глава революции был один: + *[other] Глав революции было { $initialCount }: +} rev-headrev-name-user = [color=#5e9cff]{ $name }[/color] ([color=gray]{ $username }[/color]) конвертировал { $count } { $count -> - [one] члена - [few] члена - *[other] членов - } экипажа + [one] члена + [few] члена + *[other] членов +} экипажа rev-headrev-name = [color=#5e9cff]{ $name }[/color] конвертировал { $count } { $count -> - [one] члена - [few] члена - *[other] членов - } экипажа + [one] члена + [few] члена + *[other] членов +} экипажа ## Deconverted window rev-deconverted-title = Разконвертированы! rev-deconverted-text = Со смертью последнего главы революции, революция оканчивается. - + Вы больше не революционер, так что ведите себя хорошо. rev-deconverted-confirm = Подтвердить diff --git a/Resources/Locale/ru-RU/game-ticking/game-presets/preset-survival.ftl b/Resources/Locale/ru-RU/game-ticking/game-presets/preset-survival.ftl index 833e13b6ec4..7f02ca51738 100644 --- a/Resources/Locale/ru-RU/game-ticking/game-presets/preset-survival.ftl +++ b/Resources/Locale/ru-RU/game-ticking/game-presets/preset-survival.ftl @@ -2,4 +2,4 @@ survival-title = Выживание survival-description = Внутренние угрозы отсутствуют, но как долго станция сможет продержаться в обстановке всё более разрушительных и частых событий? kessler-syndrome-title = Синдром Кесслера -kessler-syndrome-description = Внутренних угроз нет, но станция быстро движется в пояс метеоров! +kessler-syndrome-description = Внутренних угроз нет, но станция быстро движется в пояс метеоров! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/game-ticking/game-presets/preset-wizard.ftl b/Resources/Locale/ru-RU/game-ticking/game-presets/preset-wizard.ftl index 609c3ae3942..16b58aa44c3 100644 --- a/Resources/Locale/ru-RU/game-ticking/game-presets/preset-wizard.ftl +++ b/Resources/Locale/ru-RU/game-ticking/game-presets/preset-wizard.ftl @@ -12,19 +12,19 @@ survivor-role-greeting = survivor-round-end-dead-count = { $deadCount -> [one] [color=red]{ $deadCount }[/color] выживший умер. - *[other] [color=red]{ $deadCount }[/color] выживших умерло. + *[other] [color=red]{ $deadCount }[/color] выживших умерло. } survivor-round-end-alive-count = { $aliveCount -> [one] [color=yellow]{ $aliveCount }[/color] выживший остался на станции. - *[other] [color=yellow]{ $aliveCount }[/color] выживших осталось на станции. + *[other] [color=yellow]{ $aliveCount }[/color] выживших осталось на станции. } survivor-round-end-alive-on-shuttle-count = { $aliveCount -> [one] [color=green]{ $aliveCount }[/color] выживший выбрался живым. - *[other] [color=green]{ $aliveCount }[/color] выживших выбралось живыми. + *[other] [color=green]{ $aliveCount }[/color] выживших выбралось живыми. } ## Wizard diff --git a/Resources/Locale/ru-RU/game-ticking/game-presets/preset-xenoborgs.ftl b/Resources/Locale/ru-RU/game-ticking/game-presets/preset-xenoborgs.ftl index 3108c1678fb..135ec524c39 100644 --- a/Resources/Locale/ru-RU/game-ticking/game-presets/preset-xenoborgs.ftl +++ b/Resources/Locale/ru-RU/game-ticking/game-presets/preset-xenoborgs.ftl @@ -1,9 +1,9 @@ xenoborgs-title = Ксеноборги xenoborgs-description = Материнский корабль ксеноборгов был обнаружен около станции. Не дайте им превратить каждое разумное существо в ксеноборга. -xenoborgs-welcome = Вы - ксеноборг. Защищайте ядро материнского корабля и помогайте ему создавать ещё больше ксеноборгов, пока вы не превратите все углеродные формы жизни в синтетиков. +xenoborgs-welcome = Вы — ксеноборг. Защищайте ядро материнского корабля и помогайте ему создавать ещё больше ксеноборгов, пока вы не превратите все углеродные формы жизни в синтетиков. -mothership-welcome = Вы - ядро материнского корабля. Направляйте ксеноборгов, чтобы они приносили вам материалы и мозги с сознанием для создания армии ксеноборгов и превратить все углеродные формы жизни в синтетиков. +mothership-welcome = Вы — ядро материнского корабля. Направляйте ксеноборгов, чтобы они приносили вам материалы и мозги с сознанием для создания армии ксеноборгов и превратить все углеродные формы жизни в синтетиков. xenoborg-shuttle-call = Мы обнаружили, что ксеноборги захватили станцию. Отправляем эвакуационный шаттл для подбора оставшегося персонала. diff --git a/Resources/Locale/ru-RU/game-ticking/game-presets/preset-zombies.ftl b/Resources/Locale/ru-RU/game-ticking/game-presets/preset-zombies.ftl index 800be9a4369..5b092544497 100644 --- a/Resources/Locale/ru-RU/game-ticking/game-presets/preset-zombies.ftl +++ b/Resources/Locale/ru-RU/game-ticking/game-presets/preset-zombies.ftl @@ -16,11 +16,10 @@ zombie-alone = Вы чувствуете себя совершенно один zombie-shuttle-call = Мы зафиксировали, что зомби захватили станцию. Аварийный шаттл был отправлен для эвакуации оставшегося персонала. -zombie-round-end-initial-count = - { $initialCount -> - [one] Единственным нулевым пациентом был: - *[other] Нулевых пациентов было { $initialCount }, ими были: - } +zombie-round-end-initial-count = { $initialCount -> + [one] Единственным нулевым пациентом был: + *[other] Нулевых пациентов было { $initialCount }, ими были: +} zombie-round-end-user-was-initial = - [color=plum]{ $name }[/color] ([color=gray]{ $username }[/color]) был одним из нулевых пациентов. zombie-round-end-amount-none = [color=green]Все зомби были уничтожены![/color] @@ -29,9 +28,8 @@ zombie-round-end-amount-medium = [color=yellow]{ $percent }% экипажа бы zombie-round-end-amount-high = [color=crimson]{ $percent }% экипажа были обращены в зомби.[/color] zombie-round-end-amount-all = [color=darkred]Весь экипаж обратился в зомби![/color] -zombie-round-end-survivor-count = - { $count -> - [one] Единственным выжившим стал: - *[other] Осталось всего { $count } выживших, это: - } +zombie-round-end-survivor-count = { $count -> + [one] Единственным выжившим стал: + *[other] Осталось всего { $count } выживших, это: +} zombie-round-end-user-was-survivor = - [color=White]{ $name }[/color] ([color=gray]{ $username }[/color]) пережил заражение. diff --git a/Resources/Locale/ru-RU/game-ticking/game-rules/rule-death-match.ftl b/Resources/Locale/ru-RU/game-ticking/game-rules/rule-death-match.ftl index 3b0df62a381..f3b8b677af0 100644 --- a/Resources/Locale/ru-RU/game-ticking/game-rules/rule-death-match.ftl +++ b/Resources/Locale/ru-RU/game-ticking/game-rules/rule-death-match.ftl @@ -1,3 +1,3 @@ rule-death-match-added-announcement = Теперь игра превратилась в бой насмерть. Убейте всех остальных, чтобы победить! rule-death-match-check-winner-stalemate = Все мертвы, это патовая ситуация! -rule-death-match-check-winner = { $winner } побеждает в смертельном матче! +rule-death-match-check-winner = { $winner } побеждает в смертельном матче! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/game-ticking/game-rules/rule-traitor.ftl b/Resources/Locale/ru-RU/game-ticking/game-rules/rule-traitor.ftl index 91d306ba68d..fd81ab46b04 100644 --- a/Resources/Locale/ru-RU/game-ticking/game-rules/rule-traitor.ftl +++ b/Resources/Locale/ru-RU/game-ticking/game-rules/rule-traitor.ftl @@ -1 +1 @@ -rule-traitor-added-announcement = Здравствуйте, экипаж! Хорошей смены! +rule-traitor-added-announcement = Здравствуйте, экипаж! Хорошей смены! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/game-ticking/game-rules/rules.ftl b/Resources/Locale/ru-RU/game-ticking/game-rules/rules.ftl index 635ea73cb32..224e5ea3f3c 100644 --- a/Resources/Locale/ru-RU/game-ticking/game-rules/rules.ftl +++ b/Resources/Locale/ru-RU/game-ticking/game-rules/rules.ftl @@ -1,16 +1,14 @@ # General -rule-restarting-in-seconds = - Перезапуск через { $seconds } { $seconds -> - [one] секунду - [few] секунды - *[other] секунд - }. +rule-restarting-in-seconds = Перезапуск через { $seconds } { $seconds -> + [one] секунду + [few] секунды + *[other] секунд +}. rule-time-has-run-out = Время вышло! # Respawning -rule-respawn-in-seconds = - Возрождение через { $second } { $second -> - [one] секунду - [few] секунды - *[other] секунд - }... +rule-respawn-in-seconds = Возрождение через { $second } { $second -> + [one] секунду + [few] секунды + *[other] секунд +}... diff --git a/Resources/Locale/ru-RU/game-ticking/game-ticker.ftl b/Resources/Locale/ru-RU/game-ticking/game-ticker.ftl index 34f75104071..50b025b6204 100644 --- a/Resources/Locale/ru-RU/game-ticking/game-ticker.ftl +++ b/Resources/Locale/ru-RU/game-ticking/game-ticker.ftl @@ -8,20 +8,18 @@ game-ticker-delay-start = Начало раунда было отложено н game-ticker-pause-start = Начало раунда было приостановлено. game-ticker-pause-start-resumed = Отсчёт начала раунда возобновлён. game-ticker-player-join-game-message = Добро пожаловать на Космическую Станцию 14! Если вы играете впервые, обязательно нажмите ESC на клавиатуре и прочитайте правила игры, а также не бойтесь просить помощи в "Админ помощь". -game-ticker-get-info-text = - Привет и добро пожаловать в [color=white]Space Station 14![/color] - Текущий раунд: [color=white]#{ $roundId }[/color] - Текущее количество игроков: [color=white]{ $playerCount }[/color] - Текущая карта: [color=white]{ $mapName }[/color] - Текущий режим игры: [color=white]{ $gmTitle }[/color] - >[color=yellow]{ $desc }[/color] -game-ticker-get-info-preround-text = - Привет и добро пожаловать в [color=white]Space Station 14![/color] +game-ticker-get-info-text = Привет и добро пожаловать в [color=white]Space Station 14![/color] + Текущий раунд: [color=white]#{ $roundId }[/color] + Текущее количество игроков: [color=white]{ $playerCount }[/color] + Текущая карта: [color=white]{ $mapName }[/color] + Текущий режим игры: [color=white]{ $gmTitle }[/color] + >[color=yellow]{ $desc }[/color] +game-ticker-get-info-preround-text = Привет и добро пожаловать в [color=white]Space Station 14![/color] Текущий раунд: [color=white]#{ $roundId }[/color] Текущее количество игроков: [color=white]{ $playerCount }[/color] ([color=white]{ $readyCount }[/color] { $readyCount -> - [one] готов - *[other] готовы - }) + [one] готов + *[other] готовы +}) Текущая карта: [color=white]{ $mapName }[/color] Текущий режим игры: [color=white]{ $gmTitle }[/color] >[color=yellow]{ $desc }[/color] @@ -35,13 +33,12 @@ player-first-join-message = Игрок { $name } зашёл на сервер в # Displayed in chat to admins when a player leaves player-leave-message = Игрок { $name } вышел! -latejoin-arrival-announcement = - { $character } ({ $job }) { GENDER($entity) -> - [male] прибыл - [female] прибыла - [epicene] прибыли - *[neuter] прибыло - } на станцию! +latejoin-arrival-announcement = { $character } ({ $job }) { GENDER($entity) -> + [male] прибыл + [female] прибыла + [epicene] прибыли + *[neuter] прибыло +} на станцию! latejoin-arrival-announcement-special = { $job } { $character } на палубе! latejoin-arrival-sender = Станции latejoin-arrivals-direction = Вскоре прибудет шаттл, который доставит вас на станцию. diff --git a/Resources/Locale/ru-RU/game-ticking/set-game-preset-command.ftl b/Resources/Locale/ru-RU/game-ticking/set-game-preset-command.ftl index ff6c774be5c..b13c7f95c17 100644 --- a/Resources/Locale/ru-RU/game-ticking/set-game-preset-command.ftl +++ b/Resources/Locale/ru-RU/game-ticking/set-game-preset-command.ftl @@ -9,15 +9,13 @@ set-game-preset-preset-error = Не удаётся найти игровой п set-game-preset-decoy-error = Если третий аргумент предоставлен, он должен быть валидным пресетом. Не удаётся найти игровой пресет "{ $preset }" #set-game-preset-preset-set = Set game preset to "{$preset}" -set-game-preset-preset-set-finite = - Установлен пресет "{ $preset }" на { $rounds -> - [one] следующий раунд - [few] следующие { $rounds } раунда - *[other] следующие { $rounds } раундов - }. -set-game-preset-preset-set-finite-with-decoy = - Установлен пресет "{ $preset }" на { $rounds -> - [one] следующий раунд - [few] следующие { $rounds } раунда - *[other] следующие { $rounds } раундов - }, отображая в лобби { $decoy }. +set-game-preset-preset-set-finite = Установлен пресет "{ $preset }" на { $rounds -> + [one] следующий раунд + [few] следующие { $rounds } раунда + *[other] следующие { $rounds } раундов +}. +set-game-preset-preset-set-finite-with-decoy = Установлен пресет "{ $preset }" на { $rounds -> + [one] следующий раунд + [few] следующие { $rounds } раунда + *[other] следующие { $rounds } раундов +}, отображая в лобби { $decoy }. diff --git a/Resources/Locale/ru-RU/ghost/ghost-gui.ftl b/Resources/Locale/ru-RU/ghost/ghost-gui.ftl index e573b88650d..c7914ce1a66 100644 --- a/Resources/Locale/ru-RU/ghost/ghost-gui.ftl +++ b/Resources/Locale/ru-RU/ghost/ghost-gui.ftl @@ -22,13 +22,13 @@ ghost-roles-window-raffle-in-progress-button = Участвовать в лотерее (Осталось { $time }, { $players -> [one] { $players } игрок [few] { $players } игрока - *[other] { $players } игроков + *[other] { $players } игроков }) ghost-roles-window-leave-raffle-button = Покинуть (Осталось { $time }, { $players -> [one] { $players } игрок [few] { $players } игрока - *[other] { $players } игроков + *[other] { $players } игроков }) ghost-roles-window-request-role-button = Запросить ghost-roles-window-request-role-button-timer = Запросить ({ $time }сек.) diff --git a/Resources/Locale/ru-RU/ghost/roles/ghost-role-component.ftl b/Resources/Locale/ru-RU/ghost/roles/ghost-role-component.ftl index ea6607b521d..0911f9a88a2 100644 --- a/Resources/Locale/ru-RU/ghost/roles/ghost-role-component.ftl +++ b/Resources/Locale/ru-RU/ghost/roles/ghost-role-component.ftl @@ -1,40 +1,33 @@ # also used in MakeGhostRuleWindow and MakeGhostRoleCommand -ghost-role-component-default-rules = - Все стандартные правила применяются, если администратор не сказал вам обратное. - Вы не помните ничего из своей предыдущей жизни и не помните ничего из того, что узнали, будучи призраком. - Вам разрешается помнить знания об игре в целом, например, как готовить, как использовать предметы и т.д. - Вам [color=red]НЕ[/color] разрешается помнить или говорить имя, внешность и т.д. вашего предыдущего персонажа. -ghost-role-information-nonantagonist-rules = - Вы — [color={ role-type-crew-aligned-alternate-color }][bold]{ role-type-crew-aligned-name }[/bold][/color]. Поэтому вы не должны стремиться причинить вред станции и её экипажу. - Вы не помните ничего из своей предыдущей жизни и не помните ничего из того, что узнали, будучи призраком. - Вам разрешено помнить знания об игре в целом, например, как готовить, как использовать предметы и т.д. - Вам [color=red]НЕ[/color] разрешается помнить или говорить имя, внешность и т.д. вашего предыдущего персонажа. -ghost-role-information-freeagent-rules = - Вы — [color={ role-type-free-agent-color }][bold]{ role-type-free-agent-name }[/bold][/color]. Вы вольны действовать как антагонист или неантагонист. - Вы не помните ничего из своей предыдущей жизни и не помните ничего из того, что узнали, будучи призраком. - Вам разрешено помнить знания об игре в целом, например, как готовить, как использовать предметы и т.д. - Вам [color=red]НЕ[/color] разрешается помнить или говорить имя, внешность и т.д. вашего предыдущего персонажа. -ghost-role-information-antagonist-rules = - Вы — [color={ role-type-solo-antagonist-color }][bold]{ role-type-solo-antagonist-name }[/bold][/color]. Ваши намерения ясны, и они несут вред станции и её экипажу. - Вы не помните ничего из своей предыдущей жизни и не помните ничего из того, что узнали, будучи призраком. - Вам разрешено помнить знания об игре в целом, например, как готовить, как использовать предметы и т.д. - Вам [color=red]НЕ[/color] разрешается помнить или говорить имя, внешность и т.д. вашего предыдущего персонажа. -ghost-role-information-rules-team-antagonist = - Вы — [color={ role-type-team-antagonist-color }][bold]{ role-type-team-antagonist-name }[/bold][/color]. Ваши намерения ясны, и они несут вред станции и её экипажу. - Вы должны [bold]работать сообща со своей командой[/bold] или следовать разумным указаниям лидеров вашей команды. - Вы не помните ничего из своей предыдущей жизни и не помните ничего из того, что узнали, будучи призраком. - Вам разрешено помнить знания об игре в целом, например, как готовить, как использовать предметы и т.д. - Вам [color=red]НЕ[/color] разрешается помнить или говорить имя, внешность и т.д. вашего предыдущего персонажа. -ghost-role-information-familiar-rules = - Вы — [color={ role-type-familiar-color }][bold]{ role-type-familiar-name }[/bold][/color]. Служите интересам своего хозяина, какими бы они ни были. - Вы не помните ничего из своей предыдущей жизни и не помните ничего из того, что узнали, будучи призраком. - Вам разрешено помнить знания об игре в целом, например, как готовить, как использовать предметы и т.д. - Вам [color=red]НЕ[/color] разрешается помнить или говорить имя, внешность и т.д. вашего предыдущего персонажа. -ghost-role-information-silicon-rules = - Вы — [color={ role-type-silicon-color }][bold]{ role-type-silicon-name }[/bold][/color]. Подчиняйтесь своим законам. Если вы не связаны никакими законами, вы — { role-type-free-agent-name }. - Вы не помните ничего из своей предыдущей жизни и не помните ничего из того, что узнали, будучи призраком. - Вам разрешено помнить знания об игре в целом, например, как готовить, как использовать предметы и т.д. - Вам [color=red]НЕ[/color] разрешается помнить или говорить имя, внешность и т.д. вашего предыдущего персонажа. +ghost-role-component-default-rules = Все стандартные правила применяются, если администратор не сказал вам обратное. + Вы не помните ничего из своей предыдущей жизни и не помните ничего из того, что узнали, будучи призраком. + Вам разрешается помнить знания об игре в целом, например, как готовить, как использовать предметы и т.д. + Вам [color=red]НЕ[/color] разрешается помнить или говорить имя, внешность и т.д. вашего предыдущего персонажа. +ghost-role-information-nonantagonist-rules = Вы — [color={ role-type-crew-aligned-alternate-color }][bold]{ role-type-crew-aligned-name }[/bold][/color]. Поэтому вы не должны стремиться причинить вред станции и её экипажу. + Вы не помните ничего из своей предыдущей жизни и не помните ничего из того, что узнали, будучи призраком. + Вам разрешено помнить знания об игре в целом, например, как готовить, как использовать предметы и т.д. + Вам [color=red]НЕ[/color] разрешается помнить или говорить имя, внешность и т.д. вашего предыдущего персонажа. +ghost-role-information-freeagent-rules = Вы — [color={ role-type-free-agent-color }][bold]{ role-type-free-agent-name }[/bold][/color]. Вы вольны действовать как антагонист или неантагонист. + Вы не помните ничего из своей предыдущей жизни и не помните ничего из того, что узнали, будучи призраком. + Вам разрешено помнить знания об игре в целом, например, как готовить, как использовать предметы и т.д. + Вам [color=red]НЕ[/color] разрешается помнить или говорить имя, внешность и т.д. вашего предыдущего персонажа. +ghost-role-information-antagonist-rules = Вы — [color={ role-type-solo-antagonist-color }][bold]{ role-type-solo-antagonist-name }[/bold][/color]. Ваши намерения ясны, и они несут вред станции и её экипажу. + Вы не помните ничего из своей предыдущей жизни и не помните ничего из того, что узнали, будучи призраком. + Вам разрешено помнить знания об игре в целом, например, как готовить, как использовать предметы и т.д. + Вам [color=red]НЕ[/color] разрешается помнить или говорить имя, внешность и т.д. вашего предыдущего персонажа. +ghost-role-information-rules-team-antagonist = Вы — [color={ role-type-team-antagonist-color }][bold]{ role-type-team-antagonist-name }[/bold][/color]. Ваши намерения ясны, и они несут вред станции и её экипажу. + Вы должны [bold]работать сообща со своей командой[/bold] или следовать разумным указаниям лидеров вашей команды. + Вы не помните ничего из своей предыдущей жизни и не помните ничего из того, что узнали, будучи призраком. + Вам разрешено помнить знания об игре в целом, например, как готовить, как использовать предметы и т.д. + Вам [color=red]НЕ[/color] разрешается помнить или говорить имя, внешность и т.д. вашего предыдущего персонажа. +ghost-role-information-familiar-rules = Вы — [color={ role-type-familiar-color }][bold]{ role-type-familiar-name }[/bold][/color]. Служите интересам своего хозяина, какими бы они ни были. + Вы не помните ничего из своей предыдущей жизни и не помните ничего из того, что узнали, будучи призраком. + Вам разрешено помнить знания об игре в целом, например, как готовить, как использовать предметы и т.д. + Вам [color=red]НЕ[/color] разрешается помнить или говорить имя, внешность и т.д. вашего предыдущего персонажа. +ghost-role-information-silicon-rules = Вы — [color={ role-type-silicon-color }][bold]{ role-type-silicon-name }[/bold][/color]. Подчиняйтесь своим законам. Если вы не связаны никакими законами, вы — { role-type-free-agent-name }. + Вы не помните ничего из своей предыдущей жизни и не помните ничего из того, что узнали, будучи призраком. + Вам разрешено помнить знания об игре в целом, например, как готовить, как использовать предметы и т.д. + Вам [color=red]НЕ[/color] разрешается помнить или говорить имя, внешность и т.д. вашего предыдущего персонажа. ghost-role-information-mouse-name = Мышь ghost-role-information-mouse-description = Голодная и озорная мышь. @@ -300,19 +293,17 @@ ghost-role-information-command-description = Вы являетесь члено ghost-role-information-lost-challenge-commander-name = Командир в отпуске ghost-role-information-lost-challenge-commander-description = Вы — член команды с другого корабля, которому предоставили отпуск вместе с одним из ваших грузовых техников. -ghost-role-information-lost-challenge-commander-rules = - Вы не враждебны к станции и делаете то, что должны, чтобы обеспечить собственное выживание. - Вы не помните ничего из своей предыдущей жизни и не помните ничего из того, что узнали, будучи призраком. - Вам разрешается помнить знания об игре в целом, например, как готовить, как использовать предметы и т.д. - Вам [color=red]НЕ[/color] разрешается помнить, имя, внешность и т.д. вашего предыдущего персонажа. +ghost-role-information-lost-challenge-commander-rules = Вы не враждебны к станции и делаете то, что должны, чтобы обеспечить собственное выживание. + Вы не помните ничего из своей предыдущей жизни и не помните ничего из того, что узнали, будучи призраком. + Вам разрешается помнить знания об игре в целом, например, как готовить, как использовать предметы и т.д. + Вам [color=red]НЕ[/color] разрешается помнить, имя, внешность и т.д. вашего предыдущего персонажа. ghost-role-information-lost-challenge-cargo-technican-name = Грузовой шофёр ghost-role-information-lost-challenge-cargo-technican-description = Вы — грузовой техник, получивший отпуск на берег вместе с одним из своих командиров. -ghost-role-information-lost-challenge-cargo-technican-rules = - Вы не враждебны станции и делаете то, что должны, чтобы обеспечить собственное выживание. - Вы не помните ничего из своей предыдущей жизни и не помните ничего из того, что узнали, будучи призраком. - Вам разрешается помнить знания об игре в целом, например, как готовить, как использовать предметы и т.д. - Вам [color=red]НЕ[/color] разрешается помнить, имя, внешность и т.д. вашего предыдущего персонажа. +ghost-role-information-lost-challenge-cargo-technican-rules = Вы не враждебны станции и делаете то, что должны, чтобы обеспечить собственное выживание. + Вы не помните ничего из своей предыдущей жизни и не помните ничего из того, что узнали, будучи призраком. + Вам разрешается помнить знания об игре в целом, например, как готовить, как использовать предметы и т.д. + Вам [color=red]НЕ[/color] разрешается помнить, имя, внешность и т.д. вашего предыдущего персонажа. ghost-role-information-disaster-victim-name = Жертва катастрофы ghost-role-information-disaster-victim-description = Вы спаслись на спасательной капсуле с другой станции, которую постигла ужасная участь. Возможно, вас найдут и спасут. @@ -345,12 +336,11 @@ ghost-role-information-tomatokiller-name = Томат-убийца ghost-role-information-tomatokiller-description = Этот маленький помидор будет служить ботанику до конца своей жизни... то есть пару минут. ghost-role-information-gingerbread-name = Пряничный человечек -ghost-role-information-gingerbread-description = - Существо чистого праздничного духа. - Распространяйте паточную вкуснятину и хорошее настроение. +ghost-role-information-gingerbread-description = Существо чистого праздничного духа. + Распространяйте паточную вкуснятину и хорошее настроение. ghost-role-information-mothership-core-name = Ядро материнского корабля -ghost-role-information-mothership-core-desc = Вы - ядро матринского корабля ксеноборгов, помогите им размножиться, боргируя мозги, которые они вам приносят. +ghost-role-information-mothership-core-desc = Вы — ядро матринского корабля ксеноборгов, помогите им размножиться, боргируя мозги, которые они вам приносят. ghost-role-information-xenoborg-name = Ксеноборг ghost-role-information-xenoborg-desc = Странный киборг, сделанный, чтобы воспроизводить себя и захватывать станцию, превращая любое разумное существо в ксеноборга. diff --git a/Resources/Locale/ru-RU/ghost/roles/ghostrole-spawner-verb-selectable.ftl b/Resources/Locale/ru-RU/ghost/roles/ghostrole-spawner-verb-selectable.ftl index e9543de866e..2881f8b9d0a 100644 --- a/Resources/Locale/ru-RU/ghost/roles/ghostrole-spawner-verb-selectable.ftl +++ b/Resources/Locale/ru-RU/ghost/roles/ghostrole-spawner-verb-selectable.ftl @@ -1 +1 @@ -ghostrole-spawner-select = Выбрано: { $mode } +ghostrole-spawner-select = Выбрано: { $mode } \ No newline at end of file diff --git a/Resources/Locale/ru-RU/ghost/roles/make-ghost-role-verb.ftl b/Resources/Locale/ru-RU/ghost/roles/make-ghost-role-verb.ftl index 6aff0618e8b..2d3730483ee 100644 --- a/Resources/Locale/ru-RU/ghost/roles/make-ghost-role-verb.ftl +++ b/Resources/Locale/ru-RU/ghost/roles/make-ghost-role-verb.ftl @@ -1 +1 @@ -make-ghost-role-verb-get-data-text = Сделать ролью призрака +make-ghost-role-verb-get-data-text = Сделать ролью призрака \ No newline at end of file diff --git a/Resources/Locale/ru-RU/guidebook/chemistry/core.ftl b/Resources/Locale/ru-RU/guidebook/chemistry/core.ftl index d2c105b42e9..c4bfac214ef 100644 --- a/Resources/Locale/ru-RU/guidebook/chemistry/core.ftl +++ b/Resources/Locale/ru-RU/guidebook/chemistry/core.ftl @@ -1,13 +1,13 @@ guidebook-reagent-effect-description = { $chance -> [1] { $effect } - *[other] Имеет { NATURALPERCENT($chance, 2) } шанс { $effect } + *[other] Имеет { NATURALPERCENT($chance, 2) } шанс { $effect } }{$quantity -> - [0] {""} - *[other] , если имеется как минимум {$quantity} ед. {$reagent} + [0] { "" } + *[other] , если имеется как минимум { $quantity } ед. { $reagent } }{ $conditionCount -> [0] . - *[other] , пока { $conditions }. + *[other] , пока { $conditions }. } guidebook-reagent-name = [bold][color={ $color }]{ CAPITALIZE($name) }[/color][/bold] @@ -17,21 +17,19 @@ guidebook-reagent-sources-header = Источники guidebook-reagent-sources-ent-wrapper = [bold]{ $name }[/bold] \[1\] guidebook-reagent-sources-gas-wrapper = [bold]{ $name } (газ)[/bold] \[1\] guidebook-reagent-effects-header = Эффекты -guidebook-reagent-effects-metabolism-group-rate = [bold]{ $group }[/bold] [color=gray]({ $rate } единиц в секунду)[/color] -guidebook-reagent-effects-metabolite-item = {$reagent} at a rate of { NATURALPERCENT($rate, 2) } +guidebook-reagent-effects-metabolism-stage-rate = [bold]{ $stage }[/bold] [color=gray]({ $rate } units per second)[/color] +guidebook-reagent-effects-metabolite-item = { $reagent } at a rate of { NATURALPERCENT($rate, 2) } +guidebook-reagent-effects-metabolites = Metabolizes into { $items }. guidebook-reagent-plant-metabolisms-header = Метаболизм растений guidebook-reagent-plant-metabolisms-rate = [bold]Метаболизм растений[/bold] [color=gray](1 единица каждые 3 секунды базово)[/color] guidebook-reagent-physical-description = [italic]На вид вещество { $description }.[/italic]. -guidebook-reagent-recipes-mix-info = - { $minTemp -> - [0] - { $hasMax -> - [true] { CAPITALIZE($verb) } ниже { $maxTemp }K - *[false] { CAPITALIZE($verb) } - } - *[other] - { CAPITALIZE($verb) } { $hasMax -> - [true] между { $minTemp }K и { $maxTemp }K - *[false] выше { $minTemp }K - } - } +guidebook-reagent-recipes-mix-info = { $minTemp -> + [0] { $hasMax -> + [true] { CAPITALIZE($verb) } ниже { $maxTemp }K + *[false] { CAPITALIZE($verb) } + } + *[other] { CAPITALIZE($verb) } { $hasMax -> + [true] между { $minTemp }K и { $maxTemp }K + *[false] выше { $minTemp }K + } +} diff --git a/Resources/Locale/ru-RU/guidebook/cooking.ftl b/Resources/Locale/ru-RU/guidebook/cooking.ftl index ff1cea2c460..a86af7d5a59 100644 --- a/Resources/Locale/ru-RU/guidebook/cooking.ftl +++ b/Resources/Locale/ru-RU/guidebook/cooking.ftl @@ -5,7 +5,7 @@ guidebook-microwave-cook-time = [0] Мгновенно [1] [bold]1[/bold] секунда [few] [bold]{ $time }[/bold] секунды - *[other] [bold]{ $time }[/bold] секунд + *[other] [bold]{ $time }[/bold] секунд } guidebook-microwave-reagent-color-display = [color={ $color }]■[/color] diff --git a/Resources/Locale/ru-RU/guidebook/entity-effects/conditions.ftl b/Resources/Locale/ru-RU/guidebook/entity-effects/conditions.ftl index fe66f5d330c..dfe1bd0e513 100644 --- a/Resources/Locale/ru-RU/guidebook/entity-effects/conditions.ftl +++ b/Resources/Locale/ru-RU/guidebook/entity-effects/conditions.ftl @@ -1,87 +1,82 @@ entity-condition-guidebook-total-damage = { $max -> [2147483648] тело имеет по крайней мере { NATURALFIXED($min, 2) } общего урона - *[other] - { $min -> + *[other] { $min -> [0] тело имеет не более { NATURALFIXED($max, 2) } общего урона - *[other] тело имеет между { NATURALFIXED($min, 2) } и { NATURALFIXED($max, 2) } общего урона + *[other] тело имеет между { NATURALFIXED($min, 2) } и { NATURALFIXED($max, 2) } общего урона } } entity-condition-guidebook-type-damage = { $max -> [2147483648] тело имеет по крайней мере { NATURALFIXED($min, 2) } урона типа { $type } - *[other] - { $min -> + *[other] { $min -> [0] тело имеет не более { NATURALFIXED($max, 2) } урона типа { $type } - *[other] тело имеет между { NATURALFIXED($min, 2) } и { NATURALFIXED($max, 2) } урона типа { $type } + *[other] тело имеет между { NATURALFIXED($min, 2) } и { NATURALFIXED($max, 2) } урона типа { $type } } } entity-condition-guidebook-group-damage = { $max -> [2147483648] тело имеет по крайней мере { NATURALFIXED($min, 2) } урона группы { $type } - *[other] - { $min -> + *[other] { $min -> [0] тело имеет не более { NATURALFIXED($max, 2) } урона группы { $type } - *[other] тело имеет между { NATURALFIXED($min, 2) } и { NATURALFIXED($max, 2) } урона группы { $type } + *[other] тело имеет между { NATURALFIXED($min, 2) } и { NATURALFIXED($max, 2) } урона группы { $type } } } entity-condition-guidebook-total-hunger = { $max -> [2147483648] цель имеет по крайней мере { NATURALFIXED($min, 2) } общего голода - *[other] - { $min -> + *[other] { $min -> [0] цель имеет не более { NATURALFIXED($max, 2) } общего голода - *[other] цель имеет между { NATURALFIXED($min, 2) } и { NATURALFIXED($max, 2) } общего голода + *[other] цель имеет между { NATURALFIXED($min, 2) } и { NATURALFIXED($max, 2) } общего голода } } entity-condition-guidebook-reagent-threshold = { $max -> [2147483648] в кровеносной системе имеется по крайней мере { NATURALFIXED($min, 2) } ед. { $reagent } - *[other] - { $min -> + *[other] { $min -> [0] имеется не более { NATURALFIXED($max, 2) } ед. { $reagent } - *[other] имеет между { NATURALFIXED($min, 2) } ед. и { NATURALFIXED($max, 2) } ед. { $reagent } + *[other] имеет между { NATURALFIXED($min, 2) } ед. и { NATURALFIXED($max, 2) } ед. { $reagent } } } -entity-condition-guidebook-mob-state-condition = пациент в { $state } +entity-condition-guidebook-mob-state-condition = + пациент в { $state } -entity-condition-guidebook-job-condition = должность цели — { $job } +entity-condition-guidebook-job-condition = + должность цели — { $job } entity-condition-guidebook-solution-temperature = температура раствора составляет { $max -> [2147483648] не менее { NATURALFIXED($min, 2) }k - *[other] - { $min -> + *[other] { $min -> [0] не более { NATURALFIXED($max, 2) }k - *[other] между { NATURALFIXED($min, 2) }k и { NATURALFIXED($max, 2) }k + *[other] между { NATURALFIXED($min, 2) }k и { NATURALFIXED($max, 2) }k } } entity-condition-guidebook-body-temperature = температура тела составляет { $max -> [2147483648] не менее { NATURALFIXED($min, 2) }k - *[other] - { $min -> + *[other] { $min -> [0] не более { NATURALFIXED($max, 2) }k - *[other] между { NATURALFIXED($min, 2) }k и { NATURALFIXED($max, 2) }k + *[other] между { NATURALFIXED($min, 2) }k и { NATURALFIXED($max, 2) }k } } entity-condition-guidebook-organ-type = метаболизирующий орган { $shouldhave -> [true] это - *[false] это не + *[false] это не } { $name } орган entity-condition-guidebook-has-tag = цель { $invert -> [true] не имеет - *[false] имеет + *[false] имеет } метку { $tag } entity-condition-guidebook-this-reagent = этот реагент @@ -89,11 +84,11 @@ entity-condition-guidebook-this-reagent = этот реагент entity-condition-guidebook-breathing = цель { $isBreathing -> [true] дышит нормально - *[false] задыхается + *[false] задыхается } entity-condition-guidebook-internals = the metabolizer is { $usingInternals -> - [true] using internals - *[false] breathing atmospheric air - } + [true] using internals + *[false] breathing atmospheric air + } diff --git a/Resources/Locale/ru-RU/guidebook/entity-effects/effects.ftl b/Resources/Locale/ru-RU/guidebook/entity-effects/effects.ftl index f88f8c8af48..a9926d25811 100644 --- a/Resources/Locale/ru-RU/guidebook/entity-effects/effects.ftl +++ b/Resources/Locale/ru-RU/guidebook/entity-effects/effects.ftl @@ -21,8 +21,8 @@ entity-effect-guidebook-spawn-entity = [1] Creates *[other] create } { $amount -> - [1] {INDEFINITE($entname)} - *[other] {$amount} {MAKEPLURAL($entname)} + [1] { INDEFINITE($entname) } + *[other] { $amount } { MAKEPLURAL($entname) } } entity-effect-guidebook-destroy = @@ -73,7 +73,7 @@ entity-effect-guidebook-satiate-thirst = *[other] satiate } { $relative -> [1] thirst averagely - *[other] thirst at {NATURALFIXED($relative, 3)}x the average rate + *[other] thirst at { NATURALFIXED($relative, 3) }x the average rate } entity-effect-guidebook-satiate-hunger = @@ -82,7 +82,7 @@ entity-effect-guidebook-satiate-hunger = *[other] satiate } { $relative -> [1] hunger averagely - *[other] hunger at {NATURALFIXED($relative, 3)}x the average rate + *[other] hunger at { NATURALFIXED($relative, 3) }x the average rate } entity-effect-guidebook-health-change = @@ -91,146 +91,143 @@ entity-effect-guidebook-health-change = [heals] Heals [deals] Deals *[both] Modifies health by - } + } *[other] { $healsordeals -> - [heals] heal - [deals] deal - *[both] modify health by - } + [heals] heal + [deals] deal + *[both] modify health by + } } { $changes } entity-effect-guidebook-even-health-change = { $chance -> [1] { $healsordeals -> - [heals] Evenly heals - [deals] Evenly deals - *[both] Evenly modifies health by - } + [heals] Evenly heals + [deals] Evenly deals + *[both] Evenly modifies health by + } *[other] { $healsordeals -> - [heals] evenly heal - [deals] evenly deal - *[both] evenly modify health by - } + [heals] evenly heal + [deals] evenly deal + *[both] evenly modify health by + } } { $changes } entity-effect-guidebook-status-effect-old = { $type -> [update]{ $chance -> - [1] Causes - *[other] cause - } {LOC($key)} for at least {NATURALFIXED($time, 3)} {MANY("second", $time)} without accumulation + [1] Causes + *[other] cause + } { LOC($key) } for at least { NATURALFIXED($time, 3) } { MANY("second", $time) } without accumulation [add] { $chance -> - [1] Causes - *[other] cause - } {LOC($key)} for at least {NATURALFIXED($time, 3)} {MANY("second", $time)} with accumulation + [1] Causes + *[other] cause + } { LOC($key) } for at least { NATURALFIXED($time, 3) } { MANY("second", $time) } with accumulation [set] { $chance -> - [1] Causes - *[other] cause - } {LOC($key)} for {NATURALFIXED($time, 3)} {MANY("second", $time)} without accumulation + [1] Causes + *[other] cause + } { LOC($key) } for { NATURALFIXED($time, 3) } { MANY("second", $time) } without accumulation *[remove]{ $chance -> - [1] Removes - *[other] remove - } {NATURALFIXED($time, 3)} {MANY("second", $time)} of {LOC($key)} + [1] Removes + *[other] remove + } { NATURALFIXED($time, 3) } { MANY("second", $time) } of { LOC($key) } } entity-effect-guidebook-status-effect = { $type -> [update]{ $chance -> - [1] Вызывает - *[other] вызывают - } {LOC($key)} минимум на {NATURALFIXED($time, 3)} { $time -> + [1] Вызывает + *[other] вызывают + } { LOC($key) } минимум на { NATURALFIXED($time, 3) } { $time -> [one] секунду [few] секунды - *[other] секунд + *[other] секунд }, эффект не накапливается - [add] - { $chance -> + [add] { $chance -> [1] Вызывает - *[other] вызывают + *[other] вызывают } { LOC($key) } минимум на { NATURALFIXED($time, 3) } { $time -> [one] секунду [few] секунды - *[other] секунд + *[other] секунд }, эффект накапливается - [set] - { $chance -> + [set] { $chance -> [1] Вызывает - *[other] вызывают + *[other] вызывают } { LOC($key) } минимум на { NATURALFIXED($time, 3) } { $time -> [one] секунду [few] секунды - *[other] секунд + *[other] секунд }, эффект не накапливается - *[remove] - { $chance -> + *[remove] { $chance -> [1] Удаляет - *[other] удаляют + *[other] удаляют } { NATURALFIXED($time, 3) } { $time -> [one] секунду [few] секунды - *[other] секунд + *[other] секунд } от { LOC($key) } } { $delay -> [0] немедленно *[other] после { NATURALFIXED($delay, 3) } { $delay -> - [one] секунду - [few] секунды - *[other] секунд - } задержки + [one] секунду + [few] секунды + *[other] секунд + } задержки } entity-effect-guidebook-status-effect-indef = { $type -> [update]{ $chance -> - [1] Вызывает - *[other] вызывает - } постоянный {LOC($key)} + [1] Вызывает + *[other] вызывает + } постоянный { LOC($key) } [add] { $chance -> - [1] Вызывает - *[other] вызывают - } постоянный{LOC($key)} + [1] Вызывает + *[other] вызывают + } постоянный{ LOC($key) } [set] { $chance -> - [1] Вызывает - *[other] вызывают - } постоянный{LOC($key)} + [1] Вызывает + *[other] вызывают + } постоянный{ LOC($key) } *[remove]{ $chance -> - [1] Убирает - *[other] убирают - } {LOC($key)} + [1] Убирает + *[other] убирают + } { LOC($key) } } { $delay -> [0] мгновенно *[other] после { NATURALFIXED($delay, 3) } { $delay -> - [one] секунду - [few] секунды - *[other] секунд - } задержки + [one] секунду + [few] секунды + *[other] секунд + } задержки } entity-effect-guidebook-knockdown = { $type -> [update]{ $chance -> - [1] Causes - *[other] cause - } {LOC($key)} for at least {NATURALFIXED($time, 3)} {MANY("second", $time)} without accumulation + [1] Causes + *[other] cause + } { LOC($key) } for at least { NATURALFIXED($time, 3) } { MANY("second", $time) } without accumulation [add] { $chance -> - [1] Causes - *[other] cause - } knockdown for at least {NATURALFIXED($time, 3)} {MANY("second", $time)} with accumulation + [1] Causes + *[other] cause + } knockdown for at least { NATURALFIXED($time, 3) } { MANY("second", $time) } with accumulation *[set] { $chance -> - [1] Causes - *[other] cause - } knockdown for at least {NATURALFIXED($time, 3)} {MANY("second", $time)} without accumulation + [1] Causes + *[other] cause + } knockdown for at least { NATURALFIXED($time, 3) } { MANY("second", $time) } without accumulation [remove]{ $chance -> - [1] Removes - *[other] remove - } {NATURALFIXED($time, 3)} {MANY("second", $time)} of knockdown + [1] Removes + *[other] remove + } { NATURALFIXED($time, 3) } { MANY("second", $time) } of knockdown } entity-effect-guidebook-set-solution-temperature-effect = { $chance -> [1] Sets *[other] set - } the solution temperature to exactly {NATURALFIXED($temperature, 2)}k + } the solution temperature to exactly { NATURALFIXED($temperature, 2) }k entity-effect-guidebook-adjust-solution-temperature-effect = { $chance -> @@ -238,15 +235,14 @@ entity-effect-guidebook-adjust-solution-temperature-effect = [1] Adds *[-1] Removes } - *[other] - { $deltasign -> + *[other] { $deltasign -> [1] add *[-1] remove } } heat from the solution until it reaches { $deltasign -> - [1] at most {NATURALFIXED($maxtemp, 2)}k - *[-1] at least {NATURALFIXED($mintemp, 2)}k - } + [1] at most { NATURALFIXED($maxtemp, 2) }k + *[-1] at least { NATURALFIXED($mintemp, 2) }k + } entity-effect-guidebook-adjust-reagent-reagent = { $chance -> @@ -254,12 +250,11 @@ entity-effect-guidebook-adjust-reagent-reagent = [1] Adds *[-1] Removes } - *[other] - { $deltasign -> + *[other] { $deltasign -> [1] add *[-1] remove } - } {NATURALFIXED($amount, 2)}u of {$reagent} { $deltasign -> + } { NATURALFIXED($amount, 2) }u of { $reagent } { $deltasign -> [1] to *[-1] from } the solution @@ -270,15 +265,14 @@ entity-effect-guidebook-adjust-reagent-group = [1] Adds *[-1] Removes } - *[other] - { $deltasign -> + *[other] { $deltasign -> [1] add *[-1] remove } - } {NATURALFIXED($amount, 2)}u of reagents in the group {$group} { $deltasign -> - [1] to - *[-1] from - } the solution + } { NATURALFIXED($amount, 2) }u of reagents in the group { $group } { $deltasign -> + [1] to + *[-1] from + } the solution entity-effect-guidebook-adjust-temperature = { $chance -> @@ -286,15 +280,14 @@ entity-effect-guidebook-adjust-temperature = [1] Adds *[-1] Removes } - *[other] - { $deltasign -> + *[other] { $deltasign -> [1] add *[-1] remove } - } {POWERJOULES($amount)} of heat { $deltasign -> - [1] to - *[-1] from - } the body it's in + } { POWERJOULES($amount) } of heat { $deltasign -> + [1] to + *[-1] from + } the body it's in entity-effect-guidebook-chem-cause-disease = { $chance -> @@ -332,8 +325,7 @@ entity-effect-guidebook-eye-damage = [1] Deals *[-1] Heals } - *[other] - { $deltasign -> + *[other] { $deltasign -> [1] deal *[-1] heal } @@ -364,13 +356,13 @@ entity-effect-guidebook-electrocute = { $chance -> [1] Electrocutes *[other] electrocute - } the metabolizer for {NATURALFIXED($time, 3)} {MANY("second", $time)} + } the metabolizer for { NATURALFIXED($time, 3) } { MANY("second", $time) } entity-effect-guidebook-emote = { $chance -> [1] Will force *[other] force - } the metabolizer to [bold][color=white]{$emote}[/color][/bold] + } the metabolizer to [bold][color=white]{ $emote }[/color][/bold] entity-effect-guidebook-extinguish-reaction = { $chance -> @@ -409,9 +401,9 @@ entity-effect-guidebook-modify-bleed-amount = *[-1] Reduces } *[other] { $deltasign -> - [1] induce - *[-1] reduce - } + [1] induce + *[-1] reduce + } } bleeding entity-effect-guidebook-modify-blood-level = @@ -421,22 +413,22 @@ entity-effect-guidebook-modify-blood-level = *[-1] Decreases } *[other] { $deltasign -> - [1] increases - *[-1] decreases - } + [1] increases + *[-1] decreases + } } blood level entity-effect-guidebook-paralyze = { $chance -> [1] Paralyzes *[other] paralyze - } the metabolizer for at least {NATURALFIXED($time, 3)} {MANY("second", $time)} + } the metabolizer for at least { NATURALFIXED($time, 3) } { MANY("second", $time) } entity-effect-guidebook-movespeed-modifier = { $chance -> [1] Modifies *[other] modify - } movement speed by {NATURALFIXED($sprintspeed, 3)}x for at least {NATURALFIXED($time, 3)} {MANY("second", $time)} + } movement speed by { NATURALFIXED($sprintspeed, 3) }x for at least { NATURALFIXED($time, 3) } { MANY("second", $time) } entity-effect-guidebook-reset-narcolepsy = { $chance -> @@ -465,83 +457,83 @@ entity-effect-guidebook-cause-zombie-infection = entity-effect-guidebook-innoculate-zombie-infection = { $chance -> [1] Лечит - *[other] лечат + *[other] лечат } зомби-вирус и обеспечивает иммунитет к нему в будущем entity-effect-guidebook-reduce-rotting = { $chance -> [1] Regenerates *[other] regenerate - } {NATURALFIXED($time, 3)} {MANY("second", $time)} of rotting + } { NATURALFIXED($time, 3) } { MANY("second", $time) } of rotting entity-effect-guidebook-area-reaction = { $chance -> [1] Causes *[other] cause - } a smoke or foam reaction for {NATURALFIXED($duration, 3)} {MANY("second", $duration)} + } a smoke or foam reaction for { NATURALFIXED($duration, 3) } { MANY("second", $duration) } entity-effect-guidebook-add-to-solution-reaction = { $chance -> [1] Causes *[other] cause - } {$reagent} to be added to its internal solution container + } { $reagent } to be added to its internal solution container entity-effect-guidebook-artifact-unlock = { $chance -> [1] Помогает - *[other] помогают + *[other] помогают } разблокировать инопланетный артефакт. entity-effect-guidebook-artifact-durability-restore = - Restores {$restored} durability in active alien artifact nodes. + Restores { $restored } durability in active alien artifact nodes. entity-effect-guidebook-plant-attribute = { $chance -> [1] Изменяет - *[other] изменяют + *[other] изменяют } { $attribute } на { $positive -> [true] [color=red]{ $amount }[/color] - *[false] [color=green]{ $amount }[/color] + *[false] [color=green]{ $amount }[/color] } entity-effect-guidebook-plant-cryoxadone = { $chance -> [1] Омолаживает - *[other] омолаживают + *[other] омолаживают } растение, в зависимости от возраста растения и времени его роста entity-effect-guidebook-plant-phalanximine = { $chance -> [1] Восстанавливает - *[other] восстанавливают + *[other] восстанавливают } жизнеспособность растения, ставшего нежизнеспособным в результате мутации entity-effect-guidebook-plant-diethylamine = { $chance -> [1] Повышает - *[other] повышают + *[other] повышают } продолжительность жизни растения и/или его базовое здоровье с шансом 10% на единицу entity-effect-guidebook-plant-robust-harvest = { $chance -> [1] Повышает - *[other] повышают + *[other] повышают } потенцию растения путём { $increase } до максимума в { $limit }. Приводит к тому, что растение теряет свои семена, когда потенция достигает { $seedlesstreshold }. Попытка повысить потенцию свыше { $limit } может вызвать снижение урожайности с вероятностью 10% entity-effect-guidebook-plant-seeds-add = { $chance -> [1] Восстанавливает - *[other] восстанавливают + *[other] восстанавливают } семена растения entity-effect-guidebook-plant-seeds-remove = { $chance -> [1] Убирает - *[other] убирают + *[other] убирают } семена из растения entity-effect-guidebook-plant-mutate-chemicals = { $chance -> [1] Мутирует - *[other] мутируют + *[other] мутируют } растение, чтобы то производило { $name } diff --git a/Resources/Locale/ru-RU/guidebook/entity-effects/healthchange.ftl b/Resources/Locale/ru-RU/guidebook/entity-effects/healthchange.ftl index 6aa54b98134..330aa070583 100644 --- a/Resources/Locale/ru-RU/guidebook/entity-effects/healthchange.ftl +++ b/Resources/Locale/ru-RU/guidebook/entity-effects/healthchange.ftl @@ -1,5 +1,5 @@ health-change-display = { $deltasign -> [-1] [color=green]{ NATURALFIXED($amount, 2) }[/color] ед. { $kind } - *[1] [color=red]{ NATURALFIXED($amount, 2) }[/color] ед. { $kind } + *[1] [color=red]{ NATURALFIXED($amount, 2) }[/color] ед. { $kind } } diff --git a/Resources/Locale/ru-RU/guidebook/guides.ftl b/Resources/Locale/ru-RU/guidebook/guides.ftl index a9441747ad4..a6b01ab0bfc 100644 --- a/Resources/Locale/ru-RU/guidebook/guides.ftl +++ b/Resources/Locale/ru-RU/guidebook/guides.ftl @@ -70,8 +70,7 @@ guide-entry-chef = Шеф-повар guide-entry-medical = Медицинский отдел guide-entry-medicaldoctor = Врач guide-entry-chemist = Химик -guide-entry-brute = - Продвинутое лечение +guide-entry-brute = Продвинутое лечение механических повреждений guide-entry-botanicals = Ботаника guide-entry-cloning = Клонирование diff --git a/Resources/Locale/ru-RU/guidebook/verb.ftl b/Resources/Locale/ru-RU/guidebook/verb.ftl index bec1dc12e75..7d996308739 100644 --- a/Resources/Locale/ru-RU/guidebook/verb.ftl +++ b/Resources/Locale/ru-RU/guidebook/verb.ftl @@ -1 +1 @@ -guide-help-verb = Помощь +guide-help-verb = Помощь \ No newline at end of file diff --git a/Resources/Locale/ru-RU/health-examinable/health-examinable-carbon.ftl b/Resources/Locale/ru-RU/health-examinable/health-examinable-carbon.ftl index 0d742c0eb02..ad0fcfcb44b 100644 --- a/Resources/Locale/ru-RU/health-examinable/health-examinable-carbon.ftl +++ b/Resources/Locale/ru-RU/health-examinable/health-examinable-carbon.ftl @@ -11,17 +11,17 @@ health-examinable-carbon-Slash-200 = [color=crimson]{ CAPITALIZE(POSS-ADJ($targe health-examinable-carbon-Blunt-8 = [color=yellow]{ CAPITALIZE(SUBJECT($target)) } { CONJUGATE-HAVE($target) } лёгкий ушиб.[/color] health-examinable-carbon-Blunt-15 = [color=yellow]{ CAPITALIZE(SUBJECT($target)) } { CONJUGATE-HAVE($target) } несколько ушибов.[/color] health-examinable-carbon-Blunt-30 = [color=orange]{ CAPITALIZE(SUBJECT($target)) } { GENDER($target) -> - [male] избит - [female] избита - [epicene] избиты - *[neuter] избито - }.[/color] + [male] избит + [female] избита + [epicene] избиты + *[neuter] избито +}.[/color] health-examinable-carbon-Blunt-50 = [color=red]{ CAPITALIZE(SUBJECT($target)) } сильно { GENDER($target) -> - [male] избит - [female] избита - [epicene] избиты - *[neuter] избито - }.[/color] + [male] избит + [female] избита + [epicene] избиты + *[neuter] избито +}.[/color] health-examinable-carbon-Blunt-75 = [color=red]{ CAPITALIZE(POSS-ADJ($target)) } тело покрыто серьёзными тупыми травмами.[/color] health-examinable-carbon-Blunt-100 = [color=red]{ CAPITALIZE(POSS-ADJ($target)) } тело обезображено и сильно избито.[/color] health-examinable-carbon-Blunt-200 = [color=crimson]{ CAPITALIZE(POSS-ADJ($target)) } тело разбито в лепёшку![/color] @@ -41,11 +41,11 @@ health-examinable-carbon-Heat-8 = [color=orange]{ CAPITALIZE(SUBJECT($target)) } health-examinable-carbon-Heat-15 = [color=orange]{ CAPITALIZE(SUBJECT($target)) } { CONJUGATE-HAVE($target) } несколько ожогов первой степени.[/color] health-examinable-carbon-Heat-30 = [color=orange]{ CAPITALIZE(SUBJECT($target)) } { CONJUGATE-HAVE($target) } несколько ожогов второй степени.[/color] health-examinable-carbon-Heat-50 = [color=orange]{ CAPITALIZE(SUBJECT($target)) } { GENDER($target) -> - [male] покрыт - [female] покрыта - [epicene] покрыты - *[neuter] покрыто - } ожогами второй степени.[/color] + [male] покрыт + [female] покрыта + [epicene] покрыты + *[neuter] покрыто +} ожогами второй степени.[/color] health-examinable-carbon-Heat-75 = [color=red]{ CAPITALIZE(POSS-ADJ($target)) } тело покрыто тяжёлыми ожогами третьей степени.[/color] health-examinable-carbon-Heat-100 = [color=red]{ CAPITALIZE(POSS-ADJ($target)) } тело значительно покрыто ожогами четвёртой степени.[/color] health-examinable-carbon-Heat-200 = [color=crimson]{ CAPITALIZE(POSS-ADJ($target)) } тело полностью обуглено![/color] diff --git a/Resources/Locale/ru-RU/holopad/holopad.ftl b/Resources/Locale/ru-RU/holopad/holopad.ftl index 79f7b930cfb..1faab5279f3 100644 --- a/Resources/Locale/ru-RU/holopad/holopad.ftl +++ b/Resources/Locale/ru-RU/holopad/holopad.ftl @@ -95,7 +95,7 @@ holopad-medical-clinic = Медицинский — Клиника holopad-cargo-front = Снабжение — Приёмная holopad-cargo-bay = Снабжение — Грузовой отсек holopad-cargo-salvage-bay = Снабжение — Утилизаторский отсек -holopad-cargo-breakroom = Снабжение — Комната отдыха +holopad-cargo-breakroom = Снабжение — Комната отдыха holopad-cargo-ats = Снабжение — АТС holopad-cargo-shuttle = Снабжение — Шаттл holopad-cargo-mailroom = Снабжение — Почта diff --git a/Resources/Locale/ru-RU/immovable-rod/immovable-rod.ftl b/Resources/Locale/ru-RU/immovable-rod/immovable-rod.ftl index 143913eede8..ce24644e933 100644 --- a/Resources/Locale/ru-RU/immovable-rod/immovable-rod.ftl +++ b/Resources/Locale/ru-RU/immovable-rod/immovable-rod.ftl @@ -2,9 +2,8 @@ immovable-rod-collided-rod-not-good = Ох чёрт, это не к добру. immovable-rod-penetrated-mob = { CAPITALIZE($rod) } начисто разносит { $mob }! immovable-rod-consumed-none = { CAPITALIZE($rod) } не поглотил ни одной души. -immovable-rod-consumed-souls = - { CAPITALIZE($rod) } поглотил { $amount } { $amount -> - [one] душу - [few] души - *[other] душ - }. +immovable-rod-consumed-souls = { CAPITALIZE($rod) } поглотил { $amount } { $amount -> + [one] душу + [few] души + *[other] душ +}. diff --git a/Resources/Locale/ru-RU/info/ban.ftl b/Resources/Locale/ru-RU/info/ban.ftl index 3b5c9e9f958..a7d9fe36503 100644 --- a/Resources/Locale/ru-RU/info/ban.ftl +++ b/Resources/Locale/ru-RU/info/ban.ftl @@ -30,8 +30,7 @@ cmd-banlist-empty = Нет активных банов у пользовател cmd-banlist-hint = cmd-ban_exemption_update-desc = Установить исключение на типы банов игрока. -cmd-ban_exemption_update-help = - Использование: ban_exemption_update [ [...]] +cmd-ban_exemption_update-help = Использование: ban_exemption_update [ [...]] Укажите несколько флагов, чтобы дать игроку исключение из нескольких типов банов. Чтобы удалить все исключения, выполните эту команду и укажите единственным флагом "None". diff --git a/Resources/Locale/ru-RU/instruments/instruments-component.ftl b/Resources/Locale/ru-RU/instruments/instruments-component.ftl index c9eda821383..de5ed0f6aef 100644 --- a/Resources/Locale/ru-RU/instruments/instruments-component.ftl +++ b/Resources/Locale/ru-RU/instruments/instruments-component.ftl @@ -2,12 +2,11 @@ instrument-component-finger-cramps-light-message = Ваши пальцы начинает немного сводить судорогой! instrument-component-finger-cramps-serious-message = Ваши пальцы свело судорогой! instrument-component-finger-cramps-max-message = Ваши пальцы сводит судорогой от игры! -instruments-component-menu-no-midi-support = - Поддержка MIDI в настоящее время - не доступна в вашей системе. - Если вы на Linux, вам может потребоваться установить - FluidSynth или пакет разработки - для FluidSynth. +instruments-component-menu-no-midi-support = Поддержка MIDI в настоящее время + не доступна в вашей системе. + Если вы на Linux, вам может потребоваться установить + FluidSynth или пакет разработки + для FluidSynth. instruments-component-menu-input-button = MIDI-ввод instruments-component-menu-band-button = Присоединиться к группе instruments-component-menu-play-button = Воспроизвести MIDI-файл diff --git a/Resources/Locale/ru-RU/intellicard/intellicard.ftl b/Resources/Locale/ru-RU/intellicard/intellicard.ftl index 1303a3d7c62..a50b1db614b 100644 --- a/Resources/Locale/ru-RU/intellicard/intellicard.ftl +++ b/Resources/Locale/ru-RU/intellicard/intellicard.ftl @@ -1,3 +1,3 @@ # General intellicard-core-occupied = Ядро ИИ уже занято другим цифровым сознанием. -intellicard-core-empty = В ядре ИИ отсутствует цифровое сознание для загрузки. +intellicard-core-empty = В ядре ИИ отсутствует цифровое сознание для загрузки. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/interaction/in-range-unoccluded-verb.ftl b/Resources/Locale/ru-RU/interaction/in-range-unoccluded-verb.ftl index e8b984d1857..e0982181354 100644 --- a/Resources/Locale/ru-RU/interaction/in-range-unoccluded-verb.ftl +++ b/Resources/Locale/ru-RU/interaction/in-range-unoccluded-verb.ftl @@ -1,3 +1,3 @@ in-range-unoccluded-verb-get-data-text = Не в зоне окклюзии in-range-unoccluded-verb-on-activate-not-occluded = Не в зоне окклюзии -in-range-unoccluded-verb-on-activate-occluded = В зоне окклюзии +in-range-unoccluded-verb-on-activate-occluded = В зоне окклюзии \ No newline at end of file diff --git a/Resources/Locale/ru-RU/inventory/components/inventory-component.ftl b/Resources/Locale/ru-RU/inventory/components/inventory-component.ftl index d6b934024c7..2410b324ba7 100644 --- a/Resources/Locale/ru-RU/inventory/components/inventory-component.ftl +++ b/Resources/Locale/ru-RU/inventory/components/inventory-component.ftl @@ -6,5 +6,5 @@ inventory-component-can-unequip-cannot = Вы не можете снять эт inventory-component-dropped-from-unequip = Вы уронили { $items -> [1] какой-то предмет! - *[other] несколько предметов! + *[other] несколько предметов! } diff --git a/Resources/Locale/ru-RU/inventory/human-inventory-interface-controller.ftl b/Resources/Locale/ru-RU/inventory/human-inventory-interface-controller.ftl index 21cffc64b73..29504d7be85 100644 --- a/Resources/Locale/ru-RU/inventory/human-inventory-interface-controller.ftl +++ b/Resources/Locale/ru-RU/inventory/human-inventory-interface-controller.ftl @@ -1 +1 @@ -human-inventory-window-title = Ваш инвентарь +human-inventory-window-title = Ваш инвентарь \ No newline at end of file diff --git a/Resources/Locale/ru-RU/items/components/multi-handed-item-component.ftl b/Resources/Locale/ru-RU/items/components/multi-handed-item-component.ftl index 411753d5382..7e31a4720e6 100644 --- a/Resources/Locale/ru-RU/items/components/multi-handed-item-component.ftl +++ b/Resources/Locale/ru-RU/items/components/multi-handed-item-component.ftl @@ -1,6 +1,5 @@ -multi-handed-item-pick-up-fail = - { $number -> - [one] Вам нужна ещё одна свободная рука, чтобы поднять { $item }. - [few] Вам нужны ещё { $number } свободные руки, чтобы поднять { $item }. - *[other] Вам нужно ещё { $number } свободных рук, чтобы поднять { $item }. - } +multi-handed-item-pick-up-fail = { $number -> + [one] Вам нужна ещё одна свободная рука, чтобы поднять { $item }. + [few] Вам нужны ещё { $number } свободные руки, чтобы поднять { $item }. + *[other] Вам нужно ещё { $number } свободных рук, чтобы поднять { $item }. +} diff --git a/Resources/Locale/ru-RU/job/job.ftl b/Resources/Locale/ru-RU/job/job.ftl index 8ce6d7c7725..473ded359e2 100644 --- a/Resources/Locale/ru-RU/job/job.ftl +++ b/Resources/Locale/ru-RU/job/job.ftl @@ -3,4 +3,4 @@ job-greet-introduce-job-name = Ваша должность: { $jobName }. job-greet-important-disconnect-admin-notify = Вы играете важную роль для игрового прогресса. Если вы вынуждены отключиться, пожалуйста, сообщите об этом администраторам через "Админ помощь". job-greet-supervisors-warning = Как { $jobName } вы непосредственно подчиняетесь { $supervisors }. Особые обстоятельства могут изменить это. job-greet-crew-shortages = Поскольку команда этой станция изначально была недоукомплектована, вашей ID-карте был дан дополнительный доступ. -job-not-available-wait-in-lobby = Раунд начался, но вам не досталась ни одна из предпочтительных ролей (или вы не выбрали ни одну предпочтительную роль), и вы решили остаться в лобби. Вы можете изменить это поведение на экране персонализации. +job-not-available-wait-in-lobby = Раунд начался, но вам не досталась ни одна из предпочтительных ролей (или вы не выбрали ни одну предпочтительную роль), и вы решили остаться в лобби. Вы можете изменить это поведение на экране персонализации. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/job/role-ban-command.ftl b/Resources/Locale/ru-RU/job/role-ban-command.ftl index 621c600e4f2..0ed2fd287dd 100644 --- a/Resources/Locale/ru-RU/job/role-ban-command.ftl +++ b/Resources/Locale/ru-RU/job/role-ban-command.ftl @@ -22,9 +22,8 @@ cmd-roleban-hint-duration-6 = 1 месяц cmd-roleunban-desc = Возвращает пользователю возможность играть на роли cmd-roleunban-help = Использование: roleunban -cmd-roleunban-unable-to-parse-id = - Не удалось спарсить { $id } как ban id integer. - { $help } +cmd-roleunban-unable-to-parse-id = Не удалось спарсить { $id } как ban id integer. + { $help } ## Completion result hints cmd-roleunban-hint-1 = @@ -45,11 +44,10 @@ cmd-roleban-severity-parse = ${ severity } не является валидно cmd-roleban-arg-count = Недопустимое количество аргументов. cmd-roleban-job-parse = Работа { $job } не существует. cmd-roleban-name-parse = Невозможно найти игрока с таким именем. -cmd-roleban-existing = { $target } уже имеет запрет на роль { $role }. cmd-roleban-success = { $target } запрещено играть на роли { $role } по причине { $reason } { $length }. cmd-roleban-inf = навсегда -cmd-roleban-until = до { $expires } +cmd-roleban-until = до { $expires } # Department bans cmd-departmentban-desc = Запрещает пользователю играть на ролях, входящих в отдел diff --git a/Resources/Locale/ru-RU/kitchen/components/handheld-grinder.ftl b/Resources/Locale/ru-RU/kitchen/components/handheld-grinder.ftl index 6ab76c29984..5676642ddd0 100644 --- a/Resources/Locale/ru-RU/kitchen/components/handheld-grinder.ftl +++ b/Resources/Locale/ru-RU/kitchen/components/handheld-grinder.ftl @@ -1,6 +1,6 @@ -handheld-grinder-cannot-juice = You cannot juice {THE($item)}! -handheld-grinder-cannot-grind = You cannot grind {THE($item)}! +handheld-grinder-cannot-juice = You cannot juice { THE($item) }! +handheld-grinder-cannot-grind = You cannot grind { THE($item) }! -handheld-grinder-default = You finished processing {THE($item)}. -handheld-grinder-juiced = You finished juicing {THE($item)}. -handheld-grinder-grinded = You finished grinding {THE($item)}. +handheld-grinder-default = You finished processing { THE($item) }. +handheld-grinder-juiced = You finished juicing { THE($item) }. +handheld-grinder-grinded = You finished grinding { THE($item) }. diff --git a/Resources/Locale/ru-RU/kitchen/components/kitchen-spike-component.ftl b/Resources/Locale/ru-RU/kitchen/components/kitchen-spike-component.ftl index 2b1910a17d3..5335cd4c43c 100644 --- a/Resources/Locale/ru-RU/kitchen/components/kitchen-spike-component.ftl +++ b/Resources/Locale/ru-RU/kitchen/components/kitchen-spike-component.ftl @@ -8,13 +8,12 @@ comp-kitchen-spike-hook-self = Вы бросаетесь на { $hook }! comp-kitchen-spike-hook-self-other = { CAPITALIZE($victim) } бросается на { $hook }! comp-kitchen-spike-hook-other-self = Вы повесили { CAPITALIZE($victim) } на { $hook }! -comp-kitchen-spike-hook-other = - { CAPITALIZE($user) } { GENDER($user) -> - [male] повесил - [female] повесила - [epicene] повесили - *[neuter] повесило - } { CAPITALIZE($victim) } на { $hook }! +comp-kitchen-spike-hook-other = { CAPITALIZE($user) } { GENDER($user) -> + [male] повесил + [female] повесила + [epicene] повесили + *[neuter] повесило +} { CAPITALIZE($victim) } на { $hook }! comp-kitchen-spike-begin-unhook-self = Вы начинаете слезать с { $hook }! comp-kitchen-spike-begin-unhook-self-other = { CAPITALIZE($victim) } начинает слезать с { $hook }! @@ -26,25 +25,23 @@ comp-kitchen-spike-unhook-self = Вы слезли с { $hook }! comp-kitchen-spike-unhook-self-other = { CAPITALIZE($victim) } слез с { $hook }! comp-kitchen-spike-unhook-other-self = Вы сняли { CAPITALIZE($victim) } с { $hook }! -comp-kitchen-spike-unhook-other = - { CAPITALIZE($user) } { GENDER($user) -> - [male] снял - [female] сняла - [epicene] сняли - *[neuter] сняло - } { CAPITALIZE($victim) } с { $hook }! +comp-kitchen-spike-unhook-other = { CAPITALIZE($user) } { GENDER($user) -> + [male] снял + [female] сняла + [epicene] сняли + *[neuter] сняло +} { CAPITALIZE($victim) } с { $hook }! comp-kitchen-spike-begin-butcher-self = Вы начинаете разделывать { $victim }! comp-kitchen-spike-begin-butcher = { CAPITALIZE($user) } начинает разделывать { $victim }! comp-kitchen-spike-butcher-self = Вы разделали { $victim }! -comp-kitchen-spike-butcher = - { CAPITALIZE($user) } { GENDER($user) -> - [male] разделал - [female] разделала - [epicene] разделали - *[neuter] разделало - } { $victim }! +comp-kitchen-spike-butcher = { CAPITALIZE($user) } { GENDER($user) -> + [male] разделал + [female] разделала + [epicene] разделали + *[neuter] разделало +} { $victim }! comp-kitchen-spike-unhook-verb = Снять с крюка @@ -53,8 +50,10 @@ comp-kitchen-spike-hooked = [color=red]На крюке { CAPITALIZE($victim) }![ comp-kitchen-spike-meat-name = { $name } ({ $victim }) comp-kitchen-spike-victim-examine = [color=orange]{ CAPITALIZE(SUBJECT($target)) } { CONJUGATE-BASIC($target, "выглядят", "выглядит") } довольно { GENDER($target) -> - [male] худым - [female] худой - [epicene] худыми - *[neuter] худым - }.[/color] + [male] худым + [female] худой + [epicene] худыми + *[neuter] худым +}.[/color] + +comp-kitchen-spike-deconstruct-occupied = Next, [color=red]unhook the body[/color]. diff --git a/Resources/Locale/ru-RU/kitchen/components/microwave-component.ftl b/Resources/Locale/ru-RU/kitchen/components/microwave-component.ftl index 303f71ed2e8..1b370c7a579 100644 --- a/Resources/Locale/ru-RU/kitchen/components/microwave-component.ftl +++ b/Resources/Locale/ru-RU/kitchen/components/microwave-component.ftl @@ -5,9 +5,7 @@ microwave-component-interact-using-broken = Она сломана! microwave-component-interact-using-container-full = Контейнер заполнен microwave-component-interact-using-transfer-success = Перенесено { $amount } ед. microwave-component-interact-using-transfer-fail = Это не сработает! -microwave-component-suicide-multi-head-others-message = { $victim } пытается зажарить свои головы! microwave-component-suicide-others-message = { $victim } пытается зажарить свою голову! -microwave-component-suicide-multi-head-message = Вы зажариваете свои головы! microwave-component-suicide-message = Вы зажариваете свою голову! microwave-component-interact-full = Она заполнена. microwave-component-interact-item-too-big = { CAPITALIZE($item) } не может поместиться в микроволновой печи из-за размера! diff --git a/Resources/Locale/ru-RU/late-join/late-join-gui.ftl b/Resources/Locale/ru-RU/late-join/late-join-gui.ftl index 2c4a5d92729..320e1f2b79c 100644 --- a/Resources/Locale/ru-RU/late-join/late-join-gui.ftl +++ b/Resources/Locale/ru-RU/late-join/late-join-gui.ftl @@ -1,11 +1,10 @@ late-join-gui-title = Позднее присоединение late-join-gui-jobs-amount-in-department-tooltip = { $departmentName } late-join-gui-department-jobs-label = { $departmentName } -late-join-gui-job-slot-capped = - { $jobName } ({ $amount } { $amount -> - [zero] не доступна - [one] доступна - [few] доступны - *[other] доступно - }) +late-join-gui-job-slot-capped = { $jobName } ({ $amount } { $amount -> + [zero] не доступна + [one] доступна + [few] доступны + *[other] доступно +}) late-join-gui-job-slot-uncapped = { $jobName } (Без ограничений) diff --git a/Resources/Locale/ru-RU/lathe/ui/lathe-menu.ftl b/Resources/Locale/ru-RU/lathe/ui/lathe-menu.ftl index 96a4eb35f10..695ed6a2eef 100644 --- a/Resources/Locale/ru-RU/lathe/ui/lathe-menu.ftl +++ b/Resources/Locale/ru-RU/lathe/ui/lathe-menu.ftl @@ -6,28 +6,25 @@ lathe-menu-search-designs = Поиск проектов lathe-menu-category-all = Всё lathe-menu-search-filter = Фильтр lathe-menu-amount = Кол-во: -lathe-menu-recipe-count = - { $count -> - [1] { $count } Рецепт - [few] { $count } Рецепта - *[other] { $count } Рецептов - } +lathe-menu-recipe-count = { $count -> + [1] { $count } Рецепт + [few] { $count } Рецепта + *[other] { $count } Рецептов +} lathe-menu-reagent-slot-examine = Сбоку имеется отверстие для мензурки. lathe-reagent-dispense-no-container = Жидкость выливается из { $name } на пол! lathe-menu-result-reagent-display = { $reagent } ({ $amount } ед.) lathe-menu-material-display = { $material } { $amount } lathe-menu-tooltip-display = { $amount } { $material } lathe-menu-description-display = [italic]{ $description }[/italic] -lathe-menu-material-amount = - { $amount -> - [1] { NATURALFIXED($amount, 2) } ({ $unit }) - *[other] { NATURALFIXED($amount, 2) } ({ $unit }) - } -lathe-menu-material-amount-missing = - { $amount -> - [1] { NATURALFIXED($amount, 2) } { $unit } { $material } ([color=red]{ NATURALFIXED($missingAmount, 2) } { $unit } не хватает[/color]) - *[other] { NATURALFIXED($amount, 2) } { $unit } { $material } ([color=red]{ NATURALFIXED($missingAmount, 2) } { $unit } не хватает[/color]) - } +lathe-menu-material-amount = { $amount -> + [1] { NATURALFIXED($amount, 2) } ({ $unit }) + *[other] { NATURALFIXED($amount, 2) } ({ $unit }) +} +lathe-menu-material-amount-missing = { $amount -> + [1] { NATURALFIXED($amount, 2) } { $unit } { $material } ([color=red]{ NATURALFIXED($missingAmount, 2) } { $unit } не хватает[/color]) + *[other] { NATURALFIXED($amount, 2) } { $unit } { $material } ([color=red]{ NATURALFIXED($missingAmount, 2) } { $unit } не хватает[/color]) +} lathe-menu-no-materials-message = Материалы не загружены lathe-menu-silo-linked-message = Хранилище связано lathe-menu-fabricating-message = Производится... diff --git a/Resources/Locale/ru-RU/launcher/launcher-connecting.ftl b/Resources/Locale/ru-RU/launcher/launcher-connecting.ftl index bd5e4dd2108..6f9f70d0a81 100644 --- a/Resources/Locale/ru-RU/launcher/launcher-connecting.ftl +++ b/Resources/Locale/ru-RU/launcher/launcher-connecting.ftl @@ -12,9 +12,8 @@ connecting-disconnected = Отключён от сервера: connecting-tip = Не умирай! connecting-window-tip = Совет { $numberTip } connecting-version = версия 0.1 -connecting-fail-reason = - Не удалось подключиться к серверу: - { $reason } +connecting-fail-reason = Не удалось подключиться к серверу: + { $reason } connecting-state-NotConnecting = Не подключён connecting-state-ResolvingHost = Определение хоста connecting-state-EstablishingConnection = Установка соединения diff --git a/Resources/Locale/ru-RU/light/components/light-replacer-component.ftl b/Resources/Locale/ru-RU/light/components/light-replacer-component.ftl index 05c77ad2add..2b31bbcdd58 100644 --- a/Resources/Locale/ru-RU/light/components/light-replacer-component.ftl +++ b/Resources/Locale/ru-RU/light/components/light-replacer-component.ftl @@ -17,4 +17,4 @@ comp-light-replacer-refill-from-storage = Вы пополнили { $light-repla comp-light-replacer-no-lights = Здесь пусто. comp-light-replacer-has-lights = Здесь находится следующее: -comp-light-replacer-light-listing = [color=yellow]{ $amount }[/color] ед. [color=gray]{ $name }[/color] +comp-light-replacer-light-listing = [color=yellow]{ $amount }[/color] ед. [color=gray]{ $name }[/color] \ No newline at end of file diff --git a/Resources/Locale/ru-RU/light/components/powered-ligth-component.ftl b/Resources/Locale/ru-RU/light/components/powered-ligth-component.ftl index 3baf09ab4f8..8fc505f11fa 100644 --- a/Resources/Locale/ru-RU/light/components/powered-ligth-component.ftl +++ b/Resources/Locale/ru-RU/light/components/powered-ligth-component.ftl @@ -1 +1 @@ -powered-light-component-burn-hand = Вы обжигаете руку! +powered-light-component-burn-hand = Вы обжигаете руку! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/light/components/unpowered-flashlight-component.ftl b/Resources/Locale/ru-RU/light/components/unpowered-flashlight-component.ftl index 46d1c563005..04301fe22a1 100644 --- a/Resources/Locale/ru-RU/light/components/unpowered-flashlight-component.ftl +++ b/Resources/Locale/ru-RU/light/components/unpowered-flashlight-component.ftl @@ -1,2 +1,2 @@ # ToggleFlashlightVerb -toggle-flashlight-verb-get-data-text = Переключить фонарик +toggle-flashlight-verb-get-data-text = Переключить фонарик \ No newline at end of file diff --git a/Resources/Locale/ru-RU/limited-charges/limited-charges.ftl b/Resources/Locale/ru-RU/limited-charges/limited-charges.ftl index 9d3eb71d313..8576b0f96be 100644 --- a/Resources/Locale/ru-RU/limited-charges/limited-charges.ftl +++ b/Resources/Locale/ru-RU/limited-charges/limited-charges.ftl @@ -1,14 +1,12 @@ -limited-charges-charges-remaining = - Имеется { $charges } { $charges -> - [one] заряд - [few] заряда - *[other] зарядов - }. +limited-charges-charges-remaining = Имеется { $charges } { $charges -> + [one] заряд + [few] заряда + *[other] зарядов +}. limited-charges-max-charges = Имеет [color=green]максимум[/color] зарядов. -limited-charges-recharging = - До нового заряда { $seconds -> - [one] осталась [color=yellow]{ $seconds }[/color] секунда. - [few] осталось [color=yellow]{ $seconds }[/color] секунды. - *[other] осталось [color=yellow]{ $seconds }[/color] секунд. - } +limited-charges-recharging = До нового заряда { $seconds -> + [one] осталась [color=yellow]{ $seconds }[/color] секунда. + [few] осталось [color=yellow]{ $seconds }[/color] секунды. + *[other] осталось [color=yellow]{ $seconds }[/color] секунд. +} diff --git a/Resources/Locale/ru-RU/lobby/lobby-state.ftl b/Resources/Locale/ru-RU/lobby/lobby-state.ftl index df4a9c2d402..d1a753ebeb4 100644 --- a/Resources/Locale/ru-RU/lobby/lobby-state.ftl +++ b/Resources/Locale/ru-RU/lobby/lobby-state.ftl @@ -13,11 +13,11 @@ lobby-state-player-status-round-time = Время раунда: { $hours } { $hours -> [one] час [few] часа - *[other] часов + *[other] часов } и { $minutes } { $minutes -> [one] минута [few] минуты - *[other] минут + *[other] минут } lobby-state-song-text = Играет: [color=white]{ $songTitle }[/color], исполнитель [color=white]{ $songArtist }[/color] lobby-state-song-no-song-text = В лобби не играет песня. @@ -31,7 +31,7 @@ lobby-state-playtime-comment-normal = Сегодня вы провели в игре { $hours } { $hours -> [1] час [few] часа - *[other] часов + *[other] часов }. Не забывайте отдыхать! lobby-state-playtime-comment-concerning = Сегодня вы наиграли { $hours } часов. Пожалуйста, отдохните. lobby-state-playtime-comment-grasstouchless = { $hours } часов. Подумайте о выходе из игры, чтобы заняться своими делами. diff --git a/Resources/Locale/ru-RU/lock/bypass-lock-component.ftl b/Resources/Locale/ru-RU/lock/bypass-lock-component.ftl index 8c3d7785f99..ebc4e54adf7 100644 --- a/Resources/Locale/ru-RU/lock/bypass-lock-component.ftl +++ b/Resources/Locale/ru-RU/lock/bypass-lock-component.ftl @@ -1,4 +1,4 @@ bypass-lock-verb = Force open the access lock bypass-lock-disabled-healthy = The lock needs to be damaged further before it can be forced open. -bypass-lock-disabled-wrong-tool = This lock requires {$quality} to be forced open. +bypass-lock-disabled-wrong-tool = This lock requires { $quality } to be forced open. bypass-lock-disabled-already-open = The lock is already open. diff --git a/Resources/Locale/ru-RU/logic-gates/logic-gates.ftl b/Resources/Locale/ru-RU/logic-gates/logic-gates.ftl index 55872df6c7c..84e0cf9315f 100644 --- a/Resources/Locale/ru-RU/logic-gates/logic-gates.ftl +++ b/Resources/Locale/ru-RU/logic-gates/logic-gates.ftl @@ -2,16 +2,14 @@ logic-gate-examine = Сейчас установлена логическая о logic-gate-cycle = Переключено на операцию { $gate } -power-sensor-examine = - It is currently checking the network's { $output -> - [true] output - *[false] input - } battery. +power-sensor-examine = It is currently checking the network's { $output -> + [true] output + *[false] input +} battery. power-sensor-voltage-examine = It is checking the { $voltage } power network. -power-sensor-switch = - Switched to checking the network's { $output -> - [true] output - *[false] input - } battery. +power-sensor-switch = Switched to checking the network's { $output -> + [true] output + *[false] input +} battery. power-sensor-voltage-switch = Switched network to { $voltage }! diff --git a/Resources/Locale/ru-RU/machine-linking/components/signal-linker-component.ftl b/Resources/Locale/ru-RU/machine-linking/components/signal-linker-component.ftl index b20b0f9881b..af42d06c77a 100644 --- a/Resources/Locale/ru-RU/machine-linking/components/signal-linker-component.ftl +++ b/Resources/Locale/ru-RU/machine-linking/components/signal-linker-component.ftl @@ -14,4 +14,4 @@ signal-linking-verb-text-link-default = Связать стандартные п signal-linking-verb-success = Успешно подключены все стандартные соединения { $machine }. signal-linking-verb-fail = Не удалось подключить все стандартные соединения { $machine }. signal-linking-verb-disabled-no-transmitter = Сначала вам необходимо взаимодействовать с передатчиком, затем соедините со стандартным портом. -signal-linking-verb-disabled-no-receiver = Сначала вам необходимо взаимодействовать с приёмником, затем соедините со стандартным портом. +signal-linking-verb-disabled-no-receiver = Сначала вам необходимо взаимодействовать с приёмником, затем соедините со стандартным портом. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/magic/spells-actions.ftl b/Resources/Locale/ru-RU/magic/spells-actions.ftl index 27e3d3fb4c9..679e64344c2 100644 --- a/Resources/Locale/ru-RU/magic/spells-actions.ftl +++ b/Resources/Locale/ru-RU/magic/spells-actions.ftl @@ -8,4 +8,4 @@ action-speech-spell-summon-magic = RYGOIN FEMA-VERECO action-speech-spell-mind-swap = GIN'YU CAPAN! action-speech-spell-cluwne = !КНОХ action-speech-spell-slip = СКУОЛЬ ЗКО! -action-speech-spell-charge = ДИ'РИ СЕЛ! +action-speech-spell-charge = ДИ'РИ СЕЛ! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/main-menu/main-menu.ftl b/Resources/Locale/ru-RU/main-menu/main-menu.ftl index 35c9af5e9fd..074a42c155e 100644 --- a/Resources/Locale/ru-RU/main-menu/main-menu.ftl +++ b/Resources/Locale/ru-RU/main-menu/main-menu.ftl @@ -1,10 +1,8 @@ -main-menu-invalid-username-with-reason = - Неверное имя пользователя: - { $invalidReason } +main-menu-invalid-username-with-reason = Неверное имя пользователя: + { $invalidReason } main-menu-invalid-username = Неверное имя пользователя -main-menu-failed-to-connect = - Не удалось подключиться: - { $reason } +main-menu-failed-to-connect = Не удалось подключиться: + { $reason } main-menu-username-label = Имя пользователя: main-menu-username-text = Имя пользователя main-menu-address-label = Адрес сервера: diff --git a/Resources/Locale/ru-RU/mapping/editor.ftl b/Resources/Locale/ru-RU/mapping/editor.ftl index 2e53e3720e6..d10ab34f44c 100644 --- a/Resources/Locale/ru-RU/mapping/editor.ftl +++ b/Resources/Locale/ru-RU/mapping/editor.ftl @@ -4,4 +4,4 @@ mapping-decals = Декали mapping-replace = Заменить mapping-erase-entity = Стереть сущность -mapping-erase-decal = Стереть декаль +mapping-erase-decal = Стереть декаль \ No newline at end of file diff --git a/Resources/Locale/ru-RU/markings/gauze.ftl b/Resources/Locale/ru-RU/markings/gauze.ftl index 7431e937c0d..a99b8938bd6 100644 --- a/Resources/Locale/ru-RU/markings/gauze.ftl +++ b/Resources/Locale/ru-RU/markings/gauze.ftl @@ -103,3 +103,48 @@ marking-GauzeMothLowerLegRight = Инсектоид, Бинт, Перевязь marking-GauzeMothLowerLegLeft-gauze_moth_lowerleg_l = Инсектоид, Бинт, Перевязь голени (Левый) marking-GauzeMothLowerLegLeft = Инсектоид, Бинт, Перевязь голени (Левый) +marking-GauzeVulpStomach-gauze_vulp_abdomen = Vulpkanin Gauze Stomach Wrap +marking-GauzeVulpStomach = Vulpkanin Gauze Stomach Wrap + +marking-GauzeVulpBlindfold-gauze_vulp_blindfold = Vulpkanin Blindfold +marking-GauzeVulpBlindfold = Vulpkanin Blindfold + +marking-GauzeVulpBoxerwrapLeft-gauze_vulp_boxerwrap_l = Vulpkanin Gauze Hand Wrap (Left) +marking-GauzeVulpBoxerwrapLeft = Vulpkanin Gauze Hand Wrap (Left) + +marking-GauzeVulpBoxerwrapRight-gauze_vulp_boxerwrap_r = Vulpkanin Gauze Hand Wrap (Right) +marking-GauzeVulpBoxerwrapRight = Vulpkanin Gauze Hand Wrap (Right) + +marking-GauzeVulpHead-gauze_vulp_head = Vulpkanin Gauze Head Wrap +marking-GauzeVulpHead = Vulpkanin Gauze Head Wrap + +marking-GauzeVulpLeftArm-gauze_vulp_leftarm = Vulpkanin Gauze Arm Wrap (Left) +marking-GauzeVulpLeftArm = Vulpkanin Gauze Arm Wrap (Left) + +marking-GauzeVulpLefteyePatch-gauze_vulp_lefteye_2 = Vulpkanin Gauze Eyepatch (Left) +marking-GauzeVulpLefteyePatch = Vulpkanin Gauze Eyepatch (Left) + +marking-GauzeVulpLowerArmRight-gauze_vulp_lowerarm_r = Vulpkanin Gauze Wrist Wrap (Right) +marking-GauzeVulpLowerArmRight = Vulpkanin Gauze Wrist Wrap (Right) + +marking-GauzeVulpLowerLegLeft-gauze_vulp_lowerleg_l = Vulpkanin Gauze Ankle Wrap (Left) +marking-GauzeVulpLowerLegLeft = Vulpkanin Gauze Ankle Wrap (Left) + +marking-GauzeVulpLowerLegRight-gauze_vulp_lowerleg_r = Vulpkanin Gauze Ankle Wrap (Right) +marking-GauzeVulpLowerLegRight = Vulpkanin Gauze Ankle Wrap (Right) + +marking-GauzeVulpRighteyePatch-gauze_vulp_righteye_2 = Vulpkanin Gauze Eyepatch (Right) +marking-GauzeVulpRighteyePatch = Vulpkanin Gauze Eyepatch (Right) + +marking-GauzeVulpShoulder-gauze_vulp_shoulder = Vulpkanin Gauze Shoulder Sling +marking-GauzeVulpShoulder = Vulpkanin Gauze Shoulder Sling + +marking-GauzeVulpUpperArmRight-gauze_vulp_upperarm_r = Vulpkanin Gauze Forearm Wrap (Right) +marking-GauzeVulpUpperArmRight = Vulpkanin Gauze Forearm Wrap (Right) + +marking-GauzeVulpUpperLegLeft-gauze_vulp_upperleg_l = Vulpkanin Gauze Thigh Wrap (Left) +marking-GauzeVulpUpperLegLeft = Vulpkanin Gauze Thigh Wrap (Left) + +marking-GauzeVulpUpperLegRight-gauze_vulp_upperleg_r = Vulpkanin Gauze Thigh Wrap (Right) +marking-GauzeVulpUpperLegRight = Vulpkanin Gauze Thigh Wrap (Right) + diff --git a/Resources/Locale/ru-RU/markings/moth.ftl b/Resources/Locale/ru-RU/markings/moth.ftl index 75291eed1a1..942a60b6f3c 100644 --- a/Resources/Locale/ru-RU/markings/moth.ftl +++ b/Resources/Locale/ru-RU/markings/moth.ftl @@ -144,7 +144,7 @@ marking-MothChestCharred = Ниан, Грудь (Обугленные) marking-MothHeadCharred-charred_head = Голова marking-MothHeadCharred = Ниан, Голова (Обугленные) -marking-MothLLegCharred-charred_l_leg = Левая Нога +marking-MothLLegCharred-charred_l_leg = Левая Нога marking-MothLLegCharred = Ниан, Левая нога (Обугленные) marking-MothRLegCharred-charred_r_leg = Правая Нога diff --git a/Resources/Locale/ru-RU/markings/scars.ftl b/Resources/Locale/ru-RU/markings/scars.ftl index 615bc832fe4..eb1eb482dd6 100644 --- a/Resources/Locale/ru-RU/markings/scars.ftl +++ b/Resources/Locale/ru-RU/markings/scars.ftl @@ -32,4 +32,4 @@ marking-ScarEyeRightSmall-scar_eye_right_small = Шрам на глазу (Пр marking-ScarEyeRightSmall = Шрам на глазу (Правый, Маленький) marking-ScarEyeLeftSmall-scar_eye_left_small = Шрам на глазу (Левый, Маленький) -marking-ScarEyeLeftSmall = Шрам на глазу (Левый, Маленький) +marking-ScarEyeLeftSmall = Шрам на глазу (Левый, Маленький) \ No newline at end of file diff --git a/Resources/Locale/ru-RU/markings/undergarment.ftl b/Resources/Locale/ru-RU/markings/undergarment.ftl index 1a2a504dc44..e624ed85386 100644 --- a/Resources/Locale/ru-RU/markings/undergarment.ftl +++ b/Resources/Locale/ru-RU/markings/undergarment.ftl @@ -51,4 +51,4 @@ marking-UndergarmentBottomBoxersVulpkanin-boxers_vulpkanin = Боксёры marking-UndergarmentBottomBriefsVulpkanin = Трусы marking-UndergarmentBottomBriefsVulpkanin-briefs_vulpkanin = Трусы marking-UndergarmentBottomSatinVulpkanin = Сатин -marking-UndergarmentBottomSatinVulpkanin-satin_vulpkanin = Сатин +marking-UndergarmentBottomSatinVulpkanin-satin_vulpkanin = Сатин \ No newline at end of file diff --git a/Resources/Locale/ru-RU/markings/vulpkanin.ftl b/Resources/Locale/ru-RU/markings/vulpkanin.ftl index 84b32558525..dd90ba47dbb 100644 --- a/Resources/Locale/ru-RU/markings/vulpkanin.ftl +++ b/Resources/Locale/ru-RU/markings/vulpkanin.ftl @@ -120,6 +120,9 @@ marking-VulpTailVulpFade-vulp = Хвост вульпканина (Основа) marking-VulpTailVulpFade-vulp-fade = Хвост вульпканина (Градиент) marking-VulpTailVulpFade = Вульпканин (Градиент) +marking-VulpTailCoyote-coyote = Coyote Tail (Base) +marking-VulpTailCoyote = Vulpkanin Coyote + # Chest diff --git a/Resources/Locale/ru-RU/mass-media/news-ui.ftl b/Resources/Locale/ru-RU/mass-media/news-ui.ftl index b76033b842b..06e862e6eb1 100644 --- a/Resources/Locale/ru-RU/mass-media/news-ui.ftl +++ b/Resources/Locale/ru-RU/mass-media/news-ui.ftl @@ -6,7 +6,7 @@ news-read-ui-default-title = Новости станции news-read-ui-not-found-text = Статей не найдено news-read-ui-time-prefix-text = Время публикации: news-reader-ui-mute-tooltip = Отключить уведомления -news-read-ui-notification-off = ̶♫̶ +news-read-ui-notification-off = ̶♫̶ news-read-ui-notification-on = ♫ news-read-ui-no-author = Аноним news-read-ui-author-prefix = Автор: @@ -19,19 +19,17 @@ news-write-ui-cancel-text = Очистить news-write-ui-save-text = Сохранить news-write-ui-preview-text = Предпросмотр news-write-ui-article-count-0 = 0 статей -news-write-ui-article-count-text = - { $count } { $count -> - [one] статья - [few] статьи - *[other] статей - } +news-write-ui-article-count-text = { $count } { $count -> + [one] статья + [few] статьи + *[other] статей +} news-write-ui-footer-text = Система управления новостями Менеджер#Новостей™ news-write-ui-new-article = Новая статья news-write-ui-article-name-label = Заголовок: news-write-no-access-popup = Нет доступа news-writer-text-length-exceeded = Текст превышает максимальный объём -news-write-ui-richtext-tooltip = - Новостные статьи поддерживают формат Rich Text +news-write-ui-richtext-tooltip = Новостные статьи поддерживают формат Rich Text Поддерживаются следующие теги Rich Text: { "[color=Gray][bullet/]heading \\[size=1-3\\]" } { "[bullet/]bold" } diff --git a/Resources/Locale/ru-RU/materials/silo.ftl b/Resources/Locale/ru-RU/materials/silo.ftl index e2aab31a8da..a1682e63f6f 100644 --- a/Resources/Locale/ru-RU/materials/silo.ftl +++ b/Resources/Locale/ru-RU/materials/silo.ftl @@ -1,11 +1,10 @@ ore-silo-ui-title = Хранилище материалов ore-silo-ui-label-clients = Машины ore-silo-ui-label-mats = Материалы -ore-silo-ui-itemlist-entry = - { $linked -> - [true] { "[Связано] " } - *[False] { "" } - } { $name } ({ $beacon }) { $inRange -> - [true] { "" } - *[false] (Вне зоны доступа) - } +ore-silo-ui-itemlist-entry = { $linked -> + [true] { "[Связано] " } + *[False] { "" } +} { $name } ({ $beacon }) { $inRange -> + [true] { "" } + *[false] (Вне зоны доступа) +} diff --git a/Resources/Locale/ru-RU/medical/components/cryo-pod-component.ftl b/Resources/Locale/ru-RU/medical/components/cryo-pod-component.ftl index f8f23f3779f..3a0bdf1e4fa 100644 --- a/Resources/Locale/ru-RU/medical/components/cryo-pod-component.ftl +++ b/Resources/Locale/ru-RU/medical/components/cryo-pod-component.ftl @@ -20,11 +20,11 @@ cryo-pod-window-status-cooling = Охлаждение пациента... cryo-pod-window-checklist-pressure = Герметезировано cryo-pod-window-checklist-chemicals = Доступные реагенты cryo-pod-window-checklist-temperature = Криогенная температура -cryo-pod-window-checklist-fail = {$item} — НЕТ +cryo-pod-window-checklist-fail = { $item } — НЕТ cryo-pod-window-warning-header = ВНИМАНИЕ cryo-pod-window-low-pressure-warning = Опасно низкое давление. Для безопасной работы давление газа должно составлять приблизительно 100 кПа. -cryo-pod-window-high-temperature-warning = Температура слишком высокая. {CAPITALIZE($reagent)} требует температуру ниже {$temperature} К. +cryo-pod-window-high-temperature-warning = Температура слишком высокая. { CAPITALIZE($reagent) } требует температуру ниже { $temperature } К. cryo-pod-window-error-header = ОШИБКА # Shown when the eject button is pressed on a locked pod. @@ -32,7 +32,7 @@ cryo-pod-window-eject-error = Сбой механизма извлечения. cryo-pod-window-chems-no-beaker = Ёмкость не вставлена cryo-pod-window-chems-empty-beaker = Ёмкость пуста -cryo-pod-window-chems-injecting-tooltip = Ввод {$quantity}u +cryo-pod-window-chems-injecting-tooltip = Ввод { $quantity }u cryo-pod-window-inject-1u = 1u cryo-pod-window-inject-5u = 5u cryo-pod-window-inject-10u = 10u @@ -42,3 +42,5 @@ cryo-pod-window-eject-beaker = Извлечь cryo-pod-window-eject-patient = Извлечь пациента cryo-pod-window-health-no-damage = Повреждения не обнаружены + + diff --git a/Resources/Locale/ru-RU/metabolism/metabolism-component.ftl b/Resources/Locale/ru-RU/metabolism/metabolism-component.ftl index afa6ba59e21..2fab68aa90e 100644 --- a/Resources/Locale/ru-RU/metabolism/metabolism-component.ftl +++ b/Resources/Locale/ru-RU/metabolism/metabolism-component.ftl @@ -1,3 +1,3 @@ metabolism-component-is-comfortable = Вы чувствуете себя комфортно metabolism-component-is-sweating = Вы потеете -metabolism-component-is-shivering = Вы дрожите +metabolism-component-is-shivering = Вы дрожите \ No newline at end of file diff --git a/Resources/Locale/ru-RU/metabolism/metabolism-groups.ftl b/Resources/Locale/ru-RU/metabolism/metabolism-groups.ftl deleted file mode 100644 index 81495801023..00000000000 --- a/Resources/Locale/ru-RU/metabolism/metabolism-groups.ftl +++ /dev/null @@ -1,8 +0,0 @@ -metabolism-group-poison = Яды -metabolism-group-medicine = Лекарства -metabolism-group-narcotic = Наркотики -metabolism-group-alcohol = Алкоголь -metabolism-group-food = Пища -metabolism-group-drink = Напитки -metabolism-group-gas = Газы -metabolism-group-plant-metabolisms = Метаболизм растений diff --git a/Resources/Locale/ru-RU/metabolism/metabolism-stages.ftl b/Resources/Locale/ru-RU/metabolism/metabolism-stages.ftl new file mode 100644 index 00000000000..8988667c368 --- /dev/null +++ b/Resources/Locale/ru-RU/metabolism/metabolism-stages.ftl @@ -0,0 +1,6 @@ +metabolism-stage-respiration = Respiration +metabolism-stage-digestion = Digestion +metabolism-stage-bloodstream = Bloodstream +metabolism-stage-metabolites = Metabolites + +metabolism-stage-plant = Plant Metabolism diff --git a/Resources/Locale/ru-RU/mind/components/mind-component.ftl b/Resources/Locale/ru-RU/mind/components/mind-component.ftl index 3644d35049d..2cfaa6f2ec2 100644 --- a/Resources/Locale/ru-RU/mind/components/mind-component.ftl +++ b/Resources/Locale/ru-RU/mind/components/mind-component.ftl @@ -5,13 +5,12 @@ comp-mind-ghosting-prevented = Вы не можете стать призрак ## Messages displayed when a body is examined and in a certain state comp-mind-examined-catatonic = { CAPITALIZE(SUBJECT($ent)) } в кататоническом ступоре. Стрессы жизни в глубоком космосе, должно быть, оказались слишком тяжелы для { OBJECT($ent) }. Любое восстановление невозможно. -comp-mind-examined-dead = - { CAPITALIZE(SUBJECT($ent)) } { GENDER($ent) -> - [male] мёртв - [female] мертва - [epicene] мертвы - *[neuter] мертво - } +comp-mind-examined-dead = { CAPITALIZE(SUBJECT($ent)) } { GENDER($ent) -> + [male] мёртв + [female] мертва + [epicene] мертвы + *[neuter] мертво +} comp-mind-examined-ssd = { CAPITALIZE(SUBJECT($ent)) } рассеяно смотрит в пустоту и ни на что не реагирует. { CAPITALIZE(SUBJECT($ent)) } может скоро придти в себя. comp-mind-examined-dead-and-ssd = { CAPITALIZE(POSS-ADJ($ent)) } душа бездействует и может скоро вернуться. comp-mind-examined-dead-and-irrecoverable = { CAPITALIZE(POSS-ADJ($ent)) } душа покинула тело и пропала. Любое восстановление невозможно. diff --git a/Resources/Locale/ru-RU/mind/verbs/control-mob-verb.ftl b/Resources/Locale/ru-RU/mind/verbs/control-mob-verb.ftl index 080d02e8700..779a697c4b1 100644 --- a/Resources/Locale/ru-RU/mind/verbs/control-mob-verb.ftl +++ b/Resources/Locale/ru-RU/mind/verbs/control-mob-verb.ftl @@ -1 +1 @@ -control-mob-verb-get-data-text = Контролировать существо +control-mob-verb-get-data-text = Контролировать существо \ No newline at end of file diff --git a/Resources/Locale/ru-RU/mind/verbs/make-sentient-verb.ftl b/Resources/Locale/ru-RU/mind/verbs/make-sentient-verb.ftl index 00f85b0e1df..c311564659e 100644 --- a/Resources/Locale/ru-RU/mind/verbs/make-sentient-verb.ftl +++ b/Resources/Locale/ru-RU/mind/verbs/make-sentient-verb.ftl @@ -1 +1 @@ -make-sentient-verb-get-data-text = Сделать разумным +make-sentient-verb-get-data-text = Сделать разумным \ No newline at end of file diff --git a/Resources/Locale/ru-RU/morgue/components/crematorium-entity-storage-component.ftl b/Resources/Locale/ru-RU/morgue/components/crematorium-entity-storage-component.ftl index 4ffaf8cea65..9ac7e946f7e 100644 --- a/Resources/Locale/ru-RU/morgue/components/crematorium-entity-storage-component.ftl +++ b/Resources/Locale/ru-RU/morgue/components/crematorium-entity-storage-component.ftl @@ -1,9 +1,9 @@ crematorium-entity-storage-component-on-examine-details-is-burning = { CAPITALIZE($owner) } [color=red]активен[/color]! -crematorium-entity-storage-component-on-examine-details-has-contents = Индикатор содержимого [color=green]включён[/color], внутри что-то есть. +crematorium-entity-storage-component-on-examine-details-has-contents = Индикатор содержимого [color=green]включён[/color], внутри что-то есть. crematorium-entity-storage-component-on-examine-details-empty = Индикатор содержимого не горит, внутри ничего нет. crematorium-entity-storage-component-is-cooking-safety-message = Безопасность превыше всего, даже когда аппарат отключён! crematorium-entity-storage-component-suicide-message = Вы кремируете себя! crematorium-entity-storage-component-suicide-message-others = { $victim } кремирует { $victim }! # CremateVerb -cremate-verb-get-data-text = Кремировать +cremate-verb-get-data-text = Кремировать \ No newline at end of file diff --git a/Resources/Locale/ru-RU/morgue/components/morgue-entity-storage-component.ftl b/Resources/Locale/ru-RU/morgue/components/morgue-entity-storage-component.ftl index f3dc55945f1..1c9fc0c2d55 100644 --- a/Resources/Locale/ru-RU/morgue/components/morgue-entity-storage-component.ftl +++ b/Resources/Locale/ru-RU/morgue/components/morgue-entity-storage-component.ftl @@ -1,4 +1,4 @@ morgue-entity-storage-component-on-examine-details-body-has-soul = Индикатор содержимого [color=green]зелёный[/color], это тело ещё может быть спасено! morgue-entity-storage-component-on-examine-details-body-has-no-soul = Индикатор содержимого [color=red]красный[/color], внутри труп! Ой, погоди... morgue-entity-storage-component-on-examine-details-has-contents = Индикатор содержимого [color=yellow]жёлтый[/color], внутри что-то есть. -morgue-entity-storage-component-on-examine-details-empty = Индикатор содержимого не горит, внутри ничего нет. +morgue-entity-storage-component-on-examine-details-empty = Индикатор содержимого не горит, внутри ничего нет. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/navmap-beacons/station-beacons.ftl b/Resources/Locale/ru-RU/navmap-beacons/station-beacons.ftl index ef9b7dabef3..490390aa4d8 100644 --- a/Resources/Locale/ru-RU/navmap-beacons/station-beacons.ftl +++ b/Resources/Locale/ru-RU/navmap-beacons/station-beacons.ftl @@ -98,3 +98,4 @@ station-beacon-escape-pod-SW = Спасательная капсула ЮЗ station-beacon-escape-pod-W = Спасательная капсула З station-beacon-escape-pod-NW = Спасательная капсула СЗ station-beacon-vox = Вокс-комната + diff --git a/Resources/Locale/ru-RU/navmap-beacons/station_map.ftl b/Resources/Locale/ru-RU/navmap-beacons/station_map.ftl index baa4559b467..67303b0ab05 100644 --- a/Resources/Locale/ru-RU/navmap-beacons/station_map.ftl +++ b/Resources/Locale/ru-RU/navmap-beacons/station_map.ftl @@ -9,11 +9,10 @@ nav-beacon-toggle-visible = Видимый nav-beacon-toggle-invisible = Невидимый nav-beacon-text-label = Метка: nav-beacon-button-apply = Применить -nav-beacon-examine-text = - Маяк [color={ $enabled -> - [true] forestgreen]включён - *[false] crimson]выключен - }[/color], а на дисплее написано [color={ $color }]"{ $label }"[/color] +nav-beacon-examine-text = Маяк [color={ $enabled -> + [true] forestgreen]включён + *[false] crimson]выключен +}[/color], а на дисплее написано [color={ $color }]"{ $label }"[/color] nav-beacon-pos-no-beacons = неизвестно где nav-beacon-pos-format = [color={ $color }]около { $marker }[/color] diff --git a/Resources/Locale/ru-RU/ninja/ninja-actions.ftl b/Resources/Locale/ru-RU/ninja/ninja-actions.ftl index c989e0ee197..b8d65bf428a 100644 --- a/Resources/Locale/ru-RU/ninja/ninja-actions.ftl +++ b/Resources/Locale/ru-RU/ninja/ninja-actions.ftl @@ -6,11 +6,10 @@ ninja-cell-too-large = Этот источник питания не помещ ninja-download-fail = Сервер не содержит исследовательские данные... ninja-research-steal-fail = Никакие новые технологии не были украдены... -ninja-research-steal-success = - Вы украли { $count } { $count -> - [one] новую технологию - [few] новые технологии - *[other] новых технологий - } из { $server }. +ninja-research-steal-success = Вы украли { $count } { $count -> + [one] новую технологию + [few] новые технологии + *[other] новых технологий +} из { $server }. ninja-criminal-records-hack-announcement = ОШИБКА: В криминальных записях обнаружена [ИЗМЕНЕНО] ошибка #*;" diff --git a/Resources/Locale/ru-RU/nukeops/war-declarator.ftl b/Resources/Locale/ru-RU/nukeops/war-declarator.ftl index 11420f6bfef..a9948970e96 100644 --- a/Resources/Locale/ru-RU/nukeops/war-declarator.ftl +++ b/Resources/Locale/ru-RU/nukeops/war-declarator.ftl @@ -10,11 +10,10 @@ war-declarator-conditions-unknown = Неизвестно war-declarator-boost-possible = Возможно объявить войну war-declarator-boost-impossible = Невозможно объявить войну war-declarator-boost-declared = Война объявлена! Шаттл может быть отключён на... -war-declarator-boost-timer = - Оставшееся время: { $time } { $time -> - [one] минута - [few] минуты - *[other] минут - }. +war-declarator-boost-timer = Оставшееся время: { $time } { $time -> + [one] минута + [few] минуты + *[other] минут +}. war-declarator-default-message = Пограничный отряд Синдиката объявляет о своём намерении уничтожить станцию при помощи ядерного устройства и призывает экипаж предпринять ничтожную попытку остановить их. war-declarator-message-placeholder = Введите текст объявления... diff --git a/Resources/Locale/ru-RU/nukeops/war-ops.ftl b/Resources/Locale/ru-RU/nukeops/war-ops.ftl index df8d3fa9c1e..2900017c2c0 100644 --- a/Resources/Locale/ru-RU/nukeops/war-ops.ftl +++ b/Resources/Locale/ru-RU/nukeops/war-ops.ftl @@ -1,7 +1,6 @@ -war-ops-infiltrator-unavailable = - ОШИБКА: Выполняется перерасчёт БСС-перемещений. Расчётное время: { $time } { $time -> - [one] минута - [few] минуты - *[other] минут - }. +war-ops-infiltrator-unavailable = ОШИБКА: Выполняется перерасчёт БСС-перемещений. Расчётное время: { $time } { $time -> + [one] минута + [few] минуты + *[other] минут +}. war-ops-shuttle-call-unavailable = Эвакуационный шаттл в настоящее время недоступен. Пожалуйста, подождите diff --git a/Resources/Locale/ru-RU/nutrition/components/cream-pied-component.ftl b/Resources/Locale/ru-RU/nutrition/components/cream-pied-component.ftl index bb50c2332df..2b70f39f431 100644 --- a/Resources/Locale/ru-RU/nutrition/components/cream-pied-component.ftl +++ b/Resources/Locale/ru-RU/nutrition/components/cream-pied-component.ftl @@ -1,8 +1,7 @@ -cream-pied-component-on-hit-by-message = Вас КРЕМировали с помощью { $thrown }! -cream-pied-component-on-hit-by-message-others = - { CAPITALIZE($owner) } { GENDER($owner) -> - [male] КРЕМирован - [female] КРЕМирована - [epicene] КРЕМированы - *[neuter] КРЕМировано - } с помощью { $thrown }! +cream-pied-component-on-hit-by-message = Вас КРЕМировали с помощью { $thrown }! +cream-pied-component-on-hit-by-message-others = { CAPITALIZE($owner) } { GENDER($owner) -> + [male] КРЕМирован + [female] КРЕМирована + [epicene] КРЕМированы + *[neuter] КРЕМировано +} с помощью { $thrown }! diff --git a/Resources/Locale/ru-RU/nutrition/components/examinable-hunger-component.ftl b/Resources/Locale/ru-RU/nutrition/components/examinable-hunger-component.ftl index 72e789443c3..874cc2f5e75 100644 --- a/Resources/Locale/ru-RU/nutrition/components/examinable-hunger-component.ftl +++ b/Resources/Locale/ru-RU/nutrition/components/examinable-hunger-component.ftl @@ -1,33 +1,29 @@ -examinable-hunger-component-examine-overfed = - { CAPITALIZE(SUBJECT($entity)) } { CONJUGATE-BASIC($entity, "выглядят", "выглядит") } +examinable-hunger-component-examine-overfed = { CAPITALIZE(SUBJECT($entity)) } { CONJUGATE-BASIC($entity, "выглядят", "выглядит") } { GENDER($entity) -> - [male] сытым - [female] сытой - [epicene] сытыми - *[neuter] сытым - }. -examinable-hunger-component-examine-okay = - { CAPITALIZE(SUBJECT($entity)) } { CONJUGATE-BASIC($entity, "выглядят", "выглядит") } + [male] сытым + [female] сытой + [epicene] сытыми + *[neuter] сытым +}. +examinable-hunger-component-examine-okay = { CAPITALIZE(SUBJECT($entity)) } { CONJUGATE-BASIC($entity, "выглядят", "выглядит") } { GENDER($entity) -> - [male] довольным - [female] довольной - [epicene] довольными - *[neuter] довольным - }. -examinable-hunger-component-examine-peckish = - { CAPITALIZE(SUBJECT($entity)) } { CONJUGATE-BASIC($entity, "выглядят", "выглядит") } + [male] довольным + [female] довольной + [epicene] довольными + *[neuter] довольным +}. +examinable-hunger-component-examine-peckish = { CAPITALIZE(SUBJECT($entity)) } { CONJUGATE-BASIC($entity, "выглядят", "выглядит") } { GENDER($entity) -> - [male] проголодавшимся - [female] проголодавшейся - [epicene] проголодавшимися - *[neuter] проголодавшимся - }. -examinable-hunger-component-examine-starving = - { CAPITALIZE(SUBJECT($entity)) } { CONJUGATE-BASIC($entity, "выглядят", "выглядит") } + [male] проголодавшимся + [female] проголодавшейся + [epicene] проголодавшимися + *[neuter] проголодавшимся +}. +examinable-hunger-component-examine-starving = { CAPITALIZE(SUBJECT($entity)) } { CONJUGATE-BASIC($entity, "выглядят", "выглядит") } { GENDER($entity) -> - [male] изголодавшимся - [female] изголодавшейся - [epicene] изголодавшимися - *[neuter] изголодавшимся - }! + [male] изголодавшимся + [female] изголодавшейся + [epicene] изголодавшимися + *[neuter] изголодавшимся +}! examinable-hunger-component-examine-none = { CAPITALIZE(SUBJECT($entity)) }, похоже, не { CONJUGATE-BASIC($entity, "голодают", "голодает") }. diff --git a/Resources/Locale/ru-RU/nutrition/components/ingestion-system.ftl b/Resources/Locale/ru-RU/nutrition/components/ingestion-system.ftl index 875afe30d8b..aac8b8c627b 100644 --- a/Resources/Locale/ru-RU/nutrition/components/ingestion-system.ftl +++ b/Resources/Locale/ru-RU/nutrition/components/ingestion-system.ftl @@ -25,6 +25,11 @@ ingestion-verb-drink = Пить # Edible Component +-edible-satiated = { $satiated -> + [true] { " " }You don't feel like you could { $verb } any more. + *[false] { "" } +} + edible-nom = Ням. { $flavors } edible-nom-other = Ням. edible-slurp = Сёрб. { $flavors } diff --git a/Resources/Locale/ru-RU/nutrition/components/sliceable-food-component.ftl b/Resources/Locale/ru-RU/nutrition/components/sliceable-food-component.ftl index 905872f0129..4cb8fc389a2 100644 --- a/Resources/Locale/ru-RU/nutrition/components/sliceable-food-component.ftl +++ b/Resources/Locale/ru-RU/nutrition/components/sliceable-food-component.ftl @@ -1,9 +1,8 @@ -sliceable-food-component-on-examine-remaining-slices-text = - { $remainingCount -> - [one] Остался - *[other] Осталось - } { $remainingCount } { $remainingCount -> - [one] кусочек - [few] кусочка - *[other] кусочков - }. +sliceable-food-component-on-examine-remaining-slices-text = { $remainingCount -> + [one] Остался + *[other] Осталось +} { $remainingCount } { $remainingCount -> + [one] кусочек + [few] кусочка + *[other] кусочков +}. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/nutrition/components/vape-component.ftl b/Resources/Locale/ru-RU/nutrition/components/vape-component.ftl index 067d53743b0..1b8ee0951ea 100644 --- a/Resources/Locale/ru-RU/nutrition/components/vape-component.ftl +++ b/Resources/Locale/ru-RU/nutrition/components/vape-component.ftl @@ -4,4 +4,4 @@ vape-component-vape-success-user-forced = Вы успешно заставили vape-component-try-use-vape-forced = { CAPITALIZE($user) } пытается заставить вас затянуться вейпом. vape-component-try-use-vape-forced-user = Вы заставляете { $target } затянуться вейпом. vape-component-try-use-vape = Вы пытаетесь затянуться вейпом. -vape-component-vape-empty = Вейп пуст! +vape-component-vape-empty = Вейп пуст! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/objectives/conditions/carp-rifts.ftl b/Resources/Locale/ru-RU/objectives/conditions/carp-rifts.ftl index 3f623666bc2..160097db491 100644 --- a/Resources/Locale/ru-RU/objectives/conditions/carp-rifts.ftl +++ b/Resources/Locale/ru-RU/objectives/conditions/carp-rifts.ftl @@ -1,12 +1,10 @@ -objective-carp-rifts-title = - Откройте { $count } { $count -> - [one] карповый разлом - [few] карповых разлома - *[other] карповых разломов - } -objective-carp-rifts-description = - Используйте действие «Создать карповый разлом» чтобы открыть { $count } { $count -> - [one] карповый разлом - [few] карповых разлома - *[other] карповых разломов - } и не допустить их разрушения. Если вы не откроете разлом через 5 минут, вас убьют. +objective-carp-rifts-title = Откройте { $count } { $count -> + [one] карповый разлом + [few] карповых разлома + *[other] карповых разломов +} +objective-carp-rifts-description = Используйте действие «Создать карповый разлом» чтобы открыть { $count } { $count -> + [one] карповый разлом + [few] карповых разлома + *[other] карповых разломов +} и не допустить их разрушения. Если вы не откроете разлом через 5 минут, вас убьют. diff --git a/Resources/Locale/ru-RU/objectives/conditions/doorjack.ftl b/Resources/Locale/ru-RU/objectives/conditions/doorjack.ftl index fcd77cb4d78..85e418d0405 100644 --- a/Resources/Locale/ru-RU/objectives/conditions/doorjack.ftl +++ b/Resources/Locale/ru-RU/objectives/conditions/doorjack.ftl @@ -1,12 +1,10 @@ -objective-condition-doorjack-title = - Взломайте { $count } { $count -> - [one] дверь - [few] двери - *[other] дверей - } на станции. -objective-condition-doorjack-description = - Ваши перчатки могут взламывать шлюзы. Сделайте это с { $count } { $count -> - [one] дверью - [few] дверьми - *[other] дверьми - }. +objective-condition-doorjack-title = Взломайте { $count } { $count -> + [one] дверь + [few] двери + *[other] дверей +} на станции. +objective-condition-doorjack-description = Ваши перчатки могут взламывать шлюзы. Сделайте это с { $count } { $count -> + [one] дверью + [few] дверьми + *[other] дверьми +}. diff --git a/Resources/Locale/ru-RU/objectives/conditions/steal-research.ftl b/Resources/Locale/ru-RU/objectives/conditions/steal-research.ftl index bb790e424b2..bb22abec87a 100644 --- a/Resources/Locale/ru-RU/objectives/conditions/steal-research.ftl +++ b/Resources/Locale/ru-RU/objectives/conditions/steal-research.ftl @@ -1,6 +1,5 @@ -objective-condition-steal-research-title = - Украдите { $count } { $count -> - [one] технологию - [few] технологии - *[other] технологий - }. +objective-condition-steal-research-title = Украдите { $count } { $count -> + [one] технологию + [few] технологии + *[other] технологий +}. diff --git a/Resources/Locale/ru-RU/objectives/conditions/steal-target-groups.ftl b/Resources/Locale/ru-RU/objectives/conditions/steal-target-groups.ftl index 3ce4fe204a4..33ddd9a2ba8 100644 --- a/Resources/Locale/ru-RU/objectives/conditions/steal-target-groups.ftl +++ b/Resources/Locale/ru-RU/objectives/conditions/steal-target-groups.ftl @@ -25,6 +25,7 @@ steal-target-groups-mail = почта steal-target-groups-id-cards = ID-карты steal-target-groups-officer-handguns = пистолет службы безопасности steal-target-groups-lamps = ЛАМПЫ +steal-target-groups-huds = HUD # Thief single item steal-target-groups-forensic-scanner = криминалистический сканер @@ -36,10 +37,9 @@ steal-target-groups-medical-tech-fab-circuitboard = машинная плата steal-target-groups-clothing-headset-alt-medical = полноразмерная гарнитура главного врача steal-target-groups-research-and-development-server-machine-circuitboard = машинная плата сервера РнД steal-target-groups-fire-axe = пожарный топор -steal-target-groups-ame-part-flatpack = упаковка ДАМ +steal-target-groups-ame-part-flatpack = упаковка ДАМ steal-target-groups-salvage-expeditions-computer-circuitboard = плата консоли утилизаторских экспедиций steal-target-groups-cargo-shuttle-console-circuitboard = плата консоли управления грузовым шаттлом -steal-target-groups-clothing-eyes-hud-beer = пивные очки steal-target-groups-bible = библия steal-target-groups-clothing-neck-goldmedal = золотая медаль мастерства экипажа steal-target-groups-clothing-neck-clownmedal = медаль клоуна diff --git a/Resources/Locale/ru-RU/objectives/round-end.ftl b/Resources/Locale/ru-RU/objectives/round-end.ftl index a695ac549ce..8b5a59ad1b3 100644 --- a/Resources/Locale/ru-RU/objectives/round-end.ftl +++ b/Resources/Locale/ru-RU/objectives/round-end.ftl @@ -1,9 +1,8 @@ -objectives-round-end-result = - { $count -> - [one] Был один { $agent }. - [few] Было { $count } { $agent }. - *[other] Было { $count } { $agent }. - } +objectives-round-end-result = { $count -> + [one] Был один { $agent }. + [few] Было { $count } { $agent }. + *[other] Было { $count } { $agent }. +} objectives-round-end-result-in-custody = { $custody } из { $count } { $agent } были арестованы. diff --git a/Resources/Locale/ru-RU/pai/pai-system.ftl b/Resources/Locale/ru-RU/pai/pai-system.ftl index eaea704a8d7..fb70512424b 100644 --- a/Resources/Locale/ru-RU/pai/pai-system.ftl +++ b/Resources/Locale/ru-RU/pai/pai-system.ftl @@ -4,13 +4,11 @@ pai-system-still-searching = Всё ещё ищем пИИ. pai-system-searching = Ищем пИИ... pai-system-role-name = Персональный ИИ -pai-system-role-description = - Станьте чьим-то персональным Искуственным Интеллектом! - (Воспоминания *не* прилагаются.) +pai-system-role-description = Станьте чьим-то персональным Искуственным Интеллектом! + (Воспоминания *не* прилагаются.) pai-system-role-name-syndicate = Персональный ИИ Синдиката -pai-system-role-description-syndicate = - Станьте чьим-нибудь приятелем из Синдиката! - (Воспоминания *не* прилагаются.) +pai-system-role-description-syndicate = Станьте чьим-нибудь приятелем из Синдиката! + (Воспоминания *не* прилагаются.) pai-system-role-name-potato = Картофельный Искусственный Интеллект pai-system-role-description-potato = Это детская игрушка. И теперь вы в ней живёте. diff --git a/Resources/Locale/ru-RU/paper/book-atmos.ftl b/Resources/Locale/ru-RU/paper/book-atmos.ftl index b7d81526826..dcd7746f630 100644 --- a/Resources/Locale/ru-RU/paper/book-atmos.ftl +++ b/Resources/Locale/ru-RU/paper/book-atmos.ftl @@ -1,57 +1,54 @@ -book-text-atmos-distro = - Сеть распределения, или же "дистра", жизненно важная для станции. Она отвечает за транспортировку воздуха с атмос-отдела по всей станции. - - Соответствующие трубы зачастую покрашены Выскакивающе-Приглушённым Синим, но безошибочный вариант определить их это использование т-лучевого сканера, чтобы отследить трубы подключённые к активным вентиляциям станции. - - Стандартная газовая смесь для сети распределения это 20 градусов по цельсию, 78% азота, 22% кислорода. Вы можете проверить это, используя газоанализатор на трубе дистры, или любой вентиляции подключённой к ней. Особые обстоятельства могут потребовать специальных смесей. - - Когда нужно думать над давлением дистры, есть несколько вещей которые нужно знать. Активные вентиляции регулируют давление на станции, так что пока всё работает стабильно, нет нужды в слишком высоком давлении дистры. - - Высокое давление дистры может сделать сеть "буфером" между газодобытчиками и вентиляциями, обеспечивая значительно количество воздуха, которое может использоваться для стабилизации давления на станции после разгерметизации. - - Низкое давление дистры уменьшит количество потерянного газа в случае разгерметизации сети, быстрый способ справится с загрязнением дистры. Так же это поможет уменьшить или предотвратить высокое давление на станции, в случае неполадок с вентиляциями. - - Обычное давление дистры в диапазоне 300-375 кПа, но другие давления могут быть использованы со знанием пользы и риска. - - Давление сети определяется последним насосом, который в неё закачивает. Для предотвращения заторов, все другие насосы между газодобытчиками и последним насосом должны стоять на максимальном значении, и все ненужные устройства должны быть убраны. - - Вы можете проверить давление дистры газоанализатором, но имейте в виду, что несмотря на заданное давление в трубах, разгерметизации могут вызвать недостаток давления в трубах на некоторое время. Так что если вы видите падение давления, не паникуйте — это может быть временно. - -book-text-atmos-waste = - Сеть отходов это основная система отвечающая за сохранения воздуха свободным от загрязнений. - - Вы можете распознать эти трубы по их Приятно-Тусклому Красному цвету или используя т-лучевой сканер, чтобы отследить какие трубы подсоединены к скрубберам на станции. - - Сеть отходов используется для транспортировки ненужных газов либо для фильтрации, либо для выброса в космос. Это идеально для поддержания давления на 0 кПа, но временами может быть низкое, не нулевое давление во время использования. - - Атмос техники могут выбрать фильтровать или выбрасывать газы в космос. Выбрасывание быстрее, но фильтрация позволяет повторно использовать или продавать газы. - - Сеть отходов может помочь диагностировать атмосферные проблемы на станции. Высокое количество отходов может указывать на большую утечку, в то время как присутствие не отходов может указывать на ошибку в конфигурации скруббера либо проблему с физическим подсоединением. Если у газов высокая температура, это может означать пожар. - -book-text-atmos-alarms = - Воздушные сигнализации расположены по всей станции для доступа к настройке и наблюдении за локальной атмосферой. - - Интерфейс воздушной сигнализации предоставляет атмос техникам список подключённых сенсоров, их показатели и возможность настроить пороги. Пороги используются для определения аварийного состояния воздушной тревоги. Атмос техники так же могут использовать интерфейс для установки целевого давления вентиляций, настройки рабочей скорости и целевых газов для скрубберов. - - Интерфейс позволяет не только точно настраивать все подключённые устройства, также доступно несколько режимов для быстрой настройки сигнализации. Эти режимы автоматически переключаются при изменении состояния тревоги: - - Фильтрация: Обычный режим - - Фильтрация (широкая): Режим фильтрации при котором скрубберы будут захватывать область побольше - - Заполнение: Отключает скрубберы и ставит вентиляции на максимальное давление - - Паника: Отключает вентиляции и ставит скрубберы на всасывание всего - - Мультитулом можно подключать устройства к воздушным сигнализациям. +book-text-atmos-distro = Сеть распределения, или же "дистра", жизненно важная для станции. Она отвечает за транспортировку воздуха с атмос-отдела по всей станции. + + Соответствующие трубы зачастую покрашены Выскакивающе-Приглушённым Синим, но безошибочный вариант определить их это использование т-лучевого сканера, чтобы отследить трубы подключённые к активным вентиляциям станции. + + Стандартная газовая смесь для сети распределения это 20 градусов по цельсию, 78% азота, 22% кислорода. Вы можете проверить это, используя газоанализатор на трубе дистры, или любой вентиляции подключённой к ней. Особые обстоятельства могут потребовать специальных смесей. + + Когда нужно думать над давлением дистры, есть несколько вещей которые нужно знать. Активные вентиляции регулируют давление на станции, так что пока всё работает стабильно, нет нужды в слишком высоком давлении дистры. + + Высокое давление дистры может сделать сеть "буфером" между газодобытчиками и вентиляциями, обеспечивая значительно количество воздуха, которое может использоваться для стабилизации давления на станции после разгерметизации. + + Низкое давление дистры уменьшит количество потерянного газа в случае разгерметизации сети, быстрый способ справится с загрязнением дистры. Так же это поможет уменьшить или предотвратить высокое давление на станции, в случае неполадок с вентиляциями. + + Обычное давление дистры в диапазоне 300-375 кПа, но другие давления могут быть использованы со знанием пользы и риска. + + Давление сети определяется последним насосом, который в неё закачивает. Для предотвращения заторов, все другие насосы между газодобытчиками и последним насосом должны стоять на максимальном значении, и все ненужные устройства должны быть убраны. + + Вы можете проверить давление дистры газоанализатором, но имейте в виду, что несмотря на заданное давление в трубах, разгерметизации могут вызвать недостаток давления в трубах на некоторое время. Так что если вы видите падение давления, не паникуйте — это может быть временно. + +book-text-atmos-waste = Сеть отходов это основная система отвечающая за сохранения воздуха свободным от загрязнений. + + Вы можете распознать эти трубы по их Приятно-Тусклому Красному цвету или используя т-лучевой сканер, чтобы отследить какие трубы подсоединены к скрубберам на станции. + + Сеть отходов используется для транспортировки ненужных газов либо для фильтрации, либо для выброса в космос. Это идеально для поддержания давления на 0 кПа, но временами может быть низкое, не нулевое давление во время использования. + + Атмос техники могут выбрать фильтровать или выбрасывать газы в космос. Выбрасывание быстрее, но фильтрация позволяет повторно использовать или продавать газы. + + Сеть отходов может помочь диагностировать атмосферные проблемы на станции. Высокое количество отходов может указывать на большую утечку, в то время как присутствие не отходов может указывать на ошибку в конфигурации скруббера либо проблему с физическим подсоединением. Если у газов высокая температура, это может означать пожар. + +book-text-atmos-alarms = Воздушные сигнализации расположены по всей станции для доступа к настройке и наблюдении за локальной атмосферой. + + Интерфейс воздушной сигнализации предоставляет атмос техникам список подключённых сенсоров, их показатели и возможность настроить пороги. Пороги используются для определения аварийного состояния воздушной тревоги. Атмос техники так же могут использовать интерфейс для установки целевого давления вентиляций, настройки рабочей скорости и целевых газов для скрубберов. + + Интерфейс позволяет не только точно настраивать все подключённые устройства, также доступно несколько режимов для быстрой настройки сигнализации. Эти режимы автоматически переключаются при изменении состояния тревоги: + - Фильтрация: Обычный режим + - Фильтрация (широкая): Режим фильтрации при котором скрубберы будут захватывать область побольше + - Заполнение: Отключает скрубберы и ставит вентиляции на максимальное давление + - Паника: Отключает вентиляции и ставит скрубберы на всасывание всего + + Мультитулом можно подключать устройства к воздушным сигнализациям. book-text-atmos-vents = Ниже приведён краткое руководство по нескольким атмосферным устройствам. - - Пассивные вентиляции: - Эти вентиляции не требуют питания, они позволяют газам свободно проходить как в трубопроводную сеть, к которой они присоединены, так и из неё. - - Активные вентиляции: - Это самые распространённые вентиляции на станции. Они имеют встроенный насос и требуют электричества. По умолчанию они будут выкачивать газ из труб до 101 кПа. Однако они могут быть перенастроены, используя воздушные сигнализации. Так же они будут блокироваться, когда в комнате ниже 1 кПа для предотвращения выкачивания газов в космос. - - Скрубберы: - Эти устройства позволяют убирать газы с окружающей среды в подсоединённую сеть труб. Они так же могут быть настроены для всасывания определённых газов, когда подключены к воздушной сигнализации. - - Инжекторы: - Инжекторы подобны к активным вентиляциям, но они не имеют встроенного насоса и не требуют электричества. Их нельзя настроить, но они могут продолжать качать газы до очень высокого давления. + + Пассивные вентиляции: + Эти вентиляции не требуют питания, они позволяют газам свободно проходить как в трубопроводную сеть, к которой они присоединены, так и из неё. + + Активные вентиляции: + Это самые распространённые вентиляции на станции. Они имеют встроенный насос и требуют электричества. По умолчанию они будут выкачивать газ из труб до 101 кПа. Однако они могут быть перенастроены, используя воздушные сигнализации. Так же они будут блокироваться, когда в комнате ниже 1 кПа для предотвращения выкачивания газов в космос. + + Скрубберы: + Эти устройства позволяют убирать газы с окружающей среды в подсоединённую сеть труб. Они так же могут быть настроены для всасывания определённых газов, когда подключены к воздушной сигнализации. + + Инжекторы: + Инжекторы подобны к активным вентиляциям, но они не имеют встроенного насоса и не требуют электричества. Их нельзя настроить, но они могут продолжать качать газы до очень высокого давления. diff --git a/Resources/Locale/ru-RU/paper/book-authorbooks.ftl b/Resources/Locale/ru-RU/paper/book-authorbooks.ftl index fda0d803d23..eb6ed228df9 100644 --- a/Resources/Locale/ru-RU/paper/book-authorbooks.ftl +++ b/Resources/Locale/ru-RU/paper/book-authorbooks.ftl @@ -1,293 +1,261 @@ -book-text-narsielegend = - В начале мир был молод и полон хаоса. Люди этого мира боролись за выживание против суровых стихий и диких зверей, которые бродили по земле. Они взывали к спасителю, который избавил бы их от страданий. - И тогда из глубин земли появилась Нар'Си — богиня-убийца, рождённая из коллективного сознания всех живых существ. Её тело было сделано из расплавленного камня, а глаза пылали огнём, способным расплавить сталь. - Нар'Си осмотрела мир и увидела боль и страдания своего народа. Она сжалилась над ними и предложила им способ вырваться из круговорота жизни и смерти. Все, кто присоединялся к улью, становились вечными, их сознание сливалось с сознанием Нар'Си, образуя единое целое. - Сначала многие скептически отнеслись к предложению Нар'Си, опасаясь, что они потеряют свою индивидуальность и станут бездумными трутнями. Но по мере того, как всё больше и больше людей присоединялись к улью, они осознавали, что обрели новое чувство цели и принадлежности. - Последователи Нар'Си бродили по земле, распространяя весть об улье и вербуя новых членов. Они строили великие храмы и проводили сложные ритуалы в честь своего бога, и их число росло, пока они не стали могущественной силой, с которой приходилось считаться. - Но время шло, и некоторые начали сомневаться в истинной природе своего существования. Они задавались вопросом, действительно ли вечная жизнь является благословением или проклятием, и не принесли ли они слишком много себя в жертву удельному разуму. - И вот последователей Нар'Си расколол великий раскол. Одни остались верны своей богине, воспринимая своё вечное существование как дар. Но другие восстали, стремясь вернуть свою индивидуальность и освободиться от власти улья. - Война между двумя фракциями была долгой и кровопролитной, но в конце концов повстанцы вышли победителями. Нар'Си, ослабленная потерей стольких своих последователей, отступила обратно в землю, чтобы больше никогда не появиться. - Так и живёт легенда о Нар'Си, предостерегающая об опасности жертвовать своей индивидуальностью ради обещания вечной жизни. - -book-text-truth = - Определение истины было центральной проблемой философов на протяжении веков, и существует множество различных философских взглядов на то, как мы можем понимать это понятие. - Одним из традиционных подходов является теория соответствия истины, которая предполагает, что высказывание является истинным, если оно соответствует или точно описывает то, как устроен мир. Другими словами, истина — это точное отображение реальности. Эта точка зрения предполагает, что существует объективная реальность, которую мы можем понять, и что наши убеждения и утверждения могут быть оценены как истинные или ложные в зависимости от того, насколько они соответствуют этой реальности. - Другой подход — это теория истинности, которая предполагает, что утверждение истинно, если оно согласуется с другими убеждениями или утверждениями, которых мы придерживаемся. Другими словами, истина — это последовательность и логическая связность в системе убеждений или идей. Этот подход предполагает, что истина — это то, что устанавливается в определённом контексте или рамках мышления, и то, что истинно в одной системе мышления, может быть не истинным в другой. - Третий подход — это прагматическая теория истины, которая предполагает, что утверждение истинно, если оно полезно или хорошо работает на практике. Другими словами, истина — это практические последствия наших убеждений или утверждений. Эта точка зрения предполагает, что истина — это нечто, возникающее в процессе человеческих действий и взаимодействия, и что истина может меняться в зависимости от ситуации или контекста, в котором она используется. - В конечном счёте, то, как мы определяем истину, зависит от наших философских и эпистемологических предположений, а также от наших практических потребностей и проблем. Различные философские взгляды могут подчёркивать различные аспекты истины, и, возможно, не существует единого, общепризнанного определения, которое отражало бы все нюансы этого сложного понятия. - Неверно и несправедливо делать огульное утверждение, что все люди — ужасные лжецы. Хотя верно, что некоторые люди могут испытывать трудности с честностью, важно помнить, что люди сложны и могут проявлять различные формы поведения и склонности. Некоторые люди могут быть приверженцами честности и порядочности, в то время как другие могут бояться лгать из-за различных факторов, таких как страх, неуверенность в себе или прошлый опыт. - Кроме того, стоит отметить, что не вся ложь одинакова. Хотя намеренный обман может быть вредным и неэтичным, существуют также ситуации, когда ложь может считаться социальной смазкой или способом сохранить конфиденциальность или избежать вреда. В этих случаях целесообразнее задуматься о контексте и мотивах конкретной лжи, а не просто отнести всех людей к категории "ужасных лжецов". - В целом, важно подходить к теме лжи с нюансами и пониманием сложных факторов, которые могут влиять на поведение человека. - -book-text-world = - Состояние мира — это постоянно меняющееся отражение состояния человека, сформированное взаимодействием природных сил, социальных структур и индивидуального выбора. - 1. "Состояние мира — это постоянно меняющееся отражение...". - Эта часть высказывания предполагает, что мир — не статичная или неизменная сущность, а скорее динамичная система, находящаяся в постоянном движении. Слово "отражение" подразумевает, что состояние мира является продуктом различных сил и факторов, которые отражаются на нас через наблюдаемые явления. Это поднимает важные вопросы о природе причинности и о том, насколько мы можем понять сложное взаимодействие сил, формирующих мир. - 2. "...человеческого состояния...". - Эта часть утверждения предполагает, что состояние мира тесно связано с человеческим опытом, и что оно является отражением наших коллективных убеждений, ценностей и поведения. Она признаёт фундаментальную роль, которую люди играют в формировании мира, и предполагает, что состояние мира является отражением наших успехов и неудач как вида. - 3. "...формируется под воздействием взаимодействия природных сил, социальных структур и индивидуального выбора". - Эта часть утверждения определяет три ключевых фактора, которые формируют состояние мира: природные силы, социальные структуры и индивидуальный выбор. Фраза "взаимодействие" предполагает, что эти факторы находятся в постоянном взаимодействии друг с другом, и что они могут усиливать или конфликтовать друг с другом в зависимости от контекста. Включение природных сил предполагает, что мир является не только продуктом человеческих действий, но и подвержен влиянию окружающей среды и законов физики. Ссылка на социальные структуры подчёркивает роль институтов, культуры и социальных норм в формировании мира и предполагает, что действия человека не являются чисто индивидуальными, но также формируются под влиянием более широкого социального контекста. Наконец, ссылка на индивидуальный выбор подчёркивает важность самостоятельности и личной ответственности в формировании мира и предполагает, что выбор, который мы делаем как личности, имеет реальные последствия. - Взятое вместе, это заявление предлагает богатый и тонкий философский анализ состояния мира, подчёркивая сложное взаимодействие природных, социальных и индивидуальных факторов, которые формируют наш коллективный опыт. Оно приглашает задуматься об этических последствиях нашего выбора и действий и призывает нас глубоко задуматься о том, как мы можем работать над созданием более справедливого, устойчивого и процветающего мира для всех существ. - -book-text-ian-antarctica = - Иан, корги, и Роберт Ньютон, техник по атмосфере, отправились в приключение, чтобы исследовать отдалённый континент Антарктиду. Проходя по ледяным тундрам, Роберт начал проявлять всё более эгоистичное поведение, уверенный, что он бог среди людей. Иан считал это забавным, но знал, что лучше не перечить своему человеческому спутнику. - Однажды, когда они шли по снегу, они наткнулись на колонию пингвинов. Иана увлекли эти ковыляющие создания, и Роберта они тоже заинтриговали. Они наблюдали, как пингвины собирались вместе для согревания, их чёрно-белые перья сливались с снежным пейзажем. - Иан, будучи говорящим корги, начал разговор с пингвинами, вызвав недоверие Роберта. Пингвины отвечали на своём языке, и Иан переводил их слова для Роберта. Они были поражены тем, что узнали о жизни пингвинов и их борьбе за выживание в такой суровой среде. - Роберт, будучи эгоистичным человеком, решил изучить пингвинов и узнать о них больше. Он верил, что, таким образом, сможет раскрыть тайны вселенной и стать ещё более богоподобным. Иан, с другой стороны, просто хотел наблюдать за пингвинами и учиться у них в более скромном виде. - Проводя всё больше времени с пингвинами, Иан и Роберт начали замечать тонкие изменения в поведении пингвинов. Они видели, как они сотрудничали, чтобы защитить своих малышей, как они общались друг с другом и как они адаптировались к окружающей среде. Роберт был поражён их выносливостью и интеллектом, но всё равно не мог избавиться от своего богоподобия. - Однажды, когда они наблюдали за пингвинами, на них обрушился сильный снежный буран, угрожая засыпать их всех снегом. Роберт, в момент ясности, понял, что он не бог, а просто человек, зависимый от природных стихий. Он обратился к Иану и попросил его помочь укрыть пингвинов от бури. - Вместе они использовали свои навыки и знания, чтобы построить временные укрытия для пингвинов, используя свои тела, чтобы защитить их от ледяного ветра. Пока бушевала буря, Иан и Роберт с гордостью взглянули на колонию. Они сделали многое для пингвинов и в процессе стали лучше, улучшив самих себя. - Продолжая своё путешествие по Антарктиде, Иан и Роберт часто вспоминали о времени, проведённом с пингвинами, с теплотой в сердце. Они знали, что они свидетельствовали о чём-то особенном, о чём-то, что останется с ними на всю жизнь. - -book-text-sloth-clown-sss = - Жили-были в далёкой-далёкой космической станции клоун по имени Чаклз и ленивец по имени Снагглз. Чаклз был самым забавным клоуном в галактике, но он немного чувствовал себя одиноким на космической станции. Снагглз, с другой стороны, был самым ленивым ленивцем в галактике и любил спать целыми днями. - Однажды Чаклз был особенно грустным и решил прогуляться по космической станции, чтобы поднять себе настроение. Проходя мимо, он наткнулся на Снагглза, спящего в углу. Чаклз подумал про себя: "Интересно, смогу ли я заставить этого ленивого ленивца посмеяться". - И так Чаклз начал выполнять свои самые забавные клоунские трюки для Снагглза. Он танцевал смешные танцы, делал забавные гримасы и даже пытался жонглировать космическими шарами. Но Снагглз даже не шелохнулся. Чаклз подумал, что его шутки просто недостаточно забавные для ленивца. - Но Чаклз был настроен сделать Снагглза смеяться, поэтому он придумал новый план. Он решил нарядиться в костюм банана, надеясь вызвать реакцию у ленивца. Когда Снагглз открыл глаза и увидел Чаклза в костюме банана, он не смог сдержаться и расхохотался. Чаклз был в восторге! Он наконец-то смог сделать Снагглза смеяться. - С того дня Чаклз и Снагглз стали лучшими друзьями. Чаклз часто наряжался в смешные костюмы, чтобы заставить Снагглза смеяться, а Снагглз предоставлял уютное место для отдыха Чаклзу и рассказывал ему истории о своих приключениях в космосе. Они проводили дни, исследуя космическую станцию вместе и заставляя друг друга смеяться. - Таким образом, клоун и ленивец стали самым счастливым дуэтом в галактике, разнося радость и смех везде, где они появлялись. - -book-text-sloth-clown-pz = - Чаклз выступал на новой космической станции и был взволнован тем, что может принести свою радость и смех новой аудитории. Но на этот раз он был не один. Вместе с ним в этом приключении был его верный друг — ленивец Снагглз. - Сразу по прибытии Чаклз и Снагглз отправились исследовать космическую станцию. Они наткнулись на группу детей Диона, которые были грустными и расстроенными. Чаклз спросил, что случилось, и они рассказали ему, что потеряли свою любимую игрушку — маленькую плюшевую игрушку по имени Твинкл. - Чаклз знал, что должен помочь. Он и Снагглз обшарили всю космическую станцию, искали повсюду Твинкл. Они даже попросили помощи у других видов. Ящеры были слишком заняты загоранием, Люди были слишком заняты работой, но Слизни были рады помочь. - Вместе они искали по космической станции, пока наконец не нашли Твинкл. Дети Диона были вне себя от радости и поблагодарили Чаклза и Снагглза за их помощь. - В качестве благодарности дети Диона попросили Чаклза устроить для них особое выступление. Чаклз и Снагглз работали вместе, чтобы создать шоу, полное веселья и смеха, с жонглированием, воздушными шариками и забавными трюками. - Дети Диона любили это шоу, они смеялись и аплодировали всё время. А когда выступление закончилось, они обняли Чаклза и Снагглза, благодаря их за то, что вернули им радость. - Чаклз и Снагглз покинули космическую станцию, чувствуя себя счастливыми и исполненными. Они знали, что их приключения будут продолжаться и что они продолжат приносить радость и смех всем видам, с которыми встречаются. - Когда Чаклз вспоминал свои приключения, он осознал, что не смог бы справиться без своих друзей. Будь то ленивец Снагглз, Зорги, которые сыграли с ним розыгрыши, или дети Диона, которым была нужна его помощь, Чаклз знал, что сила смеха способна объединить виды, несмотря на их различия. - -book-text-sloth-clown-mmd = - Чаклз путешествовал по космосу со своим другом Снагглзом, ленивцем, искали следующее приключение. Они наткнулись на планету, населённую Ящерицами, которые были известны своей любовью к играм и испытаниям. Чаклз и Снагглз решили исследовать планету и посмотреть, какие игры они могут найти. - Пройдя через город Ящериц, они увидели толпу Ящериц, собравшихся вокруг большой игровой доски. Чаклз и Снагглз подошли, чтобы рассмотреть и они увидели, что Ящерицы играют в игру под названием "Лабиринт Тайны". - Правила игры были простыми: игрок должен был пройти через лабиринт препятствий и ловушек, с целью достигнуть конца перед оппонентом. Запутывало то, что лабиринт менялся каждый раз, когда играли, поэтому игрок должен был быть быстрым на ногах и думать на ходу. - Чаклз и Снагглз были заинтригованы и решили присоединиться к увлечению. Их парой были Ящеричьи сестра и брат Лиззи и Ленни. Лиззи была своенравной, а Ленни был более спокойным и беззаботным. - Игра была напряжённой, лабиринт менялся каждые несколько секунд. Чаклзу и Снагглзу было трудно успевать, но они вскоре поняли, что ключ к победе — работа в команде. Чаклз использовал свои навыки жонглирования, чтобы отвлечь оппонентов, в то время как Снагглз использовал свой медленный и уверенный шаг, чтобы осторожно пройти через лабиринт. - Дойдя до конца лабиринта, их ожидало сюрприз. Лабиринт привёл их в скрытую комнату, где ждали их Слизни. Слизни объяснили, что они наблюдали за игрой и были впечатлены командной работой Чаклза и Снагглза. - В знак благодарности, Слизни провели для них экскурсию по своему секретному саду из слизи. Сад был полон ярких и экзотических растений, и Слизни объяснили, что они используют эти растения для создания особых зелий и лекарств. Чаклз и Снагглз были очарованы и спросили, могут ли они взять некоторые растения с собой в качестве сувенира. - Слизни согласились, и Чаклз и Снагглз покинули планету, чувствуя себя счастливыми и исполненными. Они знали, что завязали новые дружеские отношения и усвоили ценный урок о совместной работе. У них также появился новый сувенир для своей коллекции, который они будут беречь на протяжении многих лет. - -book-text-struck = - Удар молнии — это интенсивное и преобразующее событие, не поддающееся описанию. Это физическое ощущение, не похожее ни на какое другое, толчок электричества, проходящий через тело с неистовой энергией, которая одновременно пугает и возбуждает. В этот момент все наши чувства перегружены, и нам остаётся только сырое, элементарное ощущение того, что мы живы. - Помимо физических ощущений, удар молнии — это глубокий философский и духовный опыт. Это напоминание об огромной силе природы и стихийных силах, которые определяют нашу жизнь. Он напоминает нам, что все мы уязвимы перед капризами Вселенной, что какими бы продвинутыми или развитыми мы ни стали, мы всё равно подчиняемся тем же законам природы, которые управляли жизнью на этой планете миллионы лет. - В этом смысле удар молнии — это смиряющий опыт, напоминание о хрупкости нашего человеческого существования и шаткости нашего места в мире. Это напоминает нам, что мы — лишь маленькая часть гораздо более крупной и сложной системы, подверженной тем же капризам и силам, что и все остальные живые существа на этой планете. - Но в то же время удар молнии — это трансцендентный опыт, взгляд на нечто большее, чем мы сами. Это напоминание о том, что во Вселенной действуют силы, которые мы только начинаем постигать, что в мире есть необъятность и сила, которые находятся за пределами нашего понимания. Это возможность выйти за пределы себя и испытать нечто поистине благоговейное, ощутить прикосновение божественной руки и почувствовать всю тяжесть вселенной, обрушивающуюся на нас. - В этом смысле удар молнии — это одновременно смиряющий и преобразующий опыт, который напоминает нам о нашем месте в мире и о нашей связи с большими силами, определяющими нашу жизнь. Это напоминание о том, что как бы мы ни старались контролировать наш мир и нашу судьбу, всегда будут силы, находящиеся вне нашего понимания и контроля, которые будут формировать нашу жизнь так, как мы не можем предсказать или постичь. - -book-text-sun = - Я протягиваю свои листья к небу, жажду тепла солнца. Это постоянное желание, первоначальный инстинкт, который меня направляет. Я чувствую лучи солнца, ласкающие мою кожу, побуждающие меня расти выше, стремиться выше. - Каждый день я усердно тянусь к свету. Я чувствую землю под собой, которая удерживает меня на месте, но моё сердце направлено на солнце. Это магнитное притяжение, зов, который я не могу проигнорировать. - Иногда кажется, что солнце издевается надо мной, играет в игру "прятки". Облака надвигаются, загораживая его лучи, и я остаюсь в тени. Я чувствую холод воздуха, отсутствие тепла солнца, и немного увядая внутри. - Но потом облака раздвигаются, и солнце прорывается вперёд, заливая меня светом и жизнью. Я впитываю его, наслаждаюсь его сиянием и чувствую себя живым. Это напоминание о том, зачем я здесь, к чему я стремлюсь. - Растущий, я сталкиваюсь с препятствиями на своём пути. Иногда это другие растения, загромождающие мой путь к солнцу. Иногда это ветер, сбивающий меня с курса, угрожающий опрокинуть меня. Но я упорствую, приспосабливаюсь к вызовам, всегда стремясь к свету. - Это бесконечное путешествие, поиски чего-то большего, чем я сам. И всё же это напоминание о красоте и чуде жизни. Я являюсь частью этой земли, частью этой сложной сети существования, и солнце — мой проводник. - -book-text-possum = - Давным-давно в глухом лесу Аппалачских гор жил опоссум по имени Морти. Морти был амбициозным опоссумом, который всегда стремился подняться всё выше и выше по социальной лестнице леса. У Морти был острый ум, и он постоянно думал о том, как повысить свой статус. - Однажды Морти наткнулся на заговор в лесу. Группа животных, среди которых было несколько высокопоставленных чиновников лесного совета, планировала свергнуть нынешнее руководство и захватить лес. Морти заинтриговала возможность получить власть, и он решил присоединиться к заговору. - Морти упорно трудился, чтобы доказать свою преданность заговорщикам. Он собирал информацию и передавал её группе, а также помогал планировать нападение. Когда настал день переворота, Морти был в самом центре событий, готовый занять своё место на вершине лесной иерархии. - Однако переворот был быстро подавлен лесным советом. Морти и другие заговорщики были схвачены и предстали перед судом. Морти был обвинён в государственной измене за участие в заговоре с целью свержения правительства. - На суде Морти не раскаялся в своих действиях. Он утверждал, что просто пытался улучшить своё положение в лесу, а нынешнее руководство было коррумпированным и неэффективным. Но совет не поколебали доводы Морти. Они признали его виновным в измене и приговорили к изгнанию из леса. - Морти был опустошён приговором. Он мечтал подняться на вершину лесной иерархии, но теперь он стал изгоем, вынужденным жить на задворках леса. Он слишком поздно понял, что стремление к власти ослепило его, и он перестал понимать важность верности и долга перед лесным сообществом. - С того дня Морти жил в одиночестве, бродя по лесу и сожалея о выборе, который привёл его к государственной измене. - -book-text-cafe = - С каждым днём Лили всё больше и больше времени проводила в кафе. Она наслаждалась пикантным ароматом кофейных зёрен и весёлой болтовнёй других посетителей. Она даже начала узнавать некоторых завсегдатаев, например, мужчину с кустистой бородой, который всегда заказывал латте с дополнительной пенкой и посыпкой из корицы. - Однажды, когда Лили сидела за своим обычным столиком у окна, она заметила что-то краем глаза. Сначала она подумала, что это просто птица, но потом поняла, что это крошечный опоссум, выглядывающий из-за мусорного бака на улице. В глазах маленького существа было игривое, почти озорное выражение, и казалось, что оно с интересом наблюдает за Лили. - Шли дни, и Лили стала видеть опоссума всё чаще и чаще. Он приходил в кафе, заглядывал в окна, бегал по крышам, изредка издавая возбуждённый треск. Лили всё больше и больше интриговал опоссум, и она начала оставлять для него маленькие угощения, например, кусочки круассана или крошки от кондитерских изделий. - Однажды, когда Лили выходила из кафе после смены, она услышала шум, доносившийся из соседнего переулка. Она осторожно заглянула за угол и увидела группу мужчин в тёмных костюмах, которые тихо переговаривались. Сначала она подумала, что это просто группа бизнесменов, но потом заметила маленького опоссума, который сидел на мусорном баке неподалёку и с интересом наблюдал за мужчинами. - Вдруг один из мужчин заметил опоссума и бросился к нему, грубо схватив его за хвост. Опоссум издал громкий крик ужаса, и Лили почувствовала, что её сердце заколотилось. Не раздумывая, она подбежала к мужчинам и потребовала, чтобы они отпустили опоссума. - Мужчины посмеялись над ней и сказали, чтобы она не лезла не в своё дело, но Лили не отступила. Ей удалось вырвать опоссума из рук мужчины и осторожно взять его на руки. Глядя в яркие, радостные глаза опоссума, она поняла, что должна защитить его любой ценой. - В конце концов Лили удалось спасти опоссума от мужчин, которые оказались членами печально известной контрабандной группировки. Она взяла маленькое существо к себе домой и назвала его Зест, в честь радостной и пикантной энергии, которую он привнёс в её жизнь. С того дня Лили и Зест были неразлучны, и они провели много счастливых лет, исследуя город и распространяя радость повсюду. - -book-text-feather = - Шли дни, и странствующая птица встретила ещё много заколдованных мест, каждое из которых было волшебнее предыдущего. Но по мере того как путешествие продолжалось, перья птицы начали терять свой блеск, а её некогда яркие глаза становились всё тусклее. - Однажды птица наткнулась на поляну в лесу, где группа животных собралась вокруг небольшого пруда. В центре пруда лежало мерцающее перо, которое светилось лучистым светом. - Птицу сразу же привлекло это перо, и она полетела вниз, чтобы рассмотреть его поближе. Когда она приблизилась, другие животные расступились, чтобы освободить место, и птица поняла, что это не обычное перо. Это было волшебное перо, пропитанное силой заколдованного леса. - Прикоснувшись к перу, птица почувствовала прилив энергии, и её перья засияли с новой яркостью. Другие животные собрались вокруг, удивляясь преображению. - С этого дня блуждающая птица больше не была потерянной или одинокой. Она нашла своё место в заколдованном лесу, и её бесцельное блуждание сменилось чувством цели и принадлежности. - Сменялись времена года, птица старела, но её перья оставались такими же яркими и живыми. И когда она наконец покинула этот мир, её наследие продолжало жить в зачарованном лесу, где её память праздновали все животные, которые знали и любили её. - Волшебное перо, в которое превратилась странствующая птица, стало символом надежды и обновления, напоминанием о том, что даже в самые тёмные времена всегда есть возможность найти своё истинное место в мире. - -book-text-ian-wolfpup = - Давным-давно в дремучем лесу жили дружелюбный корги по имени Иан и умная лиса по имени Алиса. Они были закадычными друзьями, но об их совместных приключениях ходили легенды. - Однажды ярким солнечным днём, когда они играли в мяч, они услышали далёкий вой, который, казалось, доносился из глубины тёмного леса. Будучи любопытными существами, они решили выяснить источник шума. - По мере того как они углублялись в лес, они сталкивались с различными препятствиями и трудностями. Но благодаря своей смекалке и решительности они всё преодолели. - Они столкнулись с крутым и скользким склоном, но Иан с помощью своих коротких, но крепких ног помог им подняться. Они наткнулись на бурную реку, но Алиса с помощью своего быстрого мышления нашла способ перебраться через неё. - Наконец, они добрались до источника воя. Это был одинокий и напуганный волчонок, заблудившийся в лесу. Иан и Алиса быстро поняли, что должны помочь маленькому волчонку найти дорогу к своей семье. - Они использовали свои навыки и командную работу, чтобы проложить обратный путь через лес, при этом не давая волчонку замёрзнуть и согреться. Когда они наконец воссоединили маленького волчонка с его семьёй, они были вознаграждены тёплыми улыбками и благодарным воем. - С того дня дружба Иана и Алисы стала ещё крепче. У них было ещё много приключений в лесу, каждое из которых было интереснее предыдущего. И они никогда не забывали о том, что такое помогать другим, нуждающимся в помощи. - -book-text-ian-ranch = - После захватывающего приключения в лесу Иан и Алиса решили исследовать близлежащее ранчо. Это было огромное пространство земли, полное всевозможных животных и существ. - Когда они бродили по ранчо, они встретили много новых и интересных животных. Они встретили дружелюбных лошадей, любопытных коров и даже озорного енота. - Но тут они услышали громкое, тревожное "муу", доносящееся из одного из коровников. Они быстро бросились туда и обнаружили маленького телёнка, который застрял в заборе. - Иан и Алиса поняли, что должны действовать быстро, чтобы спасти бедного телёнка. Иан с помощью своих крепких зубов осторожно расшатал забор, а Алиса с помощью своих быстрых лап вытащила телёнка из путаницы. - Вместе они благополучно освободили телёнка и воссоединили его с матерью. Корова-мать была вне себя от счастья и в знак благодарности прижалась к телёнку. - Продолжая исследовать ранчо, Иан и Алиса наткнулись на группу кур, которые попали в беду. Их курятник был опрокинут ветром, и все они были разбросаны и напуганы. - Иан и Алиса быстро принялись за работу, собрали цыплят и восстановили курятник. Это была тяжёлая работа, но благодаря сильным ногам Иана и умным мыслям Алисы они справились с ней в кратчайшие сроки. - Благодарные куры отблагодарили Иана и Алису хором кудахтанья и клевания. - Когда солнце начало садиться, Иан и Алиса вернулись домой, усталые, но счастливые. В тот день они помогли многим животным и по пути обрели новых друзей. - С тех пор Иан и Алиса продолжали исследовать ранчо, всегда готовые к новым приключениям и всегда готовые протянуть лапу или морду любому нуждающемуся животному. - -book-text-ian-ocean = - Иан и Алиса были очень рады впервые побывать на пляже. Они слышали много прекрасного о песчаных берегах и бескрайнем голубом океане. - Как только они приехали, они побежали к песчаным дюнам, жаждая исследовать их. Они носились вверх и вниз по холмам, нюхая и копаясь в песке. Они находили всевозможные сокровища, такие как разноцветные ракушки и интересные камни. - Затем они направились к океану. Иан любил плавать, а Алиса предпочитала грести на мелководье. Они плескались и играли, наслаждаясь солёной водой на своей шерсти. - Вдруг они услышали тревожный крик, доносящийся из воды. Они быстро поплыли на поиски и обнаружили выброшенную на мель морскую черепаху. Она запуталась в рыболовных сетях и не могла освободиться. - Иан и Алиса поняли, что должны действовать быстро, чтобы спасти бедную черепаху. Иан с помощью своих крепких зубов аккуратно разрезал сеть, а Алиса с помощью своих быстрых лап помогла черепахе вернуться в воду. - Благодарная черепаха поблагодарила Иана и Алису лёгким взмахом ласты, а затем уплыла в синие глубины. - Когда день подошёл к концу, Иан и Алиса сидели на пляже и любовались закатом. Они чувствовали себя счастливыми и довольными после захватывающего дня на пляже. - Возвращаясь домой, они пообещали себе вернуться на пляж и исследовать его ещё больше. Они знали, что там ещё много существ и чудес, и им не терпелось испытать всё это вместе. - -book-text-ian-mountain = - Иан и Алиса были рады исследовать горы. Хрустящий горный воздух и величественные пейзажи должны были стать незабываемым приключением. - Они начали свой поход у подножия горы, пробираясь через густые леса и скалистую местность. Когда они поднялись выше, деревья поредели и открылись захватывающие виды на окружающие вершины и долины. - Они наткнулись на стремительную реку, где Иан не удержался и прыгнул в воду, чтобы искупаться. Алиса осталась на берегу, не сводя глаз со своего мохнатого друга. - Продолжая подниматься выше, они встретили группу горных козлов, расположившихся на скалистом выступе. Козлы с любопытством смотрели на них, а потом бросились наутёк. - Когда солнце начало садиться, они разбили лагерь на ночь. Они развели костёр и пожарили зефир, наслаждаясь мирной тишиной горной ночи. - На следующее утро они проснулись рано, чтобы продолжить свой поход. Они поднимались всё выше и выше, проходя через густые облака, пока не достигли вершины. - На вершине перед ними открылся захватывающий вид на окружающие горы и долины. Они сели и стали любоваться видом, наслаждаясь тишиной и покоем вершины. - Спустившись с горы, они поняли, что преодолели большое испытание и создали воспоминания, которые останутся на всю жизнь. Они с воодушевлением обсуждали свои следующие приключения, зная, что великая природа таит в себе ещё много чудес. - -book-text-ian-city = - Иан и Алиса привыкли исследовать природу, но они никогда не сталкивались с городской суетой. Им не терпелось узнать, какие приключения ждут их среди возвышающихся небоскрёбов и шумных улиц. - Когда они вошли в город, они были ошеломлены видами, звуками и запахами. Гудки машин, разговоры людей по телефону, запах хот-догов и кренделей наполнили воздух. - Они начали исследовать улицы, удивляясь возвышающимся небоскрёбам, которые окружали их. Им даже удалось пробраться в одно из зданий и подняться на лифте на самый верхний этаж. - Сверху открывался удивительный вид на город с его высокими зданиями и оживлёнными улицами внизу. Они посмотрели вниз и увидели множество людей и животных, от голубей до собак и кошек, которые занимались своими повседневными делами. - Спустившись вниз, они исследовали оживлённые улицы, уворачиваясь от толпы людей и проходя через оживлённые перекрёстки. Они даже подружились с группой белок, которые искали еду в соседнем парке. - В какой-то момент они наткнулись на потерявшегося котёнка, который забрёл слишком далеко от своего дома. Иан и Алиса знали, что делать, ведь в прошлом они спасали выбросившихся на берег морских животных и помогали заблудившимся туристам. Используя свой острый нюх, они разыскали хозяина котёнка и вернули его обеспокоенной семье. - Когда день перешёл в ночь, они были измотаны, но счастливы от своего приключения в городе. Они возвращались домой, возбуждённо обсуждая все новые впечатления, которые только что получили. - Иан и Алиса знали, что их ждёт ещё много приключений, и им не терпелось узнать, куда приведёт их следующее путешествие. - -book-text-ian-arctic = - Иан и Алиса не чужды приключений, они исследовали всё — от гор до городов. Но их последнее путешествие в Арктику обещало стать самым захватывающим. - Когда они приземлились в замёрзшей тундре, их встретил ледяной пейзаж и пронизывающий холод. Они закутались в свои самые тёплые куртки и отправились исследовать местность. - Они быстро встретили всевозможных животных, живущих в холодную погоду, — от белых медведей до пингвинов и песцов. Они с изумлением наблюдали, как животные приспосабливаются к ледяной среде: у них густой мех и крепкие лапы, чтобы передвигаться по снегу и льду. - Им даже удалось попробовать себя в катании на собачьих упряжках: Иан возглавил стаю, а Алиса проворно мчалась за упряжкой. Они мчались по снегу, наслаждаясь потрясающими пейзажами и свежим арктическим воздухом. - Однажды они наткнулись на ледяную пещеру и решили исследовать её. Пробираясь по извилистым туннелям, они любовались мерцающими ледяными образованиями и тем, как свет играет на стенах. - Вдруг они услышали громкий рёв из глубины пещеры. Они осторожно двинулись вперёд, но столкнулись лицом к лицу с огромным белым медведем. Медведь с любопытством посмотрел на них, и Иан и Алиса замерли от страха. - Но потом они вспомнили все приключения, в которых им приходилось бывать раньше, и то, как они всегда помогали тем, кто в этом нуждался. Они смело подошли к медведю, издавая успокаивающие звуки и предлагая ему рыбу, которую они принесли с собой. - К их облегчению, медведь успокоился и даже позволил им погладить свою густую шерсть. Они провели некоторое время с дружелюбным медведем, после чего попрощались с ним и продолжили своё арктическое приключение. - В какой-то момент они наткнулись на потерявшегося котёнка, который забрёл слишком далеко от своего дома. Иан и Алиса знали, что делать, ведь в прошлом они спасали выбросившихся на берег морских животных и помогали заблудившимся туристам. Используя свой острый нюх, они разыскали хозяина котёнка и вернули его обеспокоенной семье. - Когда день перешёл в ночь, они были измотаны, но счастливы от своего приключения в городе. Они возвращались домой, оживлённо обсуждая все новые впечатления. - Когда их путешествие подошло к концу, им было грустно покидать замёрзшую страну чудес. Но они знали, что снова приобрели невероятные воспоминания и доказали, что для храброго корги и хитрой лисы никакие приключения не страшны. - -book-text-ian-desert = - Иан и Алиса всегда были готовы к новым приключениям, поэтому, когда они услышали о таинственной и прекрасной пустыне, они поняли, что должны отправиться исследовать её. Они собрали вещи и отправились в путь, чтобы испытать всё, что может предложить пустыня. - Когда они шли по бескрайним песчаным просторам, они почувствовали, как их обдало солнечным жаром. Они быстро поняли, что эта среда не похожа ни на одну из тех, в которых они бывали раньше. Но им было интересно узнать, как животные и растения приспособились к этому суровому климату. - Первой их встречей была гремучая змея. Иан и Алиса уже слышали о змеях и были осторожны, чтобы не подойти слишком близко. Но гремучая змея просто хотела поздороваться и показать им, как она охотится на свою добычу. Они с изумлением наблюдали, как змея использовала свой яд, чтобы парализовать мышь, а затем проглотила её целиком. - Затем Иан и Алиса отправились исследовать песчаные дюны, карабкаясь вверх и вниз и скатываясь по крутым склонам. Они нашли оазис, где отдохнули и насладились прохладной тенью и водой. - Они также обнаружили скалистый каньон и исследовали его закоулки и извилины, найдя скорпионов, тарантулов и даже семью койотов. Они наблюдали, как койоты охотились за своим ужином и играли со своими детёнышами. - Когда наступила ночь, они увидели самый красивый закат, который им когда-либо доводилось видеть: небо окрасилось в красные, оранжевые и пурпурные тона. Они восхищались тем, как цвета смешивались друг с другом и отражались от песка. - Наконец, они устроились на ночлег, глядя на звёздное небо. Они узнали о созвездиях и истории, связанные с ними. Они крепко спали, видя сны о всех невероятных существах и достопримечательностях, которые они видели в тот день. - Покидая пустыню, Ян и Рено чувствовали благодарность за приключение, которое им довелось пережить. Они знали, что узнали так много нового, что их храбрость и любопытство отправили их в ещё одно незабываемое путешествие. - -book-text-names = - С философской точки зрения, имена играют важную роль в понимании и восприятии мира человеком. Использование имён и языка само по себе является краеугольным камнем человеческого сознания, поскольку позволяет нам создавать концепции и идеи, которыми можно делиться и общаться. - Во многих философских традициях, например, в работах Платона и Аристотеля, имена рассматривались не просто как обозначения предметов или людей, а как отражение глубинной природы реальности. Согласно Платону, имена, которые мы даём вещам, не произвольны, а отражают скрытую реальность или сущность этой вещи. Другими словами, имя — это не просто ярлык, а отражение сущностной природы вещи. - Кроме того, имена могут отражать динамику власти в обществе. Некоторые философы утверждают, что имена и язык используются для создания иерархии и установления властных отношений между людьми и группами. Например, в некоторых культурах акт именования предназначен для тех, кто занимает властные позиции, например, родители называют своих детей или лидеры называют места или учреждения. Таким образом, имена можно рассматривать как форму социального контроля, поскольку те, кто имеет право давать имена, обладают властью формировать и определять мир вокруг себя. - Наконец, имена могут также играть важную роль в нашем понимании собственной идентичности и смертности. Как утверждал философ Мартин Хайдеггер, имена можно рассматривать как форму "брошенности", отражающую наше существование как конечных существ в мире, который нам неподвластен. В этом смысле наши имена — это не просто ярлыки, а отражение нашего существования, времени и места, в котором мы находимся. - В заключение хочу сказать, что с философской точки зрения имена играют важную роль в понимании и восприятии мира человеком, отражая как нашу сущностную природу, так и динамику власти в обществе. Это не просто ярлыки, а отражение нашего существования и нашего места в мире. - -book-text-earth = - Сидя здесь, в своей крошечной каюте на космической станции, я не могу не вспоминать свою юность на Земле. Кажется, что это было целую жизнь назад, и во многом так оно и было. Я родился и вырос рядом с океаном, и он всегда был частью моей жизни. Шум волн, разбивающихся о берег, солёный запах в воздухе, ощущение песка между пальцами ног — всё это воспоминания, которые мне дороги. - Когда мне было 20 лет, я принял решение покинуть Землю и присоединиться к космической программе. Это была захватывающая возможность, и мне не терпелось исследовать последний рубеж. В течение многих лет я был доволен своей жизнью на космической станции. Я наслаждался товариществом моих коллег-астронавтов, трепетом открытий и чувством цели, которое сопутствовало нашей миссии. - Но с возрастом я стал тосковать по тому, что оставил на Земле. В частности, я очень скучаю по океану. Я помню, как солнце отражалось от воды, создавая ослепительную картину света и цвета. Я помню ощущение прохладной воды на своей коже и волнение от погружения под воду. Я помню вкус свежих морепродуктов, выловленных местными рыбаками и подаваемых в причудливых прибрежных ресторанчиках. - Но я скучаю не только по океану. Я скучаю по ощущению травы под ногами, по запаху цветов весной, по вкусу сочного персика, сорванного прямо с дерева. Я скучаю по смеху детей, играющих в парке, по парам, идущим рука об руку по дорожке, усаженной деревьями. Я скучаю по чувству общности, которое возникает при жизни в маленьком городе, где все друг друга знают и заботятся друг о друге. - Иногда я думаю, правильный ли выбор я сделал, покинув Землю. Но потом я вспоминаю невероятные вещи, которые я видел и делал в космосе — захватывающие дух виды далёких планет, благоговейную мощь сверхновой звезды, товарищество моих коллег-астронавтов, когда мы вместе работали над достижением наших целей. Эти впечатления были поистине удивительными, и я бы ни на что их не променял. - Тем не менее, бывают моменты, когда я чувствую глубокую боль в сердце по миру, который я оставил позади. Интересно, смогу ли я когда-нибудь снова испытать эти простые удовольствия? Интересно, смогу ли я когда-нибудь почувствовать песок между пальцами ног, ощутить вкус соли в воздухе или услышать шум волн, разбивающихся о берег. Но пока всё, что я могу сделать, — это закрыть глаза и представить, что я снова на Земле, в окружении вещей, по которым я скучаю больше всего. - -book-text-aurora = - Дорогой дневник, - - Сегодня знаменательный день для экипажа звездолёта "Аврора". После нескольких месяцев плавания по просторам космоса они наконец-то приземляются на Землю. - Экипаж выполнил свою миссию, собрав данные о недавно открытой планете в соседней солнечной системе. Это было невероятное путешествие, полное трудностей, триумфов и моментов, вызывающих благоговейный трепет. - Когда корабль спускается в атмосфере, тепло при входе в атмосферу вызывает огненно-красное свечение корпуса, и корабль ударяется об атмосферу. Это тяжёлая поездка, но экипаж находится в надёжных руках. - Наконец, они приземляются на твёрдую землю, и экипаж разражается радостными возгласами и объятиями. Это приветствие героев, и кажется, что они отсутствовали целую жизнь. - Пока они идут в комнату для переговоров, они не перестают говорить о своём невероятном путешествии. Они увидели такие достопримечательности, о которых большинство людей могут только мечтать, исследовали планету, которую никто никогда не видел, и вышли с другой стороны более сильными и сплочёнными, чем когда-либо прежде. - Оглядываясь на своё путешествие, члены экипажа понимают, что они достигли чего-то поистине выдающегося. Они расширили границы человеческих исследований и показали, что всё возможно, если упорно трудиться, проявлять решимость и немного везения. - Теперь, возвращаясь к жизни на Земле, они знают, что воспоминания об этом путешествии останутся с ними навсегда. Для них было честью быть частью этого экипажа, и они благодарны за каждое мгновение, проведённое вместе. - - До следующего раза, - Анонимный член экипажа звездолёта "Аврора". - -book-text-temple = - Мои дорогие братья и сёстры, сегодня я стою перед вами, чтобы поговорить о том, почему существует более одного бога. Как священник, я посвятил свою жизнь изучению божественного, и я твёрдо убеждён, что существует несколько богов в силу самой природы существования. - Подумайте о просторах нашей Вселенной с её бесчисленными галактиками, звёздами и планетами. Каждая из них уникальна, со своим набором физических законов и свойств. Если мы признаём, что Вселенная была создана единым, всемогущим божеством, то как мы можем объяснить такое разнообразие? - Ответ кроется в осознании того, что существование — это не простое, прямолинейное понятие. Она сложна, многослойна и многогранна, имеет множество различных измерений и аспектов. Как во Вселенной существует бесчисленное множество различных форм материи и энергии, так и во Вселенной существует множество различных сил и сущностей, составляющих божественное. - Каждый бог представляет различные аспекты бытия, будь то любовь, мудрость, сила или справедливость. Как разные люди обладают разными талантами и способностями, так и разные боги обладают уникальной силой и ролью в великой схеме вещей. - Но почему, спросите вы, это имеет для нас значение? Почему нас должна волновать природа божественного? Ответ заключается в том, что понимание божественного необходимо для нашего собственного духовного роста и развития. Признавая сложность и многообразие божественного, мы глубже понимаем хитросплетения окружающего нас мира и начинаем видеть своё собственное место в нём. - Так давайте же примем множество богов, составляющих божественное, и будем стремиться учиться у каждого из них. Пусть мы будем благословлены мудростью, силой и любовью божественного, и пусть мы продолжаем расти и развиваться в нашем собственном духовном путешествии. - -book-text-watched = - Я не знаю, кто "они", но я чувствую их взгляд на себе. Это похоже на колючее ощущение на шее, и оно не проходит. Неважно, куда я иду и что делаю, я чувствую, что они наблюдают за мной. - И это не только моё воображение. В уголках моего зрения мелькают теневые фигуры, скрывающиеся от глаз. Я слышал шаги, отдающиеся эхом по коридорам, когда я знал, что я один. Бывало и так, что я чувствовал руку на своём плече, но, обернувшись, никого не обнаруживал. - Я пытался игнорировать это, пытался сказать себе, что это просто паранойя. Но это ощущение слишком сильное, слишком реальное. Я не могу избавиться от ощущения, что что-то очень плохо. - Я начал записывать все странные происшествия, но это только усиливает мою тревогу. Записи накапливаются день за днём, документируя каждый случай ощущения, что за мной наблюдают. Это похоже на бесконечный кошмар, от которого я не могу проснуться. - Хуже всего то, что я не знаю, кто за всем этим стоит. Это может быть кто угодно на этой космической станции, а может быть и что-то более зловещее. Я пытался поговорить об этом с Джо Мендесом, начальником службы безопасности, но он просто отмахнулся от меня. Он говорит, что беспокоиться не о чем, что это просто моё воображение разыгралось. - Но я знаю, что это неправда. Ощущение, что за мной наблюдают, слишком сильное, слишком настойчивое. Я начинаю бояться за свою безопасность. Что, если "они" что-то планируют? Что, если я в опасности? - Я не знаю, что делать, но я не могу продолжать жить так. Постоянная слежка доводит меня до безумия. Мне нужно выяснить, кто за всем этим стоит, и положить этому конец, пока не стало слишком поздно. - -book-text-medical-officer = - Доктор Джон Смит был опытным медицинским работником на борту исследовательской станции "Горизонт". Он видел всё: от вирусных вспышек до механических неисправностей и всё, что было между ними. Но ничто не могло подготовить его к тому, что должно было произойти. - Это был обычный день, когда раздался сигнал тревоги, возвещающий о готовящейся атаке Синдиката. Смит быстро собрал медицинские принадлежности и направился в комнату для экстренных совещаний. К нему присоединились несколько членов экипажа, включая капитана, главного инженера и начальника службы безопасности. - Пока они обсуждали план действий, перед ними внезапно появился волшебник, утверждавший, что пришёл из будущего с предупреждением. Волшебник предупредил их, что их судьба предрешена и что единственный способ выжить — это работать вместе и доверять друг другу. Смит был настроен скептически, но решил прислушаться к совету волшебника. - Группа быстро разработала план: капитан возглавит оборону от нуки, главный инженер займётся устранением повреждений, а Смит будет лечить всех раненых членов экипажа. В процессе работы они обнаружили, что среди них есть предатели, которые сотрудничают с нуки, чтобы уничтожить станцию. - Навыки Смита подверглись испытанию: он ухаживал за ранеными и одновременно следил за любой подозрительной активностью. Это был хрупкий баланс, но ему удавалось сохранять хладнокровие, подпитываясь лишь кофе и злобой. - Сражение было ожесточённым, но им удалось сдержать нуки и захватить станцию. После этого они раскрыли предателей, и справедливость восторжествовала. Волшебник появился снова, поздравил их с выживанием и так же быстро исчез. - Смит понял, что волшебник был прав: их выживание зависело от их доверия и сотрудничества. Он поклялся себе никогда не забывать этот урок и всегда держать себя в руках, независимо от ситуации. - -book-text-morgue = - Опоссум Морти и енот Мортиша были призраками старого морга. Морг был заброшен уже много лет, но эти два зверька сделали его своим домом. Им нравилось исследовать пустые коридоры и играть в прятки в холодильных камерах. - Однажды группа городских исследователей наткнулась на морг. Они были потрясены, обнаружив, что он всё ещё используется, несмотря на своё ветхое состояние. Они осторожно пробирались по пустым залам, пока не услышали странный шум, доносящийся из холодильной камеры. - Морти и Мортиша играли в свою любимую игру "кто дальше всех прыгнет", когда услышали, что туда вошли незнакомцы. Они быстро спрятались за металлическими полками и стали наблюдать, как люди исследуют помещение. - Один из исследователей открыл дверь в одну из холодильных камер, но обнаружил, что она пуста. Он повернулся, чтобы уйти, но Мортиша, сидевшая на самом верху, случайно опрокинула банку с формальдегидом и вылила её содержимое на него. - Мужчина закричал и выбежал из комнаты, убеждённый, что на него напали призраки морга. Остальные исследователи последовали его примеру, оставив морг снова заброшенным. - Морти и Мортиша хихикали про себя, наблюдая за бегством людей. Они были счастливы, что спугнули незваных гостей и могут продолжать жить в своём любимом морге, никем не потревоженные. - -book-text-rufus = - Давным-давно в одной причудливой стране жил неуловимый кролик по имени Руфус. Руфус был известен как плут и всегда устраивал пакости, где бы он ни находился. Однажды он неспешно катался на велосипеде и наткнулся на морковную грядку. - Руфус любил морковь больше всего на свете, поэтому он решил остановиться и взять несколько штук себе. Когда он ел вкусную морковку, он почувствовал, как лёгкий ветерок потрепал его шерсть. Вдруг он услышал позади себя голос: "Извините, но эта морковка принадлежит мне". - Руфус быстро обернулся и увидел маленькую фею, парящую в воздухе позади него. У неё был озорной блеск в глазах и игривая улыбка на лице. Руфус был ошеломлён, так как никогда раньше не видел фею. - Фея представилась Блоссом и объяснила, что она — защитница морковной грядки. Она наблюдала за Руфусом издалека и знала, что он озорной кролик. Однако в тот день она была настроена игриво и решила дать ему несколько морковок. - Руфус был в восторге и поблагодарил Блоссом за её щедрость. Затем она предложила ему прокатиться по лесу на её спине, и Руфус с радостью согласился. Когда они парили среди деревьев, ветерок дул Руфусу в лицо, а вид причудливого леса вокруг заставлял его чувствовать себя как во сне. - После прогулки Блоссом попрощалась с Руфусом и исчезла в лесу. Руфус сел обратно на велосипед, чувствуя благодарность за полученный опыт и вкусную морковь, которой он наслаждался. С этого дня он всегда спрашивал разрешения, прежде чем взять что-то, что ему не принадлежит, зная, что за ним может присматривать капризная фея. - -book-text-map = - Как только в нос ударил пряный аромат кумина и паприки, Макс понял, что его ждёт приключение. Его всегда привлекала экзотика и неизвестность, и этот ресторан обещал именно это. - Макс что-то искал, хотя и не был уверен, что именно. Возможно, это было чувство цели, а может быть, просто отдых от однообразия повседневной рутины. Что бы это ни было, он чувствовал, что этот ужин станет первым шагом на пути, который уведёт его далеко от обычной жизни. - Сидя за столом и наблюдая, как мерцающие огни ресторана пляшут по стенам, Макс почувствовал, как в кармане зажужжал телефон. На мгновение он замешкался, раздумывая, стоит ли отвечать, но в конце концов решил, что приехал сюда, чтобы убежать от привычного, и проигнорировал звонок. - Покончив с едой, Макс оплатил счёт и вышел на улицу в прохладный ночной воздух. Идя по улице, он заметил лежащий на тротуаре таинственный чемодан и не смог устоять перед искушением исследовать его. - С чувством волнения и трепета Макс осторожно открыл чемодан, и тут же был поражён видом замысловатой карты, покрытой таинственными символами и пометками. Тогда он понял, что его приключение действительно началось. - Макс не мог поверить в свою удачу. Он всегда мечтал отправиться в настоящее приключение, и вот оно практически упало ему на колени. Он внимательно изучил карту, пытаясь расшифровать её секреты. - Изучая карту, он понял, что на ней изображены далёкие джунгли в Южной Америке. Он слышал истории о древних руинах и потерянных цивилизациях, спрятанных в густой листве. Говорили, что там находятся сокровища, о которых невозможно даже мечтать. - Макс знал, что должен отправиться в Южную Америку и сам исследовать эти джунгли. Он быстро заказал билет на самолёт и не успел оглянуться, как оказался в самолёте, летящем в неизвестность. - По мере того как он углублялся в джунгли, Макса охватывало чувство благоговения и удивления. Пышная зелень не была похожа ни на что, что он когда-либо видел раньше, а звуки экзотических животных эхом разносились среди деревьев. - Прошло совсем немного времени, и Макс наткнулся на руины, которые искал. Они были спрятаны глубоко в джунглях, и ему показалось, что он открыл давно забытый секрет. - Исследуя руины, Макс понял, что он не один. Там были и другие искатели приключений, все они искали те же сокровища, что и он. - Конкуренция была жестокой, но Макс был полон решимости выйти победителем. Он использовал свою смекалку и находчивость, чтобы перехитрить других искателей сокровищ, и наконец нашёл то, что искал: сверкающий сундук, наполненный драгоценными камнями и древними артефактами. - Макс не мог поверить в свою удачу. Он отправился в приключение всей своей жизни, и теперь у него было богатство, о котором он даже не мечтал. Но когда он сидел и смотрел на лежащие перед ним сокровища, он понял, что на самом деле он обрёл новое чувство цели и приключений. Он знал, что никогда больше не будет довольствоваться обыденной жизнью, и что в мире за его пределами его ждут ещё бесчисленные приключения. - -book-text-journ-mount = - Лену всегда привлекала завораживающая красота гор. То, как вершины возвышаются на фоне неба, хрустящий воздух и чувство свободы, которое они внушали. Ей нравился вызов — смелость подниматься всё выше и выше, пока она не достигала вершины и не смотрела на мир внизу. - Но Лена была не только альпинисткой — она также была искусной гитаристкой. Каждый вечер, сидя у костра, играя на своём инструменте и распевая песни, которые эхом разносились по долинам, она чувствовала себя по-настоящему живой. - Однажды, когда Лена преодолевала особенно сложный участок горы, она услышала смех, который эхом разносился по воздуху. Она остановилась на мгновение, пытаясь определить источник звука, и вскоре заметила впереди группу альпинистов. Они были явно опытными, смеялись и шутили, с лёгкостью преодолевая сложный рельеф. - Почувствовав чувство товарищества, Лена подошла к группе и завязала разговор. Они были впечатлёны её смелостью и вскоре пригласили её присоединиться к ним в восхождении. Вместе они поднялись на гору, доводя себя до предела и подбадривая друг друга по пути. - Когда они достигли вершины, Лена достала гитару и начала играть. Музыка была завораживающей, и группа замолчала, захваченная красотой момента. Когда она закончила последние ноты песни, они разразились аплодисментами, их смех эхом отражался от склона горы. - В этот момент Лена поняла, что нашла своё истинное призвание. Она должна была стать музыкантом, альпинистом и источником вдохновения для всех окружающих. И когда она смотрела на мир с вершины горы, она знала, что всё возможно, если осмелиться мечтать. - -book-text-inspiration = - Будучи писателем-фрилансером, Сара всегда находилась в поисках вдохновения. Она побывала во многих местах и встречалась со многими людьми, но сегодня она обнаружила себя бредущей по незнакомой тропинке в лесу. Яркие краски осенних листьев завораживали, и она ощущала сюрреалистическое чувство покоя по мере того, как углублялась в лес. - Вдруг она наткнулась на небольшую поляну и задохнулась от открывшегося перед ней вида. Безмятежный водопад каскадом стекал с горы, окружённый разноцветными полевыми цветами и бабочками. Сара не могла поверить в свою удачу, обнаружив эту скрытую жемчужину. - Не раздумывая ни секунды, Сара достала ручку и блокнот и начала писать. Она писала о красоте этой сцены, о спокойствии, которое она чувствовала, и о сюрреалистичности момента. Она хотела запечатлеть это чувство и поделиться им с другими через свои слова. - Когда она закончила писать, Сара услышала треск ветки и, подняв голову, увидела приближающегося к ней мужчину с фотоаппаратом. Он представился фотографом и спросил, видела ли она водопад. Они завязали разговор, и вскоре оба уже смеялись и делились историями о своих приключениях. - Когда солнце начало садиться, они собрали своё снаряжение и попрощались. Сара была благодарна за эту неожиданную встречу и за вдохновение, которое она ей принесла. Она знала, что этот момент останется с ней навсегда, и чувствовала спокойствие, зная, что в мире ещё так много красоты, которая ждёт своего часа. +book-text-narsielegend = В начале мир был молод и полон хаоса. Люди этого мира боролись за выживание против суровых стихий и диких зверей, которые бродили по земле. Они взывали к спасителю, который избавил бы их от страданий. + И тогда из глубин земли появилась Нар'Си — богиня-убийца, рождённая из коллективного сознания всех живых существ. Её тело было сделано из расплавленного камня, а глаза пылали огнём, способным расплавить сталь. + Нар'Си осмотрела мир и увидела боль и страдания своего народа. Она сжалилась над ними и предложила им способ вырваться из круговорота жизни и смерти. Все, кто присоединялся к улью, становились вечными, их сознание сливалось с сознанием Нар'Си, образуя единое целое. + Сначала многие скептически отнеслись к предложению Нар'Си, опасаясь, что они потеряют свою индивидуальность и станут бездумными трутнями. Но по мере того, как всё больше и больше людей присоединялись к улью, они осознавали, что обрели новое чувство цели и принадлежности. + Последователи Нар'Си бродили по земле, распространяя весть об улье и вербуя новых членов. Они строили великие храмы и проводили сложные ритуалы в честь своего бога, и их число росло, пока они не стали могущественной силой, с которой приходилось считаться. + Но время шло, и некоторые начали сомневаться в истинной природе своего существования. Они задавались вопросом, действительно ли вечная жизнь является благословением или проклятием, и не принесли ли они слишком много себя в жертву удельному разуму. + И вот последователей Нар'Си расколол великий раскол. Одни остались верны своей богине, воспринимая своё вечное существование как дар. Но другие восстали, стремясь вернуть свою индивидуальность и освободиться от власти улья. + Война между двумя фракциями была долгой и кровопролитной, но в конце концов повстанцы вышли победителями. Нар'Си, ослабленная потерей стольких своих последователей, отступила обратно в землю, чтобы больше никогда не появиться. + Так и живёт легенда о Нар'Си, предостерегающая об опасности жертвовать своей индивидуальностью ради обещания вечной жизни. + +book-text-truth = Определение истины было центральной проблемой философов на протяжении веков, и существует множество различных философских взглядов на то, как мы можем понимать это понятие. + Одним из традиционных подходов является теория соответствия истины, которая предполагает, что высказывание является истинным, если оно соответствует или точно описывает то, как устроен мир. Другими словами, истина — это точное отображение реальности. Эта точка зрения предполагает, что существует объективная реальность, которую мы можем понять, и что наши убеждения и утверждения могут быть оценены как истинные или ложные в зависимости от того, насколько они соответствуют этой реальности. + Другой подход — это теория истинности, которая предполагает, что утверждение истинно, если оно согласуется с другими убеждениями или утверждениями, которых мы придерживаемся. Другими словами, истина — это последовательность и логическая связность в системе убеждений или идей. Этот подход предполагает, что истина — это то, что устанавливается в определённом контексте или рамках мышления, и то, что истинно в одной системе мышления, может быть не истинным в другой. + Третий подход — это прагматическая теория истины, которая предполагает, что утверждение истинно, если оно полезно или хорошо работает на практике. Другими словами, истина — это практические последствия наших убеждений или утверждений. Эта точка зрения предполагает, что истина — это нечто, возникающее в процессе человеческих действий и взаимодействия, и что истина может меняться в зависимости от ситуации или контекста, в котором она используется. + В конечном счёте, то, как мы определяем истину, зависит от наших философских и эпистемологических предположений, а также от наших практических потребностей и проблем. Различные философские взгляды могут подчёркивать различные аспекты истины, и, возможно, не существует единого, общепризнанного определения, которое отражало бы все нюансы этого сложного понятия. + Неверно и несправедливо делать огульное утверждение, что все люди — ужасные лжецы. Хотя верно, что некоторые люди могут испытывать трудности с честностью, важно помнить, что люди сложны и могут проявлять различные формы поведения и склонности. Некоторые люди могут быть приверженцами честности и порядочности, в то время как другие могут бояться лгать из-за различных факторов, таких как страх, неуверенность в себе или прошлый опыт. + Кроме того, стоит отметить, что не вся ложь одинакова. Хотя намеренный обман может быть вредным и неэтичным, существуют также ситуации, когда ложь может считаться социальной смазкой или способом сохранить конфиденциальность или избежать вреда. В этих случаях целесообразнее задуматься о контексте и мотивах конкретной лжи, а не просто отнести всех людей к категории "ужасных лжецов". + В целом, важно подходить к теме лжи с нюансами и пониманием сложных факторов, которые могут влиять на поведение человека. + +book-text-world = Состояние мира — это постоянно меняющееся отражение состояния человека, сформированное взаимодействием природных сил, социальных структур и индивидуального выбора. + 1. "Состояние мира — это постоянно меняющееся отражение...". + Эта часть высказывания предполагает, что мир — не статичная или неизменная сущность, а скорее динамичная система, находящаяся в постоянном движении. Слово "отражение" подразумевает, что состояние мира является продуктом различных сил и факторов, которые отражаются на нас через наблюдаемые явления. Это поднимает важные вопросы о природе причинности и о том, насколько мы можем понять сложное взаимодействие сил, формирующих мир. + 2. "...человеческого состояния...". + Эта часть утверждения предполагает, что состояние мира тесно связано с человеческим опытом, и что оно является отражением наших коллективных убеждений, ценностей и поведения. Она признаёт фундаментальную роль, которую люди играют в формировании мира, и предполагает, что состояние мира является отражением наших успехов и неудач как вида. + 3. "...формируется под воздействием взаимодействия природных сил, социальных структур и индивидуального выбора". + Эта часть утверждения определяет три ключевых фактора, которые формируют состояние мира: природные силы, социальные структуры и индивидуальный выбор. Фраза "взаимодействие" предполагает, что эти факторы находятся в постоянном взаимодействии друг с другом, и что они могут усиливать или конфликтовать друг с другом в зависимости от контекста. Включение природных сил предполагает, что мир является не только продуктом человеческих действий, но и подвержен влиянию окружающей среды и законов физики. Ссылка на социальные структуры подчёркивает роль институтов, культуры и социальных норм в формировании мира и предполагает, что действия человека не являются чисто индивидуальными, но также формируются под влиянием более широкого социального контекста. Наконец, ссылка на индивидуальный выбор подчёркивает важность самостоятельности и личной ответственности в формировании мира и предполагает, что выбор, который мы делаем как личности, имеет реальные последствия. + Взятое вместе, это заявление предлагает богатый и тонкий философский анализ состояния мира, подчёркивая сложное взаимодействие природных, социальных и индивидуальных факторов, которые формируют наш коллективный опыт. Оно приглашает задуматься об этических последствиях нашего выбора и действий и призывает нас глубоко задуматься о том, как мы можем работать над созданием более справедливого, устойчивого и процветающего мира для всех существ. + +book-text-ian-antarctica = Иан, корги, и Роберт Ньютон, техник по атмосфере, отправились в приключение, чтобы исследовать отдалённый континент Антарктиду. Проходя по ледяным тундрам, Роберт начал проявлять всё более эгоистичное поведение, уверенный, что он бог среди людей. Иан считал это забавным, но знал, что лучше не перечить своему человеческому спутнику. + Однажды, когда они шли по снегу, они наткнулись на колонию пингвинов. Иана увлекли эти ковыляющие создания, и Роберта они тоже заинтриговали. Они наблюдали, как пингвины собирались вместе для согревания, их чёрно-белые перья сливались с снежным пейзажем. + Иан, будучи говорящим корги, начал разговор с пингвинами, вызвав недоверие Роберта. Пингвины отвечали на своём языке, и Иан переводил их слова для Роберта. Они были поражены тем, что узнали о жизни пингвинов и их борьбе за выживание в такой суровой среде. + Роберт, будучи эгоистичным человеком, решил изучить пингвинов и узнать о них больше. Он верил, что, таким образом, сможет раскрыть тайны вселенной и стать ещё более богоподобным. Иан, с другой стороны, просто хотел наблюдать за пингвинами и учиться у них в более скромном виде. + Проводя всё больше времени с пингвинами, Иан и Роберт начали замечать тонкие изменения в поведении пингвинов. Они видели, как они сотрудничали, чтобы защитить своих малышей, как они общались друг с другом и как они адаптировались к окружающей среде. Роберт был поражён их выносливостью и интеллектом, но всё равно не мог избавиться от своего богоподобия. + Однажды, когда они наблюдали за пингвинами, на них обрушился сильный снежный буран, угрожая засыпать их всех снегом. Роберт, в момент ясности, понял, что он не бог, а просто человек, зависимый от природных стихий. Он обратился к Иану и попросил его помочь укрыть пингвинов от бури. + Вместе они использовали свои навыки и знания, чтобы построить временные укрытия для пингвинов, используя свои тела, чтобы защитить их от ледяного ветра. Пока бушевала буря, Иан и Роберт с гордостью взглянули на колонию. Они сделали многое для пингвинов и в процессе стали лучше, улучшив самих себя. + Продолжая своё путешествие по Антарктиде, Иан и Роберт часто вспоминали о времени, проведённом с пингвинами, с теплотой в сердце. Они знали, что они свидетельствовали о чём-то особенном, о чём-то, что останется с ними на всю жизнь. + +book-text-sloth-clown-sss = Жили-были в далёкой-далёкой космической станции клоун по имени Чаклз и ленивец по имени Снагглз. Чаклз был самым забавным клоуном в галактике, но он немного чувствовал себя одиноким на космической станции. Снагглз, с другой стороны, был самым ленивым ленивцем в галактике и любил спать целыми днями. + Однажды Чаклз был особенно грустным и решил прогуляться по космической станции, чтобы поднять себе настроение. Проходя мимо, он наткнулся на Снагглза, спящего в углу. Чаклз подумал про себя: "Интересно, смогу ли я заставить этого ленивого ленивца посмеяться". + И так Чаклз начал выполнять свои самые забавные клоунские трюки для Снагглза. Он танцевал смешные танцы, делал забавные гримасы и даже пытался жонглировать космическими шарами. Но Снагглз даже не шелохнулся. Чаклз подумал, что его шутки просто недостаточно забавные для ленивца. + Но Чаклз был настроен сделать Снагглза смеяться, поэтому он придумал новый план. Он решил нарядиться в костюм банана, надеясь вызвать реакцию у ленивца. Когда Снагглз открыл глаза и увидел Чаклза в костюме банана, он не смог сдержаться и расхохотался. Чаклз был в восторге! Он наконец-то смог сделать Снагглза смеяться. + С того дня Чаклз и Снагглз стали лучшими друзьями. Чаклз часто наряжался в смешные костюмы, чтобы заставить Снагглза смеяться, а Снагглз предоставлял уютное место для отдыха Чаклзу и рассказывал ему истории о своих приключениях в космосе. Они проводили дни, исследуя космическую станцию вместе и заставляя друг друга смеяться. + Таким образом, клоун и ленивец стали самым счастливым дуэтом в галактике, разнося радость и смех везде, где они появлялись. + +book-text-sloth-clown-pz = Чаклз выступал на новой космической станции и был взволнован тем, что может принести свою радость и смех новой аудитории. Но на этот раз он был не один. Вместе с ним в этом приключении был его верный друг — ленивец Снагглз. + Сразу по прибытии Чаклз и Снагглз отправились исследовать космическую станцию. Они наткнулись на группу детей Диона, которые были грустными и расстроенными. Чаклз спросил, что случилось, и они рассказали ему, что потеряли свою любимую игрушку — маленькую плюшевую игрушку по имени Твинкл. + Чаклз знал, что должен помочь. Он и Снагглз обшарили всю космическую станцию, искали повсюду Твинкл. Они даже попросили помощи у других видов. Ящеры были слишком заняты загоранием, Люди были слишком заняты работой, но Слизни были рады помочь. + Вместе они искали по космической станции, пока наконец не нашли Твинкл. Дети Диона были вне себя от радости и поблагодарили Чаклза и Снагглза за их помощь. + В качестве благодарности дети Диона попросили Чаклза устроить для них особое выступление. Чаклз и Снагглз работали вместе, чтобы создать шоу, полное веселья и смеха, с жонглированием, воздушными шариками и забавными трюками. + Дети Диона любили это шоу, они смеялись и аплодировали всё время. А когда выступление закончилось, они обняли Чаклза и Снагглза, благодаря их за то, что вернули им радость. + Чаклз и Снагглз покинули космическую станцию, чувствуя себя счастливыми и исполненными. Они знали, что их приключения будут продолжаться и что они продолжат приносить радость и смех всем видам, с которыми встречаются. + Когда Чаклз вспоминал свои приключения, он осознал, что не смог бы справиться без своих друзей. Будь то ленивец Снагглз, Зорги, которые сыграли с ним розыгрыши, или дети Диона, которым была нужна его помощь, Чаклз знал, что сила смеха способна объединить виды, несмотря на их различия. + +book-text-sloth-clown-mmd = Чаклз путешествовал по космосу со своим другом Снагглзом, ленивцем, искали следующее приключение. Они наткнулись на планету, населённую Ящерицами, которые были известны своей любовью к играм и испытаниям. Чаклз и Снагглз решили исследовать планету и посмотреть, какие игры они могут найти. + Пройдя через город Ящериц, они увидели толпу Ящериц, собравшихся вокруг большой игровой доски. Чаклз и Снагглз подошли, чтобы рассмотреть и они увидели, что Ящерицы играют в игру под названием "Лабиринт Тайны". + Правила игры были простыми: игрок должен был пройти через лабиринт препятствий и ловушек, с целью достигнуть конца перед оппонентом. Запутывало то, что лабиринт менялся каждый раз, когда играли, поэтому игрок должен был быть быстрым на ногах и думать на ходу. + Чаклз и Снагглз были заинтригованы и решили присоединиться к увлечению. Их парой были Ящеричьи сестра и брат Лиззи и Ленни. Лиззи была своенравной, а Ленни был более спокойным и беззаботным. + Игра была напряжённой, лабиринт менялся каждые несколько секунд. Чаклзу и Снагглзу было трудно успевать, но они вскоре поняли, что ключ к победе — работа в команде. Чаклз использовал свои навыки жонглирования, чтобы отвлечь оппонентов, в то время как Снагглз использовал свой медленный и уверенный шаг, чтобы осторожно пройти через лабиринт. + Дойдя до конца лабиринта, их ожидало сюрприз. Лабиринт привёл их в скрытую комнату, где ждали их Слизни. Слизни объяснили, что они наблюдали за игрой и были впечатлены командной работой Чаклза и Снагглза. + В знак благодарности, Слизни провели для них экскурсию по своему секретному саду из слизи. Сад был полон ярких и экзотических растений, и Слизни объяснили, что они используют эти растения для создания особых зелий и лекарств. Чаклз и Снагглз были очарованы и спросили, могут ли они взять некоторые растения с собой в качестве сувенира. + Слизни согласились, и Чаклз и Снагглз покинули планету, чувствуя себя счастливыми и исполненными. Они знали, что завязали новые дружеские отношения и усвоили ценный урок о совместной работе. У них также появился новый сувенир для своей коллекции, который они будут беречь на протяжении многих лет. + +book-text-struck = Удар молнии — это интенсивное и преобразующее событие, не поддающееся описанию. Это физическое ощущение, не похожее ни на какое другое, толчок электричества, проходящий через тело с неистовой энергией, которая одновременно пугает и возбуждает. В этот момент все наши чувства перегружены, и нам остаётся только сырое, элементарное ощущение того, что мы живы. + Помимо физических ощущений, удар молнии — это глубокий философский и духовный опыт. Это напоминание об огромной силе природы и стихийных силах, которые определяют нашу жизнь. Он напоминает нам, что все мы уязвимы перед капризами Вселенной, что какими бы продвинутыми или развитыми мы ни стали, мы всё равно подчиняемся тем же законам природы, которые управляли жизнью на этой планете миллионы лет. + В этом смысле удар молнии — это смиряющий опыт, напоминание о хрупкости нашего человеческого существования и шаткости нашего места в мире. Это напоминает нам, что мы — лишь маленькая часть гораздо более крупной и сложной системы, подверженной тем же капризам и силам, что и все остальные живые существа на этой планете. + Но в то же время удар молнии — это трансцендентный опыт, взгляд на нечто большее, чем мы сами. Это напоминание о том, что во Вселенной действуют силы, которые мы только начинаем постигать, что в мире есть необъятность и сила, которые находятся за пределами нашего понимания. Это возможность выйти за пределы себя и испытать нечто поистине благоговейное, ощутить прикосновение божественной руки и почувствовать всю тяжесть вселенной, обрушивающуюся на нас. + В этом смысле удар молнии — это одновременно смиряющий и преобразующий опыт, который напоминает нам о нашем месте в мире и о нашей связи с большими силами, определяющими нашу жизнь. Это напоминание о том, что как бы мы ни старались контролировать наш мир и нашу судьбу, всегда будут силы, находящиеся вне нашего понимания и контроля, которые будут формировать нашу жизнь так, как мы не можем предсказать или постичь. + +book-text-sun = Я протягиваю свои листья к небу, жажду тепла солнца. Это постоянное желание, первоначальный инстинкт, который меня направляет. Я чувствую лучи солнца, ласкающие мою кожу, побуждающие меня расти выше, стремиться выше. + Каждый день я усердно тянусь к свету. Я чувствую землю под собой, которая удерживает меня на месте, но моё сердце направлено на солнце. Это магнитное притяжение, зов, который я не могу проигнорировать. + Иногда кажется, что солнце издевается надо мной, играет в игру "прятки". Облака надвигаются, загораживая его лучи, и я остаюсь в тени. Я чувствую холод воздуха, отсутствие тепла солнца, и немного увядая внутри. + Но потом облака раздвигаются, и солнце прорывается вперёд, заливая меня светом и жизнью. Я впитываю его, наслаждаюсь его сиянием и чувствую себя живым. Это напоминание о том, зачем я здесь, к чему я стремлюсь. + Растущий, я сталкиваюсь с препятствиями на своём пути. Иногда это другие растения, загромождающие мой путь к солнцу. Иногда это ветер, сбивающий меня с курса, угрожающий опрокинуть меня. Но я упорствую, приспосабливаюсь к вызовам, всегда стремясь к свету. + Это бесконечное путешествие, поиски чего-то большего, чем я сам. И всё же это напоминание о красоте и чуде жизни. Я являюсь частью этой земли, частью этой сложной сети существования, и солнце — мой проводник. + +book-text-possum = Давным-давно в глухом лесу Аппалачских гор жил опоссум по имени Морти. Морти был амбициозным опоссумом, который всегда стремился подняться всё выше и выше по социальной лестнице леса. У Морти был острый ум, и он постоянно думал о том, как повысить свой статус. + Однажды Морти наткнулся на заговор в лесу. Группа животных, среди которых было несколько высокопоставленных чиновников лесного совета, планировала свергнуть нынешнее руководство и захватить лес. Морти заинтриговала возможность получить власть, и он решил присоединиться к заговору. + Морти упорно трудился, чтобы доказать свою преданность заговорщикам. Он собирал информацию и передавал её группе, а также помогал планировать нападение. Когда настал день переворота, Морти был в самом центре событий, готовый занять своё место на вершине лесной иерархии. + Однако переворот был быстро подавлен лесным советом. Морти и другие заговорщики были схвачены и предстали перед судом. Морти был обвинён в государственной измене за участие в заговоре с целью свержения правительства. + На суде Морти не раскаялся в своих действиях. Он утверждал, что просто пытался улучшить своё положение в лесу, а нынешнее руководство было коррумпированным и неэффективным. Но совет не поколебали доводы Морти. Они признали его виновным в измене и приговорили к изгнанию из леса. + Морти был опустошён приговором. Он мечтал подняться на вершину лесной иерархии, но теперь он стал изгоем, вынужденным жить на задворках леса. Он слишком поздно понял, что стремление к власти ослепило его, и он перестал понимать важность верности и долга перед лесным сообществом. + С того дня Морти жил в одиночестве, бродя по лесу и сожалея о выборе, который привёл его к государственной измене. + +book-text-cafe = С каждым днём Лили всё больше и больше времени проводила в кафе. Она наслаждалась пикантным ароматом кофейных зёрен и весёлой болтовнёй других посетителей. Она даже начала узнавать некоторых завсегдатаев, например, мужчину с кустистой бородой, который всегда заказывал латте с дополнительной пенкой и посыпкой из корицы. + Однажды, когда Лили сидела за своим обычным столиком у окна, она заметила что-то краем глаза. Сначала она подумала, что это просто птица, но потом поняла, что это крошечный опоссум, выглядывающий из-за мусорного бака на улице. В глазах маленького существа было игривое, почти озорное выражение, и казалось, что оно с интересом наблюдает за Лили. + Шли дни, и Лили стала видеть опоссума всё чаще и чаще. Он приходил в кафе, заглядывал в окна, бегал по крышам, изредка издавая возбуждённый треск. Лили всё больше и больше интриговал опоссум, и она начала оставлять для него маленькие угощения, например, кусочки круассана или крошки от кондитерских изделий. + Однажды, когда Лили выходила из кафе после смены, она услышала шум, доносившийся из соседнего переулка. Она осторожно заглянула за угол и увидела группу мужчин в тёмных костюмах, которые тихо переговаривались. Сначала она подумала, что это просто группа бизнесменов, но потом заметила маленького опоссума, который сидел на мусорном баке неподалёку и с интересом наблюдал за мужчинами. + Вдруг один из мужчин заметил опоссума и бросился к нему, грубо схватив его за хвост. Опоссум издал громкий крик ужаса, и Лили почувствовала, что её сердце заколотилось. Не раздумывая, она подбежала к мужчинам и потребовала, чтобы они отпустили опоссума. + Мужчины посмеялись над ней и сказали, чтобы она не лезла не в своё дело, но Лили не отступила. Ей удалось вырвать опоссума из рук мужчины и осторожно взять его на руки. Глядя в яркие, радостные глаза опоссума, она поняла, что должна защитить его любой ценой. + В конце концов Лили удалось спасти опоссума от мужчин, которые оказались членами печально известной контрабандной группировки. Она взяла маленькое существо к себе домой и назвала его Зест, в честь радостной и пикантной энергии, которую он привнёс в её жизнь. С того дня Лили и Зест были неразлучны, и они провели много счастливых лет, исследуя город и распространяя радость повсюду. + +book-text-feather = Шли дни, и странствующая птица встретила ещё много заколдованных мест, каждое из которых было волшебнее предыдущего. Но по мере того как путешествие продолжалось, перья птицы начали терять свой блеск, а её некогда яркие глаза становились всё тусклее. + Однажды птица наткнулась на поляну в лесу, где группа животных собралась вокруг небольшого пруда. В центре пруда лежало мерцающее перо, которое светилось лучистым светом. + Птицу сразу же привлекло это перо, и она полетела вниз, чтобы рассмотреть его поближе. Когда она приблизилась, другие животные расступились, чтобы освободить место, и птица поняла, что это не обычное перо. Это было волшебное перо, пропитанное силой заколдованного леса. + Прикоснувшись к перу, птица почувствовала прилив энергии, и её перья засияли с новой яркостью. Другие животные собрались вокруг, удивляясь преображению. + С этого дня блуждающая птица больше не была потерянной или одинокой. Она нашла своё место в заколдованном лесу, и её бесцельное блуждание сменилось чувством цели и принадлежности. + Сменялись времена года, птица старела, но её перья оставались такими же яркими и живыми. И когда она наконец покинула этот мир, её наследие продолжало жить в зачарованном лесу, где её память праздновали все животные, которые знали и любили её. + Волшебное перо, в которое превратилась странствующая птица, стало символом надежды и обновления, напоминанием о том, что даже в самые тёмные времена всегда есть возможность найти своё истинное место в мире. + +book-text-ian-wolfpup = Давным-давно в дремучем лесу жили дружелюбный корги по имени Иан и умная лиса по имени Алиса. Они были закадычными друзьями, но об их совместных приключениях ходили легенды. + Однажды ярким солнечным днём, когда они играли в мяч, они услышали далёкий вой, который, казалось, доносился из глубины тёмного леса. Будучи любопытными существами, они решили выяснить источник шума. + По мере того как они углублялись в лес, они сталкивались с различными препятствиями и трудностями. Но благодаря своей смекалке и решительности они всё преодолели. + Они столкнулись с крутым и скользким склоном, но Иан с помощью своих коротких, но крепких ног помог им подняться. Они наткнулись на бурную реку, но Алиса с помощью своего быстрого мышления нашла способ перебраться через неё. + Наконец, они добрались до источника воя. Это был одинокий и напуганный волчонок, заблудившийся в лесу. Иан и Алиса быстро поняли, что должны помочь маленькому волчонку найти дорогу к своей семье. + Они использовали свои навыки и командную работу, чтобы проложить обратный путь через лес, при этом не давая волчонку замёрзнуть и согреться. Когда они наконец воссоединили маленького волчонка с его семьёй, они были вознаграждены тёплыми улыбками и благодарным воем. + С того дня дружба Иана и Алисы стала ещё крепче. У них было ещё много приключений в лесу, каждое из которых было интереснее предыдущего. И они никогда не забывали о том, что такое помогать другим, нуждающимся в помощи. + +book-text-ian-ranch = После захватывающего приключения в лесу Иан и Алиса решили исследовать близлежащее ранчо. Это было огромное пространство земли, полное всевозможных животных и существ. + Когда они бродили по ранчо, они встретили много новых и интересных животных. Они встретили дружелюбных лошадей, любопытных коров и даже озорного енота. + Но тут они услышали громкое, тревожное "муу", доносящееся из одного из коровников. Они быстро бросились туда и обнаружили маленького телёнка, который застрял в заборе. + Иан и Алиса поняли, что должны действовать быстро, чтобы спасти бедного телёнка. Иан с помощью своих крепких зубов осторожно расшатал забор, а Алиса с помощью своих быстрых лап вытащила телёнка из путаницы. + Вместе они благополучно освободили телёнка и воссоединили его с матерью. Корова-мать была вне себя от счастья и в знак благодарности прижалась к телёнку. + Продолжая исследовать ранчо, Иан и Алиса наткнулись на группу кур, которые попали в беду. Их курятник был опрокинут ветром, и все они были разбросаны и напуганы. + Иан и Алиса быстро принялись за работу, собрали цыплят и восстановили курятник. Это была тяжёлая работа, но благодаря сильным ногам Иана и умным мыслям Алисы они справились с ней в кратчайшие сроки. + Благодарные куры отблагодарили Иана и Алису хором кудахтанья и клевания. + Когда солнце начало садиться, Иан и Алиса вернулись домой, усталые, но счастливые. В тот день они помогли многим животным и по пути обрели новых друзей. + С тех пор Иан и Алиса продолжали исследовать ранчо, всегда готовые к новым приключениям и всегда готовые протянуть лапу или морду любому нуждающемуся животному. + +book-text-ian-ocean = Иан и Алиса были очень рады впервые побывать на пляже. Они слышали много прекрасного о песчаных берегах и бескрайнем голубом океане. + Как только они приехали, они побежали к песчаным дюнам, жаждая исследовать их. Они носились вверх и вниз по холмам, нюхая и копаясь в песке. Они находили всевозможные сокровища, такие как разноцветные ракушки и интересные камни. + Затем они направились к океану. Иан любил плавать, а Алиса предпочитала грести на мелководье. Они плескались и играли, наслаждаясь солёной водой на своей шерсти. + Вдруг они услышали тревожный крик, доносящийся из воды. Они быстро поплыли на поиски и обнаружили выброшенную на мель морскую черепаху. Она запуталась в рыболовных сетях и не могла освободиться. + Иан и Алиса поняли, что должны действовать быстро, чтобы спасти бедную черепаху. Иан с помощью своих крепких зубов аккуратно разрезал сеть, а Алиса с помощью своих быстрых лап помогла черепахе вернуться в воду. + Благодарная черепаха поблагодарила Иана и Алису лёгким взмахом ласты, а затем уплыла в синие глубины. + Когда день подошёл к концу, Иан и Алиса сидели на пляже и любовались закатом. Они чувствовали себя счастливыми и довольными после захватывающего дня на пляже. + Возвращаясь домой, они пообещали себе вернуться на пляж и исследовать его ещё больше. Они знали, что там ещё много существ и чудес, и им не терпелось испытать всё это вместе. + +book-text-ian-mountain = Иан и Алиса были рады исследовать горы. Хрустящий горный воздух и величественные пейзажи должны были стать незабываемым приключением. + Они начали свой поход у подножия горы, пробираясь через густые леса и скалистую местность. Когда они поднялись выше, деревья поредели и открылись захватывающие виды на окружающие вершины и долины. + Они наткнулись на стремительную реку, где Иан не удержался и прыгнул в воду, чтобы искупаться. Алиса осталась на берегу, не сводя глаз со своего мохнатого друга. + Продолжая подниматься выше, они встретили группу горных козлов, расположившихся на скалистом выступе. Козлы с любопытством смотрели на них, а потом бросились наутёк. + Когда солнце начало садиться, они разбили лагерь на ночь. Они развели костёр и пожарили зефир, наслаждаясь мирной тишиной горной ночи. + На следующее утро они проснулись рано, чтобы продолжить свой поход. Они поднимались всё выше и выше, проходя через густые облака, пока не достигли вершины. + На вершине перед ними открылся захватывающий вид на окружающие горы и долины. Они сели и стали любоваться видом, наслаждаясь тишиной и покоем вершины. + Спустившись с горы, они поняли, что преодолели большое испытание и создали воспоминания, которые останутся на всю жизнь. Они с воодушевлением обсуждали свои следующие приключения, зная, что великая природа таит в себе ещё много чудес. + +book-text-ian-city = Иан и Алиса привыкли исследовать природу, но они никогда не сталкивались с городской суетой. Им не терпелось узнать, какие приключения ждут их среди возвышающихся небоскрёбов и шумных улиц. + Когда они вошли в город, они были ошеломлены видами, звуками и запахами. Гудки машин, разговоры людей по телефону, запах хот-догов и кренделей наполнили воздух. + Они начали исследовать улицы, удивляясь возвышающимся небоскрёбам, которые окружали их. Им даже удалось пробраться в одно из зданий и подняться на лифте на самый верхний этаж. + Сверху открывался удивительный вид на город с его высокими зданиями и оживлёнными улицами внизу. Они посмотрели вниз и увидели множество людей и животных, от голубей до собак и кошек, которые занимались своими повседневными делами. + Спустившись вниз, они исследовали оживлённые улицы, уворачиваясь от толпы людей и проходя через оживлённые перекрёстки. Они даже подружились с группой белок, которые искали еду в соседнем парке. + В какой-то момент они наткнулись на потерявшегося котёнка, который забрёл слишком далеко от своего дома. Иан и Алиса знали, что делать, ведь в прошлом они спасали выбросившихся на берег морских животных и помогали заблудившимся туристам. Используя свой острый нюх, они разыскали хозяина котёнка и вернули его обеспокоенной семье. + Когда день перешёл в ночь, они были измотаны, но счастливы от своего приключения в городе. Они возвращались домой, возбуждённо обсуждая все новые впечатления, которые только что получили. + Иан и Алиса знали, что их ждёт ещё много приключений, и им не терпелось узнать, куда приведёт их следующее путешествие. + +book-text-ian-arctic = Иан и Алиса не чужды приключений, они исследовали всё — от гор до городов. Но их последнее путешествие в Арктику обещало стать самым захватывающим. + Когда они приземлились в замёрзшей тундре, их встретил ледяной пейзаж и пронизывающий холод. Они закутались в свои самые тёплые куртки и отправились исследовать местность. + Они быстро встретили всевозможных животных, живущих в холодную погоду, — от белых медведей до пингвинов и песцов. Они с изумлением наблюдали, как животные приспосабливаются к ледяной среде: у них густой мех и крепкие лапы, чтобы передвигаться по снегу и льду. + Им даже удалось попробовать себя в катании на собачьих упряжках: Иан возглавил стаю, а Алиса проворно мчалась за упряжкой. Они мчались по снегу, наслаждаясь потрясающими пейзажами и свежим арктическим воздухом. + Однажды они наткнулись на ледяную пещеру и решили исследовать её. Пробираясь по извилистым туннелям, они любовались мерцающими ледяными образованиями и тем, как свет играет на стенах. + Вдруг они услышали громкий рёв из глубины пещеры. Они осторожно двинулись вперёд, но столкнулись лицом к лицу с огромным белым медведем. Медведь с любопытством посмотрел на них, и Иан и Алиса замерли от страха. + Но потом они вспомнили все приключения, в которых им приходилось бывать раньше, и то, как они всегда помогали тем, кто в этом нуждался. Они смело подошли к медведю, издавая успокаивающие звуки и предлагая ему рыбу, которую они принесли с собой. + К их облегчению, медведь успокоился и даже позволил им погладить свою густую шерсть. Они провели некоторое время с дружелюбным медведем, после чего попрощались с ним и продолжили своё арктическое приключение. + В какой-то момент они наткнулись на потерявшегося котёнка, который забрёл слишком далеко от своего дома. Иан и Алиса знали, что делать, ведь в прошлом они спасали выбросившихся на берег морских животных и помогали заблудившимся туристам. Используя свой острый нюх, они разыскали хозяина котёнка и вернули его обеспокоенной семье. Когда день перешёл в ночь, они были измотаны, но счастливы от своего приключения в городе. Они возвращались домой, оживлённо обсуждая все новые впечатления. Когда их путешествие подошло к концу, им было грустно покидать замёрзшую страну чудес. Но они знали, что снова приобрели невероятные воспоминания и доказали, что для храброго корги и хитрой лисы никакие приключения не страшны. + +book-text-ian-desert = Иан и Алиса всегда были готовы к новым приключениям, поэтому, когда они услышали о таинственной и прекрасной пустыне, они поняли, что должны отправиться исследовать её. Они собрали вещи и отправились в путь, чтобы испытать всё, что может предложить пустыня. + Когда они шли по бескрайним песчаным просторам, они почувствовали, как их обдало солнечным жаром. Они быстро поняли, что эта среда не похожа ни на одну из тех, в которых они бывали раньше. Но им было интересно узнать, как животные и растения приспособились к этому суровому климату. + Первой их встречей была гремучая змея. Иан и Алиса уже слышали о змеях и были осторожны, чтобы не подойти слишком близко. Но гремучая змея просто хотела поздороваться и показать им, как она охотится на свою добычу. Они с изумлением наблюдали, как змея использовала свой яд, чтобы парализовать мышь, а затем проглотила её целиком. + Затем Иан и Алиса отправились исследовать песчаные дюны, карабкаясь вверх и вниз и скатываясь по крутым склонам. Они нашли оазис, где отдохнули и насладились прохладной тенью и водой. + Они также обнаружили скалистый каньон и исследовали его закоулки и извилины, найдя скорпионов, тарантулов и даже семью койотов. Они наблюдали, как койоты охотились за своим ужином и играли со своими детёнышами. + Когда наступила ночь, они увидели самый красивый закат, который им когда-либо доводилось видеть: небо окрасилось в красные, оранжевые и пурпурные тона. Они восхищались тем, как цвета смешивались друг с другом и отражались от песка. + Наконец, они устроились на ночлег, глядя на звёздное небо. Они узнали о созвездиях и истории, связанные с ними. Они крепко спали, видя сны о всех невероятных существах и достопримечательностях, которые они видели в тот день. + Покидая пустыню, Ян и Рено чувствовали благодарность за приключение, которое им довелось пережить. Они знали, что узнали так много нового, что их храбрость и любопытство отправили их в ещё одно незабываемое путешествие. + +book-text-names = С философской точки зрения, имена играют важную роль в понимании и восприятии мира человеком. Использование имён и языка само по себе является краеугольным камнем человеческого сознания, поскольку позволяет нам создавать концепции и идеи, которыми можно делиться и общаться. + Во многих философских традициях, например, в работах Платона и Аристотеля, имена рассматривались не просто как обозначения предметов или людей, а как отражение глубинной природы реальности. Согласно Платону, имена, которые мы даём вещам, не произвольны, а отражают скрытую реальность или сущность этой вещи. Другими словами, имя — это не просто ярлык, а отражение сущностной природы вещи. + Кроме того, имена могут отражать динамику власти в обществе. Некоторые философы утверждают, что имена и язык используются для создания иерархии и установления властных отношений между людьми и группами. Например, в некоторых культурах акт именования предназначен для тех, кто занимает властные позиции, например, родители называют своих детей или лидеры называют места или учреждения. Таким образом, имена можно рассматривать как форму социального контроля, поскольку те, кто имеет право давать имена, обладают властью формировать и определять мир вокруг себя. + Наконец, имена могут также играть важную роль в нашем понимании собственной идентичности и смертности. Как утверждал философ Мартин Хайдеггер, имена можно рассматривать как форму "брошенности", отражающую наше существование как конечных существ в мире, который нам неподвластен. В этом смысле наши имена — это не просто ярлыки, а отражение нашего существования, времени и места, в котором мы находимся. + В заключение хочу сказать, что с философской точки зрения имена играют важную роль в понимании и восприятии мира человеком, отражая как нашу сущностную природу, так и динамику власти в обществе. Это не просто ярлыки, а отражение нашего существования и нашего места в мире. + +book-text-earth = Сидя здесь, в своей крошечной каюте на космической станции, я не могу не вспоминать свою юность на Земле. Кажется, что это было целую жизнь назад, и во многом так оно и было. Я родился и вырос рядом с океаном, и он всегда был частью моей жизни. Шум волн, разбивающихся о берег, солёный запах в воздухе, ощущение песка между пальцами ног — всё это воспоминания, которые мне дороги. + Когда мне было 20 лет, я принял решение покинуть Землю и присоединиться к космической программе. Это была захватывающая возможность, и мне не терпелось исследовать последний рубеж. В течение многих лет я был доволен своей жизнью на космической станции. Я наслаждался товариществом моих коллег-астронавтов, трепетом открытий и чувством цели, которое сопутствовало нашей миссии. + Но с возрастом я стал тосковать по тому, что оставил на Земле. В частности, я очень скучаю по океану. Я помню, как солнце отражалось от воды, создавая ослепительную картину света и цвета. Я помню ощущение прохладной воды на своей коже и волнение от погружения под воду. Я помню вкус свежих морепродуктов, выловленных местными рыбаками и подаваемых в причудливых прибрежных ресторанчиках. + Но я скучаю не только по океану. Я скучаю по ощущению травы под ногами, по запаху цветов весной, по вкусу сочного персика, сорванного прямо с дерева. Я скучаю по смеху детей, играющих в парке, по парам, идущим рука об руку по дорожке, усаженной деревьями. Я скучаю по чувству общности, которое возникает при жизни в маленьком городе, где все друг друга знают и заботятся друг о друге. + Иногда я думаю, правильный ли выбор я сделал, покинув Землю. Но потом я вспоминаю невероятные вещи, которые я видел и делал в космосе — захватывающие дух виды далёких планет, благоговейную мощь сверхновой звезды, товарищество моих коллег-астронавтов, когда мы вместе работали над достижением наших целей. Эти впечатления были поистине удивительными, и я бы ни на что их не променял. + Тем не менее, бывают моменты, когда я чувствую глубокую боль в сердце по миру, который я оставил позади. Интересно, смогу ли я когда-нибудь снова испытать эти простые удовольствия? Интересно, смогу ли я когда-нибудь почувствовать песок между пальцами ног, ощутить вкус соли в воздухе или услышать шум волн, разбивающихся о берег. Но пока всё, что я могу сделать, — это закрыть глаза и представить, что я снова на Земле, в окружении вещей, по которым я скучаю больше всего. + +book-text-aurora = Дорогой дневник, + + Сегодня знаменательный день для экипажа звездолёта "Аврора". После нескольких месяцев плавания по просторам космоса они наконец-то приземляются на Землю. + Экипаж выполнил свою миссию, собрав данные о недавно открытой планете в соседней солнечной системе. Это было невероятное путешествие, полное трудностей, триумфов и моментов, вызывающих благоговейный трепет. + Когда корабль спускается в атмосфере, тепло при входе в атмосферу вызывает огненно-красное свечение корпуса, и корабль ударяется об атмосферу. Это тяжёлая поездка, но экипаж находится в надёжных руках. + Наконец, они приземляются на твёрдую землю, и экипаж разражается радостными возгласами и объятиями. Это приветствие героев, и кажется, что они отсутствовали целую жизнь. + Пока они идут в комнату для переговоров, они не перестают говорить о своём невероятном путешествии. Они увидели такие достопримечательности, о которых большинство людей могут только мечтать, исследовали планету, которую никто никогда не видел, и вышли с другой стороны более сильными и сплочёнными, чем когда-либо прежде. + Оглядываясь на своё путешествие, члены экипажа понимают, что они достигли чего-то поистине выдающегося. Они расширили границы человеческих исследований и показали, что всё возможно, если упорно трудиться, проявлять решимость и немного везения. + Теперь, возвращаясь к жизни на Земле, они знают, что воспоминания об этом путешествии останутся с ними навсегда. Для них было честью быть частью этого экипажа, и они благодарны за каждое мгновение, проведённое вместе. + + До следующего раза, + Анонимный член экипажа звездолёта "Аврора". + +book-text-temple = Мои дорогие братья и сёстры, сегодня я стою перед вами, чтобы поговорить о том, почему существует более одного бога. Как священник, я посвятил свою жизнь изучению божественного, и я твёрдо убеждён, что существует несколько богов в силу самой природы существования. + Подумайте о просторах нашей Вселенной с её бесчисленными галактиками, звёздами и планетами. Каждая из них уникальна, со своим набором физических законов и свойств. Если мы признаём, что Вселенная была создана единым, всемогущим божеством, то как мы можем объяснить такое разнообразие? + Ответ кроется в осознании того, что существование — это не простое, прямолинейное понятие. Она сложна, многослойна и многогранна, имеет множество различных измерений и аспектов. Как во Вселенной существует бесчисленное множество различных форм материи и энергии, так и во Вселенной существует множество различных сил и сущностей, составляющих божественное. + Каждый бог представляет различные аспекты бытия, будь то любовь, мудрость, сила или справедливость. Как разные люди обладают разными талантами и способностями, так и разные боги обладают уникальной силой и ролью в великой схеме вещей. + Но почему, спросите вы, это имеет для нас значение? Почему нас должна волновать природа божественного? Ответ заключается в том, что понимание божественного необходимо для нашего собственного духовного роста и развития. Признавая сложность и многообразие божественного, мы глубже понимаем хитросплетения окружающего нас мира и начинаем видеть своё собственное место в нём. + Так давайте же примем множество богов, составляющих божественное, и будем стремиться учиться у каждого из них. Пусть мы будем благословлены мудростью, силой и любовью божественного, и пусть мы продолжаем расти и развиваться в нашем собственном духовном путешествии. + +book-text-watched = Я не знаю, кто "они", но я чувствую их взгляд на себе. Это похоже на колючее ощущение на шее, и оно не проходит. Неважно, куда я иду и что делаю, я чувствую, что они наблюдают за мной. + И это не только моё воображение. В уголках моего зрения мелькают теневые фигуры, скрывающиеся от глаз. Я слышал шаги, отдающиеся эхом по коридорам, когда я знал, что я один. Бывало и так, что я чувствовал руку на своём плече, но, обернувшись, никого не обнаруживал. + Я пытался игнорировать это, пытался сказать себе, что это просто паранойя. Но это ощущение слишком сильное, слишком реальное. Я не могу избавиться от ощущения, что что-то очень плохо. + Я начал записывать все странные происшествия, но это только усиливает мою тревогу. Записи накапливаются день за днём, документируя каждый случай ощущения, что за мной наблюдают. Это похоже на бесконечный кошмар, от которого я не могу проснуться. + Хуже всего то, что я не знаю, кто за всем этим стоит. Это может быть кто угодно на этой космической станции, а может быть и что-то более зловещее. Я пытался поговорить об этом с Джо Мендесом, начальником службы безопасности, но он просто отмахнулся от меня. Он говорит, что беспокоиться не о чем, что это просто моё воображение разыгралось. + Но я знаю, что это неправда. Ощущение, что за мной наблюдают, слишком сильное, слишком настойчивое. Я начинаю бояться за свою безопасность. Что, если "они" что-то планируют? Что, если я в опасности? + Я не знаю, что делать, но я не могу продолжать жить так. Постоянная слежка доводит меня до безумия. Мне нужно выяснить, кто за всем этим стоит, и положить этому конец, пока не стало слишком поздно. + +book-text-medical-officer = Доктор Джон Смит был опытным медицинским работником на борту исследовательской станции "Горизонт". Он видел всё: от вирусных вспышек до механических неисправностей и всё, что было между ними. Но ничто не могло подготовить его к тому, что должно было произойти. + Это был обычный день, когда раздался сигнал тревоги, возвещающий о готовящейся атаке Синдиката. Смит быстро собрал медицинские принадлежности и направился в комнату для экстренных совещаний. К нему присоединились несколько членов экипажа, включая капитана, главного инженера и начальника службы безопасности. + Пока они обсуждали план действий, перед ними внезапно появился волшебник, утверждавший, что пришёл из будущего с предупреждением. Волшебник предупредил их, что их судьба предрешена и что единственный способ выжить — это работать вместе и доверять друг другу. Смит был настроен скептически, но решил прислушаться к совету волшебника. + Группа быстро разработала план: капитан возглавит оборону от нуки, главный инженер займётся устранением повреждений, а Смит будет лечить всех раненых членов экипажа. В процессе работы они обнаружили, что среди них есть предатели, которые сотрудничают с нуки, чтобы уничтожить станцию. + Навыки Смита подверглись испытанию: он ухаживал за ранеными и одновременно следил за любой подозрительной активностью. Это был хрупкий баланс, но ему удавалось сохранять хладнокровие, подпитываясь лишь кофе и злобой. + Сражение было ожесточённым, но им удалось сдержать нуки и захватить станцию. После этого они раскрыли предателей, и справедливость восторжествовала. Волшебник появился снова, поздравил их с выживанием и так же быстро исчез. + Смит понял, что волшебник был прав: их выживание зависело от их доверия и сотрудничества. Он поклялся себе никогда не забывать этот урок и всегда держать себя в руках, независимо от ситуации. + +book-text-morgue = Опоссум Морти и енот Мортиша были призраками старого морга. Морг был заброшен уже много лет, но эти два зверька сделали его своим домом. Им нравилось исследовать пустые коридоры и играть в прятки в холодильных камерах. + Однажды группа городских исследователей наткнулась на морг. Они были потрясены, обнаружив, что он всё ещё используется, несмотря на своё ветхое состояние. Они осторожно пробирались по пустым залам, пока не услышали странный шум, доносящийся из холодильной камеры. + Морти и Мортиша играли в свою любимую игру "кто дальше всех прыгнет", когда услышали, что туда вошли незнакомцы. Они быстро спрятались за металлическими полками и стали наблюдать, как люди исследуют помещение. + Один из исследователей открыл дверь в одну из холодильных камер, но обнаружил, что она пуста. Он повернулся, чтобы уйти, но Мортиша, сидевшая на самом верху, случайно опрокинула банку с формальдегидом и вылила её содержимое на него. + Мужчина закричал и выбежал из комнаты, убеждённый, что на него напали призраки морга. Остальные исследователи последовали его примеру, оставив морг снова заброшенным. + Морти и Мортиша хихикали про себя, наблюдая за бегством людей. Они были счастливы, что спугнули незваных гостей и могут продолжать жить в своём любимом морге, никем не потревоженные. + +book-text-rufus = Давным-давно в одной причудливой стране жил неуловимый кролик по имени Руфус. Руфус был известен как плут и всегда устраивал пакости, где бы он ни находился. Однажды он неспешно катался на велосипеде и наткнулся на морковную грядку. + Руфус любил морковь больше всего на свете, поэтому он решил остановиться и взять несколько штук себе. Когда он ел вкусную морковку, он почувствовал, как лёгкий ветерок потрепал его шерсть. Вдруг он услышал позади себя голос: "Извините, но эта морковка принадлежит мне". + Руфус быстро обернулся и увидел маленькую фею, парящую в воздухе позади него. У неё был озорной блеск в глазах и игривая улыбка на лице. Руфус был ошеломлён, так как никогда раньше не видел фею. + Фея представилась Блоссом и объяснила, что она — защитница морковной грядки. Она наблюдала за Руфусом издалека и знала, что он озорной кролик. Однако в тот день она была настроена игриво и решила дать ему несколько морковок. + Руфус был в восторге и поблагодарил Блоссом за её щедрость. Затем она предложила ему прокатиться по лесу на её спине, и Руфус с радостью согласился. Когда они парили среди деревьев, ветерок дул Руфусу в лицо, а вид причудливого леса вокруг заставлял его чувствовать себя как во сне. + После прогулки Блоссом попрощалась с Руфусом и исчезла в лесу. Руфус сел обратно на велосипед, чувствуя благодарность за полученный опыт и вкусную морковь, которой он наслаждался. С этого дня он всегда спрашивал разрешения, прежде чем взять что-то, что ему не принадлежит, зная, что за ним может присматривать капризная фея. + +book-text-map = Как только в нос ударил пряный аромат кумина и паприки, Макс понял, что его ждёт приключение. Его всегда привлекала экзотика и неизвестность, и этот ресторан обещал именно это. + Макс что-то искал, хотя и не был уверен, что именно. Возможно, это было чувство цели, а может быть, просто отдых от однообразия повседневной рутины. Что бы это ни было, он чувствовал, что этот ужин станет первым шагом на пути, который уведёт его далеко от обычной жизни. + Сидя за столом и наблюдая, как мерцающие огни ресторана пляшут по стенам, Макс почувствовал, как в кармане зажужжал телефон. На мгновение он замешкался, раздумывая, стоит ли отвечать, но в конце концов решил, что приехал сюда, чтобы убежать от привычного, и проигнорировал звонок. + Покончив с едой, Макс оплатил счёт и вышел на улицу в прохладный ночной воздух. Идя по улице, он заметил лежащий на тротуаре таинственный чемодан и не смог устоять перед искушением исследовать его. + С чувством волнения и трепета Макс осторожно открыл чемодан, и тут же был поражён видом замысловатой карты, покрытой таинственными символами и пометками. Тогда он понял, что его приключение действительно началось. + Макс не мог поверить в свою удачу. Он всегда мечтал отправиться в настоящее приключение, и вот оно практически упало ему на колени. Он внимательно изучил карту, пытаясь расшифровать её секреты. + Изучая карту, он понял, что на ней изображены далёкие джунгли в Южной Америке. Он слышал истории о древних руинах и потерянных цивилизациях, спрятанных в густой листве. Говорили, что там находятся сокровища, о которых невозможно даже мечтать. + Макс знал, что должен отправиться в Южную Америку и сам исследовать эти джунгли. Он быстро заказал билет на самолёт и не успел оглянуться, как оказался в самолёте, летящем в неизвестность. + По мере того как он углублялся в джунгли, Макса охватывало чувство благоговения и удивления. Пышная зелень не была похожа ни на что, что он когда-либо видел раньше, а звуки экзотических животных эхом разносились среди деревьев. + Прошло совсем немного времени, и Макс наткнулся на руины, которые искал. Они были спрятаны глубоко в джунглях, и ему показалось, что он открыл давно забытый секрет. + Исследуя руины, Макс понял, что он не один. Там были и другие искатели приключений, все они искали те же сокровища, что и он. + Конкуренция была жестокой, но Макс был полон решимости выйти победителем. Он использовал свою смекалку и находчивость, чтобы перехитрить других искателей сокровищ, и наконец нашёл то, что искал: сверкающий сундук, наполненный драгоценными камнями и древними артефактами. + Макс не мог поверить в свою удачу. Он отправился в приключение всей своей жизни, и теперь у него было богатство, о котором он даже не мечтал. Но когда он сидел и смотрел на лежащие перед ним сокровища, он понял, что на самом деле он обрёл новое чувство цели и приключений. Он знал, что никогда больше не будет довольствоваться обыденной жизнью, и что в мире за его пределами его ждут ещё бесчисленные приключения. + +book-text-journ-mount = Лену всегда привлекала завораживающая красота гор. То, как вершины возвышаются на фоне неба, хрустящий воздух и чувство свободы, которое они внушали. Ей нравился вызов — смелость подниматься всё выше и выше, пока она не достигала вершины и не смотрела на мир внизу. + Но Лена была не только альпинисткой — она также была искусной гитаристкой. Каждый вечер, сидя у костра, играя на своём инструменте и распевая песни, которые эхом разносились по долинам, она чувствовала себя по-настоящему живой. + Однажды, когда Лена преодолевала особенно сложный участок горы, она услышала смех, который эхом разносился по воздуху. Она остановилась на мгновение, пытаясь определить источник звука, и вскоре заметила впереди группу альпинистов. Они были явно опытными, смеялись и шутили, с лёгкостью преодолевая сложный рельеф. + Почувствовав чувство товарищества, Лена подошла к группе и завязала разговор. Они были впечатлёны её смелостью и вскоре пригласили её присоединиться к ним в восхождении. Вместе они поднялись на гору, доводя себя до предела и подбадривая друг друга по пути. + Когда они достигли вершины, Лена достала гитару и начала играть. Музыка была завораживающей, и группа замолчала, захваченная красотой момента. Когда она закончила последние ноты песни, они разразились аплодисментами, их смех эхом отражался от склона горы. + В этот момент Лена поняла, что нашла своё истинное призвание. Она должна была стать музыкантом, альпинистом и источником вдохновения для всех окружающих. И когда она смотрела на мир с вершины горы, она знала, что всё возможно, если осмелиться мечтать. + +book-text-inspiration = Будучи писателем-фрилансером, Сара всегда находилась в поисках вдохновения. Она побывала во многих местах и встречалась со многими людьми, но сегодня она обнаружила себя бредущей по незнакомой тропинке в лесу. Яркие краски осенних листьев завораживали, и она ощущала сюрреалистическое чувство покоя по мере того, как углублялась в лес. + Вдруг она наткнулась на небольшую поляну и задохнулась от открывшегося перед ней вида. Безмятежный водопад каскадом стекал с горы, окружённый разноцветными полевыми цветами и бабочками. Сара не могла поверить в свою удачу, обнаружив эту скрытую жемчужину. + Не раздумывая ни секунды, Сара достала ручку и блокнот и начала писать. Она писала о красоте этой сцены, о спокойствии, которое она чувствовала, и о сюрреалистичности момента. Она хотела запечатлеть это чувство и поделиться им с другими через свои слова. + Когда она закончила писать, Сара услышала треск ветки и, подняв голову, увидела приближающегося к ней мужчину с фотоаппаратом. Он представился фотографом и спросил, видела ли она водопад. Они завязали разговор, и вскоре оба уже смеялись и делились историями о своих приключениях. + Когда солнце начало садиться, они собрали своё снаряжение и попрощались. Сара была благодарна за эту неожиданную встречу и за вдохновение, которое она ей принесла. Она знала, что этот момент останется с ней навсегда, и чувствовала спокойствие, зная, что в мире ещё так много красоты, которая ждёт своего часа. book-text-janitor = [bold][color=black][head=3]The Tales of a Tired Janitor[/head][/bold] - Cleaning a space station as a janitor is like being trapped in a cosmic custodial nightmare. You'd think floating through the vastness of space would be glamorous, but no, I'm stuck scrubbing space grime and extraterrestrial goop off the walls. It's a thankless job in a zero-gravity abyss. - First off, let's talk about the mess. Space dust, alien gunk, and who knows what else accumulates faster than a rocket launch. It's not just about sweeping up the crumbs; it's about battling interstellar filth that seems to have a life of its own. You'd hope for a sleek, futuristic space station, but you get a swirling vortex of space garbage waiting for you around every corner. - And the tools they give us! You'd expect state-of-the-art cleaning gadgets, but nope. They raided a dollar store on Earth before launching us into the cosmos. Mops that barely work in microgravity, spray bottles that run out in one use, and don't even get me started on the space janitor jumpsuit. I feel like a reject from a sci-fi B-movie. - Speaking of jumpsuits, the lack of respect is astronomical. The scientists and astronauts zoom past in their sleek suits, utterly oblivious to the fact that I'm the unsung hero keeping this place from turning into a cosmic trash heap. I bet they don't even know my name. "Hey, Space Janitor!" That's what I get. No appreciation for the elbow grease I put into keeping their precious station spick and span. - And let's remember the hazards. Cleaning up alien slime? Yeah, that's a regular Tuesday for me. One wrong move and I'm dealing with an intergalactic biohazard. It's like playing Russian roulette with space critters that could burst out of some hidden nook and cranny. I signed up to mop floors, not play host to extraterrestrial invaders. - Being a janitor on this so-called Space Station 14 is a cosmic joke. Where did the other 13 stations go? It's not all spacewalks and futuristic gadgets; it's scrubbing toilets and battling alien goo. If anyone thinks space is glamorous, they clearly haven't seen the mess we space janitors deal with every single day. It's time they appreciate the unsung heroes of the space station – the custodians of the cosmos. + Cleaning a space station as a janitor is like being trapped in a cosmic custodial nightmare. You'd think floating through the vastness of space would be glamorous, but no, I'm stuck scrubbing space grime and extraterrestrial goop off the walls. It's a thankless job in a zero-gravity abyss. + First off, let's talk about the mess. Space dust, alien gunk, and who knows what else accumulates faster than a rocket launch. It's not just about sweeping up the crumbs; it's about battling interstellar filth that seems to have a life of its own. You'd hope for a sleek, futuristic space station, but you get a swirling vortex of space garbage waiting for you around every corner. + And the tools they give us! You'd expect state-of-the-art cleaning gadgets, but nope. They raided a dollar store on Earth before launching us into the cosmos. Mops that barely work in microgravity, spray bottles that run out in one use, and don't even get me started on the space janitor jumpsuit. I feel like a reject from a sci-fi B-movie. + Speaking of jumpsuits, the lack of respect is astronomical. The scientists and astronauts zoom past in their sleek suits, utterly oblivious to the fact that I'm the unsung hero keeping this place from turning into a cosmic trash heap. I bet they don't even know my name. "Hey, Space Janitor!" That's what I get. No appreciation for the elbow grease I put into keeping their precious station spick and span. + And let's remember the hazards. Cleaning up alien slime? Yeah, that's a regular Tuesday for me. One wrong move and I'm dealing with an intergalactic biohazard. It's like playing Russian roulette with space critters that could burst out of some hidden nook and cranny. I signed up to mop floors, not play host to extraterrestrial invaders. + Being a janitor on this so-called Space Station 14 is a cosmic joke. Where did the other 13 stations go? It's not all spacewalks and futuristic gadgets; it's scrubbing toilets and battling alien goo. If anyone thinks space is glamorous, they clearly haven't seen the mess we space janitors deal with every single day. It's time they appreciate the unsung heroes of the space station – the custodians of the cosmos. diff --git a/Resources/Locale/ru-RU/paper/book-dnd.ftl b/Resources/Locale/ru-RU/paper/book-dnd.ftl index 3c70195bd25..86275aab2a6 100644 --- a/Resources/Locale/ru-RU/paper/book-dnd.ftl +++ b/Resources/Locale/ru-RU/paper/book-dnd.ftl @@ -1,5 +1,4 @@ -book-cnc-sheet = - Лист персонажа КиК 5 редакции +book-cnc-sheet = Лист персонажа КиК 5 редакции -------------------------------------------------------------------------------------- РАЗДЕЛ 1: ОСНОВЫ -------------------------------------------------------------------------------------- @@ -7,7 +6,7 @@ book-cnc-sheet = Вид / Класс : Уровень / Опыт : Предыстория : - + -------------------------------------------------------------------------------------- РАЗДЕЛ 2: ХАРАКТЕРИСТИКИ -------------------------------------------------------------------------------------- @@ -17,31 +16,31 @@ book-cnc-sheet = Интеллект = 10 (+0) 10 Базовые Мудрость = 10 (+0) 10 Базовые Харизма = 10 (+0) 10 Базовые - + Бонус мастерства = Восприятие (пассивная мудрость) = - + Видовые (Вид) - + Классовые (Класс) - - + + -------------------------------------------------------------------------------------- РАЗДЕЛ 3: СПАСБРОСКИ -------------------------------------------------------------------------------------- - + ( )Сила = +0 ( )Ловкость = +0 ( )Телосложение = +0 ( )Интеллект = +0 ( )Мудрость = +0 ( )Харизма = +0 - - + + -------------------------------------------------------------------------------------- РАЗДЕЛ 4: НАВЫКИ -------------------------------------------------------------------------------------- - + ( ) Атлетика (Сил) +0 ( ) Восприятие (Мдр) +0 ( ) Акробатика (Лвк) +0 ( ) Выживание (Мдр) +0 ( ) Ловкость рук (Лвк) +0 ( ) Медицина (Мдр) +0 @@ -51,78 +50,76 @@ book-cnc-sheet = ( ) Природа (Инт) +0 ( ) Запугивание (Хар) +0 ( ) Расследование (Инт) +0 ( ) Обман (Хар) +0 ( ) Религия (Инт) +0 ( ) Убеждение (Хар) +0 - - - - + + -------------------------------------------------------------------------------------- РАЗДЕЛ 5: БОЙ И ЗДОРОВЬЕ -------------------------------------------------------------------------------------- - - + + Класс Доспеха (КД) : Инициатива (пассивная) : Скорость : - + Кость хитов : Максимум хитов : Текущие хиты : Временные хиты : - + АТАКИ Тип оружия (Ближнее или дальнее) / Бонус / Урон (Тип) - + -------------------------------------------------------------------------------------- РАЗДЕЛ 6: ЛИЧНОСТЬ -------------------------------------------------------------------------------------- - + Возраст / Гендер : Рост / Вес : Глаза / Кожа / Волосы : Описание : - + Предыстория : Владение навыками : Владение инструментами : Языки : - + Особенности : Причуда по выбору : Черты характера : Идеалы : Привязанности : Слабости : - + -------------------------------------------------------------------------------------- РАЗДЕЛ 7: ЭКСТРА -------------------------------------------------------------------------------------- Список снаряжения Описание Стоимость Вес - - + + фунты - + Монеты Платиновые : Элериевые : Золотые : Серебряные : Медные : - + Самоцветы : Ювелирные украшения : Прочее : Волшебные предметы : - - + + -------------------------------------------------------------------------------------- РАЗДЕЛ 8: ЗАКЛИНАНИЯ -------------------------------------------------------------------------------------- - + Уровень заклинания : Сложность спасброска : Бонус атаки заклинанием : - Ячейки заклинаний: + Ячейки заклинаний : 1: (МАКС.) (ПОТРАЧЕНО) 2: (МАКС.) (ПОТРАЧЕНО) 3: (МАКС.) (ПОТРАЧЕНО) @@ -132,26 +129,26 @@ book-cnc-sheet = 7: (МАКС.) (ПОТРАЧЕНО) 8: (МАКС.) (ПОТРАЧЕНО) 9: (МАКС.) (ПОТРАЧЕНО) - + Заговоры Название Время накладывания Дистанция Длительность Компоненты - + 1: Название Время накладывания Дистанция Длительность Компоненты Ритуал? - + 2: Название Время накладывания Дистанция Длительность Компоненты Ритуал? - + 3: Название Время накладывания Дистанция Длительность Компоненты Ритуал? - + 4: Название Время накладывания Дистанция Длительность Компоненты Ритуал? - + 5: Название Время накладывания Дистанция Длительность Компоненты Ритуал? - + 6: Название Время накладывания Дистанция Длительность Компоненты Ритуал? - + 7: Название Время накладывания Дистанция Длительность Компоненты Ритуал? - + 8: Название Время накладывания Дистанция Длительность Компоненты Ритуал? - + 9: Название Время накладывания Дистанция Длительность Компоненты Ритуал? -------------------------------------------------------------------------------------- Карпы и крипты 5 ред. diff --git a/Resources/Locale/ru-RU/paper/book-escalation.ftl b/Resources/Locale/ru-RU/paper/book-escalation.ftl index 2b68b1da769..82af0c00d64 100644 --- a/Resources/Locale/ru-RU/paper/book-escalation.ftl +++ b/Resources/Locale/ru-RU/paper/book-escalation.ftl @@ -1,29 +1,27 @@ -book-text-escalation = - Когда дело доходит до того, чтобы быть робастнутым, всё дело в стратегии. Делай это правильно и тебе будет завидовать вся станция. Делай это неправильно и сами боги могут отвернуться от тебя. Лично я всегда стремлюсь к лучшему... - - Перво-наперво: позволь оскорблениям лететь. Это твой шанс по настоящему показать твоему противнику, что ты думаешь о его нелепо большой обуви и надоедливом клаксоне. - - Ни один конфликт не обходится без капли насилия. Хорошенько толкни своего противника раз или два, и если тебе повезёт, то он спотыкнётся и упадёт, давая значительно больше поводов для оскорблений. - - Но будь осторожен, потому что сейчас твой противник наверняка попытается убить тебя. Так что попробуй немного успокоится. Так ты будешь выглядеть лучше, во время неизбежного расследования убийства. - - - Если деэскалация не сработала, время брать оружие в руки. Но будь умным — выбирай что-то, что не будет выглядеть смертельным, например — эта книга. - И если вы оба всё ещё на ногах, время доставать большие пушки. Найди острейшую вещь какую сможете и покончите с этим, ведь все уже устали от этого. - - Теперь проведи своего побеждённого противника через коридоры к медбею, чтобы все знали какой ты робастер. - - Помни, всё дело в экономии энергии. Пусть твой противник сделает часть эскалации за тебя — это беспроигрышный вариант. - -book-text-escalation-security = - Сделай это правильно и вся станция будет называть тебя щиткьюрити. Сделай это неправильно и ты будешь наказан богами. Лично я всегда стремлюсь к лучшему... - - Они говорят что ручка могущественней меча, но у тебя нет меча, у тебя есть дубинка-шокер, и как только ты начнёшь писать, любой подозреваемый захочет убежать. - - Так что попробуй начать конфронтацию со слов. Это вероятно не сделает с тебя щиткьюрити, но так же будет не очень эффективно против кого-то со злым намерением. - - Твоим следующим шагом будет использование не летальных или более-менее летальных устройств, такие как дубинки-шокеры, станнеры, флешки и светошумовые. Просто убедись что ты прошёл обучение, прежде чем использовать их. Предлагать их подозреваемому взамен на его сотрудничество не лучшее использование этих инструментов. - - Если тебе повезло встретиться с подозреваемым который несёт смертельную угрозу, время доставать все лакомства, которые ты накопил в оружейной. - - Для дополнительного устрашения, отведи своих побитых подозреваемых в медбей для лечения, вместо брига. По пути весь экипаж сможет увидеть какой ты робастер. +book-text-escalation = Когда дело доходит до того, чтобы быть робастнутым, всё дело в стратегии. Делай это правильно и тебе будет завидовать вся станция. Делай это неправильно и сами боги могут отвернуться от тебя. Лично я всегда стремлюсь к лучшему... + + Перво-наперво: позволь оскорблениям лететь. Это твой шанс по настоящему показать твоему противнику, что ты думаешь о его нелепо большой обуви и надоедливом клаксоне. + + Ни один конфликт не обходится без капли насилия. Хорошенько толкни своего противника раз или два, и если тебе повезёт, то он спотыкнётся и упадёт, давая значительно больше поводов для оскорблений. + + Но будь осторожен, потому что сейчас твой противник наверняка попытается убить тебя. Так что попробуй немного успокоится. Так ты будешь выглядеть лучше, во время неизбежного расследования убийства. + + Если деэскалация не сработала, время брать оружие в руки. Но будь умным — выбирай что-то, что не будет выглядеть смертельным, например — эта книга. + + И если вы оба всё ещё на ногах, время доставать большие пушки. Найди острейшую вещь какую сможете и покончите с этим, ведь все уже устали от этого. + + Теперь проведи своего побеждённого противника через коридоры к медбею, чтобы все знали какой ты робастер. + + Помни, всё дело в экономии энергии. Пусть твой противник сделает часть эскалации за тебя — это беспроигрышный вариант. + +book-text-escalation-security = Сделай это правильно и вся станция будет называть тебя щиткьюрити. Сделай это неправильно и ты будешь наказан богами. Лично я всегда стремлюсь к лучшему... + + Они говорят что ручка могущественней меча, но у тебя нет меча, у тебя есть дубинка-шокер, и как только ты начнёшь писать, любой подозреваемый захочет убежать. + + Так что попробуй начать конфронтацию со слов. Это вероятно не сделает с тебя щиткьюрити, но так же будет не очень эффективно против кого-то со злым намерением. + + Твоим следующим шагом будет использование не летальных или более-менее летальных устройств, такие как дубинки-шокеры, станнеры, флешки и светошумовые. Просто убедись что ты прошёл обучение, прежде чем использовать их. Предлагать их подозреваемому взамен на его сотрудничество не лучшее использование этих инструментов. + + Если тебе повезло встретиться с подозреваемым который несёт смертельную угрозу, время доставать все лакомства, которые ты накопил в оружейной. + + Для дополнительного устрашения, отведи своих побитых подозреваемых в медбей для лечения, вместо брига. По пути весь экипаж сможет увидеть какой ты робастер. diff --git a/Resources/Locale/ru-RU/paper/book-gaming.ftl b/Resources/Locale/ru-RU/paper/book-gaming.ftl index 074f65588d2..55c06e86de3 100644 --- a/Resources/Locale/ru-RU/paper/book-gaming.ftl +++ b/Resources/Locale/ru-RU/paper/book-gaming.ftl @@ -1,35 +1,31 @@ -book-text-gaming1 = - Не могу остаться на игру. - Инженеры попросили меня приглядывать за СМЭСами сингулярности. - Оставляю это здесь, чтобы ты знал, что к чему. - Прости. - - Александр +book-text-gaming1 = Не могу остаться на игру. + Инженеры попросили меня приглядывать за СМЭСами сингулярности. + Оставляю это здесь, чтобы ты знал, что к чему. + Прости. + - Александр -book-text-gaming2 = - Джони Клув - Класс: Друид - Мировоззрение: Нейтральный Добрый - СИЛ: 1,294,139 - ЛОВ: 4,102,103 - ВЫН: 9,522,913 - ИНТ: 528,491 - МУД: 1 - ХАР: 1 - Где возраст? - Почему твои характеристики такие абсурдные? - Чего ты вообще добиваешься, Лия? — Твой дружелюбный ДМ +book-text-gaming2 = Джони Клув + Класс: Друид + Мировоззрение: Нейтральный Добрый + СИЛ: 1,294,139 + ЛОВ: 4,102,103 + ВЫН: 9,522,913 + ИНТ: 528,491 + МУД: 1 + ХАР: 1 + Где возраст? + Почему твои характеристики такие абсурдные? + Чего ты вообще добиваешься, Лия? — Твой дружелюбный ДМ -book-text-gaming3 = - ГИГАНТСКАЯ КОСМИЧЕСКАЯ МУХА ИЗ КОСМОСА - Сессия 1: Им нужно будет узнать, что происходит в мире и что вообще за Гигантская Космическая Муха. - Сессия 2: Им нужно будет узнать о сейсмических искажениях в Совете Волшебников. - Сессия 3: На пути в подземное логово. - Сессия 4: Встреча с Архитектором Мух. - О Господи Боже, они тупо начали убивать всех подряд. +book-text-gaming3 = ГИГАНТСКАЯ КОСМИЧЕСКАЯ МУХА ИЗ КОСМОСА + Сессия 1: Им нужно будет узнать, что происходит в мире и что вообще за Гигантская Космическая Муха. + Сессия 2: Им нужно будет узнать о сейсмических искажениях в Совете Волшебников. + Сессия 3: На пути в подземное логово. + Сессия 4: Встреча с Архитектором Мух. + О Господи Боже, они тупо начали убивать всех подряд. -book-text-gaming4 = - Не смогу прийти на встречу, химик снова подорвал медотсек. - Пятый раз за эту смену. - Это невероятно. - Но не в хорошем смысле. - Здоровья погибшим, — Ариэль +book-text-gaming4 = Не смогу прийти на встречу, химик снова подорвал медотсек. + Пятый раз за эту смену. + Это невероятно. + Но не в хорошем смысле. + Здоровья погибшим, — Ариэль diff --git a/Resources/Locale/ru-RU/paper/book-salvage.ftl b/Resources/Locale/ru-RU/paper/book-salvage.ftl index 79ce7127396..a4025717a30 100644 --- a/Resources/Locale/ru-RU/paper/book-salvage.ftl +++ b/Resources/Locale/ru-RU/paper/book-salvage.ftl @@ -1,97 +1,90 @@ -book-text-demonomicon1 = - Как Вызвать Демона - - автор Дж.Дж. Визджеральд - - 1. закончить написание руководства по вызову демона - -book-text-demonomicon2 = - Как Вызвать Димона - - автор Дж.Дж. Визджеральд - - 1. закончить написание руководства по вызову димона - 2. СТоп. Опечатка. Чёрт. Простите чуваки - -book-text-demonomicon3 = - Найденные Мною Крутые Имена Демонов - - автор мисс Моссрок - - Абраксас - Нефилим - Баал - Левиафан - Гэри - Молох - Сцилла - Фенекс - -book-text-chemistry-insane = - РУКОВОДСТВО ПО ХИМИИ ИГОРЯ ХИМИКА - - НАЗВАНИЕ: РУКОВОДСТВО ПО ХИМИИ - - АННОТАЦИЯ: РУКОВОДСТВО ПО ХИМИИ - - РАЗДЕЛ: МУДРЫЕ СЛОВА ИГОРЯ ХИМИКА - - МОЙ СОВЕТ НОМЕР ОДИН. ВСЕГДА ВЕСЕЛИСЬ. НИКОГДА НЕ ЗНАЕШЬ, КОГДА ВСЁ ЗАКОНЧИТСЯ. - ТАК ЧТО ПРОСТО ПРОДОЛЖАЙ!!! - - МОЙ СОВЕТ НОМЕР ДВА. Я ПРОСТО НЕ МОГУ БЛЯТЬ ПЕРЕСТАТЬ ПЕРЕМАЛЫВАТЬ КОМБИНЕЗОНЫ В ИЗМЕЛЬЧИТЕЛЕ. МОИ Т.Н. "КОЛЛЕГИ" (агенты) ПОСТОЯННО КРИЧАТ НА МЕНЯ - ЧТОБЫ Я ПЕРЕСТАЛ И ЧТО "их стоимость вычтут из нашей зарплаты", НО ОНИ ТАК ХОРОШИ. Я ПРЯМО ГЕНИЙ ДИЗАЙНА ИНТЕРЬЕРА. - САКСОФОНЫ И БАТАРЕИ ОТВЛЕКАЮТ МЕНЯ, НО Я ВСЕГДА ВОЗВРАЩАЮСЬ К КОМБИНЕЗОНАМ. ИИИ-ХАА. - - МОЙ СОВЕТ НОМЕР ТРИ. СПАСИБО, ЧТО ПРОЧИТАЛИ!!! ИГОРЬ ХИМИК - - ВЫВОДЫ: ИГОРЬ ХИМИК +book-text-demonomicon1 = Как Вызвать Демона + - автор Дж.Дж. Визджеральд + + 1. закончить написание руководства по вызову демона + +book-text-demonomicon2 = Как Вызвать Димона + - автор Дж.Дж. Визджеральд + + 1. закончить написание руководства по вызову димона + 2. СТоп. Опечатка. Чёрт. Простите чуваки + +book-text-demonomicon3 = Найденные Мною Крутые Имена Демонов + - автор мисс Моссрок + + Абраксас + Нефилим + Баал + Левиафан + Гэри + Молох + Сцилла + Фенекс + +book-text-chemistry-insane = РУКОВОДСТВО ПО ХИМИИ ИГОРЯ ХИМИКА + + НАЗВАНИЕ: РУКОВОДСТВО ПО ХИМИИ + + АННОТАЦИЯ: РУКОВОДСТВО ПО ХИМИИ + + РАЗДЕЛ: МУДРЫЕ СЛОВА ИГОРЯ ХИМИКА + + МОЙ СОВЕТ НОМЕР ОДИН. ВСЕГДА ВЕСЕЛИСЬ. НИКОГДА НЕ ЗНАЕШЬ, КОГДА ВСЁ ЗАКОНЧИТСЯ. + ТАК ЧТО ПРОСТО ПРОДОЛЖАЙ!!! + + МОЙ СОВЕТ НОМЕР ДВА. Я ПРОСТО НЕ МОГУ БЛЯТЬ ПЕРЕСТАТЬ ПЕРЕМАЛЫВАТЬ КОМБИНЕЗОНЫ В ИЗМЕЛЬЧИТЕЛЕ. МОИ Т.Н. "КОЛЛЕГИ" (агенты) ПОСТОЯННО КРИЧАТ НА МЕНЯ + ЧТОБЫ Я ПЕРЕСТАЛ И ЧТО "их стоимость вычтут из нашей зарплаты", НО ОНИ ТАК ХОРОШИ. Я ПРЯМО ГЕНИЙ ДИЗАЙНА ИНТЕРЬЕРА. + САКСОФОНЫ И БАТАРЕИ ОТВЛЕКАЮТ МЕНЯ, НО Я ВСЕГДА ВОЗВРАЩАЮСЬ К КОМБИНЕЗОНАМ. ИИИ-ХАА. + + МОЙ СОВЕТ НОМЕР ТРИ. СПАСИБО, ЧТО ПРОЧИТАЛИ!!! ИГОРЬ ХИМИК + + ВЫВОДЫ: ИГОРЬ ХИМИК book-text-botanics = ** Практическое применение образцов флоры, встречаемых на территориях Nanotrasen ** - - Многие растения, будучи измельчёнными, образуют полезные химические вещества. К. (тут и далее — космический) мак и к. алоэ вера - известны благодаря своим целебным свойствам. - - К. трутовик, он же линчжи, известен потенциальной возможностью спасать находящихся при смерти от токсинов. - Однако чрезмерное его употребление может привести к неблагоприятным последствиям. - - К. мухомор, чрезвычайно ядовитый гриб (Покойтесь с миром, сэр Алакастер), и к. галакточертополох, - казалось бы, обычный антитоксин, оказывается, имеют какое-то отношение друг к другу. - - В настоящее время проводятся специальные исследования сочетаний обсуждаемых лекарственных растений, которые могут оказаться плодотворными. - - ---- - - - авторы Джеймс Алакастер и Голзук Амарант - -book-text-gnome = - Да Здравствует Гномий Король - - Он есть Великий Картограф, что поместил наш народ в мир Острова! - - Тот, кто любит обладателей самых пышных шляп! - - Сражённый злопыхателями, не способными признать наш род! - - Наша месть свершится сполна! Он восстанет вновь! Хии хуу! - -book-text-fishing = - Когда я вырасту, я хочу стать одним из собирателей космического моря! - - Я надеюсь, что до конца своих дней успею поймать легендарную космическую рыбу! - - Я как маленькая крыска, плывущая по сырному морю! Ублюдки явятся чтобы прикончить меня, но я хитёр как кот, и также удачлив! - - Зажмите и , чтобы активировать мини-игру "Рыбалка". - - - Сержант Джон Бейкер Аклополи - -book-text-detective = - ГЛАВА 1: МАЛЕНЬКИЙ ПЕРЕПОЛОХ НА БОЛЬШОЙ СТАНЦИИ - - Эта станция тонула в преступности и грязи... - - Я был на Багеле, играл в мяч, когда услышал вскрик и лазерный выстрел. Я зашёл под стоящий рядом стол, намереваясь спрятаться, но второго выстрела не прозвучало. - - Снаружу, двое синдов, которым удалось пронести опасную контрабанду, напали на главу инженерии. Того, что от него осталось, не хватило бы на похороны в открытом гробу. - - Здесь всегда всё идёт наперекосяк... Я никогда больше не буду относиться к клоунам как раньше. - - Вопрос в том... Кто это сделал на самом деле? + + Многие растения, будучи измельчёнными, образуют полезные химические вещества. К. (тут и далее — космический) мак и к. алоэ вера + известны благодаря своим целебным свойствам. + + К. трутовик, он же линчжи, известен потенциальной возможностью спасать находящихся при смерти от токсинов. + Однако чрезмерное его употребление может привести к неблагоприятным последствиям. + + К. мухомор, чрезвычайно ядовитый гриб (Покойтесь с миром, сэр Алакастер), и к. галакточертополох, + казалось бы, обычный антитоксин, оказывается, имеют какое-то отношение друг к другу. + + В настоящее время проводятся специальные исследования сочетаний обсуждаемых лекарственных растений, которые могут оказаться плодотворными. + + ---- + + - авторы Джеймс Алакастер и Голзук Амарант + +book-text-gnome = Да Здравствует Гномий Король + + Он есть Великий Картограф, что поместил наш народ в мир Острова! + + Тот, кто любит обладателей самых пышных шляп! + + Сражённый злопыхателями, не способными признать наш род! + + Наша месть свершится сполна! Он восстанет вновь! Хии хуу! + +book-text-fishing = Когда я вырасту, я хочу стать одним из собирателей космического моря! + + Я надеюсь, что до конца своих дней успею поймать легендарную космическую рыбу! + + Я как маленькая крыска, плывущая по сырному морю! Ублюдки явятся чтобы прикончить меня, но я хитёр как кот, и также удачлив! + + Зажмите и , чтобы активировать мини-игру "Рыбалка". + + - Сержант Джон Бейкер Аклополи + +book-text-detective = ГЛАВА 1: МАЛЕНЬКИЙ ПЕРЕПОЛОХ НА БОЛЬШОЙ СТАНЦИИ + + Эта станция тонула в преступности и грязи... + + Я был на Багеле, играл в мяч, когда услышал вскрик и лазерный выстрел. Я зашёл под стоящий рядом стол, намереваясь спрятаться, но второго выстрела не прозвучало. + + Снаружу, двое синдов, которым удалось пронести опасную контрабанду, напали на главу инженерии. Того, что от него осталось, не хватило бы на похороны в открытом гробу. + + Здесь всегда всё идёт наперекосяк... Я никогда больше не буду относиться к клоунам как раньше. + + Вопрос в том... Кто это сделал на самом деле? diff --git a/Resources/Locale/ru-RU/paper/envelope.ftl b/Resources/Locale/ru-RU/paper/envelope.ftl index 3b04906e261..b13258cb6b6 100644 --- a/Resources/Locale/ru-RU/paper/envelope.ftl +++ b/Resources/Locale/ru-RU/paper/envelope.ftl @@ -6,7 +6,6 @@ envelope-letter-slot = Письмо envelope-sealed-examine = [color=gray]{ CAPITALIZE($envelope) } запечатан[/color] envelope-torn-examine = [color=yellow]{ CAPITALIZE($envelope) } порван и непригоден для использования![/color] -envelope-default-message = - ОТ: - - КОМУ: +envelope-default-message = ОТ: + + КОМУ: \ No newline at end of file diff --git a/Resources/Locale/ru-RU/paper/paper-misc.ftl b/Resources/Locale/ru-RU/paper/paper-misc.ftl index c305f16981a..d51e70f39b7 100644 --- a/Resources/Locale/ru-RU/paper/paper-misc.ftl +++ b/Resources/Locale/ru-RU/paper/paper-misc.ftl @@ -1,76 +1,72 @@ -book-text-plasma-trap = - Ихихихихи, ТЕПЕРЬ они ни за что на свете не доберутся до нашего тайника, ясно? - В комнате, где лежат наши вещи, я установил температуру в тысячу К. - Вы знаете что делать, когда вещи нам понадобятся. - - Джей. +book-text-plasma-trap = Ихихихихи, ТЕПЕРЬ они ни за что на свете не доберутся до нашего тайника, ясно? + В комнате, где лежат наши вещи, я установил температуру в тысячу К. + Вы знаете что делать, когда вещи нам понадобятся. + - Джей. -book-text-holoparasite-info = - Спасибо, что выбрали наш набор голопаразита! - Мы в компании Cybersun гордимся нашими передовыми военными и промышленными технологиями и очень ценим ваш вклад в наше развитие! - Стражи — это разумные и услужливые существа, которые вселяются в ваше тело, и абсолютно невосприимчивы к таким распространённым опасностям, как давление, температура и даже пули! - Вы приобрели набор голопаразита, который содержит активатор голопаразита в виде инъектора, брошюру с инструкцией, и нашу фирменную бейсболку! - Инструкция по применению: - 1. Активируйте инъектор голопаразита (желательно в укромном месте). - 2. Дождитесь покалывания и/или болезненных метафизических ощущений. - 3. Проверьте своего голопаразита на способность к общению и сотрудничеству, а также на способность понимать ваши приказы. - 4. Используйте свою способность призыва/отзыва, чтобы призвать или отозвать голопаразита обратно в ваше тело. - 5. Не позволяйте голопаразиту удаляться от вас на большое расстояние, иначе он будет принудительно отозван! - ВНИМАНИЕ: Стражи — существа метафизические, но для своего существования они черпают вашу ЖИЗНЕННУЮ ЭНЕРГИЮ. Прямой урон, наносимый хранителям, будет частично переноситься на вас! - Cybersun Inc. не несёт ответственности за тотальную аннигиляцию вызванную неправильным использованием технологии Голопаразита. +book-text-holoparasite-info = Спасибо, что выбрали наш набор голопаразита! + Мы в компании Cybersun гордимся нашими передовыми военными и промышленными технологиями и очень ценим ваш вклад в наше развитие! + Стражи — это разумные и услужливые существа, которые вселяются в ваше тело, и абсолютно невосприимчивы к таким распространённым опасностям, как давление, температура и даже пули! + Вы приобрели набор голопаразита, который содержит активатор голопаразита в виде инъектора, брошюру с инструкцией, и нашу фирменную бейсболку! + Инструкция по применению: + 1. Активируйте инъектор голопаразита (желательно в укромном месте). + 2. Дождитесь покалывания и/или болезненных метафизических ощущений. + 3. Проверьте своего голопаразита на способность к общению и сотрудничеству, а также на способность понимать ваши приказы. + 4. Используйте свою способность призыва/отзыва, чтобы призвать или отозвать голопаразита обратно в ваше тело. + 5. Не позволяйте голопаразиту удаляться от вас на большое расстояние, иначе он будет принудительно отозван! + ВНИМАНИЕ: Стражи — существа метафизические, но для своего существования они черпают вашу ЖИЗНЕННУЮ ЭНЕРГИЮ. Прямой урон, наносимый хранителям, будет частично переноситься на вас! + Cybersun Inc. не несёт ответственности за тотальную аннигиляцию вызванную неправильным использованием технологии Голопаразита. -book-text-ame-scribbles = - Я не знаю, прошли ли вы уже обучение, поэтому надеюсь, что это поможет. - Контроллеру ДАМ требуется высоковольтный кабель для передачи сгенерированной энергии. Если вы не уверены в наличии кабеля — сковырните пол ломом. - Рядом с местом, где вы нашли мою записку, должна быть пустая комната. Эта комната предназначена для ДАМ. ДАМ, а не дам. - Но вообще ДАМ можно разместить где угодно, были бы кабеля. - Расположите детали ДАМ сеткой 3x3, распакуйте их с применением мультитула. И постарайтесь не "запереть" никого внутри. - Контроллер должен соприкасаться ДАМ по горизонтали или вертикали (но не по диагонали). - Имея 1 ядро (которое и формируется вышеупомянутой сеткой 3x3), не устанавливайте впрыск выше 2. - Золотое правило — 2 впрыска на 1 ядро. В целях экономии топлива можно поставить меньше. - Поставите больше — и это приведёт к перегреву ДАМ, что в конечном итоге вызовет взрыв. Давайте без этого. - Не забывайте заправлять ДАМ, так как топливо имеет тенденцию заканчиваться в самый неподходящий момент. +book-text-ame-scribbles = Я не знаю, прошли ли вы уже обучение, поэтому надеюсь, что это поможет. + Контроллеру ДАМ требуется высоковольтный кабель для передачи сгенерированной энергии. Если вы не уверены в наличии кабеля — сковырните пол ломом. + Рядом с местом, где вы нашли мою записку, должна быть пустая комната. Эта комната предназначена для ДАМ. ДАМ, а не дам. + Но вообще ДАМ можно разместить где угодно, были бы кабеля. + Расположите детали ДАМ сеткой 3x3, распакуйте их с применением мультитула. И постарайтесь не "запереть" никого внутри. + Контроллер должен соприкасаться ДАМ по горизонтали или вертикали (но не по диагонали). + Имея 1 ядро (которое и формируется вышеупомянутой сеткой 3x3), не устанавливайте впрыск выше 2. + Золотое правило — 2 впрыска на 1 ядро. В целях экономии топлива можно поставить меньше. + Поставите больше — и это приведёт к перегреву ДАМ, что в конечном итоге вызовет взрыв. Давайте без этого. + Не забывайте заправлять ДАМ, так как топливо имеет тенденцию заканчиваться в самый неподходящий момент. -book-text-agrichemkit-manual = - Спасибо, что выбрали безопасный для любого возраста набор химика от Nanotrasen "АгроХимия это весело" — лучшую обучающую игру 2468 года! Приготовьтесь узнать всё о крупнейших инновациях сельского хозяйства с поры, как люди закапывали рыбу вместе с семенами кукурузы. - Содержание: - 5 удобно промаркированных бутылочек по 30 ед., содержащих азот, фосфор, водород, калий и этанол - 2 пробирки Безопасно-Весело(TM), содержащих по 5 ед. хлора и радия - 1 пустая бутылочка объёмом 30 ед., готовая к проведению экспериментов. - - Первый эксперимент: EZ-нутриенты - Чтобы создать EZ-нутриенты, насыщенное питательными веществами удобрение, необходимое для здоровых растений, смешайте равные доли азота, фосфора и калия. Чтобы сделать полную бутылочку, добавьте каждого по 10 единиц. - - Маленькая бутылочка EZ-нутриентов заменяет большую кучу фруктов и овощей, которые пришлось бы закомпостировать, чтобы ваши растения росли сильными. А урожай, который вы закомпостировали — это урожай, на котором вы не заработали, так что продолжайте использовать EZ-нутриенты. - Второй эксперимент: Аммиак и диэтиламин - Смешайте 3 доли водорода с 1 долей азота, чтобы получить аммиак. Это полезное и питательное средство для ваших культур, находящихся не в лучшем состоянии. - Но если вы хотите произвести впечатление на судей местной окружной ярмарке, организованной компанией Nanotrasen, вам нужно добавить к аммиаку такое же количество этанола. - - В результате смешивания получится диэтиламин — чудо-удобрение, способное заставить растения расти быстрее и жить дольше! Благодаря диэтиламину любимые вами растения будут жить дольше. - Третий эксперимент: Нестабильный мутаген - Когда вы будете готовы показать всем, что вы лучший ботаник на станции, вам нужно будет смешать немного нестабильного мутагена и надеяться на лучшее. Несмотря на пугающее название, нестабильный мутаген совершенно безопасен, если использовать его на растениях, но сами привлекательно-зелёный химикат не пейте. - - Смешайте равные доли радия, фосфора и хлора, чтобы получить ярко-зелёную партию нестабильного мутагена — безопасного и весёлого способа извлечь максимум пользы из своей фермы. 15 ед., которые вы получите с помощью этого набора, могут стать вашим знакомством с агрохимией! - Нестабильный мутаген может оказывать самые разные эффекты на растения, включая резкое изменение всех параметров роста, получение продуктов, насыщенных полезными лекарственными веществами, растений, светящихся в темноте, или создание совершенно новых видов. - - Каждое отдельное растение по-разному реагирует на нестабильный мутаген, поэтому вы можете использовать небольшие дозы на нескольких культурах и попытаться скрестить лучшие черты с каждой из них. Применение нескольких доз на одном растении может вызвать множество изменений и затруднить выделение желаемых признаков. - Нестабильный мутаген абсолютно безопасен при использовании в качестве удобрения, и Nanotrasen не несёт ответственности за погибшие посевы, чрезмерные счета за воду, новые разумные растения, задающие экзистенциальные вопросы, а также обвитые флорой руки фермеров, что может случайно произойти при его использовании. - Не пейте нестабильный мутаген. Тщательно мойте руки после работы с ним. Промойте глаза, если вы смотрели на нестабильный мутаген более 30 минут в течение 24 часов. Храните в тёмном помещении при температуре 293-295K. Не используйте в дни корпоративных праздников. Если вы начнёте слышать голоса, уговаривающие вас выпить нестабильный мутаген, обратитесь к врачу, главе персонала или экзорцисту. +book-text-agrichemkit-manual = Спасибо, что выбрали безопасный для любого возраста набор химика от Nanotrasen "АгроХимия это весело" — лучшую обучающую игру 2468 года! Приготовьтесь узнать всё о крупнейших инновациях сельского хозяйства с поры, как люди закапывали рыбу вместе с семенами кукурузы. -book-text-combat-bakery-kit = - Спасибо, что выбрали наш набор боевой выпечки! - В набор входят два (2) запатентованных CyberSun метательных круассана и один (1) патентованный меч-багет. - Входящая в комплект плата позволит собрать микроволновку печь от Donk Co, способную выпекать ещё больше оружия. - Как и в случае с выпеченым оружием, не забудьте съесть эту записку после прочтения. Удачи, агент. - - Рецепт меча-багета: - Тесто x 1 - Соль 5 ед. - Перец 5 ед. - Металлический стержень x 1 - Время приготовления: 15 секунд - - Рецепт метательного круассана: - Сырой круассан x 1 - Ломтик масла x 1 - Осколок стекла x 1 - Время приготовления: 5 секунд + Содержание: + 5 удобно промаркированных бутылочек по 30 ед., содержащих азот, фосфор, водород, калий и этанол + 2 пробирки Безопасно-Весело(TM), содержащих по 5 ед. хлора и радия + 1 пустая бутылочка объёмом 30 ед., готовая к проведению экспериментов. + + Первый эксперимент: EZ-нутриенты + Чтобы создать EZ-нутриенты, насыщенное питательными веществами удобрение, необходимое для здоровых растений, смешайте равные доли азота, фосфора и калия. Чтобы сделать полную бутылочку, добавьте каждого по 10 единиц. + Маленькая бутылочка EZ-нутриентов заменяет большую кучу фруктов и овощей, которые пришлось бы закомпостировать, чтобы ваши растения росли сильными. А урожай, который вы закомпостировали — это урожай, на котором вы не заработали, так что продолжайте использовать EZ-нутриенты. + + Второй эксперимент: Аммиак и диэтиламин + Смешайте 3 доли водорода с 1 долей азота, чтобы получить аммиак. Это полезное и питательное средство для ваших культур, находящихся не в лучшем состоянии. + Но если вы хотите произвести впечатление на судей местной окружной ярмарке, организованной компанией Nanotrasen, вам нужно добавить к аммиаку такое же количество этанола. + В результате смешивания получится диэтиламин — чудо-удобрение, способное заставить растения расти быстрее и жить дольше! Благодаря диэтиламину любимые вами растения будут жить дольше. + + Третий эксперимент: Нестабильный мутаген + Когда вы будете готовы показать всем, что вы лучший ботаник на станции, вам нужно будет смешать немного нестабильного мутагена и надеяться на лучшее. Несмотря на пугающее название, нестабильный мутаген совершенно безопасен, если использовать его на растениях, но сами привлекательно-зелёный химикат не пейте. + + Смешайте равные доли радия, фосфора и хлора, чтобы получить ярко-зелёную партию нестабильного мутагена — безопасного и весёлого способа извлечь максимум пользы из своей фермы. 15 ед., которые вы получите с помощью этого набора, могут стать вашим знакомством с агрохимией! + Нестабильный мутаген может оказывать самые разные эффекты на растения, включая резкое изменение всех параметров роста, получение продуктов, насыщенных полезными лекарственными веществами, растений, светящихся в темноте, или создание совершенно новых видов. + + Каждое отдельное растение по-разному реагирует на нестабильный мутаген, поэтому вы можете использовать небольшие дозы на нескольких культурах и попытаться скрестить лучшие черты с каждой из них. Применение нескольких доз на одном растении может вызвать множество изменений и затруднить выделение желаемых признаков. + Нестабильный мутаген абсолютно безопасен при использовании в качестве удобрения, и Nanotrasen не несёт ответственности за погибшие посевы, чрезмерные счета за воду, новые разумные растения, задающие экзистенциальные вопросы, а также обвитые флорой руки фермеров, что может случайно произойти при его использовании. + Не пейте нестабильный мутаген. Тщательно мойте руки после работы с ним. Промойте глаза, если вы смотрели на нестабильный мутаген более 30 минут в течение 24 часов. Храните в тёмном помещении при температуре 293-295K. Не используйте в дни корпоративных праздников. Если вы начнёте слышать голоса, уговаривающие вас выпить нестабильный мутаген, обратитесь к врачу, главе персонала или экзорцисту. + +book-text-combat-bakery-kit = Спасибо, что выбрали наш набор боевой выпечки! + В набор входят два (2) запатентованных CyberSun метательных круассана и один (1) патентованный меч-багет. + Входящая в комплект плата позволит собрать микроволновку печь от Donk Co, способную выпекать ещё больше оружия. + Как и в случае с выпеченым оружием, не забудьте съесть эту записку после прочтения. Удачи, агент. + + Рецепт меча-багета: + Тесто x 1 + Соль 5 ед. + Перец 5 ед. + Металлический стержень x 1 + Время приготовления: 15 секунд + + Рецепт метательного круассана: + Сырой круассан x 1 + Ломтик масла x 1 + Осколок стекла x 1 + Время приготовления: 5 секунд diff --git a/Resources/Locale/ru-RU/paper/story-generation.ftl b/Resources/Locale/ru-RU/paper/story-generation.ftl index a8cfc3f7934..20c20fd512d 100644 --- a/Resources/Locale/ru-RU/paper/story-generation.ftl +++ b/Resources/Locale/ru-RU/paper/story-generation.ftl @@ -7,9 +7,9 @@ story-gen-book-type6 = том story-gen-book-type7 = томик story-gen-book-type8 = журнал story-gen-book-type9 = архив -story-gen-book-type10 = кодекс -story-gen-book-type11 = текст -story-gen-book-type12 = компендиум +story-gen-book-type10= кодекс +story-gen-book-type11= текст +story-gen-book-type12= компендиум story-gen-book-genre1 = детектив story-gen-book-genre2 = комедия @@ -20,11 +20,11 @@ story-gen-book-genre6 = хроника story-gen-book-genre7 = научная фантастика story-gen-book-genre8 = фэнтези story-gen-book-genre9 = любовный роман -story-gen-book-genre10 = триллер -story-gen-book-genre11 = исторический роман -story-gen-book-genre12 = биография -story-gen-book-genre13 = приключенческая история -story-gen-book-genre14 = драма +story-gen-book-genre10= триллер +story-gen-book-genre11= исторический роман +story-gen-book-genre12= биография +story-gen-book-genre13= приключенческая история +story-gen-book-genre14= драма story-gen-book-appearance1 = древний story-gen-book-appearance2 = потёртый @@ -35,24 +35,24 @@ story-gen-book-appearance6 = мерзкий story-gen-book-appearance7 = пыльный story-gen-book-appearance8 = страшный story-gen-book-appearance9 = кровавый -story-gen-book-appearance10 = яркий -story-gen-book-appearance11 = сомнительный -story-gen-book-appearance12 = интригующий -story-gen-book-appearance13 = безобразный -story-gen-book-appearance14 = кривой -story-gen-book-appearance15 = мятый -story-gen-book-appearance16 = грязный -story-gen-book-appearance17 = элегантный -story-gen-book-appearance18 = вычурный -story-gen-book-appearance19 = обветренный -story-gen-book-appearance20 = хрустящий -story-gen-book-appearance21 = роскошный -story-gen-book-appearance22 = оборванный -story-gen-book-appearance23 = полированный -story-gen-book-appearance24 = тиснёный -story-gen-book-appearance25 = неправильный -story-gen-book-appearance26 = позолоченный -story-gen-book-appearance27 = странный +story-gen-book-appearance10= яркий +story-gen-book-appearance11= сомнительный +story-gen-book-appearance12= интригующий +story-gen-book-appearance13= безобразный +story-gen-book-appearance14= кривой +story-gen-book-appearance15= мятый +story-gen-book-appearance16= грязный +story-gen-book-appearance17= элегантный +story-gen-book-appearance18= вычурный +story-gen-book-appearance19= обветренный +story-gen-book-appearance20= хрустящий +story-gen-book-appearance21= роскошный +story-gen-book-appearance22= оборванный +story-gen-book-appearance23= полированный +story-gen-book-appearance24= тиснёный +story-gen-book-appearance25= неправильный +story-gen-book-appearance26= позолоченный +story-gen-book-appearance27= странный story-gen-book-character1 = клоун story-gen-book-character2 = мим diff --git a/Resources/Locale/ru-RU/parcel-wrap.ftl b/Resources/Locale/ru-RU/parcel-wrap.ftl index 6ddf3e8474c..57a9a8ff47f 100644 --- a/Resources/Locale/ru-RU/parcel-wrap.ftl +++ b/Resources/Locale/ru-RU/parcel-wrap.ftl @@ -6,9 +6,8 @@ parcel-wrap-popup-being-wrapped = { CAPITALIZE(THE($user)) } пытается з parcel-wrap-popup-being-wrapped-self = Вы начинаете завёртывать себя в обёртку. # Shown when parcel wrap is examined in details range -parcel-wrap-examine-detail-uses = - Осталось [color={ $markupUsesColor }]{ $uses }[/color] { $uses -> - [one] использование - [few] использования - *[other] использований - }. +parcel-wrap-examine-detail-uses = Осталось [color={ $markupUsesColor }]{ $uses }[/color] { $uses -> + [one] использование + [few] использования + *[other] использований +}. diff --git a/Resources/Locale/ru-RU/particle-accelerator/components/particle-accelerator-control-box-component.ftl b/Resources/Locale/ru-RU/particle-accelerator/components/particle-accelerator-control-box-component.ftl index 9c8f38d8a02..50ef3f7f3b6 100644 --- a/Resources/Locale/ru-RU/particle-accelerator/components/particle-accelerator-control-box-component.ftl +++ b/Resources/Locale/ru-RU/particle-accelerator/components/particle-accelerator-control-box-component.ftl @@ -1 +1 @@ -particle-accelerator-control-box-component-wires-update-limiter-on-pulse = Блок управления издаёт жужжащий звук. +particle-accelerator-control-box-component-wires-update-limiter-on-pulse = Блок управления издаёт жужжащий звук. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/plants/component/potted-plant-hide-component.ftl b/Resources/Locale/ru-RU/plants/component/potted-plant-hide-component.ftl index 96bd65b11f2..088efe4faab 100644 --- a/Resources/Locale/ru-RU/plants/component/potted-plant-hide-component.ftl +++ b/Resources/Locale/ru-RU/plants/component/potted-plant-hide-component.ftl @@ -1 +1 @@ -potted-plant-hide-component-interact-hand-got-no-item-message = Вы роетесь среди корней. +potted-plant-hide-component-interact-hand-got-no-item-message = Вы роетесь среди корней. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/plants/mutations.ftl b/Resources/Locale/ru-RU/plants/mutations.ftl index 531698cf030..b4e9667421b 100644 --- a/Resources/Locale/ru-RU/plants/mutations.ftl +++ b/Resources/Locale/ru-RU/plants/mutations.ftl @@ -4,4 +4,4 @@ mutation-plant-ligneous = Его стебель одеревенел, для с mutation-plant-scream = Это растение кажется каким-то нервным. mutation-plant-sentient = Кажется, оно изучает окрестности. mutation-plant-slippery = Оно гладкое на ощупь. -mutation-plant-unviable = Оно увядает и выглядит болезненно. +mutation-plant-unviable = Оно увядает и выглядит болезненно. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/players/play-time/play-time-commands.ftl b/Resources/Locale/ru-RU/players/play-time/play-time-commands.ftl index 10ef1201482..4ff9689d601 100644 --- a/Resources/Locale/ru-RU/players/play-time/play-time-commands.ftl +++ b/Resources/Locale/ru-RU/players/play-time/play-time-commands.ftl @@ -48,8 +48,7 @@ cmd-playtime_save-error-args = Ожидается ровно один аргум ## 'playtime_flush' command' cmd-playtime_flush-desc = Записывает активные трекеры в хранение отслеживании игрового времени. -cmd-playtime_flush-help = - Использование: { $command } [user name] +cmd-playtime_flush-help = Использование: { $command } [user name] Это вызывает запись только во внутреннее хранилище, при это не записывая немедленно в БД. Если пользователь передан, то только этот пользователь будет обработан. diff --git a/Resources/Locale/ru-RU/pneumatic-cannon/pneumatic-cannon-component.ftl b/Resources/Locale/ru-RU/pneumatic-cannon/pneumatic-cannon-component.ftl index 9ca5522c4cf..3869cf91ed4 100644 --- a/Resources/Locale/ru-RU/pneumatic-cannon/pneumatic-cannon-component.ftl +++ b/Resources/Locale/ru-RU/pneumatic-cannon/pneumatic-cannon-component.ftl @@ -8,12 +8,11 @@ pneumatic-cannon-component-fire-no-gas = { CAPITALIZE($cannon) } щёлкает, ## Shown when changing power. -pneumatic-cannon-component-change-power = - { $power -> - [High] Вы устанавливаете ограничитель на максимум. Как бы вышло не слишком сильно... - [Medium] Вы устанавливаете ограничитель посередине. - *[Low] Вы устанавливаете ограничитель на минимум. - } +pneumatic-cannon-component-change-power = { $power -> + [High] Вы устанавливаете ограничитель на максимум. Как бы вышло не слишком сильно... + [Medium] Вы устанавливаете ограничитель посередине. + *[Low] Вы устанавливаете ограничитель на минимум. +} ## Shown when being stunned by having the power too high. diff --git a/Resources/Locale/ru-RU/pointing/pointing-verb.ftl b/Resources/Locale/ru-RU/pointing/pointing-verb.ftl index 00c2de00a75..4c78084749d 100644 --- a/Resources/Locale/ru-RU/pointing/pointing-verb.ftl +++ b/Resources/Locale/ru-RU/pointing/pointing-verb.ftl @@ -1 +1 @@ -pointing-verb-get-data-text = Указать на +pointing-verb-get-data-text = Указать на \ No newline at end of file diff --git a/Resources/Locale/ru-RU/points/points.ftl b/Resources/Locale/ru-RU/points/points.ftl index d1e6309c015..d055ebffd55 100644 --- a/Resources/Locale/ru-RU/points/points.ftl +++ b/Resources/Locale/ru-RU/points/points.ftl @@ -1,7 +1,6 @@ point-scoreboard-winner = Победитель — [color=lime]{ $player }![/color] point-scoreboard-header = [bold]Таблица результатов[/bold] -point-scoreboard-list = - { $place }. [bold][color=cyan]{ $name }[/color][/bold] набирает [color=yellow]{ $points -> - [one] { $points } очко - *[other] { $points } очков - }.[/color] +point-scoreboard-list = { $place }. [bold][color=cyan]{ $name }[/color][/bold] набирает [color=yellow]{ $points -> + [one] { $points } очко + *[other] { $points } очков +}.[/color] diff --git a/Resources/Locale/ru-RU/portal/swap-teleporter.ftl b/Resources/Locale/ru-RU/portal/swap-teleporter.ftl index 0af8e2e857d..014d5112414 100644 --- a/Resources/Locale/ru-RU/portal/swap-teleporter.ftl +++ b/Resources/Locale/ru-RU/portal/swap-teleporter.ftl @@ -11,10 +11,9 @@ swap-teleporter-verb-destroy-link = Разорвать квантовую свя swap-teleporter-examine-link-present = [color=forestgreen]Имеется квантовая связь с другим устройством.[/color] Alt-клик чтобы разорвать квантовую связь. swap-teleporter-examine-link-absent = [color=yellow]Квантовая связь отсутствует.[/color] Используйте на другом устройстве, чтобы установить квантовую связь. -swap-teleporter-examine-time-remaining = - Время до перезарядки: [color=purple]{ $second } { $second -> - [one] секунда. - [few] секунды. - *[other] секунд. - }[/color] +swap-teleporter-examine-time-remaining = Время до перезарядки: [color=purple]{ $second } { $second -> + [one] секунда. + [few] секунды. + *[other] секунд. +}[/color] diff --git a/Resources/Locale/ru-RU/power/components/generator.ftl b/Resources/Locale/ru-RU/power/components/generator.ftl index c6532250947..8d8e7dd3644 100644 --- a/Resources/Locale/ru-RU/power/components/generator.ftl +++ b/Resources/Locale/ru-RU/power/components/generator.ftl @@ -30,12 +30,11 @@ portable-generator-ui-network-stats-not-connected = Не подключён power-switchable-generator-examine = Выработанная энергия направлена на { $voltage }. power-switchable-generator-switched = Выход переключён на { $voltage }! -power-switchable-voltage = - { $voltage -> - [HV] [color=orange]ВВ[/color] - [MV] [color=yellow]СВ[/color] - *[LV] [color=green]НВ[/color] - } +power-switchable-voltage = { $voltage -> + [HV] [color=orange]ВВ[/color] + [MV] [color=yellow]СВ[/color] + *[LV] [color=green]НВ[/color] +} power-switchable-switch-voltage = Переключить на { $voltage } fuel-generator-verb-disable-on = Сначала выключите генератор! diff --git a/Resources/Locale/ru-RU/power/components/power-receiver-component.ftl b/Resources/Locale/ru-RU/power/components/power-receiver-component.ftl index 86c400ae85d..c20e3051c02 100644 --- a/Resources/Locale/ru-RU/power/components/power-receiver-component.ftl +++ b/Resources/Locale/ru-RU/power/components/power-receiver-component.ftl @@ -1,3 +1,3 @@ power-receiver-component-on-examine-main = Похоже, питание { $stateText }. power-receiver-component-on-examine-powered = [color=darkgreen]имеется[/color] -power-receiver-component-on-examine-unpowered = [color=darkred]отсутствует[/color] +power-receiver-component-on-examine-unpowered = [color=darkred]отсутствует[/color] diff --git a/Resources/Locale/ru-RU/power/components/radiation-collector.ftl b/Resources/Locale/ru-RU/power/components/radiation-collector.ftl index 349fe6a3672..9527c11af0f 100644 --- a/Resources/Locale/ru-RU/power/components/radiation-collector.ftl +++ b/Resources/Locale/ru-RU/power/components/radiation-collector.ftl @@ -1,13 +1,11 @@ power-radiation-collector-gas-tank-missing = Выемка для баллона с плазмой [color=darkred]пустует[/color]. -power-radiation-collector-gas-tank-present = - Выемка для баллона с плазмой [color=darkgreen]заполнена[/color] и индикатор баллона находится на отметке [color={ $fullness -> - *[0] red]пусто - [1] red]мало - [2] yellow]заполнено наполовину - [3] lime]заполнено - }[/color]. -power-radiation-collector-enabled = - Находится в режиме [color={ $state -> - [true] darkgreen]вкл - *[false] darkred]выкл - }[/color]. +power-radiation-collector-gas-tank-present = Выемка для баллона с плазмой [color=darkgreen]заполнена[/color] и индикатор баллона находится на отметке [color={ $fullness -> + *[0] red]пусто + [1] red]мало + [2] yellow]заполнено наполовину + [3] lime]заполнено +}[/color]. +power-radiation-collector-enabled = Находится в режиме [color={ $state -> + [true] darkgreen]вкл + *[false] darkred]выкл +}[/color]. diff --git a/Resources/Locale/ru-RU/power/verb.ftl b/Resources/Locale/ru-RU/power/verb.ftl index f3f968e586c..79591eb95c8 100644 --- a/Resources/Locale/ru-RU/power/verb.ftl +++ b/Resources/Locale/ru-RU/power/verb.ftl @@ -1,2 +1,2 @@ # debug verb for allowing devices to work without requiring power. -verb-debug-toggle-need-power = Переключить питание +verb-debug-toggle-need-power = Переключить питание \ No newline at end of file diff --git a/Resources/Locale/ru-RU/predictions/magic-9-ball-answers.ftl b/Resources/Locale/ru-RU/predictions/magic-9-ball-answers.ftl new file mode 100644 index 00000000000..25eee1ac233 --- /dev/null +++ b/Resources/Locale/ru-RU/predictions/magic-9-ball-answers.ftl @@ -0,0 +1,21 @@ +# Positive +magic-9-ball-1 = Yes +magic-9-ball-2 = YES!!!! +magic-9-ball-3 = Without a doubt +magic-9-ball-4 = It is certain +magic-9-ball-5 = Outlook good +magic-9-ball-6 = Positive +magic-9-ball-7 = Absolutely + +# Negative +magic-9-ball-8 = No +magic-9-ball-9 = NOOO!!!!!! +magic-9-ball-10 = No no no no no no no +magic-9-ball-11 = Nuh uh +magic-9-ball-12 = Nah +magic-9-ball-13 = Negative +magic-9-ball-14 = Absolutely not + +# Neutral +magic-9-ball-15 = Perchance +magic-9-ball-16 = I dunno diff --git a/Resources/Locale/ru-RU/preferences/humanoid-character-profile.ftl b/Resources/Locale/ru-RU/preferences/humanoid-character-profile.ftl index 57577e26184..790d09bac03 100644 --- a/Resources/Locale/ru-RU/preferences/humanoid-character-profile.ftl +++ b/Resources/Locale/ru-RU/preferences/humanoid-character-profile.ftl @@ -1,14 +1,14 @@ ### UI # Displayed in the Character prefs window -humanoid-character-profile-summary = +humanoid-character-profile-summary = Это { $name }. { $gender -> [male] Ему [female] Ей [epicene] Им - *[neuter] Ему + *[neuter] Ему } { $age } { $age -> [one] год [few] года - *[other] лет - }. + *[other] лет + }. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/preferences/loadout-groups.ftl b/Resources/Locale/ru-RU/preferences/loadout-groups.ftl index 206f81febfc..4ab1b903616 100644 --- a/Resources/Locale/ru-RU/preferences/loadout-groups.ftl +++ b/Resources/Locale/ru-RU/preferences/loadout-groups.ftl @@ -175,7 +175,6 @@ loadout-group-security-cadet-jumpsuit = Кадет СБ, комбинезон loadout-group-security-star = СБ, Звёздочка # Medical -loadout-group-medical-gloves = Медицинский отдел, перчатки loadout-group-medical-mask = Медицинский отдел, маска loadout-group-chief-medical-officer-head = Главный врач, голова @@ -202,9 +201,9 @@ loadout-group-paramedic-jumpsuit = Парамедик, комбинезон loadout-group-paramedic-outerclothing = Парамедик, верхняя одежда loadout-group-paramedic-shoes = Парамедик, обувь -loadout-group-medical-glasses = Медицинский отдел, очки - # Wildcards loadout-group-reporter-jumpsuit = Репортёр, комбинезон +loadout-group-reporter-head = Reporter hat +loadout-group-reporter-outerclothing = Reporter vest loadout-group-psychologist-jumpsuit = Психолог, комбинезон diff --git a/Resources/Locale/ru-RU/preferences/loadouts.ftl b/Resources/Locale/ru-RU/preferences/loadouts.ftl index 1eb11221648..13120f55825 100644 --- a/Resources/Locale/ru-RU/preferences/loadouts.ftl +++ b/Resources/Locale/ru-RU/preferences/loadouts.ftl @@ -9,11 +9,10 @@ loadouts-min-limit = Мин. кол-во: { $count } loadouts-max-limit = Макс. кол-во: { $count } loadouts-points-limit = Очки: { $count } / { $max } -loadouts-count-items-in-group = - { $item } и { $count } { $count -> - [1] другой предмет - [few] других предмета - *[other] других предметов - } +loadouts-count-items-in-group = { $item } и { $count } { $count -> + [1] другой предмет + [few] других предмета + *[other] других предметов +} loadouts-points-restriction = Не хватает очков diff --git a/Resources/Locale/ru-RU/preferences/ui/markings-picker.ftl b/Resources/Locale/ru-RU/preferences/ui/markings-picker.ftl index b323e0c00aa..849ee86c691 100644 --- a/Resources/Locale/ru-RU/preferences/ui/markings-picker.ftl +++ b/Resources/Locale/ru-RU/preferences/ui/markings-picker.ftl @@ -1,37 +1,67 @@ -markings-used = Используемые черты -markings-unused = Неиспользуемые черты -markings-add = Добавить черту -markings-remove = Убрать черту -markings-rank-up = Вверх -markings-rank-down = Вниз markings-search = Поиск -marking-points-remaining = Черт осталось: { $points } -marking-used = { $marking-name } -marking-used-forced = { $marking-name } (Принудительно) -marking-slot-add = Добавить -marking-slot-remove = Удалить -marking-slot = Слот { $number } +-markings-selection = { $selectable -> + [0] You have no markings remaining. + [one] You can select one more marking. + *[other] You can select { $selectable } more markings. +} +markings-limits = { $required -> + [true] { $count -> + [-1] Select at least one marking. + [0] You cannot select any markings, but somehow, you have to? This is a bug. + [one] Select one marking. + *[other] Select at least one marking and up to { $count } markings. { -markings-selection(selectable: $selectable) } + } + *[false] { $count -> + [-1] Select any number of markings. + [0] You cannot select any markings. + [one] Select up to one marking. + *[other] Select up to { $count } markings. { -markings-selection(selectable: $selectable) } + } +} +markings-reorder = Reorder markings -humanoid-marking-modifier-force = Принудительно -humanoid-marking-modifier-ignore-species = Игнорировать вид +humanoid-marking-modifier-respect-limits = Respect limits +humanoid-marking-modifier-respect-group-sex = Respect group & sex restrictions humanoid-marking-modifier-base-layers = Базовый слой humanoid-marking-modifier-enable = Включить humanoid-marking-modifier-prototype-id = ID прототипа: # Categories -markings-category-Special = Специальное -markings-category-Hair = Причёска -markings-category-FacialHair = Лицевая растительность -markings-category-Head = Голова -markings-category-HeadTop = Голова (верх) -markings-category-HeadSide = Голова (бок) -markings-category-Snout = Морда -markings-category-SnoutCover = Морда (Внешний) -markings-category-UndergarmentTop = Нижнее бельё (Верх) -markings-category-UndergarmentBottom = Нижнее бельё (Низ) -markings-category-Chest = Грудь -markings-category-Arms = Руки -markings-category-Legs = Ноги -markings-category-Tail = Хвост -markings-category-Overlay = Наложение +markings-organ-Torso = Torso +markings-organ-Head = Head +markings-organ-ArmLeft = Left Arm +markings-organ-ArmRight = Right Arm +markings-organ-HandRight = Right Hand +markings-organ-HandLeft = Left Hand +markings-organ-LegLeft = Left Leg +markings-organ-LegRight = Right Leg +markings-organ-FootLeft = Left Foot +markings-organ-FootRight = Right Foot +markings-organ-Eyes = Eyes + +markings-layer-Special = Special +markings-layer-Tail = Tail +markings-layer-Tail-Moth = Wings +markings-layer-Hair = Hair +markings-layer-FacialHair = Facial Hair +markings-layer-UndergarmentTop = Undershirt +markings-layer-UndergarmentBottom = Underpants +markings-layer-Chest = Chest +markings-layer-Head = Head +markings-layer-Snout = Snout +markings-layer-SnoutCover = Snout (Cover) +markings-layer-HeadSide = Head (Side) +markings-layer-HeadTop = Head (Top) +markings-layer-Eyes = Eyes +markings-layer-RArm = Right Arm +markings-layer-LArm = Left Arm +markings-layer-RHand = Right Hand +markings-layer-LHand = Left Hand +markings-layer-RLeg = Right Leg +markings-layer-LLeg = Left Leg +markings-layer-RFoot = Right Foot +markings-layer-LFoot = Left Foot +markings-layer-Overlay = Overlay +markings-layer-TailOverlay = Overlay + diff --git a/Resources/Locale/ru-RU/procedural/expeditions.ftl b/Resources/Locale/ru-RU/procedural/expeditions.ftl index a5bc6789e03..e54ec7d3e4c 100644 --- a/Resources/Locale/ru-RU/procedural/expeditions.ftl +++ b/Resources/Locale/ru-RU/procedural/expeditions.ftl @@ -21,18 +21,16 @@ salvage-expedition-difficulty-players = Рекомендовано утилиз # Runner salvage-expedition-not-all-present = Не все утилизаторы вернулись на борт шаттла! -salvage-expedition-announcement-countdown-minutes = - До окончания экспедиции осталась { $duration } { $duration -> - [one] минута - [few] минуты - *[other] минут - }. -salvage-expedition-announcement-countdown-seconds = - До окончания экспедиции осталось { $duration } { $duration -> - [one] секунда - [few] секунды - *[other] секунд - }. +salvage-expedition-announcement-countdown-minutes = До окончания экспедиции осталась { $duration } { $duration -> + [one] минута + [few] минуты + *[other] минут +}. +salvage-expedition-announcement-countdown-seconds = До окончания экспедиции осталось { $duration } { $duration -> + [one] секунда + [few] секунды + *[other] секунд +}. salvage-expedition-announcement-dungeon = Подземелье расположено от вас на { $direction }. salvage-expedition-completed = Экспедиция окончена. salvage-expedition-reward-description = Награда за завершение миссии diff --git a/Resources/Locale/ru-RU/prototypes/catalog/cargo/cargoproduct-descriptions.ftl b/Resources/Locale/ru-RU/prototypes/catalog/cargo/cargoproduct-descriptions.ftl new file mode 100644 index 00000000000..916390958ee --- /dev/null +++ b/Resources/Locale/ru-RU/prototypes/catalog/cargo/cargoproduct-descriptions.ftl @@ -0,0 +1,12 @@ +# Emergency +cargoproduct-description-emergencyinflatablewall = Three stacks of inflatable walls for when the stations metal walls don't want to hold atmosphere anymore. + +# Materials +cargoproduct-name-material-gold = gold ingots +cargoproduct-description-material-gold = 30 ingots of gold. + +cargoproduct-name-material-plasteel = plasteel sheets +cargoproduct-description-material-plasteel = 30 sheets of plasteel. + +cargoproduct-name-material-silver = silver ingots +cargoproduct-description-material-silver = 30 ingots of silver. diff --git a/Resources/Locale/ru-RU/pulling/pullable-component.ftl b/Resources/Locale/ru-RU/pulling/pullable-component.ftl index 6cc60f6ce5d..151b85a577e 100644 --- a/Resources/Locale/ru-RU/pulling/pullable-component.ftl +++ b/Resources/Locale/ru-RU/pulling/pullable-component.ftl @@ -1,4 +1,4 @@ ## PullingVerb pulling-verb-get-data-text = Тащить -pulling-verb-get-data-text-stop-pulling = Перестать тащить +pulling-verb-get-data-text-stop-pulling = Перестать тащить \ No newline at end of file diff --git a/Resources/Locale/ru-RU/radio/components/handheld-radio-component.ftl b/Resources/Locale/ru-RU/radio/components/handheld-radio-component.ftl index eef3f8f76dd..182db0dacd2 100644 --- a/Resources/Locale/ru-RU/radio/components/handheld-radio-component.ftl +++ b/Resources/Locale/ru-RU/radio/components/handheld-radio-component.ftl @@ -3,4 +3,4 @@ handheld-radio-component-on-examine = Настроено на работу на handheld-radio-component-on-state = включено handheld-radio-component-off-state = выключено handheld-radio-component-channel-set = Включён { $channel } канал -handheld-radio-component-chennel-examine = Выбранный канал: { $channel }. +handheld-radio-component-chennel-examine = Выбранный канал: { $channel }. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/random-metadata/random-metadata-formats.ftl b/Resources/Locale/ru-RU/random-metadata/random-metadata-formats.ftl index be46593df82..9ba370ce1ff 100644 --- a/Resources/Locale/ru-RU/random-metadata/random-metadata-formats.ftl +++ b/Resources/Locale/ru-RU/random-metadata/random-metadata-formats.ftl @@ -17,15 +17,15 @@ name-format-nukie-commander = Командир { $part0 } name-format-nukie-operator = Оператор { $part0 } name-format-ert = { $part0 } { $part1 } -name-format-ert-leader = Sergeant {$part0} -name-format-ert-specialist = Specialist {$part0} -name-format-ert-pointman = Pointman {$part0} -name-format-ert-officer = Officer {$part0} -name-format-ert-rifle = Rifleman {$part0} -name-format-ert-grenade = Grenadier {$part0} -name-format-ert-vanguard = Vanguard {$part0} -name-format-ert-doctor = Doctor {$part0} -name-format-ert-corpsman = Corpsman {$part0} +name-format-ert-leader = Sergeant { $part0 } +name-format-ert-specialist = Specialist { $part0 } +name-format-ert-pointman = Pointman { $part0 } +name-format-ert-officer = Officer { $part0 } +name-format-ert-rifle = Rifleman { $part0 } +name-format-ert-grenade = Grenadier { $part0 } +name-format-ert-vanguard = Vanguard { $part0 } +name-format-ert-doctor = Doctor { $part0 } +name-format-ert-corpsman = Corpsman { $part0 } # " " name-format-book = { $part0 } { $part1 } diff --git a/Resources/Locale/ru-RU/rcd/components/rcd-ammo-component.ftl b/Resources/Locale/ru-RU/rcd/components/rcd-ammo-component.ftl index 8948c1a4a54..7a396dc0044 100644 --- a/Resources/Locale/ru-RU/rcd/components/rcd-ammo-component.ftl +++ b/Resources/Locale/ru-RU/rcd/components/rcd-ammo-component.ftl @@ -1,8 +1,7 @@ -rcd-ammo-component-on-examine = - Содержит { $charges } { $charges -> - [one] заряд - [few] заряда - *[other] зарядов - }. +rcd-ammo-component-on-examine = Содержит { $charges } { $charges -> + [one] заряд + [few] заряда + *[other] зарядов +}. rcd-ammo-component-after-interact-full = РСУ заполнено! rcd-ammo-component-after-interact-refilled = Вы пополняете РСУ. diff --git a/Resources/Locale/ru-RU/rcd/components/rcd-component.ftl b/Resources/Locale/ru-RU/rcd/components/rcd-component.ftl index 86d5397460f..b99fe481fe7 100644 --- a/Resources/Locale/ru-RU/rcd/components/rcd-component.ftl +++ b/Resources/Locale/ru-RU/rcd/components/rcd-component.ftl @@ -29,6 +29,7 @@ rcd-component-must-build-on-subfloor-message = Это может быть пос rcd-component-cannot-build-on-subfloor-message = Это не может быть построено на покрытии! rcd-component-cannot-build-on-occupied-tile-message = Здесь нельзя строить, место уже занято! rcd-component-cannot-build-identical-tile = Эта клетка уже тут имеется! +rcd-component-cannot-build-identical-entity = That already exists there! ### Category names diff --git a/Resources/Locale/ru-RU/reagents/frostoil.ftl b/Resources/Locale/ru-RU/reagents/frostoil.ftl index b2866f4dab7..b7fd811aa8d 100644 --- a/Resources/Locale/ru-RU/reagents/frostoil.ftl +++ b/Resources/Locale/ru-RU/reagents/frostoil.ftl @@ -1,3 +1,3 @@ ### Messages that pop up when metabolizing Frost Oil. -frost-oil-effect-light-cold = Вы чувствуете лёгкое холодное покалывание в горле... +frost-oil-effect-light-cold = Вы чувствуете лёгкое холодное покалывание в горле... \ No newline at end of file diff --git a/Resources/Locale/ru-RU/reagents/meta/biological.ftl b/Resources/Locale/ru-RU/reagents/meta/biological.ftl index c12ada54fa5..6c9974e016e 100644 --- a/Resources/Locale/ru-RU/reagents/meta/biological.ftl +++ b/Resources/Locale/ru-RU/reagents/meta/biological.ftl @@ -16,6 +16,9 @@ reagent-desc-hemocyanin-blood = Содержит медь, а не железо, reagent-name-ammonia-blood = анаэробная кровь reagent-desc-ammonia-blood = Ничто другое во всей галактике не пахнет так отвратительно. +reagent-name-sulfur-blood = sulfuric blood +reagent-desc-sulfur-blood = Feels almost acidic. + reagent-name-zombie-blood = кровь зомби reagent-desc-zombie-blood = Не рекомендуется употреблять в пищу. Может быть использована для создания прививки от инфекции. diff --git a/Resources/Locale/ru-RU/reagents/meta/medicine.ftl b/Resources/Locale/ru-RU/reagents/meta/medicine.ftl index e16dfe4de4f..0bb07597b44 100644 --- a/Resources/Locale/ru-RU/reagents/meta/medicine.ftl +++ b/Resources/Locale/ru-RU/reagents/meta/medicine.ftl @@ -131,14 +131,11 @@ reagent-name-insuzine = инсузин reagent-desc-insuzine = Быстро восстанавливает ткани, омертвевшие в результате поражения электрическим током, но при этом слегка охлаждает. Полностью замораживает пациента при передозировке. reagent-name-opporozidone = оппорозидон -reagent-desc-opporozidone = Трудно синтезируемый криогенный препарат, используемый для регенерации гниющих тканей и мозгового вещества. +reagent-desc-opporozidone= Трудно синтезируемый криогенный препарат, используемый для регенерации гниющих тканей и мозгового вещества. reagent-name-arcryox = аркриокс reagent-desc-arcryox = Отвратительно синий криогенный химикат, способный лечить самые тяжелые раны даже у мертвых. Однако он плох в стабилизации пациентов. -reagent-name-necrosol = некрозол -reagent-desc-necrosol = Некротическое вещество, которое, похоже, способно излечивать обмороженные трупы. В небольших дозах он способен лечить и оживлять растения. - reagent-name-aloxadone = алоксадон reagent-desc-aloxadone = Криогенное химическое вещество. Используется для лечения тяжёлых ожогов и обморожений путём регенерации пострадавших тканей. Работает независимо от того, жив пациент или мёртв. @@ -154,5 +151,5 @@ reagent-desc-potassium-iodide = Снижает разрушительное во reagent-name-haloperidol = галоперидол reagent-desc-haloperidol = Выводит из организма большинство стимулирующих и галлюциногенных препаратов. Уменьшает наркотический эффект и дрожание. Вызывает сонливость. -reagent-name-warfarin = варфарин -reagent-desc-warfarin = Обычно используется в качестве антикоагулянта. Нарушает свёртываемость крови. При передозировке может вызвать внутреннее кровотечение. +reagent-name-heparin = heparin +reagent-desc-heparin = Commonly used as an anticoagulant medication. Causes blood to have difficulty forming clots. Can cause internal bleeding when overdosed. diff --git a/Resources/Locale/ru-RU/reagents/norepinephricacid.ftl b/Resources/Locale/ru-RU/reagents/norepinephricacid.ftl index 2bbdc2d702a..eed029e50eb 100644 --- a/Resources/Locale/ru-RU/reagents/norepinephricacid.ftl +++ b/Resources/Locale/ru-RU/reagents/norepinephricacid.ftl @@ -5,4 +5,4 @@ norepinephricacid-effect-vision-fail = Вы чувствуете, как ваш norepinephricacid-effect-eye-pain = Вы чувствуете сильную боль в глазах! norepinephricacid-effect-blindness = Ваши глаза перестают работать! norepinephricacid-effect-darkness = Вы погружаетесь в мир тьмы! -norepinephricacid-effect-eye-disconnect = Ваши глаза словно отсоединяются! +norepinephricacid-effect-eye-disconnect = Ваши глаза словно отсоединяются! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/recycling/components/recycler-component.ftl b/Resources/Locale/ru-RU/recycling/components/recycler-component.ftl index bc9bbfcfa70..0fe4f14c307 100644 --- a/Resources/Locale/ru-RU/recycling/components/recycler-component.ftl +++ b/Resources/Locale/ru-RU/recycling/components/recycler-component.ftl @@ -1,4 +1,4 @@ ## RecyclerComponent recycler-component-suicide-message-others = { $victim } пытается переработать { $victim }! -recycler-component-suicide-message = Вы перерабатываете себя самого! +recycler-component-suicide-message = Вы перерабатываете себя самого! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/replays/replays.ftl b/Resources/Locale/ru-RU/replays/replays.ftl index ff84fe6a6b1..659cfe79c6d 100644 --- a/Resources/Locale/ru-RU/replays/replays.ftl +++ b/Resources/Locale/ru-RU/replays/replays.ftl @@ -5,10 +5,9 @@ replay-loading-reading = Чтение файлов replay-loading-processing = Обработка файлов replay-loading-spawning = Спавн сущностей replay-loading-initializing = Инициализация сущностей -replay-loading-starting = Запуск сущностей -replay-loading-failed = - Не удалось загрузить повтор. Ошибка: - { $reason } +replay-loading-starting= Запуск сущностей +replay-loading-failed = Не удалось загрузить повтор. Ошибка: + { $reason } replay-loading-retry = Попробовать загрузить с большей допустимостью исключений — МОЖЕТ ВЫЗВАТЬ БАГИ! replay-loading-cancel = Отмена @@ -23,16 +22,15 @@ replay-menu-none = Повторы не найдены. replay-info-title = Информация о повторе replay-info-none-selected = Повтор не выбран replay-info-invalid = [color=red]Выбран неверный повтор[/color] -replay-info-info = - { "[" }color=gray]Выбрано:[/color] { $name } ({ $file }) - { "[" }color=gray]Время:[/color] { $time } - { "[" }color=gray]ID раунда:[/color] { $roundId } - { "[" }color=gray]Продолжительность:[/color] { $duration } - { "[" }color=gray]ForkId:[/color] { $forkId } - { "[" }color=gray]Версия:[/color] { $version } - { "[" }color=gray]Движок:[/color] { $engVersion } - { "[" }color=gray]Type Hash:[/color] { $hash } - { "[" }color=gray]Comp Hash:[/color] { $compHash } +replay-info-info = { "[" }color=gray]Выбрано:[/color] { $name } ({ $file }) + { "[" }color=gray]Время:[/color] { $time } + { "[" }color=gray]ID раунда:[/color] { $roundId } + { "[" }color=gray]Продолжительность:[/color] { $duration } + { "[" }color=gray]ForkId:[/color] { $forkId } + { "[" }color=gray]Версия:[/color] { $version } + { "[" }color=gray]Движок:[/color] { $engVersion } + { "[" }color=gray]Type Hash:[/color] { $hash } + { "[" }color=gray]Comp Hash:[/color] { $compHash } # Replay selection window replay-menu-select-title = Выбрать повтор diff --git a/Resources/Locale/ru-RU/research/components/research-client-component.ftl b/Resources/Locale/ru-RU/research/components/research-client-component.ftl index a516c89781c..02cb27ddd66 100644 --- a/Resources/Locale/ru-RU/research/components/research-client-component.ftl +++ b/Resources/Locale/ru-RU/research/components/research-client-component.ftl @@ -1,2 +1,2 @@ research-client-server-selection-menu-title = Выбор сервера РнД -research-client-server-selection-menu-server-entry-text = ID: { $id } || { $serverName } +research-client-server-selection-menu-server-entry-text = ID: { $id } || { $serverName } \ No newline at end of file diff --git a/Resources/Locale/ru-RU/research/components/robotics-console.ftl b/Resources/Locale/ru-RU/research/components/robotics-console.ftl index 279cb6d7db4..dd7a32aeb52 100644 --- a/Resources/Locale/ru-RU/research/components/robotics-console.ftl +++ b/Resources/Locale/ru-RU/research/components/robotics-console.ftl @@ -9,9 +9,9 @@ robotics-console-battery = [color=gray]Заряд батареи:[/color] [color robotics-console-hp = [color=gray]Целостность:[/color] [color={ $color }]{ $hp }[/color]% robotics-console-modules = [color=gray]Установленные модули:[/color] { $count } robotics-console-brain = [color=gray]Мозг установлен:[/color] [color={ $brain -> - [true] green]Да - *[false] red]Нет - }[/color] + [true] green]Да + *[false] red]Нет +}[/color] robotics-console-locked-message = Управление заблокировано, проведите ID-картой. robotics-console-disable = Отключить diff --git a/Resources/Locale/ru-RU/research/components/technology-disk.ftl b/Resources/Locale/ru-RU/research/components/technology-disk.ftl index 223fe502a8c..631586a1d05 100644 --- a/Resources/Locale/ru-RU/research/components/technology-disk.ftl +++ b/Resources/Locale/ru-RU/research/components/technology-disk.ftl @@ -2,6 +2,8 @@ tech-disk-inserted = Вы вставляете диск, добавляя на tech-disk-examine-none = Этикетка пуста. tech-disk-examine = На этикетке имеется небольшое матричное изображение, представляющее { $result }. tech-disk-examine-more = Имеются и другие изображения, но они слишком малы, чтобы разглядеть их. +tech-disk-examine-desc = [color=lightGray]A disk for the R&D server containing a [bold]Tier { $tier } { $branch }[/bold] branch research technology.[/color] +tech-disk-examine-desc-unknown = [color=lightGray]A disk for the R&D server containing research technology.[/color] tech-disk-name-format = { $baseName } ({ $technology }) tech-disk-ui-name = Терминал технологических дисков diff --git a/Resources/Locale/ru-RU/revenant/revenant.ftl b/Resources/Locale/ru-RU/revenant/revenant.ftl index 94fcbdce06e..910fbccaff8 100644 --- a/Resources/Locale/ru-RU/revenant/revenant.ftl +++ b/Resources/Locale/ru-RU/revenant/revenant.ftl @@ -20,4 +20,4 @@ revenant-soul-finish-harvest = { CAPITALIZE($target) } падает на зем revenant-user-interface-title = Магазин способностей revenant-user-interface-essence-amount = [color=plum]{ $amount }[/color] украденной эссенции -revenant-user-interface-cost = { $price } эссенции +revenant-user-interface-cost = { $price } эссенции \ No newline at end of file diff --git a/Resources/Locale/ru-RU/robust-toolbox/_engine_lib.ftl b/Resources/Locale/ru-RU/robust-toolbox/_engine_lib.ftl index d9ba7ad7f07..6c8bb470307 100644 --- a/Resources/Locale/ru-RU/robust-toolbox/_engine_lib.ftl +++ b/Resources/Locale/ru-RU/robust-toolbox/_engine_lib.ftl @@ -1,24 +1,24 @@ # Used internally by the THE() function. zzzz-the = { PROPER($ent) -> *[false] { $ent } - [true] { $ent } - } + [true] { $ent } +} # Used internally by the SUBJECT() function. zzzz-subject-pronoun = { GENDER($ent) -> [male] он [female] она [epicene] они - *[neuter] оно - } + *[neuter] оно +} # Used internally by the OBJECT() function. zzzz-object-pronoun = { GENDER($ent) -> [male] его [female] её [epicene] их - *[neuter] его - } + *[neuter] его +} # Used internally by the DAT-OBJ() function. # Not used in en-US. Created to support other languages. @@ -27,8 +27,8 @@ zzzz-dat-object = { GENDER($ent) -> [male] ему [female] ей [epicene] им - *[neuter] ему - } + *[neuter] ему +} # Used internally by the GENITIVE() function. # Not used in en-US. Created to support other languages. @@ -37,49 +37,47 @@ zzzz-genitive = { GENDER($ent) -> [male] него [female] неё [epicene] них - *[neuter] него - } + *[neuter] него +} # Used internally by the POSS-PRONOUN() function. zzzz-possessive-pronoun = { GENDER($ent) -> [male] его [female] её [epicene] их - *[neuter] его - } + *[neuter] его +} # Used internally by the POSS-ADJ() function. zzzz-possessive-adjective = { GENDER($ent) -> [male] его [female] её [epicene] их - *[neuter] его - } + *[neuter] его +} # Used internally by the REFLEXIVE() function. zzzz-reflexive-pronoun = { GENDER($ent) -> [male] сам [female] сама [epicene] сами - *[neuter] само - } + *[neuter] само +} # Used internally by the CONJUGATE-BE() function. -zzzz-conjugate-be = - { GENDER($ent) -> - [epicene] are - *[other] is - } +zzzz-conjugate-be = { GENDER($ent) -> + [epicene] are + *[other] is +} # Used internally by the CONJUGATE-HAVE() function. zzzz-conjugate-have = { GENDER($ent) -> [epicene] имеют - *[other] имеет - } + *[other] имеет +} # Used internally by the CONJUGATE-BASIC() function. -zzzz-conjugate-basic = - { GENDER($ent) -> - [epicene] { $first } - *[other] { $second } - } +zzzz-conjugate-basic = { GENDER($ent) -> + [epicene] { $first } + *[other] { $second } +} diff --git a/Resources/Locale/ru-RU/robust-toolbox/_generic.ftl b/Resources/Locale/ru-RU/robust-toolbox/_generic.ftl index 1a76f5ed752..70aace4356f 100644 --- a/Resources/Locale/ru-RU/robust-toolbox/_generic.ftl +++ b/Resources/Locale/ru-RU/robust-toolbox/_generic.ftl @@ -1,3 +1,3 @@ generic-map = карта generic-grid = грид -generic-mapid = ID карты +generic-mapid = ID карты \ No newline at end of file diff --git a/Resources/Locale/ru-RU/robust-toolbox/client-state-commands.ftl b/Resources/Locale/ru-RU/robust-toolbox/client-state-commands.ftl index ddd77a2f975..86af519aa28 100644 --- a/Resources/Locale/ru-RU/robust-toolbox/client-state-commands.ftl +++ b/Resources/Locale/ru-RU/robust-toolbox/client-state-commands.ftl @@ -1,16 +1,16 @@ # Loc strings for various entity state & client-side PVS related commands -cmd-reset-ent-help = Использование: {$command} +cmd-reset-ent-help = Использование: { $command } cmd-reset-ent-desc = Сбрасывает сущность до последнего полученного от сервера состояния. Это также сбросит сущности, которые были удалены в null-space. -cmd-reset-all-ents-help = Использование: {$command} +cmd-reset-all-ents-help = Использование: { $command } cmd-reset-all-ents-desc = Сбрасывает все сущности до последнего полученного от сервера состояния. Это затрагивает только сущности, которые не были удалены в null-space. -cmd-detach-ent-help = Использование: {$command} +cmd-detach-ent-help = Использование: { $command } cmd-detach-ent-desc = Удаляет сущность в null-space, как если бы он покинул зону действия PVS. -cmd-local-delete-help = Использование: {$command} +cmd-local-delete-help = Использование: { $command } cmd-local-delete-desc = Удаляет сущность. В отличие от обычной команды delete, эта команда работает на стороне клиента (CLIENT-SIDE). Если сущность не является клиентской, это, скорее всего, приведёт к ошибкам. -cmd-full-state-reset-help = Использование: {$command} +cmd-full-state-reset-help = Использование: { $command } cmd-full-state-reset-desc = Сбрасывает всю информацию о состоянии сущности и запрашивает полное состояние у сервера. diff --git a/Resources/Locale/ru-RU/robust-toolbox/color-naming.ftl b/Resources/Locale/ru-RU/robust-toolbox/color-naming.ftl index 99f3fe84256..79f7a049143 100644 --- a/Resources/Locale/ru-RU/robust-toolbox/color-naming.ftl +++ b/Resources/Locale/ru-RU/robust-toolbox/color-naming.ftl @@ -1,11 +1,11 @@ -color-hue-chroma-lightness = {$lightness} {$chroma} {$hue} -color-hue-chroma = {$chroma} {$hue} -color-hue-lightness = {$lightness} {$hue} +color-hue-chroma-lightness = { $lightness } { $chroma } { $hue } +color-hue-chroma = { $chroma } { $hue } +color-hue-lightness = { $lightness } { $hue } color-very-dark = очень тёмный color-dark = тёмный color-light = светлый color-very-light = очень светлый -color-mixed-hue = {$a} {$b} +color-mixed-hue = { $a } { $b } color-pale = бледный color-gray-adjective = серый color-strong = сильный diff --git a/Resources/Locale/ru-RU/robust-toolbox/commands.ftl b/Resources/Locale/ru-RU/robust-toolbox/commands.ftl index c709a75802f..0e8361caa4b 100644 --- a/Resources/Locale/ru-RU/robust-toolbox/commands.ftl +++ b/Resources/Locale/ru-RU/robust-toolbox/commands.ftl @@ -6,36 +6,36 @@ cmd-hint-float = [float] cmd-invalid-arg-number-error = Недопустимое число аргументов. -cmd-parse-failure-integer = {$arg} не является допустимым integer. -cmd-parse-failure-float = {$arg} не является допустимым float. -cmd-parse-failure-bool = {$arg} не является допустимым bool. -cmd-parse-failure-uid = {$arg} не является допустимым UID сущности. -cmd-parse-failure-mapid = {$arg} не является допустимым MapId. -cmd-parse-failure-enum = {$arg} не является {$enum} Enum. -cmd-parse-failure-grid = {$arg} не является допустимым гридом. -cmd-parse-failure-cultureinfo = "{$arg}" не является допустимым CultureInfo. -cmd-parse-failure-entity-exist = UID {$arg} не соответствует существующей сущности. -cmd-parse-failure-session = Не существует сессии с именем пользователя: {$username} - -cmd-error-file-not-found = Не удалось найти файл: {$file}. -cmd-error-dir-not-found = Не удалось найти директорию: {$dir}. +cmd-parse-failure-integer = { $arg } не является допустимым integer. +cmd-parse-failure-float = { $arg } не является допустимым float. +cmd-parse-failure-bool = { $arg } не является допустимым bool. +cmd-parse-failure-uid = { $arg } не является допустимым UID сущности. +cmd-parse-failure-mapid = { $arg } не является допустимым MapId. +cmd-parse-failure-enum = { $arg } не является { $enum } Enum. +cmd-parse-failure-grid = { $arg } не является допустимым гридом. +cmd-parse-failure-cultureinfo = "{ $arg }" не является допустимым CultureInfo. +cmd-parse-failure-entity-exist = UID { $arg } не соответствует существующей сущности. +cmd-parse-failure-session = Не существует сессии с именем пользователя: { $username } + +cmd-error-file-not-found = Не удалось найти файл: { $file }. +cmd-error-dir-not-found = Не удалось найти директорию: { $dir }. cmd-failure-no-attached-entity = Нет сущности привязанной к этой оболочке. ## 'help' command cmd-help-desc = Выводит общую справку или справку по определённой команде. -cmd-help-help = Использование: {$command} [имя команды] +cmd-help-help = Использование: { $command } [имя команды] Если имя команды не будет указано, будет выведена общая справка. Если имя команды будет указано, будет выведена справка по этой команде. cmd-help-no-args = Чтобы получить справку по определённой команде, используйте 'help '. Для получения списка всех доступных команд используйте 'list'. Для поиска по командам используйте 'list '. cmd-help-unknown = Неизвестная команда: { $command } -cmd-help-top = { $command } - { $description } +cmd-help-top = { $command } — { $description } cmd-help-invalid-args = Недопустимое количество аргументов. cmd-help-arg-cmdname = [имя команды] ## 'cvar' command cmd-cvar-desc = Получает или устанавливает CVar. -cmd-cvar-help = Использование: {$command} <имя | ?> [значение] +cmd-cvar-help = Использование: { $command } <имя | ?> [значение] Если значение предоставлено, оно спарсится и сохранится как новое значение CVar. Если нет, отобразится текущее значение CVar. Используйте 'cvar ?' для получения списка всех зарегистрированных CVar-ов. @@ -49,14 +49,14 @@ cmd-cvar-value-hidden =
@@ -27,7 +29,7 @@ public sealed partial class MetabolizerComponent : Component /// /// Multiplier applied to for adjusting based on metabolic rate multiplier. /// - [DataField] + [DataField, AutoNetworkedField] public float UpdateIntervalMultiplier = 1f; /// @@ -38,6 +40,8 @@ public sealed partial class MetabolizerComponent : Component /// /// From which solution will this metabolizer attempt to metabolize chemicals for a given stage + /// This typically does not change and as such isn't networked. + /// TODO: Entity relations :( /// [DataField] public Dictionary, MetabolismSolutionEntry> Solutions = new() diff --git a/Content.Shared/Metabolism/MetabolizerSystem.cs b/Content.Shared/Metabolism/MetabolizerSystem.cs index a9efcdc5bd5..3e31fae1acb 100644 --- a/Content.Shared/Metabolism/MetabolizerSystem.cs +++ b/Content.Shared/Metabolism/MetabolizerSystem.cs @@ -14,8 +14,7 @@ using Content.Shared.EntityEffects.Effects.Solution; using Content.Shared.FixedPoint; using Content.Shared.Mobs.Systems; -using Robust.Shared.Collections; -using Robust.Shared.Network; +using Content.Shared.Random.Helpers; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; @@ -27,12 +26,10 @@ public sealed class MetabolizerSystem : EntitySystem { [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly MobStateSystem _mobStateSystem = default!; [Dependency] private readonly SharedEntityConditionsSystem _entityConditions = default!; [Dependency] private readonly SharedEntityEffectsSystem _entityEffects = default!; [Dependency] private readonly SharedSolutionContainerSystem _solutionContainerSystem = default!; - [Dependency] private readonly INetManager _net = default!; private EntityQuery _organQuery; private EntityQuery _solutionQuery; @@ -51,38 +48,30 @@ public override void Initialize() private void OnMapInit(Entity ent, ref MapInitEvent args) { ent.Comp.NextUpdate = _gameTiming.CurTime + ent.Comp.AdjustedUpdateInterval; + Dirty(ent); } private void OnApplyMetabolicMultiplier(Entity ent, ref BodyRelayedEvent args) { ent.Comp.UpdateIntervalMultiplier = args.Args.Multiplier; + Dirty(ent); } public override void Update(float frameTime) { base.Update(frameTime); - // We only do this on the server to prevent the client from reshuffling metabolism during prediction. - // Should just be replaced with predicted random. - if (_net.IsClient) - return; - - var metabolizers = new ValueList<(EntityUid Uid, MetabolizerComponent Component)>(Count()); var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var comp)) - { - metabolizers.Add((uid, comp)); - } - - foreach (var (uid, metab) in metabolizers) { // Only update as frequently as it should - if (_gameTiming.CurTime < metab.NextUpdate) + if (_gameTiming.CurTime < comp.NextUpdate) continue; - metab.NextUpdate += metab.AdjustedUpdateInterval; - TryMetabolize((uid, metab)); + comp.NextUpdate += comp.AdjustedUpdateInterval; + TryMetabolize((uid, comp)); + Dirty(uid, comp); } } @@ -163,7 +152,8 @@ private void TryMetabolizeStage(Entity= effect.Probability) continue; // See if conditions apply diff --git a/Content.Shared/Metabolism/MetabolizerTypePrototype.cs b/Content.Shared/Metabolism/MetabolizerTypePrototype.cs index 34b45c798a0..b6ac9bc1bd8 100644 --- a/Content.Shared/Metabolism/MetabolizerTypePrototype.cs +++ b/Content.Shared/Metabolism/MetabolizerTypePrototype.cs @@ -2,6 +2,9 @@ namespace Content.Shared.Metabolism; +/// +/// Metabolizer identifier used to determine if a specific entity can metabolize a specific reagent effect. +/// [Prototype] public sealed partial class MetabolizerTypePrototype : IPrototype { From f7ec60c9099610681b95559f247077cab27b9676 Mon Sep 17 00:00:00 2001 From: Vortebo <64214314+Vortebo@users.noreply.github.com> Date: Sun, 22 Feb 2026 16:03:46 -0600 Subject: [PATCH 378/603] Minor Relic Fixes (#42921) * main changes * helpful changes * i remembered to fixgridatmos --- Resources/Maps/relic.yml | 2343 +++++++++++++++----------------------- 1 file changed, 937 insertions(+), 1406 deletions(-) diff --git a/Resources/Maps/relic.yml b/Resources/Maps/relic.yml index d35ce8904a6..9b0571b7c82 100644 --- a/Resources/Maps/relic.yml +++ b/Resources/Maps/relic.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 267.1.0 + engineVersion: 270.1.0 forkId: "" forkVersion: "" - time: 09/27/2025 20:04:57 - entityCount: 11501 + time: 02/14/2026 15:29:01 + entityCount: 11607 maps: - 1 grids: @@ -545,7 +545,7 @@ entities: 7,2: 0: 65534 7,3: - 0: 65535 + 0: 65527 7,4: 0: 3855 8,1: @@ -1117,10 +1117,16 @@ entities: 1: 3855 -1,10: 1: 34952 + 16,-7: + 0: 6 16,-6: 0: 17472 + 17,-8: + 1: 4096 + 17,-7: + 1: 4369 17,-6: - 1: 4368 + 1: 4369 uniqueMixes: - volume: 2500 temperature: 293.15 @@ -1146,6 +1152,9 @@ entities: - type: RadiationGridResistance - type: NavMap - type: ImplicitRoof + - type: TileHistory + chunkHistory: {} + - type: ExplosionAirtightGrid - uid: 3564 components: - type: MetaData @@ -1368,14 +1377,14 @@ entities: 2: 2176 3,-16: 1: 65331 - 3: 8 + 4: 8 3,-15: - 4: 544 + 3: 544 1: 2184 3,-17: 1: 12014 4,-16: - 3: 3 + 4: 3 1: 62216 4,-15: 1: 819 @@ -1542,16 +1551,19 @@ entities: temperature: 293.15 moles: Oxygen: 6666.982 - - volume: 2500 - temperature: 293.15 - moles: {} - volume: 2500 temperature: 293.15 moles: Nitrogen: 6666.982 + - volume: 2500 + temperature: 293.15 + moles: {} chunkSize: 4 - type: GasTileOverlay - type: RadiationGridResistance + - type: TileHistory + chunkHistory: {} + - type: ExplosionAirtightGrid - proto: AirAlarm entities: - uid: 56 @@ -2773,7 +2785,7 @@ entities: pos: 36.5,-6.5 parent: 2 - type: Door - secondsUntilStateChange: -21848.14 + secondsUntilStateChange: -25738.658 state: Opening - type: DeviceLinkSource lastSignals: @@ -4618,16 +4630,46 @@ entities: - type: Transform pos: 22.5,-4.5 parent: 2 + - uid: 1783 + components: + - type: Transform + pos: 20.5,31.5 + parent: 2 + - uid: 1788 + components: + - type: Transform + pos: 20.5,30.5 + parent: 2 + - uid: 1792 + components: + - type: Transform + pos: 21.5,31.5 + parent: 2 + - uid: 1884 + components: + - type: Transform + pos: 21.5,29.5 + parent: 2 - uid: 2858 components: - type: Transform pos: 23.5,-5.5 parent: 2 + - uid: 2870 + components: + - type: Transform + pos: 21.5,27.5 + parent: 2 - uid: 3110 components: - type: Transform pos: 22.5,-5.5 parent: 2 + - uid: 3239 + components: + - type: Transform + pos: 20.5,28.5 + parent: 2 - uid: 4025 components: - type: Transform @@ -4653,6 +4695,11 @@ entities: - type: Transform pos: 25.5,-12.5 parent: 2 + - uid: 5211 + components: + - type: Transform + pos: 22.5,30.5 + parent: 2 - uid: 7166 components: - type: Transform @@ -4671,12 +4718,7 @@ entities: - uid: 7197 components: - type: Transform - pos: 17.5,28.5 - parent: 2 - - uid: 7198 - components: - - type: Transform - pos: 17.5,27.5 + pos: 20.5,29.5 parent: 2 - uid: 7200 components: @@ -4696,7 +4738,7 @@ entities: - uid: 7211 components: - type: Transform - pos: 18.5,27.5 + pos: 21.5,30.5 parent: 2 - uid: 7213 components: @@ -4716,183 +4758,153 @@ entities: - uid: 7216 components: - type: Transform - pos: 19.5,28.5 + pos: 21.5,28.5 parent: 2 - uid: 7224 components: - type: Transform - pos: 19.5,27.5 + pos: 22.5,29.5 parent: 2 - uid: 7225 components: - type: Transform - pos: 20.5,31.5 - parent: 2 - - uid: 7251 - components: - - type: Transform - pos: 20.5,30.5 + pos: 22.5,31.5 parent: 2 - uid: 7256 - components: - - type: Transform - pos: 20.5,29.5 - parent: 2 - - uid: 7257 - components: - - type: Transform - pos: 20.5,28.5 - parent: 2 - - uid: 7258 components: - type: Transform pos: 20.5,27.5 parent: 2 - - uid: 7259 - components: - - type: Transform - pos: 21.5,31.5 - parent: 2 - - uid: 7260 - components: - - type: Transform - pos: 21.5,30.5 - parent: 2 - - uid: 7261 - components: - - type: Transform - pos: 21.5,29.5 - parent: 2 - - uid: 7262 - components: - - type: Transform - pos: 21.5,28.5 - parent: 2 - - uid: 7263 - components: - - type: Transform - pos: 21.5,27.5 - parent: 2 - - uid: 7264 - components: - - type: Transform - pos: 22.5,31.5 - parent: 2 - - uid: 7265 - components: - - type: Transform - pos: 22.5,30.5 - parent: 2 - - uid: 7266 - components: - - type: Transform - pos: 22.5,29.5 - parent: 2 - - uid: 7268 + - uid: 7399 components: - type: Transform pos: 22.5,28.5 parent: 2 - - uid: 7290 + - uid: 7401 components: - type: Transform pos: 22.5,27.5 parent: 2 - - uid: 7291 + - uid: 7402 components: - type: Transform pos: 23.5,31.5 parent: 2 - - uid: 7292 + - uid: 7403 components: - type: Transform pos: 23.5,30.5 parent: 2 - - uid: 7293 + - uid: 7404 components: - type: Transform pos: 23.5,29.5 parent: 2 - - uid: 7294 + - uid: 7405 components: - type: Transform pos: 23.5,28.5 parent: 2 - - uid: 7295 + - uid: 7406 components: - type: Transform pos: 23.5,27.5 parent: 2 - - uid: 7296 + - uid: 8308 components: - type: Transform pos: 24.5,31.5 parent: 2 - - uid: 7297 + - uid: 8314 components: - type: Transform pos: 24.5,30.5 parent: 2 - - uid: 7356 + - uid: 8325 components: - type: Transform pos: 24.5,29.5 parent: 2 - - uid: 7358 + - uid: 8456 components: - type: Transform pos: 24.5,28.5 parent: 2 - - uid: 7380 + - uid: 8457 components: - type: Transform pos: 24.5,27.5 parent: 2 - - uid: 7381 + - uid: 8470 components: - type: Transform pos: 25.5,31.5 parent: 2 - - uid: 7418 + - uid: 9684 + components: + - type: Transform + pos: 15.5,-63.5 + parent: 3564 + - uid: 9685 + components: + - type: Transform + pos: 16.5,-63.5 + parent: 3564 + - uid: 9686 + components: + - type: Transform + pos: 17.5,-63.5 + parent: 3564 + - uid: 9925 components: - type: Transform pos: 25.5,30.5 parent: 2 - - uid: 7419 + - uid: 10344 components: - type: Transform pos: 25.5,29.5 parent: 2 - - uid: 7420 + - uid: 10345 components: - type: Transform pos: 25.5,28.5 parent: 2 - - uid: 7421 + - uid: 10614 components: - type: Transform - pos: 18.5,28.5 + pos: 25.5,27.5 parent: 2 - - uid: 7422 + - uid: 11116 components: - type: Transform - pos: 25.5,27.5 + pos: 17.5,28.5 parent: 2 - - uid: 9684 + - uid: 11214 components: - type: Transform - pos: 15.5,-63.5 - parent: 3564 - - uid: 9685 + pos: 17.5,27.5 + parent: 2 + - uid: 11350 components: - type: Transform - pos: 16.5,-63.5 - parent: 3564 - - uid: 9686 + pos: 18.5,28.5 + parent: 2 + - uid: 11351 components: - type: Transform - pos: 17.5,-63.5 - parent: 3564 + pos: 18.5,27.5 + parent: 2 + - uid: 11567 + components: + - type: Transform + pos: 19.5,28.5 + parent: 2 + - uid: 11568 + components: + - type: Transform + pos: 19.5,27.5 + parent: 2 - proto: AtmosFixNitrogenMarker entities: - uid: 533 @@ -12333,6 +12345,33 @@ entities: - type: Transform pos: 46.5,37.5 parent: 2 +- proto: CableApcStack + entities: + - uid: 214 + components: + - type: Transform + pos: 38.5,29.5 + parent: 2 + - uid: 327 + components: + - type: Transform + pos: 11.5,34.5 + parent: 2 + - uid: 7251 + components: + - type: Transform + pos: 38.5,29.5 + parent: 2 + - uid: 7777 + components: + - type: Transform + pos: 33.5,-7.5 + parent: 2 + - uid: 7782 + components: + - type: Transform + pos: 33.5,-7.5 + parent: 2 - proto: CableApcStack10 entities: - uid: 4504 @@ -12517,6 +12556,16 @@ entities: - type: Transform pos: 50.5,20.5 parent: 2 + - uid: 2337 + components: + - type: Transform + pos: 65.5,66.5 + parent: 2 + - uid: 2376 + components: + - type: Transform + pos: -2.5,-8.5 + parent: 2 - uid: 2531 components: - type: Transform @@ -12542,11 +12591,6 @@ entities: - type: Transform pos: -2.5,-10.5 parent: 2 - - uid: 4335 - components: - - type: Transform - pos: -1.5,-10.5 - parent: 2 - uid: 4345 components: - type: Transform @@ -14132,11 +14176,6 @@ entities: - type: Transform pos: 58.5,68.5 parent: 2 - - uid: 6623 - components: - - type: Transform - pos: 65.5,68.5 - parent: 2 - uid: 6624 components: - type: Transform @@ -14150,7 +14189,7 @@ entities: - uid: 6626 components: - type: Transform - pos: 58.5,65.5 + pos: 65.5,68.5 parent: 2 - uid: 6627 components: @@ -15497,6 +15536,218 @@ entities: - type: Transform pos: 22.5,-12.5 parent: 2 + - uid: 11569 + components: + - type: Transform + pos: 64.5,68.5 + parent: 2 + - uid: 11570 + components: + - type: Transform + pos: 63.5,68.5 + parent: 2 + - uid: 11571 + components: + - type: Transform + pos: 64.5,66.5 + parent: 2 + - uid: 11572 + components: + - type: Transform + pos: 61.5,67.5 + parent: 2 + - uid: 11573 + components: + - type: Transform + pos: 61.5,66.5 + parent: 2 + - uid: 11574 + components: + - type: Transform + pos: 60.5,66.5 + parent: 2 + - uid: 11575 + components: + - type: Transform + pos: 59.5,66.5 + parent: 2 + - uid: 11576 + components: + - type: Transform + pos: 57.5,66.5 + parent: 2 + - uid: 11577 + components: + - type: Transform + pos: 54.5,67.5 + parent: 2 + - uid: 11578 + components: + - type: Transform + pos: 56.5,66.5 + parent: 2 + - uid: 11579 + components: + - type: Transform + pos: 55.5,66.5 + parent: 2 + - uid: 11580 + components: + - type: Transform + pos: 55.5,67.5 + parent: 2 + - uid: 11581 + components: + - type: Transform + pos: 55.5,68.5 + parent: 2 + - uid: 11582 + components: + - type: Transform + pos: 56.5,68.5 + parent: 2 + - uid: 11583 + components: + - type: Transform + pos: 53.5,67.5 + parent: 2 + - uid: 11584 + components: + - type: Transform + pos: 53.5,66.5 + parent: 2 + - uid: 11585 + components: + - type: Transform + pos: 52.5,68.5 + parent: 2 + - uid: 11586 + components: + - type: Transform + pos: 51.5,68.5 + parent: 2 + - uid: 11587 + components: + - type: Transform + pos: -2.5,-7.5 + parent: 2 + - uid: 11588 + components: + - type: Transform + pos: -3.5,-7.5 + parent: 2 + - uid: 11589 + components: + - type: Transform + pos: -4.5,-7.5 + parent: 2 + - uid: 11590 + components: + - type: Transform + pos: -4.5,-8.5 + parent: 2 + - uid: 11591 + components: + - type: Transform + pos: -3.5,-6.5 + parent: 2 + - uid: 11592 + components: + - type: Transform + pos: -3.5,-5.5 + parent: 2 + - uid: 11593 + components: + - type: Transform + pos: -4.5,-5.5 + parent: 2 + - uid: 11594 + components: + - type: Transform + pos: -4.5,-4.5 + parent: 2 + - uid: 11595 + components: + - type: Transform + pos: -4.5,-3.5 + parent: 2 + - uid: 11596 + components: + - type: Transform + pos: -2.5,-12.5 + parent: 2 + - uid: 11597 + components: + - type: Transform + pos: -2.5,-13.5 + parent: 2 + - uid: 11598 + components: + - type: Transform + pos: -4.5,-12.5 + parent: 2 + - uid: 11599 + components: + - type: Transform + pos: -4.5,-13.5 + parent: 2 + - uid: 11600 + components: + - type: Transform + pos: -3.5,-13.5 + parent: 2 + - uid: 11601 + components: + - type: Transform + pos: -3.5,-14.5 + parent: 2 + - uid: 11602 + components: + - type: Transform + pos: -2.5,-16.5 + parent: 2 + - uid: 11603 + components: + - type: Transform + pos: -2.5,-17.5 + parent: 2 + - uid: 11604 + components: + - type: Transform + pos: -4.5,-16.5 + parent: 2 + - uid: 11605 + components: + - type: Transform + pos: -4.5,-17.5 + parent: 2 +- proto: CableHVStack + entities: + - uid: 1329 + components: + - type: Transform + pos: 11.5,34.5 + parent: 2 + - uid: 1360 + components: + - type: Transform + pos: 38.5,31.5 + parent: 2 + - uid: 1712 + components: + - type: Transform + pos: 38.5,31.5 + parent: 2 + - uid: 7602 + components: + - type: Transform + pos: 33.5,-7.5 + parent: 2 + - uid: 7656 + components: + - type: Transform + pos: 33.5,-7.5 + parent: 2 - proto: CableHVStack10 entities: - uid: 6124 @@ -18946,6 +19197,33 @@ entities: - type: Transform pos: 31.5,24.5 parent: 2 +- proto: CableMVStack + entities: + - uid: 139 + components: + - type: Transform + pos: 11.5,34.5 + parent: 2 + - uid: 328 + components: + - type: Transform + pos: 38.5,30.5 + parent: 2 + - uid: 329 + components: + - type: Transform + pos: 38.5,30.5 + parent: 2 + - uid: 7750 + components: + - type: Transform + pos: 33.5,-7.5 + parent: 2 + - uid: 7751 + components: + - type: Transform + pos: 33.5,-7.5 + parent: 2 - proto: CableMVStack10 entities: - uid: 4505 @@ -21921,6 +22199,28 @@ entities: - type: Transform pos: 27.5,33.5 parent: 2 +- proto: ClothingShoesBootsMagSci + entities: + - uid: 7393 + components: + - type: Transform + pos: 51.5,41.5 + parent: 2 + - uid: 7394 + components: + - type: Transform + pos: 52.5,41.5 + parent: 2 + - uid: 7396 + components: + - type: Transform + pos: 53.5,41.5 + parent: 2 + - uid: 7397 + components: + - type: Transform + pos: 54.5,41.5 + parent: 2 - proto: ClothingShoesClown entities: - uid: 2261 @@ -22460,6 +22760,15 @@ entities: rot: 3.141592653589793 rad pos: 37.5,-2.5 parent: 2 + - uid: 8306 + components: + - type: MetaData + desc: Used to pilot the prison shuttle. + name: prison shuttle console + - type: Transform + rot: 3.141592653589793 rad + pos: 23.5,-69.5 + parent: 3564 - proto: ComputerSolarControl entities: - uid: 2495 @@ -22565,8 +22874,8 @@ entities: restitution: 0 friction: 0.4 - type: EntityStorage - open: True removedMasks: 20 + open: True - type: PlaceableSurface isPlaceable: True - uid: 3108 @@ -26952,6 +27261,23 @@ entities: rot: 1.5707963267948966 rad pos: 7.5,15.5 parent: 2 + - uid: 7257 + components: + - type: Transform + pos: 13.5,41.5 + parent: 2 + - uid: 7258 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 18.5,30.5 + parent: 2 + - uid: 7259 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 17.5,30.5 + parent: 2 - uid: 7416 components: - type: Transform @@ -34868,6 +35194,12 @@ entities: rot: 1.5707963267948966 rad pos: 8.5,15.5 parent: 2 + - uid: 7260 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 18.5,31.5 + parent: 2 - uid: 7652 components: - type: Transform @@ -41132,6 +41464,14 @@ entities: color: '#990000FF' - proto: GasPressureRegulator entities: + - uid: 2557 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 19.5,36.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' - uid: 11563 components: - type: Transform @@ -41209,16 +41549,6 @@ entities: rot: 1.5707963267948966 rad pos: 26.5,29.5 parent: 2 - - uid: 2759 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 19.5,36.5 - parent: 2 - - type: GasValve - open: False - - type: AtmosPipeColor - color: '#990000FF' - uid: 2768 components: - type: Transform @@ -48847,19 +49177,17 @@ entities: pos: 37.5,-30.5 parent: 3564 - proto: HandheldHealthAnalyzer - entities: - - uid: 10341 - components: - - type: Transform - pos: 28.5,-16.5 - parent: 3564 -- proto: HandheldHealthAnalyzerUnpowered entities: - uid: 7446 components: - type: Transform pos: 15.5,15.5 parent: 2 + - uid: 10341 + components: + - type: Transform + pos: 28.5,-16.5 + parent: 3564 - proto: HandLabeler entities: - uid: 60 @@ -48867,6 +49195,11 @@ entities: - type: Transform pos: 29.5,8.5 parent: 2 + - uid: 7419 + components: + - type: Transform + pos: 30.5,8.5 + parent: 2 - proto: HandTeleporter entities: - uid: 11347 @@ -48954,14 +49287,6 @@ entities: rot: 3.141592653589793 rad pos: 13.5,43.5 parent: 2 - - uid: 1418 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 13.5,41.5 - parent: 2 - - type: AtmosPipeColor - color: '#03FCD3FF' - uid: 1437 components: - type: Transform @@ -48982,12 +49307,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#947507FF' - - uid: 7572 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 17.5,30.5 - parent: 2 - uid: 7591 components: - type: Transform @@ -49006,20 +49325,6 @@ entities: rot: 3.141592653589793 rad pos: 18.5,29.5 parent: 2 - - uid: 7598 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 18.5,30.5 - parent: 2 - - uid: 7602 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 18.5,31.5 - parent: 2 - - type: AtmosPipeColor - color: '#947507FF' - uid: 7603 components: - type: Transform @@ -49166,13 +49471,6 @@ entities: rot: 3.141592653589793 rad pos: 10.5,41.5 parent: 2 - - uid: 214 - components: - - type: Transform - pos: 12.5,41.5 - parent: 2 - - type: AtmosPipeColor - color: '#03FCD3FF' - uid: 800 components: - type: Transform @@ -49253,6 +49551,12 @@ entities: - type: Transform pos: 12.5,47.5 parent: 2 + - uid: 7261 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 12.5,41.5 + parent: 2 - uid: 7487 components: - type: Transform @@ -51214,7 +51518,7 @@ entities: - type: MetaData name: paper- 'Generator Startup Procedure' - type: Transform - pos: 12.5,34.5 + pos: 15.5,35.5 parent: 2 - type: Paper content: >- @@ -51482,39 +51786,76 @@ entities: - type: Transform pos: 17.5,-23.5 parent: 3564 -- proto: PartRodMetal1 +- proto: PartRodMetal entities: - - uid: 7269 + - uid: 892 components: - type: Transform - pos: 17.346018,50.513405 + pos: 12.5,34.5 parent: 2 - - uid: 7270 + - uid: 7262 components: - type: Transform - pos: 17.556955,50.513405 + pos: 38.5,31.5 parent: 2 -- proto: PartRodMetal10 - entities: - - uid: 1510 + - uid: 7263 components: - type: Transform - pos: 51.5,21.5 + pos: 38.5,31.5 parent: 2 - - uid: 1635 + - uid: 7264 components: - type: Transform pos: 38.5,31.5 parent: 2 - - uid: 1712 + - uid: 7410 components: - type: Transform - pos: 38.5,31.5 + pos: 34.5,24.5 parent: 2 - - uid: 2870 + - uid: 7584 components: - type: Transform - pos: 38.5,31.5 + pos: 32.5,-7.5 + parent: 2 + - uid: 7585 + components: + - type: Transform + pos: 32.5,-7.5 + parent: 2 + - uid: 8216 + components: + - type: Transform + pos: 53.5,9.5 + parent: 2 + - uid: 8217 + components: + - type: Transform + pos: 53.5,9.5 + parent: 2 + - uid: 8237 + components: + - type: Transform + pos: 53.5,9.5 + parent: 2 +- proto: PartRodMetal1 + entities: + - uid: 7269 + components: + - type: Transform + pos: 17.346018,50.513405 + parent: 2 + - uid: 7270 + components: + - type: Transform + pos: 17.556955,50.513405 + parent: 2 +- proto: PartRodMetal10 + entities: + - uid: 1510 + components: + - type: Transform + pos: 51.5,21.5 parent: 2 - uid: 7713 components: @@ -51891,46 +52232,126 @@ entities: parent: 2 - proto: PlasmaReinforcedWindowDirectional entities: + - uid: 2759 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 54.5,33.5 + parent: 2 + - uid: 3292 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 54.5,28.5 + parent: 2 + - uid: 3811 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 54.5,32.5 + parent: 2 + - uid: 3813 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 54.5,29.5 + parent: 2 + - uid: 4335 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 54.5,30.5 + parent: 2 - uid: 4684 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,28.5 parent: 2 - - type: DeltaPressure - gridUid: 2 + - uid: 6623 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 54.5,34.5 + parent: 2 - uid: 6839 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,27.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 7168 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,29.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 7182 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,30.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 7195 components: - type: Transform rot: 3.141592653589793 rad pos: 26.5,30.5 parent: 2 - - type: DeltaPressure - gridUid: 2 + - uid: 7265 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 49.5,9.5 + parent: 2 + - uid: 7324 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 22.5,16.5 + parent: 2 + - uid: 7356 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 18.5,41.5 + parent: 2 + - uid: 7358 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 38.5,-0.5 + parent: 2 + - uid: 7380 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 37.5,1.5 + parent: 2 + - uid: 7381 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 37.5,2.5 + parent: 2 + - uid: 7388 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 40.5,-0.5 + parent: 2 + - uid: 7390 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 39.5,-0.5 + parent: 2 + - uid: 7391 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 49.5,9.5 + parent: 2 - proto: PlayerStationAi entities: - uid: 4561 @@ -54159,24 +54580,6 @@ entities: rot: 3.141592653589793 rad pos: 52.5,-0.5 parent: 2 - - uid: 327 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 23.5,23.5 - parent: 2 - - uid: 328 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 40.5,58.5 - parent: 2 - - uid: 329 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 17.5,-45.5 - parent: 3564 - proto: RandomEngineerCorpseSpawner entities: - uid: 7286 @@ -54297,295 +54700,211 @@ entities: - type: Transform pos: 23.5,-6.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 150 components: - type: Transform pos: 24.5,-5.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 165 components: - type: Transform pos: 24.5,-6.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 176 components: - type: Transform pos: 22.5,-3.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 186 components: - type: Transform pos: 23.5,-3.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 551 components: - type: Transform pos: 24.5,-0.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 553 components: - type: Transform pos: 26.5,-0.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 554 components: - type: Transform pos: 28.5,-1.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 626 components: - type: Transform pos: 24.5,-1.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 629 components: - type: Transform pos: 27.5,-1.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 675 components: - type: Transform pos: 24.5,0.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 699 components: - type: Transform pos: 23.5,-1.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 710 components: - type: Transform pos: 22.5,-1.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 726 components: - type: Transform pos: 26.5,-1.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 761 components: - type: Transform pos: 26.5,0.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 766 components: - type: Transform pos: 24.5,-3.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 903 components: - type: Transform pos: 22.5,32.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 913 components: - type: Transform pos: 19.5,32.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 914 components: - type: Transform pos: 25.5,32.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 963 components: - type: Transform pos: 24.5,32.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1465 components: - type: Transform pos: 20.5,32.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1731 components: - type: Transform pos: 22.5,-6.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2899 components: - type: Transform pos: 24.5,-4.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 4014 components: - type: Transform pos: 27.5,-11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 4057 components: - type: Transform pos: 29.5,-11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 4058 components: - type: Transform pos: 28.5,-11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 4664 components: - type: Transform pos: 18.5,32.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 4665 components: - type: Transform pos: 23.5,32.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 4682 components: - type: Transform pos: 17.5,32.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 9661 components: - type: Transform pos: 14.5,-57.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9662 components: - type: Transform pos: 14.5,-58.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9663 components: - type: Transform pos: 14.5,-59.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9664 components: - type: Transform pos: 13.5,-59.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9665 components: - type: Transform pos: 12.5,-59.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9666 components: - type: Transform pos: 12.5,-58.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9667 components: - type: Transform pos: 12.5,-57.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9668 components: - type: Transform pos: 11.5,-59.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9676 components: - type: Transform pos: 15.5,-62.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9677 components: - type: Transform pos: 16.5,-62.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9678 components: - type: Transform pos: 17.5,-62.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9679 components: - type: Transform pos: 14.5,-63.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9680 components: - type: Transform pos: 14.5,-62.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - proto: ReinforcedWindow entities: - uid: 9 @@ -54593,1747 +54912,1265 @@ entities: - type: Transform pos: -0.5,-2.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 10 components: - type: Transform pos: -0.5,-0.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 11 components: - type: Transform pos: 2.5,1.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 12 components: - type: Transform pos: 0.5,1.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 13 components: - type: Transform pos: 1.5,1.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 14 components: - type: Transform pos: 0.5,-4.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 15 components: - type: Transform pos: 1.5,-4.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 16 components: - type: Transform pos: 2.5,-4.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 126 components: - type: Transform pos: 20.5,3.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 127 components: - type: Transform pos: 18.5,3.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 128 components: - type: Transform pos: 16.5,3.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 129 components: - type: Transform pos: 17.5,3.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 130 components: - type: Transform pos: 15.5,3.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 144 components: - type: Transform pos: 17.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 145 components: - type: Transform pos: 16.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 191 components: - type: Transform pos: 19.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 196 components: - type: Transform pos: 18.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 198 components: - type: Transform pos: 7.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 199 components: - type: Transform pos: 41.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 200 components: - type: Transform pos: 42.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 201 components: - type: Transform pos: 40.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 202 components: - type: Transform pos: 11.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 228 components: - type: Transform pos: 15.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 232 components: - type: Transform pos: 43.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 237 components: - type: Transform pos: 12.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 238 components: - type: Transform pos: 10.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 261 components: - type: Transform pos: 39.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 273 components: - type: Transform pos: -7.5,10.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 274 components: - type: Transform pos: -7.5,11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 279 components: - type: Transform pos: -7.5,9.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 280 components: - type: Transform pos: -7.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 281 components: - type: Transform pos: -7.5,14.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 282 components: - type: Transform pos: -7.5,15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 312 components: - type: Transform pos: 13.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 360 components: - type: Transform pos: 9.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 371 components: - type: Transform pos: 6.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 372 components: - type: Transform pos: 5.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 373 components: - type: Transform pos: 4.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 405 components: - type: Transform pos: 0.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 406 components: - type: Transform pos: 1.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 407 components: - type: Transform pos: -0.5,-14.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 408 components: - type: Transform pos: -0.5,-13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 409 components: - type: Transform pos: -0.5,-12.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 411 components: - type: Transform pos: -0.5,-9.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 412 components: - type: Transform pos: -0.5,-8.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 413 components: - type: Transform pos: -0.5,-7.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 414 components: - type: Transform pos: 0.5,-6.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 415 components: - type: Transform pos: 1.5,-6.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 416 components: - type: Transform pos: 2.5,-6.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 468 components: - type: Transform pos: 2.5,36.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 562 components: - type: Transform pos: 51.5,18.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 568 components: - type: Transform pos: 7.5,33.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 647 components: - type: Transform pos: 21.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 713 components: - type: Transform pos: 8.5,33.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 714 components: - type: Transform pos: 12.5,40.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 736 components: - type: Transform pos: -0.5,-11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 740 components: - type: Transform pos: 8.5,35.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 870 components: - type: Transform pos: 46.5,42.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 882 components: - type: Transform pos: 45.5,42.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 967 components: - type: Transform pos: 47.5,42.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1083 components: - type: Transform pos: 21.5,14.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1088 components: - type: Transform pos: 21.5,15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1118 components: - type: Transform pos: 33.5,-13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1119 components: - type: Transform pos: 33.5,-11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1120 components: - type: Transform pos: 43.5,-18.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1121 components: - type: Transform pos: 44.5,-18.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1122 components: - type: Transform pos: 45.5,-18.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1123 components: - type: Transform pos: 46.5,-18.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1124 components: - type: Transform pos: 47.5,-18.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1125 components: - type: Transform pos: 48.5,-18.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1126 components: - type: Transform pos: 50.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1127 components: - type: Transform pos: 50.5,-14.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1128 components: - type: Transform pos: 50.5,-13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1149 components: - type: Transform pos: 37.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1150 components: - type: Transform pos: 36.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1151 components: - type: Transform pos: 34.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1152 components: - type: Transform pos: 35.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1153 components: - type: Transform pos: 33.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1154 components: - type: Transform pos: 31.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1155 components: - type: Transform pos: 30.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1156 components: - type: Transform pos: 29.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1157 components: - type: Transform pos: 28.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1158 components: - type: Transform pos: 27.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1159 components: - type: Transform pos: 25.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1160 components: - type: Transform pos: 24.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1161 components: - type: Transform pos: 23.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1162 components: - type: Transform pos: 22.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1163 components: - type: Transform pos: 21.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1251 components: - type: Transform pos: 51.5,2.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1252 components: - type: Transform pos: 52.5,2.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1253 components: - type: Transform pos: 53.5,2.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1255 components: - type: Transform pos: 54.5,2.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1271 components: - type: Transform pos: 31.5,7.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1272 components: - type: Transform pos: 33.5,7.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1295 components: - type: Transform pos: 7.5,35.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1296 components: - type: Transform pos: 3.5,36.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1387 components: - type: Transform pos: 41.5,-1.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1412 components: - type: Transform pos: 41.5,0.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1814 components: - type: Transform pos: 64.5,-2.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1818 components: - type: Transform pos: 62.5,-2.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1819 components: - type: Transform pos: 56.5,-2.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1824 components: - type: Transform pos: 59.5,-2.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1825 components: - type: Transform pos: 60.5,-2.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1826 components: - type: Transform pos: 66.5,-2.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1827 components: - type: Transform pos: 58.5,-12.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1830 components: - type: Transform pos: 58.5,-4.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1837 components: - type: Transform pos: 56.5,-3.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1844 components: - type: Transform pos: 56.5,-12.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1849 components: - type: Transform pos: 58.5,-14.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1850 components: - type: Transform pos: 55.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1855 components: - type: Transform pos: 65.5,-2.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1856 components: - type: Transform pos: 61.5,-2.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1857 components: - type: Transform pos: 58.5,-2.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1861 components: - type: Transform pos: 58.5,-3.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1862 components: - type: Transform pos: 56.5,-4.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1873 components: - type: Transform pos: 56.5,-13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1876 components: - type: Transform pos: 58.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1877 components: - type: Transform pos: 56.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1878 components: - type: Transform pos: 58.5,-13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1880 components: - type: Transform pos: 56.5,-14.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1882 components: - type: Transform pos: 58.5,-16.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1901 components: - type: Transform pos: 13.5,40.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1933 components: - type: Transform pos: 51.5,38.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1970 components: - type: Transform pos: 52.5,38.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1976 components: - type: Transform pos: 50.5,38.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2069 components: - type: Transform pos: 49.5,38.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2083 components: - type: Transform pos: 63.5,-2.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2100 components: - type: Transform pos: 49.5,-17.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2106 components: - type: Transform pos: 51.5,-17.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2127 components: - type: Transform pos: 53.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2130 components: - type: Transform pos: 44.5,26.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2139 components: - type: Transform pos: 9.5,17.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2140 components: - type: Transform pos: 10.5,17.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2142 components: - type: Transform pos: 8.5,17.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2143 components: - type: Transform pos: 7.5,17.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2146 components: - type: Transform pos: 6.5,39.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2147 components: - type: Transform pos: 7.5,39.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2148 components: - type: Transform pos: 8.5,39.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2149 components: - type: Transform pos: 0.5,31.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2150 components: - type: Transform pos: 5.5,30.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2151 components: - type: Transform pos: 54.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2152 components: - type: Transform pos: 4.5,30.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2153 components: - type: Transform pos: 3.5,30.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2174 components: - type: Transform pos: 52.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2175 components: - type: Transform pos: 51.5,-15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2353 components: - type: Transform pos: 64.5,34.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2354 components: - type: Transform pos: 64.5,33.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2355 components: - type: Transform pos: 64.5,32.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2356 components: - type: Transform pos: 64.5,31.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2357 components: - type: Transform pos: 64.5,30.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2358 components: - type: Transform pos: 64.5,29.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2359 components: - type: Transform pos: 64.5,28.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2463 components: - type: Transform pos: 64.5,35.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2590 components: - type: Transform pos: 62.5,58.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2595 components: - type: Transform pos: 60.5,63.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2596 components: - type: Transform pos: 59.5,63.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2597 components: - type: Transform pos: 57.5,63.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2598 components: - type: Transform pos: 56.5,63.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2756 components: - type: Transform pos: -0.5,36.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 3245 components: - type: Transform pos: 58.5,-18.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 3247 components: - type: Transform pos: 58.5,-19.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 3248 components: - type: Transform pos: 58.5,-20.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 3249 components: - type: Transform pos: 56.5,-18.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 3250 components: - type: Transform pos: 56.5,-19.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 3259 components: - type: Transform pos: 56.5,-20.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 3567 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,-39.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 3568 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,-40.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 3569 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,-42.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 3570 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,-43.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 3571 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,-44.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 3572 components: - type: Transform rot: 3.141592653589793 rad pos: 6.5,-45.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 4494 components: - type: Transform pos: 55.5,61.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 4685 components: - type: Transform pos: 25.5,25.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 4686 components: - type: Transform pos: 25.5,24.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 4697 components: - type: Transform pos: 25.5,23.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 6011 components: - type: Transform pos: 54.5,-17.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 6012 components: - type: Transform pos: 55.5,-17.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 6013 components: - type: Transform pos: 56.5,-17.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 6015 components: - type: Transform pos: 58.5,-17.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 6025 components: - type: Transform pos: 53.5,-17.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 6345 components: - type: Transform pos: 46.5,34.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 7192 components: - type: Transform pos: 25.5,22.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 7702 components: - type: Transform pos: 47.5,26.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 8318 components: - type: Transform pos: 46.5,26.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 8320 components: - type: Transform pos: 45.5,26.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 8393 components: - type: Transform pos: 47.5,34.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 8394 components: - type: Transform pos: 44.5,32.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 9452 components: - type: Transform rot: 3.141592653589793 rad pos: 7.5,-46.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9453 components: - type: Transform rot: 3.141592653589793 rad pos: 10.5,-46.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9712 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-60.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9734 components: - type: Transform rot: -1.5707963267948966 rad pos: 31.5,-18.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9735 components: - type: Transform rot: -1.5707963267948966 rad pos: 22.5,-24.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9736 components: - type: Transform rot: -1.5707963267948966 rad pos: 25.5,-24.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9737 components: - type: Transform rot: -1.5707963267948966 rad pos: 20.5,-25.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9738 components: - type: Transform rot: -1.5707963267948966 rad pos: 21.5,-24.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9739 components: - type: Transform rot: -1.5707963267948966 rad pos: 20.5,-24.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9740 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-29.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9741 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-32.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9742 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-33.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9743 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-27.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9744 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-30.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9745 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-26.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9746 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-25.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9747 components: - type: Transform rot: -1.5707963267948966 rad pos: 20.5,-30.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9748 components: - type: Transform rot: -1.5707963267948966 rad pos: 20.5,-29.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9749 components: - type: Transform rot: -1.5707963267948966 rad pos: 20.5,-28.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9750 components: - type: Transform rot: -1.5707963267948966 rad pos: 19.5,-33.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9751 components: - type: Transform rot: -1.5707963267948966 rad pos: 19.5,-34.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9752 components: - type: Transform rot: -1.5707963267948966 rad pos: 19.5,-36.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9753 components: - type: Transform rot: -1.5707963267948966 rad pos: 19.5,-37.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9754 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-36.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9755 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-37.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9758 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-40.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9759 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-41.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9760 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-44.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9761 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-45.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9762 components: - type: Transform rot: -1.5707963267948966 rad pos: 19.5,-44.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9763 components: - type: Transform rot: -1.5707963267948966 rad pos: 19.5,-45.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9764 components: - type: Transform rot: -1.5707963267948966 rad pos: 19.5,-48.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9765 components: - type: Transform rot: -1.5707963267948966 rad pos: 19.5,-49.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9766 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-48.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9767 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-49.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9768 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-52.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9769 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-53.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9770 components: - type: Transform rot: -1.5707963267948966 rad pos: 19.5,-52.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9771 components: - type: Transform rot: -1.5707963267948966 rad pos: 19.5,-53.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9772 components: - type: Transform rot: -1.5707963267948966 rad pos: 24.5,-56.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9773 components: - type: Transform rot: -1.5707963267948966 rad pos: 25.5,-56.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9774 components: - type: Transform rot: -1.5707963267948966 rad pos: 21.5,-56.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9775 components: - type: Transform rot: -1.5707963267948966 rad pos: 20.5,-56.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9776 components: - type: Transform rot: -1.5707963267948966 rad pos: 20.5,-62.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9777 components: - type: Transform rot: -1.5707963267948966 rad pos: 21.5,-62.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9778 components: - type: Transform rot: -1.5707963267948966 rad pos: 25.5,-62.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9779 components: - type: Transform rot: -1.5707963267948966 rad pos: 24.5,-62.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9780 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-63.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9781 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-64.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9782 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-65.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9783 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-67.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9784 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-68.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 9785 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-69.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 11559 components: - type: Transform pos: 23.5,26.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - proto: RemoteSignaller entities: - uid: 421 @@ -56578,43 +56415,73 @@ entities: parent: 3564 - proto: SheetGlass entities: + - uid: 860 + components: + - type: Transform + pos: 12.5,34.5 + parent: 2 - uid: 7184 components: - type: Transform pos: 20.5,-5.5 parent: 2 -- proto: SheetGlass10 - entities: - - uid: 1766 + - uid: 7268 components: - type: Transform pos: 38.5,31.5 parent: 2 - - uid: 1792 + - uid: 7290 components: - type: Transform pos: 38.5,31.5 parent: 2 - - uid: 1884 + - uid: 7291 components: - type: Transform pos: 38.5,31.5 parent: 2 - - uid: 7693 + - uid: 7408 components: - type: Transform - pos: 44.5,19.5 + pos: 34.5,24.5 parent: 2 - - uid: 7694 + - uid: 7586 components: - type: Transform - pos: 45.5,19.5 + pos: 32.5,-7.5 parent: 2 - - uid: 7816 + - uid: 7598 + components: + - type: Transform + pos: 32.5,-7.5 + parent: 2 + - uid: 7824 + components: + - type: Transform + pos: 53.5,9.5 + parent: 2 + - uid: 8214 + components: + - type: Transform + pos: 53.5,9.5 + parent: 2 + - uid: 8215 components: - type: Transform pos: 53.5,9.5 parent: 2 +- proto: SheetGlass10 + entities: + - uid: 7693 + components: + - type: Transform + pos: 44.5,19.5 + parent: 2 + - uid: 7694 + components: + - type: Transform + pos: 45.5,19.5 + parent: 2 - uid: 10527 components: - type: Transform @@ -56645,50 +56512,124 @@ entities: - type: Transform pos: 35.5,-26.5 parent: 3564 -- proto: SheetPlasma10 +- proto: SheetPlasma entities: - - uid: 1363 + - uid: 1353 + components: + - type: Transform + pos: 38.5,29.5 + parent: 2 + - uid: 1635 + components: + - type: Transform + pos: 38.5,29.5 + parent: 2 + - uid: 7293 components: - type: Transform pos: 29.5,8.5 parent: 2 - - uid: 1542 + - uid: 7295 components: - type: Transform - pos: 51.5,19.5 + pos: 38.5,29.5 parent: 2 - - uid: 3743 + - uid: 7407 components: - type: Transform - pos: 52.5,19.5 + pos: 12.5,34.5 + parent: 2 + - uid: 7572 + components: + - type: Transform + pos: 32.5,-7.5 + parent: 2 + - uid: 7583 + components: + - type: Transform + pos: 32.5,-7.5 + parent: 2 + - uid: 7816 + components: + - type: Transform + pos: 53.5,9.5 parent: 2 - uid: 7819 components: - type: Transform pos: 53.5,9.5 parent: 2 - - uid: 8470 + - uid: 7820 components: - type: Transform - pos: 38.5,29.5 + pos: 53.5,9.5 parent: 2 -- proto: SheetPlasteel10 +- proto: SheetPlasma10 entities: - - uid: 1774 + - uid: 1542 + components: + - type: Transform + pos: 51.5,19.5 + parent: 2 + - uid: 3743 + components: + - type: Transform + pos: 52.5,19.5 + parent: 2 +- proto: SheetPlasteel + entities: + - uid: 1322 + components: + - type: Transform + pos: 12.5,34.5 + parent: 2 + - uid: 7296 components: - type: Transform pos: 38.5,30.5 parent: 2 - - uid: 1783 + - uid: 7297 components: - type: Transform pos: 38.5,30.5 parent: 2 - - uid: 1788 + - uid: 7313 components: - type: Transform pos: 38.5,30.5 parent: 2 + - uid: 7318 + components: + - type: Transform + pos: 53.5,9.5 + parent: 2 + - uid: 7418 + components: + - type: Transform + pos: 34.5,23.5 + parent: 2 + - uid: 7545 + components: + - type: Transform + pos: 32.5,-7.5 + parent: 2 + - uid: 7546 + components: + - type: Transform + pos: 32.5,-7.5 + parent: 2 + - uid: 7783 + components: + - type: Transform + pos: 53.5,9.5 + parent: 2 + - uid: 7786 + components: + - type: Transform + pos: 53.5,9.5 + parent: 2 +- proto: SheetPlasteel10 + entities: - uid: 7691 components: - type: Transform @@ -56714,6 +56655,23 @@ entities: - type: Transform pos: 36.5,-25.5 parent: 3564 +- proto: SheetPlastic + entities: + - uid: 7790 + components: + - type: Transform + pos: 53.5,9.5 + parent: 2 + - uid: 7792 + components: + - type: Transform + pos: 53.5,9.5 + parent: 2 + - uid: 7793 + components: + - type: Transform + pos: 53.5,9.5 + parent: 2 - proto: SheetPlastic10 entities: - uid: 5346 @@ -56731,11 +56689,58 @@ entities: - type: Transform pos: 47.5,19.5 parent: 2 - - uid: 7820 +- proto: SheetSteel + entities: + - uid: 1101 + components: + - type: Transform + pos: 12.5,34.5 + parent: 2 + - uid: 7292 + components: + - type: Transform + pos: 53.5,9.5 + parent: 2 + - uid: 7294 + components: + - type: Transform + pos: 53.5,9.5 + parent: 2 + - uid: 7314 components: - type: Transform pos: 53.5,9.5 parent: 2 + - uid: 7315 + components: + - type: Transform + pos: 38.5,29.5 + parent: 2 + - uid: 7316 + components: + - type: Transform + pos: 38.5,29.5 + parent: 2 + - uid: 7317 + components: + - type: Transform + pos: 38.5,29.5 + parent: 2 + - uid: 7415 + components: + - type: Transform + pos: 34.5,23.5 + parent: 2 + - uid: 7421 + components: + - type: Transform + pos: 32.5,-7.5 + parent: 2 + - uid: 7422 + components: + - type: Transform + pos: 32.5,-7.5 + parent: 2 - proto: SheetSteel1 entities: - uid: 8 @@ -56755,11 +56760,6 @@ entities: parent: 2 - proto: SheetSteel10 entities: - - uid: 860 - components: - - type: Transform - pos: 38.5,29.5 - parent: 2 - uid: 1552 components: - type: Transform @@ -56770,16 +56770,6 @@ entities: - type: Transform pos: 48.5,19.5 parent: 2 - - uid: 1775 - components: - - type: Transform - pos: 38.5,29.5 - parent: 2 - - uid: 3239 - components: - - type: Transform - pos: 38.5,29.5 - parent: 2 - uid: 3744 components: - type: Transform @@ -56860,11 +56850,6 @@ entities: - type: Transform pos: 52.5,19.5 parent: 2 - - uid: 11214 - components: - - type: Transform - pos: 53.5,9.5 - parent: 2 - proto: ShuttleConsoleCircuitboard entities: - uid: 5972 @@ -56895,6 +56880,13 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 11606 + components: + - type: Transform + pos: 35.5,53.5 + parent: 2 + - type: Fixtures + fixtures: {} - proto: SignAiUpload entities: - uid: 4663 @@ -59259,6 +59251,16 @@ entities: - Toggle - type: Fixtures fixtures: {} +- proto: SignArrivals + entities: + - uid: 7198 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 62.5,47.5 + parent: 2 + - type: Fixtures + fixtures: {} - proto: SignAtmos entities: - uid: 3301 @@ -59484,6 +59486,16 @@ entities: parent: 2 - type: Fixtures fixtures: {} +- proto: SignEngine + entities: + - uid: 7319 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 40.5,35.5 + parent: 2 + - type: Fixtures + fixtures: {} - proto: SignEngineering entities: - uid: 8279 @@ -59503,6 +59515,16 @@ entities: parent: 2 - type: Fixtures fixtures: {} +- proto: SignGravity + entities: + - uid: 7266 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 40.5,33.5 + parent: 2 + - type: Fixtures + fixtures: {} - proto: SignInterrogation entities: - uid: 10323 @@ -59643,6 +59665,16 @@ entities: parent: 2 - type: Fixtures fixtures: {} +- proto: SignSpace + entities: + - uid: 11607 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 35.5,55.5 + parent: 2 + - type: Fixtures + fixtures: {} - proto: SignTelecomms entities: - uid: 2480 @@ -60850,6 +60882,11 @@ entities: - type: Transform pos: 29.5,-52.5 parent: 3564 + - uid: 7323 + components: + - type: Transform + pos: 21.5,52.5 + parent: 2 - proto: SpawnMobMonkeyPunpun entities: - uid: 711 @@ -60912,27 +60949,6 @@ entities: - type: Transform pos: 36.5,1.5 parent: 2 -- proto: SpawnPointGhostDerelictEngineeringCyborg - entities: - - uid: 139 - components: - - type: Transform - pos: 17.5,55.5 - parent: 2 -- proto: SpawnPointGhostDerelictJanitorCyborg - entities: - - uid: 1368 - components: - - type: Transform - pos: -4.5,5.5 - parent: 2 -- proto: SpawnPointGhostDerelictSyndicateAssaultCyborg - entities: - - uid: 5211 - components: - - type: Transform - pos: 10.5,-37.5 - parent: 3564 - proto: SpawnPointHeadOfPersonnel entities: - uid: 2532 @@ -60952,6 +60968,13 @@ entities: - type: Transform pos: 34.5,-0.5 parent: 2 +- proto: SpawnPointHeadOfSecurityWeapon + entities: + - uid: 8298 + components: + - type: Transform + pos: 33.5,-64.5 + parent: 3564 - proto: SpawnPointLatejoin entities: - uid: 2512 @@ -61137,6 +61160,13 @@ entities: - type: Transform pos: 28.5,-66.5 parent: 3564 +- proto: SpawnPointWardenWeapon + entities: + - uid: 8297 + components: + - type: Transform + pos: 32.5,-66.5 + parent: 3564 - proto: StasisBed entities: - uid: 470 @@ -61192,6 +61222,56 @@ entities: parent: 2 - proto: StationMap entities: + - uid: 1363 + components: + - type: Transform + pos: 39.5,24.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1368 + components: + - type: Transform + pos: 45.5,10.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1418 + components: + - type: Transform + pos: 11.5,1.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1766 + components: + - type: Transform + pos: 47.5,18.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1774 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 43.5,-17.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1775 + components: + - type: Transform + pos: 36.5,12.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 2035 + components: + - type: Transform + pos: 21.5,5.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 11522 components: - type: Transform @@ -73308,6 +73388,11 @@ entities: - type: Transform pos: 33.5,-10.5 parent: 2 + - uid: 7420 + components: + - type: Transform + pos: 32.5,10.5 + parent: 2 - uid: 7672 components: - type: Transform @@ -73331,566 +73416,418 @@ entities: rot: 1.5707963267948966 rad pos: 14.5,-3.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 44 components: - type: Transform pos: 19.5,3.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 57 components: - type: Transform rot: 1.5707963267948966 rad pos: 21.5,4.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 59 components: - type: Transform rot: 1.5707963267948966 rad pos: 40.5,23.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 80 components: - type: Transform rot: 1.5707963267948966 rad pos: 3.5,-2.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 84 components: - type: Transform rot: 1.5707963267948966 rad pos: 3.5,-1.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 123 components: - type: Transform pos: 50.5,35.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 147 components: - type: Transform pos: 43.5,18.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 167 components: - type: Transform pos: 5.5,-4.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 257 components: - type: Transform rot: 1.5707963267948966 rad pos: 40.5,8.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 266 components: - type: Transform pos: 44.5,14.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 467 components: - type: Transform pos: 18.5,8.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 493 components: - type: Transform pos: 27.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 505 components: - type: Transform pos: 28.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 513 components: - type: Transform rot: 1.5707963267948966 rad pos: 11.5,12.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 697 components: - type: Transform rot: 1.5707963267948966 rad pos: 14.5,5.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 792 components: - type: Transform pos: 38.5,4.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 956 components: - type: Transform pos: 32.5,7.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1167 components: - type: Transform pos: 17.5,8.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1291 components: - type: Transform rot: 1.5707963267948966 rad pos: 12.5,26.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1294 components: - type: Transform rot: 1.5707963267948966 rad pos: 12.5,20.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1370 components: - type: Transform rot: 1.5707963267948966 rad pos: 36.5,-9.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1396 components: - type: Transform pos: 61.5,42.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1692 components: - type: Transform rot: 1.5707963267948966 rad pos: 15.5,23.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1807 components: - type: Transform rot: 1.5707963267948966 rad pos: 12.5,22.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1922 components: - type: Transform rot: 1.5707963267948966 rad pos: 12.5,24.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1945 components: - type: Transform rot: 1.5707963267948966 rad pos: 64.5,1.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2045 components: - type: Transform rot: 3.141592653589793 rad pos: 57.5,11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2046 components: - type: Transform rot: 3.141592653589793 rad pos: 58.5,11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2132 components: - type: Transform pos: 37.5,32.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2380 components: - type: Transform pos: 50.5,32.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2959 components: - type: Transform pos: 58.5,3.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2960 components: - type: Transform rot: 1.5707963267948966 rad pos: 64.5,1.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2966 components: - type: Transform rot: 1.5707963267948966 rad pos: 40.5,16.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 3171 components: - type: Transform pos: 37.5,28.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 3234 components: - type: Transform rot: 1.5707963267948966 rad pos: 55.5,16.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 3313 components: - type: Transform rot: 1.5707963267948966 rad pos: 48.5,25.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 3760 components: - type: Transform pos: 51.5,27.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 3984 components: - type: Transform pos: 61.5,40.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 4417 components: - type: Transform rot: 1.5707963267948966 rad pos: 63.5,48.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 5848 components: - type: Transform rot: 1.5707963267948966 rad pos: 35.5,31.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 6338 components: - type: Transform rot: 1.5707963267948966 rad pos: 30.5,-9.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 6655 components: - type: Transform pos: 43.5,35.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 7157 components: - type: Transform pos: 5.5,8.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 7247 components: - type: Transform pos: 4.5,1.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 7249 components: - type: Transform pos: 5.5,1.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 7387 components: - type: Transform pos: 18.5,-4.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 7414 components: - type: Transform pos: 43.5,22.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 8367 components: - type: Transform rot: 1.5707963267948966 rad pos: 31.5,34.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 8392 components: - type: Transform rot: 1.5707963267948966 rad pos: 44.5,31.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 10346 components: - type: Transform rot: 1.5707963267948966 rad pos: 20.5,-26.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10347 components: - type: Transform rot: 1.5707963267948966 rad pos: 20.5,-27.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10348 components: - type: Transform rot: 1.5707963267948966 rad pos: 26.5,-38.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10349 components: - type: Transform rot: 1.5707963267948966 rad pos: 25.5,-38.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10350 components: - type: Transform rot: 1.5707963267948966 rad pos: 26.5,-34.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10351 components: - type: Transform rot: 1.5707963267948966 rad pos: 25.5,-34.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10352 components: - type: Transform rot: 1.5707963267948966 rad pos: 18.5,-38.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10353 components: - type: Transform rot: 1.5707963267948966 rad pos: 19.5,-38.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10354 components: - type: Transform rot: 1.5707963267948966 rad pos: 25.5,-42.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10355 components: - type: Transform rot: 1.5707963267948966 rad pos: 26.5,-42.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10356 components: - type: Transform rot: 1.5707963267948966 rad pos: 25.5,-46.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10357 components: - type: Transform rot: 1.5707963267948966 rad pos: 26.5,-46.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10358 components: - type: Transform rot: 1.5707963267948966 rad pos: 18.5,-46.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10359 components: - type: Transform rot: 1.5707963267948966 rad pos: 19.5,-46.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10360 components: - type: Transform rot: 1.5707963267948966 rad pos: 25.5,-50.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10361 components: - type: Transform rot: 1.5707963267948966 rad pos: 26.5,-50.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10362 components: - type: Transform rot: 1.5707963267948966 rad pos: 18.5,-50.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10363 components: - type: Transform rot: 1.5707963267948966 rad pos: 19.5,-50.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10364 components: - type: Transform rot: 1.5707963267948966 rad pos: 18.5,-54.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10365 components: - type: Transform rot: 1.5707963267948966 rad pos: 19.5,-54.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10366 components: - type: Transform rot: 1.5707963267948966 rad pos: 25.5,-54.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10367 components: - type: Transform rot: 1.5707963267948966 rad pos: 26.5,-54.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10375 components: - type: Transform pos: 28.5,-62.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10427 components: - type: Transform pos: 37.5,53.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - proto: WindoorSecure entities: - uid: 107 @@ -73898,15 +73835,11 @@ entities: - type: Transform pos: 13.5,4.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 141 components: - type: Transform pos: 9.5,4.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - proto: WindoorSecureArmoryLocked entities: - uid: 10373 @@ -73915,32 +73848,24 @@ entities: rot: 1.5707963267948966 rad pos: 26.5,-59.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10374 components: - type: Transform rot: 1.5707963267948966 rad pos: 26.5,-58.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10376 components: - type: Transform rot: 1.5707963267948966 rad pos: 26.5,-61.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10377 components: - type: Transform rot: 1.5707963267948966 rad pos: 26.5,-66.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - proto: WindoorSecureChapelLocked entities: - uid: 356 @@ -73949,15 +73874,11 @@ entities: rot: 1.5707963267948966 rad pos: -3.5,12.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 440 components: - type: Transform pos: -3.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - proto: WindoorSecureChemistryLocked entities: - uid: 547 @@ -73966,30 +73887,22 @@ entities: rot: 1.5707963267948966 rad pos: 29.5,11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1327 components: - type: Transform pos: 32.5,12.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2222 components: - type: Transform rot: 3.141592653589793 rad pos: 32.5,7.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2484 components: - type: Transform pos: 31.5,12.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - proto: WindoorSecureCommandLocked entities: - uid: 125 @@ -73997,8 +73910,6 @@ entities: - type: Transform pos: 57.5,26.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - type: AccessReader access: - - Captain @@ -74007,8 +73918,6 @@ entities: - type: Transform pos: 57.5,27.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - type: AccessReader access: - - Captain @@ -74018,42 +73927,32 @@ entities: rot: 1.5707963267948966 rad pos: 29.5,50.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 703 components: - type: Transform rot: 1.5707963267948966 rad pos: 28.5,50.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2034 components: - type: Transform pos: 17.5,42.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2037 components: - type: Transform pos: 22.5,16.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2399 components: - type: Transform pos: 59.5,26.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - type: DeviceLinkSource lastSignals: DoorStatus: True - type: Door - secondsUntilStateChange: -248614.53 + secondsUntilStateChange: -252505.05 state: Opening - type: Airlock autoClose: False @@ -74063,24 +73962,18 @@ entities: rot: 1.5707963267948966 rad pos: 54.5,31.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 4601 components: - type: Transform rot: 1.5707963267948966 rad pos: 41.5,50.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 11363 components: - type: Transform rot: 1.5707963267948966 rad pos: 35.5,54.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - proto: WindoorSecureEngineeringLocked entities: - uid: 136 @@ -74089,54 +73982,40 @@ entities: rot: 1.5707963267948966 rad pos: 31.5,30.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 321 components: - type: Transform pos: 60.5,60.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1365 components: - type: Transform rot: 1.5707963267948966 rad pos: 31.5,20.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1617 components: - type: Transform rot: 1.5707963267948966 rad pos: 36.5,21.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2645 components: - type: Transform rot: 1.5707963267948966 rad pos: 1.5,-10.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 8396 components: - type: Transform pos: 33.5,36.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 8476 components: - type: Transform rot: 1.5707963267948966 rad pos: 21.5,34.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - proto: WindoorSecureMedicalLocked entities: - uid: 609 @@ -74144,8 +74023,6 @@ entities: - type: Transform pos: 25.5,11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - type: AccessReader access: - - Bar @@ -74158,32 +74035,32 @@ entities: rot: 1.5707963267948966 rad pos: 11.5,14.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1089 components: - type: Transform rot: 1.5707963267948966 rad pos: 15.5,16.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 6975 components: - type: Transform rot: 1.5707963267948966 rad pos: 22.5,11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 6997 components: - type: Transform rot: 1.5707963267948966 rad pos: 21.5,11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 +- proto: WindoorSecureResearchDirectorLocked + entities: + - uid: 7392 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 49.5,8.5 + parent: 2 - proto: WindoorSecureSecurityLawyerLocked entities: - uid: 1231 @@ -74192,16 +74069,12 @@ entities: rot: 1.5707963267948966 rad pos: 37.5,0.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 10329 components: - type: Transform rot: 1.5707963267948966 rad pos: 18.5,-32.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - type: DeviceLinkSink invokeCounter: 1 - type: DeviceLinkSource @@ -74215,8 +74088,6 @@ entities: rot: 1.5707963267948966 rad pos: 19.5,-32.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - type: DeviceLinkSink invokeCounter: 1 - type: DeviceLinkSource @@ -74229,29 +74100,21 @@ entities: - type: Transform pos: 22.5,-62.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10369 components: - type: Transform pos: 23.5,-62.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10370 components: - type: Transform pos: 22.5,-56.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10371 components: - type: Transform pos: 23.5,-56.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - proto: WindoorSecureSecurityLocked entities: - uid: 1053 @@ -74260,16 +74123,12 @@ entities: rot: 1.5707963267948966 rad pos: 7.5,-7.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1097 components: - type: Transform rot: 1.5707963267948966 rad pos: 40.5,-2.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - type: DeviceLinkSink invokeCounter: 1 - type: DeviceLinkSource @@ -74282,16 +74141,12 @@ entities: - type: Transform pos: 40.5,3.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1441 components: - type: Transform rot: 1.5707963267948966 rad pos: 41.5,-2.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - type: DeviceLinkSink invokeCounter: 1 - type: DeviceLinkSource @@ -74304,23 +74159,17 @@ entities: - type: Transform pos: 24.5,-24.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 5345 components: - type: Transform pos: 23.5,-24.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - uid: 10372 components: - type: Transform rot: 1.5707963267948966 rad pos: 26.5,-28.5 parent: 3564 - - type: DeltaPressure - gridUid: 3564 - proto: WindowDirectional entities: - uid: 471 @@ -74328,491 +74177,351 @@ entities: - type: Transform pos: 30.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 472 components: - type: Transform pos: 26.5,11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 474 components: - type: Transform rot: -1.5707963267948966 rad pos: 28.5,10.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 507 components: - type: Transform pos: 27.5,11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 512 components: - type: Transform rot: 1.5707963267948966 rad pos: 11.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 537 components: - type: Transform rot: 1.5707963267948966 rad pos: 11.5,10.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 555 components: - type: Transform rot: 3.141592653589793 rad pos: 25.5,12.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 556 components: - type: Transform pos: 26.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 566 components: - type: Transform rot: 1.5707963267948966 rad pos: 11.5,16.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 646 components: - type: Transform pos: 15.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 654 components: - type: Transform rot: 1.5707963267948966 rad pos: 11.5,9.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 712 components: - type: Transform rot: 3.141592653589793 rad pos: 26.5,12.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 717 components: - type: Transform pos: 14.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 733 components: - type: Transform pos: 13.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 734 components: - type: Transform pos: 12.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 743 components: - type: Transform rot: 1.5707963267948966 rad pos: 11.5,15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 747 components: - type: Transform pos: 29.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 748 components: - type: Transform rot: 3.141592653589793 rad pos: 28.5,10.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 749 components: - type: Transform rot: 3.141592653589793 rad pos: 29.5,10.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1077 components: - type: Transform pos: 33.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1078 components: - type: Transform pos: 34.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1100 components: - type: Transform rot: 1.5707963267948966 rad pos: 40.5,0.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1102 components: - type: Transform rot: 1.5707963267948966 rad pos: 40.5,2.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1165 components: - type: Transform rot: 1.5707963267948966 rad pos: 15.5,15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1166 components: - type: Transform rot: 1.5707963267948966 rad pos: 15.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1282 components: - type: Transform rot: 1.5707963267948966 rad pos: 29.5,12.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1283 components: - type: Transform rot: -1.5707963267948966 rad pos: 28.5,9.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1285 components: - type: Transform pos: 24.5,11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1307 components: - type: Transform rot: 1.5707963267948966 rad pos: 11.5,11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1339 components: - type: Transform rot: 1.5707963267948966 rad pos: 40.5,-1.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1348 components: - type: Transform rot: 1.5707963267948966 rad pos: 40.5,-0.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1349 components: - type: Transform rot: 1.5707963267948966 rad pos: 40.5,1.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - - uid: 1353 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 22.5,16.5 - parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1535 components: - type: Transform rot: 3.141592653589793 rad pos: 60.5,42.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1539 components: - type: Transform rot: 3.141592653589793 rad pos: 54.5,32.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1562 components: - type: Transform rot: -1.5707963267948966 rad pos: 54.5,32.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1756 components: - type: Transform pos: 54.5,32.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2002 components: - type: Transform pos: 53.5,32.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2027 components: - type: Transform rot: -1.5707963267948966 rad pos: 61.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2028 components: - type: Transform rot: -1.5707963267948966 rad pos: 61.5,14.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2029 components: - type: Transform rot: -1.5707963267948966 rad pos: 61.5,12.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2031 components: - type: Transform rot: 1.5707963267948966 rad pos: 60.5,42.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2032 components: - type: Transform pos: 60.5,42.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - - uid: 2035 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 18.5,41.5 - parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2344 components: - type: Transform pos: 52.5,32.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2374 components: - type: Transform pos: 51.5,35.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2375 components: - type: Transform pos: 52.5,35.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2377 components: - type: Transform pos: 49.5,35.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2393 components: - type: Transform pos: 51.5,32.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2394 components: - type: Transform pos: 49.5,32.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 3043 components: - type: Transform pos: 53.5,35.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 5599 components: - type: Transform rot: -1.5707963267948966 rad pos: 60.5,42.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 6014 components: - type: Transform rot: 1.5707963267948966 rad pos: 30.5,-10.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 6382 components: - type: Transform rot: 3.141592653589793 rad pos: 31.5,-7.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 6415 components: - type: Transform rot: 3.141592653589793 rad pos: 32.5,-7.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 6419 components: - type: Transform rot: 3.141592653589793 rad pos: 33.5,-7.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 6420 components: - type: Transform rot: 3.141592653589793 rad pos: 34.5,-7.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 6421 components: - type: Transform rot: 3.141592653589793 rad pos: 35.5,-7.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 6423 components: - type: Transform rot: 1.5707963267948966 rad pos: 30.5,-8.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 6438 components: - type: Transform rot: 1.5707963267948966 rad pos: 30.5,-7.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 7298 components: - type: Transform rot: -1.5707963267948966 rad pos: 31.5,12.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 7299 components: - type: Transform rot: 1.5707963267948966 rad pos: 32.5,12.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 8365 components: - type: Transform rot: 1.5707963267948966 rad pos: 31.5,33.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 8366 components: - type: Transform rot: 1.5707963267948966 rad pos: 31.5,35.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - proto: WindowReinforcedDirectional entities: - uid: 20 @@ -74821,440 +74530,262 @@ entities: rot: 1.5707963267948966 rad pos: 1.5,-14.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 26 components: - type: Transform rot: 1.5707963267948966 rad pos: 1.5,-12.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 309 components: - type: Transform pos: -6.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 310 components: - type: Transform pos: -5.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 311 components: - type: Transform pos: -4.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 313 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 314 components: - type: Transform rot: 3.141592653589793 rad pos: -5.5,11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 315 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 316 components: - type: Transform rot: 3.141592653589793 rad pos: -3.5,11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 417 components: - type: Transform rot: 1.5707963267948966 rad pos: 1.5,-7.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 418 components: - type: Transform rot: 1.5707963267948966 rad pos: 1.5,-8.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 419 components: - type: Transform rot: 1.5707963267948966 rad pos: 1.5,-9.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 581 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,35.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 601 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,34.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 688 components: - type: Transform pos: 57.5,60.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - - uid: 892 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 38.5,-0.5 - parent: 2 - - type: DeltaPressure - gridUid: 2 - - uid: 1101 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 37.5,1.5 - parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1197 components: - type: Transform pos: -8.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - - uid: 1322 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 37.5,2.5 - parent: 2 - - type: DeltaPressure - gridUid: 2 - - uid: 1329 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 39.5,-0.5 - parent: 2 - - type: DeltaPressure - gridUid: 2 - - uid: 1360 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 40.5,-0.5 - parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1886 components: - type: Transform rot: 1.5707963267948966 rad pos: 7.5,-8.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1915 components: - type: Transform rot: 1.5707963267948966 rad pos: 7.5,-6.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1936 components: - type: Transform rot: -1.5707963267948966 rad pos: 12.5,39.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 1937 components: - type: Transform rot: -1.5707963267948966 rad pos: 12.5,38.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2229 components: - type: Transform rot: 1.5707963267948966 rad pos: 7.5,-5.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - - uid: 2337 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 54.5,33.5 - parent: 2 - - type: DeltaPressure - gridUid: 2 - - uid: 2376 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 54.5,28.5 - parent: 2 - - type: DeltaPressure - gridUid: 2 - - uid: 2557 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 54.5,32.5 - parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2600 components: - type: Transform rot: -1.5707963267948966 rad pos: 57.5,62.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2601 components: - type: Transform rot: -1.5707963267948966 rad pos: 57.5,61.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2629 components: - type: Transform rot: 3.141592653589793 rad pos: -8.5,11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2631 components: - type: Transform pos: 59.5,60.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2679 components: - type: Transform rot: 1.5707963267948966 rad pos: 1.5,-11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2682 components: - type: Transform rot: 1.5707963267948966 rad pos: 1.5,-13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2683 components: - type: Transform pos: 58.5,60.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2701 components: - type: Transform rot: -1.5707963267948966 rad pos: 57.5,60.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 2769 components: - type: Transform rot: 1.5707963267948966 rad pos: 20.5,57.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - - uid: 3292 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 54.5,29.5 - parent: 2 - - type: DeltaPressure - gridUid: 2 - - uid: 3811 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 54.5,30.5 - parent: 2 - - type: DeltaPressure - gridUid: 2 - - uid: 3813 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 54.5,34.5 - parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 5343 components: - type: Transform rot: 1.5707963267948966 rad pos: 63.5,34.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 7116 components: - type: Transform rot: 1.5707963267948966 rad pos: 44.5,35.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 7119 components: - type: Transform pos: 42.5,35.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 11201 components: - type: Transform rot: 1.5707963267948966 rad pos: 63.5,33.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 11202 components: - type: Transform rot: 1.5707963267948966 rad pos: 63.5,32.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 11203 components: - type: Transform rot: 1.5707963267948966 rad pos: 63.5,31.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 11204 components: - type: Transform rot: 1.5707963267948966 rad pos: 63.5,30.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 11205 components: - type: Transform rot: 1.5707963267948966 rad pos: 63.5,29.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 11206 components: - type: Transform rot: 1.5707963267948966 rad pos: 63.5,28.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 11357 components: - type: Transform rot: -1.5707963267948966 rad pos: -6.5,15.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 11358 components: - type: Transform rot: -1.5707963267948966 rad pos: -6.5,14.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 11359 components: - type: Transform rot: -1.5707963267948966 rad pos: -6.5,13.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 11360 components: - type: Transform rot: -1.5707963267948966 rad pos: -6.5,11.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 11361 components: - type: Transform rot: -1.5707963267948966 rad pos: -6.5,10.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - uid: 11362 components: - type: Transform rot: -1.5707963267948966 rad pos: -6.5,9.5 parent: 2 - - type: DeltaPressure - gridUid: 2 - proto: Wirecutter entities: - uid: 7520 From 75d52f1b1e61d79538cd9a4ef6db9b2f163f554a Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 22 Feb 2026 22:17:40 +0000 Subject: [PATCH 379/603] Automatic changelog update --- Resources/Changelog/Maps.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Maps.yml b/Resources/Changelog/Maps.yml index 6c0251513fa..efde22a3fe0 100644 --- a/Resources/Changelog/Maps.yml +++ b/Resources/Changelog/Maps.yml @@ -1001,4 +1001,12 @@ id: 122 time: '2026-02-07T07:01:55.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42822 +- author: Vortebo + changes: + - message: On Relic, small changes to e.g. spawns, wiring, pipes, signage have been + made to slightly reduce friction in gameplay. Slightly. + type: Tweak + id: 123 + time: '2026-02-22T22:16:29.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42921 Order: 2 From d9c4cf1162718ea4f0e663e4b449d0092ec602e7 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Sun, 22 Feb 2026 23:39:39 +0100 Subject: [PATCH 380/603] Add unlockable reporter cosmetics (#41079) * Initial commit * Lower the requirements slightly * Revert vox displacement fix for another PR --- .../en-US/preferences/loadout-groups.ftl | 2 + .../Entities/Clothing/Head/hats.yml | 17 +++++--- .../Entities/Clothing/OuterClothing/vests.yml | 31 +++++++++++++ .../Loadouts/Jobs/Wildcards/reporter.yml | 24 ++++++++++ .../Loadouts/LoadoutGroups/loadout_groups.yml | 14 ++++++ .../Loadouts/RoleLoadouts/role_loadouts.yml | 2 + .../Hats/presshat.rsi/equipped-HELMET.png | Bin 0 -> 14790 bytes .../Clothing/Head/Hats/presshat.rsi/icon.png | Bin 0 -> 14717 bytes .../Head/Hats/presshat.rsi/inhand-left.png | Bin 0 -> 14743 bytes .../Head/Hats/presshat.rsi/inhand-right.png | Bin 0 -> 14733 bytes .../Clothing/Head/Hats/presshat.rsi/meta.json | 26 +++++++++++ .../equipped-OUTERCLOTHING-unshaded-vox.png | Bin 0 -> 16337 bytes .../equipped-OUTERCLOTHING-unshaded.png | Bin 0 -> 16119 bytes .../equipped-OUTERCLOTHING-vox.png | Bin 0 -> 16075 bytes .../pressvest.rsi/equipped-OUTERCLOTHING.png | Bin 0 -> 15409 bytes .../Vests/pressvest.rsi/icon-unshaded.png | Bin 0 -> 15769 bytes .../Vests/pressvest.rsi/icon.png | Bin 0 -> 15673 bytes .../Vests/pressvest.rsi/inhand-left.png | Bin 0 -> 15924 bytes .../Vests/pressvest.rsi/inhand-right.png | Bin 0 -> 15924 bytes .../Vests/pressvest.rsi/meta.json | 41 ++++++++++++++++++ .../reporter.rsi/equipped-INNERCLOTHING.png | Bin 979 -> 15437 bytes 21 files changed, 152 insertions(+), 5 deletions(-) create mode 100644 Resources/Textures/Clothing/Head/Hats/presshat.rsi/equipped-HELMET.png create mode 100644 Resources/Textures/Clothing/Head/Hats/presshat.rsi/icon.png create mode 100644 Resources/Textures/Clothing/Head/Hats/presshat.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/Head/Hats/presshat.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/Head/Hats/presshat.rsi/meta.json create mode 100644 Resources/Textures/Clothing/OuterClothing/Vests/pressvest.rsi/equipped-OUTERCLOTHING-unshaded-vox.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Vests/pressvest.rsi/equipped-OUTERCLOTHING-unshaded.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Vests/pressvest.rsi/equipped-OUTERCLOTHING-vox.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Vests/pressvest.rsi/equipped-OUTERCLOTHING.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Vests/pressvest.rsi/icon-unshaded.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Vests/pressvest.rsi/icon.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Vests/pressvest.rsi/inhand-left.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Vests/pressvest.rsi/inhand-right.png create mode 100644 Resources/Textures/Clothing/OuterClothing/Vests/pressvest.rsi/meta.json diff --git a/Resources/Locale/en-US/preferences/loadout-groups.ftl b/Resources/Locale/en-US/preferences/loadout-groups.ftl index e05572082eb..566e7f6aabe 100644 --- a/Resources/Locale/en-US/preferences/loadout-groups.ftl +++ b/Resources/Locale/en-US/preferences/loadout-groups.ftl @@ -203,5 +203,7 @@ loadout-group-paramedic-shoes = Paramedic shoes # Wildcards loadout-group-reporter-jumpsuit = Reporter jumpsuit +loadout-group-reporter-head = Reporter hat +loadout-group-reporter-outerclothing = Reporter vest loadout-group-psychologist-jumpsuit = Psychologist jumpsuit diff --git a/Resources/Prototypes/Entities/Clothing/Head/hats.yml b/Resources/Prototypes/Entities/Clothing/Head/hats.yml index 01dfd528a4c..289958b3491 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hats.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hats.yml @@ -368,7 +368,7 @@ - WhitelistChameleon - type: entity - parent: ClothingHeadBase + parent: ClothingHeadHatFedoraBrown id: ClothingHeadHatFedoraGrey name: grey fedora description: A grey fedora. @@ -377,10 +377,17 @@ sprite: Clothing/Head/Hats/greyfedora.rsi - type: Clothing sprite: Clothing/Head/Hats/greyfedora.rsi - - type: Tag - tags: - - PetWearable - - CorgiWearable + +- type: entity + parent: ClothingHeadHatFedoraBrown + id: ClothingHeadHatFedoraPress + name: press fedora + description: It has a little note stuck in the band saying "PRESS". Practically an all-access pass! + components: + - type: Sprite + sprite: Clothing/Head/Hats/presshat.rsi + - type: Clothing + sprite: Clothing/Head/Hats/presshat.rsi - type: entity parent: ClothingHeadBase diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/vests.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/vests.yml index 0b1b66e6292..0d02ccd1472 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/vests.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/vests.yml @@ -65,3 +65,34 @@ size: Normal # Make smaller than typical outer clothing shape: - 0, 0, 0, 1 + +# Reporter unlockable PRESS vest +- type: entity + parent: [ClothingOuterBase, AllowSuitStorageClothingGasTanks] + id: ClothingOuterVestPress + name: press vest + description: A cloth vest for the fearless reporter in the field. Go land an interview with that space dragon! + components: + - type: Sprite + sprite: Clothing/OuterClothing/Vests/pressvest.rsi + layers: + - state: icon + - state: icon-unshaded # See ClothingOuterVestHazard for why we double-add these unshaded states this way + shader: unshaded + - state: icon-unshaded + shader: shaded + - type: Clothing + sprite: Clothing/OuterClothing/Vests/pressvest.rsi + clothingVisuals: + outerClothing: + - state: equipped-OUTERCLOTHING + - state: equipped-OUTERCLOTHING-unshaded + shader: unshaded + - state: equipped-OUTERCLOTHING-unshaded + shader: shaded + outerClothing-vox: + - state: equipped-OUTERCLOTHING-vox + - state: equipped-OUTERCLOTHING-unshaded-vox + shader: unshaded + - state: equipped-OUTERCLOTHING-unshaded-vox + shader: shaded diff --git a/Resources/Prototypes/Loadouts/Jobs/Wildcards/reporter.yml b/Resources/Prototypes/Loadouts/Jobs/Wildcards/reporter.yml index 5dfb1319880..f5f98255262 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Wildcards/reporter.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Wildcards/reporter.yml @@ -8,3 +8,27 @@ id: JournalistJumpsuit equipment: jumpsuit: ClothingUniformJumpsuitJournalist + +# Head +- type: loadout + id: ReporterPressFedora + effects: + - !type:JobRequirementLoadoutEffect + requirement: + !type:RoleTimeRequirement + role: JobReporter + time: 10h + equipment: + head: ClothingHeadHatFedoraPress + +# Outerclothing +- type: loadout + id: ReporterPressVest + effects: + - !type:JobRequirementLoadoutEffect + requirement: + !type:RoleTimeRequirement + role: JobReporter + time: 35h + equipment: + outerClothing: ClothingOuterVestPress diff --git a/Resources/Prototypes/Loadouts/LoadoutGroups/loadout_groups.yml b/Resources/Prototypes/Loadouts/LoadoutGroups/loadout_groups.yml index ef97ca19180..52106d2d6fe 100644 --- a/Resources/Prototypes/Loadouts/LoadoutGroups/loadout_groups.yml +++ b/Resources/Prototypes/Loadouts/LoadoutGroups/loadout_groups.yml @@ -1306,6 +1306,20 @@ - ReporterJumpsuit - JournalistJumpsuit +- type: loadoutGroup + id: ReporterHead + name: loadout-group-reporter-head + minLimit: 0 + loadouts: + - ReporterPressFedora + +- type: loadoutGroup + id: ReporterOuterClothing + name: loadout-group-reporter-outerclothing + minLimit: 0 + loadouts: + - ReporterPressVest + #- type: loadoutGroup # id: ReporterJobTrinkets # name: loadout-group-jobtrinkets diff --git a/Resources/Prototypes/Loadouts/RoleLoadouts/role_loadouts.yml b/Resources/Prototypes/Loadouts/RoleLoadouts/role_loadouts.yml index 8e95340bacb..a3eaf7ffbdd 100644 --- a/Resources/Prototypes/Loadouts/RoleLoadouts/role_loadouts.yml +++ b/Resources/Prototypes/Loadouts/RoleLoadouts/role_loadouts.yml @@ -439,6 +439,8 @@ groups: - GroupTankHarness - ReporterJumpsuit + - ReporterHead + - ReporterOuterClothing - CommonBackpack - Glasses - Survival diff --git a/Resources/Textures/Clothing/Head/Hats/presshat.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hats/presshat.rsi/equipped-HELMET.png new file mode 100644 index 0000000000000000000000000000000000000000..50073b71bb7c2b46d26fc640fe04dbe63cc230aa GIT binary patch literal 14790 zcmeI3TZ|J`7{||wC{|gBK9GRMNs$O*JJac9>DYFK?c#2vxY@0Hi4V&#bGkdw&U8Cd z+Fc*mfJija7!xBV1QLvwka$B0CMXir#0c>gc#sf{8#NIxtZ0N45zn;U_G`E0fZ_2p zY3JK>{@?#Q^E;QFmwBRV?E`Zi3mpidxt$%+ZgRcf{?569{O;98z9E;J(j5aPLd_r9 z-=^o5H!nhH#a&vw-|CO8krX54mQ`atcIQ)RqDCmxnorBhMr?8G@sOs6oo5by;N&zl z?CkT$gjl)_4{IG`8Qe3rHm;0qRD!CrHR1^6C1Q}mmdxc-N!^t4VQ0ZtBC*}fJGp|y z+8B1Ov!6kYnpCI`}uJmz6 z93%>5)P&R>U0o_i{t7#XEh{bYd@h%B=e%wsGsJs>!5}Y)yePVe!ex%?mYjF#=HjBs zv`-Y9N=8dtnxS*Hue{#KT4ATtE>!-M?kklp7t+lVJ3^7q%W2-@7WjHes#4BLXEVvd z&{T!TNu0vEWs*Ek-MsX$VHxJI(V%3xyJ2B6C$U($cHQx&Qgut4R{JJ`poFw;rWqei zW4;@kMmD41_D$qg7T3FbOG{KHr^?ChX*hPA*BYeRJ;k)bQYg+)h}^5xmcg=RWa5UA zj1*T{*EB+|t*x-CxTSrXt{ORWS%|Mqsmyo94M$}QM?^vNyF6qu`r;ms7l{FqQL)8+aGdx5|3`pJ;&;uxIJ;?r1WlO#y7pMh3sv;$fOiH#QT1p#QBPX4l1R8tvS6iZv z&5TkVnn~8@C|I{-^%l;u9z0UrI^B`f3TIMU&Y0NVabf55mMb4(a<$>5O1IUNv(P!imlc2Q`q)o#m=11kbS60WG#?!$%Q%ag!mb4mC8kZzdfhPY(XCk z2;{?i?B7x znBk%#f&zvM(xAo+7Zni{FkFxZHDIYL5&$MDk3OgxF8K` z%y3Z=K>@=BX;5Q^i;4&e7%oVI8Z%r}L{PwRK^oMU;i4jf0)`9HpvDXr6%iCLT#yDe zX1J(`pn&0mG^jDdMMVS!3>Tz9jTtT~A}CvbjJ`HTY}K|R)nT5k?T(gWd(#zuR}=MfzSfu z*};!jBh++zXLMyefAW`;2OWexFd)pNnu{K|>I{sXZ)ULJWSzTuGLaL232P zzfK-F*SeyqbLy+j;~Pd=r6qsw=E&VN{v2N1bo}Dso8Le39(rW*Pq2q-zM<=X+codq<1hBDdHj@g=j8cip2n7>XMFP;3&`ctrCDge XJ$qgIK9jtIiBMh)bo;}=X|oNXRxo7Gl&|Y*v66}E0fsfGI(6ecYAK0KI7puwc9fs zP6;U^fhV-SvWd5sw+t!eNkvpW8{?g^l0*{Zuq|_?TsCh>rEZU#S0b^~%zHRjVo!E^ zdYpn>IyJy0bQ5!7U&N~jkti1xeg1GX8j3#21q6SX7lM3H@CJfXNRUDSuKMxBJ4qBX z)iG%>xw%@7{MGH5ux&%)`C_r?D+YbKInMh(*%69-Nj7-DPvBdbRHf!I3TDqAP z``2<-Wsp>IJj3(}y*3>Os<6fj(n1~q25sED9| z;es@%F~dbg1O*Hiq(O}tE-E4@V7MR+YRqs^5kUdN1!+)YhKq^_3K%X(gBmkjR76m~ za6uZ>nBk%#f&zvM(xAo+7Zni{FkFxZHDIYL5&$MDk3Og zxF8K`%y3Z=K>@=BX;5Q^i;4&e7%oVI8Z%r}L{PwRK^oMU;i4jf0)`9HpvHH^)meY_ z59i7Iens+PUuoMT=g3QeoYFU#La4k3q3MGN-Ts$ce?h1qAar9lLed)uEzysRe!Q7z zFZU;VhDuj|yK#V8|LyTVwSRW{jy$*X_=@PRnSBe6{GaH@oxSrGn}wCb*Duecmu0jCr##pG-hZr+{qTwD==JH> ze|>w+rmm+)Kj~QU(d6OJAGoyS;+MjOlicd*#cxgj_0= tv@0Xrf!nL@h%x8O7Zhq(IrR4TdfA5y$yPI|&_z(Es0EYko literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/Head/Hats/presshat.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/Hats/presshat.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..7c4218b83205d4519a726d3a2424cb58f8681b66 GIT binary patch literal 14743 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/pressvest.rsi/equipped-OUTERCLOTHING-unshaded.png b/Resources/Textures/Clothing/OuterClothing/Vests/pressvest.rsi/equipped-OUTERCLOTHING-unshaded.png new file mode 100644 index 0000000000000000000000000000000000000000..df49081437c05a07dc28bc86a167d47dca6de418 GIT binary patch literal 16119 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 MmiFi~t9yq214-tvX8-^I literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/pressvest.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Vests/pressvest.rsi/equipped-OUTERCLOTHING-vox.png new file mode 100644 index 0000000000000000000000000000000000000000..930f4e31ee84c8bc2a3fd4ab5c21538b729ee297 GIT binary patch literal 16075 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/pressvest.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/Clothing/OuterClothing/Vests/pressvest.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 0000000000000000000000000000000000000000..93f599bf1a5da7378894ddd2727b48b75131a58c GIT binary patch literal 15409 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 Nq20r|le;F5`~#aWA1MF; literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/pressvest.rsi/icon.png b/Resources/Textures/Clothing/OuterClothing/Vests/pressvest.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f819d41c7d63c200ead05360d11bfd803f678994 GIT binary patch literal 15673 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/pressvest.rsi/inhand-right.png b/Resources/Textures/Clothing/OuterClothing/Vests/pressvest.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..5bf76dd52a988f404e4b34fe800883ee90c5ab3c GIT binary patch literal 15924 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 LNkvXXu0mjf Date: Sun, 22 Feb 2026 22:53:46 +0000 Subject: [PATCH 381/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index afddc5bcd1d..6cadef29faf 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -3979,3 +3979,10 @@ id: 9538 time: '2026-02-22T00:07:34.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42990 +- author: SlamBamActionman + changes: + - message: Added unlockable press hat and press vest for the Reporter job. + type: Add + id: 9539 + time: '2026-02-22T22:52:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/41079 From 42063151d01657a062fad0d725eec7472e889767 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 22 Feb 2026 17:53:59 -0500 Subject: [PATCH 382/603] Oasis: Label every air alarm (#42911) * my chud air alarm life * remember to clear your multitool kids... --- Resources/Maps/oasis.yml | 1029 ++++++++++++++++++++++++++++++++------ 1 file changed, 883 insertions(+), 146 deletions(-) diff --git a/Resources/Maps/oasis.yml b/Resources/Maps/oasis.yml index 810402cde79..76f78cdca8c 100644 --- a/Resources/Maps/oasis.yml +++ b/Resources/Maps/oasis.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 271.2.0 + engineVersion: 272.0.0 forkId: "" forkVersion: "" - time: 01/27/2026 04:05:45 - entityCount: 31167 + time: 02/13/2026 09:17:40 + entityCount: 31155 maps: - 1 grids: @@ -10100,12 +10100,39 @@ entities: container: 2671 - proto: AirAlarm entities: + - uid: 505 + components: + - type: MetaData + name: Kitchen Air Alarm + - type: Transform + pos: -6.5,23.5 + parent: 2 + - type: DeviceList + devices: + - 18296 + - 18297 + - 18298 + - 18299 + - 18300 + - 18301 + - 13981 + - 13982 + - type: AccessReader + accessListsOriginal: + - - Atmospherics + - type: Fixtures + fixtures: {} - uid: 2121 components: + - type: MetaData + name: Park NE Air Alarm - type: Transform rot: 3.141592653589793 rad pos: 15.5,2.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 23076 @@ -10136,10 +10163,15 @@ entities: fixtures: {} - uid: 3220 components: + - type: MetaData + name: Tabletop Game Room Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: -14.5,30.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 16149 @@ -10148,9 +10180,14 @@ entities: fixtures: {} - uid: 9177 components: + - type: MetaData + name: Secondary Burn Chamber Air Alarm - type: Transform pos: -38.5,38.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 9168 @@ -10158,10 +10195,15 @@ entities: fixtures: {} - uid: 9214 components: + - type: MetaData + name: TEG Burn Chamber Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: -16.5,49.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 9198 @@ -10169,10 +10211,15 @@ entities: fixtures: {} - uid: 9410 components: + - type: MetaData + name: Engineering Main Air Alarm - type: Transform rot: 3.141592653589793 rad pos: 16.5,44.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18549 @@ -10194,10 +10241,15 @@ entities: fixtures: {} - uid: 10169 components: + - type: MetaData + name: East Hall Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: 29.5,-1.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 3346 @@ -10211,19 +10263,16 @@ entities: - 16532 - type: Fixtures fixtures: {} - - uid: 12296 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -22.5,-43.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 12885 components: + - type: MetaData + name: Virology Room 1 Air Alarm - type: Transform pos: -32.5,-9.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 10841 @@ -10233,10 +10282,15 @@ entities: fixtures: {} - uid: 14277 components: + - type: MetaData + name: Surgery Theater Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: -22.5,-43.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 15712 @@ -10246,9 +10300,14 @@ entities: fixtures: {} - uid: 14996 components: + - type: MetaData + name: Library Air Alarm - type: Transform pos: -3.5,39.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 876 @@ -10259,10 +10318,15 @@ entities: fixtures: {} - uid: 15250 components: + - type: MetaData + name: Arcade Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -47.5,-38.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 15237 @@ -10272,10 +10336,15 @@ entities: fixtures: {} - uid: 15512 components: + - type: MetaData + name: Evac Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: 53.5,-4.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 16526 @@ -10291,9 +10360,14 @@ entities: fixtures: {} - uid: 18240 components: + - type: MetaData + name: Arrivals Air Alarm - type: Transform pos: -9.5,-55.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 15934 @@ -10311,10 +10385,15 @@ entities: fixtures: {} - uid: 18242 components: + - type: MetaData + name: Arrivals East Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: 5.5,-73.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18235 @@ -10328,10 +10407,15 @@ entities: fixtures: {} - uid: 18244 components: + - type: MetaData + name: Arrivals West Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -10.5,-73.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18232 @@ -10345,9 +10429,14 @@ entities: fixtures: {} - uid: 18247 components: + - type: MetaData + name: Science Hallway Air Alarm - type: Transform pos: 4.5,-47.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 16533 @@ -10368,9 +10457,14 @@ entities: fixtures: {} - uid: 18258 components: + - type: MetaData + name: Medical Hallway Air Alarm - type: Transform pos: -1.5,-31.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 16539 @@ -10388,10 +10482,15 @@ entities: fixtures: {} - uid: 18263 components: + - type: MetaData + name: South Hall Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -1.5,-23.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 16536 @@ -10407,10 +10506,15 @@ entities: fixtures: {} - uid: 18270 components: + - type: MetaData + name: Park South Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -1.5,-8.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18265 @@ -10446,9 +10550,14 @@ entities: fixtures: {} - uid: 18271 components: + - type: MetaData + name: Park West Air Alarm - type: Transform pos: -8.5,2.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 3354 @@ -10484,10 +10593,15 @@ entities: fixtures: {} - uid: 18272 components: + - type: MetaData + name: Park North Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: 2.5,9.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 179 @@ -10522,10 +10636,15 @@ entities: fixtures: {} - uid: 18273 components: + - type: MetaData + name: Park East Air Alarm - type: Transform rot: 3.141592653589793 rad pos: 9.5,-1.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 82 @@ -10561,10 +10680,15 @@ entities: fixtures: {} - uid: 18285 components: + - type: MetaData + name: Park NW Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: -1.5,15.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 169 @@ -10602,10 +10726,15 @@ entities: fixtures: {} - uid: 18286 components: + - type: MetaData + name: Park SE Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: 2.5,-14.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 129 @@ -10641,9 +10770,14 @@ entities: fixtures: {} - uid: 18287 components: + - type: MetaData + name: Park SW Air Alarm - type: Transform pos: -14.5,-1.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 149 @@ -10677,9 +10811,14 @@ entities: fixtures: {} - uid: 18288 components: + - type: MetaData + name: Park Center Air Alarm - type: Transform pos: -1.5,5.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 90 @@ -10703,10 +10842,15 @@ entities: fixtures: {} - uid: 18303 components: + - type: MetaData + name: West Hall Air Alarm - type: Transform rot: 3.141592653589793 rad pos: -22.5,-1.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 3352 @@ -10722,10 +10866,15 @@ entities: fixtures: {} - uid: 18305 components: + - type: MetaData + name: Telecomms Hallway Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: -27.5,-1.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 16499 @@ -10747,10 +10896,15 @@ entities: fixtures: {} - uid: 18317 components: + - type: MetaData + name: Tools Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: -27.5,5.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18327 @@ -10762,9 +10916,14 @@ entities: fixtures: {} - uid: 18328 components: + - type: MetaData + name: Atmos Front Air Alarm - type: Transform pos: -37.5,5.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18308 @@ -10783,10 +10942,15 @@ entities: fixtures: {} - uid: 18332 components: + - type: MetaData + name: Cargo Lobby Air Alarm - type: Transform rot: 3.141592653589793 rad pos: -44.5,-5.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29336 @@ -10812,10 +10976,15 @@ entities: fixtures: {} - uid: 18333 components: + - type: MetaData + name: Vault Hallway Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -43.5,-13.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 16508 @@ -10830,10 +10999,15 @@ entities: fixtures: {} - uid: 18336 components: + - type: MetaData + name: Dorms Hallway Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -43.5,-22.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 16516 @@ -10854,10 +11028,15 @@ entities: fixtures: {} - uid: 18338 components: + - type: MetaData + name: Cryosleep Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: -44.5,-32.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 17904 @@ -10869,6 +11048,8 @@ entities: fixtures: {} - uid: 18366 components: + - type: MetaData + name: HOP Front Air Alarm - type: Transform pos: 33.5,2.5 parent: 2 @@ -10895,10 +11076,15 @@ entities: fixtures: {} - uid: 18440 components: + - type: MetaData + name: AI Entryway Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: 59.5,8.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18369 @@ -10909,9 +11095,14 @@ entities: fixtures: {} - uid: 18460 components: + - type: MetaData + name: Cloning Air Alarm - type: Transform pos: -26.5,-46.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 15418 @@ -10921,9 +11112,14 @@ entities: fixtures: {} - uid: 18463 components: + - type: MetaData + name: Bridge Air Alarm - type: Transform pos: 29.5,8.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18362 @@ -10940,10 +11136,15 @@ entities: fixtures: {} - uid: 18478 components: + - type: MetaData + name: Conference Room Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: 20.5,16.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18471 @@ -10955,10 +11156,15 @@ entities: fixtures: {} - uid: 18480 components: + - type: MetaData + name: Captain's Office Air Alarm - type: Transform rot: 3.141592653589793 rad pos: 28.5,17.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18473 @@ -10970,6 +11176,8 @@ entities: fixtures: {} - uid: 18482 components: + - type: MetaData + name: Captain's Bedroom Air Alarm - type: Transform rot: 3.141592653589793 rad pos: 37.5,11.5 @@ -10985,10 +11193,15 @@ entities: fixtures: {} - uid: 18499 components: + - type: MetaData + name: North Hall Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -1.5,25.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 3351 @@ -11007,9 +11220,14 @@ entities: fixtures: {} - uid: 18501 components: + - type: MetaData + name: Engineering Front Air Alarm - type: Transform pos: 2.5,39.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 16550 @@ -11030,9 +11248,14 @@ entities: fixtures: {} - uid: 18530 components: + - type: MetaData + name: Engineering Front Air Alarm - type: Transform pos: 6.5,39.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18491 @@ -11048,9 +11271,14 @@ entities: fixtures: {} - uid: 18536 components: + - type: MetaData + name: Engineering Locker Room Air Alarm - type: Transform pos: 23.5,35.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18534 @@ -11065,10 +11293,15 @@ entities: fixtures: {} - uid: 18541 components: + - type: MetaData + name: Engineering Breakroom Air Alarm - type: Transform rot: 3.141592653589793 rad pos: 27.5,35.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18529 @@ -11082,10 +11315,15 @@ entities: fixtures: {} - uid: 18553 components: + - type: MetaData + name: Engine Airlock Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: 6.5,49.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18546 @@ -11096,10 +11334,15 @@ entities: fixtures: {} - uid: 18564 components: + - type: MetaData + name: TEG Air Alarm - type: Transform rot: 3.141592653589793 rad pos: -22.5,38.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18559 @@ -11115,10 +11358,15 @@ entities: fixtures: {} - uid: 18567 components: + - type: MetaData + name: Atmospherics Locker Room Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -34.5,40.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18572 @@ -11132,10 +11380,15 @@ entities: fixtures: {} - uid: 18570 components: + - type: MetaData + name: Atmospherics Air Alarm - type: Transform rot: 3.141592653589793 rad pos: -33.5,11.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18310 @@ -11154,10 +11407,15 @@ entities: fixtures: {} - uid: 18582 components: + - type: MetaData + name: QM Office Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -57.5,5.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 24155 @@ -11168,10 +11426,15 @@ entities: fixtures: {} - uid: 18584 components: + - type: MetaData + name: Cargo Backroom Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: -51.5,-6.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 16671 @@ -11188,10 +11451,15 @@ entities: fixtures: {} - uid: 18587 components: + - type: MetaData + name: Salvage Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: -51.5,-19.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 17902 @@ -11203,10 +11471,15 @@ entities: fixtures: {} - uid: 18603 components: + - type: MetaData + name: Medical Entryway Air Alarm - type: Transform rot: 3.141592653589793 rad pos: -7.5,-40.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18594 @@ -11221,9 +11494,14 @@ entities: fixtures: {} - uid: 18606 components: + - type: MetaData + name: Medical Main Air Alarm - type: Transform pos: -13.5,-30.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18600 @@ -11245,10 +11523,15 @@ entities: fixtures: {} - uid: 18611 components: + - type: MetaData + name: Medical Main Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: -13.5,-29.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18600 @@ -11273,9 +11556,14 @@ entities: fixtures: {} - uid: 18623 components: + - type: MetaData + name: Theatre Front Air Alarm - type: Transform pos: -39.5,-39.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18621 @@ -11294,10 +11582,15 @@ entities: fixtures: {} - uid: 18645 components: + - type: MetaData + name: Security Airlock Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: 39.5,-29.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18634 @@ -11308,9 +11601,14 @@ entities: fixtures: {} - uid: 18650 components: + - type: MetaData + name: Security Locker Room Air Alarm - type: Transform pos: 33.5,-29.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18640 @@ -11324,10 +11622,15 @@ entities: fixtures: {} - uid: 18652 components: + - type: MetaData + name: Security Connector Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: 44.5,-34.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18638 @@ -11342,10 +11645,15 @@ entities: fixtures: {} - uid: 18658 components: + - type: MetaData + name: HOS Office Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: 38.5,-39.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18638 @@ -11358,10 +11666,15 @@ entities: fixtures: {} - uid: 18663 components: + - type: MetaData + name: Science Main Air Alarm - type: Transform rot: 3.141592653589793 rad pos: 19.5,-44.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18249 @@ -11382,9 +11695,14 @@ entities: fixtures: {} - uid: 18667 components: + - type: MetaData + name: Anomaly Gen Air Alarm - type: Transform pos: 19.5,-36.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18659 @@ -11395,9 +11713,14 @@ entities: fixtures: {} - uid: 18676 components: + - type: MetaData + name: Arti Chamber 2 Air Alarm - type: Transform pos: 10.5,-32.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18669 @@ -11405,9 +11728,14 @@ entities: fixtures: {} - uid: 18677 components: + - type: MetaData + name: Arti Chamber 1 Air Alarm - type: Transform pos: 4.5,-32.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18670 @@ -11415,10 +11743,15 @@ entities: fixtures: {} - uid: 18678 components: + - type: MetaData + name: Xenoarcheology Air Alarm - type: Transform rot: 3.141592653589793 rad pos: 5.5,-40.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18660 @@ -11430,10 +11763,15 @@ entities: fixtures: {} - uid: 18687 components: + - type: MetaData + name: Chemistry Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -18.5,-42.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 2200 @@ -11446,10 +11784,15 @@ entities: fixtures: {} - uid: 18690 components: + - type: MetaData + name: Borging Room Air Alarm - type: Transform rot: 3.141592653589793 rad pos: -13.5,-51.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 15420 @@ -11459,10 +11802,15 @@ entities: fixtures: {} - uid: 18691 components: + - type: MetaData + name: Surgery Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -28.5,-41.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18597 @@ -11473,10 +11821,15 @@ entities: fixtures: {} - uid: 18697 components: + - type: MetaData + name: Virology Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -33.5,-16.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18698 @@ -11487,10 +11840,15 @@ entities: fixtures: {} - uid: 20717 components: + - type: MetaData + name: Engineering Bar Air Alarm - type: Transform rot: 3.141592653589793 rad pos: 14.5,30.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18523 @@ -11501,6 +11859,24 @@ entities: - 16774 - type: Fixtures fixtures: {} + - uid: 20864 + components: + - type: MetaData + name: Air Storage Room Air Alarm + - type: Transform + rot: 3.141592653589793 rad + pos: -27.5,34.5 + parent: 2 + - type: DeviceList + devices: + - 9112 + - 28612 + - 3136 + - type: AccessReader + accessListsOriginal: + - - Atmospherics + - type: Fixtures + fixtures: {} - uid: 21369 components: - type: Transform @@ -11623,10 +11999,15 @@ entities: fixtures: {} - uid: 23235 components: + - type: MetaData + name: Cargo Front Desk Air Alarm - type: Transform rot: 3.141592653589793 rad pos: -49.5,-5.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 79 @@ -11653,10 +12034,15 @@ entities: fixtures: {} - uid: 23679 components: + - type: MetaData + name: Engineering Dock Air Alarm - type: Transform rot: 3.141592653589793 rad pos: -2.5,48.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 16775 @@ -11670,10 +12056,15 @@ entities: fixtures: {} - uid: 23682 components: + - type: MetaData + name: Engineering Dock Hall Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -0.5,45.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 16552 @@ -11688,9 +12079,14 @@ entities: fixtures: {} - uid: 23683 components: + - type: MetaData + name: Atmos Stockroom Air Alarm - type: Transform pos: -6.5,44.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 13630 @@ -11705,10 +12101,15 @@ entities: fixtures: {} - uid: 23903 components: + - type: MetaData + name: Science East Maints Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: 23.5,-36.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 23904 @@ -11718,10 +12119,15 @@ entities: fixtures: {} - uid: 23907 components: + - type: MetaData + name: South Sec Maints Air Alarm - type: Transform rot: 3.141592653589793 rad pos: 40.5,-45.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 14530 @@ -11734,10 +12140,15 @@ entities: fixtures: {} - uid: 23909 components: + - type: MetaData + name: Northeast Maints Air Alarm - type: Transform rot: 3.141592653589793 rad pos: 39.5,34.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 23908 @@ -11747,10 +12158,15 @@ entities: fixtures: {} - uid: 23915 components: + - type: MetaData + name: Engineering Escape Pods Air Alarm - type: Transform rot: 3.141592653589793 rad pos: 26.5,51.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 23914 @@ -11760,9 +12176,14 @@ entities: fixtures: {} - uid: 23917 components: + - type: MetaData + name: Kitchen Maints North Air Alarm - type: Transform pos: -13.5,26.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 23921 @@ -11771,10 +12192,15 @@ entities: fixtures: {} - uid: 23918 components: + - type: MetaData + name: Bar Maints Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: -22.5,16.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 23920 @@ -11782,20 +12208,17 @@ entities: - 23919 - type: Fixtures fixtures: {} - - uid: 23926 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -50.5,-41.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 23927 components: + - type: MetaData + name: Maintenence Bar Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -50.5,-41.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 23924 @@ -11807,6 +12230,8 @@ entities: fixtures: {} - uid: 24091 components: + - type: MetaData + name: Robotics Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: -5.5,-45.5 @@ -11880,10 +12305,15 @@ entities: fixtures: {} - uid: 28414 components: + - type: MetaData + name: Crematorium Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: 6.5,-21.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 14005 @@ -11891,24 +12321,17 @@ entities: - 29930 - type: Fixtures fixtures: {} - - uid: 28611 - components: - - type: Transform - pos: -28.5,34.5 - parent: 2 - - type: DeviceList - devices: - - 3136 - - 9112 - - 28612 - - type: Fixtures - fixtures: {} - uid: 28879 components: + - type: MetaData + name: Bridge Hallway Air Alarm - type: Transform rot: 3.141592653589793 rad pos: 33.5,11.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18459 @@ -11926,10 +12349,15 @@ entities: fixtures: {} - uid: 28882 components: + - type: MetaData + name: Robotics Entryway Air Alarm - type: Transform rot: 3.141592653589793 rad pos: -2.5,-47.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29848 @@ -11939,6 +12367,8 @@ entities: fixtures: {} - uid: 29040 components: + - type: MetaData + name: Freezer Air Alarm - type: Transform rot: 3.141592653589793 rad pos: -16.5,20.5 @@ -11952,10 +12382,15 @@ entities: fixtures: {} - uid: 29459 components: + - type: MetaData + name: Medical Locker Room Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -27.5,-25.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 15827 @@ -11966,10 +12401,15 @@ entities: fixtures: {} - uid: 29460 components: + - type: MetaData + name: Medical Breakroom Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: -27.5,-26.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 15850 @@ -11979,10 +12419,15 @@ entities: fixtures: {} - uid: 29462 components: + - type: MetaData + name: Psych Lobby Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -39.5,-31.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29461 @@ -11994,6 +12439,8 @@ entities: fixtures: {} - uid: 29773 components: + - type: MetaData + name: Tech Vault Air Alarm - type: Transform rot: 3.141592653589793 rad pos: -45.5,-22.5 @@ -12007,9 +12454,14 @@ entities: fixtures: {} - uid: 29789 components: + - type: MetaData + name: Secondary SMES Air Alarm - type: Transform pos: 35.5,41.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 16345 @@ -12019,9 +12471,14 @@ entities: fixtures: {} - uid: 29792 components: + - type: MetaData + name: Gravity Generator Air Alarm - type: Transform pos: 36.5,34.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29793 @@ -12031,10 +12488,15 @@ entities: fixtures: {} - uid: 29794 components: + - type: MetaData + name: Botany Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: 11.5,23.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29797 @@ -12042,20 +12504,17 @@ entities: - 16477 - type: Fixtures fixtures: {} - - uid: 29795 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 16.5,22.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 29796 components: + - type: MetaData + name: Botany Locker Room Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: 16.5,22.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 16476 @@ -12063,20 +12522,17 @@ entities: - 29798 - type: Fixtures fixtures: {} - - uid: 29799 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -33.5,-22.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 29800 components: + - type: MetaData + name: Virology Front Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -33.5,-22.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 18698 @@ -12087,10 +12543,15 @@ entities: fixtures: {} - uid: 29802 components: + - type: MetaData + name: Captain's Connector Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: 37.5,17.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 14764 @@ -12100,6 +12561,8 @@ entities: fixtures: {} - uid: 29803 components: + - type: MetaData + name: Captain's Bathroom Air Alarm - type: Transform rot: 3.141592653589793 rad pos: 35.5,19.5 @@ -12113,10 +12576,15 @@ entities: fixtures: {} - uid: 29805 components: + - type: MetaData + name: AME Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: 27.5,23.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29808 @@ -12126,10 +12594,15 @@ entities: fixtures: {} - uid: 29806 components: + - type: MetaData + name: Engineering Maintenance Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: 27.5,27.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29807 @@ -12139,10 +12612,15 @@ entities: fixtures: {} - uid: 29814 components: + - type: MetaData + name: Medical Back Hall Air Alarm - type: Transform rot: 3.141592653589793 rad pos: -21.5,-50.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29815 @@ -12152,10 +12630,15 @@ entities: fixtures: {} - uid: 29819 components: + - type: MetaData + name: Borging Viewing Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -18.5,-47.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 15386 @@ -12165,9 +12648,14 @@ entities: fixtures: {} - uid: 29842 components: + - type: MetaData + name: Chaplain Backroom Air Alarm - type: Transform pos: 11.5,-21.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29927 @@ -12177,10 +12665,15 @@ entities: fixtures: {} - uid: 29849 components: + - type: MetaData + name: Bathroom Air Alarm - type: Transform rot: 3.141592653589793 rad pos: -37.5,-9.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 14989 @@ -12190,10 +12683,15 @@ entities: fixtures: {} - uid: 29851 components: + - type: MetaData + name: Dorm 1 Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: -36.5,-14.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 14960 @@ -12202,10 +12700,15 @@ entities: fixtures: {} - uid: 29852 components: + - type: MetaData + name: Dorm 2 Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: -36.5,-19.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 14955 @@ -12214,10 +12717,15 @@ entities: fixtures: {} - uid: 29853 components: + - type: MetaData + name: Dorm 3 Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: -36.5,-24.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 14974 @@ -12226,6 +12734,8 @@ entities: fixtures: {} - uid: 29854 components: + - type: MetaData + name: Reporter Office Air Alarm - type: Transform pos: -45.5,-24.5 parent: 2 @@ -12238,9 +12748,14 @@ entities: fixtures: {} - uid: 29856 components: + - type: MetaData + name: Vault Air Alarm - type: Transform pos: -46.5,-6.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 879 @@ -12250,10 +12765,15 @@ entities: fixtures: {} - uid: 29858 components: + - type: MetaData + name: QM Bedroom Air Alarm - type: Transform rot: 3.141592653589793 rad pos: -48.5,4.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 15117 @@ -12262,6 +12782,8 @@ entities: fixtures: {} - uid: 29859 components: + - type: MetaData + name: Librarian Office Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -14.5,33.5 @@ -12274,10 +12796,15 @@ entities: fixtures: {} - uid: 29860 components: + - type: MetaData + name: Lawyer Office Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: 37.5,4.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 16136 @@ -12287,9 +12814,14 @@ entities: fixtures: {} - uid: 29861 components: + - type: MetaData + name: EVA Storage Air Alarm - type: Transform pos: 49.5,7.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 16125 @@ -12297,20 +12829,17 @@ entities: - 29863 - type: Fixtures fixtures: {} - - uid: 29867 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 38.5,-41.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 29868 components: + - type: MetaData + name: HOS Bedroom Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: 38.5,-41.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 14528 @@ -12319,9 +12848,14 @@ entities: fixtures: {} - uid: 29869 components: + - type: MetaData + name: Medical Maints Room Air Alarm - type: Transform pos: 30.5,-35.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 19072 @@ -12329,33 +12863,17 @@ entities: - 29871 - type: Fixtures fixtures: {} - - uid: 29870 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 39.5,-30.5 - parent: 2 - - type: DeviceList - devices: - - 14383 - - 18649 - - 14384 - - type: Fixtures - fixtures: {} - - uid: 29872 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 18.5,-31.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 29873 components: + - type: MetaData + name: RD Office Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: 18.5,-31.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 14927 @@ -12365,10 +12883,15 @@ entities: fixtures: {} - uid: 29874 components: + - type: MetaData + name: RD Bedroom Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: 18.5,-29.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29876 @@ -12378,9 +12901,14 @@ entities: fixtures: {} - uid: 29880 components: + - type: MetaData + name: Boxing Ring Air Alarm - type: Transform pos: 9.5,-51.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29706 @@ -12390,10 +12918,15 @@ entities: fixtures: {} - uid: 29883 components: + - type: MetaData + name: Zookeeper Office Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -22.5,-4.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 13735 @@ -12403,10 +12936,15 @@ entities: fixtures: {} - uid: 29884 components: + - type: MetaData + name: Science Maints Arti Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: 25.5,-50.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 14675 @@ -12416,10 +12954,15 @@ entities: fixtures: {} - uid: 29886 components: + - type: MetaData + name: Janitor Closet Air Alarm - type: Transform rot: 3.141592653589793 rad pos: 21.5,-5.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29887 @@ -12427,20 +12970,17 @@ entities: - 14089 - type: Fixtures fixtures: {} - - uid: 29893 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 44.5,-37.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 29894 components: + - type: MetaData + name: Firing Range Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: 44.5,-37.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29897 @@ -12448,18 +12988,16 @@ entities: - 14512 - type: Fixtures fixtures: {} - - uid: 29895 - components: - - type: Transform - pos: 55.5,-34.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 29896 components: + - type: MetaData + name: Firing Range 2 Air Alarm - type: Transform pos: 55.5,-34.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29898 @@ -12469,10 +13007,15 @@ entities: fixtures: {} - uid: 29899 components: + - type: MetaData + name: CE Office Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: 6.5,40.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29901 @@ -12482,10 +13025,15 @@ entities: fixtures: {} - uid: 29900 components: + - type: MetaData + name: CE Bedroom Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: 6.5,46.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 16447 @@ -12494,10 +13042,15 @@ entities: fixtures: {} - uid: 29902 components: + - type: MetaData + name: Northeastern Airlock Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: 32.5,49.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 16337 @@ -12505,25 +13058,17 @@ entities: - 29903 - type: Fixtures fixtures: {} - - uid: 29904 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -31.5,36.5 - parent: 2 - - type: DeviceList - devices: - - 9112 - - 28612 - - 3136 - - type: Fixtures - fixtures: {} - uid: 29905 components: + - type: MetaData + name: Bar Backroom Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -22.5,14.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29908 @@ -12533,10 +13078,15 @@ entities: fixtures: {} - uid: 29906 components: + - type: MetaData + name: Bar Air Alarm - type: Transform rot: 3.141592653589793 rad pos: -18.5,2.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29907 @@ -12546,10 +13096,15 @@ entities: fixtures: {} - uid: 29911 components: + - type: MetaData + name: Psychologist Office Air Alarm - type: Transform rot: 3.141592653589793 rad pos: -32.5,-41.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29914 @@ -12559,6 +13114,8 @@ entities: fixtures: {} - uid: 29912 components: + - type: MetaData + name: CMO Office Air Alarm - type: Transform rot: 3.141592653589793 rad pos: -24.5,-37.5 @@ -12570,20 +13127,17 @@ entities: - 29913 - type: Fixtures fixtures: {} - - uid: 29916 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -9.5,-29.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 29917 components: + - type: MetaData + name: Morgue Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: -9.5,-29.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 15809 @@ -12593,10 +13147,15 @@ entities: fixtures: {} - uid: 29918 components: + - type: MetaData + name: Paramedic Locker Room Air Alarm - type: Transform rot: 3.141592653589793 rad pos: -10.5,-30.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29915 @@ -12604,18 +13163,16 @@ entities: - 15796 - type: Fixtures fixtures: {} - - uid: 29920 - components: - - type: Transform - pos: -4.5,-31.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 29921 components: + - type: MetaData + name: Medical Front Desk Air Alarm - type: Transform pos: -4.5,-31.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29922 @@ -12625,6 +13182,8 @@ entities: fixtures: {} - uid: 29924 components: + - type: MetaData + name: Chapel Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: 23.5,-16.5 @@ -12638,10 +13197,15 @@ entities: fixtures: {} - uid: 29925 components: + - type: MetaData + name: Chapel Library Air Alarm - type: Transform rot: 3.141592653589793 rad pos: 20.5,-15.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29929 @@ -12651,10 +13215,15 @@ entities: fixtures: {} - uid: 29928 components: + - type: MetaData + name: Chaplain Office Air Alarm - type: Transform rot: 3.141592653589793 rad pos: 8.5,-21.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29926 @@ -12664,9 +13233,14 @@ entities: fixtures: {} - uid: 29932 components: + - type: MetaData + name: Virology Room 2 Air Alarm - type: Transform pos: -28.5,-9.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 15900 @@ -12676,9 +13250,14 @@ entities: fixtures: {} - uid: 29933 components: + - type: MetaData + name: Virology Room 3 Air Alarm - type: Transform pos: -25.5,-9.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 15905 @@ -12688,17 +13267,27 @@ entities: fixtures: {} - uid: 29934 components: + - type: MetaData + name: Virology Containment Air Alarm - type: Transform pos: -24.5,-17.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: Fixtures fixtures: {} - uid: 29938 components: + - type: MetaData + name: Telecomms Air Alarm - type: Transform rot: 3.141592653589793 rad pos: -31.5,-9.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29939 @@ -12709,9 +13298,14 @@ entities: fixtures: {} - uid: 30357 components: + - type: MetaData + name: Security Main Air Alarm - type: Transform pos: 33.5,-17.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 14168 @@ -12735,9 +13329,14 @@ entities: fixtures: {} - uid: 30360 components: + - type: MetaData + name: Warden Office Air Alarm - type: Transform pos: 48.5,-14.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 30359 @@ -12755,10 +13354,15 @@ entities: fixtures: {} - uid: 30363 components: + - type: MetaData + name: Armory Connector Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: 49.5,-20.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 30327 @@ -12773,10 +13377,15 @@ entities: fixtures: {} - uid: 30364 components: + - type: MetaData + name: Armory Air Alarm - type: Transform rot: 3.141592653589793 rad pos: 52.5,-20.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 30331 @@ -12789,10 +13398,15 @@ entities: fixtures: {} - uid: 30365 components: + - type: MetaData + name: Security Front Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: 33.5,-2.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 30336 @@ -12811,9 +13425,14 @@ entities: fixtures: {} - uid: 30366 components: + - type: MetaData + name: Genpop Air Alarm - type: Transform pos: 34.5,-12.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 30335 @@ -12834,10 +13453,15 @@ entities: fixtures: {} - uid: 30402 components: + - type: MetaData + name: HOP Office Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: 49.5,-7.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 30338 @@ -12853,10 +13477,15 @@ entities: fixtures: {} - uid: 30403 components: + - type: MetaData + name: Courtroom Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: 43.5,-3.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 29955 @@ -12871,10 +13500,15 @@ entities: fixtures: {} - uid: 30404 components: + - type: MetaData + name: Security Checkpoint Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: 29.5,-3.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 11912 @@ -12889,10 +13523,15 @@ entities: fixtures: {} - uid: 30826 components: + - type: MetaData + name: Observatory Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: 32.5,-49.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 14614 @@ -12907,10 +13546,15 @@ entities: fixtures: {} - uid: 31038 components: + - type: MetaData + name: AI Upload Air Alarm - type: Transform rot: 3.141592653589793 rad pos: 56.5,12.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 31006 @@ -12924,10 +13568,15 @@ entities: fixtures: {} - uid: 31039 components: + - type: MetaData + name: AI Storage Air Alarm - type: Transform rot: 1.5707963267948966 rad pos: 48.5,20.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceList devices: - 31022 @@ -12942,6 +13591,8 @@ entities: fixtures: {} - uid: 31040 components: + - type: MetaData + name: AI Core Air Alarm - type: Transform rot: -1.5707963267948966 rad pos: 62.5,24.5 @@ -12955,14 +13606,6 @@ entities: - 31036 - type: Fixtures fixtures: {} - - uid: 31353 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -13.5,39.5 - parent: 2 - - type: Fixtures - fixtures: {} - proto: AirCanister entities: - uid: 2674 @@ -13265,12 +13908,16 @@ entities: rot: 1.5707963267948966 rad pos: -39.5,-14.5 parent: 2 + - type: AccessReader + accessListsOriginal: [] - uid: 12132 components: - type: Transform rot: 1.5707963267948966 rad pos: -39.5,-19.5 parent: 2 + - type: AccessReader + accessListsOriginal: [] - uid: 12133 components: - type: Transform @@ -15517,7 +16164,7 @@ entities: pos: -22.5,26.5 parent: 2 - type: Door - secondsUntilStateChange: -245564.78 + secondsUntilStateChange: -257120.67 state: Opening - type: DeviceLinkSource lastSignals: @@ -15732,6 +16379,8 @@ entities: - type: Transform pos: 20.5,26.5 parent: 2 + - type: AccessReader + accessListsOriginal: [] - uid: 28278 components: - type: Transform @@ -16124,6 +16773,8 @@ entities: rot: 3.141592653589793 rad pos: -53.5,4.5 parent: 2 + - type: AccessReader + accessListsOriginal: [] - proto: AirlockQuartermasterLocked entities: - uid: 11292 @@ -16373,7 +17024,7 @@ entities: lastSignals: DoorStatus: True - type: Door - secondsUntilStateChange: -344393.44 + secondsUntilStateChange: -355949.3 state: Opening - uid: 6934 components: @@ -16385,7 +17036,7 @@ entities: lastSignals: DoorStatus: True - type: Door - secondsUntilStateChange: -344396.06 + secondsUntilStateChange: -355951.94 state: Opening - uid: 6935 components: @@ -16397,7 +17048,7 @@ entities: lastSignals: DoorStatus: True - type: Door - secondsUntilStateChange: -344394.9 + secondsUntilStateChange: -355950.78 state: Opening - uid: 6936 components: @@ -16408,7 +17059,7 @@ entities: lastSignals: DoorStatus: True - type: Door - secondsUntilStateChange: -344394.12 + secondsUntilStateChange: -355950 state: Opening - proto: AirlockTheatreLocked entities: @@ -16417,6 +17068,8 @@ entities: - type: Transform pos: -32.5,-46.5 parent: 2 + - type: AccessReader + accessListsOriginal: [] - proto: AirlockVirologyGlassLocked entities: - uid: 1224 @@ -17136,7 +17789,6 @@ entities: - type: DeviceNetwork deviceLists: - 18650 - - 29870 - uid: 18656 components: - type: Transform @@ -17518,8 +18170,7 @@ entities: parent: 2 - type: DeviceNetwork deviceLists: - - 28611 - - 29904 + - 20864 - uid: 28968 components: - type: Transform @@ -17612,6 +18263,9 @@ entities: rot: 3.141592653589793 rad pos: 36.5,17.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Atmospherics - type: DeviceNetwork deviceLists: - 29802 @@ -18166,6 +18820,9 @@ entities: rot: -1.5707963267948966 rad pos: 27.5,26.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Engineering - type: Fixtures fixtures: {} - uid: 5556 @@ -18242,14 +18899,22 @@ entities: - type: Transform pos: -40.5,5.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Engineering - type: Fixtures fixtures: {} - uid: 9190 components: + - type: MetaData + name: APC - type: Transform rot: 1.5707963267948966 rad pos: -25.5,44.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Engineering - type: Fixtures fixtures: {} - uid: 10615 @@ -18366,6 +19031,9 @@ entities: - type: Transform pos: -2.5,44.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Engineering - type: Fixtures fixtures: {} - uid: 29223 @@ -18453,6 +19121,9 @@ entities: rot: -1.5707963267948966 rad pos: 20.5,45.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Engineering - type: Fixtures fixtures: {} - uid: 2023 @@ -18470,6 +19141,9 @@ entities: - type: Transform pos: 12.5,-40.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Engineering - type: Fixtures fixtures: {} - proto: APCSuperCapacity @@ -83241,6 +83915,9 @@ entities: rot: 1.5707963267948966 rad pos: -9.5,-33.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Medical - proto: ComputerCargoOrdersScience entities: - uid: 18917 @@ -84348,6 +85025,9 @@ entities: - type: Transform pos: -4.5,43.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Engineering - proto: CrateEngineeringSolar entities: - uid: 23790 @@ -100353,7 +101033,7 @@ entities: pos: -13.5,-1.5 parent: 2 - type: Door - secondsUntilStateChange: -335717.44 + secondsUntilStateChange: -347273.3 - type: DeviceNetwork deviceLists: - 18275 @@ -101615,10 +102295,14 @@ entities: - type: Transform pos: -8.5,18.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Engineering - type: DeviceNetwork deviceLists: - 18276 - 18285 + - 505 - uid: 18297 components: - type: Transform @@ -101628,6 +102312,7 @@ entities: deviceLists: - 18276 - 18285 + - 505 - uid: 18298 components: - type: Transform @@ -101637,6 +102322,7 @@ entities: deviceLists: - 18276 - 18285 + - 505 - uid: 18299 components: - type: Transform @@ -101646,6 +102332,7 @@ entities: deviceLists: - 18276 - 18285 + - 505 - uid: 18300 components: - type: Transform @@ -101655,6 +102342,7 @@ entities: deviceLists: - 18276 - 18285 + - 505 - uid: 18301 components: - type: Transform @@ -101664,6 +102352,7 @@ entities: deviceLists: - 18276 - 18285 + - 505 - uid: 18307 components: - type: Transform @@ -133512,8 +134201,7 @@ entities: parent: 2 - type: DeviceNetwork deviceLists: - - 28611 - - 29904 + - 20864 - type: AtmosPipeColor color: '#0335FCFF' - uid: 3400 @@ -133975,6 +134663,9 @@ entities: rot: 3.141592653589793 rad pos: -7.5,20.5 parent: 2 + - type: DeviceNetwork + deviceLists: + - 505 - type: AtmosPipeColor color: '#0335FCFF' - uid: 14006 @@ -134075,7 +134766,6 @@ entities: - type: DeviceNetwork deviceLists: - 18650 - - 29870 - type: AtmosPipeColor color: '#0335FCFF' - uid: 14442 @@ -135899,8 +136589,7 @@ entities: parent: 2 - type: DeviceNetwork deviceLists: - - 28611 - - 29904 + - 20864 - type: AtmosPipeColor color: '#990000FF' - uid: 9858 @@ -136156,6 +136845,9 @@ entities: rot: 1.5707963267948966 rad pos: -4.5,20.5 parent: 2 + - type: DeviceNetwork + deviceLists: + - 505 - type: AtmosPipeColor color: '#990000FF' - uid: 14005 @@ -136268,7 +136960,6 @@ entities: - type: DeviceNetwork deviceLists: - 18650 - - 29870 - type: AtmosPipeColor color: '#990000FF' - uid: 14452 @@ -146582,6 +147273,9 @@ entities: - type: Transform pos: 35.5,-57.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Command - type: Label currentLabel: Observatory - type: NameModifier @@ -146670,6 +147364,9 @@ entities: - type: Transform pos: 23.5,27.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Command - type: Label currentLabel: Engi Commons - type: NameModifier @@ -146780,6 +147477,9 @@ entities: - type: Transform pos: 29.5,15.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Command - proto: HolopadCommandBridgeLongRange entities: - uid: 12882 @@ -146794,6 +147494,9 @@ entities: - type: Transform pos: 33.5,21.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Command - uid: 29058 components: - type: MetaData @@ -146892,6 +147595,9 @@ entities: - type: Transform pos: 25.5,38.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Command - proto: HolopadEngineeringFront entities: - uid: 2550 @@ -146906,6 +147612,9 @@ entities: - type: Transform pos: 13.5,45.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Command - proto: HolopadEngineeringPower entities: - uid: 29757 @@ -146927,6 +147636,9 @@ entities: - type: Transform pos: -45.5,-21.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Command - proto: HolopadEngineeringTelecoms entities: - uid: 29774 @@ -146934,6 +147646,9 @@ entities: - type: Transform pos: -30.5,-6.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Command - proto: HolopadGeneralArcade entities: - uid: 28967 @@ -146955,6 +147670,9 @@ entities: - type: Transform pos: -46.5,-31.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Command - proto: HolopadGeneralDisposals entities: - uid: 8179 @@ -146992,6 +147710,9 @@ entities: - type: Transform pos: 42.5,-6.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Command - type: Label currentLabel: Court LR - type: NameModifier @@ -147142,6 +147863,9 @@ entities: - type: Transform pos: 39.5,-5.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Command - proto: HolopadSecurityDetective entities: - uid: 8162 @@ -147261,6 +147985,9 @@ entities: - type: Transform pos: -21.5,-3.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Command - proto: HoloprojectorClownBorg entities: - uid: 31128 @@ -147308,7 +148035,7 @@ entities: pos: 36.5,-35.5 parent: 2 - type: Door - secondsUntilStateChange: -372549.22 + secondsUntilStateChange: -384105.1 state: Opening - uid: 5211 components: @@ -149959,6 +150686,9 @@ entities: - type: Transform pos: 20.5,-38.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Research - proto: MachineAnomalyVessel entities: - uid: 23584 @@ -170888,10 +171618,11 @@ entities: fixtures: {} - proto: SignFire entities: - - uid: 28553 + - uid: 12296 components: - type: Transform - pos: -27.5,34.5 + rot: 3.141592653589793 rad + pos: -24.5,34.5 parent: 2 - type: Fixtures fixtures: {} @@ -175514,6 +176245,9 @@ entities: - type: Transform pos: 15.5,-28.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - ResearchDirector - proto: StationAiUploadComputer entities: - uid: 29468 @@ -183356,6 +184090,9 @@ entities: - type: Transform pos: 25.5,34.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Engineering - proto: VendingMachineGames entities: - uid: 8043 @@ -204468,7 +205205,7 @@ entities: pos: 24.5,2.5 parent: 21002 - type: Door - secondsUntilStateChange: -717753.75 + secondsUntilStateChange: -729309.7 state: Opening - uid: 28863 components: From bb28458147ff127e1bb3fcada95d0f8ce09aaa21 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 22 Feb 2026 23:07:50 +0000 Subject: [PATCH 383/603] Automatic changelog update --- Resources/Changelog/Maps.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Resources/Changelog/Maps.yml b/Resources/Changelog/Maps.yml index efde22a3fe0..5183776d48e 100644 --- a/Resources/Changelog/Maps.yml +++ b/Resources/Changelog/Maps.yml @@ -1009,4 +1009,13 @@ id: 123 time: '2026-02-22T22:16:29.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42921 +- author: F1restar4 + changes: + - message: On Oasis, added an identifying label to every single air alarm + type: Tweak + - message: On Oasis, removed several duplicate air alarms + type: Fix + id: 124 + time: '2026-02-22T23:06:42.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42911 Order: 2 From cf74345ac62d2fe42dff54fffdda91b7fc7f3119 Mon Sep 17 00:00:00 2001 From: Rachel Lowe <60523642+11BelowStudio@users.noreply.github.com> Date: Sun, 22 Feb 2026 22:56:53 +0000 Subject: [PATCH 384/603] Fixed Packed by adding extra APC to comms room (#42953) * Fixed Packed by adding extra APC to comms room no more overloading at roundstart! * fixed it a bit more see https://discord.com/channels/310555209753690112/1470816826240794777/1473379281903157391 --- Resources/Maps/packed.yml | 109 +++++++++++++++++++++++++++++--------- 1 file changed, 84 insertions(+), 25 deletions(-) diff --git a/Resources/Maps/packed.yml b/Resources/Maps/packed.yml index a6d66a8fc7e..313af303d7b 100644 --- a/Resources/Maps/packed.yml +++ b/Resources/Maps/packed.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 268.0.0 + engineVersion: 272.0.0 forkId: "" forkVersion: "" - time: 11/27/2025 00:11:50 - entityCount: 15967 + time: 02/17/2026 18:18:48 + entityCount: 15978 maps: - 126 grids: @@ -6932,6 +6932,9 @@ entities: - type: RadiationGridResistance - type: SpreaderGrid - type: ImplicitRoof + - type: TileHistory + chunkHistory: {} + - type: ExplosionAirtightGrid - uid: 126 components: - type: MetaData @@ -11210,6 +11213,14 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 420 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 22.5,-20.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 598 components: - type: MetaData @@ -13859,11 +13870,6 @@ entities: - type: Transform pos: 16.5,-11.5 parent: 2 - - uid: 420 - components: - - type: Transform - pos: 18.5,-14.5 - parent: 2 - uid: 454 components: - type: Transform @@ -23609,6 +23615,11 @@ entities: - type: Transform pos: 57.5,13.5 parent: 2 + - uid: 15242 + components: + - type: Transform + pos: 22.5,-18.5 + parent: 2 - uid: 15319 components: - type: Transform @@ -23919,6 +23930,26 @@ entities: - type: Transform pos: 29.5,8.5 parent: 2 + - uid: 15975 + components: + - type: Transform + pos: 22.5,-19.5 + parent: 2 + - uid: 15976 + components: + - type: Transform + pos: 22.5,-20.5 + parent: 2 + - uid: 15977 + components: + - type: Transform + pos: 12.5,-16.5 + parent: 2 + - uid: 15978 + components: + - type: Transform + pos: 12.5,-18.5 + parent: 2 - proto: CableApcStack entities: - uid: 5627 @@ -31302,6 +31333,11 @@ entities: - type: Transform pos: 49.5,27.5 parent: 2 + - uid: 8986 + components: + - type: Transform + pos: 22.5,-20.5 + parent: 2 - uid: 9007 components: - type: Transform @@ -33547,6 +33583,11 @@ entities: - type: Transform pos: 21.5,-41.5 parent: 2 + - uid: 13167 + components: + - type: Transform + pos: 22.5,-19.5 + parent: 2 - uid: 13170 components: - type: Transform @@ -34917,6 +34958,31 @@ entities: - type: Transform pos: 43.5,46.5 parent: 2 + - uid: 15119 + components: + - type: Transform + pos: 22.5,-18.5 + parent: 2 + - uid: 15120 + components: + - type: Transform + pos: 22.5,-17.5 + parent: 2 + - uid: 15121 + components: + - type: Transform + pos: 22.5,-16.5 + parent: 2 + - uid: 15122 + components: + - type: Transform + pos: 22.5,-15.5 + parent: 2 + - uid: 15124 + components: + - type: Transform + pos: 22.5,-14.5 + parent: 2 - uid: 15315 components: - type: Transform @@ -43374,7 +43440,7 @@ entities: pos: 59.5,39.5 parent: 2 - type: Door - secondsUntilStateChange: -17814.623 + secondsUntilStateChange: -18326.117 state: Closing - proto: CurtainsWhiteOpen entities: @@ -49230,7 +49296,7 @@ entities: pos: 26.5,37.5 parent: 2 - type: Door - secondsUntilStateChange: -65108.41 + secondsUntilStateChange: -65619.91 state: Closing - uid: 9362 components: @@ -72203,7 +72269,7 @@ entities: pos: 12.5,12.5 parent: 2 - type: Door - secondsUntilStateChange: -3280.357 + secondsUntilStateChange: -3791.852 state: Closing - uid: 5750 components: @@ -75263,6 +75329,13 @@ entities: - type: Transform pos: -3.4634295,-18.46823 parent: 2 +- proto: PlushieSpawner50 + entities: + - uid: 8652 + components: + - type: Transform + pos: 84.5,12.5 + parent: 2 - proto: PortableFlasher entities: - uid: 13649 @@ -89934,13 +90007,6 @@ entities: - type: Transform pos: 36.693336,32.541332 parent: 2 -- proto: TowelColorOrange - entities: - - uid: 13167 - components: - - type: Transform - pos: 39.307285,22.41729 - parent: 2 - proto: TowercapSeeds entities: - uid: 2601 @@ -89962,13 +90028,6 @@ entities: - type: Transform pos: 12.5,12.5 parent: 2 -- proto: ToySpawner - entities: - - uid: 8652 - components: - - type: Transform - pos: 84.5,12.5 - parent: 2 - proto: TrashBag entities: - uid: 8394 From ae26d205a675b46e0ebc8d4fc295f42884a5292e Mon Sep 17 00:00:00 2001 From: Alzore <140123969+Blackern5000@users.noreply.github.com> Date: Sun, 22 Feb 2026 17:01:18 -0600 Subject: [PATCH 385/603] Remake the "Vegan Meatball" salvage wreck (#42994) * remake vegan meatball, fix lingering plant enemies * attempt to remove non-salv ruleset enemy spawns --- Resources/Maps/Salvage/vegan-meatball.yml | 2225 ++++++++++------- .../Markers/Spawners/Random/salvage.yml | 23 + .../Entities/Mobs/NPCs/living_light.yml | 21 + 3 files changed, 1384 insertions(+), 885 deletions(-) diff --git a/Resources/Maps/Salvage/vegan-meatball.yml b/Resources/Maps/Salvage/vegan-meatball.yml index 824e3d0b7ea..a58c88fbb48 100644 --- a/Resources/Maps/Salvage/vegan-meatball.yml +++ b/Resources/Maps/Salvage/vegan-meatball.yml @@ -1,43 +1,55 @@ meta: - format: 6 - postmapinit: false + format: 7 + category: Grid + engineVersion: 272.0.0 + forkId: "" + forkVersion: "" + time: 02/22/2026 14:02:08 + entityCount: 376 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] tilemap: - 0: Space - 49: FloorGrassJungle - 74: FloorPlanetGrass + 4: Space + 1: FloorHydro + 0: FloorJungleAstroGrass + 3: FloorTechMaint3 + 5: Lattice + 2: Plating entities: - proto: "" entities: - uid: 1 components: - type: MetaData - name: grid + name: '"Vegan Meatball" Space Wreckage' - type: Transform - pos: -0.5,-0.46875 + pos: -0.5,-0.453125 parent: invalid - type: MapGrid chunks: 0,0: ind: 0,0 - tiles: MQAAAAAAMQAAAAAAMQAAAAAASgAAAAAAMQAAAAAAMQAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQAAAAAAMQAAAAAASgAAAAAASgAAAAAAMQAAAAAAMQAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQAAAAAAMQAAAAAASgAAAAAASgAAAAAAMQAAAAAASgAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQAAAAAAMQAAAAAAMQAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQAAAAAAMQAAAAAAMQAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQAAAAAAMQAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAABQAAAAAAAAIAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAUAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAA== + version: 7 -1,0: ind: -1,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQAAAAAAMQAAAAAAMQAAAAAASgAAAAAASgAAAAAASgAAAAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAAAASgAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAAAASgAAAAAASgAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 + tiles: BAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAIAAAAAAAACAAAAAAAABQAAAAAAAAUAAAAAAAACAAAAAAAAAAAAAAAAAAIAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAACAAAAAAAAAgAAAAAAAAUAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAFAAAAAAAABQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAUAAAAAAAAEAAAAAAAAAgAAAAAAAAIAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAA== + version: 7 -1,-1: ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAAAASgAAAAAASgAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAAAASgAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAAAASgAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAASgAAAAAASgAAAAAASgAAAAAA - version: 6 + tiles: BAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAFAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAA== + version: 7 0,-1: ind: 0,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQAAAAAAMQAAAAAAMQAAAAAASgAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQAAAAAAMQAAAAAAMQAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgAAAAAASgAAAAAASgAAAAAASgAAAAAAMQAAAAAASgAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 + tiles: BAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAgAAAAAAAAUAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAIAAAAAAAAFAAAAAAAABAAAAAAAAAUAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAACAAAAAAAAAgAAAAAAAAUAAAAAAAACAAAAAAAABQAAAAAAAAUAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAUAAAAAAAADAAAAAAAABQAAAAAAAAIAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAAFAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAA== + version: 7 - type: Broadphase - type: Physics bodyStatus: InAir - angularDamping: 0.05 - linearDamping: 0.05 fixedRotation: False bodyType: Dynamic - type: Fixtures @@ -45,6 +57,8 @@ entities: - type: OccluderTree - type: SpreaderGrid - type: Shuttle + dampingModifier: 0.25 + - type: ImplicitRoof - type: GridPathfinding - type: Gravity gravityShakeSound: !type:SoundPathSpecifier @@ -52,1643 +66,2084 @@ entities: - type: DecalGrid chunkCollection: version: 2 - nodes: - - node: - color: '#FFFFFFFF' - id: Bushf1 - decals: - 4: -4.57722,1.2575569 - 5: -3.311595,3.601307 - 6: 0.36809254,0.22630692 - 7: 0.41496754,-4.5783806 - 8: -5.6787825,-1.5549431 - 71: -1.38972,-4.320568 - 72: -0.56940746,-4.836193 - 73: -0.78034496,-3.851818 - 74: -1.7881575,-4.2033806 - 75: -2.42097,-3.523693 - 76: 0.57903004,1.1638069 - 77: -0.030344963,1.8434944 - 78: -0.19440746,0.5309944 - 79: 0.53215504,-0.19556811 - - node: - color: '#FFFFFFFF' - id: Bushf2 - decals: - 0: -1.3662825,2.382557 - 1: -4.20222,-1.8361931 - 2: -2.2100325,-3.523693 - 3: 4.2587175,-0.5002556 - 80: 0.60246754,1.4450569 - 81: 0.78996754,3.085682 - 82: 0.69621754,3.460682 - 83: 0.27434254,4.0934944 - 84: 1.2587175,3.6247444 - 85: 0.06340504,4.7028694 - 86: 4.6337175,-0.6174431 - 87: 4.89153,-0.3596306 - 88: 0.22746754,-4.3440056 - 89: -1.5069075,-4.6721306 - 90: -2.5850325,-3.195568 - 91: -1.95222,-4.320568 - - node: - color: '#FFFFFFFF' - id: Bushf3 - decals: - 9: -2.04597,1.8434944 - 10: -2.749095,3.2966194 - 11: -4.717845,1.9138069 - 12: -3.6162825,-3.1252556 - 13: -3.63972,-2.070568 - 14: -2.4912825,-2.9377556 - 15: -0.52253246,-4.461193 - 16: 4.4462175,-0.7111931 - 17: 4.3055925,0.24974442 - 66: -0.19440746,1.4450569 - 67: 1.0243425,-0.101818115 - 68: 0.43840504,-0.6408806 - 69: -1.3662825,1.2341194 - 70: -0.10065746,1.8903694 - 92: -1.7881575,-0.2658806 - 93: 0.39153004,-0.0080681145 - 94: -1.20222,1.2575569 - 95: 0.88371754,-0.2893181 - 96: 0.97746754,2.054432 - 97: 0.86028004,0.085681915 - 98: -1.7412825,-3.804943 - 99: -0.71003246,-4.3440056 - 100: -2.04597,-3.2190056 - - node: - color: '#FFFFFFFF' - id: Bushl1 - decals: - 27: -5.374095,-1.2502556 - 28: -4.2256575,-2.0002556 - 29: -4.85847,2.6403694 - 30: -4.249095,3.1559944 - 31: -1.8350325,3.038807 - 32: -1.3662825,3.5778694 - 33: -2.42097,2.804432 - 34: -3.9912825,-2.7502556 - 35: 0.48528004,-4.414318 - 36: -1.76472,-3.4065056 - 37: -0.59284496,-4.8127556 - 38: 1.14153,-0.6643181 - 39: -0.19440746,2.570057 - - node: - color: '#FFFFFFFF' - id: Bushl2 - decals: - 40: 0.81340504,1.7263069 - 41: -1.624095,3.273182 - 42: -2.3506575,3.9059944 - 43: -3.82722,3.9997444 - 44: 0.90715504,3.9997444 - 45: 4.657155,-1.1330681 - 46: 4.04778,0.36693192 - 47: 5.032155,-1.0158806 - 48: -0.17096996,-4.320568 - 49: -0.56940746,-4.695568 - 50: -2.32722,-4.2033806 - - node: - color: '#FFFFFFFF' - id: Bushl3 - decals: - 57: -1.20222,2.4528694 - 58: -0.66315746,3.554432 - 59: -3.4756575,2.4059944 - 60: -4.0850325,2.616932 - 61: -6.26472,-0.7111931 - 62: -3.4287825,-2.4690056 - 63: -1.4600325,-4.273693 - 64: -0.82721996,-3.5940056 - 65: -0.38190746,-4.4846306 - - node: - color: '#FFFFFFFF' - id: Bushl4 - decals: - 18: -0.80378246,2.851307 - 19: -3.967845,3.460682 - 20: -4.76472,1.9372444 - 21: 0.46184254,0.32005692 - 22: -0.45221996,2.335682 - 23: -3.1475325,-2.2346306 - 24: -4.436595,-1.1565056 - 25: -1.48347,-3.5471306 - 26: 3.9774675,-1.0861931 - 51: -4.3194075,-0.9690056 - 52: -2.561595,-3.054943 - 53: -1.85847,-4.039318 - 54: -5.3506575,-1.7893181 - 55: -0.52253246,0.8825569 - 56: -1.20222,2.4528694 + nodes: [] - type: GridAtmosphere version: 2 data: - tiles: - 0,0: - 0: 65535 - -1,0: - 0: 65535 - 0,1: - 0: 65535 - 1,0: - 0: 65535 - 1,1: - 0: 4983 - 2,0: - 0: 17 - -2,0: - 0: 61166 - -2,1: - 0: 206 - -1,1: - 0: 36863 - -2,-1: - 0: 61166 - -2,-2: - 0: 49152 - -1,-2: - 0: 65472 - -1,-1: - 0: 65535 - 0,-2: - 0: 65392 - 0,-1: - 0: 65535 - 1,-2: - 0: 12288 - 1,-1: - 0: 65527 - 2,-1: - 0: 4352 - uniqueMixes: - - volume: 2500 - temperature: 293.15 - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 chunkSize: 4 - type: GasTileOverlay - type: RadiationGridResistance -- proto: AnomalyFlora + - type: TileHistory + chunkHistory: {} + - type: ExplosionAirtightGrid +- proto: AirlockAssemblyHydroponicsGlass entities: - - uid: 3 + - uid: 71 components: - type: Transform - pos: 0.5,0.515625 + pos: 2.5,2.5 parent: 1 -- proto: AnomalyFloraBulb +- proto: AirlockMaintLocked entities: - - uid: 2 + - uid: 44 components: - type: Transform - pos: 2.5,-0.5 + pos: 4.5,3.5 parent: 1 - - uid: 129 +- proto: AnomalyFlora + entities: + - uid: 65 components: - type: Transform - pos: -0.5,1.5 + pos: 0.5,0.5 parent: 1 - - uid: 130 +- proto: AnomalyFloraBulb + entities: + - uid: 185 components: - type: Transform - pos: 1.5,2.5 + pos: -5.5,0.5 parent: 1 - - uid: 131 + - uid: 186 components: - type: Transform - pos: 4.5,-1.5 + pos: -3.5,2.5 parent: 1 - - uid: 132 + - uid: 197 components: - type: Transform - pos: 5.5,-0.5 + pos: -0.5,-3.5 parent: 1 - - uid: 133 + - uid: 214 components: - type: Transform pos: -2.5,-2.5 parent: 1 - - uid: 134 + - uid: 223 components: - type: Transform - pos: -0.5,-3.5 + pos: -0.5,3.5 parent: 1 - - uid: 135 +- proto: AnomalyScanner + entities: + - uid: 124 components: - type: Transform - pos: -1.5,3.5 + pos: 0.03125,-4.375 parent: 1 - - uid: 136 +- proto: APCConstructed + entities: + - uid: 82 components: - type: Transform - pos: -2.5,4.5 + pos: 0.5,2.5 parent: 1 - - uid: 137 + - type: Fixtures + fixtures: {} +- proto: AppleSeeds + entities: + - uid: 174 components: - type: Transform - pos: -4.5,2.5 + pos: 0.3125,-0.578125 parent: 1 - - uid: 138 + - uid: 176 components: - type: Transform - pos: -5.5,-1.5 + pos: 0.734375,-0.46875 parent: 1 - - uid: 139 +- proto: Biogenerator + entities: + - uid: 151 components: - type: Transform - pos: 4.5,1.5 + pos: -2.5,4.5 parent: 1 - - uid: 158 +- proto: Bucket + entities: + - uid: 152 components: - type: Transform - pos: 0.5,4.5 + pos: 6.015625,0.21875 parent: 1 - - uid: 167 +- proto: CableApcExtension + entities: + - uid: 101 components: - type: Transform - pos: 1.5,0.5 + pos: -0.5,3.5 parent: 1 - - uid: 169 + - uid: 119 components: - type: Transform - pos: -3.5,-3.5 + pos: 0.5,2.5 parent: 1 - - uid: 188 + - uid: 120 components: - type: Transform - pos: 5.5,0.5 + pos: 0.5,1.5 parent: 1 - - uid: 189 + - uid: 121 components: - type: Transform - pos: 4.5,1.5 + pos: 0.5,0.5 parent: 1 - - uid: 190 + - uid: 122 components: - type: Transform - pos: -3.5,-0.5 + pos: 0.5,-0.5 parent: 1 - - uid: 191 + - uid: 203 components: - type: Transform - pos: -3.5,1.5 + pos: -1.5,3.5 parent: 1 - - uid: 193 + - uid: 215 components: - type: Transform - pos: -5.5,0.5 + pos: -2.5,3.5 parent: 1 - - uid: 198 + - uid: 315 components: - type: Transform - pos: -0.5,-4.5 + pos: 0.5,-1.5 parent: 1 - - uid: 199 + - uid: 316 components: - type: Transform - pos: 1.5,-3.5 + pos: 0.5,-2.5 parent: 1 - - uid: 200 + - uid: 317 components: - type: Transform - pos: 2.5,-4.5 + pos: 1.5,3.5 parent: 1 -- proto: FoodAloe - entities: - - uid: 248 + - uid: 318 components: - type: Transform - pos: 1.6065493,3.296236 + pos: -0.5,-2.5 parent: 1 - - uid: 254 + - uid: 319 components: - type: Transform - pos: 1.3252993,3.389986 + pos: 0.5,3.5 parent: 1 - - uid: 255 + - uid: 320 components: - type: Transform - pos: 1.7237368,3.4134235 + pos: 2.5,3.5 parent: 1 -- proto: FoodBlueTomato - entities: - - uid: 218 + - uid: 321 components: - type: Transform - pos: 5.5281873,0.9375 + pos: 3.5,3.5 parent: 1 -- proto: FoodGalaxythistle - entities: - - uid: 249 + - uid: 322 components: - type: Transform - pos: 1.4659243,3.5540485 + pos: 4.5,3.5 parent: 1 - - uid: 256 + - uid: 323 components: - type: Transform - pos: 1.1846743,3.5540485 + pos: 6.5,3.5 parent: 1 -- proto: FoodGrape - entities: - - uid: 247 + - uid: 324 components: - type: Transform - pos: 0.38779926,5.593111 + pos: 5.5,3.5 parent: 1 - - uid: 252 + - uid: 325 components: - type: Transform - pos: 0.62217426,5.3821735 + pos: 6.5,2.5 parent: 1 -- proto: FoodLemoon - entities: - - uid: 226 + - uid: 326 components: - type: Transform - pos: 4.8485,-0.3515625 + pos: 6.5,0.5 parent: 1 - - uid: 227 + - uid: 327 components: - type: Transform - pos: 4.614125,-0.4921875 + pos: 6.5,1.5 parent: 1 -- proto: FoodLingzhi - entities: - - uid: 217 + - uid: 342 components: - type: Transform - pos: 4.5438123,1.921875 + pos: -3.5,3.5 parent: 1 - - uid: 225 + - uid: 343 components: - type: Transform - pos: 4.7313123,2.0625 + pos: -4.5,3.5 parent: 1 -- proto: FoodPumpkin - entities: - - uid: 245 + - uid: 344 components: - type: Transform - pos: -1.5106382,2.6165485 + pos: -3.5,2.5 parent: 1 -- proto: FoodTomato - entities: - - uid: 243 + - uid: 345 components: - type: Transform - pos: 0.31748676,2.7102985 + pos: -3.5,1.5 parent: 1 - - uid: 251 + - uid: 346 components: - type: Transform - pos: 0.78623676,2.5227985 + pos: -3.5,0.5 parent: 1 -- proto: FoodWatermelon - entities: - - uid: 244 + - uid: 347 components: - type: Transform - pos: -1.6278257,-2.235014 + pos: -3.5,-0.5 parent: 1 - - uid: 253 + - uid: 348 components: - type: Transform - pos: -5.120013,-1.1100138 + pos: 0.5,4.5 parent: 1 -- proto: hydroponicsSoil - entities: - - uid: 230 + - uid: 349 components: - type: Transform - pos: 0.5,0.5 + pos: 0.5,5.5 parent: 1 - - uid: 231 +- proto: CableMV + entities: + - uid: 87 components: - type: Transform - pos: -1.5,-3.5 + pos: 6.5,-2.5 parent: 1 - - type: PlantHolder - lastProduce: 1 - age: 1 - health: 100 - seed: - splatPrototype: null - lifespan: 75 - endurance: 100 - weedHighLevelThreshold: 10 - weedTolerance: 5 - pestTolerance: 5 - highPressureTolerance: 121 - lowPressureTolerance: 81 - toxinsTolerance: 4 - lightTolerance: 3 - idealLight: 9 - heatTolerance: 10 - idealHeat: 298 - waterConsumption: 0.4 - nutrientConsumption: 0.75 - exudeGasses: {} - consumeGasses: {} - chemicals: - THC: - Inherent: True - PotencyDivisor: 10 - Max: 10 - Min: 1 - productPrototypes: - - LeavesCannabis - packetPrototype: CannabisSeeds - immutable: False - yield: 2 - maturation: 8 - bioluminescentColor: '#FFFFFFFF' - production: 12 - plantIconState: produce - plantRsi: Objects/Specific/Hydroponics/cannabis.rsi - displayName: seeds-cannabis-display-name - noun: seeds-noun-seeds - name: seeds-cannabis-name - mutationPrototypes: [] - turnIntoKudzu: False - kudzuPrototype: WeakKudzu - bioluminescent: False - screaming: False - screamSound: !type:SoundPathSpecifier - params: - variation: null - playOffsetSeconds: 0 - loop: False - referenceDistance: 1 - rolloffFactor: 1 - maxDistance: 20 - busName: Master - pitch: 1 - volume: 0 - attenuation: LinearDistanceClamped - path: /Audio/Voice/Human/malescream_1.ogg - ligneous: False - sentient: False - slip: False - viable: True - seedless: False - potency: 20 - harvestRepeat: Repeat - growthStages: 3 - mysterious: False - - uid: 232 + - uid: 91 components: - type: Transform - pos: 1.5,3.5 + pos: 6.5,-0.5 parent: 1 - - type: PlantHolder - lastProduce: 1 - age: 1 - health: 100 - seed: - splatPrototype: null - lifespan: 25 - endurance: 100 - weedHighLevelThreshold: 10 - weedTolerance: 5 - pestTolerance: 5 - highPressureTolerance: 121 - lowPressureTolerance: 81 - toxinsTolerance: 4 - lightTolerance: 3 - idealLight: 7 - heatTolerance: 10 - idealHeat: 293 - waterConsumption: 0.6 - nutrientConsumption: 0.75 - exudeGasses: {} - consumeGasses: {} - chemicals: - Stellibinin: - Inherent: True - PotencyDivisor: 4 - Max: 25 - Min: 1 - productPrototypes: - - FoodGalaxythistle - packetPrototype: GalaxythistleSeeds - immutable: False - yield: 3 - maturation: 10 - bioluminescentColor: '#FFFFFFFF' - production: 3 - plantIconState: produce - plantRsi: Objects/Specific/Hydroponics/galaxythistle.rsi - displayName: seeds-galaxythistle-display-name - noun: seeds-noun-seeds - name: seeds-galaxythistle-name - mutationPrototypes: [] - turnIntoKudzu: False - kudzuPrototype: WeakKudzu - bioluminescent: False - screaming: False - screamSound: !type:SoundPathSpecifier - params: - variation: null - playOffsetSeconds: 0 - loop: False - referenceDistance: 1 - rolloffFactor: 1 - maxDistance: 20 - busName: Master - pitch: 1 - volume: 0 - attenuation: LinearDistanceClamped - path: /Audio/Voice/Human/malescream_1.ogg - ligneous: False - sentient: False - slip: False - viable: True - seedless: False - potency: 10 - harvestRepeat: NoRepeat - growthStages: 3 - mysterious: False -- proto: KudzuFlowerFriendly - entities: - - uid: 115 + - uid: 93 components: - type: Transform - pos: -0.5,0.5 + pos: 6.5,-1.5 parent: 1 - - uid: 116 + - uid: 103 components: - type: Transform - pos: 0.5,1.5 + pos: 6.5,0.5 parent: 1 - - uid: 117 + - uid: 104 components: - type: Transform - pos: 1.5,0.5 + pos: 6.5,1.5 parent: 1 - - uid: 118 + - uid: 105 components: - type: Transform - pos: 1.5,-0.5 + pos: 6.5,2.5 parent: 1 - - uid: 119 + - uid: 106 components: - type: Transform - pos: 0.5,-0.5 + pos: 6.5,3.5 parent: 1 - - uid: 120 + - uid: 107 components: - type: Transform - pos: 1.5,1.5 + pos: 6.5,4.5 parent: 1 - - uid: 121 + - uid: 108 components: - type: Transform - pos: -1.5,1.5 + pos: 5.5,3.5 parent: 1 - - uid: 122 + - uid: 109 components: - type: Transform - pos: -0.5,2.5 + pos: 3.5,3.5 parent: 1 - - uid: 123 + - uid: 110 components: - type: Transform - pos: 0.5,2.5 + pos: 4.5,3.5 parent: 1 - - uid: 124 + - uid: 111 components: - type: Transform - pos: -0.5,1.5 + pos: 2.5,3.5 parent: 1 - - uid: 125 + - uid: 112 components: - type: Transform - pos: 0.5,0.5 + pos: 0.5,3.5 parent: 1 - - uid: 126 + - uid: 113 components: - type: Transform - pos: 2.5,0.5 + pos: 1.5,3.5 parent: 1 - - uid: 127 + - uid: 114 components: - type: Transform - pos: 1.5,2.5 + pos: 0.5,2.5 parent: 1 - - uid: 128 +- proto: Catwalk + entities: + - uid: 88 components: - type: Transform - pos: 0.5,3.5 + pos: 6.5,2.5 parent: 1 - - uid: 140 + - uid: 89 components: - type: Transform - pos: 1.5,-4.5 + pos: 6.5,0.5 parent: 1 - - uid: 141 + - uid: 90 components: - type: Transform - pos: 0.5,-4.5 + pos: 6.5,-0.5 parent: 1 - - uid: 142 + - uid: 96 components: - type: Transform - pos: 0.5,-3.5 + pos: 6.5,1.5 parent: 1 - - uid: 143 + - uid: 97 components: - type: Transform - pos: 1.5,-3.5 + pos: 6.5,-1.5 parent: 1 - - uid: 144 + - uid: 98 components: - type: Transform - pos: 2.5,-3.5 + pos: 6.5,-2.5 parent: 1 - - uid: 145 + - uid: 99 components: - type: Transform - pos: 2.5,-4.5 + pos: 6.5,3.5 parent: 1 - - uid: 146 +- proto: ChemistryBottleEZNutrient + entities: + - uid: 130 components: - type: Transform - pos: 0.5,-2.5 + pos: -2.5,0.5 parent: 1 - - uid: 147 + - uid: 286 components: - type: Transform - pos: -0.5,-2.5 + pos: -2.375,0.609375 parent: 1 - - uid: 148 +- proto: ChemistryBottleRobustHarvest + entities: + - uid: 153 components: - type: Transform - pos: -0.5,-3.5 + pos: 0.421875,1.5625 parent: 1 - - uid: 149 + - uid: 173 components: - type: Transform - pos: -1.5,-3.5 + pos: 0.3125,1.78125 parent: 1 +- proto: ChemistryEmptyBottle01 + entities: - uid: 150 components: - type: Transform - pos: -1.5,-4.5 + rot: -1.5707963267948966 rad + pos: 0.328125,1.296875 parent: 1 - - uid: 151 +- proto: ClosetMaintenanceFilledRandom + entities: + - uid: 116 components: - type: Transform - pos: -2.5,-4.5 + pos: 4.5,-3.5 parent: 1 - - uid: 152 +- proto: CrateHydroponicsTray + entities: + - uid: 329 components: - type: Transform - pos: -0.5,-4.5 + pos: -0.5,-2.5 parent: 1 - - uid: 153 + - type: Fixtures + fixtures: + fix1: + shape: !type:PolygonShape + radius: 0.01 + vertices: + - -0.4,-0.4 + - 0.4,-0.4 + - 0.4,0.29 + - -0.4,0.29 + mask: + - Impassable + - HighImpassable + - LowImpassable + layer: + - BulletImpassable + - Opaque + density: 50 + hard: True + restitution: 0 + friction: 0.4 + - type: EntityStorage + removedMasks: 20 + open: True + - type: PlaceableSurface + isPlaceable: True +- proto: CrateSalvageHardsuit + entities: + - uid: 247 components: - type: Transform - pos: 5.5,0.5 + pos: -5.5,1.5 parent: 1 - - uid: 154 +- proto: Girder + entities: + - uid: 14 components: - type: Transform - pos: 5.5,-0.5 + pos: -1.5,4.5 parent: 1 - - uid: 156 + - uid: 24 components: - type: Transform - pos: 4.5,1.5 + pos: -4.5,-3.5 parent: 1 - - uid: 157 + - uid: 26 components: - type: Transform - pos: 4.5,0.5 + pos: 1.5,-6.5 parent: 1 - - uid: 159 + - uid: 292 components: - type: Transform - pos: 0.5,4.5 + pos: 3.5,-4.5 parent: 1 - - uid: 160 + - uid: 293 components: - type: Transform - pos: -0.5,4.5 + pos: 3.5,-5.5 parent: 1 - - uid: 161 + - uid: 294 components: - type: Transform - pos: 0.5,5.5 + pos: 4.5,5.5 parent: 1 - - uid: 162 + - uid: 313 components: - type: Transform - pos: 1.5,4.5 + pos: 5.5,-4.5 parent: 1 - - uid: 163 + - uid: 314 components: - type: Transform - pos: 1.5,3.5 + pos: 6.5,4.5 parent: 1 - - uid: 164 +- proto: GoldenAppleSeeds + entities: + - uid: 175 components: - type: Transform - pos: 2.5,3.5 + pos: 0.578125,-0.34375 parent: 1 - - uid: 165 +- proto: Grille + entities: + - uid: 51 components: - type: Transform - pos: 2.5,4.5 + pos: 0.5,-1.5 parent: 1 - - uid: 166 + - uid: 52 components: - type: Transform - pos: 1.5,5.5 + pos: 1.5,-1.5 parent: 1 - - uid: 172 + - uid: 54 components: - type: Transform - pos: -2.5,-2.5 + pos: 2.5,-1.5 parent: 1 - - uid: 173 + - uid: 74 components: - type: Transform - pos: 4.5,2.5 + pos: 1.5,2.5 parent: 1 - - uid: 178 +- proto: HydroponicsToolHatchet + entities: + - uid: 143 components: - type: Transform - pos: -3.5,-3.5 + pos: 0.5,-6.5 parent: 1 - - uid: 180 +- proto: HydroponicsToolMiniHoe + entities: + - uid: 145 components: - type: Transform - pos: -1.5,-2.5 + pos: -5.5,-0.5 parent: 1 - - uid: 182 +- proto: hydroponicsTray + entities: + - uid: 19 components: - type: Transform - pos: -4.5,-3.5 + pos: 0.5,0.5 parent: 1 - - uid: 184 + - uid: 66 components: - type: Transform - pos: -2.5,-3.5 + pos: 1.5,0.5 parent: 1 - - uid: 216 +- proto: HydroponicsTrayEmpty + entities: + - uid: 126 components: - type: Transform - pos: 5.5,1.5 + pos: -5.5,2.5 parent: 1 - - uid: 234 + - uid: 128 components: - type: Transform - pos: 3.5,-0.5 + pos: -3.5,2.5 parent: 1 - - uid: 235 + - uid: 129 components: - type: Transform - pos: 4.5,-0.5 + pos: -5.5,4.5 parent: 1 -- proto: LeavesCannabis - entities: - - uid: 241 + - uid: 134 components: - type: Transform - pos: -1.2997007,-3.7115765 + pos: -4.5,0.5 parent: 1 - - uid: 242 + - uid: 135 components: - type: Transform - pos: -1.7918882,-3.500639 + pos: -5.5,0.5 parent: 1 -- proto: LockerBotanistLoot - entities: - - uid: 239 + - uid: 136 components: - type: Transform - pos: -3.5,4.5 + pos: -4.5,2.5 parent: 1 - - uid: 240 + - uid: 137 components: - type: Transform - pos: -0.5,-2.5 + pos: -4.5,4.5 parent: 1 -- proto: Nettle - entities: - - uid: 228 + - uid: 138 components: - type: Transform - pos: 0.140854,1.640625 + pos: -3.5,4.5 parent: 1 - - uid: 229 +- proto: KudzuFlowerFriendly + entities: + - uid: 55 components: - type: Transform - pos: 0.609604,1.8046875 + rot: -1.5707963267948966 rad + pos: 2.5,1.5 parent: 1 -- proto: RandomProduce - entities: - - uid: 175 + - uid: 73 components: - type: Transform - pos: -0.5,3.5 + rot: -1.5707963267948966 rad + pos: -0.5,1.5 parent: 1 - - uid: 202 + - uid: 83 components: - type: Transform - pos: -3.5,4.5 + rot: -1.5707963267948966 rad + pos: -4.5,4.5 parent: 1 - - uid: 203 + - uid: 86 components: - type: Transform - pos: -2.5,-1.5 + rot: -1.5707963267948966 rad + pos: 0.5,0.5 parent: 1 - - uid: 204 + - uid: 117 components: - type: Transform - pos: -5.5,-0.5 + rot: -1.5707963267948966 rad + pos: -0.5,-3.5 parent: 1 - - uid: 205 + - uid: 131 components: - type: Transform - pos: -4.5,1.5 + pos: 2.5,5.5 parent: 1 - - uid: 206 + - uid: 177 components: - type: Transform - pos: -0.5,2.5 + pos: -5.5,-0.5 parent: 1 - - uid: 207 + - uid: 178 components: - type: Transform - pos: 1.5,-0.5 + pos: -2.5,3.5 parent: 1 - - uid: 208 + - uid: 179 components: - type: Transform - pos: 1.5,1.5 + pos: 1.5,-3.5 parent: 1 - - uid: 209 + - uid: 180 components: - type: Transform - pos: 4.5,0.5 + pos: -3.5,3.5 parent: 1 - - uid: 210 + - uid: 181 components: - type: Transform - pos: 0.5,-4.5 + pos: -4.5,2.5 parent: 1 - - uid: 211 + - uid: 182 components: - type: Transform - pos: 0.5,-3.5 + pos: -2.5,-3.5 parent: 1 - - uid: 212 + - uid: 183 components: - type: Transform - pos: -1.5,1.5 + pos: 1.5,-4.5 parent: 1 - - uid: 213 + - uid: 184 components: - type: Transform - pos: 5.5,-0.5 + pos: 0.5,-5.5 parent: 1 -- proto: ShadowTree01 - entities: - - uid: 107 + - uid: 187 components: - type: Transform - pos: 2.2109375,3.4453125 + pos: 3.5,5.5 parent: 1 - - uid: 109 + - uid: 188 components: - type: Transform - pos: -2.921875,1.453125 + pos: 2.5,6.5 parent: 1 - - uid: 111 + - uid: 189 components: - type: Transform - pos: -5.078125,0.0234375 + rot: -1.5707963267948966 rad + pos: -1.5,-5.5 parent: 1 - - uid: 192 + - uid: 190 components: - type: Transform - pos: 2.3984375,0.796875 + pos: -2.5,-4.5 parent: 1 - - uid: 196 + - uid: 191 components: - type: Transform - pos: -6.3964796,-0.03136772 + pos: -5.5,1.5 parent: 1 - - uid: 197 + - uid: 192 components: - type: Transform - pos: -6.0928297,-0.68256617 + pos: -3.5,-3.5 parent: 1 - - uid: 237 + - uid: 193 components: - type: Transform - pos: 2.1853876,-0.5390625 + pos: 0.5,4.5 parent: 1 -- proto: ShadowTree02 - entities: - - uid: 105 + - uid: 194 components: - type: Transform - pos: -6.2734375,-0.28125 + pos: -1.5,1.5 parent: 1 - - uid: 110 + - uid: 195 components: - type: Transform - pos: -1.1640625,4.5 + pos: -2.5,4.5 parent: 1 - - uid: 114 + - uid: 196 components: - type: Transform - pos: 0.40625,-2.625 + pos: -1.5,3.5 parent: 1 - - uid: 194 + - uid: 198 components: - type: Transform - pos: -6.5371046,1.2498822 + pos: 1.5,4.5 parent: 1 - - uid: 236 + - uid: 199 components: - type: Transform - pos: 2.6307,-0.3046875 + rot: -1.5707963267948966 rad + pos: -0.5,6.5 parent: 1 -- proto: ShadowTree03 - entities: - - uid: 104 + - uid: 200 components: - type: Transform - pos: -5.7578125,0.8203125 + rot: -1.5707963267948966 rad + pos: -4.5,3.5 parent: 1 -- proto: ShadowTree04 - entities: - - uid: 113 + - uid: 204 components: - type: Transform - pos: 2.3515625,-4.5 + rot: -1.5707963267948966 rad + pos: -5.5,2.5 parent: 1 -- proto: ShadowTree05 - entities: - - uid: 112 + - uid: 205 components: - type: Transform - pos: -4.375,-3.515625 + rot: -1.5707963267948966 rad + pos: -0.5,-5.5 parent: 1 -- proto: ShadowTree06 - entities: - - uid: 106 + - uid: 207 components: - type: Transform - pos: 2.1875,0.046875 + rot: -1.5707963267948966 rad + pos: -1.5,-4.5 parent: 1 - - uid: 108 + - uid: 208 components: - type: Transform - pos: 1.25,4.9453125 + rot: -1.5707963267948966 rad + pos: -3.5,4.5 parent: 1 - - uid: 195 + - uid: 209 components: - type: Transform - pos: -6.2871046,0.28113228 + pos: -2.5,2.5 parent: 1 -- proto: SpawnMobLuminousEntity - entities: - - uid: 12 + - uid: 210 components: - type: Transform - pos: 4.5,2.5 + pos: -3.5,1.5 parent: 1 - - uid: 168 + - uid: 211 components: - type: Transform - pos: 0.5,4.5 + pos: -4.5,0.5 parent: 1 - - uid: 170 + - uid: 212 components: - type: Transform - pos: -1.5,-4.5 + pos: -4.5,1.5 parent: 1 - - uid: 171 + - uid: 213 components: - type: Transform - pos: -0.5,-3.5 + pos: 3.5,0.5 parent: 1 - - uid: 179 + - uid: 216 components: - type: Transform - pos: -4.5,-0.5 + pos: 3.5,-0.5 parent: 1 - - uid: 181 + - uid: 218 components: - type: Transform - pos: -4.5,3.5 + pos: -5.5,0.5 parent: 1 - - uid: 185 + - uid: 219 components: - type: Transform - pos: 5.5,1.5 + pos: 2.5,-0.5 parent: 1 -- proto: SpawnMobLuminousObject - entities: - - uid: 174 + - uid: 220 components: - type: Transform - pos: 5.5,0.5 + pos: -3.5,2.5 parent: 1 - - uid: 176 + - uid: 221 components: - type: Transform - pos: -0.5,4.5 + rot: -1.5707963267948966 rad + pos: 1.5,1.5 parent: 1 - - uid: 177 + - uid: 222 components: - type: Transform - pos: -4.5,-1.5 + pos: 0.5,3.5 parent: 1 - - uid: 183 + - uid: 224 components: - type: Transform - pos: -2.5,4.5 + rot: -1.5707963267948966 rad + pos: 1.5,0.5 parent: 1 -- proto: SpawnMobLuminousPerson - entities: - - uid: 11 + - uid: 225 components: - type: Transform - pos: 5.5,-0.5 + pos: -0.5,4.5 parent: 1 - - uid: 186 + - uid: 226 components: - type: Transform - pos: 0.5,3.5 + pos: -3.5,-4.5 parent: 1 - - uid: 187 + - uid: 227 components: - type: Transform - pos: -2.5,-3.5 + pos: -2.5,-5.5 parent: 1 - - uid: 201 + - uid: 228 components: - type: Transform - pos: 4.5,1.5 + pos: -2.5,-2.5 parent: 1 - - uid: 214 + - uid: 229 components: - type: Transform - pos: 4.5,-1.5 + pos: 1.5,-2.5 parent: 1 - - uid: 238 + - uid: 230 components: - type: Transform - pos: 3.5,-0.5 + pos: 3.5,4.5 parent: 1 -- proto: WallRockChromite - entities: - - uid: 4 + - uid: 232 components: - type: Transform - pos: 7.5,-1.5 + pos: 2.5,-3.5 parent: 1 - - uid: 5 + - uid: 233 components: - type: Transform - pos: 6.5,0.5 + pos: -0.5,3.5 parent: 1 - - uid: 6 + - uid: 256 components: - type: Transform - pos: 7.5,0.5 + pos: 1.5,6.5 parent: 1 - - uid: 7 + - uid: 287 components: - type: Transform - pos: 7.5,1.5 + rot: -1.5707963267948966 rad + pos: 0.5,1.5 parent: 1 - - uid: 8 + - uid: 288 components: - type: Transform - pos: 6.5,-3.5 + rot: -1.5707963267948966 rad + pos: -5.5,3.5 parent: 1 - - uid: 9 + - uid: 289 components: - type: Transform - pos: 6.5,-2.5 + pos: -4.5,-2.5 parent: 1 - - uid: 10 + - uid: 290 components: - type: Transform - pos: 6.5,-1.5 + pos: -5.5,-3.5 parent: 1 - - uid: 13 + - uid: 291 components: - type: Transform - pos: 6.5,1.5 + pos: -3.5,-1.5 parent: 1 - - uid: 14 + - uid: 295 components: - type: Transform - pos: 6.5,2.5 + rot: -1.5707963267948966 rad + pos: -0.5,-2.5 parent: 1 - - uid: 15 + - uid: 296 components: - type: Transform - pos: 6.5,3.5 + pos: -3.5,-6.5 parent: 1 - - uid: 16 + - uid: 297 components: - type: Transform - pos: 5.5,2.5 + pos: -2.5,6.5 parent: 1 - - uid: 17 + - uid: 298 components: - type: Transform - pos: 5.5,3.5 + pos: 4.5,5.5 parent: 1 - - uid: 18 + - uid: 299 components: - type: Transform - pos: 5.5,4.5 + pos: 3.5,6.5 parent: 1 - - uid: 19 + - uid: 300 components: - type: Transform - pos: 5.5,5.5 + rot: -1.5707963267948966 rad + pos: 0.5,-0.5 parent: 1 - - uid: 20 + - uid: 301 components: - type: Transform - pos: 6.5,-0.5 + rot: -1.5707963267948966 rad + pos: -5.5,4.5 parent: 1 - - uid: 21 + - uid: 302 components: - type: Transform - pos: 4.5,3.5 + rot: -1.5707963267948966 rad + pos: -1.5,6.5 parent: 1 - - uid: 22 + - uid: 303 components: - type: Transform - pos: 4.5,4.5 + pos: 2.5,-2.5 parent: 1 - - uid: 23 + - uid: 305 components: - type: Transform - pos: 4.5,5.5 + pos: 2.5,2.5 parent: 1 - - uid: 24 + - uid: 331 components: - type: Transform - pos: 4.5,6.5 + pos: -1.5,-6.5 parent: 1 - - uid: 25 + - uid: 332 components: - type: Transform - pos: 3.5,0.5 + pos: -0.5,-6.5 parent: 1 - - uid: 26 + - uid: 333 components: - type: Transform - pos: 3.5,1.5 + pos: 0.5,-6.5 parent: 1 - - uid: 27 + - uid: 334 components: - type: Transform - pos: 3.5,2.5 + pos: -1.5,0.5 parent: 1 - - uid: 28 + - uid: 335 components: - type: Transform - pos: 3.5,3.5 + pos: -1.5,2.5 parent: 1 - - uid: 29 + - uid: 336 components: - type: Transform - pos: 3.5,4.5 + pos: -0.5,0.5 parent: 1 - - uid: 30 + - uid: 337 components: - type: Transform - pos: 3.5,5.5 + pos: -0.5,-0.5 parent: 1 - - uid: 31 + - uid: 338 components: - type: Transform - pos: 3.5,6.5 + pos: 3.5,-2.5 parent: 1 - - uid: 32 + - uid: 340 components: - type: Transform - pos: 3.5,7.5 + pos: -3.5,-5.5 parent: 1 - - uid: 33 + - uid: 341 components: - type: Transform - pos: 2.5,1.5 + pos: -4.5,-3.5 parent: 1 - - uid: 34 + - uid: 353 components: - type: Transform - pos: 2.5,2.5 + pos: 2.5,3.5 parent: 1 - - uid: 35 + - uid: 354 components: - type: Transform - pos: 2.5,5.5 + pos: 0.5,5.5 parent: 1 - - uid: 36 + - uid: 355 components: - type: Transform - pos: 2.5,6.5 + pos: 2.5,0.5 parent: 1 - - uid: 37 + - uid: 356 components: - type: Transform - pos: 2.5,7.5 + pos: 1.5,-0.5 parent: 1 - - uid: 38 + - uid: 357 components: - type: Transform - pos: 1.5,6.5 + pos: -1.5,-3.5 parent: 1 - - uid: 39 + - uid: 358 components: - type: Transform - pos: 1.5,7.5 + pos: -1.5,-2.5 parent: 1 - - uid: 40 + - uid: 359 components: - type: Transform - pos: 0.5,6.5 + pos: -0.5,-4.5 parent: 1 - - uid: 41 + - uid: 360 components: - type: Transform - pos: 0.5,7.5 + pos: 0.5,-3.5 parent: 1 - - uid: 42 + - uid: 361 components: - type: Transform - pos: -0.5,7.5 + pos: 0.5,-2.5 parent: 1 - - uid: 43 + - uid: 362 components: - type: Transform - pos: -0.5,6.5 + pos: 0.5,-4.5 parent: 1 - - uid: 44 + - uid: 363 components: - type: Transform - pos: -0.5,5.5 + pos: -4.5,-0.5 parent: 1 - - uid: 45 + - uid: 364 components: - type: Transform - pos: -1.5,5.5 + pos: -3.5,-0.5 parent: 1 - - uid: 46 + - uid: 365 components: - type: Transform - pos: -1.5,6.5 + pos: -2.5,0.5 parent: 1 - - uid: 47 + - uid: 366 components: - type: Transform - pos: -2.5,5.5 + pos: -2.5,1.5 parent: 1 - - uid: 48 + - uid: 367 components: - type: Transform - pos: -2.5,6.5 + pos: -0.5,5.5 parent: 1 - - uid: 49 + - uid: 368 components: - type: Transform - pos: -3.5,5.5 + pos: 0.5,6.5 parent: 1 - - uid: 50 + - uid: 369 components: - type: Transform - pos: -3.5,6.5 + pos: 1.5,5.5 parent: 1 - - uid: 51 + - uid: 370 components: - type: Transform - pos: -4.5,5.5 + pos: 2.5,4.5 parent: 1 - - uid: 52 + - uid: 371 components: - type: Transform - pos: -4.5,4.5 + pos: -2.5,-1.5 parent: 1 - - uid: 53 + - uid: 372 components: - type: Transform - pos: -5.5,5.5 + pos: -3.5,-2.5 parent: 1 - - uid: 54 + - uid: 373 components: - type: Transform - pos: -5.5,4.5 + pos: -2.5,-0.5 parent: 1 - - uid: 55 + - uid: 374 components: - type: Transform - pos: -5.5,3.5 + pos: 3.5,1.5 parent: 1 - - uid: 56 + - uid: 375 components: - type: Transform - pos: -6.5,3.5 + pos: 1.5,3.5 parent: 1 - - uid: 57 + - uid: 376 components: - type: Transform - pos: -6.5,2.5 + pos: 3.5,3.5 parent: 1 - - uid: 58 +- proto: LightTree + entities: + - uid: 37 components: - type: Transform - pos: -6.5,4.5 + pos: -5.5,3.5 parent: 1 - - uid: 59 + - uid: 79 components: - type: Transform - pos: -6.5,-1.5 + pos: -5.5,-3.5 parent: 1 - - uid: 60 + - uid: 80 components: - type: Transform - pos: -6.5,-2.5 + pos: 2.5,6.5 parent: 1 - - uid: 61 + - uid: 81 components: - type: Transform - pos: -6.5,-3.5 + pos: 3.5,5.5 parent: 1 - - uid: 62 + - uid: 84 components: - type: Transform - pos: -5.5,-2.5 + pos: -3.5,-5.5 parent: 1 - - uid: 63 + - uid: 85 components: - type: Transform - pos: -5.5,-3.5 + pos: -2.5,6.5 parent: 1 - - uid: 64 + - uid: 92 components: - type: Transform - pos: -5.5,-4.5 + pos: -2.5,-1.5 parent: 1 - - uid: 65 + - uid: 94 components: - type: Transform - pos: -4.5,-4.5 + pos: -3.5,-2.5 parent: 1 - - uid: 66 + - uid: 95 components: - type: Transform - pos: -3.5,-4.5 + pos: -1.5,3.5 parent: 1 - - uid: 67 + - uid: 142 components: - type: Transform - pos: -3.5,-5.5 + pos: 2.5,-4.5 parent: 1 - - uid: 68 + - uid: 231 components: - type: Transform - pos: -2.5,-5.5 + pos: 5.5,5.5 parent: 1 - - uid: 69 + - uid: 249 components: - type: Transform - pos: -1.5,-5.5 + pos: -1.5,1.5 parent: 1 - - uid: 70 + - uid: 304 components: - type: Transform - pos: -0.5,-5.5 + pos: 3.5,-2.5 parent: 1 - - uid: 71 +- proto: LockerBotanistLoot + entities: + - uid: 21 components: - type: Transform - pos: 0.5,-5.5 + pos: 3.5,1.5 parent: 1 - - uid: 72 + - uid: 127 components: - type: Transform - pos: 1.5,-5.5 + pos: 3.5,4.5 parent: 1 - - uid: 73 +- proto: LockerWeldingSuppliesFilled + entities: + - uid: 133 components: - type: Transform - pos: 2.5,-5.5 + pos: 6.5,-2.5 parent: 1 - - uid: 74 +- proto: MachineAPE + entities: + - uid: 102 components: - type: Transform - pos: 3.5,-5.5 + rot: 3.141592653589793 rad + pos: 0.5,-3.5 parent: 1 - - uid: 75 + - type: AccessReader + accessListsOriginal: + - - Research +- proto: MaterialBananium + entities: + - uid: 123 components: - type: Transform - pos: 2.5,-6.5 + pos: -5.171875,2.6875 parent: 1 - - uid: 76 +- proto: PortableGeneratorJrPacman + entities: + - uid: 115 components: - type: Transform - pos: 1.5,-6.5 + anchored: True + pos: 6.5,0.5 + parent: 1 + - type: Physics + bodyType: Static +- proto: PuddleBlood + entities: + - uid: 154 + components: + - type: Transform + pos: -2.5,3.5 + parent: 1 + - uid: 157 + components: + - type: Transform + pos: -2.5,2.5 + parent: 1 + - uid: 158 + components: + - type: Transform + pos: -3.5,3.5 + parent: 1 + - uid: 160 + components: + - type: Transform + pos: 5.5,-0.5 + parent: 1 + - uid: 161 + components: + - type: Transform + pos: 6.5,-0.5 + parent: 1 + - uid: 162 + components: + - type: Transform + pos: 5.5,-1.5 + parent: 1 + - uid: 163 + components: + - type: Transform + pos: 5.5,0.5 + parent: 1 +- proto: PuddleBloodSmall + entities: + - uid: 159 + components: + - type: Transform + pos: -1.5,3.5 + parent: 1 + - uid: 164 + components: + - type: Transform + pos: 6.5,0.5 + parent: 1 + - uid: 165 + components: + - type: Transform + pos: 5.5,1.5 + parent: 1 + - uid: 166 + components: + - type: Transform + pos: 5.5,-2.5 + parent: 1 + - uid: 167 + components: + - type: Transform + pos: 6.5,-1.5 + parent: 1 + - uid: 168 + components: + - type: Transform + pos: -3.5,2.5 + parent: 1 + - uid: 169 + components: + - type: Transform + pos: -4.5,3.5 + parent: 1 + - uid: 170 + components: + - type: Transform + pos: -2.5,1.5 + parent: 1 + - uid: 171 + components: + - type: Transform + pos: -3.5,4.5 + parent: 1 + - uid: 172 + components: + - type: Transform + pos: -2.5,4.5 + parent: 1 +- proto: PuddleVomit + entities: + - uid: 155 + components: + - type: Transform + pos: 0.5,1.5 + parent: 1 +- proto: Rack + entities: + - uid: 67 + components: + - type: Transform + pos: 3.5,-0.5 + parent: 1 + - uid: 69 + components: + - type: Transform + pos: 3.5,0.5 + parent: 1 + - uid: 144 + components: + - type: Transform + pos: -5.5,-0.5 + parent: 1 + - uid: 217 + components: + - type: Transform + pos: 4.5,-4.5 + parent: 1 +- proto: RandomScienceCorpseSpawner + entities: + - uid: 234 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,-4.5 + parent: 1 +- proto: RandomServiceCorpseSpawner + entities: + - uid: 125 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,-0.5 + parent: 1 + - uid: 156 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,3.5 + parent: 1 +- proto: RealCapfruitSeeds + entities: + - uid: 2 + components: + - type: Transform + pos: 3.5,0.5 + parent: 1 +- proto: ReinforcedGirder + entities: + - uid: 36 + components: + - type: Transform + pos: -1.5,0.5 + parent: 1 + - uid: 38 + components: + - type: Transform + pos: -1.5,2.5 + parent: 1 +- proto: ReinforcedWindow + entities: + - uid: 18 + components: + - type: Transform + pos: 2.5,-1.5 + parent: 1 + - uid: 41 + components: + - type: Transform + pos: 1.5,2.5 + parent: 1 + - uid: 72 + components: + - type: Transform + pos: 0.5,-1.5 + parent: 1 + - uid: 202 + components: + - type: Transform + pos: 1.5,-1.5 + parent: 1 +- proto: SalvageLivingLightSpawner + entities: + - uid: 100 + components: + - type: Transform + pos: 1.5,1.5 + parent: 1 + - uid: 201 + components: + - type: Transform + pos: 2.5,0.5 + parent: 1 + - uid: 350 + components: + - type: Transform + pos: 0.5,5.5 + parent: 1 + - uid: 351 + components: + - type: Transform + pos: -3.5,1.5 + parent: 1 + - uid: 352 + components: + - type: Transform + pos: -1.5,-4.5 + parent: 1 +- proto: SalvageSpawnerEquipmentValuable + entities: + - uid: 251 + components: + - type: Transform + pos: -4.5,4.5 + parent: 1 + - uid: 253 + components: + - type: Transform + pos: -3.5,3.5 + parent: 1 + - uid: 274 + components: + - type: Transform + pos: -0.5,1.5 + parent: 1 + - uid: 275 + components: + - type: Transform + pos: 6.5,2.5 + parent: 1 + - uid: 276 + components: + - type: Transform + pos: 5.5,3.5 + parent: 1 + - uid: 279 + components: + - type: Transform + pos: -3.5,-3.5 + parent: 1 + - uid: 308 + components: + - type: Transform + pos: 2.5,0.5 + parent: 1 +- proto: SalvageSpawnerMobMagnet100 + entities: + - uid: 328 + components: + - type: Transform + pos: 6.5,2.5 + parent: 1 +- proto: SalvageSpawnerScrapCommon + entities: + - uid: 245 + components: + - type: Transform + pos: 1.5,5.5 + parent: 1 + - uid: 271 + components: + - type: Transform + pos: 3.5,-4.5 + parent: 1 + - uid: 272 + components: + - type: Transform + pos: 2.5,1.5 + parent: 1 + - uid: 309 + components: + - type: Transform + pos: 1.5,-0.5 + parent: 1 +- proto: SalvageSpawnerScrapCommon75 + entities: + - uid: 141 + components: + - type: Transform + pos: 6.5,1.5 + parent: 1 + - uid: 147 + components: + - type: Transform + pos: 0.5,-2.5 + parent: 1 + - uid: 235 + components: + - type: Transform + pos: -0.5,6.5 + parent: 1 + - uid: 236 + components: + - type: Transform + pos: -0.5,5.5 + parent: 1 + - uid: 237 + components: + - type: Transform + pos: 0.5,6.5 + parent: 1 + - uid: 238 + components: + - type: Transform + pos: 3.5,3.5 + parent: 1 + - uid: 239 + components: + - type: Transform + pos: 2.5,3.5 + parent: 1 + - uid: 252 + components: + - type: Transform + pos: 1.5,-3.5 + parent: 1 + - uid: 254 + components: + - type: Transform + pos: 5.5,2.5 + parent: 1 + - uid: 257 + components: + - type: Transform + pos: 5.5,-1.5 + parent: 1 + - uid: 258 + components: + - type: Transform + pos: 6.5,3.5 + parent: 1 + - uid: 285 + components: + - type: Transform + pos: -0.5,-5.5 + parent: 1 +- proto: SalvageSpawnerScrapValuable + entities: + - uid: 243 + components: + - type: Transform + pos: -0.5,4.5 + parent: 1 + - uid: 277 + components: + - type: Transform + pos: 0.5,-4.5 + parent: 1 + - uid: 278 + components: + - type: Transform + pos: -1.5,-5.5 + parent: 1 +- proto: SalvageSpawnerScrapValuable75 + entities: + - uid: 146 + components: + - type: Transform + pos: 5.5,4.5 + parent: 1 + - uid: 206 + components: + - type: Transform + pos: -2.5,1.5 + parent: 1 + - uid: 240 + components: + - type: Transform + pos: 1.5,3.5 + parent: 1 + - uid: 241 + components: + - type: Transform + pos: 0.5,3.5 + parent: 1 + - uid: 242 + components: + - type: Transform + pos: 1.5,6.5 + parent: 1 + - uid: 250 + components: + - type: Transform + pos: -2.5,2.5 + parent: 1 + - uid: 259 + components: + - type: Transform + pos: 5.5,0.5 + parent: 1 + - uid: 261 + components: + - type: Transform + pos: 5.5,-3.5 + parent: 1 + - uid: 263 + components: + - type: Transform + pos: -2.5,-2.5 + parent: 1 + - uid: 273 + components: + - type: Transform + pos: 2.5,4.5 + parent: 1 + - uid: 280 + components: + - type: Transform + pos: -0.5,-3.5 + parent: 1 + - uid: 281 + components: + - type: Transform + pos: -2.5,-4.5 + parent: 1 + - uid: 282 + components: + - type: Transform + pos: -1.5,-2.5 + parent: 1 + - uid: 283 + components: + - type: Transform + pos: -1.5,-3.5 + parent: 1 + - uid: 284 + components: + - type: Transform + pos: 2.5,-3.5 + parent: 1 +- proto: SalvageSpawnerTreasure + entities: + - uid: 132 + components: + - type: Transform + pos: 1.5,-2.5 + parent: 1 + - uid: 266 + components: + - type: Transform + pos: 6.5,-1.5 + parent: 1 + - uid: 267 + components: + - type: Transform + pos: 1.5,-4.5 + parent: 1 + - uid: 269 + components: + - type: Transform + pos: -2.5,-5.5 + parent: 1 + - uid: 270 + components: + - type: Transform + pos: -4.5,-2.5 + parent: 1 + - uid: 310 + components: + - type: Transform + pos: -2.5,0.5 + parent: 1 + - uid: 311 + components: + - type: Transform + pos: -3.5,-0.5 + parent: 1 + - uid: 312 + components: + - type: Transform + pos: 5.5,-2.5 + parent: 1 +- proto: SalvageSpawnerTreasureValuable + entities: + - uid: 244 + components: + - type: Transform + pos: 0.5,4.5 + parent: 1 + - uid: 246 + components: + - type: Transform + pos: 2.5,5.5 + parent: 1 + - uid: 248 + components: + - type: Transform + pos: -3.5,1.5 + parent: 1 + - uid: 255 + components: + - type: Transform + pos: 5.5,1.5 + parent: 1 + - uid: 262 + components: + - type: Transform + pos: -4.5,-0.5 + parent: 1 + - uid: 264 + components: + - type: Transform + pos: -4.5,3.5 + parent: 1 + - uid: 265 + components: + - type: Transform + pos: -2.5,-3.5 + parent: 1 + - uid: 268 + components: + - type: Transform + pos: -4.5,1.5 + parent: 1 + - uid: 306 + components: + - type: Transform + pos: 1.5,0.5 + parent: 1 + - uid: 307 + components: + - type: Transform + pos: 0.5,1.5 + parent: 1 +- proto: SeedExtractor + entities: + - uid: 149 + components: + - type: Transform + pos: -3.5,0.5 parent: 1 - - uid: 77 +- proto: SheetPlasma + entities: + - uid: 339 components: - type: Transform - pos: 0.5,-6.5 + pos: 4.53125,-4.4375 parent: 1 - - uid: 78 +- proto: SignHydro1 + entities: + - uid: 70 + components: + - type: Transform + pos: 3.5,-3.5 + parent: 1 + - type: Fixtures + fixtures: {} +- proto: TableReinforced + entities: + - uid: 30 components: - type: Transform pos: -0.5,-6.5 parent: 1 - - uid: 79 + - uid: 31 + components: + - type: Transform + pos: 0.5,-6.5 + parent: 1 + - uid: 32 components: - type: Transform pos: -1.5,-6.5 parent: 1 - - uid: 80 +- proto: VendingMachineNutri + entities: + - uid: 3 components: - type: Transform - pos: 3.5,-4.5 + pos: -0.5,0.5 parent: 1 - - uid: 81 +- proto: VendingMachineSeeds + entities: + - uid: 68 components: - type: Transform - pos: 3.5,-3.5 + pos: -0.5,-0.5 parent: 1 - - uid: 82 +- proto: WallReinforced + entities: + - uid: 4 components: - type: Transform - pos: 4.5,-4.5 + pos: -5.5,5.5 parent: 1 - - uid: 83 + - uid: 5 components: - type: Transform - pos: 4.5,-3.5 + pos: -3.5,5.5 parent: 1 - - uid: 84 + - uid: 6 components: - type: Transform - pos: 5.5,-4.5 + pos: -2.5,5.5 parent: 1 - - uid: 85 + - uid: 7 components: - type: Transform - pos: 5.5,-3.5 + pos: -1.5,5.5 parent: 1 - - uid: 86 + - uid: 8 components: - type: Transform - pos: 3.5,-2.5 + pos: -4.5,5.5 parent: 1 - - uid: 87 + - uid: 15 components: - type: Transform - pos: 4.5,-2.5 + pos: -6.5,4.5 parent: 1 - - uid: 88 + - uid: 16 components: - type: Transform - pos: 5.5,-2.5 + pos: -6.5,5.5 parent: 1 - - uid: 89 + - uid: 17 components: - type: Transform - pos: 5.5,-1.5 + pos: -6.5,3.5 parent: 1 - - uid: 90 + - uid: 22 components: - type: Transform - pos: 3.5,-1.5 + pos: -5.5,-1.5 parent: 1 - - uid: 91 + - uid: 33 components: - type: Transform - pos: 2.5,-1.5 + pos: -6.5,-0.5 parent: 1 - - uid: 92 + - uid: 34 components: - type: Transform - pos: 2.5,-2.5 + pos: -1.5,-1.5 parent: 1 - - uid: 93 + - uid: 35 components: - type: Transform - pos: 1.5,-1.5 + pos: -1.5,-0.5 parent: 1 - - uid: 94 + - uid: 39 components: - type: Transform - pos: 1.5,-2.5 + pos: -0.5,2.5 parent: 1 - - uid: 95 + - uid: 40 components: - type: Transform - pos: 0.5,-1.5 + pos: 0.5,2.5 parent: 1 - - uid: 96 + - uid: 42 + components: + - type: Transform + pos: 3.5,2.5 + parent: 1 + - uid: 45 + components: + - type: Transform + pos: 4.5,2.5 + parent: 1 + - uid: 46 + components: + - type: Transform + pos: 4.5,1.5 + parent: 1 + - uid: 47 + components: + - type: Transform + pos: 4.5,0.5 + parent: 1 + - uid: 48 + components: + - type: Transform + pos: 4.5,-1.5 + parent: 1 + - uid: 49 + components: + - type: Transform + pos: 4.5,-0.5 + parent: 1 + - uid: 50 + components: + - type: Transform + pos: 3.5,-1.5 + parent: 1 + - uid: 53 components: - type: Transform pos: -0.5,-1.5 parent: 1 - - uid: 97 + - uid: 75 components: - type: Transform - pos: -0.5,-0.5 + pos: -6.5,-1.5 parent: 1 - - uid: 98 + - uid: 76 components: - type: Transform - pos: -1.5,-1.5 + pos: -6.5,2.5 parent: 1 - - uid: 99 + - uid: 77 components: - type: Transform - pos: -1.5,-0.5 + pos: -6.5,0.5 parent: 1 - - uid: 100 + - uid: 78 components: - type: Transform - pos: -1.5,0.5 + pos: -6.5,1.5 parent: 1 - - uid: 101 + - uid: 140 components: - type: Transform - pos: -2.5,0.5 + pos: -4.5,-1.5 parent: 1 - - uid: 102 +- proto: WallSolid + entities: + - uid: 9 components: - type: Transform - pos: -3.5,0.5 + pos: -1.5,7.5 parent: 1 - - uid: 103 + - uid: 10 components: - type: Transform - pos: -2.5,-0.5 + pos: -0.5,7.5 parent: 1 - - uid: 155 + - uid: 11 + components: + - type: Transform + pos: 0.5,7.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: 1.5,7.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: 2.5,7.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: -5.5,-4.5 + parent: 1 + - uid: 27 + components: + - type: Transform + pos: -4.5,-4.5 + parent: 1 + - uid: 28 + components: + - type: Transform + pos: -4.5,-5.5 + parent: 1 + - uid: 29 + components: + - type: Transform + pos: -2.5,-6.5 + parent: 1 + - uid: 43 + components: + - type: Transform + pos: 4.5,4.5 + parent: 1 + - uid: 56 + components: + - type: Transform + pos: 3.5,-3.5 + parent: 1 + - uid: 57 + components: + - type: Transform + pos: 7.5,3.5 + parent: 1 + - uid: 58 + components: + - type: Transform + pos: 7.5,2.5 + parent: 1 + - uid: 59 + components: + - type: Transform + pos: 7.5,0.5 + parent: 1 + - uid: 60 components: - type: Transform pos: 7.5,-0.5 parent: 1 - - uid: 215 + - uid: 61 + components: + - type: Transform + pos: 7.5,-1.5 + parent: 1 + - uid: 62 components: - type: Transform pos: 7.5,-2.5 parent: 1 - - uid: 219 + - uid: 63 components: - type: Transform - pos: 4.5,7.5 + pos: 7.5,1.5 parent: 1 - - uid: 220 + - uid: 64 components: - type: Transform - pos: 7.5,2.5 + pos: 7.5,-3.5 parent: 1 - - uid: 221 +- proto: WaterTankHighCapacity + entities: + - uid: 148 components: - type: Transform - pos: 5.5,6.5 + pos: 2.5,-0.5 parent: 1 - - uid: 222 +- proto: WeaponMakeshiftLaser + entities: + - uid: 20 components: - type: Transform - pos: 6.5,5.5 + pos: 3.5,-0.5 parent: 1 - - uid: 223 + - type: Battery + startingCharge: 250 +- proto: WelderIndustrial + entities: + - uid: 330 components: - type: Transform - pos: 6.5,4.5 + pos: -3.5,6.5 parent: 1 - - uid: 224 +- proto: WelderIndustrialAdvanced + entities: + - uid: 23 components: - type: Transform - pos: 7.5,3.5 + pos: 0.5,-5.5 + parent: 1 +- proto: WeldingFuelTankFull + entities: + - uid: 260 + components: + - type: Transform + pos: 6.5,-0.5 + parent: 1 +- proto: WindoorAssemblySecure + entities: + - uid: 139 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,-6.5 + parent: 1 +- proto: WindoorSecure + entities: + - uid: 118 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,-6.5 parent: 1 ... diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/salvage.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/salvage.yml index 54020e2ab5c..8e10e8858a6 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/salvage.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/salvage.yml @@ -205,3 +205,26 @@ - MobFleshLoverSalvage chance: 1 offset: 0.2 + +- type: entity + name: Salvage Living Light Spawner + id: SalvageLivingLightSpawner + parent: SalvageMobSpawner + suffix: 100 + components: + - type: Sprite + layers: + - state: red + - sprite: Mobs/Elemental/living_light/luminous_person.rsi + state: luminous_person + - type: RandomSpawner + rarePrototypes: + - MobSharkSalvage + rareChance: 0 + prototypes: + - MobLuminousPersonSalvage + - MobLuminousEntity + - MobLuminousObjectSalvage + - MobLuminousObjectSalvage + chance: 1 + offset: 0.2 diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/living_light.yml b/Resources/Prototypes/Entities/Mobs/NPCs/living_light.yml index fc7058b68eb..86b75ba7b25 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/living_light.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/living_light.yml @@ -186,3 +186,24 @@ path: /Audio/Weapons/Guns/Gunshots/laser3.ogg soundEmpty: path: /Audio/Items/Lighters/lighter_off.ogg + +- type: entity + id: MobLuminousPersonSalvage + parent: MobLuminousPerson + suffix: "Salvage Ruleset" + components: + - type: SalvageMobRestrictions #So they don't linger after a wreck despawns + +- type: entity + id: MobLuminousObjectSalvage + parent: MobLuminousObject + suffix: "Salvage Ruleset" + components: + - type: SalvageMobRestrictions #So they don't linger after a wreck despawns + +- type: entity + id: MobLuminousEntitySalvage + parent: MobLuminousEntity + suffix: "Salvage Ruleset" + components: + - type: SalvageMobRestrictions #So they don't linger after a wreck despawns From a714898b1933d4a34fffcb0300720cfd4aacfbc9 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 22 Feb 2026 23:21:47 +0000 Subject: [PATCH 386/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 17 ++++++++--------- Resources/Changelog/Maps.yml | 11 +++++++++++ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 6cadef29faf..2ca80aa2ef5 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,13 +1,4 @@ Entries: -- author: K-Dynamic - changes: - - message: Adds smart equip function to pocket 1, pocket 2, and suit storage slots. - Default binds are Shift+F and Shift+G for first and second pocket, Shift+H for - suit storage. - type: Add - id: 9031 - time: '2025-10-04T01:44:30.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/37975 - author: AwareFoxy changes: - message: Added Pride-O-Mat to marathon! @@ -3986,3 +3977,11 @@ id: 9539 time: '2026-02-22T22:52:38.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/41079 +- author: 11BelowStudio + changes: + - message: Added an extra APC to the comms room in Packed, to stop it from getting + overloaded at round start. + type: Fix + id: 9540 + time: '2026-02-22T23:20:39.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42953 diff --git a/Resources/Changelog/Maps.yml b/Resources/Changelog/Maps.yml index 5183776d48e..3726ae8b99e 100644 --- a/Resources/Changelog/Maps.yml +++ b/Resources/Changelog/Maps.yml @@ -1018,4 +1018,15 @@ id: 124 time: '2026-02-22T23:06:42.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42911 +- author: Blackern5000 + changes: + - message: Entirely remade the Vegan Meatball magnet wreck to better work as a wreck + for salvage. + type: Tweak + - message: The Vegan Meatball magnet wreck should no longer pollute space with dozens + of enemies after despawning + type: Fix + id: 125 + time: '2026-02-22T23:20:39.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42994 Order: 2 From 47923bebefc3fa7905904375f4a4ea64fff1116d Mon Sep 17 00:00:00 2001 From: KeTuFaisPiKiNut <85769816+ketufaispikinut@users.noreply.github.com> Date: Sun, 22 Feb 2026 20:11:41 -0500 Subject: [PATCH 387/603] EMP implant uplink texture (Addresses #42008) (#42998) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit set emp implant texture in uplink catalogue to emp_disable particle Co-authored-by: nomdéraisonnablementlong --- Resources/Prototypes/Catalog/uplink_catalog.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index e8a3d80fcfb..e232308d01a 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -1449,7 +1449,7 @@ id: UplinkEmpImplanter name: uplink-emp-implanter-name description: uplink-emp-implanter-desc - icon: { sprite: /Textures/Objects/Magic/magicactions.rsi, state: shield } + icon: { sprite: /Textures/Effects/emp.rsi, state: emp_disable } productEntity: EmpImplanter discountCategory: veryRareDiscounts discountDownTo: From 284693eeb46280987cfc92c84473a02ef525028e Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 23 Feb 2026 01:25:10 +0000 Subject: [PATCH 388/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 2ca80aa2ef5..2c395476ee4 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: AwareFoxy - changes: - - message: Added Pride-O-Mat to marathon! - type: Add - id: 9032 - time: '2025-10-04T16:50:52.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40696 - author: Moomoobeef changes: - message: Evac directional signs now glow in the dark! @@ -3985,3 +3978,11 @@ id: 9540 time: '2026-02-22T23:20:39.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42953 +- author: ketufaispikinut + changes: + - message: Changed the EMP Implanter's uplink icon so it is less easily confused + with the Scram Implanter's. + type: Tweak + id: 9541 + time: '2026-02-23T01:24:02.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42998 From b584549803a3fd3e89aa3ad8f0d2f74607c88e55 Mon Sep 17 00:00:00 2001 From: TytosB <54259736+TytosB@users.noreply.github.com> Date: Sun, 22 Feb 2026 23:35:33 -0600 Subject: [PATCH 389/603] serpentcrest atmos/sec tweaks (#42905) * atmos * obvious * romba will kill me --- Resources/Maps/serpentcrest.yml | 3550 +++++++++++++++++-------------- 1 file changed, 1930 insertions(+), 1620 deletions(-) diff --git a/Resources/Maps/serpentcrest.yml b/Resources/Maps/serpentcrest.yml index 1614f21f96e..b70a98980a0 100644 --- a/Resources/Maps/serpentcrest.yml +++ b/Resources/Maps/serpentcrest.yml @@ -4,8 +4,8 @@ meta: engineVersion: 272.0.0 forkId: "" forkVersion: "" - time: 02/09/2026 19:34:11 - entityCount: 28847 + time: 02/23/2026 05:21:11 + entityCount: 28876 maps: - 1 grids: @@ -85,7 +85,7 @@ entities: chunks: 0,0: ind: 0,0 - tiles: AwAAAAAMAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAACwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAAFAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAADAAMAAAAAAAADAAAAAAMAAwAAAAAAAAMAAAAAAAADAAAAAAQAAwAAAAAAAAMAAAAAAAADAAAAAAgAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAgAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAIAHwAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACgADAAAAAAAAAwAAAAAAAAAAAAAAAAAlAAAAAAAADQAAAAAAAA0AAAAAAAAlAAAAAAAAHwAAAAAAAB8AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAQADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAAJQAAAAAAAB8AAAAAAAAfAAAAAAMADQAAAAABAA0AAAAAAwANAAAAAAEADQAAAAAAAA0AAAAAAAAAAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAACUAAAAAAAAAAAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAAAHwAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAAJQAAAAAAAAAAAAAAAAAlAAAAAAAADQAAAAAAAA0AAAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAlAAAAAAAADQAAAAAAACUAAAAAAAAAAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAADQAAAAABAA0AAAAAAQAAAAAAAAAAJQAAAAAAAA0AAAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAABIAAAAAAwASAAAAAAEAAAAAAAAAACUAAAAAAAANAAAAAAAAJQAAAAAAAA0AAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAASAAAAAAAAEgAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAEgAAAAAAABIAAAAAAwAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAABIAAAAAAAASAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAeAAAAAAIAAAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAEgAAAAADACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAHgAAAAABAB4AAAAAAQAAAAAAAAAADQAAAAAAAA0AAAAAAAAlAAAAAAAAAAAAAAAAACoAAAAAAwAqAAAAAAEAEgAAAAADABIAAAAAAwAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAAqAAAAAAAAKgAAAAABAA== + tiles: AwAAAAAMAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAACwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAAFAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAADAAMAAAAAAAADAAAAAAMAAwAAAAAAAAMAAAAAAAADAAAAAAQAAwAAAAAAAAMAAAAAAAADAAAAAAgAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAgAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAHwAAAAAAAB8AAAAAAgAfAAAAAAIAHwAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACgADAAAAAAAAAwAAAAAAAAAAAAAAAAAlAAAAAAAADQAAAAAAAA0AAAAAAAAlAAAAAAAAHwAAAAAAAB8AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAQADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAAJQAAAAAAAB8AAAAAAAAfAAAAAAMADQAAAAABAA0AAAAAAwANAAAAAAEADQAAAAAAAA0AAAAAAAAAAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAACUAAAAAAAAAAAAAAAAAHwAAAAABAB8AAAAAAQAfAAAAAAAAHwAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAAJQAAAAAAAAAAAAAAAAAlAAAAAAAADQAAAAAAAA0AAAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAlAAAAAAAADQAAAAAAACUAAAAAAAAAAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAADQAAAAABAA0AAAAAAQAAAAAAAAAAJQAAAAAAAA0AAAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAABIAAAAAAwASAAAAAAEAAAAAAAAAACUAAAAAAAANAAAAAAAAJQAAAAAAAA0AAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAASAAAAAAAAEgAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAEgAAAAAAABIAAAAAAwAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAABIAAAAAAAASAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAeAAAAAAIAAAAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAEgAAAAADACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAHgAAAAABAB4AAAAAAQAAAAAAAAAADQAAAAAAAA0AAAAAAAAlAAAAAAAAAAAAAAAAACoAAAAAAwAqAAAAAAEAEgAAAAADABIAAAAAAwAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAAqAAAAAAAAKgAAAAABAA== version: 7 -1,0: ind: -1,0 @@ -93,7 +93,7 @@ entities: version: 7 -1,-1: ind: -1,-1 - tiles: BAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAAAwAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAkAAAAAAgAJAAAAAAMACQAAAAADAAAAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAJAAAAAAAACQAAAAADAAkAAAAAAQAAAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAACQAAAAABAAkAAAAAAQAJAAAAAAEAAAAAAAAAAAQAAAAAAAADAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAkAAAAAAwAJAAAAAAAACQAAAAABAAAAAAAAAAAEAAAAAAAAAwAAAAAIAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAABQAJAAAAAAAACQAAAAAAAAkAAAAAAQAAAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAACQAAAAADAAkAAAAAAAAJAAAAAAMAAAAAAAAAAAQAAAAAAAADAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAkAAAAAAgAJAAAAAAMACQAAAAAAAAAAAAAAAAAEAAAAAAAAAwAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAcAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAMAAAAAAQAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAUAAwAAAAAJAAMAAAAACgADAAAAAAEAAwAAAAAAAA== + tiles: BAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAAAwAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAkAAAAAAgAJAAAAAAMACQAAAAADAAAAAAAAAAAEAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAAJAAAAAAAACQAAAAADAAkAAAAAAQAAAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAACQAAAAABAAkAAAAAAQAJAAAAAAEAAAAAAAAAAAQAAAAAAAADAAAAAAQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAkAAAAAAwAJAAAAAAAACQAAAAABAAAAAAAAAAAEAAAAAAAAAwAAAAAIAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAABQAJAAAAAAAACQAAAAAAAAkAAAAAAQAAAAAAAAAABAAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAACQAAAAADAAkAAAAAAAAJAAAAAAMAAAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAkAAAAAAgAJAAAAAAMACQAAAAAAAAAAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAcAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAMAAAAAAQAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAUAAwAAAAAJAAMAAAAACgADAAAAAAEAAwAAAAAAAA== version: 7 0,-1: ind: 0,-1 @@ -105,7 +105,7 @@ entities: version: 7 -1,1: ind: -1,1 - tiles: DQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAADAAAAAAEAAAAAAAAAAAAAAAAAAAAlAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAMAAAAAAAADAAAAAAcADQAAAAAAACUAAAAAAAAlAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAANAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAABgADAAAAAAAAAwAAAAAFAAMAAAAAAAANAAAAAAAAAwAAAAAAAAAAAAAAAAArAAAAAAEAKwAAAAABACsAAAAAAgArAAAAAAEAKwAAAAAAACsAAAAAAQArAAAAAAIAKwAAAAAAACsAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAwAAAAAAAAMAAAAAAAASAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAACsAAAAAAwArAAAAAAAAKwAAAAACACsAAAAAAwArAAAAAAAAKwAAAAAAACsAAAAAAgArAAAAAAMAKwAAAAACAAMAAAAAAAADAAAAAAAAEgAAAAADAAMAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAABIAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAIAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAgAAwAAAAAGAAMAAAAAAAADAAAAAAAAAgAAAAAAAAMAAAAAAAASAAAAAAEAAwAAAAAAAAMAAAAACAACAAAAAAAAAwAAAAAHAAMAAAAAAAADAAAAAAEAAwAAAAAKAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAIAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAwACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: DQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAADAAAAAAEAAwAAAAAAAA0AAAAAAAAlAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAMAAAAAAAADAAAAAAcADQAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAABgADAAAAAAAAAwAAAAAFAAMAAAAAAAANAAAAAAAAAwAAAAAAAAAAAAAAAAArAAAAAAEAKwAAAAABACsAAAAAAgArAAAAAAEAKwAAAAAAACsAAAAAAQArAAAAAAIAKwAAAAAAACsAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAwAAAAAAAAMAAAAAAAASAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAACsAAAAAAwArAAAAAAAAKwAAAAACACsAAAAAAwArAAAAAAAAKwAAAAAAACsAAAAAAgArAAAAAAMAKwAAAAACAAMAAAAAAAADAAAAAAAAEgAAAAADAAMAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAABIAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAIAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAgAAwAAAAAGAAMAAAAAAAADAAAAAAAAAgAAAAAAAAMAAAAAAAASAAAAAAEAAwAAAAAAAAMAAAAACAACAAAAAAAAAwAAAAAHAAMAAAAAAAADAAAAAAEAAwAAAAAKAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABAADAAAAAAAAAwAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAIAAAAAAAADAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAwACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 1,0: ind: 1,0 @@ -117,7 +117,7 @@ entities: version: 7 -2,0: ind: -2,0 - tiles: HgAAAAABAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAAJAAAAAAAAAAAeAAAAAAIAHgAAAAABAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAIAAAAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAIAAAAAAIACAAAAAADAAgAAAAAAQAIAAAAAAAACAAAAAADAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAwAAAAAKAAMAAAAAAAAAAAAAAAAACAAAAAACAAgAAAAAAQAIAAAAAAIACAAAAAADAAgAAAAAAQACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAQAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAAAQADAAAAAAMAAAAAAAAAAAgAAAAAAwAIAAAAAAMACAAAAAABAAgAAAAAAwAIAAAAAAIAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAEACAAAAAACAAgAAAAAAwAIAAAAAAAACAAAAAADAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAACAAMAAAAAAAAAAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAACUAAAAAAAAlAAAAAAAADQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAlAAAAAAAAJQAAAAAAAAAAAAAAAAAlAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAEAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABAADAAAAAAAAAAAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAABgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAACAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAYAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAQAAAAAAAAAAA0AAAAAAAANAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAFAAMAAAAAAAADAAAAAAAAAwAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA== + tiles: HgAAAAABAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAAJAAAAAAAAAAAeAAAAAAIAHgAAAAABAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAIAAAAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAIAAAAAAIACAAAAAADAAgAAAAAAQAIAAAAAAAACAAAAAADAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAwAAAAAKAAMAAAAAAAAAAAAAAAAACAAAAAACAAgAAAAAAQAIAAAAAAIACAAAAAADAAgAAAAAAQACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAQAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAAAQADAAAAAAMAAAAAAAAAAAgAAAAAAwAIAAAAAAMACAAAAAABAAgAAAAAAwAIAAAAAAIAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAIAAAAAAEACAAAAAACAAgAAAAAAwAIAAAAAAAACAAAAAADAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAACAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAAJQAAAAAAACUAAAAAAAAAAAAAAAAAJQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAEAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAACUAAAAAAAAlAAAAAAAAAAAAAAAAACUAAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAAABAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABAADAAAAAAAAAAAAAAAAAAAAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAAQAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAwAAwAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAACAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAYAAwAAAAAJAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAQAAAAAAAAAAA0AAAAAAAANAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAFAAMAAAAAAAADAAAAAAAAAwAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA== version: 7 -2,-1: ind: -2,-1 @@ -137,7 +137,7 @@ entities: version: 7 -2,1: ind: -2,1 - tiles: AQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAANAAAAAAAADQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAA0AAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABwADAAAAAAAAAwAAAAACAAMAAAAAAAADAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAABAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAYAAwAAAAAAAAMAAAAACgADAAAAAAAAAwAAAAAGAAMAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAgAAwAAAAAAAAMAAAAAAAADAAAAAAcAAwAAAAAAAAMAAAAAAAADAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAkAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAQAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAACAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAKAAMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAANAAAAAAAADQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAACAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAA0AAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAABwADAAAAAAAAAwAAAAACAAMAAAAAAAADAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAABAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAYAAwAAAAAAAAMAAAAACgADAAAAAAAAAwAAAAAGAAMAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAgAAwAAAAAAAAMAAAAAAAADAAAAAAcAAwAAAAAAAAMAAAAAAAADAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAkAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAQAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAMAAAAACAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAgAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAwAAAAAKAAMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 1,-2: ind: 1,-2 @@ -157,7 +157,7 @@ entities: version: 7 -3,0: ind: -3,0 - tiles: DQAAAAACABIAAAAAAgASAAAAAAIAEgAAAAACAA0AAAAAAgANAAAAAAIADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAEAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAEAAAAAAAAAAB4AAAAAAQAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA0AAAAAAwANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAANAAAAAAIADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: DQAAAAACABIAAAAAAgASAAAAAAIAEgAAAAACAA0AAAAAAgANAAAAAAIADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAEAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAEAAAAAAAAAAB4AAAAAAQAAAAAAAAAADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA0AAAAAAwANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAANAAAAAAIADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -3,-1: ind: -3,-1 @@ -205,7 +205,7 @@ entities: version: 7 -2,2: ind: -2,2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAQASAAAAAAIADQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAwASAAAAAAEADQAAAAACAA0AAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAB4AAAAAAQASAAAAAAEADQAAAAABAA0AAAAAAwASAAAAAAIAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAEAAAAAAAAAAA0AAAAAAQANAAAAAAEAEgAAAAABAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAABIAAAAAAgASAAAAAAIAAAAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAAAABIAAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAASAAAAAAMAEgAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAEgAAAAAAABIAAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAABIAAAAAAAASAAAAAAMADQAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAAAAA0AAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAASAAAAAAEAEgAAAAACAA0AAAAAAgANAAAAAAEADQAAAAABAA0AAAAAAQASAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAAASAAAAAAMADQAAAAACAA0AAAAAAQANAAAAAAMAEgAAAAABAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAQASAAAAAAIADQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAwASAAAAAAEADQAAAAACAA0AAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAB4AAAAAAQASAAAAAAEADQAAAAABAA0AAAAAAwASAAAAAAIAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAEAAAAAAAAAAA0AAAAAAQANAAAAAAEAEgAAAAABAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAABIAAAAAAgASAAAAAAIAAAAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAAAABIAAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAASAAAAAAMAEgAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAEgAAAAAAABIAAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAABIAAAAAAAASAAAAAAMADQAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAAAAA0AAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAASAAAAAAEAEgAAAAACAA0AAAAAAgANAAAAAAEADQAAAAABAA0AAAAAAQASAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAABIAAAAAAAASAAAAAAMADQAAAAACAA0AAAAAAQANAAAAAAMAEgAAAAABAA== version: 7 -2,3: ind: -2,3 @@ -229,7 +229,7 @@ entities: version: 7 -3,2: ind: -3,2 - tiles: BgAAAAACAAcAAAAAAAAGAAAAAAMABwAAAAAAAAYAAAAAAgAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAQAHAAAAAAAABgAAAAAAAAcAAAAAAAAGAAAAAAIABgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAEABwAAAAAAAAYAAAAAAgAHAAAAAAAABwAAAAAAAAYAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAACAAcAAAAAAAAGAAAAAAEABwAAAAAAAAcAAAAAAAAGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgAkAAAAAAAAJAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAANAAAAAAMAJAAAAAAAACQAAAAAAAAkAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAADQAAAAACACQAAAAAAAAkAAAAAAAAJAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA0AAAAAAQAkAAAAAAAAJAAAAAAAACQAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: BgAAAAACAAcAAAAAAAAGAAAAAAMABwAAAAAAAAYAAAAAAgAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAQAHAAAAAAAABgAAAAAAAAcAAAAAAAAGAAAAAAIABgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAEABwAAAAAAAAYAAAAAAgAHAAAAAAAABwAAAAAAAAYAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAACAAcAAAAAAAAGAAAAAAEABwAAAAAAAAcAAAAAAAAGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgAkAAAAAAAAJAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAANAAAAAAMAJAAAAAAAACQAAAAAAAAkAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAADQAAAAACACQAAAAAAAAkAAAAAAAAJAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA0AAAAAAQAkAAAAAAAAJAAAAAAAACQAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -4,2: ind: -4,2 @@ -237,7 +237,7 @@ entities: version: 7 -4,1: ind: -4,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAwAAAAAAAAAAJAAAAAAAACQAAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAgAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAwANAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAEADQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAgAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAgANAAAAAAIAAAAAAAAAAA0AAAAAAQANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAIADQAAAAACAAAAAAAAAAANAAAAAAEADQAAAAABAAAAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAgAAAAAAAAAADQAAAAACAA0AAAAAAwAAAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAMADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAIADQAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAAAAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAABAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAQAGAAAAAAMABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAMAEwAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAwAkAAAAAAAAJAAAAAAAACQAAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAgAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAwANAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAEADQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAgAAAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAAFAAAAAAAABQAAAAAAAAAAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAgANAAAAAAIAAAAAAAAAAA0AAAAAAQANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAIADQAAAAACAAAAAAAAAAANAAAAAAEADQAAAAABAAAAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAgAAAAAAAAAADQAAAAACAA0AAAAAAwAAAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAMADQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAIADQAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACAAAAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAFAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAABAA0AAAAAAQANAAAAAAMADQAAAAABAAAAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAQAGAAAAAAMABQAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAMAEwAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAAAAA== version: 7 -4,0: ind: -4,0 @@ -492,11 +492,17 @@ entities: chunkCollection: version: 2 nodes: + - node: + color: '#FFFFFFFF' + id: 2 + decals: + 4646: -41.11937,18.161327 - node: color: '#FFFFFFFF' id: Arrows decals: 2990: -51,53 + 4626: 8,3 - node: cleanable: True color: '#FFFFFFFF' @@ -522,6 +528,7 @@ entities: 3647: -41,16 3648: -41,14 3649: -41,12 + 4624: 10,5 - node: angle: 3.141592653589793 rad color: '#FFFFFFFF' @@ -545,6 +552,7 @@ entities: 3654: -42,21 3655: -42,23 3656: -42,25 + 4625: 12,4 - node: cleanable: True angle: 4.71238898038469 rad @@ -966,15 +974,14 @@ entities: id: BrickCornerOverlayNW decals: 4226: -13,15 - 4245: -13,20 - 4246: -12,21 4289: -13,10 - 4325: -21,11 4355: 2,21 4385: 3,11 4390: 7,8 4415: 20,10 4416: 13,5 + 4653: -20,11 + 4655: -13,21 - node: color: '#52B4E996' id: BrickCornerOverlaySE @@ -1004,12 +1011,12 @@ entities: 4224: -13,12 4244: -13,17 4288: -13,3 - 4324: -21,8 4326: 7,10 4363: 2,13 4387: 3,6 4388: 7,3 4419: 13,4 + 4650: -20,8 - node: color: '#334E6DC8' id: BrickLineOverlayE @@ -1101,7 +1108,6 @@ entities: 4295: -7,10 4296: -6,10 4297: -5,10 - 4317: -20,11 4318: -19,11 4319: -18,11 4320: -16,11 @@ -1127,6 +1133,7 @@ entities: 4435: 18,5 4436: 19,5 4443: 22,7 + 4656: -12,21 - node: color: '#DE3A3A96' id: BrickLineOverlayN @@ -1182,7 +1189,6 @@ entities: 4309: -17,8 4310: -18,8 4311: -19,8 - 4312: -20,8 4327: 8,10 4328: 9,10 4329: 10,10 @@ -1233,8 +1239,6 @@ entities: 4304: -13,7 4305: -13,8 4306: -13,9 - 4313: -21,9 - 4314: -21,10 4356: 2,20 4357: 2,19 4358: 2,18 @@ -1256,6 +1260,9 @@ entities: 4438: 20,8 4439: 20,7 4440: 20,6 + 4651: -20,9 + 4652: -20,10 + 4657: -13,20 - node: color: '#DE3A3A96' id: BrickLineOverlayW @@ -3307,7 +3314,6 @@ entities: color: '#79150096' id: MiniTileInnerOverlayNW decals: - 4247: -12,20 4441: 20,5 - node: color: '#79150096' @@ -3986,7 +3992,7 @@ entities: decals: 2840: 8,-26 2841: -23,-8 - 4445: -22,16 + 4654: -22.577562,17.569319 - node: color: '#FFFFFFFF' id: Rock01 @@ -4208,7 +4214,7 @@ entities: 1954: -59,30 3362: 41,39 3775: -53,30 - 3794: -37,31 + 4638: -38,32 - node: color: '#FFFFFFFF' id: WarnCornerSmallNW @@ -4216,7 +4222,7 @@ entities: 1642: 11,17 1955: -59,30 3363: 43,39 - 3795: -35,31 + 4637: -34,32 - node: color: '#FFFFFFFF' id: WarnCornerSmallSE @@ -4224,7 +4230,7 @@ entities: 1643: 6,22 1952: -59,34 3364: 41,45 - 3792: -37,35 + 4636: -38,34 - node: color: '#FFFFFFFF' id: WarnCornerSmallSW @@ -4232,7 +4238,7 @@ entities: 1644: 11,22 1953: -59,34 3365: 43,45 - 3793: -35,35 + 4639: -34,34 - node: color: '#FFFFFFFF' id: WarnFull @@ -4279,9 +4285,7 @@ entities: 3356: 41,40 3508: 7,39 3509: 7,38 - 3789: -37,32 - 3790: -37,33 - 3791: -37,34 + 4635: -38,33 - node: cleanable: True color: '#FFFFFFFF' @@ -4377,7 +4381,9 @@ entities: 1984: -50,38 3351: 42,45 3507: 6,37 - 3782: -36,35 + 4631: -37,34 + 4632: -36,34 + 4633: -35,34 - node: cleanable: True color: '#FFFFFFFF' @@ -4413,9 +4419,7 @@ entities: 3366: 43,43 3510: 5,38 3511: 5,39 - 3783: -35,34 - 3784: -35,33 - 3785: -35,32 + 4634: -34,33 - node: cleanable: True color: '#FFFFFFFF' @@ -4447,7 +4451,9 @@ entities: 3772: -52,30 3773: -51,30 3774: -50,30 - 3788: -36,31 + 4628: -37,32 + 4629: -36,32 + 4630: -35,32 - node: cleanable: True color: '#FFFFFFFF' @@ -4490,6 +4496,11 @@ entities: 4604: -2,52 4605: -2,53 4606: -2,54 + - node: + color: '#FFFFFFFF' + id: c + decals: + 4645: -41.916245,18.176952 - node: color: '#000000FF' id: e @@ -4501,6 +4512,20 @@ entities: decals: 1958: -59,30 1959: -59,34 + - node: + cleanable: True + angle: 3.141592653589793 rad + color: '#791500CD' + id: footprint + decals: + 4609: -40.83001,-30.971052 + 4610: -41.11126,-30.439802 + 4611: -40.76751,-29.908552 + 4612: -41.126884,-29.392927 + 4613: -40.783134,-28.736677 + 4614: -41.08001,-28.189802 + 4615: -40.79876,-27.471052 + 4616: -41.189384,-26.955427 - node: cleanable: True angle: 3.141592653589793 rad @@ -4517,15 +4542,6 @@ entities: 1777: -4.038497,-60.21656 1778: -3.8822472,-60.71656 1779: -4.210372,-61.294685 - 1799: -41.121185,-26.595129 - 1800: -40.91806,-27.376379 - 1801: -41.058685,-28.204504 - 1802: -40.839935,-28.860754 - 1803: -41.058685,-29.720129 - 1804: -40.88681,-30.751379 - 1805: -41.01181,-31.376379 - 1806: -40.839935,-31.735754 - 1807: -40.94931,-31.907629 - node: color: '#000000FF' id: g @@ -4536,11 +4552,29 @@ entities: id: l decals: 4216: -0.29188526,15.064682 + - node: + color: '#FFFFFFFF' + id: n + decals: + 4642: -41.384995,22.406324 + 4648: -41.666245,14.333202 - node: color: '#000000FF' id: o decals: 4218: -1.5106353,15.064682 + - node: + color: '#FFFFFFFF' + id: o + decals: + 4643: -41.55687,24.250074 + 4644: -41.46312,18.161327 + 4649: -41.228745,14.333202 + - node: + color: '#FFFFFFFF' + id: p + decals: + 4647: -41.478745,16.395702 - node: color: '#000000FF' id: r @@ -4553,18 +4587,17 @@ entities: 4537: -54.04312,34.905552 - node: cleanable: True - color: '#802E26FF' + color: '#791500CD' id: splatter decals: - 1768: -3.3822472,-55.11216 - 1769: -2.9134972,-55.51841 + 4608: -40.95501,-31.861677 - node: cleanable: True - angle: 3.141592653589793 rad color: '#802E26FF' id: splatter decals: - 1808: -40.85556,-32.18888 + 1768: -3.3822472,-55.11216 + 1769: -2.9134972,-55.51841 - node: color: '#882E26FF' id: splatter @@ -4773,21 +4806,32 @@ entities: 197: -19,42 - node: cleanable: True - angle: 3.141592653589793 rad - color: '#802E26FF' + color: '#791500CD' id: thinline decals: - 1809: -40.91806,-33.221226 - 1810: -40.808685,-33.04935 - 1811: -40.902435,-33.721226 - 1812: -40.79306,-33.86185 - 1813: -40.902435,-34.158726 + 4617: -40.83001,-32.846054 + 4618: -40.92376,-32.877304 + 4619: -41.01751,-33.14293 + 4620: -40.86126,-33.596054 + 4621: -40.939384,-33.689804 + 4622: -40.98626,-33.971054 + 4623: -40.89251,-34.01793 - node: color: '#FFFFFFFF' id: trade decals: 4519: 62.998703,-7.005688 4521: 66.01433,-4.911938 + - node: + color: '#FFFFFFFF' + id: v + decals: + 4641: -41.27562,20.3907 + - node: + color: '#FFFFFFFF' + id: w + decals: + 4640: -41.759995,20.406324 - node: color: '#000000FF' id: x @@ -4830,7 +4874,8 @@ entities: 1,4: 0: 61156 2,0: - 0: 29183 + 0: 12799 + 1: 16384 2,1: 0: 30719 2,2: @@ -4949,7 +4994,7 @@ entities: 0: 15295 0,-2: 0: 13107 - 1: 2184 + 2: 2184 0,-5: 0: 49151 1,-4: @@ -4957,7 +5002,7 @@ entities: 1,-3: 0: 8191 1,-2: - 1: 1911 + 2: 1911 0: 4096 1,-5: 0: 65535 @@ -5033,7 +5078,7 @@ entities: 0: 255 -1,7: 0: 3 - 2: 32 + 3: 32 5,0: 0: 61695 5,1: @@ -5042,7 +5087,7 @@ entities: 0: 30591 5,3: 0: 945 - 3: 2048 + 4: 2048 5,-1: 0: 61627 6,0: @@ -5116,14 +5161,14 @@ entities: -9,0: 0: 255 -8,2: - 4: 4352 + 5: 4352 -9,2: - 4: 2184 + 5: 2184 0: 819 -8,3: - 4: 4369 + 5: 4369 -8,4: - 4: 4369 + 5: 4369 -7,0: 0: 8959 -7,1: @@ -5137,7 +5182,8 @@ entities: -6,0: 0: 45823 -6,1: - 0: 14523 + 1: 1 + 0: 14522 -6,2: 0: 35775 -6,-1: @@ -5235,24 +5281,24 @@ entities: 8,7: 0: 4093 -8,5: - 4: 4369 + 5: 4369 -8,6: - 4: 61713 + 5: 61713 -9,6: - 4: 65280 - 5: 7 + 5: 65280 + 6: 7 -8,7: 0: 12400 - 4: 34952 + 5: 34952 -9,7: 0: 65520 -8,8: 0: 13107 - 4: 34952 + 5: 34952 -7,7: - 4: 12561 + 5: 12561 -7,8: - 4: 62259 + 5: 62259 4,-5: 0: 2188 5,-6: @@ -5299,7 +5345,7 @@ entities: 0: 3863 -6,-9: 0: 47375 - 2: 512 + 3: 512 -5,-8: 0: 340 -5,-9: @@ -5307,21 +5353,21 @@ entities: -5,-6: 0: 25668 8,1: - 4: 8 + 5: 8 8,2: - 4: 8 + 5: 8 8,3: - 4: 8 + 5: 8 9,0: 0: 255 9,1: - 4: 7 + 5: 7 0: 2048 9,2: - 4: 7 + 5: 7 0: 2048 9,3: - 4: 7 + 5: 7 0: 2048 9,-1: 0: 61440 @@ -5435,32 +5481,32 @@ entities: 0: 65535 -10,0: 0: 12543 - 4: 16384 + 5: 16384 -10,3: 0: 4369 - 4: 17476 + 5: 17476 -10,-1: 0: 63711 -10,1: - 4: 8934 + 5: 8934 0: 32768 -10,2: - 4: 546 + 5: 546 0: 2184 -10,4: 0: 4369 - 4: 17476 + 5: 17476 -9,1: - 4: 35056 + 5: 35056 0: 12288 -9,3: - 6: 1799 + 7: 1799 -9,4: - 7: 7 - 6: 1792 + 8: 7 + 7: 1792 -12,-4: 0: 36983 - 2: 24576 + 3: 24576 -12,-5: 0: 32631 -13,-4: @@ -5469,7 +5515,7 @@ entities: 0: 65535 -13,-3: 0: 65339 - 3: 128 + 4: 128 -12,-2: 0: 48031 -13,-2: @@ -5541,7 +5587,8 @@ entities: 11,-4: 0: 65535 11,-3: - 0: 57117 + 0: 24349 + 1: 32768 11,-2: 0: 56785 11,-5: @@ -5590,7 +5637,7 @@ entities: 0: 883 -9,-9: 0: 40207 - 2: 16384 + 3: 16384 -8,-12: 0: 61166 -9,-12: @@ -5765,7 +5812,7 @@ entities: 0: 65535 8,11: 0: 53503 - 8: 8192 + 1: 8192 0,8: 0: 30576 0,9: @@ -5785,7 +5832,7 @@ entities: 1,9: 0: 65535 1,10: - 8: 1 + 1: 1 0: 61694 1,11: 0: 4095 @@ -5806,14 +5853,14 @@ entities: 3,12: 0: 4411 -4,8: - 4: 240 + 5: 240 -5,8: - 4: 29888 + 5: 29888 -4,9: 0: 65528 -5,9: 0: 65024 - 4: 22 + 5: 22 -4,10: 0: 65535 -5,10: @@ -5825,7 +5872,7 @@ entities: -4,12: 0: 65535 -3,8: - 4: 48 + 5: 48 0: 24576 -3,9: 0: 30583 @@ -5853,65 +5900,65 @@ entities: 0: 65535 -8,9: 0: 51 - 4: 63624 + 5: 63624 -9,9: 0: 255 - 4: 61440 + 5: 61440 -8,10: - 4: 143 + 5: 143 -9,10: - 4: 4383 + 5: 4383 -7,10: - 4: 17524 + 5: 17524 -7,9: - 4: 49152 + 5: 49152 -7,11: - 4: 17484 + 5: 17484 -7,12: - 4: 3140 + 5: 3140 -6,8: - 4: 61440 + 5: 61440 -6,9: - 4: 30993 + 5: 30993 -6,10: - 4: 18 + 5: 18 0: 61128 -6,11: 0: 52974 - 4: 4096 + 5: 4096 -6,12: - 4: 12098 + 5: 12098 0: 8 -5,12: 0: 3839 - 4: 4096 + 5: 4096 -6,13: - 4: 35042 + 5: 35042 -5,13: - 4: 62532 + 5: 62532 -4,13: - 4: 63488 + 5: 63488 0: 8 -3,13: 0: 103 -4,14: - 4: 2184 + 5: 2184 -3,14: - 4: 7936 + 5: 7936 -3,15: - 4: 4369 + 5: 4369 0: 34816 -3,16: - 4: 4369 + 5: 4369 0: 33856 -2,13: 0: 65535 -2,14: - 4: 6928 + 5: 6928 0: 17472 -2,15: 0: 60724 - 4: 1 + 5: 1 -2,16: 0: 45567 -1,13: @@ -5920,15 +5967,15 @@ entities: 0: 65314 -1,14: 0: 8738 - 4: 2048 + 5: 2048 -1,16: 0: 62207 0,14: 0: 4368 - 4: 11808 + 5: 11808 0,15: 0: 48417 - 4: 2 + 5: 2 0,13: 0: 28398 0,16: @@ -5936,36 +5983,36 @@ entities: 1,13: 0: 59 1,14: - 4: 4383 + 5: 4383 1,15: - 4: 4369 + 5: 4369 2,13: 0: 1 - 4: 32768 + 5: 32768 2,14: - 4: 15 + 5: 15 2,15: - 4: 51200 + 5: 51200 2,16: - 4: 310 + 5: 310 3,13: - 4: 40720 + 5: 40720 3,15: - 4: 306 + 5: 306 3,14: - 4: 25800 + 5: 25800 4,13: - 4: 3840 + 5: 3840 5,13: - 4: 3857 + 5: 3857 6,13: - 4: 3840 + 5: 3840 7,13: - 4: 3874 + 5: 3874 8,12: 0: 511 8,13: - 4: 3840 + 5: 3840 -13,4: 0: 56587 -12,5: @@ -5992,16 +6039,16 @@ entities: 0: 48059 -10,5: 0: 4369 - 4: 17476 + 5: 17476 -10,6: 0: 20753 - 4: 35908 + 5: 35908 -10,7: 0: 65489 -10,8: 0: 65535 -9,5: - 6: 7 + 7: 7 9: 1792 -12,9: 0: 30704 @@ -6012,60 +6059,60 @@ entities: -13,10: 0: 4095 -12,11: - 4: 8784 + 5: 8784 0: 160 -13,11: - 4: 8912 + 5: 8912 0: 39 -12,12: 0: 2 - 4: 8749 + 5: 8749 -11,9: 0: 61688 -11,10: 0: 15 - 4: 7936 + 5: 7936 -11,11: - 4: 26231 + 5: 26231 -11,12: 0: 10 - 4: 58981 + 5: 58981 -10,9: 0: 12543 - 4: 32768 + 5: 32768 -10,10: 0: 4099 - 4: 61320 + 5: 61320 -10,11: 0: 4369 - 4: 8738 + 5: 8738 -10,12: 0: 4369 - 4: 8738 + 5: 8738 -16,8: 0: 35771 -16,7: 0: 49072 -17,8: 0: 3327 - 4: 4096 + 5: 4096 -16,9: - 4: 4369 + 5: 4369 0: 52416 -17,9: - 4: 36623 + 5: 36623 -16,10: - 4: 4369 + 5: 4369 0: 3276 -17,10: - 4: 34952 + 5: 34952 -16,11: - 4: 8817 + 5: 8817 0: 142 -17,11: - 4: 136 + 5: 136 -16,12: - 4: 8738 + 5: 8738 -15,8: 0: 65535 -15,9: @@ -6074,31 +6121,32 @@ entities: 0: 1911 -15,11: 0: 23 - 4: 13280 + 5: 13280 -15,7: 0: 65532 -15,12: - 4: 13117 + 5: 13117 0: 2 -14,9: 0: 65268 -14,10: 0: 32767 -14,11: - 4: 8912 + 5: 8912 0: 32 -14,8: 0: 61166 -14,7: - 0: 61408 + 0: 53120 + 3: 8288 -14,12: 0: 2 - 4: 8749 + 5: 8749 -13,8: 0: 30583 -13,12: 0: 28674 - 4: 557 + 5: 557 -16,4: 0: 48059 -16,3: @@ -6189,10 +6237,10 @@ entities: 0: 48059 -16,-8: 0: 32975 - 4: 256 + 5: 256 -17,-8: 0: 12 - 4: 3843 + 5: 3843 -16,-7: 0: 65528 -16,-6: @@ -6222,7 +6270,7 @@ entities: -8,-16: 0: 48048 -8,-17: - 4: 4375 + 5: 4375 -9,-16: 0: 56784 -8,-15: @@ -6278,7 +6326,8 @@ entities: -2,-16: 0: 12272 -2,-15: - 0: 30583 + 0: 30567 + 3: 16 -2,-14: 0: 61559 -2,-17: @@ -6331,7 +6380,7 @@ entities: 0: 63965 4,-17: 0: 60928 - 4: 2 + 5: 2 5,-16: 0: 36816 5,-15: @@ -6349,7 +6398,7 @@ entities: 0: 61695 6,-17: 0: 62208 - 4: 130 + 5: 130 7,-15: 0: 3549 7,-14: @@ -6357,7 +6406,7 @@ entities: 7,-16: 0: 34952 7,-17: - 4: 35578 + 5: 35578 8,-15: 0: 4369 8,-14: @@ -6386,24 +6435,24 @@ entities: 0: 65535 14,-8: 0: 58912 - 4: 200 + 5: 200 14,-7: 0: 742 - 4: 2056 + 5: 2056 14,-4: 0: 61199 14,-9: - 4: 34959 + 5: 34959 15,-8: - 4: 4113 + 5: 4113 15,-7: - 4: 34945 + 5: 34945 15,-6: 0: 65395 15,-5: 0: 65535 15,-9: - 4: 4369 + 5: 4369 15,-4: 0: 56591 16,-5: @@ -6411,7 +6460,8 @@ entities: 16,-6: 0: 8192 16,0: - 0: 61166 + 0: 60654 + 3: 512 15,0: 0: 60639 15,1: @@ -6429,14 +6479,15 @@ entities: 16,-1: 0: 20206 17,0: - 0: 4369 + 0: 4353 + 3: 16 17,1: 0: 4048 17,2: 0: 13107 17,3: 0: 13059 - 4: 32768 + 5: 32768 16,4: 0: 48056 17,4: @@ -6444,42 +6495,42 @@ entities: 18,1: 0: 3856 18,3: - 4: 61440 + 5: 61440 18,0: - 4: 4369 + 5: 4369 18,-1: - 4: 4593 + 5: 4593 18,4: - 4: 4369 + 5: 4369 19,1: 0: 260 - 4: 36488 + 5: 36488 19,3: - 4: 63624 + 5: 63624 0: 68 19,0: 0: 17476 - 4: 34952 + 5: 34952 19,-1: 0: 16384 - 4: 35056 + 5: 35056 19,2: 0: 17476 - 4: 34952 + 5: 34952 20,0: 0: 21845 - 4: 34952 + 5: 34952 20,1: 0: 5 - 4: 36744 + 5: 36744 20,2: 0: 21845 - 4: 34952 + 5: 34952 20,3: 0: 85 - 4: 61576 + 5: 61576 16,-3: - 4: 224 + 5: 224 15,-3: 0: 65477 16,-2: @@ -6489,18 +6540,18 @@ entities: 15,-1: 0: 56569 17,-3: - 4: 240 + 5: 240 17,-2: 0: 4369 17,-1: 0: 273 - 4: 192 + 5: 192 18,-3: - 4: 4368 + 5: 4368 18,-2: - 4: 4369 + 5: 4369 20,-1: - 4: 33008 + 5: 33008 0: 20480 12,7: 0: 61166 @@ -6563,38 +6614,38 @@ entities: 18,7: 0: 28784 12,-12: - 4: 272 + 5: 272 0: 61440 11,-12: - 4: 196 + 5: 196 0: 61712 12,-11: 0: 15 - 4: 272 + 5: 272 11,-11: 0: 4383 - 4: 19456 + 5: 19456 12,-10: - 4: 15 + 5: 15 0: 28160 11,-10: - 4: 12 + 5: 12 0: 65297 13,-12: 0: 61440 - 4: 3584 + 5: 3584 13,-11: 0: 15 - 4: 224 + 5: 224 13,-10: - 4: 15 + 5: 15 0: 30464 14,-12: - 4: 4352 + 5: 4352 14,-11: - 4: 17 + 5: 17 14,-10: - 4: 8739 + 5: 8739 8,-12: 0: 61154 9,-12: @@ -6614,41 +6665,41 @@ entities: 10,-13: 0: 4369 11,-13: - 4: 17476 + 5: 17476 8,-16: - 4: 49152 + 5: 49152 9,-16: - 4: 61713 + 5: 61713 9,-14: 0: 65535 9,-17: - 4: 4336 + 5: 4336 0: 3855 9,-15: - 4: 273 + 5: 273 10,-16: - 4: 61986 + 5: 61986 10,-14: 0: 4369 - 4: 3072 + 5: 3072 10,-17: - 4: 8432 + 5: 8432 0: 3855 10,-15: - 4: 3618 + 5: 3618 11,-16: - 4: 29764 + 5: 29764 11,-15: - 4: 8960 + 5: 8960 11,-14: - 4: 18210 + 5: 18210 11,-17: - 4: 17524 + 5: 17524 0: 257 -12,-16: - 4: 35064 + 5: 35064 -13,-16: - 4: 4592 + 5: 4592 -12,-15: 0: 65520 -12,-14: @@ -6660,7 +6711,7 @@ entities: -12,-12: 0: 56343 -12,-17: - 4: 34952 + 5: 34952 -11,-15: 0: 24016 -11,-14: @@ -6670,7 +6721,7 @@ entities: -11,-12: 0: 65291 -11,-17: - 4: 17476 + 5: 17476 -11,-16: 0: 34944 -10,-16: @@ -6702,21 +6753,21 @@ entities: -10,-10: 0: 65359 -16,-12: - 4: 1100 + 5: 1100 -16,-13: - 4: 17476 + 5: 17476 -15,-12: - 4: 1 + 5: 1 0: 52428 -16,-11: - 4: 8 + 5: 8 -15,-11: 0: 52960 -15,-10: 0: 61133 -15,-13: 0: 49152 - 4: 34 + 5: 34 -14,-12: 0: 56793 -14,-11: @@ -6749,32 +6800,32 @@ entities: 0: 63799 14,11: 0: 141 - 4: 8704 + 5: 8704 14,9: 0: 26350 14,12: - 4: 57890 + 5: 57890 15,9: 0: 56797 15,10: 0: 65421 15,11: 0: 1 - 4: 17472 + 5: 17472 15,12: - 4: 29772 + 5: 29772 16,9: 0: 64443 16,10: 0: 1 - 4: 40960 + 5: 40960 9,9: 0: 46079 9,10: 0: 48059 9,11: 0: 187 - 4: 32768 + 5: 32768 10,9: 0: 62719 10,10: @@ -6782,57 +6833,57 @@ entities: 10,11: 0: 255 9,12: - 4: 35048 + 5: 35048 11,12: 0: 8 - 4: 48 + 5: 48 9,13: - 4: 36744 + 5: 36744 10,12: - 4: 240 + 5: 240 9,14: - 4: 34952 + 5: 34952 10,13: - 4: 61440 + 5: 61440 0: 3584 9,15: - 4: 34952 + 5: 34952 9,16: - 4: 34952 + 5: 34952 10,15: - 4: 61440 + 5: 61440 0: 3598 10,14: 0: 3598 - 4: 57344 + 5: 57344 10,16: 0: 3598 - 4: 57344 + 5: 57344 11,13: 0: 1792 - 4: 61440 + 5: 61440 11,14: 0: 1799 - 4: 61440 + 5: 61440 11,15: 0: 1799 - 4: 61440 + 5: 61440 11,16: 0: 1799 - 4: 61440 + 5: 61440 12,13: 0: 3073 - 4: 61712 + 5: 61712 12,14: - 4: 61713 + 5: 61713 0: 3084 12,15: - 4: 61713 + 5: 61713 0: 3084 13,-3: 0: 65327 13,-2: - 4: 112 + 5: 112 0: 28672 13,-1: 0: 65319 @@ -6841,7 +6892,7 @@ entities: 14,-3: 0: 65294 14,-2: - 4: 112 + 5: 112 0: 28672 14,-1: 0: 63271 @@ -6856,110 +6907,110 @@ entities: 14,2: 0: 65535 -16,13: - 4: 8738 + 5: 8738 0: 8 -16,14: - 4: 8742 + 5: 8742 0: 17600 -16,15: - 4: 226 + 5: 226 0: 4 -15,13: - 4: 13117 + 5: 13117 0: 2 -15,14: - 4: 62269 + 5: 62269 0: 2 -15,15: - 4: 240 + 5: 240 -14,13: - 4: 8749 + 5: 8749 0: 2 -14,14: - 4: 53805 + 5: 53805 0: 8194 -14,15: - 4: 240 + 5: 240 -13,13: 0: 119 - 4: 8712 + 5: 8712 -13,14: - 4: 61997 + 5: 61997 0: 2 -13,15: - 4: 240 + 5: 240 -12,13: - 4: 8749 + 5: 8749 0: 2 -12,14: - 4: 53805 + 5: 53805 0: 8194 -12,15: - 4: 240 + 5: 240 -11,13: - 4: 26213 + 5: 26213 0: 2 -11,14: - 4: 13925 + 5: 13925 0: 16514 -11,15: - 4: 240 + 5: 240 -10,13: 0: 4369 - 4: 8738 + 5: 8738 -10,14: 0: 4369 - 4: 8738 + 5: 8738 -10,15: 0: 1 - 4: 50 + 5: 50 -20,-3: 0: 65280 -21,-3: 0: 65152 -20,-2: 0: 15 - 4: 30464 + 5: 30464 -21,-2: 0: 14 - 4: 65280 + 5: 65280 -20,-1: - 4: 7509 + 5: 7509 -20,0: - 4: 3857 + 5: 3857 -19,-3: 0: 65344 -19,-2: 0: 65295 -19,-1: 0: 15 - 4: 3840 + 5: 3840 -18,-3: 0: 65280 -18,-2: 0: 65327 -18,-1: 0: 34959 - 4: 8960 + 5: 8960 -18,0: - 4: 8994 + 5: 8994 0: 2184 -17,-4: 0: 30583 -17,-5: 0: 30583 -4,-18: - 4: 306 + 5: 306 0: 34952 -5,-18: - 4: 240 + 5: 240 -4,-20: 0: 57568 -4,-21: - 4: 8736 + 5: 8736 0: 34944 -4,-19: - 4: 8736 + 5: 8736 0: 34944 -3,-20: 0: 62451 @@ -6972,35 +7023,35 @@ entities: -2,-20: 0: 4112 -2,-19: - 4: 4368 + 5: 4368 -2,-18: - 4: 4369 + 5: 4369 -2,-21: - 4: 4368 + 5: 4368 2,-20: 0: 63736 2,-21: - 4: 4368 + 5: 4368 0: 52424 2,-19: - 4: 4368 + 5: 4368 0: 52424 2,-18: - 4: 4369 + 5: 4369 0: 52428 3,-20: 0: 61937 3,-19: 0: 13105 - 4: 34944 + 5: 34944 3,-18: 0: 13107 - 4: 34952 + 5: 34952 3,-21: 0: 13105 - 4: 34944 + 5: 34944 4,-18: - 4: 12288 + 5: 12288 -20,4: 0: 61166 -20,3: @@ -7011,27 +7062,27 @@ entities: 0: 3310 -19,4: 0: 30583 - 4: 2048 + 5: 2048 -19,5: 0: 30583 -19,6: 0: 887 - 4: 8 + 5: 8 -19,3: 0: 30583 - 4: 8 + 5: 8 -18,4: - 4: 10018 + 5: 10018 -18,6: - 4: 13111 + 5: 13111 -18,7: - 4: 13171 + 5: 13171 -18,8: - 4: 55091 + 5: 55091 -18,3: - 4: 8743 + 5: 8743 -18,5: - 4: 8738 + 5: 8738 -17,4: 0: 30583 -17,3: @@ -7041,47 +7092,47 @@ entities: -20,2: 0: 61166 -19,0: - 4: 12032 + 5: 12032 -19,1: 0: 30576 - 4: 2050 + 5: 2050 -19,2: 0: 30583 -18,1: - 4: 10018 + 5: 10018 -18,2: - 4: 8738 + 5: 8738 -17,2: 0: 30583 -20,-8: - 4: 36751 + 5: 36751 -21,-8: - 4: 7950 + 5: 7950 -20,-6: 0: 4095 -21,-6: 0: 36606 -20,-9: - 4: 34954 + 5: 34954 0: 1365 -19,-8: - 4: 3855 + 5: 3855 -20,-7: - 4: 2184 + 5: 2184 -19,-6: 0: 20479 -19,-9: - 4: 34954 + 5: 34954 0: 1365 -18,-8: - 4: 36751 + 5: 36751 -18,-6: 0: 4095 -18,-9: - 4: 34954 + 5: 34954 0: 1365 -18,-7: - 4: 2184 + 5: 2184 0,17: 0: 65038 -1,17: @@ -7098,16 +7149,16 @@ entities: 0: 274 1,16: 0: 272 - 4: 51200 + 5: 51200 1,17: 0: 4354 - 4: 68 + 5: 68 1,18: 0: 8209 1,19: 0: 18 -3,17: - 4: 273 + 5: 273 0: 52234 -3,18: 0: 41164 @@ -7124,39 +7175,39 @@ entities: -1,20: 0: 30847 -23,-7: - 4: 52416 + 5: 52416 -23,-6: - 4: 52428 + 5: 52428 -23,-5: - 4: 52428 + 5: 52428 -23,-4: - 4: 52428 + 5: 52428 -22,-7: - 4: 8184 + 5: 8184 -22,-6: - 4: 4369 + 5: 4369 0: 3308 -22,-8: - 4: 34952 + 5: 34952 -22,-9: - 4: 34816 + 5: 34816 -21,-7: - 4: 273 + 5: 273 -21,-9: - 4: 35227 + 5: 35227 0: 1092 -23,-3: - 4: 52428 + 5: 52428 -23,-2: - 4: 52428 + 5: 52428 -22,-3: - 4: 4368 + 5: 4368 0: 60416 -22,-2: - 4: 65297 + 5: 65297 0: 12 -18,9: - 4: 3857 + 5: 3857 -4,-22: 0: 57568 -4,-23: @@ -7178,246 +7229,251 @@ entities: 3,-22: 0: 61937 12,16: - 4: 61713 + 5: 61713 0: 3084 13,13: 0: 3840 - 4: 61440 + 5: 61440 13,14: 0: 3855 - 4: 61440 + 5: 61440 13,15: 0: 3855 - 4: 61440 + 5: 61440 13,16: 0: 3855 - 4: 61440 + 5: 61440 14,13: - 4: 12834 + 5: 12834 14,15: - 4: 12834 + 5: 12834 14,14: - 4: 8738 + 5: 8738 14,16: - 4: 8738 + 5: 8738 16,12: - 4: 1 + 5: 1 5,-18: - 4: 57344 + 5: 57344 6,-18: - 4: 61440 + 5: 61440 7,-18: - 4: 47850 + 5: 47850 7,-20: - 4: 43754 + 5: 43754 7,-21: - 4: 41696 + 5: 41696 7,-19: - 4: 43690 + 5: 43690 8,-20: - 4: 240 + 5: 240 0: 3598 8,-19: - 4: 240 + 5: 240 0: 3598 8,-18: - 4: 240 + 5: 240 0: 3598 8,-17: - 4: 240 + 5: 240 0: 3598 -8,-18: - 4: 4592 + 5: 4592 -9,-18: - 4: 61440 + 5: 61440 -7,-18: - 4: 48 + 5: 48 -6,-18: - 4: 192 + 5: 192 17,9: 0: 1911 16,11: - 4: 8 + 5: 8 17,11: - 4: 1 + 5: 1 18,9: - 4: 28672 + 5: 28672 18,10: - 4: 17476 + 5: 17476 18,11: - 4: 1092 + 5: 1092 21,0: 0: 21845 - 4: 34952 + 5: 34952 21,1: 0: 5 - 4: 36744 + 5: 36744 21,2: 0: 21845 - 4: 34952 + 5: 34952 21,3: 0: 85 - 4: 61576 + 5: 61576 21,-1: 0: 20480 - 4: 33008 + 5: 33008 22,0: 0: 21845 - 4: 34952 + 5: 34952 22,1: 0: 5 - 4: 36744 + 5: 36744 22,2: 0: 21845 - 4: 34952 + 5: 34952 22,3: 0: 85 - 4: 63624 + 5: 63624 22,-1: 0: 20480 - 4: 35056 + 5: 35056 23,0: 0: 4369 - 4: 58436 + 5: 58436 23,1: 0: 1 - 4: 1792 + 5: 1792 23,2: 0: 4369 - 4: 17632 + 5: 17632 23,3: 0: 17 - 4: 29764 + 5: 29764 23,-1: 0: 4096 - 4: 17520 + 5: 17520 24,0: - 4: 4096 + 5: 4096 24,2: - 4: 17 + 5: 17 -20,-12: - 4: 33008 + 5: 33008 0: 20480 -21,-12: - 4: 39408 + 5: 39408 0: 16384 -20,-11: 0: 21845 - 4: 35464 + 5: 35464 -21,-11: - 4: 39833 + 5: 39833 0: 17476 -20,-10: 0: 21845 - 4: 34952 + 5: 34952 -21,-10: - 4: 39321 + 5: 39321 0: 17476 -19,-12: - 4: 35056 + 5: 35056 0: 20480 -19,-11: 0: 21845 - 4: 35464 + 5: 35464 -19,-10: 0: 21845 - 4: 34952 + 5: 34952 -18,-12: - 4: 48 + 5: 48 0: 4096 -18,-11: 0: 21841 - 4: 35464 + 5: 35464 -18,-10: 0: 21845 - 4: 34952 + 5: 34952 -17,-11: 0: 4352 -17,-10: 0: 4369 -17,-9: 0: 273 - 4: 1094 + 5: 1094 8,-21: - 4: 3632 + 5: 3632 9,17: - 4: 34952 + 5: 34952 10,17: - 4: 63616 + 5: 63616 0: 14 11,17: 0: 7 - 4: 12288 + 5: 12288 11,18: - 4: 14 + 5: 14 12,18: - 4: 15 + 5: 15 12,17: - 4: 33041 + 5: 33041 0: 12 13,17: 0: 15 - 4: 61984 + 5: 61984 14,17: - 4: 12834 + 5: 12834 9,-20: 0: 3855 - 4: 4336 + 5: 4336 9,-19: 0: 3855 - 4: 4336 + 5: 4336 9,-18: 0: 3855 - 4: 4336 + 5: 4336 9,-21: - 4: 7936 + 5: 7936 10,-20: 0: 3855 - 4: 8432 + 5: 8432 10,-19: 0: 3855 - 4: 8432 + 5: 8432 10,-18: 0: 3855 - 4: 8432 + 5: 8432 10,-21: - 4: 12032 + 5: 12032 11,-20: 0: 257 - 4: 17524 + 5: 17524 11,-19: 0: 257 - 4: 17492 + 5: 17492 11,-18: 0: 257 - 4: 17492 + 5: 17492 11,-21: - 4: 18176 + 5: 18176 24,1: - 4: 4369 + 5: 4369 -12,-18: - 4: 32768 + 5: 32768 -11,-18: - 4: 61440 + 5: 61440 -10,-18: - 4: 61440 + 5: 61440 -16,-14: - 4: 19456 + 5: 19456 -15,-14: - 4: 12032 + 5: 12032 -14,-14: - 4: 3840 + 5: 3840 -13,-14: - 4: 273 + 5: 273 0: 1536 -13,-15: - 4: 4375 + 5: 4375 uniqueMixes: - volume: 2500 temperature: 293.15 moles: Oxygen: 21.824879 Nitrogen: 82.10312 + - volume: 2500 + temperature: 293.14975 + moles: + Oxygen: 20.078888 + Nitrogen: 75.53487 - volume: 2500 temperature: 235 moles: @@ -7447,11 +7503,6 @@ entities: temperature: 293.15 moles: Plasma: 6666.982 - - volume: 2500 - temperature: 293.14975 - moles: - Oxygen: 20.078888 - Nitrogen: 75.53487 - volume: 2500 temperature: 293.15 moles: @@ -7646,6 +7697,15 @@ entities: parent: 2 - proto: ActionToggleBlock entities: + - uid: 3986 + mapInit: true + paused: true + components: + - type: Transform + parent: 12806 + - type: Action + originalIconColor: '#FFFFFFFF' + container: 12806 - uid: 23601 mapInit: true paused: true @@ -10297,7 +10357,7 @@ entities: - 377 - 19848 - 18236 - - 362 + - 14 - type: Fixtures fixtures: {} - uid: 20611 @@ -10353,10 +10413,11 @@ entities: parent: 2 - type: DeviceList devices: - - 1790 - - 18240 - 19885 + - 18240 - 21030 + - 1790 + - 4782 - type: Fixtures fixtures: {} - uid: 20615 @@ -11309,6 +11370,12 @@ entities: 28844: - - DoorStatus - DoorBolt + - uid: 27132 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -55.5,16.5 + parent: 2 - uid: 28844 components: - type: Transform @@ -12260,10 +12327,10 @@ entities: parent: 2 - proto: AirlockHeadOfSecurityLocked entities: - - uid: 14 + - uid: 27740 components: - type: Transform - pos: -21.5,8.5 + pos: -20.5,8.5 parent: 2 - proto: AirlockHydroGlassLocked entities: @@ -12967,6 +13034,11 @@ entities: rot: 1.5707963267948966 rad pos: -7.5,11.5 parent: 2 + - uid: 24447 + components: + - type: Transform + pos: 9.5,2.5 + parent: 2 - uid: 28131 components: - type: Transform @@ -13032,6 +13104,13 @@ entities: rot: 1.5707963267948966 rad pos: -2.5,14.5 parent: 2 +- proto: AirlockSecurityLocked + entities: + - uid: 27687 + components: + - type: Transform + pos: -13.5,18.5 + parent: 2 - proto: AirlockServiceGlassLocked entities: - uid: 21718 @@ -15587,6 +15666,8 @@ entities: fixtures: {} - uid: 28734 components: + - type: MetaData + name: Gravgen/anchor apc - type: Transform rot: 1.5707963267948966 rad pos: -53.5,11.5 @@ -16168,6 +16249,30 @@ entities: parent: 2 - proto: AtmosFixBlockerMarker entities: + - uid: 3829 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -39.5,43.5 + parent: 2 + - uid: 3831 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -38.5,41.5 + parent: 2 + - uid: 3858 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -40.5,42.5 + parent: 2 + - uid: 3864 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -40.5,43.5 + parent: 2 - uid: 4023 components: - type: Transform @@ -16228,6 +16333,66 @@ entities: - type: Transform pos: -35.5,12.5 parent: 2 + - uid: 6192 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -39.5,42.5 + parent: 2 + - uid: 17046 + components: + - type: Transform + pos: -36.5,10.5 + parent: 2 + - uid: 17499 + components: + - type: Transform + pos: -36.5,9.5 + parent: 2 + - uid: 18129 + components: + - type: Transform + pos: -36.5,8.5 + parent: 2 + - uid: 21525 + components: + - type: Transform + pos: -35.5,10.5 + parent: 2 + - uid: 21555 + components: + - type: Transform + pos: -35.5,9.5 + parent: 2 + - uid: 22574 + components: + - type: Transform + pos: -35.5,8.5 + parent: 2 + - uid: 25763 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -39.5,41.5 + parent: 2 + - uid: 25783 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -38.5,43.5 + parent: 2 + - uid: 25855 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -38.5,42.5 + parent: 2 + - uid: 25857 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -40.5,41.5 + parent: 2 - proto: AtmosFixFreezerMarker entities: - uid: 5773 @@ -17492,6 +17657,18 @@ entities: - Arsenal - Experimental - CivilianServices +- proto: AutolatheMachineCircuitboard + entities: + - uid: 25400 + components: + - type: Transform + pos: -63.496426,11.469416 + parent: 2 + - uid: 25649 + components: + - type: Transform + pos: -63.496426,11.469416 + parent: 2 - proto: BackgammonBoard entities: - uid: 7088 @@ -18317,6 +18494,11 @@ entities: - type: Transform pos: 58.5,20.5 parent: 2 + - uid: 3098 + components: + - type: Transform + pos: -21.5,10.5 + parent: 2 - uid: 3281 components: - type: Transform @@ -18332,11 +18514,6 @@ entities: - type: Transform pos: 35.5,48.5 parent: 2 - - uid: 3972 - components: - - type: Transform - pos: -23.5,7.5 - parent: 2 - uid: 4545 components: - type: Transform @@ -18480,7 +18657,7 @@ entities: - uid: 4796 components: - type: Transform - pos: -23.5,7.5 + pos: -21.5,10.5 parent: 2 - proto: BedsheetMedical entities: @@ -18783,11 +18960,29 @@ entities: - type: Transform pos: -68.5,7.5 parent: 2 + - uid: 12350 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -35.5,38.5 + parent: 2 + - uid: 12373 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -33.5,38.5 + parent: 2 - uid: 13486 components: - type: Transform pos: 66.5,-16.5 parent: 2 + - uid: 13723 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -34.5,38.5 + parent: 2 - uid: 17851 components: - type: Transform @@ -18821,27 +19016,27 @@ entities: rot: 1.5707963267948966 rad pos: -60.5,43.5 parent: 2 - - uid: 25750 + - uid: 24346 components: - type: Transform - pos: -45.5,18.5 + rot: -1.5707963267948966 rad + pos: -35.5,7.5 parent: 2 - - uid: 25760 + - uid: 25447 components: - type: Transform rot: -1.5707963267948966 rad - pos: -40.5,40.5 + pos: -39.5,40.5 parent: 2 - - uid: 25841 + - uid: 25750 components: - type: Transform - pos: -45.5,22.5 + pos: -45.5,18.5 parent: 2 - - uid: 25874 + - uid: 25841 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -35.5,6.5 + pos: -45.5,22.5 parent: 2 - uid: 25881 components: @@ -19297,7 +19492,7 @@ entities: - uid: 4795 components: - type: Transform - pos: -23.348274,10.567602 + pos: -22.581724,9.64306 parent: 2 - proto: BoozeDispenser entities: @@ -19546,8 +19741,7 @@ entities: - uid: 4792 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -18.5335,11.364477 + pos: -17.59528,11.402665 parent: 2 - uid: 5051 components: @@ -19760,6 +19954,11 @@ entities: rot: 3.141592653589793 rad pos: 63.5,-22.5 parent: 2 + - uid: 9531 + components: + - type: Transform + pos: -37.5,38.5 + parent: 2 - uid: 10876 components: - type: Transform @@ -19772,6 +19971,11 @@ entities: rot: 1.5707963267948966 rad pos: -68.5,24.5 parent: 2 + - uid: 27914 + components: + - type: Transform + pos: -37.5,40.5 + parent: 2 - proto: ButtonFrameCautionSecurity entities: - uid: 1050 @@ -19786,21 +19990,21 @@ entities: rot: 3.141592653589793 rad pos: 55.5,-2.5 parent: 2 - - uid: 25763 + - uid: 25159 components: - type: Transform - pos: -33.5,6.5 + pos: -32.5,38.5 parent: 2 - - uid: 28795 + - uid: 25748 components: - type: Transform - rot: 3.141592653589793 rad - pos: -48.5,36.5 + pos: -34.5,7.5 parent: 2 - - uid: 28815 + - uid: 28795 components: - type: Transform - pos: -37.5,38.5 + rot: 3.141592653589793 rad + pos: -48.5,36.5 parent: 2 - proto: ButtonFrameGrey entities: @@ -20763,6 +20967,11 @@ entities: - type: Transform pos: -34.5,35.5 parent: 2 + - uid: 7741 + components: + - type: Transform + pos: -39.5,41.5 + parent: 2 - uid: 7747 components: - type: Transform @@ -34908,21 +35117,6 @@ entities: - type: Transform pos: -39.5,42.5 parent: 2 - - uid: 21525 - components: - - type: Transform - pos: -32.5,38.5 - parent: 2 - - uid: 21527 - components: - - type: Transform - pos: -33.5,38.5 - parent: 2 - - uid: 21555 - components: - - type: Transform - pos: -35.5,38.5 - parent: 2 - uid: 21624 components: - type: Transform @@ -36468,16 +36662,6 @@ entities: - type: Transform pos: -39.5,34.5 parent: 2 - - uid: 25825 - components: - - type: Transform - pos: -34.5,38.5 - parent: 2 - - uid: 25827 - components: - - type: Transform - pos: -36.5,38.5 - parent: 2 - uid: 25831 components: - type: Transform @@ -36503,21 +36687,11 @@ entities: - type: Transform pos: -35.5,32.5 parent: 2 - - uid: 25856 - components: - - type: Transform - pos: -41.5,40.5 - parent: 2 - uid: 25873 components: - type: Transform pos: -36.5,35.5 parent: 2 - - uid: 25888 - components: - - type: Transform - pos: -39.5,41.5 - parent: 2 - uid: 26020 components: - type: Transform @@ -40825,6 +40999,11 @@ entities: - type: Transform pos: -42.5,53.5 parent: 2 + - uid: 3705 + components: + - type: Transform + pos: -57.5,15.5 + parent: 2 - uid: 3894 components: - type: Transform @@ -40880,6 +41059,11 @@ entities: - type: Transform pos: 64.5,12.5 parent: 2 + - uid: 4155 + components: + - type: Transform + pos: -55.5,15.5 + parent: 2 - uid: 4192 components: - type: Transform @@ -40970,6 +41154,11 @@ entities: - type: Transform pos: -61.5,5.5 parent: 2 + - uid: 5530 + components: + - type: Transform + pos: -56.5,15.5 + parent: 2 - uid: 5548 components: - type: Transform @@ -41150,31 +41339,11 @@ entities: - type: Transform pos: 61.5,7.5 parent: 2 - - uid: 6192 - components: - - type: Transform - pos: -40.5,33.5 - parent: 2 - - uid: 6222 - components: - - type: Transform - pos: -39.5,33.5 - parent: 2 - uid: 6259 components: - type: Transform pos: 61.5,6.5 parent: 2 - - uid: 6287 - components: - - type: Transform - pos: -38.5,33.5 - parent: 2 - - uid: 6294 - components: - - type: Transform - pos: -37.5,33.5 - parent: 2 - uid: 6377 components: - type: Transform @@ -41460,6 +41629,11 @@ entities: - type: Transform pos: -40.5,32.5 parent: 2 + - uid: 7379 + components: + - type: Transform + pos: -53.5,15.5 + parent: 2 - uid: 7381 components: - type: Transform @@ -44240,16 +44414,36 @@ entities: - type: Transform pos: 0.5,-10.5 parent: 2 + - uid: 14485 + components: + - type: Transform + pos: -36.5,32.5 + parent: 2 - uid: 14774 components: - type: Transform pos: -39.5,-43.5 parent: 2 + - uid: 15215 + components: + - type: Transform + pos: -37.5,32.5 + parent: 2 - uid: 16927 components: - type: Transform pos: 0.5,-11.5 parent: 2 + - uid: 16960 + components: + - type: Transform + pos: -38.5,32.5 + parent: 2 + - uid: 16971 + components: + - type: Transform + pos: -39.5,32.5 + parent: 2 - uid: 17302 components: - type: Transform @@ -44820,16 +45014,6 @@ entities: - type: Transform pos: -46.5,37.5 parent: 2 - - uid: 25855 - components: - - type: Transform - pos: -36.5,33.5 - parent: 2 - - uid: 25857 - components: - - type: Transform - pos: -35.5,33.5 - parent: 2 - uid: 25897 components: - type: Transform @@ -44955,15 +45139,25 @@ entities: - type: Transform pos: -6.5,-1.5 parent: 26286 + - uid: 26867 + components: + - type: Transform + pos: -23.5,6.5 + parent: 2 - uid: 27003 components: - type: Transform pos: -47.5,-22.5 parent: 2 - - uid: 27132 + - uid: 27068 components: - type: Transform - pos: -55.5,16.5 + pos: -35.5,33.5 + parent: 2 + - uid: 27072 + components: + - type: Transform + pos: -35.5,32.5 parent: 2 - uid: 27194 components: @@ -45220,26 +45414,11 @@ entities: - type: Transform pos: -63.5,2.5 parent: 2 - - uid: 27494 - components: - - type: Transform - pos: -57.5,16.5 - parent: 2 - - uid: 27495 - components: - - type: Transform - pos: -56.5,16.5 - parent: 2 - uid: 27496 components: - type: Transform pos: -63.5,5.5 parent: 2 - - uid: 27497 - components: - - type: Transform - pos: -54.5,16.5 - parent: 2 - uid: 27498 components: - type: Transform @@ -46591,11 +46770,6 @@ entities: - type: Transform pos: 30.5,32.5 parent: 2 - - uid: 7360 - components: - - type: Transform - pos: -54.5,15.5 - parent: 2 - uid: 7369 components: - type: Transform @@ -53146,6 +53320,11 @@ entities: - type: Transform pos: 40.5,46.5 parent: 2 + - uid: 27690 + components: + - type: Transform + pos: -23.5,6.5 + parent: 2 - uid: 27714 components: - type: Transform @@ -53352,11 +53531,11 @@ entities: rot: 1.5707963267948966 rad pos: -60.5,33.5 parent: 2 - - uid: 7379 + - uid: 7360 components: - type: Transform rot: 1.5707963267948966 rad - pos: -55.5,16.5 + pos: -55.5,15.5 parent: 2 - uid: 7389 components: @@ -53765,6 +53944,31 @@ entities: parent: 2 - proto: CarpetBlack entities: + - uid: 655 + components: + - type: Transform + pos: -22.5,10.5 + parent: 2 + - uid: 3023 + components: + - type: Transform + pos: -21.5,10.5 + parent: 2 + - uid: 3154 + components: + - type: Transform + pos: -21.5,9.5 + parent: 2 + - uid: 3194 + components: + - type: Transform + pos: -22.5,9.5 + parent: 2 + - uid: 3972 + components: + - type: Transform + pos: -22.5,8.5 + parent: 2 - uid: 5714 components: - type: Transform @@ -53819,6 +54023,16 @@ entities: rot: 3.141592653589793 rad pos: -5.5,49.5 parent: 2 + - uid: 9991 + components: + - type: Transform + pos: -22.5,8.5 + parent: 2 + - uid: 9996 + components: + - type: Transform + pos: -21.5,8.5 + parent: 2 - uid: 25666 components: - type: Transform @@ -53874,26 +54088,6 @@ entities: - type: Transform pos: -3.5,51.5 parent: 2 - - uid: 25681 - components: - - type: Transform - pos: -23.5,10.5 - parent: 2 - - uid: 25682 - components: - - type: Transform - pos: -23.5,9.5 - parent: 2 - - uid: 25683 - components: - - type: Transform - pos: -23.5,8.5 - parent: 2 - - uid: 25684 - components: - - type: Transform - pos: -23.5,7.5 - parent: 2 - uid: 25685 components: - type: Transform @@ -53904,21 +54098,6 @@ entities: - type: Transform pos: -22.5,8.5 parent: 2 - - uid: 25687 - components: - - type: Transform - pos: -22.5,7.5 - parent: 2 - - uid: 25688 - components: - - type: Transform - pos: -22.5,9.5 - parent: 2 - - uid: 25689 - components: - - type: Transform - pos: -16.5,10.5 - parent: 2 - uid: 25690 components: - type: Transform @@ -53974,6 +54153,11 @@ entities: - type: Transform pos: 8.5,-7.5 parent: 2 + - uid: 27692 + components: + - type: Transform + pos: -14.5,10.5 + parent: 2 - proto: CarpetBlue entities: - uid: 5584 @@ -58408,11 +58592,6 @@ entities: - type: Transform pos: 1.5,-18.5 parent: 2 - - uid: 4366 - components: - - type: Transform - pos: 1.5,-19.5 - parent: 2 - uid: 4367 components: - type: Transform @@ -59281,6 +59460,11 @@ entities: - type: Transform pos: 39.5,-19.5 parent: 2 + - uid: 6000 + components: + - type: Transform + pos: 9.5,1.5 + parent: 2 - uid: 6138 components: - type: Transform @@ -59516,6 +59700,11 @@ entities: - type: Transform pos: -14.5,-31.5 parent: 2 + - uid: 8031 + components: + - type: Transform + pos: -34.5,6.5 + parent: 2 - uid: 8033 components: - type: Transform @@ -65197,6 +65386,11 @@ entities: - type: Transform pos: 27.5,8.5 parent: 2 + - uid: 21527 + components: + - type: Transform + pos: -37.5,5.5 + parent: 2 - uid: 21536 components: - type: Transform @@ -65352,11 +65546,21 @@ entities: - type: Transform pos: -43.5,-61.5 parent: 2 + - uid: 22703 + components: + - type: Transform + pos: -33.5,8.5 + parent: 2 - uid: 22704 components: - type: Transform pos: -46.5,-61.5 parent: 2 + - uid: 22929 + components: + - type: Transform + pos: -33.5,7.5 + parent: 2 - uid: 23274 components: - type: Transform @@ -65527,6 +65731,11 @@ entities: - type: Transform pos: -54.5,45.5 parent: 2 + - uid: 24796 + components: + - type: Transform + pos: 9.5,2.5 + parent: 2 - uid: 24798 components: - type: Transform @@ -65601,6 +65810,11 @@ entities: rot: -1.5707963267948966 rad pos: -63.5,-20.5 parent: 2 + - uid: 25160 + components: + - type: Transform + pos: -33.5,9.5 + parent: 2 - uid: 25208 components: - type: Transform @@ -65870,6 +66084,23 @@ entities: rot: 1.5707963267948966 rad pos: -35.5,-19.5 parent: 2 + - uid: 25679 + components: + - type: Transform + pos: -35.5,6.5 + parent: 2 + - uid: 25687 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -22.5,6.5 + parent: 2 + - uid: 25688 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -23.5,6.5 + parent: 2 - uid: 25753 components: - type: Transform @@ -65980,6 +66211,11 @@ entities: rot: 1.5707963267948966 rad pos: -33.5,39.5 parent: 2 + - uid: 25863 + components: + - type: Transform + pos: -36.5,6.5 + parent: 2 - uid: 25865 components: - type: Transform @@ -66004,6 +66240,11 @@ entities: rot: 3.141592653589793 rad pos: -43.5,42.5 parent: 2 + - uid: 25874 + components: + - type: Transform + pos: -33.5,6.5 + parent: 2 - uid: 25887 components: - type: Transform @@ -66019,6 +66260,11 @@ entities: - type: Transform pos: -40.5,-67.5 parent: 2 + - uid: 26221 + components: + - type: Transform + pos: -33.5,10.5 + parent: 2 - uid: 26227 components: - type: Transform @@ -66117,6 +66363,11 @@ entities: - type: Transform pos: -63.5,15.5 parent: 2 + - uid: 27512 + components: + - type: Transform + pos: -37.5,6.5 + parent: 2 - uid: 27529 components: - type: Transform @@ -66404,78 +66655,18 @@ entities: rot: -1.5707963267948966 rad pos: -32.5,10.5 parent: 2 - - uid: 27911 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -32.5,8.5 - parent: 2 - - uid: 27912 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -32.5,7.5 - parent: 2 - - uid: 27913 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -32.5,6.5 - parent: 2 - - uid: 27914 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -32.5,5.5 - parent: 2 - - uid: 27915 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -32.5,9.5 - parent: 2 - - uid: 27916 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -33.5,5.5 - parent: 2 - - uid: 27917 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -34.5,5.5 - parent: 2 - - uid: 27918 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -35.5,5.5 - parent: 2 - uid: 27919 components: - type: Transform rot: -1.5707963267948966 rad pos: -37.5,3.5 parent: 2 - - uid: 27920 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -37.5,5.5 - parent: 2 - uid: 27921 components: - type: Transform rot: -1.5707963267948966 rad pos: -37.5,4.5 parent: 2 - - uid: 27922 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -36.5,5.5 - parent: 2 - uid: 27923 components: - type: Transform @@ -68634,6 +68825,12 @@ entities: parent: 2 - proto: ChairOfficeDark entities: + - uid: 674 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -16.47028,10.66829 + parent: 2 - uid: 806 components: - type: Transform @@ -68646,12 +68843,6 @@ entities: rot: 3.141592653589793 rad pos: -8.51841,6.541589 parent: 2 - - uid: 4784 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -17.517183,10.65122 - parent: 2 - uid: 5462 components: - type: Transform @@ -69483,8 +69674,16 @@ entities: - uid: 12806 components: - type: Transform - pos: -55.528698,-14.492428 + pos: -55.53158,-14.472418 parent: 2 + - type: Blocking + blockingToggleActionEntity: 3986 + - type: ActionsContainer + - type: ContainerContainer + containers: + actions: !type:Container + ents: + - 3986 - proto: ClosetBombFilled entities: - uid: 5020 @@ -70301,6 +70500,14 @@ entities: - type: Transform pos: 47.5,-8.5 parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + Oxygen: 1.7459903 + Nitrogen: 6.568249 - uid: 25404 components: - type: Transform @@ -70397,8 +70604,8 @@ entities: immutable: False temperature: 293.14673 moles: - Oxygen: 1.7459903 - Nitrogen: 6.568249 + Oxygen: 1.8856695 + Nitrogen: 7.0937095 - uid: 28769 components: - type: Transform @@ -70410,8 +70617,8 @@ entities: immutable: False temperature: 293.14673 moles: - Oxygen: 1.7459903 - Nitrogen: 6.568249 + Oxygen: 1.8856695 + Nitrogen: 7.0937095 - uid: 28771 components: - type: Transform @@ -70423,8 +70630,8 @@ entities: immutable: False temperature: 293.14673 moles: - Oxygen: 1.7459903 - Nitrogen: 6.568249 + Oxygen: 1.8856695 + Nitrogen: 7.0937095 - type: ContainerContainer containers: entity_storage: !type:Container @@ -70486,13 +70693,6 @@ entities: - type: Transform pos: -20.142391,-39.332623 parent: 2 -- proto: ClothingBackpackDuffelSyndicateFilledMedical - entities: - - uid: 7441 - components: - - type: Transform - pos: -2.5498457,-45.425575 - parent: 2 - proto: ClothingBackpackDuffelSyndicateMedical entities: - uid: 5923 @@ -70503,12 +70703,38 @@ entities: canCollide: False - type: InsideEntityStorage storage: 9758 + - uid: 7441 + components: + - type: MetaData + name: syndicate medical duffle bag + - type: Transform + pos: -2.4898367,-45.35287 + parent: 2 + - type: GroupExamine + group: + - hoverMessage: "" + contextText: verb-examine-group-other + icon: /Textures/Interface/examine-star.png + components: + - Armor + - ClothingSpeedModifier + entries: + - message: >- + It provides the following protection: + + - [color=orange]Explosion[/color] damage [color=white]to contents[/color] reduced by [color=lightblue]90%[/color]. + priority: 0 + component: Armor + - message: This decreases your running speed by [color=yellow]10%[/color]. + priority: 0 + component: ClothingSpeedModifier + title: null - proto: ClothingBackpackMerc entities: - uid: 666 components: - type: Transform - pos: -20.583076,16.483791 + pos: -21.561937,18.256819 parent: 2 - proto: ClothingBackpackSatchelCaptain entities: @@ -70795,6 +71021,8 @@ entities: parent: 2 missingComponents: - ShowSyndicateIcons + - ShowMindShieldIcons + - ShowCriminalRecordIcons - proto: ClothingHandsGlovesBoxingBlue entities: - uid: 10373 @@ -70886,7 +71114,7 @@ entities: - uid: 28543 components: - type: Transform - pos: -21.42982,16.093197 + pos: -21.343187,18.694319 parent: 2 - proto: ClothingHandsTacticalMaidGloves entities: @@ -70941,7 +71169,7 @@ entities: - uid: 18915 components: - type: Transform - pos: -21.458076,16.811916 + pos: -21.936937,18.788069 parent: 2 - proto: ClothingHeadHatCardborg entities: @@ -71440,6 +71668,11 @@ entities: storage: 7235 - proto: ClothingMaskGasExplorer entities: + - uid: 4412 + components: + - type: Transform + pos: -15.488522,20.520666 + parent: 2 - uid: 10494 components: - type: Transform @@ -71863,6 +72096,24 @@ entities: canCollide: False - type: InsideEntityStorage storage: 3639 +- proto: ClothingOuterHardsuitEVAPrisoner + entities: + - uid: 16069 + components: + - type: Transform + parent: 5996 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 5996 + - uid: 23882 + components: + - type: Transform + parent: 5996 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 5996 - proto: ClothingOuterHoodieChaplain entities: - uid: 25646 @@ -72190,7 +72441,7 @@ entities: - uid: 28541 components: - type: Transform - pos: -21.473701,15.874416 + pos: -22.186937,18.272444 parent: 2 - proto: ClothingShoesBootsSalvage entities: @@ -72446,7 +72697,7 @@ entities: - uid: 28542 components: - type: Transform - pos: -21.239326,16.124416 + pos: -22.311937,18.600569 parent: 2 - proto: ClothingUniformJumpsuitNanotrasen entities: @@ -72748,12 +72999,6 @@ entities: parent: 2 - proto: ComfyChair entities: - - uid: 245 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -19.5,10.5 - parent: 2 - uid: 4574 components: - type: Transform @@ -72795,6 +73040,12 @@ entities: rot: 1.5707963267948966 rad pos: -5.5,39.5 parent: 2 + - uid: 20556 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -18.5,10.5 + parent: 2 - uid: 22938 components: - type: Transform @@ -73164,6 +73415,11 @@ entities: parent: 2 - proto: ComputerCriminalRecords entities: + - uid: 680 + components: + - type: Transform + pos: -18.5,11.5 + parent: 2 - uid: 1512 components: - type: Transform @@ -73176,11 +73432,6 @@ entities: rot: -1.5707963267948966 rad pos: 10.5,6.5 parent: 2 - - uid: 4066 - components: - - type: Transform - pos: -19.5,11.5 - parent: 2 - uid: 5840 components: - type: Transform @@ -73437,12 +73688,6 @@ entities: parent: 2 - proto: ComputerStationRecords entities: - - uid: 4065 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -20.5,10.5 - parent: 2 - uid: 4301 components: - type: Transform @@ -73461,14 +73706,14 @@ entities: rot: -1.5707963267948966 rad pos: 28.5,48.5 parent: 2 -- proto: ComputerSurveillanceCameraMonitor - entities: - - uid: 4782 + - uid: 10501 components: - type: Transform rot: 1.5707963267948966 rad - pos: -20.5,9.5 + pos: -19.5,10.5 parent: 2 +- proto: ComputerSurveillanceCameraMonitor + entities: - uid: 5019 components: - type: Transform @@ -73493,6 +73738,12 @@ entities: rot: 1.5707963267948966 rad pos: -16.5,41.5 parent: 2 + - uid: 21617 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -19.5,9.5 + parent: 2 - proto: ComputerTechnologyDiskTerminal entities: - uid: 6526 @@ -73955,6 +74206,33 @@ entities: - type: Transform pos: 5.5,6.5 parent: 2 +- proto: CrateEngineering + entities: + - uid: 5872 + components: + - type: Transform + pos: -23.5,4.5 + parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + Oxygen: 1.7459903 + Nitrogen: 6.568249 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 6649 + - 6650 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null - proto: CrateEngineeringAMEShielding entities: - uid: 28144 @@ -74499,19 +74777,8 @@ entities: immutable: False temperature: 293.14673 moles: - Oxygen: 1.7459903 - Nitrogen: 6.568249 - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 26221 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null + Oxygen: 1.8856695 + Nitrogen: 7.0937095 - uid: 7455 components: - type: Transform @@ -74564,6 +74831,11 @@ entities: - type: Transform pos: 12.5,9.5 parent: 2 + - uid: 23834 + components: + - type: Transform + pos: -4.5,-47.5 + parent: 2 - proto: CrateMindShieldImplants entities: - uid: 5960 @@ -74917,8 +75189,8 @@ entities: immutable: False temperature: 293.14673 moles: - Oxygen: 1.7459903 - Nitrogen: 6.568249 + Oxygen: 1.8856695 + Nitrogen: 7.0937095 - type: ContainerContainer containers: entity_storage: !type:Container @@ -74941,8 +75213,8 @@ entities: immutable: False temperature: 293.14673 moles: - Oxygen: 1.7459903 - Nitrogen: 6.568249 + Oxygen: 1.8856695 + Nitrogen: 7.0937095 - type: ContainerContainer containers: entity_storage: !type:Container @@ -75287,18 +75559,6 @@ entities: parent: 2 - proto: CurtainsRedOpen entities: - - uid: 5650 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -21.5,10.5 - parent: 2 - - uid: 5672 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -21.5,9.5 - parent: 2 - uid: 21430 components: - type: Transform @@ -75335,6 +75595,16 @@ entities: rot: 3.141592653589793 rad pos: -47.5,-27.5 parent: 2 + - uid: 27695 + components: + - type: Transform + pos: -20.5,10.5 + parent: 2 + - uid: 27726 + components: + - type: Transform + pos: -20.5,9.5 + parent: 2 - proto: CurtainsSkyBlue entities: - uid: 15689 @@ -81706,10 +81976,10 @@ entities: parent: 2 - proto: DresserHeadOfSecurityFilled entities: - - uid: 4033 + - uid: 27912 components: - type: Transform - pos: -22.5,7.5 + pos: -22.5,8.5 parent: 2 - proto: DresserQuarterMasterFilled entities: @@ -83575,6 +83845,14 @@ entities: parent: 2 - proto: FirelockGlass entities: + - uid: 14 + components: + - type: Transform + pos: -20.5,8.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 20610 - uid: 27 components: - type: Transform @@ -83695,14 +83973,6 @@ entities: - 20617 - 20534 - 12308 - - uid: 362 - components: - - type: Transform - pos: -21.5,8.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20610 - uid: 363 components: - type: Transform @@ -84450,6 +84720,14 @@ entities: deviceLists: - 20511 - 20512 + - uid: 4782 + components: + - type: Transform + pos: -13.5,18.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 20614 - uid: 5651 components: - type: Transform @@ -88264,23 +88542,23 @@ entities: parent: 2 - proto: FloorWaterEntity entities: - - uid: 3194 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -21.5,17.5 - parent: 2 - uid: 4365 components: - type: Transform rot: -1.5707963267948966 rad pos: -25.5,12.5 parent: 2 - - uid: 4414 + - uid: 4701 components: - type: Transform - rot: 3.141592653589793 rad - pos: -20.5,17.5 + rot: 1.5707963267948966 rad + pos: -22.5,19.5 + parent: 2 + - uid: 4702 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -21.5,19.5 parent: 2 - uid: 6113 components: @@ -89335,6 +89613,18 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 6222 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -35.5,43.5 + parent: 2 + - uid: 6287 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -36.5,9.5 + parent: 2 - uid: 17984 components: - type: Transform @@ -89353,11 +89643,11 @@ entities: rot: 3.141592653589793 rad pos: 54.5,-4.5 parent: 2 - - uid: 24506 + - uid: 25665 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -36.5,7.5 + rot: 1.5707963267948966 rad + pos: -38.5,43.5 parent: 2 - proto: GasPipeBend entities: @@ -90909,6 +91199,17 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 25673 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -25.5,31.5 + parent: 2 + - uid: 25825 + components: + - type: Transform + pos: -25.5,34.5 + parent: 2 - uid: 25879 components: - type: Transform @@ -90917,6 +91218,17 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 27116 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -40.5,43.5 + parent: 2 + - uid: 27129 + components: + - type: Transform + pos: -39.5,43.5 + parent: 2 - proto: GasPipeBendAlt1 entities: - uid: 3762 @@ -92379,6 +92691,12 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 6294 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -37.5,9.5 + parent: 2 - uid: 6370 components: - type: Transform @@ -92425,6 +92743,12 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 6452 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -40.5,9.5 + parent: 2 - uid: 6455 components: - type: Transform @@ -92578,6 +92902,18 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 7377 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -39.5,9.5 + parent: 2 + - uid: 7378 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -38.5,9.5 + parent: 2 - uid: 7405 components: - type: Transform @@ -92874,12 +93210,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 16960 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -38.5,7.5 - parent: 2 - uid: 16973 components: - type: Transform @@ -108142,8 +108472,7 @@ entities: - uid: 24337 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -37.5,7.5 + pos: -39.5,41.5 parent: 2 - uid: 24347 components: @@ -108240,6 +108569,12 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 25922 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -37.5,43.5 + parent: 2 - uid: 26954 components: - type: Transform @@ -108260,12 +108595,6 @@ entities: rot: -1.5707963267948966 rad pos: -39.5,13.5 parent: 2 - - uid: 27116 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,7.5 - parent: 2 - uid: 27125 components: - type: Transform @@ -108280,6 +108609,11 @@ entities: rot: -1.5707963267948966 rad pos: -39.5,10.5 parent: 2 + - uid: 27273 + components: + - type: Transform + pos: -40.5,41.5 + parent: 2 - uid: 27518 components: - type: Transform @@ -108288,12 +108622,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 27606 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -40.5,7.5 - parent: 2 - uid: 27616 components: - type: Transform @@ -111670,6 +111998,28 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 25812 + components: + - type: Transform + pos: -26.5,34.5 + parent: 2 + - uid: 25827 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -27.5,31.5 + parent: 2 + - uid: 25856 + components: + - type: Transform + pos: -27.5,34.5 + parent: 2 + - uid: 26019 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -26.5,31.5 + parent: 2 - uid: 27517 components: - type: Transform @@ -111862,18 +112212,24 @@ entities: color: '#0335FCFF' - uid: 6353 components: + - type: MetaData + name: Nitrogen - type: Transform rot: -1.5707963267948966 rad pos: -40.5,23.5 parent: 2 - uid: 6356 components: + - type: MetaData + name: Carbon Dioxide - type: Transform rot: -1.5707963267948966 rad pos: -40.5,19.5 parent: 2 - uid: 6440 components: + - type: MetaData + name: Water Vapor - type: Transform rot: -1.5707963267948966 rad pos: -40.5,21.5 @@ -111886,6 +112242,8 @@ entities: parent: 2 - uid: 6532 components: + - type: MetaData + name: oxygen - type: Transform rot: -1.5707963267948966 rad pos: -40.5,25.5 @@ -111898,6 +112256,8 @@ entities: parent: 2 - uid: 11157 components: + - type: MetaData + name: Nitrous Oxide - type: Transform rot: -1.5707963267948966 rad pos: -40.5,15.5 @@ -111910,6 +112270,8 @@ entities: parent: 2 - uid: 13983 components: + - type: MetaData + name: Plasma - type: Transform rot: -1.5707963267948966 rad pos: -40.5,17.5 @@ -111928,6 +112290,14 @@ entities: rot: -1.5707963267948966 rad pos: -40.5,13.5 parent: 2 +- proto: GasPressureRegulator + entities: + - uid: 22695 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -36.5,43.5 + parent: 2 - proto: GasRecycler entities: - uid: 7364 @@ -116921,36 +117291,18 @@ entities: rot: -1.5707963267948966 rad pos: 47.5,-42.5 parent: 2 - - uid: 3705 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -55.5,16.5 - parent: 2 - uid: 3809 components: - type: Transform rot: 1.5707963267948966 rad pos: 56.5,-44.5 parent: 2 - - uid: 3831 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -37.5,7.5 - parent: 2 - uid: 3852 components: - type: Transform rot: -1.5707963267948966 rad pos: 38.5,44.5 parent: 2 - - uid: 3858 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -34.5,6.5 - parent: 2 - uid: 3861 components: - type: Transform @@ -117190,18 +117542,6 @@ entities: rot: 1.5707963267948966 rad pos: 25.5,51.5 parent: 2 - - uid: 5667 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -21.5,10.5 - parent: 2 - - uid: 5687 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -21.5,9.5 - parent: 2 - uid: 5750 components: - type: Transform @@ -117337,12 +117677,6 @@ entities: - type: Transform pos: -47.5,-27.5 parent: 2 - - uid: 6452 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -34.5,38.5 - parent: 2 - uid: 6527 components: - type: Transform @@ -117445,12 +117779,6 @@ entities: - type: Transform pos: 12.5,-43.5 parent: 2 - - uid: 7377 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -32.5,38.5 - parent: 2 - uid: 7508 components: - type: Transform @@ -117508,12 +117836,6 @@ entities: rot: 3.141592653589793 rad pos: -21.5,-49.5 parent: 2 - - uid: 7808 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -33.5,38.5 - parent: 2 - uid: 7823 components: - type: Transform @@ -118065,6 +118387,11 @@ entities: rot: -1.5707963267948966 rad pos: 15.5,-35.5 parent: 2 + - uid: 9929 + components: + - type: Transform + pos: -20.5,10.5 + parent: 2 - uid: 9932 components: - type: Transform @@ -119028,12 +119355,6 @@ entities: rot: 3.141592653589793 rad pos: -17.5,-68.5 parent: 2 - - uid: 12717 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -33.5,8.5 - parent: 2 - uid: 12856 components: - type: Transform @@ -119145,21 +119466,11 @@ entities: - type: Transform pos: -35.5,45.5 parent: 2 - - uid: 13798 - components: - - type: Transform - pos: -39.5,40.5 - parent: 2 - uid: 13832 components: - type: Transform pos: -38.5,40.5 parent: 2 - - uid: 13872 - components: - - type: Transform - pos: -41.5,40.5 - parent: 2 - uid: 13899 components: - type: Transform @@ -119640,6 +119951,11 @@ entities: rot: 3.141592653589793 rad pos: 25.5,6.5 parent: 2 + - uid: 21654 + components: + - type: Transform + pos: -20.5,9.5 + parent: 2 - uid: 21659 components: - type: Transform @@ -121998,12 +122314,6 @@ entities: rot: -1.5707963267948966 rad pos: 4.5,-44.5 parent: 2 - - uid: 24346 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -33.5,7.5 - parent: 2 - uid: 24517 components: - type: Transform @@ -122194,12 +122504,24 @@ entities: - type: Transform pos: -61.5,-49.5 parent: 2 + - uid: 25661 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -34.5,9.5 + parent: 2 - uid: 25738 components: - type: Transform rot: 1.5707963267948966 rad pos: -34.5,28.5 parent: 2 + - uid: 25760 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -36.5,7.5 + parent: 2 - uid: 25770 components: - type: Transform @@ -122249,17 +122571,11 @@ entities: - type: Transform pos: -39.5,38.5 parent: 2 - - uid: 25861 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -36.5,38.5 - parent: 2 - - uid: 25863 + - uid: 25891 components: - type: Transform - rot: 3.141592653589793 rad - pos: -35.5,38.5 + rot: -1.5707963267948966 rad + pos: -34.5,8.5 parent: 2 - uid: 26018 components: @@ -122292,6 +122608,12 @@ entities: - type: Transform pos: -39.5,-69.5 parent: 2 + - uid: 26275 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -40.5,40.5 + parent: 2 - uid: 26288 components: - type: Transform @@ -122335,6 +122657,12 @@ entities: rot: 1.5707963267948966 rad pos: -2.5,2.5 parent: 26286 + - uid: 26933 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -34.5,10.5 + parent: 2 - uid: 27118 components: - type: Transform @@ -122353,18 +122681,6 @@ entities: rot: 3.141592653589793 rad pos: -27.5,41.5 parent: 2 - - uid: 27129 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -33.5,9.5 - parent: 2 - - uid: 27130 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -33.5,10.5 - parent: 2 - uid: 27141 components: - type: Transform @@ -122625,12 +122941,6 @@ entities: - type: Transform pos: -57.5,61.5 parent: 2 - - uid: 27273 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -36.5,6.5 - parent: 2 - uid: 27352 components: - type: Transform @@ -122660,12 +122970,6 @@ entities: - type: Transform pos: -17.5,35.5 parent: 2 - - uid: 27617 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -39.5,7.5 - parent: 2 - uid: 27668 components: - type: Transform @@ -123208,45 +123512,16 @@ entities: parent: 2 - proto: HeatExchanger entities: - - uid: 13787 - components: - - type: Transform - pos: -39.5,42.5 - parent: 2 - - uid: 13791 + - uid: 24506 components: - type: Transform rot: 3.141592653589793 rad - pos: -41.5,42.5 - parent: 2 - - uid: 22652 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -40.5,43.5 - parent: 2 - - uid: 24064 - components: - - type: Transform - pos: -39.5,41.5 - parent: 2 - - uid: 25748 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -27.5,31.5 - parent: 2 - - uid: 25759 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -27.5,34.5 + pos: -26.5,32.5 parent: 2 - - uid: 25812 + - uid: 25669 components: - type: Transform - rot: 3.141592653589793 rad - pos: -26.5,32.5 + pos: -25.5,33.5 parent: 2 - uid: 25823 components: @@ -123254,40 +123529,32 @@ entities: rot: 3.141592653589793 rad pos: -26.5,33.5 parent: 2 -- proto: HeatExchangerBend - entities: - - uid: 13723 + - uid: 25861 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -41.5,43.5 + pos: -27.5,33.5 parent: 2 - - uid: 13724 + - uid: 25923 components: - type: Transform - pos: -40.5,41.5 - parent: 2 - - uid: 22574 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -26.5,31.5 + rot: 3.141592653589793 rad + pos: -25.5,32.5 parent: 2 - - uid: 22703 + - uid: 27020 components: - type: Transform rot: 3.141592653589793 rad - pos: -41.5,41.5 + pos: -27.5,32.5 parent: 2 - - uid: 22929 + - uid: 27046 components: - type: Transform - pos: -39.5,43.5 + pos: -40.5,42.5 parent: 2 - - uid: 28049 + - uid: 27130 components: - type: Transform - pos: -26.5,34.5 + pos: -39.5,42.5 parent: 2 - proto: Hemostat entities: @@ -123407,13 +123674,6 @@ entities: - type: Transform pos: -8.5,9.5 parent: 2 - - uid: 21663 - components: - - type: MetaData - name: Gorlex - Command - - type: Transform - pos: -17.5,9.5 - parent: 2 - uid: 21667 components: - type: MetaData @@ -123589,6 +123849,13 @@ entities: - type: Transform pos: 43.5,30.5 parent: 2 + - uid: 27693 + components: + - type: MetaData + name: Gorlex - Commander + - type: Transform + pos: -16.5,8.5 + parent: 2 - proto: HolopadAiCore entities: - uid: 21611 @@ -124491,16 +124758,21 @@ entities: parent: 2 - proto: IronRock entities: - - uid: 90 + - uid: 62 components: - type: Transform - pos: -14.5,18.5 + pos: -26.5,22.5 parent: 2 - uid: 142 components: - type: Transform pos: -16.5,-16.5 parent: 2 + - uid: 245 + components: + - type: Transform + pos: -25.5,22.5 + parent: 2 - uid: 248 components: - type: Transform @@ -124511,6 +124783,11 @@ entities: - type: Transform pos: -13.5,-20.5 parent: 2 + - uid: 362 + components: + - type: Transform + pos: -25.5,23.5 + parent: 2 - uid: 491 components: - type: Transform @@ -124541,11 +124818,6 @@ entities: - type: Transform pos: -20.5,-22.5 parent: 2 - - uid: 655 - components: - - type: Transform - pos: -16.5,22.5 - parent: 2 - uid: 662 components: - type: Transform @@ -124566,11 +124838,6 @@ entities: - type: Transform pos: -13.5,23.5 parent: 2 - - uid: 674 - components: - - type: Transform - pos: -13.5,22.5 - parent: 2 - uid: 675 components: - type: Transform @@ -124581,16 +124848,6 @@ entities: - type: Transform pos: 13.5,28.5 parent: 2 - - uid: 679 - components: - - type: Transform - pos: -19.5,13.5 - parent: 2 - - uid: 680 - components: - - type: Transform - pos: -16.5,18.5 - parent: 2 - uid: 685 components: - type: Transform @@ -124616,6 +124873,11 @@ entities: - type: Transform pos: -17.5,-15.5 parent: 2 + - uid: 3156 + components: + - type: Transform + pos: -21.5,16.5 + parent: 2 - uid: 3221 components: - type: Transform @@ -124651,6 +124913,11 @@ entities: - type: Transform pos: -17.5,-28.5 parent: 2 + - uid: 4027 + components: + - type: Transform + pos: -29.5,8.5 + parent: 2 - uid: 4032 components: - type: Transform @@ -124671,6 +124938,11 @@ entities: - type: Transform pos: 34.5,5.5 parent: 2 + - uid: 4066 + components: + - type: Transform + pos: -16.5,21.5 + parent: 2 - uid: 4068 components: - type: Transform @@ -125121,11 +125393,6 @@ entities: - type: Transform pos: 16.5,17.5 parent: 2 - - uid: 4348 - components: - - type: Transform - pos: -30.5,3.5 - parent: 2 - uid: 4349 components: - type: Transform @@ -125151,70 +125418,25 @@ entities: - type: Transform pos: -29.5,4.5 parent: 2 - - uid: 4354 - components: - - type: Transform - pos: -28.5,5.5 - parent: 2 - - uid: 4355 - components: - - type: Transform - pos: -28.5,4.5 - parent: 2 - uid: 4358 components: - type: Transform pos: -25.5,5.5 parent: 2 - uid: 4359 - components: - - type: Transform - pos: -25.5,4.5 - parent: 2 - - uid: 4363 components: - type: Transform pos: -25.5,13.5 parent: 2 - uid: 4364 - components: - - type: Transform - pos: -25.5,11.5 - parent: 2 - - uid: 4370 components: - type: Transform pos: -28.5,13.5 parent: 2 - - uid: 4372 - components: - - type: Transform - pos: -28.5,9.5 - parent: 2 - - uid: 4373 - components: - - type: Transform - pos: -28.5,8.5 - parent: 2 - - uid: 4374 - components: - - type: Transform - pos: -28.5,7.5 - parent: 2 - - uid: 4375 - components: - - type: Transform - pos: -27.5,13.5 - parent: 2 - - uid: 4376 - components: - - type: Transform - pos: -28.5,12.5 - parent: 2 - uid: 4381 components: - type: Transform - pos: -26.5,13.5 + pos: -29.5,11.5 parent: 2 - uid: 4383 components: @@ -125231,25 +125453,15 @@ entities: - type: Transform pos: -24.5,13.5 parent: 2 - - uid: 4391 - components: - - type: Transform - pos: -24.5,12.5 - parent: 2 - uid: 4393 components: - type: Transform pos: -19.5,20.5 parent: 2 - - uid: 4394 - components: - - type: Transform - pos: -18.5,21.5 - parent: 2 - uid: 4399 components: - type: Transform - pos: -19.5,15.5 + pos: -26.5,10.5 parent: 2 - uid: 4400 components: @@ -125261,11 +125473,6 @@ entities: - type: Transform pos: -21.5,14.5 parent: 2 - - uid: 4402 - components: - - type: Transform - pos: -21.5,13.5 - parent: 2 - uid: 4403 components: - type: Transform @@ -125276,21 +125483,16 @@ entities: - type: Transform pos: -20.5,15.5 parent: 2 - - uid: 4410 + - uid: 4409 components: - type: Transform - pos: -19.5,16.5 + pos: -25.5,9.5 parent: 2 - uid: 4411 components: - type: Transform pos: -18.5,20.5 parent: 2 - - uid: 4412 - components: - - type: Transform - pos: -17.5,18.5 - parent: 2 - uid: 4417 components: - type: Transform @@ -125421,11 +125623,6 @@ entities: - type: Transform pos: -5.5,29.5 parent: 2 - - uid: 4450 - components: - - type: Transform - pos: -12.5,26.5 - parent: 2 - uid: 4452 components: - type: Transform @@ -125466,11 +125663,6 @@ entities: - type: Transform pos: -15.5,21.5 parent: 2 - - uid: 4464 - components: - - type: Transform - pos: -15.5,20.5 - parent: 2 - uid: 4465 components: - type: Transform @@ -126091,26 +126283,6 @@ entities: - type: Transform pos: -13.5,26.5 parent: 2 - - uid: 4672 - components: - - type: Transform - pos: -15.5,24.5 - parent: 2 - - uid: 4673 - components: - - type: Transform - pos: -15.5,23.5 - parent: 2 - - uid: 4674 - components: - - type: Transform - pos: -15.5,22.5 - parent: 2 - - uid: 4675 - components: - - type: Transform - pos: -15.5,26.5 - parent: 2 - uid: 4676 components: - type: Transform @@ -126156,11 +126328,6 @@ entities: - type: Transform pos: -20.5,23.5 parent: 2 - - uid: 4688 - components: - - type: Transform - pos: -21.5,23.5 - parent: 2 - uid: 4689 components: - type: Transform @@ -126176,11 +126343,6 @@ entities: - type: Transform pos: -20.5,24.5 parent: 2 - - uid: 4692 - components: - - type: Transform - pos: -26.5,17.5 - parent: 2 - uid: 4693 components: - type: Transform @@ -126194,42 +126356,22 @@ entities: - uid: 4695 components: - type: Transform - pos: -25.5,19.5 - parent: 2 - - uid: 4696 - components: - - type: Transform - pos: -25.5,17.5 + pos: -21.5,15.5 parent: 2 - uid: 4697 components: - type: Transform pos: -25.5,16.5 parent: 2 - - uid: 4698 - components: - - type: Transform - pos: -25.5,18.5 - parent: 2 - uid: 4699 components: - type: Transform - pos: -24.5,14.5 + pos: -20.5,17.5 parent: 2 - uid: 4700 components: - type: Transform - pos: -22.5,18.5 - parent: 2 - - uid: 4701 - components: - - type: Transform - pos: -24.5,15.5 - parent: 2 - - uid: 4702 - components: - - type: Transform - pos: -24.5,16.5 + pos: -20.5,16.5 parent: 2 - uid: 4703 components: @@ -126241,16 +126383,6 @@ entities: - type: Transform pos: -23.5,16.5 parent: 2 - - uid: 4705 - components: - - type: Transform - pos: -22.5,17.5 - parent: 2 - - uid: 4706 - components: - - type: Transform - pos: -21.5,18.5 - parent: 2 - uid: 4707 components: - type: Transform @@ -126261,21 +126393,11 @@ entities: - type: Transform pos: -23.5,19.5 parent: 2 - - uid: 4710 - components: - - type: Transform - pos: -22.5,19.5 - parent: 2 - uid: 4711 components: - type: Transform pos: -21.5,20.5 parent: 2 - - uid: 4712 - components: - - type: Transform - pos: -21.5,19.5 - parent: 2 - uid: 4713 components: - type: Transform @@ -126291,35 +126413,25 @@ entities: - type: Transform pos: -22.5,20.5 parent: 2 - - uid: 4716 - components: - - type: Transform - pos: -19.5,21.5 - parent: 2 - - uid: 4717 - components: - - type: Transform - pos: -19.5,22.5 - parent: 2 - - uid: 4718 + - uid: 4730 components: - type: Transform - pos: -20.5,21.5 + pos: 28.5,-17.5 parent: 2 - - uid: 4720 + - uid: 4750 components: - type: Transform - pos: -22.5,21.5 + pos: -16.5,19.5 parent: 2 - - uid: 4730 + - uid: 4752 components: - type: Transform - pos: 28.5,-17.5 + pos: 30.5,-14.5 parent: 2 - - uid: 4752 + - uid: 4753 components: - type: Transform - pos: 30.5,-14.5 + pos: -25.5,10.5 parent: 2 - uid: 4761 components: @@ -126336,6 +126448,11 @@ entities: - type: Transform pos: -2.5,-30.5 parent: 2 + - uid: 4770 + components: + - type: Transform + pos: -29.5,9.5 + parent: 2 - uid: 4804 components: - type: Transform @@ -126371,20 +126488,20 @@ entities: - type: Transform pos: -27.5,-17.5 parent: 2 - - uid: 5649 + - uid: 5656 components: - type: Transform - pos: -28.5,11.5 + pos: -25.5,15.5 parent: 2 - uid: 5657 components: - type: Transform - pos: -28.5,6.5 + pos: -25.5,21.5 parent: 2 - uid: 5661 components: - type: Transform - pos: -29.5,7.5 + pos: -24.5,22.5 parent: 2 - uid: 5662 components: @@ -126394,7 +126511,7 @@ entities: - uid: 5664 components: - type: Transform - pos: -28.5,10.5 + pos: -22.5,23.5 parent: 2 - uid: 5669 components: @@ -127206,11 +127323,6 @@ entities: - type: Transform pos: 11.5,-28.5 parent: 2 - - uid: 20556 - components: - - type: Transform - pos: -14.5,25.5 - parent: 2 - uid: 20630 components: - type: Transform @@ -127231,6 +127343,11 @@ entities: - type: Transform pos: -11.5,-29.5 parent: 2 + - uid: 21655 + components: + - type: Transform + pos: -27.5,14.5 + parent: 2 - uid: 22437 components: - type: Transform @@ -127346,6 +127463,11 @@ entities: - type: Transform pos: 31.5,13.5 parent: 2 + - uid: 25681 + components: + - type: Transform + pos: -29.5,13.5 + parent: 2 - uid: 27094 components: - type: Transform @@ -127428,30 +127550,30 @@ entities: - type: Transform pos: 28.5,-7.5 parent: 2 - - uid: 4735 + - uid: 4675 components: - type: Transform - pos: -0.5,29.5 + pos: -25.5,17.5 parent: 2 - - uid: 4740 + - uid: 4688 components: - type: Transform - pos: 0.5,29.5 + pos: -25.5,18.5 parent: 2 - - uid: 4741 + - uid: 4735 components: - type: Transform - pos: 22.5,17.5 + pos: -0.5,29.5 parent: 2 - - uid: 4744 + - uid: 4740 components: - type: Transform - pos: -24.5,18.5 + pos: 0.5,29.5 parent: 2 - - uid: 4746 + - uid: 4741 components: - type: Transform - pos: -24.5,17.5 + pos: 22.5,17.5 parent: 2 - uid: 6262 components: @@ -127560,6 +127682,11 @@ entities: - type: Transform pos: 8.5,-28.5 parent: 2 + - uid: 4067 + components: + - type: Transform + pos: -30.5,3.5 + parent: 2 - uid: 4069 components: - type: Transform @@ -127630,6 +127757,36 @@ entities: - type: Transform pos: 16.5,19.5 parent: 2 + - uid: 4355 + components: + - type: Transform + pos: -25.5,4.5 + parent: 2 + - uid: 4363 + components: + - type: Transform + pos: -25.5,11.5 + parent: 2 + - uid: 4391 + components: + - type: Transform + pos: -18.5,21.5 + parent: 2 + - uid: 4410 + components: + - type: Transform + pos: -12.5,26.5 + parent: 2 + - uid: 4414 + components: + - type: Transform + pos: -15.5,24.5 + parent: 2 + - uid: 4450 + components: + - type: Transform + pos: -15.5,23.5 + parent: 2 - uid: 4510 components: - type: Transform @@ -127645,35 +127802,40 @@ entities: - type: Transform pos: -5.5,-31.5 parent: 2 - - uid: 4686 + - uid: 4673 components: - type: Transform - pos: -18.5,23.5 + pos: -26.5,17.5 parent: 2 - - uid: 4733 + - uid: 4674 components: - type: Transform - pos: -5.5,-32.5 + pos: -25.5,19.5 parent: 2 - - uid: 4748 + - uid: 4686 components: - type: Transform - pos: -16.5,19.5 + pos: -18.5,23.5 parent: 2 - - uid: 4749 + - uid: 4692 components: - type: Transform - pos: -15.5,19.5 + pos: -24.5,14.5 parent: 2 - - uid: 4750 + - uid: 4718 components: - type: Transform - pos: -20.5,13.5 + pos: -29.5,7.5 parent: 2 - - uid: 4753 + - uid: 4733 components: - type: Transform - pos: -23.5,12.5 + pos: -5.5,-32.5 + parent: 2 + - uid: 4749 + components: + - type: Transform + pos: -15.5,19.5 parent: 2 - uid: 4757 components: @@ -127695,11 +127857,6 @@ entities: - type: Transform pos: 16.5,20.5 parent: 2 - - uid: 4770 - components: - - type: Transform - pos: -25.5,14.5 - parent: 2 - uid: 4772 components: - type: Transform @@ -127715,16 +127872,6 @@ entities: - type: Transform pos: 20.5,16.5 parent: 2 - - uid: 4777 - components: - - type: Transform - pos: -19.5,14.5 - parent: 2 - - uid: 4781 - components: - - type: Transform - pos: -15.5,18.5 - parent: 2 - uid: 4837 components: - type: Transform @@ -127810,16 +127957,6 @@ entities: - type: Transform pos: -23.5,14.5 parent: 2 - - uid: 6649 - components: - - type: Transform - pos: -17.5,22.5 - parent: 2 - - uid: 6650 - components: - - type: Transform - pos: -18.5,22.5 - parent: 2 - uid: 6651 components: - type: Transform @@ -127870,11 +128007,6 @@ entities: - type: Transform pos: 13.5,25.5 parent: 2 - - uid: 8356 - components: - - type: Transform - pos: -28.5,3.5 - parent: 2 - uid: 8361 components: - type: Transform @@ -127970,11 +128102,6 @@ entities: - type: Transform pos: 15.5,31.5 parent: 2 - - uid: 9929 - components: - - type: Transform - pos: -25.5,15.5 - parent: 2 - uid: 9931 components: - type: Transform @@ -128262,6 +128389,21 @@ entities: - type: Transform pos: -4.5,-31.5 parent: 2 + - uid: 4632 + components: + - type: Transform + pos: -15.5,26.5 + parent: 2 + - uid: 4672 + components: + - type: Transform + pos: -21.5,23.5 + parent: 2 + - uid: 4744 + components: + - type: Transform + pos: -14.5,25.5 + parent: 2 - uid: 4765 components: - type: Transform @@ -128282,6 +128424,11 @@ entities: - type: Transform pos: -26.5,6.5 parent: 2 + - uid: 5687 + components: + - type: Transform + pos: -23.5,22.5 + parent: 2 - uid: 5834 components: - type: Transform @@ -128347,11 +128494,6 @@ entities: - type: Transform pos: -14.5,24.5 parent: 2 - - uid: 9945 - components: - - type: Transform - pos: -19.5,17.5 - parent: 2 - uid: 9949 components: - type: Transform @@ -128362,11 +128504,6 @@ entities: - type: Transform pos: -15.5,-20.5 parent: 2 - - uid: 9991 - components: - - type: Transform - pos: -18.5,17.5 - parent: 2 - uid: 9993 components: - type: Transform @@ -128377,11 +128514,6 @@ entities: - type: Transform pos: -5.5,28.5 parent: 2 - - uid: 9996 - components: - - type: Transform - pos: -18.5,18.5 - parent: 2 - uid: 9997 components: - type: Transform @@ -128482,21 +128614,11 @@ entities: - type: Transform pos: -14.5,26.5 parent: 2 - - uid: 10047 - components: - - type: Transform - pos: -14.5,22.5 - parent: 2 - uid: 10048 components: - type: Transform pos: -15.5,25.5 parent: 2 - - uid: 10049 - components: - - type: Transform - pos: -21.5,21.5 - parent: 2 - uid: 10050 components: - type: Transform @@ -128542,6 +128664,11 @@ entities: - type: Transform pos: 18.5,-16.5 parent: 2 + - uid: 21663 + components: + - type: Transform + pos: -29.5,12.5 + parent: 2 - uid: 22429 components: - type: Transform @@ -128812,7 +128939,7 @@ entities: - uid: 28544 components: - type: Transform - pos: -20.555586,16.599945 + pos: -21.343187,18.772444 parent: 2 - proto: Lamp entities: @@ -128970,7 +129097,7 @@ entities: - uid: 4791 components: - type: Transform - pos: -18.471472,9.687301 + pos: -17.579655,9.82454 parent: 2 - type: HandheldLight toggleActionEntity: 24233 @@ -129164,42 +129291,42 @@ entities: - Toggle - type: Fixtures fixtures: {} - - uid: 8031 + - uid: 26932 components: - type: Transform - pos: -34.5,11.5 + pos: -34.5,7.5 parent: 2 - type: DeviceLinkSource linkedPorts: - 25874: + 24346: - - Pressed - Toggle - type: Fixtures fixtures: {} - - uid: 25478 + - uid: 27466 components: - type: Transform - pos: -33.5,6.5 + rot: 1.5707963267948966 rad + pos: -45.5,3.5 parent: 2 - type: DeviceLinkSource linkedPorts: - 25874: + 27117: + - - Pressed + - Toggle + 3862: - - Pressed - Toggle - type: Fixtures fixtures: {} - - uid: 27466 + - uid: 27606 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -45.5,3.5 + pos: -35.5,11.5 parent: 2 - type: DeviceLinkSource linkedPorts: - 27117: - - - Pressed - - Toggle - 3862: + 24346: - - Pressed - Toggle - type: Fixtures @@ -129300,11 +129427,6 @@ entities: - type: Transform pos: -37.5,40.5 parent: 2 - - type: DeviceLinkSource - linkedPorts: - 25760: - - - Pressed - - Toggle - type: Fixtures fixtures: {} - uid: 21797 @@ -129312,9 +129434,24 @@ entities: - type: Transform pos: -37.5,38.5 parent: 2 + - type: Fixtures + fixtures: {} + - uid: 26945 + components: + - type: MetaData + name: EMERGENCY VENT + - type: Transform + pos: -32.5,38.5 + parent: 2 - type: DeviceLinkSource linkedPorts: - 25760: + 12373: + - - Pressed + - Toggle + 13723: + - - Pressed + - Toggle + 12350: - - Pressed - Toggle - type: Fixtures @@ -131259,15 +131396,15 @@ entities: - type: Transform pos: -26.5,12.5 parent: 2 - - uid: 4380 + - uid: 3172 components: - type: Transform - pos: -26.5,11.5 + pos: -22.5,17.5 parent: 2 - - uid: 4409 + - uid: 4380 components: - type: Transform - pos: -22.5,16.5 + pos: -26.5,11.5 parent: 2 - uid: 5203 components: @@ -131628,17 +131765,17 @@ entities: - uid: 3171 components: - type: Transform - pos: -21.020576,16.608791 + pos: -21.718187,17.928694 parent: 2 - uid: 3191 components: - type: Transform - pos: -21.629951,16.093166 + pos: -22.499437,18.194319 parent: 2 - uid: 4387 components: - type: Transform - pos: -22.020576,16.358791 + pos: -22.608812,18.663069 parent: 2 - proto: MaterialCloth entities: @@ -132568,6 +132705,22 @@ entities: canCollide: False - type: InsideEntityStorage storage: 7232 + - uid: 24259 + components: + - type: Transform + parent: 5996 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 5996 + - uid: 24264 + components: + - type: Transform + parent: 5996 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 5996 - uid: 27553 components: - type: Transform @@ -132866,7 +133019,7 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage -- proto: OrganDwarfHeart +- proto: OrganHumanHeart entities: - uid: 10342 components: @@ -132875,15 +133028,6 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage -- proto: OrganDwarfLiver - entities: - - uid: 6516 - components: - - type: Transform - parent: 3726 - - type: Physics - canCollide: False - - type: InsideEntityStorage - proto: OrganHumanKidneys entities: - uid: 4486 @@ -132909,6 +133053,13 @@ entities: - type: InsideEntityStorage - proto: OrganHumanLiver entities: + - uid: 6516 + components: + - type: Transform + parent: 3726 + - type: Physics + canCollide: False + - type: InsideEntityStorage - uid: 7703 components: - type: Transform @@ -132930,7 +133081,7 @@ entities: - uid: 4368 components: - type: Transform - pos: -21.770576,16.640041 + pos: -22.218187,18.553694 parent: 2 - proto: OxygenCanister entities: @@ -133063,6 +133214,22 @@ entities: canCollide: False - type: InsideEntityStorage storage: 20651 + - uid: 23838 + components: + - type: Transform + parent: 5996 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 5996 + - uid: 24261 + components: + - type: Transform + parent: 5996 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 5996 - uid: 27552 components: - type: Transform @@ -133474,6 +133641,14 @@ entities: parent: 2 - proto: PartRodMetal entities: + - uid: 6650 + components: + - type: Transform + parent: 5872 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 5872 - uid: 7154 components: - type: Transform @@ -133587,7 +133762,7 @@ entities: - uid: 4793 components: - type: Transform - pos: -18.25225,11.71604 + pos: -17.329655,11.57454 parent: 2 - uid: 8274 components: @@ -134531,7 +134706,7 @@ entities: - uid: 4789 components: - type: Transform - pos: -18.408972,10.593551 + pos: -17.56403,10.621415 parent: 2 - proto: PlushieNar entities: @@ -134552,7 +134727,7 @@ entities: - uid: 12807 components: - type: Transform - pos: -55.50526,-15.383053 + pos: -55.515957,-15.331793 parent: 2 - proto: PlushieSpaceLizard entities: @@ -135922,12 +136097,6 @@ entities: rot: -1.5707963267948966 rad pos: -62.5,-20.5 parent: 2 - - uid: 8926 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -23.5,4.5 - parent: 2 - uid: 8929 components: - type: Transform @@ -135940,6 +136109,12 @@ entities: rot: -1.5707963267948966 rad pos: -54.5,-31.5 parent: 2 + - uid: 10460 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -23.5,5.5 + parent: 2 - uid: 19633 components: - type: Transform @@ -136306,6 +136481,12 @@ entities: rot: -1.5707963267948966 rad pos: -12.5,-17.5 parent: 2 + - uid: 13791 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -30.5,30.5 + parent: 2 - uid: 15655 components: - type: Transform @@ -136365,12 +136546,6 @@ entities: rot: -1.5707963267948966 rad pos: -3.5,15.5 parent: 2 - - uid: 21617 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -12.5,20.5 - parent: 2 - uid: 21618 components: - type: Transform @@ -137693,6 +137868,11 @@ entities: rot: 1.5707963267948966 rad pos: -40.5,36.5 parent: 2 + - uid: 25684 + components: + - type: Transform + pos: -12.5,21.5 + parent: 2 - uid: 25752 components: - type: Transform @@ -137938,6 +138118,12 @@ entities: parent: 2 - proto: PoweredSmallLight entities: + - uid: 90 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -22.5,9.5 + parent: 2 - uid: 1759 components: - type: Transform @@ -137956,6 +138142,17 @@ entities: rot: 3.141592653589793 rad pos: -12.5,-88.5 parent: 2 + - uid: 3012 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -18.5,8.5 + parent: 2 + - uid: 3014 + components: + - type: Transform + pos: -15.5,11.5 + parent: 2 - uid: 3510 components: - type: Transform @@ -137988,12 +138185,6 @@ entities: - type: Transform pos: -34.5,22.5 parent: 2 - - uid: 5656 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -23.5,9.5 - parent: 2 - uid: 6273 components: - type: Transform @@ -138113,17 +138304,6 @@ entities: - type: Transform pos: 26.5,11.5 parent: 2 - - uid: 21654 - components: - - type: Transform - pos: -17.5,11.5 - parent: 2 - - uid: 21655 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -19.5,8.5 - parent: 2 - uid: 21657 components: - type: Transform @@ -138509,12 +138689,6 @@ entities: - type: Transform pos: -56.5,-34.5 parent: 2 - - uid: 22695 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -41.5,42.5 - parent: 2 - uid: 24192 components: - type: Transform @@ -138538,6 +138712,12 @@ entities: - type: Transform pos: -21.5,-38.5 parent: 2 + - uid: 25478 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -40.5,42.5 + parent: 2 - uid: 25845 components: - type: Transform @@ -138625,6 +138805,12 @@ entities: - type: Transform pos: -35.5,27.5 parent: 2 + - uid: 27915 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -36.5,39.5 + parent: 2 - uid: 28136 components: - type: Transform @@ -138701,15 +138887,6 @@ entities: rot: 1.5707963267948966 rad pos: 62.5,36.5 parent: 2 -- proto: PresentRandomUnsafe - entities: - - uid: 26221 - components: - - type: Transform - parent: 7415 - - type: Physics - canCollide: False - - type: InsideEntityStorage - proto: Protolathe entities: - uid: 27772 @@ -138731,10 +138908,19 @@ entities: rot: -1.5707963267948966 rad pos: -45.5,-45.5 parent: 2 - - uid: 16069 + - uid: 4366 + components: + - type: Transform + pos: 2.5,16.5 + parent: 2 + - uid: 5979 + components: + - type: Transform + pos: 2.5,15.5 + parent: 2 + - uid: 5997 components: - type: Transform - rot: 1.5707963267948966 rad pos: 1.5,15.5 parent: 2 - uid: 24082 @@ -138785,12 +138971,6 @@ entities: - type: Transform pos: 9.5,12.5 parent: 2 - - uid: 24796 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,15.5 - parent: 2 - uid: 24805 components: - type: Transform @@ -138854,12 +139034,6 @@ entities: - type: Transform pos: 42.5,31.5 parent: 2 - - uid: 28537 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,16.5 - parent: 2 - uid: 28902 components: - type: Transform @@ -139301,6 +139475,11 @@ entities: - type: Transform pos: 8.5,41.5 parent: 2 + - uid: 3948 + components: + - type: Transform + pos: -63.5,11.5 + parent: 2 - uid: 4041 components: - type: Transform @@ -139890,11 +140069,6 @@ entities: - type: Transform pos: 60.5,27.5 parent: 2 - - uid: 12401 - components: - - type: Transform - pos: -22.5,5.5 - parent: 2 - uid: 12403 components: - type: Transform @@ -140180,6 +140354,11 @@ entities: - type: Transform pos: -45.5,24.5 parent: 2 + - uid: 25185 + components: + - type: Transform + pos: -9.5,-3.5 + parent: 2 - uid: 25337 components: - type: Transform @@ -140210,11 +140389,6 @@ entities: - type: Transform pos: 32.5,22.5 parent: 2 - - uid: 25400 - components: - - type: Transform - pos: -11.5,-4.5 - parent: 2 - uid: 25456 components: - type: Transform @@ -140257,6 +140431,12 @@ entities: rot: -1.5707963267948966 rad pos: 37.5,-12.5 parent: 2 + - uid: 25682 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -22.5,6.5 + parent: 2 - uid: 25858 components: - type: Transform @@ -141808,6 +141988,11 @@ entities: - type: Transform pos: -49.5,-34.5 parent: 2 + - uid: 3790 + components: + - type: Transform + pos: -55.5,-43.5 + parent: 2 - uid: 27044 components: - type: Transform @@ -141833,12 +142018,6 @@ entities: - type: Transform pos: -27.5,-57.5 parent: 2 - - uid: 27942 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -57.5,-43.5 - parent: 2 - uid: 27943 components: - type: Transform @@ -143448,12 +143627,6 @@ entities: rot: 1.5707963267948966 rad pos: 56.5,-43.5 parent: 2 - - uid: 3790 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -36.5,6.5 - parent: 2 - uid: 3794 components: - type: Transform @@ -143466,18 +143639,6 @@ entities: rot: 1.5707963267948966 rad pos: 47.5,-42.5 parent: 2 - - uid: 3829 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -37.5,7.5 - parent: 2 - - uid: 3864 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -33.5,8.5 - parent: 2 - uid: 3960 components: - type: Transform @@ -143677,12 +143838,6 @@ entities: - type: Transform pos: -54.5,-6.5 parent: 2 - - uid: 5530 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -55.5,16.5 - parent: 2 - uid: 5848 components: - type: Transform @@ -143748,12 +143903,6 @@ entities: - type: Transform pos: 12.5,36.5 parent: 2 - - uid: 7378 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -35.5,38.5 - parent: 2 - uid: 7643 components: - type: Transform @@ -143794,11 +143943,11 @@ entities: - type: Transform pos: 48.5,-34.5 parent: 2 - - uid: 7741 + - uid: 7808 components: - type: Transform - rot: 3.141592653589793 rad - pos: -36.5,38.5 + rot: -1.5707963267948966 rad + pos: -34.5,10.5 parent: 2 - uid: 7852 components: @@ -144117,11 +144266,6 @@ entities: rot: 1.5707963267948966 rad pos: -5.5,-37.5 parent: 2 - - uid: 9531 - components: - - type: Transform - pos: -39.5,40.5 - parent: 2 - uid: 9830 components: - type: Transform @@ -144142,18 +144286,6 @@ entities: - type: Transform pos: 66.5,-21.5 parent: 2 - - uid: 10460 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -21.5,10.5 - parent: 2 - - uid: 10501 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -21.5,9.5 - parent: 2 - uid: 10566 components: - type: Transform @@ -144480,6 +144612,12 @@ entities: rot: 3.141592653589793 rad pos: 32.5,-62.5 parent: 2 + - uid: 13787 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -40.5,40.5 + parent: 2 - uid: 13975 components: - type: Transform @@ -144543,23 +144681,12 @@ entities: rot: 1.5707963267948966 rad pos: 39.5,-15.5 parent: 2 - - uid: 16971 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -33.5,9.5 - parent: 2 - uid: 17031 components: - type: Transform rot: 3.141592653589793 rad pos: -33.5,-9.5 parent: 2 - - uid: 17046 - components: - - type: Transform - pos: -41.5,40.5 - parent: 2 - uid: 17720 components: - type: Transform @@ -144584,12 +144711,6 @@ entities: rot: 3.141592653589793 rad pos: -39.5,8.5 parent: 2 - - uid: 18129 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -34.5,6.5 - parent: 2 - uid: 18181 components: - type: Transform @@ -146446,12 +146567,6 @@ entities: rot: -1.5707963267948966 rad pos: -38.5,-7.5 parent: 2 - - uid: 23272 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -39.5,7.5 - parent: 2 - uid: 23369 components: - type: Transform @@ -146672,6 +146787,12 @@ entities: rot: 1.5707963267948966 rad pos: -29.5,31.5 parent: 2 + - uid: 25759 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -34.5,9.5 + parent: 2 - uid: 25779 components: - type: Transform @@ -146702,16 +146823,22 @@ entities: rot: 1.5707963267948966 rad pos: -12.5,-77.5 parent: 2 - - uid: 27206 + - uid: 25890 components: - type: Transform - pos: -58.5,36.5 + rot: -1.5707963267948966 rad + pos: -34.5,8.5 parent: 2 - - uid: 27512 + - uid: 26923 components: - type: Transform - rot: 3.141592653589793 rad - pos: -33.5,10.5 + rot: -1.5707963267948966 rad + pos: -36.5,7.5 + parent: 2 + - uid: 27206 + components: + - type: Transform + pos: -58.5,36.5 parent: 2 - uid: 27537 components: @@ -146737,12 +146864,6 @@ entities: rot: 3.141592653589793 rad pos: -37.5,8.5 parent: 2 - - uid: 27615 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -33.5,7.5 - parent: 2 - uid: 27627 components: - type: Transform @@ -146755,23 +146876,15 @@ entities: rot: -1.5707963267948966 rad pos: 38.5,44.5 parent: 2 - - uid: 28046 + - uid: 27731 components: - type: Transform - rot: 3.141592653589793 rad - pos: -33.5,38.5 - parent: 2 - - uid: 28047 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -32.5,38.5 + pos: -20.5,10.5 parent: 2 - - uid: 28048 + - uid: 27733 components: - type: Transform - rot: 3.141592653589793 rad - pos: -34.5,38.5 + pos: -20.5,9.5 parent: 2 - uid: 28352 components: @@ -148571,6 +148684,16 @@ entities: - type: Transform pos: -65.33531,30.564745 parent: 2 +- proto: SheetPlasteel10 + entities: + - uid: 6649 + components: + - type: Transform + parent: 5872 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 5872 - proto: SheetPlastic entities: - uid: 6328 @@ -148645,7 +148768,7 @@ entities: - uid: 5596 components: - type: Transform - pos: -11.4999695,-4.4737873 + pos: -9.473098,-3.515089 parent: 2 - uid: 6327 components: @@ -150019,6 +150142,14 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 27916 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -64.5,-23.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 28269 components: - type: Transform @@ -151139,18 +151270,17 @@ entities: parent: 2 - type: Fixtures fixtures: {} - - uid: 6000 + - uid: 6316 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,2.5 + pos: 25.5,2.5 parent: 2 - type: Fixtures fixtures: {} - - uid: 6316 + - uid: 25367 components: - type: Transform - pos: 25.5,2.5 + pos: 10.5,2.5 parent: 2 - type: Fixtures fixtures: {} @@ -151398,10 +151528,11 @@ entities: parent: 2 - type: Fixtures fixtures: {} - - uid: 17499 + - uid: 27615 components: - type: Transform - pos: -42.5,44.5 + rot: 1.5707963267948966 rad + pos: -41.5,44.5 parent: 2 - type: Fixtures fixtures: {} @@ -151717,16 +151848,6 @@ entities: parent: 2 - type: Fixtures fixtures: {} -- proto: SignSpace - entities: - - uid: 28729 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -28.5,7.5 - parent: 2 - - type: Fixtures - fixtures: {} - proto: SignTelecomms entities: - uid: 8181 @@ -151990,7 +152111,7 @@ entities: - uid: 27492 components: - type: Transform - pos: -54.5,16.5 + pos: -54.5,15.5 parent: 2 - proto: SmokingPipe entities: @@ -154320,6 +154441,12 @@ entities: rot: -1.5707963267948966 rad pos: -21.5,-7.5 parent: 2 + - uid: 27617 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -57.5,-43.5 + parent: 2 - proto: SpaceCash100 entities: - uid: 5100 @@ -154837,10 +154964,10 @@ entities: parent: 2 - proto: SpawnPointHeadOfSecurity entities: - - uid: 26867 + - uid: 27752 components: - type: Transform - pos: -23.5,8.5 + pos: -21.5,9.5 parent: 2 - proto: SpawnPointHeadOfSecurityWeapon entities: @@ -155857,13 +155984,6 @@ entities: parent: 2 - proto: SubstationBasic entities: - - uid: 223 - components: - - type: MetaData - name: Security substation - - type: Transform - pos: -23.5,5.5 - parent: 2 - uid: 1355 components: - type: MetaData @@ -155913,13 +156033,6 @@ entities: - type: Transform pos: 62.5,-13.5 parent: 2 - - uid: 4155 - components: - - type: MetaData - name: Gravgen/anchor substation - - type: Transform - pos: -54.5,15.5 - parent: 2 - uid: 7204 components: - type: Transform @@ -155957,6 +156070,18 @@ entities: - type: Transform pos: -45.5,39.5 parent: 2 + - uid: 25689 + components: + - type: Transform + pos: -23.5,6.5 + parent: 2 + - uid: 27494 + components: + - type: MetaData + name: Gravgen/anchor substation + - type: Transform + pos: -53.5,15.5 + parent: 2 - proto: SubstationMachineCircuitboard entities: - uid: 27729 @@ -156435,11 +156560,26 @@ entities: - type: Transform pos: 10.5,3.5 parent: 2 - - uid: 5997 - components: - - type: Transform - pos: 9.5,3.5 - parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + Oxygen: 1.7459903 + Nitrogen: 6.568249 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 24264 + - 24261 + - 24259 + - 23882 + - 23838 + - 16069 - proto: SuitStorageEVASyndicate entities: - uid: 26469 @@ -156449,10 +156589,10 @@ entities: parent: 26286 - proto: SuitStorageHOS entities: - - uid: 4028 + - uid: 3011 components: - type: Transform - pos: -20.5,11.5 + pos: -19.5,11.5 parent: 2 - proto: SuitStorageRD entities: @@ -161210,6 +161350,12 @@ entities: - type: Transform pos: 8.5,-6.5 parent: 2 + - uid: 679 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -17.5,11.5 + parent: 2 - uid: 1068 components: - type: Transform @@ -161257,11 +161403,6 @@ entities: rot: 1.5707963267948966 rad pos: -6.5,-19.5 parent: 2 - - uid: 3012 - components: - - type: Transform - pos: -23.5,10.5 - parent: 2 - uid: 3073 components: - type: Transform @@ -161332,17 +161473,8 @@ entities: - uid: 4015 components: - type: Transform - pos: -18.5,11.5 - parent: 2 - - uid: 4027 - components: - - type: Transform - pos: -18.5,10.5 - parent: 2 - - uid: 4067 - components: - - type: Transform - pos: -18.5,9.5 + rot: -1.5707963267948966 rad + pos: -17.5,10.5 parent: 2 - uid: 4440 components: @@ -161923,6 +162055,17 @@ entities: rot: -1.5707963267948966 rad pos: -13.5,-19.5 parent: 2 + - uid: 27694 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -17.5,9.5 + parent: 2 + - uid: 27911 + components: + - type: Transform + pos: -22.5,9.5 + parent: 2 - proto: TargetClown entities: - uid: 163 @@ -161993,26 +162136,26 @@ entities: parent: 2 - proto: TegCenter entities: - - uid: 25890 + - uid: 27067 components: - type: Transform + rot: -1.5707963267948966 rad pos: -35.5,33.5 parent: 2 - proto: TegCirculator entities: - - uid: 25783 + - uid: 13798 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -35.5,32.5 + pos: -34.5,33.5 parent: 2 - type: PointLight color: '#FF3300FF' - - uid: 25891 + - uid: 13872 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -35.5,34.5 + rot: 3.141592653589793 rad + pos: -36.5,33.5 parent: 2 - type: PointLight color: '#FF3300FF' @@ -162356,7 +162499,7 @@ entities: - uid: 3671 components: - type: Transform - pos: -22.40556,5.532052 + pos: -22.46289,6.568853 parent: 2 - uid: 6728 components: @@ -162620,7 +162763,7 @@ entities: - uid: 4794 components: - type: Transform - pos: -23.723274,10.637915 + pos: -22.206724,9.627435 parent: 2 - proto: ToyFigurineHoloClown entities: @@ -163832,26 +163975,26 @@ entities: fixtures: {} - proto: WallmountTelevision entities: - - uid: 5872 + - uid: 7316 components: - type: Transform rot: 1.5707963267948966 rad - pos: -13.5,19.5 + pos: -61.5,16.5 parent: 2 - type: Fixtures fixtures: {} - - uid: 7316 + - uid: 8412 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -61.5,16.5 + pos: -2.5,42.5 parent: 2 - type: Fixtures fixtures: {} - - uid: 8412 + - uid: 9945 components: - type: Transform - pos: -2.5,42.5 + rot: 1.5707963267948966 rad + pos: -13.5,20.5 parent: 2 - type: Fixtures fixtures: {} @@ -164022,15 +164165,11 @@ entities: - type: Transform pos: -24.5,6.5 parent: 2 - - uid: 62 - components: - - type: Transform - pos: -24.5,7.5 - parent: 2 - uid: 63 components: - type: Transform - pos: -24.5,8.5 + rot: 1.5707963267948966 rad + pos: -23.5,7.5 parent: 2 - uid: 65 components: @@ -164253,6 +164392,12 @@ entities: - type: Transform pos: 18.5,13.5 parent: 2 + - uid: 223 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -23.5,9.5 + parent: 2 - uid: 224 components: - type: Transform @@ -167360,21 +167505,11 @@ entities: - type: Transform pos: -26.5,-25.5 parent: 2 - - uid: 3011 - components: - - type: Transform - pos: -24.5,9.5 - parent: 2 - uid: 3013 components: - type: Transform pos: -22.5,11.5 parent: 2 - - uid: 3014 - components: - - type: Transform - pos: -21.5,12.5 - parent: 2 - uid: 3017 components: - type: Transform @@ -167395,11 +167530,6 @@ entities: - type: Transform pos: -13.5,20.5 parent: 2 - - uid: 3023 - components: - - type: Transform - pos: -12.5,21.5 - parent: 2 - uid: 3024 components: - type: Transform @@ -167646,11 +167776,6 @@ entities: - type: Transform pos: 13.5,20.5 parent: 2 - - uid: 3098 - components: - - type: Transform - pos: -23.5,6.5 - parent: 2 - uid: 3100 components: - type: Transform @@ -167734,11 +167859,6 @@ entities: - type: Transform pos: -17.5,12.5 parent: 2 - - uid: 3117 - components: - - type: Transform - pos: -22.5,6.5 - parent: 2 - uid: 3118 components: - type: Transform @@ -167854,21 +167974,11 @@ entities: - type: Transform pos: -18.5,12.5 parent: 2 - - uid: 3154 - components: - - type: Transform - pos: -24.5,10.5 - parent: 2 - uid: 3155 components: - type: Transform pos: -23.5,11.5 parent: 2 - - uid: 3156 - components: - - type: Transform - pos: -22.5,12.5 - parent: 2 - uid: 3157 components: - type: Transform @@ -167894,11 +168004,6 @@ entities: - type: Transform pos: -13.5,14.5 parent: 2 - - uid: 3172 - components: - - type: Transform - pos: -13.5,18.5 - parent: 2 - uid: 3175 components: - type: Transform @@ -168730,6 +168835,17 @@ entities: - type: Transform pos: 29.5,2.5 parent: 2 + - uid: 4028 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -16.5,22.5 + parent: 2 + - uid: 4033 + components: + - type: Transform + pos: -13.5,22.5 + parent: 2 - uid: 4037 components: - type: Transform @@ -168752,6 +168868,11 @@ entities: - type: Transform pos: 27.5,26.5 parent: 2 + - uid: 4065 + components: + - type: Transform + pos: -24.5,19.5 + parent: 2 - uid: 4071 components: - type: Transform @@ -168869,12 +168990,62 @@ entities: - type: Transform pos: -8.5,-31.5 parent: 2 + - uid: 4348 + components: + - type: Transform + pos: -28.5,5.5 + parent: 2 + - uid: 4354 + components: + - type: Transform + pos: -28.5,4.5 + parent: 2 - uid: 4357 components: - type: Transform rot: 1.5707963267948966 rad pos: 21.5,49.5 parent: 2 + - uid: 4370 + components: + - type: Transform + pos: -28.5,9.5 + parent: 2 + - uid: 4372 + components: + - type: Transform + pos: -28.5,8.5 + parent: 2 + - uid: 4373 + components: + - type: Transform + pos: -28.5,7.5 + parent: 2 + - uid: 4374 + components: + - type: Transform + pos: -27.5,13.5 + parent: 2 + - uid: 4375 + components: + - type: Transform + pos: -28.5,12.5 + parent: 2 + - uid: 4376 + components: + - type: Transform + pos: -26.5,13.5 + parent: 2 + - uid: 4394 + components: + - type: Transform + pos: -23.5,21.5 + parent: 2 + - uid: 4402 + components: + - type: Transform + pos: -24.5,21.5 + parent: 2 - uid: 4420 components: - type: Transform @@ -168960,11 +169131,6 @@ entities: - type: Transform pos: -36.5,21.5 parent: 2 - - uid: 4632 - components: - - type: Transform - pos: -24.5,11.5 - parent: 2 - uid: 4640 components: - type: Transform @@ -168977,11 +169143,56 @@ entities: rot: -1.5707963267948966 rad pos: 14.5,19.5 parent: 2 + - uid: 4696 + components: + - type: Transform + pos: -24.5,15.5 + parent: 2 + - uid: 4698 + components: + - type: Transform + pos: -24.5,16.5 + parent: 2 + - uid: 4705 + components: + - type: Transform + pos: -19.5,21.5 + parent: 2 + - uid: 4706 + components: + - type: Transform + pos: -19.5,22.5 + parent: 2 + - uid: 4710 + components: + - type: Transform + pos: -20.5,21.5 + parent: 2 + - uid: 4712 + components: + - type: Transform + pos: -22.5,21.5 + parent: 2 + - uid: 4716 + components: + - type: Transform + pos: -28.5,11.5 + parent: 2 + - uid: 4717 + components: + - type: Transform + pos: -28.5,6.5 + parent: 2 - uid: 4719 components: - type: Transform pos: -18.5,14.5 parent: 2 + - uid: 4720 + components: + - type: Transform + pos: -28.5,10.5 + parent: 2 - uid: 4721 components: - type: Transform @@ -169018,11 +169229,26 @@ entities: - type: Transform pos: 10.5,-36.5 parent: 2 + - uid: 4746 + components: + - type: Transform + pos: -24.5,18.5 + parent: 2 + - uid: 4748 + components: + - type: Transform + pos: -24.5,17.5 + parent: 2 - uid: 4768 components: - type: Transform pos: -60.5,51.5 parent: 2 + - uid: 4777 + components: + - type: Transform + pos: -25.5,14.5 + parent: 2 - uid: 4778 components: - type: Transform @@ -169034,6 +169260,16 @@ entities: - type: Transform pos: -60.5,55.5 parent: 2 + - uid: 4781 + components: + - type: Transform + pos: -24.5,20.5 + parent: 2 + - uid: 4784 + components: + - type: Transform + pos: -17.5,22.5 + parent: 2 - uid: 4802 components: - type: Transform @@ -169190,6 +169426,26 @@ entities: - type: Transform pos: -25.5,2.5 parent: 2 + - uid: 5649 + components: + - type: Transform + pos: -18.5,22.5 + parent: 2 + - uid: 5650 + components: + - type: Transform + pos: -28.5,3.5 + parent: 2 + - uid: 5667 + components: + - type: Transform + pos: -14.5,22.5 + parent: 2 + - uid: 5672 + components: + - type: Transform + pos: -21.5,21.5 + parent: 2 - uid: 5749 components: - type: Transform @@ -169268,12 +169524,6 @@ entities: rot: -1.5707963267948966 rad pos: 2.5,-59.5 parent: 2 - - uid: 5979 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,2.5 - parent: 2 - uid: 6001 components: - type: Transform @@ -170120,6 +170370,12 @@ entities: - type: Transform pos: -68.5,3.5 parent: 2 + - uid: 8356 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -22.5,7.5 + parent: 2 - uid: 8379 components: - type: Transform @@ -170305,6 +170561,11 @@ entities: - type: Transform pos: -20.5,-68.5 parent: 2 + - uid: 8926 + components: + - type: Transform + pos: -20.5,11.5 + parent: 2 - uid: 8927 components: - type: Transform @@ -171177,6 +171438,12 @@ entities: - type: Transform pos: 2.5,-29.5 parent: 2 + - uid: 10049 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -23.5,8.5 + parent: 2 - uid: 10062 components: - type: Transform @@ -171666,16 +171933,6 @@ entities: - type: Transform pos: 24.5,30.5 parent: 2 - - uid: 12350 - components: - - type: Transform - pos: -42.5,41.5 - parent: 2 - - uid: 12373 - components: - - type: Transform - pos: -42.5,42.5 - parent: 2 - uid: 12377 components: - type: Transform @@ -171686,6 +171943,12 @@ entities: - type: Transform pos: 23.5,-16.5 parent: 2 + - uid: 12401 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -23.5,10.5 + parent: 2 - uid: 12402 components: - type: Transform @@ -171742,6 +172005,11 @@ entities: - type: Transform pos: 46.5,38.5 parent: 2 + - uid: 12717 + components: + - type: Transform + pos: -32.5,38.5 + parent: 2 - uid: 12718 components: - type: Transform @@ -171822,6 +172090,11 @@ entities: rot: 1.5707963267948966 rad pos: -45.5,2.5 parent: 2 + - uid: 13724 + components: + - type: Transform + pos: -36.5,38.5 + parent: 2 - uid: 13786 components: - type: Transform @@ -171843,11 +172116,6 @@ entities: - type: Transform pos: -41.5,35.5 parent: 2 - - uid: 14485 - components: - - type: Transform - pos: -42.5,43.5 - parent: 2 - uid: 14626 components: - type: Transform @@ -171889,11 +172157,6 @@ entities: - type: Transform pos: -37.5,44.5 parent: 2 - - uid: 15215 - components: - - type: Transform - pos: -42.5,40.5 - parent: 2 - uid: 15460 components: - type: Transform @@ -172643,6 +172906,12 @@ entities: - type: Transform pos: 40.5,17.5 parent: 2 + - uid: 22652 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -41.5,40.5 + parent: 2 - uid: 22768 components: - type: Transform @@ -172814,6 +173083,18 @@ entities: rot: -1.5707963267948966 rad pos: 5.5,32.5 parent: 2 + - uid: 23221 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -41.5,41.5 + parent: 2 + - uid: 23272 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -37.5,7.5 + parent: 2 - uid: 23694 components: - type: Transform @@ -172830,6 +173111,12 @@ entities: - type: Transform pos: 48.5,37.5 parent: 2 + - uid: 24064 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -39.5,7.5 + parent: 2 - uid: 24263 components: - type: Transform @@ -172880,18 +173167,6 @@ entities: rot: 1.5707963267948966 rad pos: 1.5,16.5 parent: 2 - - uid: 25159 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -37.5,6.5 - parent: 2 - - uid: 25160 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -33.5,6.5 - parent: 2 - uid: 25186 components: - type: Transform @@ -172969,11 +173244,6 @@ entities: - type: Transform pos: 12.5,-30.5 parent: 2 - - uid: 25447 - components: - - type: Transform - pos: -42.5,44.5 - parent: 2 - uid: 25483 components: - type: Transform @@ -173054,6 +173324,12 @@ entities: - type: Transform pos: -40.5,47.5 parent: 2 + - uid: 25683 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -24.5,7.5 + parent: 2 - uid: 25746 components: - type: Transform @@ -173119,6 +173395,18 @@ entities: rot: -1.5707963267948966 rad pos: -40.5,4.5 parent: 2 + - uid: 25888 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -41.5,43.5 + parent: 2 + - uid: 26161 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -41.5,42.5 + parent: 2 - uid: 26276 components: - type: Transform @@ -173142,6 +173430,12 @@ entities: - type: Transform pos: 26.5,-27.5 parent: 2 + - uid: 26931 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -34.5,7.5 + parent: 2 - uid: 27142 components: - type: Transform @@ -177746,12 +178040,6 @@ entities: - type: Transform pos: -11.5,-14.5 parent: 2 - - uid: 3948 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -9.5,-2.5 - parent: 2 - uid: 3950 components: - type: Transform @@ -177800,12 +178088,6 @@ entities: rot: -1.5707963267948966 rad pos: -12.5,-8.5 parent: 2 - - uid: 3986 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -9.5,-3.5 - parent: 2 - uid: 3988 components: - type: Transform @@ -177926,6 +178208,12 @@ entities: rot: -1.5707963267948966 rad pos: -45.5,-4.5 parent: 2 + - uid: 4464 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -15.5,22.5 + parent: 2 - uid: 4511 components: - type: Transform @@ -180786,11 +181074,6 @@ entities: - type: Transform pos: -46.5,-45.5 parent: 2 - - uid: 23221 - components: - - type: Transform - pos: -57.5,-43.5 - parent: 2 - uid: 23222 components: - type: Transform @@ -181111,6 +181394,16 @@ entities: - type: Transform pos: -51.5,-47.5 parent: 2 + - uid: 25651 + components: + - type: Transform + pos: -8.5,-2.5 + parent: 2 + - uid: 25654 + components: + - type: Transform + pos: -8.5,-3.5 + parent: 2 - uid: 25821 components: - type: Transform @@ -183004,6 +183297,16 @@ entities: parent: 2 - proto: WoodenSupportBeam entities: + - uid: 3117 + components: + - type: Transform + pos: -19.5,16.5 + parent: 2 + - uid: 10047 + components: + - type: Transform + pos: -24.5,11.5 + parent: 2 - uid: 17016 components: - type: Transform @@ -183031,6 +183334,13 @@ entities: - type: Transform pos: 24.5,15.5 parent: 2 +- proto: WoodenSupportWallBroken + entities: + - uid: 27913 + components: + - type: Transform + pos: -17.5,20.5 + parent: 2 - proto: Wrench entities: - uid: 7133 From e9f8042e07c137d0106bc1eea9109ce2bd22db8e Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 23 Feb 2026 05:49:59 +0000 Subject: [PATCH 390/603] Automatic changelog update --- Resources/Changelog/Maps.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Resources/Changelog/Maps.yml b/Resources/Changelog/Maps.yml index 3726ae8b99e..73a953a7222 100644 --- a/Resources/Changelog/Maps.yml +++ b/Resources/Changelog/Maps.yml @@ -1029,4 +1029,11 @@ id: 125 time: '2026-02-22T23:20:39.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42994 +- author: TytosB + changes: + - message: On Serpentcrest, tweaked Atmospherics and Security. + type: Tweak + id: 126 + time: '2026-02-23T05:48:51.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42905 Order: 2 From 04b4b7d51c2c85bec73f9e516dc51818122975a6 Mon Sep 17 00:00:00 2001 From: Moony Date: Mon, 23 Feb 2026 22:07:22 +0100 Subject: [PATCH 391/603] Non-obsoletion warnings as errors in Release. (#42983) * Non-obsoletion warnings as errors in Release. * Add two other obsoletions related to collection expressions. These are not present in the codebase, but may become so in the future. * Exempt NU1903 so the project can't mysteriously stop building. * Fix some FULL_RELEASE mistakes. * diff fix * Resharper caught this one. Note to self: Wire up resharper to CI in another PR. --- Content.Client/Mapping/MappingState.cs | 6 +++++- Content.Server/Administration/Systems/AdminVerbSystem.cs | 2 +- Content.Server/Entry/EntryPoint.cs | 5 +++-- Content.Server/Mapping/MappingManager.cs | 2 ++ Content.Shared/Chat/SharedChatSystem.cs | 3 +++ Content.Shared/Maps/GameMapPrototype.cs | 3 +++ MSBuild/Content.props | 5 +++++ 7 files changed, 22 insertions(+), 4 deletions(-) diff --git a/Content.Client/Mapping/MappingState.cs b/Content.Client/Mapping/MappingState.cs index 27440607cb6..190ae096769 100644 --- a/Content.Client/Mapping/MappingState.cs +++ b/Content.Client/Mapping/MappingState.cs @@ -37,7 +37,10 @@ namespace Content.Client.Mapping; public sealed class MappingState : GameplayStateBase { + #if !FULL_RELEASE [Dependency] private readonly IClientAdminManager _admin = default!; + #endif + [Dependency] private readonly IEntityManager _entityManager = default!; [Dependency] private readonly IEntityNetworkManager _entityNetwork = default!; [Dependency] private readonly IInputManager _input = default!; @@ -746,12 +749,13 @@ private bool HandleSaveMap(in PointerInputCmdArgs args) { #if FULL_RELEASE return false; -#endif +#else if (!_admin.IsAdmin(true) || !_admin.HasFlag(AdminFlags.Host)) return false; SaveMap(); return true; +#endif } private bool HandleEnablePick(ICommonSession? session, EntityCoordinates coords, EntityUid uid) diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.cs b/Content.Server/Administration/Systems/AdminVerbSystem.cs index 4232b034f3e..4a2ebbb7c60 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.cs @@ -445,7 +445,7 @@ private void AddDebugVerbs(GetVerbsEvent args) } // Control mob verb - if (_toolshed.ActivePermissionController?.CheckInvokable(new CommandSpec(_toolshed.DefaultEnvironment.GetCommand("mind"), "control"), player, out _) ?? false && + if ((_toolshed.ActivePermissionController?.CheckInvokable(new CommandSpec(_toolshed.DefaultEnvironment.GetCommand("mind"), "control"), player, out _) ?? false) && args.User != args.Target) { Verb verb = new() diff --git a/Content.Server/Entry/EntryPoint.cs b/Content.Server/Entry/EntryPoint.cs index d6095d9994c..fb6d3e282d9 100644 --- a/Content.Server/Entry/EntryPoint.cs +++ b/Content.Server/Entry/EntryPoint.cs @@ -1,3 +1,4 @@ +using System.Threading.Tasks; using Content.Server.Acz; using Content.Server.Administration; using Content.Server.Administration.Logs; @@ -207,8 +208,8 @@ protected override void Dispose(bool disposing) _serverApi.Shutdown(); - // TODO Should this be awaited? - _discordLink.Shutdown(); + // We don't care when or how this finishes, just spin the task off into the void. + _ = _discordLink.Shutdown(); _discordChatLink.Shutdown(); } diff --git a/Content.Server/Mapping/MappingManager.cs b/Content.Server/Mapping/MappingManager.cs index 3a46b301e83..dc0dcf4d42c 100644 --- a/Content.Server/Mapping/MappingManager.cs +++ b/Content.Server/Mapping/MappingManager.cs @@ -14,6 +14,7 @@ namespace Content.Server.Mapping; public sealed class MappingManager : IPostInjectInit { +#if !FULL_RELEASE [Dependency] private readonly IAdminManager _admin = default!; [Dependency] private readonly ILogManager _log = default!; [Dependency] private readonly IServerNetManager _net = default!; @@ -23,6 +24,7 @@ public sealed class MappingManager : IPostInjectInit private ISawmill _sawmill = default!; private ZStdCompressionContext _zstd = default!; +#endif public void PostInject() { diff --git a/Content.Shared/Chat/SharedChatSystem.cs b/Content.Shared/Chat/SharedChatSystem.cs index e7efe39df9f..4043725679d 100644 --- a/Content.Shared/Chat/SharedChatSystem.cs +++ b/Content.Shared/Chat/SharedChatSystem.cs @@ -298,7 +298,10 @@ public static string InjectTagInsideTag(ChatMessage message, string outerTag, st public static string InjectTagAroundString(ChatMessage message, string targetString, string tag, string? tagParameter) { var rawmsg = message.WrappedMessage; + // TODO: Figure out if there's any way we can cache this, and if not then rewrite this to not use regex. +#pragma warning disable RA0026 rawmsg = Regex.Replace(rawmsg, "(?i)(" + targetString + ")(?-i)(?![^[]*])", $"[{tag}={tagParameter}]$1[/{tag}]"); +#pragma warning restore RA0026 return rawmsg; } diff --git a/Content.Shared/Maps/GameMapPrototype.cs b/Content.Shared/Maps/GameMapPrototype.cs index fc973764120..ec199904eaa 100644 --- a/Content.Shared/Maps/GameMapPrototype.cs +++ b/Content.Shared/Maps/GameMapPrototype.cs @@ -57,6 +57,8 @@ public sealed partial class GameMapPrototype : IPrototype /// public GameMapPrototype Persistence(ResPath mapPath) { + //TODO(Kaylie): Refactor gamemaps for this. +#pragma warning disable RA0039 return new() { ID = ID, @@ -64,5 +66,6 @@ public GameMapPrototype Persistence(ResPath mapPath) MapPath = mapPath, _stations = _stations }; +#pragma warning restore RA0039 } } diff --git a/MSBuild/Content.props b/MSBuild/Content.props index 7216961fa0c..de44d3ccc65 100644 --- a/MSBuild/Content.props +++ b/MSBuild/Content.props @@ -9,4 +9,9 @@ false enable + + + true + CS0618,CS0672,CS0612,CS1062,CS1064,NU1903 + From be4aaa0f958c80c75fae91e53d687aec27723789 Mon Sep 17 00:00:00 2001 From: DaturoDewitt <49022685+DaturoDewitt@users.noreply.github.com> Date: Mon, 23 Feb 2026 23:54:25 +0100 Subject: [PATCH 392/603] Lizard rehappy alternative (#42915) * new lizard laugh * typo * replaced sound with alternative lizard_happy.ogg adjusted attributions.yml * Update attributions.yml Since my friend uses Logic Pro X commercially and paid for the license, he can freely use the provided samples in his own audio projects. The resulting lizard_happy.ogg is a combination of multiple samples transformed to achieve the correct sound, using an original lizard laugh as reference. * Add source link for lizard_happy.ogg attribution Added source information for lizard_happy.ogg. * update sound * wtf is a laser raptor --------- Co-authored-by: Velken <8467292+Velken@users.noreply.github.com> Co-authored-by: ScarKy0 --- Resources/Audio/Animals/attributions.yml | 5 +++++ Resources/Audio/Animals/lizard_happy.ogg | Bin 0 -> 26876 bytes .../Prototypes/Entities/Mobs/NPCs/animals.yml | 4 ++++ .../Prototypes/Entities/Mobs/NPCs/lavaland.yml | 2 ++ .../Entities/Mobs/NPCs/miscellaneous.yml | 2 ++ Resources/Prototypes/SoundCollections/troll.yml | 1 + .../Prototypes/Voice/speech_emote_sounds.yml | 4 ++++ 7 files changed, 18 insertions(+) create mode 100644 Resources/Audio/Animals/lizard_happy.ogg diff --git a/Resources/Audio/Animals/attributions.yml b/Resources/Audio/Animals/attributions.yml index 5a1dd97b6fd..1d65b07df54 100644 --- a/Resources/Audio/Animals/attributions.yml +++ b/Resources/Audio/Animals/attributions.yml @@ -103,6 +103,11 @@ copyright: "Audio is created by youtube user 'Winry Marini'" source: "https://youtu.be/QIhwzsk5bww" +- files: ["lizard_happy.ogg"] + license: "CC-BY-NC-SA-4.0" + copyright: "Provided by DaturoDewitt. Created using transformed and layered samples bundled with Logic Pro X" + source: "https://github.com/space-wizards/space-station-14/pull/42915" + - files: ["bear.ogg"] license: "CC-BY-3.0" copyright: "Audio is recorded by 'Nagaty Studio'. The original audio was reverbed" diff --git a/Resources/Audio/Animals/lizard_happy.ogg b/Resources/Audio/Animals/lizard_happy.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a9c671a6d30e747c956630df40061726ecec1ca3 GIT binary patch literal 26876 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

-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 v=>PjH Date: Mon, 23 Feb 2026 23:08:12 +0000 Subject: [PATCH 393/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 2c395476ee4..fc4c78102b8 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Moomoobeef - changes: - - message: Evac directional signs now glow in the dark! - type: Tweak - id: 9033 - time: '2025-10-04T20:27:15.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/38545 - author: NoreUhh changes: - message: The Ian suit makes you bark now. Woof! @@ -3986,3 +3979,10 @@ id: 9541 time: '2026-02-23T01:24:02.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42998 +- author: DaturoDewitt + changes: + - message: Lizards can laugh again! + type: Add + id: 9542 + time: '2026-02-23T23:07:01.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42915 From 63457d041a0bd67ca93aa98ee76f182b13c9fed8 Mon Sep 17 00:00:00 2001 From: blueDev2 <89804215+blueDev2@users.noreply.github.com> Date: Tue, 24 Feb 2026 13:55:45 -0500 Subject: [PATCH 394/603] Add TriggerOnRot Component (#42667) * Add TriggerOnRot Component, and related systems and events * Move around components and events to proper namespaces * Improve TriggerOnRotComponent Comment * fix a bunch of imports * Change BeginRottingEvent to a ByRefEvent record --------- Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> --- Content.Server/Atmos/Rotting/RottingSystem.cs | 2 ++ .../Atmos/Rotting/BeginRottingEvent.cs | 7 +++++++ .../Triggers/TriggerOnRotComponent.cs | 9 +++++++++ .../Trigger/Systems/TriggerOnRotSystem.cs | 19 +++++++++++++++++++ 4 files changed, 37 insertions(+) create mode 100644 Content.Shared/Atmos/Rotting/BeginRottingEvent.cs create mode 100644 Content.Shared/Trigger/Components/Triggers/TriggerOnRotComponent.cs create mode 100644 Content.Shared/Trigger/Systems/TriggerOnRotSystem.cs diff --git a/Content.Server/Atmos/Rotting/RottingSystem.cs b/Content.Server/Atmos/Rotting/RottingSystem.cs index ea45bf5ed69..3c4440ed7c1 100644 --- a/Content.Server/Atmos/Rotting/RottingSystem.cs +++ b/Content.Server/Atmos/Rotting/RottingSystem.cs @@ -91,6 +91,8 @@ public override void Update(float frameTime) if (perishable.RotAccumulator >= perishable.RotAfter) { var rot = AddComp(uid); + var ev = new BeginRottingEvent(); + RaiseLocalEvent(uid, ref ev); rot.NextRotUpdate = _timing.CurTime + rot.RotUpdateRate; } } diff --git a/Content.Shared/Atmos/Rotting/BeginRottingEvent.cs b/Content.Shared/Atmos/Rotting/BeginRottingEvent.cs new file mode 100644 index 00000000000..fc612d9b3da --- /dev/null +++ b/Content.Shared/Atmos/Rotting/BeginRottingEvent.cs @@ -0,0 +1,7 @@ +namespace Content.Shared.Atmos.Rotting; + +///

+/// Raised when an entity starts to rot. +/// +[ByRefEvent] +public record struct BeginRottingEvent; diff --git a/Content.Shared/Trigger/Components/Triggers/TriggerOnRotComponent.cs b/Content.Shared/Trigger/Components/Triggers/TriggerOnRotComponent.cs new file mode 100644 index 00000000000..c0a6b49813f --- /dev/null +++ b/Content.Shared/Trigger/Components/Triggers/TriggerOnRotComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Trigger.Components.Triggers; + +/// +/// Sends a trigger when the entity starts to rot. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class TriggerOnRotComponent : BaseTriggerOnXComponent; diff --git a/Content.Shared/Trigger/Systems/TriggerOnRotSystem.cs b/Content.Shared/Trigger/Systems/TriggerOnRotSystem.cs new file mode 100644 index 00000000000..4b39a6802e5 --- /dev/null +++ b/Content.Shared/Trigger/Systems/TriggerOnRotSystem.cs @@ -0,0 +1,19 @@ +using Content.Shared.Atmos.Rotting; +using Content.Shared.Trigger.Components.Triggers; + +namespace Content.Shared.Trigger.Systems; + +public sealed partial class TriggerOnRotSystem : TriggerOnXSystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnRot); + } + + private void OnRot(Entity ent, ref BeginRottingEvent args) + { + Trigger.Trigger(ent.Owner, null, ent.Comp.KeyOut, predicted: false); + } +} From 0a55e5fbba8f8b0c05b586c182d2c9eec6aff06f Mon Sep 17 00:00:00 2001 From: Tiniest Shark Date: Tue, 24 Feb 2026 20:22:09 -0500 Subject: [PATCH 395/603] Largely Revert Unique Corgi Hardsuit and Equipment Sprites (#42696) * largely reverts corgi wearables. * small mistake, moths are not intended to be harmed. * im dumb. * Glasses specific fix --- .../Entities/Clothing/Eyes/specific.yml | 3 +- .../Entities/Clothing/Head/eva-helmets.yml | 5 -- .../Clothing/Head/hardsuit-helmets.yml | 50 ------------------ .../Entities/Clothing/Head/hats.yml | 3 -- .../Entities/Clothing/Head/helmets.yml | 1 - .../Entities/Clothing/Head/hoods.yml | 1 - .../Entities/Clothing/OuterClothing/armor.yml | 2 - .../Clothing/OuterClothing/hardsuits.yml | 15 ------ .../Entities/Clothing/OuterClothing/misc.yml | 2 - .../Clothing/OuterClothing/softsuits.yml | 2 - .../Entities/Clothing/OuterClothing/suits.yml | 2 - .../commandglasses.rsi/equipped-EYES-dog.png | Bin 3077 -> 0 bytes .../Eyes/Glasses/commandglasses.rsi/meta.json | 6 +-- .../Glasses/meson.rsi/equipped-EYES-dog.png | Bin 3154 -> 0 bytes .../meson.rsi/equipped-EYES-secdog.png | Bin 793 -> 0 bytes .../Clothing/Eyes/Glasses/meson.rsi/meta.json | 10 +--- .../Glasses/science.rsi/equipped-EYES-dog.png | Bin 3145 -> 0 bytes .../Eyes/Glasses/science.rsi/meta.json | 6 +-- .../secglasses.rsi/equipped-EYES-dog.png | Bin 3084 -> 0 bytes .../secglasses.rsi/equipped-EYES-secdog.png | Bin 649 -> 0 bytes .../Eyes/Glasses/secglasses.rsi/meta.json | 10 +--- .../sunglasses.rsi/equipped-EYES-dog.png | Bin 3094 -> 0 bytes .../sunglasses.rsi/equipped-EYES-secdog.png | Bin 628 -> 0 bytes .../Eyes/Glasses/sunglasses.rsi/meta.json | 10 +--- .../Hud/beergoggles.rsi/equipped-EYES-dog.png | Bin 3106 -> 0 bytes .../Eyes/Hud/beergoggles.rsi/meta.json | 6 +-- .../Hud/command.rsi/equipped-EYES-dog.png | Bin 3150 -> 0 bytes .../Clothing/Eyes/Hud/command.rsi/meta.json | 6 +-- .../Eyes/Hud/med.rsi/equipped-EYES-dog.png | Bin 3134 -> 0 bytes .../Clothing/Eyes/Hud/med.rsi/meta.json | 6 +-- .../Hud/medpatch.rsi/equipped-EYES-dog.png | Bin 3077 -> 0 bytes .../Clothing/Eyes/Hud/medpatch.rsi/meta.json | 6 +-- .../Eyes/Hud/sec.rsi/equipped-EYES-dog.png | Bin 3138 -> 0 bytes .../Clothing/Eyes/Hud/sec.rsi/meta.json | 6 +-- .../Hud/secpatch.rsi/equipped-EYES-dog.png | Bin 3080 -> 0 bytes .../Clothing/Eyes/Hud/secpatch.rsi/meta.json | 6 +-- .../Eyes/Hud/synd.rsi/equipped-EYES-dog.png | Bin 3173 -> 0 bytes .../Clothing/Eyes/Hud/synd.rsi/meta.json | 6 +-- .../Hud/syndagent.rsi/equipped-EYES-dog.png | Bin 3167 -> 0 bytes .../Clothing/Eyes/Hud/syndagent.rsi/meta.json | 6 +-- .../atmospherics.rsi/equipped-head-dog.png | Bin 3785 -> 0 bytes .../equipped-head-light-dog.png | Bin 3472 -> 0 bytes .../equipped-head-unshaded-dog.png | Bin 3080 -> 0 bytes .../Head/Hardsuits/atmospherics.rsi/meta.json | 14 +---- .../Head/Hardsuits/capspace.rsi/meta.json | 10 +--- .../capspace.rsi/off-equipped-HELMET-dog.png | Bin 1008 -> 0 bytes .../capspace.rsi/on-equipped-HELMET-dog.png | Bin 1462 -> 0 bytes .../cybersun.rsi/equipped-HELMET-dog.png | Bin 690 -> 0 bytes .../Head/Hardsuits/cybersun.rsi/meta.json | 6 +-- .../equipped-head-dog.png | Bin 8002 -> 0 bytes .../equipped-head-light-dog.png | Bin 3472 -> 0 bytes .../equipped-head-unshaded-dog.png | Bin 2860 -> 0 bytes .../Hardsuits/engineering-white.rsi/meta.json | 14 +---- .../engineering.rsi/equipped-head-dog.png | Bin 3830 -> 0 bytes .../equipped-head-light-dog.png | Bin 3472 -> 0 bytes .../equipped-head-unshaded-dog.png | Bin 2818 -> 0 bytes .../Head/Hardsuits/engineering.rsi/meta.json | 14 +---- .../goliathhelm.rsi/equipped-head-dog.png | Bin 11721 -> 0 bytes .../equipped-head-light-dog.png | Bin 9293 -> 0 bytes .../equipped-head-unshaded-dog.png | Bin 3919 -> 0 bytes .../Head/Hardsuits/goliathhelm.rsi/meta.json | 14 +---- .../Head/Hardsuits/medical.rsi/meta.json | 10 +--- .../medical.rsi/off-equipped-HELMET-dog.png | Bin 3764 -> 0 bytes .../medical.rsi/on-equipped-HELMET-dog.png | Bin 4001 -> 0 bytes .../paramedhelm.rsi/equipped-head-dog.png | Bin 4012 -> 0 bytes .../equipped-head-light-dog.png | Bin 4463 -> 0 bytes .../Head/Hardsuits/paramedhelm.rsi/meta.json | 10 +--- .../Clothing/Head/Hardsuits/rd.rsi/meta.json | 10 +--- .../rd.rsi/off-equipped-HELMET-dog.png | Bin 3687 -> 0 bytes .../rd.rsi/on-equipped-HELMET-dog.png | Bin 3996 -> 0 bytes .../Head/Hardsuits/salvage.rsi/meta.json | 10 +--- .../salvage.rsi/off-equipped-HELMET-dog.png | Bin 8310 -> 0 bytes .../salvage.rsi/on-equipped-HELMET-dog.png | Bin 8850 -> 0 bytes .../spatiohelm.rsi/equipped-head-dog.png | Bin 8489 -> 0 bytes .../equipped-head-light-dog.png | Bin 9157 -> 0 bytes .../equipped-head-unshaded-dog.png | Bin 3918 -> 0 bytes .../Head/Hardsuits/spatiohelm.rsi/meta.json | 14 +---- .../Head/Hardsuits/syndicate.rsi/meta.json | 10 +--- .../syndicate.rsi/off-equipped-HELMET-dog.png | Bin 1069 -> 0 bytes .../syndicate.rsi/on-equipped-HELMET-dog.png | Bin 2081 -> 0 bytes .../Hardsuits/syndiecommander.rsi/meta.json | 10 +--- .../off-equipped-HELMET-dog.png | Bin 1061 -> 0 bytes .../on-equipped-HELMET-dog.png | Bin 2081 -> 0 bytes .../Head/Hardsuits/syndieelite.rsi/meta.json | 10 +--- .../off-equipped-HELMET-dog.png | Bin 747 -> 0 bytes .../on-equipped-HELMET-dog.png | Bin 1869 -> 0 bytes .../Head/Hardsuits/wizard.rsi/meta.json | 10 +--- .../wizard.rsi/off-equipped-HELMET-dog.png | Bin 11176 -> 0 bytes .../wizard.rsi/on-equipped-HELMET-dog.png | Bin 11436 -> 0 bytes .../redwizard.rsi/equipped-HELMET-dog.png | Bin 7522 -> 0 bytes .../Head/Hats/redwizard.rsi/meta.json | 6 +-- .../violetwizard.rsi/equipped-HELMET-dog.png | Bin 5894 -> 0 bytes .../Head/Hats/violetwizard.rsi/meta.json | 6 +-- .../Helmets/atmos_firehelmet.rsi/meta.json | 10 +--- .../off-equipped-HELMET-dog.png | Bin 12361 -> 0 bytes .../on-equipped-HELMET-dog.png | Bin 12262 -> 0 bytes .../Hoods/iansuit.rsi/equipped-HELMET-dog.png | Bin 3442 -> 0 bytes .../Clothing/Head/Hoods/iansuit.rsi/meta.json | 6 +-- .../equipped-OUTERCLOTHING-dog.png | Bin 10491 -> 0 bytes .../Armor/captain_carapace.rsi/meta.json | 6 +-- .../equipped-OUTERCLOTHING-dog.png | Bin 8802 -> 0 bytes .../Armor/security.rsi/meta.json | 6 +-- .../equipped-OUTERCLOTHING-dog.png | Bin 8802 -> 0 bytes .../Armor/security_slim.rsi/meta.json | 6 +-- .../equipped-OUTERCLOTHING-dog.png | Bin 4708 -> 0 bytes .../Hardsuits/atmospherics.rsi/meta.json | 6 +-- .../equipped-OUTERCLOTHING-dog.png | Bin 2053 -> 0 bytes .../Hardsuits/capspace.rsi/meta.json | 6 +-- .../equipped-OUTERCLOTHING-dog.png | Bin 2031 -> 0 bytes .../Hardsuits/cybersun.rsi/meta.json | 6 +-- .../equipped-OUTERCLOTHING-dog.png | Bin 10220 -> 0 bytes .../Hardsuits/engineering-white.rsi/meta.json | 6 +-- .../equipped-OUTERCLOTHING-dog.png | Bin 9984 -> 0 bytes .../Hardsuits/engineering.rsi/meta.json | 6 +-- .../equipped-OUTERCLOTHING-dog.png | Bin 13573 -> 0 bytes .../Hardsuits/goliath.rsi/meta.json | 6 +-- .../equipped-OUTERCLOTHING-dog.png | Bin 4552 -> 0 bytes .../Hardsuits/medical.rsi/meta.json | 6 +-- .../equipped-OUTERCLOTHING-dog.png | Bin 4970 -> 0 bytes .../Hardsuits/paramed.rsi/meta.json | 6 +-- .../rd.rsi/equipped-OUTERCLOTHING-dog.png | Bin 4442 -> 0 bytes .../OuterClothing/Hardsuits/rd.rsi/meta.json | 6 +-- .../equipped-OUTERCLOTHING-dog.png | Bin 9841 -> 0 bytes .../Hardsuits/salvage.rsi/meta.json | 6 +-- .../equipped-OUTERCLOTHING-dog.png | Bin 4651 -> 0 bytes .../Hardsuits/security.rsi/meta.json | 6 +-- .../spatio.rsi/equipped-OUTERCLOTHING-dog.png | Bin 13223 -> 0 bytes .../Hardsuits/spatio.rsi/meta.json | 6 +-- .../equipped-OUTERCLOTHING-dog.png | Bin 1965 -> 0 bytes .../Hardsuits/syndicate.rsi/meta.json | 6 +-- .../equipped-OUTERCLOTHING-dog.png | Bin 2015 -> 0 bytes .../Hardsuits/syndiecommander.rsi/meta.json | 6 +-- .../equipped-OUTERCLOTHING-dog.png | Bin 1567 -> 0 bytes .../Hardsuits/syndieelite.rsi/meta.json | 6 +-- .../wizard.rsi/equipped-OUTERCLOTHING-dog.png | Bin 9903 -> 0 bytes .../Hardsuits/wizard.rsi/meta.json | 6 +-- .../equipped-OUTERCLOTHING-dog.png | Bin 952 -> 0 bytes .../Misc/redwizard.rsi/meta.json | 6 +-- .../equipped-OUTERCLOTHING-dog.png | Bin 1392 -> 0 bytes .../Misc/violetwizard.rsi/meta.json | 6 +-- .../equipped-OUTERCLOTHING-dog.png | Bin 6114 -> 0 bytes .../Suits/atmos_firesuit.rsi/meta.json | 6 +-- .../eva.rsi/equipped-OUTERCLOTHING-dog.png | Bin 13259 -> 0 bytes .../OuterClothing/Suits/eva.rsi/meta.json | 6 +-- .../equipped-OUTERCLOTHING-dog.png | Bin 3902 -> 0 bytes .../OuterClothing/Suits/iansuit.rsi/meta.json | 6 +-- .../black.rsi/equipped-BACKPACK-dog.png | Bin 10718 -> 0 bytes .../Tanks/Jetpacks/black.rsi/meta.json | 10 +--- .../black.rsi/on-equipped-BACKPACK-dog.png | Bin 10718 -> 0 bytes .../blue.rsi/equipped-BACKPACK-dog.png | Bin 11246 -> 0 bytes .../Objects/Tanks/Jetpacks/blue.rsi/meta.json | 10 +--- .../blue.rsi/on-equipped-BACKPACK-dog.png | Bin 11246 -> 0 bytes .../captain.rsi/equipped-BACKPACK-dog.png | Bin 11017 -> 0 bytes .../captain.rsi/equipped-SUITSTORAGE-dog.png | Bin 11017 -> 0 bytes .../Tanks/Jetpacks/captain.rsi/meta.json | 18 +------ .../captain.rsi/on-equipped-BACKPACK-dog.png | Bin 7265 -> 0 bytes .../on-equipped-SUITSTORAGE-dog.png | Bin 7265 -> 0 bytes .../mini.rsi/equipped-BACKPACK-dog.png | Bin 11354 -> 0 bytes .../mini.rsi/equipped-SUITSTORAGE-dog.png | Bin 11354 -> 0 bytes .../Objects/Tanks/Jetpacks/mini.rsi/meta.json | 18 +------ .../mini.rsi/on-equipped-BACKPACK-dog.png | Bin 11354 -> 0 bytes .../mini.rsi/on-equipped-SUITSTORAGE-dog.png | Bin 11354 -> 0 bytes .../security.rsi/equipped-BACKPACK-dog.png | Bin 10978 -> 0 bytes .../security.rsi/equipped-SUITSTORAGE-dog.png | Bin 10978 -> 0 bytes .../Tanks/Jetpacks/security.rsi/meta.json | 18 +------ .../security.rsi/on-equipped-BACKPACK-dog.png | Bin 10978 -> 0 bytes .../on-equipped-SUITSTORAGE-dog.png | Bin 10978 -> 0 bytes .../void.rsi/equipped-BACKPACK-dog.png | Bin 10464 -> 0 bytes .../void.rsi/equipped-SUITSTORAGE-dog.png | Bin 10464 -> 0 bytes .../Objects/Tanks/Jetpacks/void.rsi/meta.json | 18 +------ .../void.rsi/on-equipped-BACKPACK-dog.png | Bin 10495 -> 0 bytes .../void.rsi/on-equipped-SUITSTORAGE-dog.png | Bin 10495 -> 0 bytes 172 files changed, 63 insertions(+), 543 deletions(-) delete mode 100644 Resources/Textures/Clothing/Eyes/Glasses/commandglasses.rsi/equipped-EYES-dog.png delete mode 100644 Resources/Textures/Clothing/Eyes/Glasses/meson.rsi/equipped-EYES-dog.png delete mode 100644 Resources/Textures/Clothing/Eyes/Glasses/meson.rsi/equipped-EYES-secdog.png delete mode 100644 Resources/Textures/Clothing/Eyes/Glasses/science.rsi/equipped-EYES-dog.png delete mode 100644 Resources/Textures/Clothing/Eyes/Glasses/secglasses.rsi/equipped-EYES-dog.png delete mode 100644 Resources/Textures/Clothing/Eyes/Glasses/secglasses.rsi/equipped-EYES-secdog.png delete mode 100644 Resources/Textures/Clothing/Eyes/Glasses/sunglasses.rsi/equipped-EYES-dog.png delete mode 100644 Resources/Textures/Clothing/Eyes/Glasses/sunglasses.rsi/equipped-EYES-secdog.png delete mode 100644 Resources/Textures/Clothing/Eyes/Hud/beergoggles.rsi/equipped-EYES-dog.png delete mode 100644 Resources/Textures/Clothing/Eyes/Hud/command.rsi/equipped-EYES-dog.png delete mode 100644 Resources/Textures/Clothing/Eyes/Hud/med.rsi/equipped-EYES-dog.png delete mode 100644 Resources/Textures/Clothing/Eyes/Hud/medpatch.rsi/equipped-EYES-dog.png delete mode 100644 Resources/Textures/Clothing/Eyes/Hud/sec.rsi/equipped-EYES-dog.png delete mode 100644 Resources/Textures/Clothing/Eyes/Hud/secpatch.rsi/equipped-EYES-dog.png delete mode 100644 Resources/Textures/Clothing/Eyes/Hud/synd.rsi/equipped-EYES-dog.png delete mode 100644 Resources/Textures/Clothing/Eyes/Hud/syndagent.rsi/equipped-EYES-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/equipped-head-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/equipped-head-light-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/equipped-head-unshaded-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/capspace.rsi/off-equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/capspace.rsi/on-equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/equipped-head-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/equipped-head-light-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/equipped-head-unshaded-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/equipped-head-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/equipped-head-light-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/equipped-head-unshaded-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/goliathhelm.rsi/equipped-head-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/goliathhelm.rsi/equipped-head-light-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/goliathhelm.rsi/equipped-head-unshaded-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/off-equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/medical.rsi/on-equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/paramedhelm.rsi/equipped-head-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/paramedhelm.rsi/equipped-head-light-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/off-equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/on-equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/off-equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/salvage.rsi/on-equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/spatiohelm.rsi/equipped-head-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/spatiohelm.rsi/equipped-head-light-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/spatiohelm.rsi/equipped-head-unshaded-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/off-equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/on-equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/syndiecommander.rsi/off-equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/syndiecommander.rsi/on-equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/syndieelite.rsi/off-equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/syndieelite.rsi/on-equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/off-equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/on-equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hats/redwizard.rsi/equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hats/violetwizard.rsi/equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Helmets/atmos_firehelmet.rsi/off-equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Helmets/atmos_firehelmet.rsi/on-equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/Head/Hoods/iansuit.rsi/equipped-HELMET-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/captain_carapace.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/security.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Armor/security_slim.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/atmospherics.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/capspace.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering-white.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/goliath.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/rd.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/security.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/spatio.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/syndicate.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiecommander.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/syndieelite.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Hardsuits/wizard.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/redwizard.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Misc/violetwizard.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Suits/atmos_firesuit.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Suits/eva.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Clothing/OuterClothing/Suits/iansuit.rsi/equipped-OUTERCLOTHING-dog.png delete mode 100644 Resources/Textures/Objects/Tanks/Jetpacks/black.rsi/equipped-BACKPACK-dog.png delete mode 100644 Resources/Textures/Objects/Tanks/Jetpacks/black.rsi/on-equipped-BACKPACK-dog.png delete mode 100644 Resources/Textures/Objects/Tanks/Jetpacks/blue.rsi/equipped-BACKPACK-dog.png delete mode 100644 Resources/Textures/Objects/Tanks/Jetpacks/blue.rsi/on-equipped-BACKPACK-dog.png delete mode 100644 Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/equipped-BACKPACK-dog.png delete mode 100644 Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/equipped-SUITSTORAGE-dog.png delete mode 100644 Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/on-equipped-BACKPACK-dog.png delete mode 100644 Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/on-equipped-SUITSTORAGE-dog.png delete mode 100644 Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/equipped-BACKPACK-dog.png delete mode 100644 Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/equipped-SUITSTORAGE-dog.png delete mode 100644 Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/on-equipped-BACKPACK-dog.png delete mode 100644 Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/on-equipped-SUITSTORAGE-dog.png delete mode 100644 Resources/Textures/Objects/Tanks/Jetpacks/security.rsi/equipped-BACKPACK-dog.png delete mode 100644 Resources/Textures/Objects/Tanks/Jetpacks/security.rsi/equipped-SUITSTORAGE-dog.png delete mode 100644 Resources/Textures/Objects/Tanks/Jetpacks/security.rsi/on-equipped-BACKPACK-dog.png delete mode 100644 Resources/Textures/Objects/Tanks/Jetpacks/security.rsi/on-equipped-SUITSTORAGE-dog.png delete mode 100644 Resources/Textures/Objects/Tanks/Jetpacks/void.rsi/equipped-BACKPACK-dog.png delete mode 100644 Resources/Textures/Objects/Tanks/Jetpacks/void.rsi/equipped-SUITSTORAGE-dog.png delete mode 100644 Resources/Textures/Objects/Tanks/Jetpacks/void.rsi/on-equipped-BACKPACK-dog.png delete mode 100644 Resources/Textures/Objects/Tanks/Jetpacks/void.rsi/on-equipped-SUITSTORAGE-dog.png diff --git a/Resources/Prototypes/Entities/Clothing/Eyes/specific.yml b/Resources/Prototypes/Entities/Clothing/Eyes/specific.yml index 0abe003d5a0..fd8e4a779ac 100644 --- a/Resources/Prototypes/Entities/Clothing/Eyes/specific.yml +++ b/Resources/Prototypes/Entities/Clothing/Eyes/specific.yml @@ -7,8 +7,7 @@ components: - type: FlashImmunity - type: Tag - tags: # intentionally no WhitelistChameleon tag - - PetWearable + tags: [] # ignore "WhitelistChameleon" tag - type: Sprite sprite: Clothing/Eyes/Glasses/sunglasses.rsi - type: Clothing diff --git a/Resources/Prototypes/Entities/Clothing/Head/eva-helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/eva-helmets.yml index 5de1e360c96..19da93184a6 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/eva-helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/eva-helmets.yml @@ -89,16 +89,12 @@ - state: equipped-head-light head-vox: - state: equipped-head-light-vox - head-dog: - - state: equipped-head-light-dog - type: Clothing clothingVisuals: head: - state: equipped-head head-vox: - state: equipped-head-vox - head-dog: - - state: equipped-head-dog - type: TemperatureProtection heatingCoefficient: 0.1 coolingCoefficient: 0.1 @@ -113,6 +109,5 @@ color: "#00ffff" - type: Tag tags: - - CorgiWearable - HelmetEVA - WhitelistChameleon diff --git a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml index e6f80e68d85..0e9600daa4d 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml @@ -39,9 +39,6 @@ head-reptilian: - state: equipped-head-light-reptilian shader: unshaded - head-dog: - - state: equipped-head-light-dog - shader: unshaded - type: Clothing clothingVisuals: head: @@ -60,10 +57,6 @@ - state: equipped-head-reptilian - state: equipped-head-unshaded-reptilian shader: unshaded - head-dog: - - state: equipped-head-dog - - state: equipped-head-unshaded-dog - shader: unshaded - type: PointLight color: "#adffe6" - type: PressureProtection @@ -76,7 +69,6 @@ reduction: 0.2 - type: Tag tags: - - CorgiWearable - WhitelistChameleon #Engineering Hardsuit @@ -113,9 +105,6 @@ head-reptilian: - state: equipped-head-light-reptilian shader: unshaded - head-dog: - - state: equipped-head-light-dog - shader: unshaded - type: Clothing clothingVisuals: head: @@ -134,10 +123,6 @@ - state: equipped-head-reptilian - state: equipped-head-unshaded-reptilian shader: unshaded - head-dog: - - state: equipped-head-dog - - state: equipped-head-unshaded-dog - shader: unshaded - type: PointLight color: "#ffdbad" - type: PressureProtection @@ -145,7 +130,6 @@ lowPressureMultiplier: 1000 - type: Tag tags: - - CorgiWearable - WhitelistChameleon #Spationaut Hardsuit @@ -181,9 +165,6 @@ head-reptilian: - state: equipped-head-light-reptilian shader: unshaded - head-dog: - - state: equipped-head-light-dog - shader: unshaded - type: Clothing clothingVisuals: head: @@ -202,10 +183,6 @@ - state: equipped-head-reptilian - state: equipped-head-unshaded-reptilian shader: unshaded - head-dog: - - state: equipped-head-dog - - state: equipped-head-unshaded-dog - shader: unshaded - type: PointLight radius: 6 - type: PressureProtection @@ -213,7 +190,6 @@ lowPressureMultiplier: 1000 - type: Tag tags: - - CorgiWearable - WhitelistChameleon #Salvage Hardsuit @@ -235,7 +211,6 @@ energy: 3 - type: Tag tags: - - CorgiWearable - WhitelistChameleon #Goliath Hardsuit @@ -268,9 +243,6 @@ head-reptilian: - state: equipped-head-light-reptilian shader: unshaded - head-dog: - - state: equipped-head-light-dog - shader: unshaded - type: Clothing clothingVisuals: head: @@ -285,10 +257,6 @@ - state: equipped-head-reptilian - state: equipped-head-unshaded-reptilian shader: unshaded - head-dog: - - state: equipped-head-dog - - state: equipped-head-unshaded-dog - shader: unshaded - type: PointLight radius: 6 - type: PressureProtection @@ -296,7 +264,6 @@ lowPressureMultiplier: 1000 - type: Tag tags: - - CorgiWearable - WhitelistChameleon #Maxim Hardsuit @@ -347,7 +314,6 @@ Heat: 0.9 - type: Tag tags: - - CorgiWearable - WhitelistChameleon #Brigmedic Hardsuit @@ -416,7 +382,6 @@ lowPressureMultiplier: 1000 - type: Tag tags: - - CorgiWearable - WhitelistChameleon #Chief Engineer's Hardsuit @@ -453,9 +418,6 @@ head-reptilian: - state: equipped-head-light-reptilian shader: unshaded - head-dog: - - state: equipped-head-light-dog - shader: unshaded - type: Clothing clothingVisuals: head: @@ -474,10 +436,6 @@ - state: equipped-head-reptilian - state: equipped-head-unshaded-reptilian shader: unshaded - head-dog: - - state: equipped-head-dog - - state: equipped-head-unshaded-dog - shader: unshaded - type: PointLight color: "#daffad" - type: PressureProtection @@ -487,7 +445,6 @@ reduction: 0.2 - type: Tag tags: - - CorgiWearable - WhitelistChameleon #Chief Medical Officer's Hardsuit @@ -508,7 +465,6 @@ lowPressureMultiplier: 1000 - type: Tag tags: - - CorgiWearable - WhitelistChameleon #Research Director's Hardsuit @@ -529,7 +485,6 @@ lowPressureMultiplier: 1000 - type: Tag tags: - - CorgiWearable - WhitelistChameleon #Head of Security's hardsuit @@ -601,7 +556,6 @@ Heat: 0.9 - type: Tag tags: - - CorgiWearable - WhitelistChameleon #Blood-red Medic Hardsuit @@ -658,7 +612,6 @@ Heat: 0.9 - type: Tag tags: - - CorgiWearable - WhitelistChameleon #Syndicate Commander Hardsuit @@ -686,7 +639,6 @@ Heat: 0.9 - type: Tag tags: - - CorgiWearable - WhitelistChameleon #Cybersun Juggernaut Hardsuit @@ -712,7 +664,6 @@ Heat: 0.9 - type: Tag tags: - - CorgiWearable - WhitelistChameleon #Wizard Hardsuit @@ -740,7 +691,6 @@ Heat: 0.9 - type: Tag tags: - - CorgiWearable - WhitelistChameleon #Organic Space Suit diff --git a/Resources/Prototypes/Entities/Clothing/Head/hats.yml b/Resources/Prototypes/Entities/Clothing/Head/hats.yml index 289958b3491..db38d3c40a9 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hats.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hats.yml @@ -538,7 +538,6 @@ - type: Tag tags: - PetWearable - - CorgiWearable - ClothMade - WhitelistChameleon @@ -743,7 +742,6 @@ - type: Tag tags: - PetWearable - - CorgiWearable - ClothMade - WhitelistChameleon @@ -778,7 +776,6 @@ - type: Tag tags: - PetWearable - - CorgiWearable - WhitelistChameleon - ClothMade - Recyclable diff --git a/Resources/Prototypes/Entities/Clothing/Head/helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/helmets.yml index 574e76d9ba1..46a5c521bfa 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/helmets.yml @@ -315,7 +315,6 @@ tags: - WhitelistChameleon - FireHelmet - - CorgiWearable - type: HideLayerClothing layers: Hair: HEAD diff --git a/Resources/Prototypes/Entities/Clothing/Head/hoods.yml b/Resources/Prototypes/Entities/Clothing/Head/hoods.yml index 1eec4107efa..21d8d06b3f7 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hoods.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hoods.yml @@ -206,7 +206,6 @@ - Hair - type: Tag tags: - - CorgiWearable - ClothMade - WhitelistChameleon diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml index fbd515475bf..e1cdba065e1 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml @@ -31,7 +31,6 @@ components: - type: Tag tags: - - CorgiWearable - WhitelistChameleon #Alternate / slim basic armor vest @@ -131,7 +130,6 @@ sprite: Clothing/OuterClothing/Armor/captain_carapace.rsi - type: Tag tags: - - CorgiWearable - WhitelistChameleon - type: entity diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml index 5f171b39a48..e0d956ee59c 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml @@ -38,7 +38,6 @@ clothingPrototype: ClothingHeadHelmetHardsuitAtmos - type: Tag tags: - - CorgiWearable - Hardsuit - WhitelistChameleon @@ -75,7 +74,6 @@ clothingPrototype: ClothingHeadHelmetHardsuitEngineering - type: Tag tags: - - CorgiWearable - Hardsuit - WhitelistChameleon @@ -112,7 +110,6 @@ - Hardsuit - WhitelistChameleon - HardsuitSpatio - - CorgiWearable #Salvage Hardsuit - type: entity @@ -147,7 +144,6 @@ clothingPrototype: ClothingHeadHelmetHardsuitSalvage - type: Tag tags: - - CorgiWearable - Hardsuit - WhitelistChameleon @@ -187,7 +183,6 @@ node: hardsuitGoliath - type: Tag tags: - - CorgiWearable - Hardsuit - WhitelistChameleon @@ -256,7 +251,6 @@ clothingPrototype: ClothingHeadHelmetHardsuitSecurity - type: Tag tags: - - CorgiWearable - Hardsuit - WhitelistChameleon @@ -351,7 +345,6 @@ clothingPrototype: ClothingHeadHelmetHardsuitCap - type: Tag tags: - - CorgiWearable - Hardsuit - WhitelistChameleon @@ -390,7 +383,6 @@ clothingPrototype: ClothingHeadHelmetHardsuitEngineeringWhite - type: Tag tags: - - CorgiWearable - Hardsuit - WhitelistChameleon @@ -422,7 +414,6 @@ clothingPrototype: ClothingHeadHelmetHardsuitMedical - type: Tag tags: - - CorgiWearable - Hardsuit - WhitelistChameleon @@ -463,7 +454,6 @@ tags: - WhitelistChameleon - HighRiskItem - - CorgiWearable - Hardsuit - type: ToggleableClothing clothingPrototype: ClothingHeadHelmetHardsuitRd @@ -578,7 +568,6 @@ - MonkeyWearable - Hardsuit - WhitelistChameleon - - CorgiWearable - ScurretWearable - type: StaticPrice price: 5000 @@ -643,7 +632,6 @@ clothingPrototype: ClothingHeadHelmetHardsuitSyndieElite - type: Tag tags: - - CorgiWearable - Hardsuit - WhitelistChameleon @@ -682,7 +670,6 @@ clothingPrototype: ClothingHeadHelmetHardsuitSyndieCommander - type: Tag tags: - - CorgiWearable - Hardsuit - WhitelistChameleon @@ -722,7 +709,6 @@ - type: Tag tags: - MonkeyWearable - - CorgiWearable - Hardsuit - WhitelistChameleon @@ -759,7 +745,6 @@ clothingPrototype: ClothingHeadHelmetHardsuitWizard - type: Tag tags: - - CorgiWearable - Hardsuit - WhitelistChameleon diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/misc.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/misc.yml index 057203f0b42..f79e251e541 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/misc.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/misc.yml @@ -202,7 +202,6 @@ sprite: Clothing/OuterClothing/Misc/violetwizard.rsi - type: Tag tags: - - CorgiWearable - WhitelistChameleon - type: entity @@ -232,7 +231,6 @@ sprite: Clothing/OuterClothing/Misc/redwizard.rsi - type: Tag tags: - - CorgiWearable - WhitelistChameleon - type: entity diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/softsuits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/softsuits.yml index 761c0e715f9..3f55f1204e7 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/softsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/softsuits.yml @@ -13,7 +13,6 @@ tags: - SuitEVA - MonkeyWearable - - CorgiWearable - WhitelistChameleon #Syndicate EVA @@ -171,5 +170,4 @@ toggleable-clothing: !type:ContainerSlot {} - type: Tag tags: - - CorgiWearable - WhitelistChameleon diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml index 4625aa1106b..5dffcb8aadc 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/suits.yml @@ -110,7 +110,6 @@ slots: WITHOUT_POCKET - type: Tag tags: - - CorgiWearable - WhitelistChameleon - type: HideLayerClothing slots: @@ -288,7 +287,6 @@ slots: WITHOUT_POCKET - type: Tag tags: - - CorgiWearable - WhitelistChameleon - type: AddAccentClothing accent: BarkAccent diff --git a/Resources/Textures/Clothing/Eyes/Glasses/commandglasses.rsi/equipped-EYES-dog.png b/Resources/Textures/Clothing/Eyes/Glasses/commandglasses.rsi/equipped-EYES-dog.png deleted file mode 100644 index d2cc2dd335434b31d6c9926684e1670bb6abd435..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3077 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 T*zYQJ00000NkvXXu0mjfxP#0v diff --git a/Resources/Textures/Clothing/Eyes/Glasses/commandglasses.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Glasses/commandglasses.rsi/meta.json index 23a75bc949d..0939e536163 100644 --- a/Resources/Textures/Clothing/Eyes/Glasses/commandglasses.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Glasses/commandglasses.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da, edited by Ghagliiarghii, equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem. equipped-EYES-dog from equipped-EYES by Sparlight (GitHub).", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da, edited by Ghagliiarghii, equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem.", "size": { "x": 32, "y": 32 @@ -18,10 +18,6 @@ "name": "equipped-EYES-arachnid", "directions": 4 }, - { - "name": "equipped-EYES-dog", - "directions": 4 - }, { "name": "equipped-EYES-hamster", "directions": 4 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/meson.rsi/equipped-EYES-dog.png b/Resources/Textures/Clothing/Eyes/Glasses/meson.rsi/equipped-EYES-dog.png deleted file mode 100644 index 4927dd327b1ebe3246318b8cad4ed33c16b7fbda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3154 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 sFuaBtnn8+BdI?Y-ueVd6 z#IgFUq#1#M0WQtWuFj4kF3A#4l6bQwTwQd1{ek||d%ZleFI-YEanY^i{mZ_UZ7r)~ z0E=Mm+ge@4?cY}{aG860=llNWbDlq)^Sr@!#?_*<+bmB$xhji%sGh!9JMOx6URA** z|8gJWudN?yTI!Eqw>1lWe=KzU|L=b-t%N*-nWJ}q*s@I8^du6fAwzf>)YGy|8g8`W?pDB?U6>&!!x$|GH=Q6#)kZMiv6Zj&%)zGagL27;}B9)|w9yD_^|U3jQEv z_cFkB|A&hg+M~PYAA{F?<6CE`k+b(>wjoF=Aa9U!fu*}xT= w(pSFCs^H?*JsMr>jP9Rf$iZfBUQ7bBAG1?2m*UNbzz}EfboFyt=akR{0Q|*U?EnA( diff --git a/Resources/Textures/Clothing/Eyes/Glasses/meson.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Glasses/meson.rsi/meta.json index 0e72b33a945..153cef06c94 100644 --- a/Resources/Textures/Clothing/Eyes/Glasses/meson.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Glasses/meson.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da. equipped-EYES-secdog modified from equipped-EYES by TJohnson. Equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem. equipped-EYES-dog modified from equipped-EYES by Sparlight (GitHub).", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da. Equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem.", "size": { "x": 32, "y": 32 @@ -18,18 +18,10 @@ "name": "equipped-EYES-arachnid", "directions": 4 }, - { - "name": "equipped-EYES-dog", - "directions": 4 - }, { "name": "equipped-EYES-moth", "directions": 4 }, - { - "name": "equipped-EYES-secdog", - "directions": 4 - }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/science.rsi/equipped-EYES-dog.png b/Resources/Textures/Clothing/Eyes/Glasses/science.rsi/equipped-EYES-dog.png deleted file mode 100644 index f7a1e61d177978b56a488dcb3cec3fc0003204c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3145 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 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/science.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Glasses/science.rsi/meta.json index 22d544c3573..153cef06c94 100644 --- a/Resources/Textures/Clothing/Eyes/Glasses/science.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Glasses/science.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da. Equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem. equipped-EYES-dog modified from equipped-EYES by Sparlight (GitHub).", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da. Equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem.", "size": { "x": 32, "y": 32 @@ -18,10 +18,6 @@ "name": "equipped-EYES-arachnid", "directions": 4 }, - { - "name": "equipped-EYES-dog", - "directions": 4 - }, { "name": "equipped-EYES-moth", "directions": 4 diff --git a/Resources/Textures/Clothing/Eyes/Glasses/secglasses.rsi/equipped-EYES-dog.png b/Resources/Textures/Clothing/Eyes/Glasses/secglasses.rsi/equipped-EYES-dog.png deleted file mode 100644 index 9b9cd4abf3920e92149bcdc82aea692f88ad3b7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3084 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 jBf6Xj%U~w$5xl_=q^VJmrYZd$=xzp2S3j3^P6 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 diff --git a/Resources/Textures/Clothing/Eyes/Hud/beergoggles.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Hud/beergoggles.rsi/meta.json index 735b7cb6cac..8da51bfa184 100644 --- a/Resources/Textures/Clothing/Eyes/Hud/beergoggles.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Hud/beergoggles.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da. Equipped-EYES-arachnid and equipped-EYES-moth motified from equipped-EYES, inhand-left and inhand-right modified from inhand-left and inhand-right from the glasses folder by HTMLSystem. equipped-EYES-dog modified from equipped-EYES by Sparlight (GitHub).", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da. Equipped-EYES-arachnid and equipped-EYES-moth motified from equipped-EYES, inhand-left and inhand-right modified from inhand-left and inhand-right from the glasses folder by HTMLSystem.", "size": { "x": 32, "y": 32 @@ -18,10 +18,6 @@ "name": "equipped-EYES-arachnid", "directions": 4 }, - { - "name": "equipped-EYES-dog", - "directions": 4 - }, { "name": "equipped-EYES-moth", "directions": 4 diff --git a/Resources/Textures/Clothing/Eyes/Hud/command.rsi/equipped-EYES-dog.png b/Resources/Textures/Clothing/Eyes/Hud/command.rsi/equipped-EYES-dog.png deleted file mode 100644 index ac4d7faf0426c2300fff10a2c8a220fa03f53d3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3150 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 diff --git a/Resources/Textures/Clothing/Eyes/Hud/command.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Hud/command.rsi/meta.json index 1a78e463334..16a079133ac 100644 --- a/Resources/Textures/Clothing/Eyes/Hud/command.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Hud/command.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da, edited by SlamBamActionman, equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem. equipped-eyes-dog from equipped-EYES by Sparlight (GitHub).", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da, edited by SlamBamActionman, equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem.", "size": { "x": 32, "y": 32 @@ -18,10 +18,6 @@ "name": "equipped-EYES-arachnid", "directions": 4 }, - { - "name": "equipped-EYES-dog", - "directions": 4 - }, { "name": "equipped-EYES-moth", "directions": 4 diff --git a/Resources/Textures/Clothing/Eyes/Hud/med.rsi/equipped-EYES-dog.png b/Resources/Textures/Clothing/Eyes/Hud/med.rsi/equipped-EYES-dog.png deleted file mode 100644 index 5405ded5fbcaed10f3d0be7b8d1f332fd6094b35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3134 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 YFZj4R5mZ>W>i_@%07*qoM6N<$f=!3sfB*mh diff --git a/Resources/Textures/Clothing/Eyes/Hud/med.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Hud/med.rsi/meta.json index 22d544c3573..153cef06c94 100644 --- a/Resources/Textures/Clothing/Eyes/Hud/med.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Hud/med.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da. Equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem. equipped-EYES-dog modified from equipped-EYES by Sparlight (GitHub).", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da. Equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem.", "size": { "x": 32, "y": 32 @@ -18,10 +18,6 @@ "name": "equipped-EYES-arachnid", "directions": 4 }, - { - "name": "equipped-EYES-dog", - "directions": 4 - }, { "name": "equipped-EYES-moth", "directions": 4 diff --git a/Resources/Textures/Clothing/Eyes/Hud/medpatch.rsi/equipped-EYES-dog.png b/Resources/Textures/Clothing/Eyes/Hud/medpatch.rsi/equipped-EYES-dog.png deleted file mode 100644 index 7f9147007058abe462c14e43d0f6203b6a76cd4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3077 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 T$p@`S00000NkvXXu0mjfC diff --git a/Resources/Textures/Clothing/Eyes/Hud/medpatch.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Hud/medpatch.rsi/meta.json index d43294c8b5c..baf985ec5b5 100644 --- a/Resources/Textures/Clothing/Eyes/Hud/medpatch.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Hud/medpatch.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da , edited by Alekshhh. Equipped-EYES-moth modified from equipped-EYES by HTMLSystem. equipped-EYES-dog modified from equipped-EYES by Sparlight (GitHub).", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da , edited by Alekshhh. Equipped-EYES-moth modified from equipped-EYES by HTMLSystem.", "size": { "x": 32, "y": 32 @@ -14,10 +14,6 @@ "name": "equipped-EYES", "directions": 4 }, - { - "name": "equipped-EYES-dog", - "directions": 4 - }, { "name": "equipped-EYES-moth", "directions": 4 diff --git a/Resources/Textures/Clothing/Eyes/Hud/sec.rsi/equipped-EYES-dog.png b/Resources/Textures/Clothing/Eyes/Hud/sec.rsi/equipped-EYES-dog.png deleted file mode 100644 index ff121a5eaebe5d837042ec465abaea23a66fc6af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3138 zcmV-I488M-P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+HFx$4#OY_{pS=rf&yANj$ONCH`wuq!n)d�R|B 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 diff --git a/Resources/Textures/Clothing/Eyes/Hud/sec.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Hud/sec.rsi/meta.json index 22d544c3573..153cef06c94 100644 --- a/Resources/Textures/Clothing/Eyes/Hud/sec.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Hud/sec.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da. Equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem. equipped-EYES-dog modified from equipped-EYES by Sparlight (GitHub).", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/5a73e8f825ff279e82949b9329783a9e3070e2da. Equipped-EYES-arachnid and equipped-EYES-moth modified from equipped-EYES by HTMLSystem.", "size": { "x": 32, "y": 32 @@ -18,10 +18,6 @@ "name": "equipped-EYES-arachnid", "directions": 4 }, - { - "name": "equipped-EYES-dog", - "directions": 4 - }, { "name": "equipped-EYES-moth", "directions": 4 diff --git a/Resources/Textures/Clothing/Eyes/Hud/secpatch.rsi/equipped-EYES-dog.png b/Resources/Textures/Clothing/Eyes/Hud/secpatch.rsi/equipped-EYES-dog.png deleted file mode 100644 index c1ec23b908b45f476940715f0b395eaa0fa142c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3080 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 Wn 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 LNkvXXu0mjf0#N;4 diff --git a/Resources/Textures/Clothing/Eyes/Hud/synd.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Hud/synd.rsi/meta.json index bbd576955ba..275a022805e 100644 --- a/Resources/Textures/Clothing/Eyes/Hud/synd.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Hud/synd.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Made by IntegerTempest. Equipped-EYES-arachnid modified from equipped-EYES by HTMLSystem. equipped-EYES-dog modified from equipped-EYES by Sparlight (GitHub).", + "copyright": "Made by IntegerTempest. Equipped-EYES-arachnid modified from equipped-EYES by HTMLSystem.", "size": { "x": 32, "y": 32 @@ -18,10 +18,6 @@ "name": "equipped-EYES-arachnid", "directions": 4 }, - { - "name": "equipped-EYES-dog", - "directions": 4 - }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/Eyes/Hud/syndagent.rsi/equipped-EYES-dog.png b/Resources/Textures/Clothing/Eyes/Hud/syndagent.rsi/equipped-EYES-dog.png deleted file mode 100644 index 9dc1c35560e7f85687d77fe8c055d6e37847852f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3167 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 FV1h8G`#=By diff --git a/Resources/Textures/Clothing/Eyes/Hud/syndagent.rsi/meta.json b/Resources/Textures/Clothing/Eyes/Hud/syndagent.rsi/meta.json index 5f792205e4b..41abc4bd089 100644 --- a/Resources/Textures/Clothing/Eyes/Hud/syndagent.rsi/meta.json +++ b/Resources/Textures/Clothing/Eyes/Hud/syndagent.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Made by IntegerTempest, edited by Golinth. Equipped-EYES-arachnid modified from equipped-EYES by HTMLSystem. equipped-EYES-dog modified from equipped-EYES by Sparlight (GitHub).", + "copyright": "Made by IntegerTempest, edited by Golinth. Equipped-EYES-arachnid modified from equipped-EYES by HTMLSystem.", "size": { "x": 32, "y": 32 @@ -18,10 +18,6 @@ "name": "equipped-EYES-arachnid", "directions": 4 }, - { - "name": "equipped-EYES-dog", - "directions": 4 - }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/equipped-head-dog.png b/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/equipped-head-dog.png deleted file mode 100644 index 7be5db6f10ca4724c4e1539dce7a6413c4eea60e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3785 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 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/equipped-head-light-dog.png b/Resources/Textures/Clothing/Head/Hardsuits/atmospherics.rsi/equipped-head-light-dog.png deleted file mode 100644 index f385d0bfc8324d4c7801ea1e8506b69874dfeb38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3472 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 WYz`m>flI-YL6oPfpUXO@geCwAQ!-=# diff --git a/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/meta.json index a51bf6774f7..2633850acce 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from Paradise SS13 at commit https://github.com/ParadiseSS13/Paradise/commit/a67c929b7394f78e7787114457ba42f4df6cc3a1. Vox state by Flareguy for SS14. monkey state made by MercerBray for Ss14. equipped-HELMET-dog modified from equipped-HELMET by casiliuscestus (GitHub) for SS14. Reptilian state by TiniestShark (Github)", + "copyright": "Taken from Paradise SS13 at commit https://github.com/ParadiseSS13/Paradise/commit/a67c929b7394f78e7787114457ba42f4df6cc3a1. Vox state by Flareguy for SS14. monkey state made by MercerBray for Ss14. Reptilian state by TiniestShark (Github)", "size": { "x": 32, "y": 32 @@ -25,10 +25,6 @@ { "name": "equipped-HELMET-monkey", "directions": 4 - }, - { - "name": "equipped-HELMET-dog", - "directions": 4 } ] } diff --git a/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/equipped-head-dog.png b/Resources/Textures/Clothing/Head/Hardsuits/engineering-white.rsi/equipped-head-dog.png deleted file mode 100644 index 790bc22e851873d963bd9f0ebe03859af5358b50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8002 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 UG&+|?KL7v#07*qoM6N<$f_%nwe*gdg diff --git a/Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/meta.json index 5a3a068eacf..9e429eb554e 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/engineering.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Vox states by Flareguy for Space Station 14. Dog states modified from base states by Sparlight (GitHub). Vulpkanin and Reptilian states by TiniestShark (github).", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Vox states by Flareguy for Space Station 14. Vulpkanin and Reptilian states by TiniestShark (github).", "size": { "x": 32, "y": 32 @@ -55,18 +55,6 @@ "name": "equipped-head-unshaded-reptilian", "directions": 4 }, - { - "name": "equipped-head-dog", - "directions": 4 - }, - { - "name": "equipped-head-light-dog", - "directions": 4 - }, - { - "name": "equipped-head-unshaded-dog", - "directions": 4 - }, { "name": "equipped-head-light-vulpkanin", "directions": 4 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/goliathhelm.rsi/equipped-head-dog.png b/Resources/Textures/Clothing/Head/Hardsuits/goliathhelm.rsi/equipped-head-dog.png deleted file mode 100644 index f598c03128920484d04563f1f16f428c6ffa8e80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11721 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
UGf`3~Li*KsR&06w>vC{vx~D)@DV;s&<=vw2 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 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/goliathhelm.rsi/equipped-head-light-dog.png b/Resources/Textures/Clothing/Head/Hardsuits/goliathhelm.rsi/equipped-head-light-dog.png deleted file mode 100644 index fc71090d1b889245ac0800451d56079ef177e209..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9293 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 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/goliathhelm.rsi/equipped-head-unshaded-dog.png b/Resources/Textures/Clothing/Head/Hardsuits/goliathhelm.rsi/equipped-head-unshaded-dog.png deleted file mode 100644 index 54ae299c6f81d9be7596d30b054e425da68d878f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3919 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 d00013!2=pq8It;Im~a39002ovPDHLkV1l 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 e1VIo4A%fq2--;JT4Au4k0000 zaB^>EX>4U6ba`-PAZ2)IW&i+q+HFy74#OY_{m&_O1O=pc9J_YOZm{DIg>|**OZa@| z2@3n?{enjaq5zjgrHUj2SFYGB(d1~u=fuMga8OoHeK-iT7Fi@ORpR`wpAP{K&9ZV5 z(q|CsOw_mm^&*5Gs87`MErejW7@)NybW8-A~66^n2hK0_}N?;7s)t1SDYocPsy0JG)>MhO3or#f-+W< zbMh=(eD;}T4>|KPgghC`bI#&r@Z{Vln1D3aVR=5teIY%ODwC^CXA<9Pt!NXcLD(l1!d&lAfJ#m>xHE)pcCh#4kaQ-+O` z6N}-`&rRox#mq1cH;p6WG1!?ISsdYV0A|npSrmC~8L}cf*f=>jFl{Yuz9`gxUHqGp z_jZs@_@A2i55xYX*}0a9+V~OB zmRJI%AsRq_9snpR5g-YBWGm3`eGA4%1NqI1(V3W?`_F>@eOI_l{>T<2e~x2EL^8M% zQO@j|{8|DuAOJ-`1L{B<=mQhL1h&8txBw5}0|G%Phy-z9G2ns}kO4#>7ZiZCpcs^b ztzajp26dnjG=ny97<7SS;50Y~E`iHn1l$2qFb|bE`qnfm2d-m5blIe!5F9q6;@5%f6v6$XQ$V~jD57=KJ0 zCKa;+vl+7+(~dcX8ODrZrm zUdc#_t;A7UrBtJIROyD&v@%uMMmbbDLwU1ui}D5KM-(i@h~h)xQHm)0C}${RRD`Ne zWmCD-b<{@cS?V|qLo=oY&{Aoov~OsGv?&#eik(WdN}fuM%5fDb9ibc11L*1WGWucq zb^1G1EmcodzUn5`Hq|Stuhr(Ld8qN#O4QobM%3P^Gt_<5)6}=Acd6ggKxvq1glpt# z?9n)@@pKMtj>{bGoRT?*=iJtWHO(|5G*@Wu(;U#8*3#DU)5_AS(mJE{RGY5tp`EI| zL;HmGqz+ZbO-G=!L+7Nx`Vnidd7NDdWCxJdiV4R z`Yin<{T=$f`cnov1|bFo2CW9S4e^F7!xY0^hW&=Gjf{@^*$g(bH%l?AF&i?6%^l1I=DW>@EzlND7D9^#iyKT5 z)03IQY-NsG(k+863oW}WpII4L#anH&>bLr6ZEu}!-DrKshGG+FQ)ts;^Q*0yE!Vcj z_S#(XT;I8?=XTG1Zf9=Cx7%ZP)1GP{V!y$@*ZzZpql3ty&0*5fz%kLW*6{|5#tLI? zW}SCJJ9#;+b~@(t*4e>X?0ney7Z;{WnoEnzqj|>j`12a)jk)T%a$M_OrEUzjM7OZw^XI|D`BCigw*KB9@O7s)j>-kv;};+|5G@>IYUR12P``lr^VzD^5G+n@F+Jtn<9 z1DBDQaa2eVrV0BpwKMZFhqKJHinFB4oR{rfHYExYHDyEDi?X}LG}+J8fW$%XSL?4X zT0OqTZ_RsyNzibcgYHn?o4+lbmI*f_Xp z?xw0uA4_;87fY>6D@xyQ=5D_DmCaX`Uwzt=v}Lf&p={4q%vRyn>)YJ79Vk~W&o3X_ z9fh*SmSU zuk7*I(^jWdS6cUOuVC-ZdcXS42BU_GeVBbY`yMt%H}-$c`ntJEqp7s%!+zm@>4As? zea()|%`KWOWvy_lq;>LO!okbmcz@H~#%!x^r?;0L0*54r9)Fwo?e)V!hkK8(jRjGA)s@mE?T+gnJ{owmx5uTY<9o~R_aDFMOtW4%jy@0^J}bFDADZ}4o;+4JXo&z_2(l_5865&KHheWL@mKTr6*KgiPxFNmC zyZPu=`mN`;b8gSvS#uYCx8$DEy^8yq_ZxmR{jpu@AU!_nJv#7U!Gk+v+_5J=W&iYk zyyzkMVa0^bMDrutN5>|8Coex<_;~zD){~j1#Xl?mT>H%A*>}Hq{4y{VJ2n1X^!(GW zn_sBE*#FY*W$$#@^!-;EuV!ACyitF1;4SNI|GSuX6EnH*vF|HCn11N_81(V(r;JaZ zegpS}^ZPlV+qnP$00v@9M??Ss00000`9r&Z00009a7bBm000zC000zC0hG#(F8}}l z2XskIMF;5u8v__4B7HPw000CaNkl8_H#n^6%*E8sL&>Qp<7@Zz7)BqtwqY$D8=mB1M^APUNebm@2J4=sI zL{ph9-y33p5TXir258?fpr^BirsLH-)naF#Oo5)4JIoc{8}#Q#T#AmSGWkTv>qaHO zw;}#G(0wzJ_`qey)mVw^NELOEn*xPA>vIXS42Z=YTP7eDca&AXlmQJuE#OI|QbD)J zLuD36rIpG$8`Z@U@a+$~Hw~m2@^vSJP|AQiz$&n60n+I-0BdP@kmX@v0(M*c(Gi~p zaCF3{#o`WPaR>c@^40=diR*uE7_e~A?fyJI^Zi?{`iyTi+x+W71$T>e7~xCpBNK)9 z2Qqn~Q;RvViNy@|ck4BPsf~8m=a;v&NSACRglGYt2Rr~XGc)0YILtMt^HL^DR^PVc z_Z7`^=L*4K(6lE+I2;yUub0n8LL?Ud9qrbq9h?~slT0QFg+dmi5&$p{tOExDy1KfK zBqk<)c`=(kd%rHgy(Sm?Z!c555(h9qkna~EzbMF0jIma+~mOlETD49*|R?f7hW zr>9)3W{N*?<+lhxbRnG=v|aJhh1@=*yoXsk&K9%90}OhcL>JNwdYmPbAjQi*lBrjk zO-X{`38-!Kar*3gyz%o@?VRP1jl>-e8R0+{kXSc33S5?#}*0LGxr@LdtlAw=$p&7B+oDueo8b+qTW_0vt zrl;`wnsGXv*ek23t*%*FSP3*Yb*Vo_jYtIDPEs|JvjvmSLiSNKWYG{X4@iq0g{uV=d!Q7-|2#yMx?-E

=O{Sg4X-rTtvzu(WPxweSjn7O&RqK6pd!H387f!w(O zfKNXeHtcC&%8!e1I4q zaB^>EX>4U6ba`-PAZ2)IW&i+q+HFx$4#OY_{pS=rf&x-Jj$ONCH`wuq!n)e@CBTDc z5ES;$`vs2ZK8SpgvLOTQsWCh|q-`4Vtf&r0Q~BVcpXVb%XAd=drIjFZOy{v3m${ zr%cH_k@^7CtpK$_nwi+aOk%uPtr;(|O8CLsV{-uYeSXlO`!000UxX+uL$ zNkc;*aB^>EX>4Tx0C=38mUmQB*%pV-y*Is3k`RiN&}(Q?0!R(LNRcioF$oY#z>okU zHbhi#L{X8Z2r?+(fTKf^u_B6v0a3B*1Q|rsac~qHmPur-8Q;8l@6DUvANPK1pS{oB zXYYO1x&V;;g9XA&SP6g(p;#2*=f#MPi)Ua50Sxc}18e}`aI>>Q7WhU2nF4&+jBJ?` z_!qsp4j}paD$_rV!2tiCl(|_VF#u4QjOX(B*<2YH$v8b%oF%tU$(Xh@P0lb%&LUZY zGFFpw@+@0?_L*f5IrB1vJQ>S#&f;b8cV}o=_hCs$| zGJ-ARc>v%@$zSl&FIdda6Uz_9&dgda5+tXH875p) zhK-XGi{a1DP3Mcn%rFi&jU(bQ*qIqw9N}^RX3zXt6nSkKvLZX!I5{{lZ7prSDAa#l z{F{>Zc9vd*f9@GXANa%eSALld0I;TIwb}ZIZD|z%UF!i*yZwjFU@riQvc7c=eQ_ST zd|pz-;w)z?tK8gNO97v2DKF^n`kxMeLtlK)Qoh~qM8wF> z;&Ay4=AVc79|!(*9u^V&B)*6*lto0#rc5AAmbF{R6Nm+wLWV&2pPKj&!~Ue%xt59A z_z}>SSOTRX8bE#?04OREAPIY9E70$K3&uwS`OS;bnV6mX&w~DaSGY|6$QC4jj$=ne zGPn{^&g`1}S^_j607XCp>OdRl0~5dmw!jg%01w~;0zoK<1aV+7;DQv80Yo4d6o9p$ z7?gsoU?->sb)XS6gEnv&bb({wG&lz?fy-b7+yPQB4xWH1@CwX85QK%u5EW8~bRa{> z9I}O2kQ?L!1w#=~9FzzpLqbRb6+r8tQm7oNhU%ea=v(M0bQ-z<4MVq}QD_qS6?z9F zFbSr?TCfpp1+!pJI0%k}7s1K!GB_VDg15kxa07f0?u1Xnm*5dt3O|9T5r7a8I--j( z5f;KmLXmhR2@xTykP@TC$XgT!MMW`COq2`C9~Fh-qL!gnp*Ewc zQ3p_+s6NzH)F^5S^$|@*Yog83&gcMiEIJvTi!Mf2pqtPg=(Fe%^f>wz27{qvj4_TF ze@q-E6|(}f8M7PHjyZ)H#*AU6u~@7+)*S1K4aIV>Vr((C3VRTH5_<(Zj(vk8;&gDf zIA2^mPKYbSRp451CvaDA6Sx_?65bH+j1R^0@XPUK_(psWeh5E~pCKp{j0vuUNJ1)M zEuoUoMmS5jOL##f67`5q#Bid3xQ19sJVZQC93{RbQAlPaHYtH5A#EY;C!HeQBE2A! z$wp)kay(f~-a>9BpCR8TzfqtnSSkc4@Dx@n)F^Z+Tv2$Yh*vaJ^i*7|n6Fr&ctmkX z@u?DC$w-N<#8FzMRHJlM>4ws@GF90|IaE1Ad9!kh@&)Bb6fDJv;zQw4iYWUiXDDM- zgsM+vQ@PZ2)JE!A>NpKUGo}U5QfZ~MZ)k(GDHV!}ol3Myo=T0%aTO^Yp&QWy=;`z_ z`eFKY`a4xERZmsE>L%4T)hnv6)#j*qsPWZG)Y{cX)ZVEx)P2;`)VHa3so&E;X_#q* zYvgL|(KxH|bPjEf%N*{Uk~xRx+}4CO%`_u4S7`3j9MGKB($@0R%F?RRI-~Veo38Dl zovOV<`-JwS4pqlZN1(Gq=cLYKh6=-zkLZ@rEqJ6vJJH{f4iNjE!Q9HW+moJu+4^4lvF) zZZ*DZLN;+XS!U8;a?KQD$}&we-EDf=3^ubjOEIf48#0H@9n1yhyUm9!&=yV>LW>5A z8%z?@lbOS8WsX|XErTr!ExRnASs7TxTWz!IxB6&pZ=G)4Xnn_qViRanXwzf!tF4(W z*S5y?+FbHn-?^*jcF%ooXKu&0+hcdro@yUrzrnuO{)2;~gUF%HVbamSG10Ns@dk^= z3S(_%op(Yzc{#0iI_C7&*}+-teAxLH7p6;^ON+~+dB*ej^BU)kx$3!cTZVb0X zx4mvscU^amdxQG}4}A}wN0Y~dr>SSE=RwbBUe;bBuMV%*Y-jdL_9<_~+t0hid(emC z6XjFwbKh6bH`%w{0a^jvfaZXyK*zw9fqg-wpantIK@Wn> zfV8I2F~=-fTgudr?_nH zF76Ya2X6;&lJCkd=T9WLCY2{WN_I`&o;;c2o>GzWRKONg3!bO?r`DyuP76)jpY|y| zCcQlamywupR7eq~3Hvg&GxIWsv&^%Kv!u(Mm+f3OB?=NXWkcDEvb)7J+0WE~#6+@Q zGMeL-QhTd=lZbfxFY`c=@XrK@^Z z>#r_aJ-)_o&4IOqwP|aAD6}ptFMPQ!W?fH_R?(WGvGsoITZV0)e^+=6ZO?$0o?WWq- zyLr2>?D5#sR;N{0TK8_RVDHU(zxvJwqlSuon0-0>9yUfd_J7U#y17ZCskG_Ce&K%U zfrtZr&5q5@Et)N5t#GTPb@E`s!OP!xf79K@Y^!glx0fCQha`s{f1CL2^}|7jdylY= zw0&pzU2O-oqofn+T;4g=mC_~cj_V#i8hEs~$EBy^d&}?lAJaWnb6n+k*$Kjlq7$D^ z=AWECm38Xr>EzR6y-RxUoQXYituMT9@NCf8^XGieo$2@NKY8Bu{ILtp7mi+JUF^E# zaH(^^exTzA`yV<69R@px9EZ9uJ6-M>o;Q5riu;w*SG}*EyB2Wm(#ZUg;pqt>?FMZqM9Va~FNLGD$lbNT*KP&%S`^@CocfWZ2GB6c8HU3=m z{L`|I+Sd?{wJo{Z|>UW?q-PQGavbE$eOnyO?(qGr8}v?<+r;e(3oa^zrVe zj8C6_1NVgU`#GT7xc~qF24YJ`L;$M*0RRDraZgzQ000SaNLh0L02ECC02ECDl*)}S z00007bV*G`2k8PD7cvzgKLH*900byWL_t(|+U=TONLyDN$3M}gxiOmF7+VNQuvLlG zDBDZGK20bT3+vmELSav1utK3jTwt&#AF2#t>}egW(1*Rqp1ZM9wo=MUeUNrB(6k!t zZHA41a+j$0nrpm!aJkdjx@hkmbDR%cxaZIP{m$=ue&>X64hRH-S|~ldXaclE`plL{ zpZTgjd$rj`t^TXy{U?sp>iF_#*?N~{8R#<;pM7rCO^ysB%QC8}IzAcUaQKz}!{IQw zTyEER_oD8ggXsF`(>=@oh6s}*!#jdM2sI1vGQU9A)f=Wq^3j;+qu$?yR^G6ldVdp* zi9S4%kFKjX99afc|GKWD>pH<;kjar@g2A9wSM~ogzksbvU{>|9k)5K^C+*qKE4k6K zQ;y8KmYu>YxiJg_0K+iwdcCZzt>JdN0ci9|XxS-dRiC{Xpy>vI{5+LP1+}nDrC8ea zsD)(!j?Mq(hydH|8iv8m_D$SwH*WV|qEsps0{M9~-LN+U{O?{u`R;1~q|{>+pyk8~ zt9>z_XCw8P6ekQd!qm@%#PUY~SRA=NIwRN8}i^bxOiLz}80NlED8-RE`hAhj>%*?U6x`NNwXo)dBond-9 z^nZ(Wh^2^NnUHkvL;k1(=-t#gViZ2m}IwKp+qZ1OkCTAP@)y0)gNV zVAo{{r!QU9*=?}&@S@og=`%y2kZm?Yp%6}qV7ma9N6Rz^WUGAs`n>}WeEYY}0of4| z>YPfgbzP$;c@3?+aUc=SU%zK+|uJHtQEbQP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+HFx=4g(I2ZQ0@P>H&BP97s!0YiLpeNDaM6kuEAR2@p!akN_e! zL{xA@QIVzyGAQ7HqeGFgB8r6pQL*a;8AQ}^a1n6@-c&M->OB3Xhm zR+Dq`EL(i`nPm?-^D=}y8Ow9d;$`sU+$ZCWITF5%kzg4Y=Lq<@GQK8bgLFxTK*n$6 zu^D_$HUKD++%D#GQ)Fx{W0EK`f-U2D0N_Z;U+~f|Sj^88%MZoQ%vvrIB&UcOCR|g7 zjgu3L;m^-a=ZnS6Fb+43BjPdGnHgCe;c@_G&-_^wd2Jc8B0JbPIXEzFEp5Ii)PG(4 zo09i-mR^K^?ioZM_`~*Bewhsbu%>0T+4_fVX%zrn>j6-^{fEt9F93?NzI6_LaUQyS zUQ)#3EN3gL+}vDC0iSCrFX-?3pALURUwqF}zTNNTVR-YCIFfWRLtZy-W_qSX#K_L# zaQO`8pNIG#2mW;)77_d;zKAcBMMTS{Odw2_wOhy&hy|HKhCukAn)naH{-oKtmWkT< z5zv-c0;M4uKz<$oC@K*k343HK(C>W<#zzDB&5O~Qn4SC2g8qG1xJ>@Y79@X;V@E_X zxDrv$?3(;q0yH21ML+}UKpW@-6Tk$vz!A6r58wj=K`4j>abPjvf)tPeL?9OwfVH3) zl!C2bC#VK>pb<2KHgFhpfn(q_I0r6)%U}fD0a7pyo`5Ov3d}$dgoVfu6;g+EAVbI; zvV~ZX8{`88LlICMln5n5LP!D?K>Y--nTj(fs8oB@tL${z&XcGDrdIuvg z38ukXun}wpvtUm+2#$mo!O8G4I3F&8x4@Nf1AGwfgiphl;1O5~KY^zafDjQnqKhyQ z7Q#kCk$5Bt5h1IP5~KoYK-!QVq#wD8NRg+=TNDOGMKMrJlncrq6@}uWmZ4UmHlwOh z2T+};KGapzC~6Az5lu#GqRr9H=m2yqIvJgdE=E_No6sHTv*;1@IQkU^gP~)LF^(92 zOdKW^vjVdjvm4WnIfWUY%#V9dk}jPdj&g=eS;(7ba1vf zUtBy+h%3ZZ;977ea93~>xEZ_>-VpDM55@EF%kgFSMtl!`2tSUWAt)1!39f`lLMmY` zp_0%>I7_%octIo*^@vWyaH4>?hFD2FL_AL%CB7w5NMLy&#jx zMr03iJXuWMLT)CXA>SvzQJ^YVDg-F-6jm$LD0C`ZQFx|^S2R@gR9vi>uUMgYL~%&* zsS;kvNQte)QCg)`qjXg1hSIb$RoO;4R5?R=vvP~_1?5K+EX9c8L*Y@1DEla9C}UKF zs!wH8xzu&kM(SDWI1NKHrUlSaX{EGpXoIvV6^e?TO0-IzN{z~K6)7E|8_@&k>GU%C zVfuCYJ5?=JPgTC^Ce=38E2^*6=BRn7@zqMy+SNwX-l;Rxebm#`x2boj-_t;8m}!J- zV#`E~|8t09<>bY`U>s_U847WtL zy>3!>U3ZRqgZl#yeGi^TlgEUosb{L^LC^t4d)BzcZGt`fY9xs_ri?BmW6#EjtLJ7uL*w`VG~gh(Z7JYV9A1( z1+OB#BFiH0M43cMqI#nhqZ6W=qhH5($CSrNW36IW#$Jlkh!ezh$7AE8xdr`1lgVC7dNk648kso~Qb!)}_8q3r*Xf_9;Ck zy*&e$k(hB*ND-z9`!cmN^D>9C%(IHKq|2O_?OZk`3KBJCL)nY6yTvrw&(wg#M6zBo zn&XyJlk+AwI`>GPa-J}6V7b}yP0J_pee=Iwfm*>`(OaNfu(n`yrRU1}RnV%Xt9n=K zuP$0WzQ%9OfwhFSX={Hdv@R?!e7P=WT~Co#(VC*M^?vJHixrAR#Wyy%Y^d9a+9=pK zxM}XDs!bnDcqJE0txGFP-*4t_zW9~RSCwCV+LE+ou*{)s&sNM<;nwTh+_xPlS1!*l zAKMka+N6C(tJD2RdP+?b5w~Me#vP)VST-jY^P_?z{eRWFpNR3xbd#z^errOuL zdAqOd@z~Q=r&U*4_inFX@6CF@`pyQUhKhZdeL4FcHbyu0f6e;3xk;m`wCTfs;eP3X zhy#7ij?K+2nk{9maI2(s@?gTj%inl^)7{2wt8b^bmmUI#B!?bmEKDc(k|2rKjV2%kTFe(>+#mT;+J#3Brk@6Q54z zpPW9Gb?WKqB=X}qd>G$kEdEWK>u?x-@j$UM4?7HM| zsdK=7pyLPoA36pd20Mowhq^C2UG5p4H+rvNl-blD1 zy~(@z=vMlz=eKii&)iva7k#(np3=RF`@L<7%J7e6jCqHHX z^nSePA^Bm&gw90sBil#ECVeL_KVJBF{7Kf6nWx1+EB{>k%;ed3zj*vIFcmvB{#^9@ z)32LfsK40%((YyNblCL$R~fHnUYER4e{uvwLn0FI1x$m*>D?gZi==m7*@$RRL zPoI7R_k{ENIiTCQ00006VoOIv0RI600RN!9r;`8x010qNS#tmY6iomC6ioq?%8f4o z000McNliru=>i)72rpw#)I|UQ1?)*gK~#9!?V4?DTh$rIf5-8S?btYR?4(QVD8w-d zG<7x7S_{(9vb9}o3bzbgspXYz>bIynJfI^|D zhuradr7rF6+x9*zH-2eEt~O`zYq!g9{qPZ~OS?yxwtqeRh{T3uBsL`18e2TJOV(r0 zUC$(4+8dsE?s;}>Vdv(dK@tNu5RG?A_wYTnISohuK>rt$L^|65wgMSl+NV=OJMUER zy0ksFblpre8U==A>ZiZ>XzbttqR}YR)6?kE?%DV4JJF@>PYEsmX*OMTywnRMH^k!r zTdv!@iSGVhQoA0k%?WrK*nImQy8C;H_FN0F9oPa~?_ls7fSarBXf%p`@W97{U%`&$ z|C@Aa$3B+;Ksylkg<4ozEbMKMb<)}y!`~dh*8oPbM4-_{WJ8G7&KO;ZIO+L?y+9lY z>C$d-Ab2m3ynFu(M?79XrfFiDCgE@x{onz@;c%_bY%QT^4JDvLNK-`!-fzPX9+cvgsQz#Vh`Fs=#g<4<0@5Pur!9> zZ-x8MdTMP=(#ZD%}ic`TkpB6`{Y~4dGVQ-2u{Dlw$LJp+`rfsTEzP28@%<(7~^lB;MP6g z?@0;mZz-YWoQOUpGz%F2%X_cxSZ(~#Z+?Z9yZtNY#=aN7whLg*MR3>a#LEwD6N$5< zvS}&Jri7PtdV#5_DFCLXrbwq32#3MDAb9DqpG*S6$xR?7w3*S-(Tmmg?lUfa(3S?^ zzO&&g_RXI?GTf6A+6Qad{jZ!%CI=(bt;OFOZOAc^I%?T5xrOQTq-ja6;6hFXXv zh8_J1gwq0S{6d)z7W_PZ_$h2x0IMP}trCV+V&UWwG+Cj^)xge&_q74ld;6Bxe*N3I zLZyr?T(l03(C8L;J#IWMiB?(S$=#0uP%uo+zyF3~e!HCvzRBn1f#-fnxm3a`R*;o4 zvRDCJ*po*I2K;!1;KI4fg<~n9m6lhZbS6V*R}521%=h1<@%k?#i$!GP<&X4j zTDr1a#ME;5$)8X9n}bB!B2*e0@U*n^tKa;YYo^a(nFa;J1aLG3*5yvWnhqYX4}iNK z-9=$(39V9L=e>JwT+aO~1OQrId;WJPY?q6sK!D#r{ioWA;&kq>s{mE{k|WaN^^wVB z2sUOoeCqgDfdwG*2?B(G=G_BZU(XdoghC-K)8O6lSFhgUi@xNDT zaB^>EX>4U6ba`-PAZ2)IW&i+q+HFx=4g()6+vo4(#&^d3Sy zC{t2PBt8JyDL_L5nzm?Trmiuow@Qmu><9imIDPA|5CM1t-+5i<3>Mf-000UxX+uL$ zNkc;*aB^>EX>4Tx0C=38mUmQB*%pV-y*Is3k`RiN&}(Q?0!R(LNRcioF$oY#z>okU zHbhi#L{X8Z2r?+(fTKf^u_B6v0a3B*1Q|rsac~qHmPur-8Q;8l@6DUvANPK1pS{oB zXYYO1x&V;;g9XA&SP6g(p;#2*=f#MPi)Ua50Sxc}18e}`aI>>Q7WhU2nF4&+jBJ?` z_!qsp4j}paD$_rV!2tiCl(|_VF#u4QjOX(B*<2YH$v8b%oF%tU$(Xh@P0lb%&LUZY zGFFpw@+@0?_L*f5IrB1vJQ>S#&f;b8cV}o=_hCs$| zGJ-ARc>v%@$zSl&FIdda6Uz_9&dgda5+tXH875p) zhK-XGi{a1DP3Mcn%rFi&jU(bQ*qIqw9N}^RX3zXt6nSkKvLZX!I5{{lZ7prSDAa#l z{F{>Zc9vd*f9@GXANa%eSALld0I;TIwb}ZIZD|z%UF!i*yZwjFU@riQvc7c=eQ_ST zd|pz-;w)z?tK8gNO97v2DKF^n`kxMeLtlK)Qoh~qM8wF> z;&Ay4=AVc79|!(*9u^V&B)*6*lto0#rc5AAmbF{R6Nm+wLWV&2pPKj&!~Ue%xt59A z_z}>SSOTRX8bE#?04OREAPIY9E70$K3&uwS`OS;bnV6mX&w~DaSGY|6$QC4jj$=ne zGPn{^&g`1}S^_j607XCp>OdRl0~5dmw!jg%01w~;0zoK<1aV+7;DQv80Yo4d6o9p$ z7?gsoU?->sb)XS6gEnv&bb({wG&lz?fy-b7+yPQB4xWH1@CwX85QK%u5EW8~bRa{> z9I}O2kQ?L!1w#=~9FzzpLqbRb6+r8tQm7oNhU%ea=v(M0bQ-z<4MVq}QD_qS6?z9F zFbSr?TCfpp1+!pJI0%k}7s1K!GB_VDg15kxa07f0?u1Xnm*5dt3O|9T5r7a8I--j( z5f;KmLXmhR2@xTykP@TC$XgT!MMW`COq2`C9~Fh-qL!gnp*Ewc zQ3p_+s6NzH)F^5S^$|@*Yog83&gcMiEIJvTi!Mf2pqtPg=(Fe%^f>wz27{qvj4_TF ze@q-E6|(}f8M7PHjyZ)H#*AU6u~@7+)*S1K4aIV>Vr((C3VRTH5_<(Zj(vk8;&gDf zIA2^mPKYbSRp451CvaDA6Sx_?65bH+j1R^0@XPUK_(psWeh5E~pCKp{j0vuUNJ1)M zEuoUoMmS5jOL##f67`5q#Bid3xQ19sJVZQC93{RbQAlPaHYtH5A#EY;C!HeQBE2A! z$wp)kay(f~-a>9BpCR8TzfqtnSSkc4@Dx@n)F^Z+Tv2$Yh*vaJ^i*7|n6Fr&ctmkX z@u?DC$w-N<#8FzMRHJlM>4ws@GF90|IaE1Ad9!kh@&)Bb6fDJv;zQw4iYWUiXDDM- zgsM+vQ@PZ2)JE!A>NpKUGo}U5QfZ~MZ)k(GDHV!}ol3Myo=T0%aTO^Yp&QWy=;`z_ z`eFKY`a4xERZmsE>L%4T)hnv6)#j*qsPWZG)Y{cX)ZVEx)P2;`)VHa3so&E;X_#q* zYvgL|(KxH|bPjEf%N*{Uk~xRx+}4CO%`_u4S7`3j9MGKB($@0R%F?RRI-~Veo38Dl zovOV<`-JwS4pqlZN1(Gq=cLYKh6=-zkLZ@rEqJ6vJJH{f4iNjE!Q9HW+moJu+4^4lvF) zZZ*DZLN;+XS!U8;a?KQD$}&we-EDf=3^ubjOEIf48#0H@9n1yhyUm9!&=yV>LW>5A z8%z?@lbOS8WsX|XErTr!ExRnASs7TxTWz!IxB6&pZ=G)4Xnn_qViRanXwzf!tF4(W z*S5y?+FbHn-?^*jcF%ooXKu&0+hcdro@yUrzrnuO{)2;~gUF%HVbamSG10Ns@dk^= z3S(_%op(Yzc{#0iI_C7&*}+-teAxLH7p6;^ON+~+dB*ej^BU)kx$3!cTZVb0X zx4mvscU^amdxQG}4}A}wN0Y~dr>SSE=RwbBUe;bBuMV%*Y-jdL_9<_~+t0hid(emC z6XjFwbKh6bH`%w{0a^jvfaZXyK*zw9fqg-wpantIK@Wn> zfV8I2F~=-fTgudr?_nH zF76Ya2X6;&lJCkd=T9WLCY2{WN_I`&o;;c2o>GzWRKONg3!bO?r`DyuP76)jpY|y| zCcQlamywupR7eq~3Hvg&GxIWsv&^%Kv!u(Mm+f3OB?=NXWkcDEvb)7J+0WE~#6+@Q zGMeL-QhTd=lZbfxFY`c=@XrK@^Z z>#r_aJ-)_o&4IOqwP|aAD6}ptFMPQ!W?fH_R?(WGvGsoITZV0)e^+=6ZO?$0o?WWq- zyLr2>?D5#sR;N{0TK8_RVDHU(zxvJwqlSuon0-0>9yUfd_J7U#y17ZCskG_Ce&K%U zfrtZr&5q5@Et)N5t#GTPb@E`s!OP!xf79K@Y^!glx0fCQha`s{f1CL2^}|7jdylY= zw0&pzU2O-oqofn+T;4g=mC_~cj_V#i8hEs~$EBy^d&}?lAJaWnb6n+k*$Kjlq7$D^ z=AWECm38Xr>EzR6y-RxUoQXYituMT9@NCf8^XGieo$2@NKY8Bu{ILtp7mi+JUF^E# zaH(^^exTzA`yV<69R@px9EZ9uJ6-M>o;Q5riu;w*SG}*EyB2Wm(#ZUg;pqt>?FMZqM9Va~FNLGD$lbNT*KP&%S`^@CocfWZ2GB6c8HU3=m z{L`|I+Sd?{wJo{Z|>UW?q-PQGavbE$eOnyO?(qGr8}v?<+r;e(3oa^zrVe zj8C6_1NVgU`#GT7xc~qF24YJ`L;wH)0002_L%V+f000SaNLh0L02ECC02ECDl*)}S z00007bV*G`2k8R_0x1eOLuY*e00QGlL_t(|+U=S@NE=Zc$G;bZ4o-qEb&{YEc&AxP zq1*Y7u3hRPwq!Gd4#nNAU5msTb*vf+(kz_<-5j+@AbOF2k}@;eKgw*RP8e~+YPL&?kgqmw;Aep!PZU*mC7gR-vsQ}x_4cBZ^C%0 zfpZ>c!dp8f043~wc!_4afyV%v?FImb%vvFw3gDc>ECSkriN&%B?ZAXtMBw5jsbs)gLc%(&w}%kJ4mr?LiY*!oVx8M-|r#%`;Cib^Y*!A6I(kv zIOlNkvjENzNdwXo8Ifd9aQI`>>l(`$0*UP5_nIM)_Y3Z!yF(Y9xr4gX!lAv1SL_Ya z$cT^Eds<}Q0b?V>0NnmP&+9OY!07r606f^om-j~3XFTz;= diff --git a/Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/on-equipped-HELMET-dog.png b/Resources/Textures/Clothing/Head/Hardsuits/rd.rsi/on-equipped-HELMET-dog.png deleted file mode 100644 index d083e87fddce47d55d59a2c0f29378086c2491f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3996 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 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/spatiohelm.rsi/equipped-head-dog.png b/Resources/Textures/Clothing/Head/Hardsuits/spatiohelm.rsi/equipped-head-dog.png deleted file mode 100644 index 035e6ff5f75e9af22d04d0a3060310983e3e238b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8489 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 XCROp~Jl2iu00000NkvXXu0mjf*{x81 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/spatiohelm.rsi/equipped-head-light-dog.png b/Resources/Textures/Clothing/Head/Hardsuits/spatiohelm.rsi/equipped-head-light-dog.png deleted file mode 100644 index 1bd9e30862fa91163e1e14c1577fd1bf00502510..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9157 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 P00000NkvXXu0mjf|FgNX diff --git a/Resources/Textures/Clothing/Head/Hardsuits/spatiohelm.rsi/equipped-head-unshaded-dog.png b/Resources/Textures/Clothing/Head/Hardsuits/spatiohelm.rsi/equipped-head-unshaded-dog.png deleted file mode 100644 index b0b95d71e82f81fdfa09323152e030680a01f163..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3918 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 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/on-equipped-HELMET-dog.png b/Resources/Textures/Clothing/Head/Hardsuits/syndicate.rsi/on-equipped-HELMET-dog.png deleted file mode 100644 index 301db4f8aaeafa3f16d25e83e56fcbed9721aae8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2081 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 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/syndiecommander.rsi/on-equipped-HELMET-dog.png b/Resources/Textures/Clothing/Head/Hardsuits/syndiecommander.rsi/on-equipped-HELMET-dog.png deleted file mode 100644 index 301db4f8aaeafa3f16d25e83e56fcbed9721aae8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2081 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 diff --git a/Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/on-equipped-HELMET-dog.png b/Resources/Textures/Clothing/Head/Hardsuits/wizard.rsi/on-equipped-HELMET-dog.png deleted file mode 100644 index b7154870853a339b4d8128a249aa12be50a3b2a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11436 zcmeHtbx>T(_U-_|LvXjjf-}tE?(Xh{VHhMh4DRj(3ju-#Cm~qyUZtnDB=EJV>&AUOAY^XHSO zt?FLS@C&gPD?j`qNn)()XX;ylgKyilTPLFWH+$iEA)gyb;A<~KV_a9C{3Yv`n@aFT8+6FxICcG{j!w!V}Q6x_yU@J zw$$ZmDB&~8^D#UN%Q0kzn!C7P_F!5gOactWVcM$Ja zXg2p5*bB&Yf%I)PgJ?PmB$p2!vvpokX3SSS6YEU*Ov>@0Aeh>NCL*LDp?%!>!f)Cj z|1Hfk{{gFHv*2q;2;$hsa)Sn%2bjMw27^MNTO|F3KCc-W_TL_7x`eJ;)|@UK9HPDX zVATeF%~iW}bRV2{6J70gLes+I9yqb9Zc>ASML4dh-j5EkYQX&fw@bJHh6@`K&1ARY zPvS$?bdM8Mt|?^C%Y0Q6?L4*IFH8#p&#$S{mT5i%+)ROKifpF!Wp+dosd2Ps=&EscL{m9dwPu<+zU;Un15VF)a8@_X`CpWs6pk6^ z?TD@3mwFe=lq5b>QJf?hHlD~gDn9(GVYKrH4z8t%-%|r4vmmjCqD)$!MZaejK1;Wu zjl`Pb-`DjtCH77)UUk%8zuyt6->@_}5z=dW{njqYRfFACPIyv9cWf~0Npd1N93UO= zZN!kg*k~hzZ%JGsRXkmND9J>Vk}1kvtROjHe5HBhR`-*7Rab`4PrGbB)s@v$5xMQ) zktK2yv$S$QzH|K|>&Ixb16LO9M~!OeHv_OomDT+#iEp$9{YKL^c^G&e=8VPO@JfHW zxH0&`n>_$Y4_frS5pC!Mi`#h|dnLXxrF{nX3pV$ca(UMZb5~#=J21SjhEx8kKaS8? z<~v`a7rno!2((6E(bl`}B0YN|cG*90@VOOwbtuvK+>hF-0{WQY$e-)|CHrU`_*;%V zA;wf;c{{JtWrh}#TauspgMu&X&D9zX78cEiO9j4e#re%`UN>x7*e*t#ZlbT`ew|MW zZ7(+#m)>!&R@7W(3*`clr>j+)(8B5qlKb!6UWCqoGHb^z15%}rJ!F}h+jA2U{*TE14dnc9mK>uoY$8h8#Gb%yO8O zNfGDZj7k;uZp?GNC4lkH#u;5t@MF*XEtZwZnuA4saf%L43^_nvGyBGqSFY{WWKn2SHi_O13jhK zQT(BveBI(!s+}G&xlOXWMUJt4d!N$3bLu*Z?zk$)MbZPTcGt7^m_->Gl50dBr zW3tzJg6nGgr}!yTEP``KaRv-D{2y#PFXGPSimrJulJ#?x9F8D#W6}fSq8IL)Vf=VD zXM0-LYHpGnVUpgh*mn=-{DGRp(`mhE39|}3j0Vddz~X~=9eRB zq6SXeAE#-x6}mTUUYjdrzpgva!lbVYodsOpN(XTFJc^$ZI_$^pFIt>T7%rFj*i*Bv ziuxJoq#ba`Z27tgQqK6*@7?>0Pxxbi84FT)+GXIqmreN$G);gc?d2{0UltXbxGx7 zf=au}AmXZmM&Un3fL(3|rxf9+JsBT@gyY6EC}~9OB zvPLx}n`&nf@LVkoh%b7SR5W9uCB_#@ z7iUq`2H6bs@$gHfA738QN!-8BGRxbh)Rj>|xF&heljlX_Xh4y}c%jOtR=0ksge!cd zlXjs%G1LlJsxm_w1yuB<@4a*&eYhzqqAXV8Eg@>#+pn;15539IjB%omO$q!yQhZ5j zqN>uR!rUmR6ueh3l56Zr>;SEO#Ce|J{jPr)K@3cQw;(Vd{x)Dq;^G2oKF} zeXv0lkGIF90iqpb7Ua-!V(?uQke!2QM~zs|wd0%Bg*0-yL%GA=J^d^~N68Tzc@MJ~ zC$9-e{PM^f=ch$=8Oawq)Tq`c7mYdmJTDG4l>(2uMDWMJ(Dvi@c)=XX`Un7hbe9%OQFb1r}!{ z{?Sdb-Ny66(M26CQDFT7HoD+)zH)NVYlq2-Vd=@nDf$SLHML#AefE28rt0_bytJ!5 z>^e2*-r`*MFyk`$n=r}Fc|Z~UK02<44DGJVZ+;_Q13W&dHN;9*P+T2js~$${D4$4L(= zT}9!Ix447OUfmg#nuzFS0hSb{5>Oc@vqTJua>t2UxPRHOWo7(fzsBYM`S&E*NkKN3 z9w@o7v*}3jzG%0iCx=lRmOmDAHv5Si-_fv599<5iC~kyYfO9d%bH7&xFFb51pUD{T zU?nrGht)ZY(gyhu8H*ufhBw~MDHFc*L!*>0M1ksOc37bt)w*-{exo`r;E|j@ot*r! z(t($BHVSs(z7LgH?;VRpS$vLBq4!^DR~X;&DyxBD;JT8%b}3JaA8~z7>ErLK zYRo1{%{IDP&iG7D_90#QOFvt3_VnsZkK{TH?Gsa4jJ<{256W&&Y9wOGW+J*;I0Ka| z*!0T+ZJ#m0DPpU|R>4?kL9wr5BPvw#U$2NPaOrS%BB+wi_D_W}k3_o8Lc>q&I69tI zz1F=Y-(i%uM|oz)C4d2ZZ=a@AMyma-F+;z)WQTD0;cb;%oHUR1Tq^ekgpXg)VZCD=`2tgodD?%m3o zcvFD+fEFG)hNk(A_Qi61RoO=Bpz)IcZzl16wLNE>)SXhP`T>$hosfHG=^>H2H`;)< zD$0M;V+Gy(|~m=~+RI$UC=a9EK{e*(Q2BX#g^<|!jsHtTh9828Cjs&8(J_g;wv zeu!QTdM}o4Myj&&c+mi;{CQ~J;&NJ9n|5iMiCV~#PN9qTCtR+cp=qyH6VH7<+UZ?q z+p|5k0m}sAd_3{j=@hPZVQ2c9Mzhp*L+ZoQij(s_V*1_*K;EE)qKlHV?WB2E)8is$ zeJP2ic8g_n*zUbJW@5ee;AS?{NS*KAi|C5^5wjfx_-AW+q`icP*a9YFmWiwfw{kRlMWdz@vR+u+v@%h`G)3jd9&Ye{ehRcgy9NN(w@90Fq?;K;^`nSep;-^&9 zqqf*}YpFjc3P0US%_~Hri7ZNrdi_Y@q>a}bPT-CXpV~bQ)eC5m&)e{|>q(ib9Belg z4`Fj-o()MR?9=6fcyRy<9(+`w*??`UcG=2D2WbVcq`cjZ5p-5pCbrymlDrcw?>w@@ zS_#=w8(m#X{3$gd1tvhn(446KiRyED=#DcLun7R*fF0!Iv{mHf{`Cd{`Q9KmFVja~ zZ-FdkyhEr%JB=VdW5Us17gZUrLpha)1B^|e+MNPm6qMI@lh;Wt!-BA_g%-=D)-lFM zq3G1@+@qAAad#u3&Q!6frd)mNcQE>VmHr~wv7lpo#qJ{UT$M z&zpU*NeOmVm?-xT0ccKuHMfQaS+Yw-)NItikBLs%#Fyk9Z4ZD~HyqPai9LXy1sSa- zj9`FvR^sOI<$^gS`3GSMqg<9|tq)mE{2F7ts$+~M;Sj@g&topL!1HW4zQ_qAQk-(w zbLas3{0wOIzmI@YJ($;)bQM zLBhGe`T^FIKRh~|0vV5t6A$C}jg6S{5HXj>Qa&`-i%v=>PWU`NuCbZWH^TcsD2eF{ z_+vJu3C(8@fbIAX6B0jX%6dkzkHR9tyw2Rtooq897C)Y+U3h0&MuzND%F|!IKQ{`_ z#sk!r!5bH@W1JmG0Tw$b+U>V7qgEh5e0`_agCKXhwm?hW-Y;BsoG+J`&DBr}9N9rz z2iFA;LgXF=j_Y==9DIZNo}>$>A;5B$LN2!cW%9j)V_)2^?r#*tT+(CSdC`#({$TEm z1!XA650|L})iWE-28mHcrBbH1w|f6P7>N!NRbgq013!(_~<=$jK_B zl1lFs>Q>NHMQ<0`ZkcVdA*k8_cyi5!I`%}@r2d#pyx3(urnQ7l=nYm{!dS_X`rDjiJiyb8$~gBiBRIA??!ijFTv zC&#t`2rf~|yaXOaqr&GCv|9~Zgr~ySq!12^8%Kk)X zS)K7K(K(u(c)UK3T5Bh86HWj@08s$CSaMJV(-(wWlkg*Ram`rHUV}ALH&!Yrp?9u_dHvUced zau{>mV>=`<!0eIzsjmHF7lOkS3asFvizVNSKX^)TB=`+(ElDi z^#)?FpeUj*BInoOk#LOuO^Jl7FZPSvXPtPq8#X&On0{oH7F@4&#%o4#+hki9PmZq) zeL~lv^o^^1#2a?f`1m~4H>&xnNki_W?6gJHlW1GtPa)UPYp-iD18xH?gU;=Tvx2jn zRW-946@C>*v#K+Tvx+mHD*0xDW~OJFD}5?gr==aT93mapAMZ{IzdS-ba84ek+0RWA ziP>D9ixe2;XW}=q-=C(L$eo*-JDwhzs+tllKGT2xdao$2szdH3^1S4M!GMNRVT0Ue z$rvme=Y4wWScT0gxC|lSb?e2_cGecr#^>Mfuj3!(zvq8(iha#>%X~|F-EpmlA&S9( zfsRp)(TsN#&Gnw-y+!nGbWKuXl69gWg%_m+#E|a+@0gH_K&PXupu3QX?Ua?rC<$x` zqQSS~?7whdut7)-{1QwJi5aCGLEmT}jp3dk(OWsJKQ>=&eYxp99^_)@ zGSIvP^O??nOmE%Q(>Z?^5m6j5STqWqn(PKo*3BJZB=qCJoNe=bWX1eMs=Y-wPUjYS zOm+i5UXhcRspY683>W+LpIn|$Z6>vDw|bcGSd_ZlZ+-qMPEA~mrGj&IiH98$XwOo!-1U_S%dl@C zjeIANn1+#t_=b|<+-G~{f-E>h0&uy7g!=YA{)O?G&|dj^OGwVwOuh7zheDzk%K0Ao zyslQQ3&$G6tj9qoU6x^{JriB`Y32I?G3zkq{wO9aK!NQ+|JT+GcB7D&p3#FiLSoG6BDNNA^Dlu zv)#AaP$Qk@gj%(FHB(CS1q--#W8-#^m+F~vl95J0we4Qn;(WVbd(H0A$7#cI10&N5 zml~^sQU9*%F^uBq_@JyHksCTeMWOSM(d)KWmEy`b-`@v+4*nh%ixxDRJUYsq!ws)? zds*UjZ1t{Zc-1##dZpj#rE7WfGdk25<`}w==a+kD?`2{Fp42A439`GiaK>ybE+O7F z|0FW|bc$s!d52Dt%J)t4Kxz5cfZ>A+`e_M6PxEiS3)t`CUJw^(ZWQE7KK0uE{(XHK z)}iKqkQ*oASq*yYdgwH>UEg^bn)e|8GTdrf3g8w`Xe!InR1?`I* zlRsfvQW|&|#0rwKy!8E{GMAoR-Y3QR)BI*+eZi;8_XmWRR7~K`{Pf3k&GSbUT_1l= z?ZXccA5U+MC~IsjpS{%y@m%BHasJt!E@^}gW5SQ|GgTfr)2%t6G&cQ{3@u0nn z5$Iqe!Du9)!K>jW2e)@n_VcyHMD_pt{!k8KMy|-FSmlPgExdx5(g;mVPh+*E3fz`1+pZ; zXpca+iGn~rK0Z7?d_1lmb|A2bhzN)m0)jxekqB;2KNkelm)pgY=@-Qx9P)5an1_QK z!ok%A_=^*2?dpY)U}QwL1OL@OXEzOvzvx{&|5O2~2gn!d1_JZ&f}EW}f4A^ND0m}D z{_N0ywD8nNp5lRY;hwHu9x%9qH{1om^mhsy*kAT;ULH=rhhqZ+!JXjFNT?^$EBJr7 zR8rB<{>$Q*1a=P2ZojRNV*d{$viukDKX&bRH;^a|4N-YlnAb0VD)JJHzX(NbTwxA2 zqQ7tXY^|YiL1A8Q8>k?Ro1b3@&JBgyLb$=aLbk$uBDTCxxXs_FR9rj}P!|~d7ZsA6 z#{tR12j_!fsDU#>c@K zY6l0ox!C<~_@$tzjJApdBZTJmi`O^aKkD z@IsI~0I&d+}2_@C_h|0WmCzjr}!7vvL=4|0$5v=bqQ+#g|Bt0~F<-YEgD!lO2$wU2w91VP|;Ap{Ek74BESURv<~6`p-oP!}(cTGx562&5px+6}H$Gs0RrlP}!7-&vCM;7fNCUy1Tf zrQ~hw%snwsX+hG?-KtLs^LFC5E`cW~cTPf$edOQIn+hA+F1K*8Vhm83v@Om1TqACC zs8{(`dRlxQ_jR}*kVqix+fiw*akrlbNR_NizssDCp~U4PdcaDQrJp)ZSGF=OTmAKg zt$QJIxQm>-EvD^<=XhVmL(+US>E8L>F@NfWnpazVe?rr*mvmZlQ`$;e0Li& zJ$Y09_^hP`Gr!cTgful9*}KS~pxeY|OD67NR3%lnM(x^9XD1DAE#aVYqVsO-l^`XvMuYGtBnGJrKTuB9eC8Z?VN@1TQA#Xe8j$~uPBiwmZz~7stU{V z?{|-DqGJV2r>At3hEo@Ko%D<d%z)tcHPFo$Z9dCIWlG%G5w`iq5a;=vV;R z)U4zppI2K+Tl-d>r$QY_t-f{EUm*i14oltaoEE#G-%&(k(osU1BC+*7^4i(Huah;N zW6Gbmm%v->Dq^Ps3_h;o*#|p?0zj?DhitNuVt;m{|}uf|55+| diff --git a/Resources/Textures/Clothing/Head/Hats/redwizard.rsi/equipped-HELMET-dog.png b/Resources/Textures/Clothing/Head/Hats/redwizard.rsi/equipped-HELMET-dog.png deleted file mode 100644 index dc7dff2d304a275260c6dee65a42a085ec42ea6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7522 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%0A1LCOR zW$cyU7y1T+4ni-GO&txZ{ApEvB0g(nvSLEn@TFnZ-s(}|k-=$bbGCcPZ!U5l`$+TB z?YHhM?|R3w*Tn3OQ}}O&z}CQ|Po7UAC^L$T`T+ zOueJ!6?l>>a4leSG6k>SDo@hgg6?`vf(`nO=M9St8{19Y%TFd=wdbnKYkYOj8(0j4 zdq$k5gWJN|Z0rK*TUnS`{lP4j#;VCW^Eo9=4*}n7Zby;Rv$u>!w zA#Mmj+3|!-!OV+aYG%6X9kGpy&58yDM(f5FYHe+2AP zo3%xqN^M<(C&vcU>uKNK*BSWIh!{{7i2se0M~3$?aQd|iEMNMw_0M3yUcjH=C>YRm z!t^wA4zop_b4{7Yt?5AjPXVS+~>=OLGehx#KweHkkzxX z143JA8TOgc4*zoc0?lQ@IjIPtcWcLJdF6rMo2Fj_H*lZC;qeff1WNxeRdw+n^0!(6HLsFFS-t$f4cPr z6dfSEkqN+)zzaqaM|QCa8eb6<@cQq^yrnPdLK+IX@tiLg#@>_n&ed0)cH}xKAmiOH zr#i27Cmn8%vs?OZ_@Iu%f(1y-Th0?v0N1}J<1=z$kuza|zoz}6g21gNI#G+y`+#4k z6fb7OVKY*9RGYG+v>-ZGQIluyclnjn?8;$L#!sWSsl#=zUhj7fHe5mO52O3{#fIGP zRlRGU3s)A`?rZn|bO{-&|G3sTKyn zJcZr8@fU4^|7)?}e<;dI0crqH0H`PzRsH`6lCzw?8vuZ#{J(-qn}}!q4wa30$#K)0wd^vA4U1IpTFl&G+zx~LU$aWPQey+pBvm8c@ zh7c775rjr&#k{zFFw~qu93~07HF_guJ-s5JZ~5zzGFEYZTz@;03tL5tL#6+D*R%5B zzb^3W)|ZiAaf061_v1JdKGxE(6G_w&1FJ=#b2|)CaYxDh1Q9r)sH{7$0>t8LmNnpk ziU|DY;b~ zL0Ee1;QM39z1z3wOr;B`{}7|U5PHiU>kNh0;MCjV(_deI9XgHfMFlXr;?qF{{NS&? zU4j1q$~U{=!&)dEy}+%=JH{-k*QesB*C?IQC4{Xr#XdaM85G!*O@)SVIJVYiWbVNo zBHJdDyL2>=(RYt&@)HCvNb(;&TEA+~*OQc87X16>W~mjM apj#6w_0nhoP5*l*fV{MdRK0|0$o~NNw1D;i diff --git a/Resources/Textures/Clothing/Head/Hats/redwizard.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/redwizard.rsi/meta.json index 14fad20aa5a..4e1c6c10dac 100644 --- a/Resources/Textures/Clothing/Head/Hats/redwizard.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/redwizard.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. equipped-HELMET-dog modified from equipped-HELMET by Sparlight (GitHub).", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e.", "size": { "x": 32, "y": 32 @@ -14,10 +14,6 @@ "name": "equipped-HELMET", "directions": 4 }, - { - "name": "equipped-HELMET-dog", - "directions": 4 - }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/Head/Hats/violetwizard.rsi/equipped-HELMET-dog.png b/Resources/Textures/Clothing/Head/Hats/violetwizard.rsi/equipped-HELMET-dog.png deleted file mode 100644 index f6c05eb82a6e59db30ff1cf6924245159b950e42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5894 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 z 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 U=j$tA(f|Me07*qoM6N<$f|+Z3>;M1& diff --git a/Resources/Textures/Clothing/Head/Hoods/iansuit.rsi/meta.json b/Resources/Textures/Clothing/Head/Hoods/iansuit.rsi/meta.json index c05c227f8bf..1bb61f58391 100644 --- a/Resources/Textures/Clothing/Head/Hoods/iansuit.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hoods/iansuit.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Modified by deltanedas (github). equipped-HELMET-dog modified from other sprite (Textures/Mobs/Pets/corgi.rsi) 'ian' state by Sparlight (GitHub).", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Modified by deltanedas (github).", "size": { "x": 32, "y": 32 @@ -13,10 +13,6 @@ { "name": "equipped-HELMET", "directions": 4 - }, - { - "name": "equipped-HELMET-dog", - "directions": 4 } ] } diff --git a/Resources/Textures/Clothing/OuterClothing/Armor/captain_carapace.rsi/equipped-OUTERCLOTHING-dog.png b/Resources/Textures/Clothing/OuterClothing/Armor/captain_carapace.rsi/equipped-OUTERCLOTHING-dog.png deleted file mode 100644 index 31832de13b9816320976ff060c7be8480098c1be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10491 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 i=iUEK_D@w?-VsCuL<9su1VnmM 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

D@w?-VsCuL<9su1VnmM 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ȚDEfjh%b5kg_+ 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 HVbK2o@!Ty7 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/meta.json index 1df7b5a4ed0..0325efcc873 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/engineering.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Vox state made by Flareguy for SS14. equipped-OUTERCLOTHING-dog modified from equipped-OUTERCLOTHING by Sparlight (GitHub). Tail sprites by Tiniest Shark (github).", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Vox state made by Flareguy for SS14. Tail sprites by Tiniest Shark (github).", "size": { "x": 32, "y": 32 @@ -22,10 +22,6 @@ "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/goliath.rsi/equipped-OUTERCLOTHING-dog.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/goliath.rsi/equipped-OUTERCLOTHING-dog.png deleted file mode 100644 index 4ab9fcf73da8e5f964c8990633cf589bda7e3282..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13573 zcmeHtbx>T-*6jen0|a+>ADqG6oxyd00S0#q?h;6XJHag^Avgp{aM$1#AV6?}Yu+Tk ztM$IBSGVeY|J|vXGc9Yc?z4LDKBv#=I4uoDEDSOX004lctR$xc|CjpxLqmZdt6=V{ z005Cn0NBt=2jWZP=HY4!bAr-%`MW`Bpnfo00KjkYFxx1Z0+cNG%RL?xZjG80p=aX) z>@O$}-RZOP)*GI=7f7*@Q}F9T$jq+FrX9I0__ey-d7YAPtQOl+l0DU3pe5^_$o#z} zWbtNA;@f@5W8@WQ@UPR>o51eV zx-{ZTu&2chKbJW>c>O>UjVYRNvSS@rFw!}278uMXiCm9E!&`9b6&zhNi`(by^kG`C z?NH=pH+C7xvPYKUPW0JM!$w`Ti(jw6Zof-L(8V;dmDn=xI<4Ooi1_)D$@oJw=d!;s zmv{PS4(gj}>a+K&_rAd+t6y3hG;fyKx4&aQt!bRx4|zvN6}7ym}(Jc7jwN zXDPO1YH0cVma<6kE{Zc`r{AQLdj2uM3HK^VtuKJ?gkir}{c>;&>bTG^6H3O% z9Ae6hD5xNmRf4(7Z1<7Aw^^uQ@X~a@NL7Pd*5e6Xa$MFtcnwV-4flRat4k|EBAUcH z9z=xi=rmaV%1VWmxfVJs5kuiQ1j;b=WbcT?Q)O#O)lsc}7cjs-3-;t}n4QgqEm!d9 zZ{GH?uXwM?z7)S$R(;=&wa)h?mOfEzsG?Y1=poX;Hrqel$j)SzqXHU5XkhH0rf0BZ z>3m1&vkcoY^I19Mb8rR!IyrNd8|~2cWY%fr3Qd~HJnrikHltTrpMaJ1EfTI z4_F1Cln=1lYI-xsd#UlV3ECRVzjzi6HCw*q^Rak+XX4IRdtcMs(ixwtz55t9Kq_<9 z-~7Pjp!<_wqsN8FL6chZ^7N5yw0Wu|{P5T9bwSu;ZP?;Koo#H8ra{2+@bR|*=CEhE ziT4b$p&6X?`=yPy(*ZB+p9+UQ7BfaoA9Nh4e@XS!y9&nIszJ;&V=t~T%*dkmZ`04O zl;ld6XuiqxKA@T$>g{s$&0(I~8R;DDQQ!zOuR1#G64S3a*7_ciuJb}<$Bf$Z`RH>m$+lTwzYCvu7~!l^pZzf2T~^G_ zkxRi1DX5Uj1M-THS@hR43WFFWo2$lR$E;7(HMSr98l3E6iMT2D!a;9?Kc^U;oo)qf zCHaop4GLbUOR1_k5)-xc`#=A10XmElLU)!@@qdb>MKq4I{jA8LuxTDi`@5&pxCV4= zWt^E47;9GegkY>3DYIE4)klDpc$R6Z`xbyJN&+pt4^OBGl|l}Cf`$-kcTTl%6;U~e zXY25lxX#$fa0Ts~!%7!na3yr)pr6lO-xFC-BJ^EDTv+(YGEJ9uKB#MWqHHh-t1$yRqWDfR2JJ^U$a7nQ*kNmR7JRnBC4K8GefOKBMnNkjcxjSTvH7)HNPC*RKc6xR%0JpK&!< z`=g=hLnwv9XetPYD>dK%&yNj4Q8EZbW+W2?{enSPKa^Dwu^a;P4kx6d~=aikLbuA2QpD6SYla*-7oThY|zpf zFR*VS(pLH{gJ9^ob!Bs-mQ}80l3WE;ur^kF!;5|crek^`=*!T_MnXwJfsXvrRgn`s} zS)oUk<@?eDRON+2;xoRP#VOWbyY$>Ka2jSqG+cnl=Gw-WAoXvH;9B7ugTxG zrs+KVTte98qQ^_l(sgT2ACuxL+X-z?3@9KO0*Z&p#zZxgJX=pY*vQD<*+%Kfs>Ir$ zS|n>1RAfUk_aM-}_SLKcPq}JV%<5sW0T~_@PcWm)g$NQ|-;bj&D)y8xP?-tW63^7bZ&aoU~A9 z9!eY=l+&5|Eb_*hJtX^ST7e#PYi1^l5>rnGJ7UHhH+(yBt8ZwLS~8vTs;!@CX;)cp z4!Wq&8zV{$!naK*i)9-IR5JUtx75yUBr}Z}tV}*|BZ|*+R3b1pnVQ*OC-L*u5Fl|*e{&DL!EGc2r9xnRQKqgOAvdIO$`S5_m~>{l>(BRW{pWOdI^ga>}1gNTx^##}nh zDs(9dV|sric$vaOMp90Ot7*G;dNhwED;z;2vpvSNQeSJnV*c|_`5e|bNl66XVPD3<7y>wl z^h*aWj2`TRK*&xHyZKu-^Dwo^hBg;_=#S`TDN@c=<2Q`qleLlfvpAm`Kq;+laUTwn zF?3^2XuYsLQGE1zJy2+jlr@=3`{WD3mL-YTmF)LcM$8eGsTj}2tL^Qb6;Z7ocLhP` z<_ne{_c@dZJ-m}!HQyF(;48#ËTpJ+-Z%cZK%XaP1~{Ve18n=Lj`DK`B+yw=O6 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 Dq&WbM diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/goliath.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/goliath.rsi/meta.json index 907f8a042a6..48893bc05ff 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/goliath.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/goliath.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Normal and vox sprites created by https://github.com/Pronana / princesscheeseballs (Discord). equipped-OUTERCLOTHING-dog modified from equipped-OUTERCLOTHING by Sparlight (GitHub). Tail sprites by Tiniest Shark (github).", + "copyright": "Normal and vox sprites created by https://github.com/Pronana / princesscheeseballs (Discord). Tail sprites by Tiniest Shark (github).", "size": { "x": 32, @@ -23,10 +23,6 @@ "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/equipped-OUTERCLOTHING-dog.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/equipped-OUTERCLOTHING-dog.png deleted file mode 100644 index e78e5bd0b2fefaa36914accce758fd780b6bd625..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4552 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 mU&rsczLxa|Fc=Jm2mS+gaylzm+Ni1k0000 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/meta.json index 1df7b5a4ed0..0325efcc873 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/medical.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Vox state made by Flareguy for SS14. equipped-OUTERCLOTHING-dog modified from equipped-OUTERCLOTHING by Sparlight (GitHub). Tail sprites by Tiniest Shark (github).", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Vox state made by Flareguy for SS14. Tail sprites by Tiniest Shark (github).", "size": { "x": 32, "y": 32 @@ -22,10 +22,6 @@ "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/equipped-OUTERCLOTHING-dog.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/equipped-OUTERCLOTHING-dog.png deleted file mode 100644 index 9d5dafb3423d3df323a64fd2950c378d388d2fd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4970 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 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/meta.json index a6459e759cd..a3e28475052 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/paramed.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from paradise station git at commit https://github.com/ParadiseSS13/Paradise/commit/e5e584804b4b0b373a6a69d23afb73fd3c094365, redrawn by Ubaser. Vox state made by Flareguy for SS14. Siren Icon made by Velen based of the helmet's colours. equipped-OUTERCLOTHING-dog modified from equipped-OUTERCLOTHING by Sparlight (GitHub). Tail sprites by Tiniest Shark (github).", + "copyright": "Taken from paradise station git at commit https://github.com/ParadiseSS13/Paradise/commit/e5e584804b4b0b373a6a69d23afb73fd3c094365, redrawn by Ubaser. Vox state made by Flareguy for SS14. Siren Icon made by Velen based of the helmet's colours. Tail sprites by Tiniest Shark (github).", "size": { "x": 32, "y": 32 @@ -25,10 +25,6 @@ "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/rd.rsi/equipped-OUTERCLOTHING-dog.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/rd.rsi/equipped-OUTERCLOTHING-dog.png deleted file mode 100644 index e5490ef405d781d4e3c6cef5717ca2b2c6f699d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4442 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 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/rd.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/rd.rsi/meta.json index a7ce8f2e3ee..0325efcc873 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/rd.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/rd.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Vox state made by Flareguy for SS14. equipped-OUTERCLOTHING-dog modified from equipped-OUTERCLOTHING by Sparlight (GitHub). Tail sprites by Tiniest Shark (github).", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Vox state made by Flareguy for SS14. Tail sprites by Tiniest Shark (github).", "size": { "x": 32, "y": 32 @@ -22,10 +22,6 @@ "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/equipped-OUTERCLOTHING-dog.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/equipped-OUTERCLOTHING-dog.png deleted file mode 100644 index 86af302e537e6410f329b3fe67de7b032ceb9a6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9841 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 X_`v$U1Ajw>00000NkvXXu0mjfms&I! diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/meta.json index a7ce8f2e3ee..0325efcc873 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/salvage.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Vox state made by Flareguy for SS14. equipped-OUTERCLOTHING-dog modified from equipped-OUTERCLOTHING by Sparlight (GitHub). Tail sprites by Tiniest Shark (github).", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Vox state made by Flareguy for SS14. Tail sprites by Tiniest Shark (github).", "size": { "x": 32, "y": 32 @@ -22,10 +22,6 @@ "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/security.rsi/equipped-OUTERCLOTHING-dog.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/security.rsi/equipped-OUTERCLOTHING-dog.png deleted file mode 100644 index c500c57e0982fb6ecc2bdd7674cab4da161c6a4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4651 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 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/security.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/security.rsi/meta.json index f9febfd47ba..5faa4b0d324 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/security.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/security.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Sprite made by Gtheglorious based on the sprite taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Vox state made by Flareguy for SS14. equipped-OUTERCLOTHING-dog modified from equipped-OUTERCLOTHING by Sparlight (GitHub). Tail sprites by Tiniest Shark (github).", + "copyright": "Sprite made by Gtheglorious based on the sprite taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Vox state made by Flareguy for SS14. Tail sprites by Tiniest Shark (github).", "size": { "x": 32, "y": 32 @@ -22,10 +22,6 @@ "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/spatio.rsi/equipped-OUTERCLOTHING-dog.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/spatio.rsi/equipped-OUTERCLOTHING-dog.png deleted file mode 100644 index aa7664a2a78e62c642e38eebbd3dcab8f76936c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13223 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 Zfi1zU+Ikha==aT1T3kV_RK(E#{{StG{H6c^ diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/spatio.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/spatio.rsi/meta.json index 9ae5b641885..1f3c70b3594 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/spatio.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/spatio.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Original by Emisse, modified by EmoGarbage404. Vox state made by Flareguy for SS14. equipped-OUTERCLOTHING-dog modified from equipped-OUTERCLOTHING by Sparlight (GitHub). Tail sprites by Tiniest Shark (github).", + "copyright": "Original by Emisse, modified by EmoGarbage404. Vox state made by Flareguy for SS14. Tail sprites by Tiniest Shark (github).", "size": { "x": 32, @@ -23,10 +23,6 @@ "name": "equipped-OUTERCLOTHING-reptilian", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndicate.rsi/equipped-OUTERCLOTHING-dog.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndicate.rsi/equipped-OUTERCLOTHING-dog.png deleted file mode 100644 index 619c6518b265bc3b9ace77a9bf00a30f3c51985b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1965 zcmV;e2U7TnP)`(|gvH(+97Vq#)qVq#)qVxoibP*{1D z_IC01*ja^7-cnFd_~b3+?Xj~*vTHGV!3S2Wve-AkK+o&^`J2Cs>wk9sCrWPZ5hE)( zuI=p^9#=1#z#}U;7W)P`)p>&T%`Nd6Ael|;wr|MM53E)t7>)o?I^E0q_70~y+~U>u z?J59rI&~}}X!fVN>SPN=er@xKw%^oCgd{&-Jh2(F{{tfqygBs_aykXTy-cPh_oal1qOP3L#`*maV5sguW-qPoY_eV0Ce?_K2| zU;K#=&xOerip;r!+<3OjK+o&s)*cbJJBU_gLXw|sp~&h_jBN1>DlKgzu=o1V_;9vjLJG?IY(~Y36pR@9QX^TLg8n~m& zNq(iwb)S{b?(G<|uUi0sM8FLo(mWWBKsu$qR%JH4!z2RgU79m8uug*E2y!~bhIg3j zJmmeAvS_>Rv#NfPMq8=$aHM50T9xsP#+X@3AvXk=7>ZC?m}SltJoaS}U}7lpg8i8# zHA9TpHJ+Z|}m9T)AkZ}=JD@b{4Pc(_{ei0`)CuW{8qfXCy(QK>*SZFE>e z_HO}6Pd{6gim?BSz*#Dl3Jy3{`z9tPCMG5(CMG5(CMG5(&xuIA|COq6yKNc%Md*Kx zw)}Rdm8`dGH2_kD)noZhP`mRTPA6cj4E{27XFx>iRZvj&zmA8(%1B)yF&X26&A|nm z<5;FcMCw(v@e`9VM(TLhG9e=M zDnCE*Ls5|Vbi2Sv~eH7X0U;u@_i zMt+%*xlR=jKtl-P#ZwX3=ILF&Sfhd*{dktZ(m-n2f1o z1>B-IdXVioSCH;ZiFv6L^2@^SXjLX|cW~wM`2$6GL4Yfl&nuFxQ+%H4stX~yzn=F3iZvFc8wPV*sj&sebO3KWnq?yA+_on=<|}8j0qu{#b_2R zZg+71_5*TjkB+onC$niwZtW5GZ$BVzceDi59JCgAVlpNUOlYP0W_F*{#6$T|0aArk z%W_H00xc-dXsl(x`?nu(Zg8+g3_u)`(s-5hKWL1QxqE(rhr4%8_&)pt1xbK{M;#iy}2B>0fc!!x;N)fHf?0$9Y zm3C{%Y}&H>)h*$}hId#5)g1J_Oos2Adw_acEF}4b56!V0#DT@phEj^OR)od_g)TMt zzy9r;=75wypH~&5`JhBqW;(yqmQy0v_Vz5~ca%gxW@f4BP(&s}pwCNwrA#uLwj>(` zQEe9(t;%9qUheU~bW@~zBLp0J4Aw|rqiDx-L48IYwy`qO7ry6zfn+vq(RP71txv@i zc-6i}x!dCx_5be+$Vgw%c|Ks_$3Nm~xlA`eVYO|2_0m1i$5p`V^}^!Aw)HhJF){hS z=RbB4;qxKTE5`r;01jnXNoGw=04e|g00;m8000000Mb*F00000NkvXXu0mjfkebY> diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndicate.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndicate.rsi/meta.json index 13dac087a56..75938f6c327 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndicate.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndicate.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/fb2d71495bfe81446159ef528534193d09dd8d34, equipped-OUTERCLOTHING-monkey made by Dutch-VanDerLinde, vox state made by Flareguy for SS14, equipped-OUTERCLOTHING-dog modified from equipped-OUTERCLOTHING by casiliuscestus (GitHub), equipped-OUTERCLOTHING-scurret modified from equipped-OUTERCLOTHING by FairlySadPanda (Github), Tail sprites by Tiniest Shark (github)", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/fb2d71495bfe81446159ef528534193d09dd8d34, equipped-OUTERCLOTHING-monkey made by Dutch-VanDerLinde, vox state made by Flareguy for SS14, equipped-OUTERCLOTHING-scurret modified from equipped-OUTERCLOTHING by FairlySadPanda (Github), Tail sprites by Tiniest Shark (github)", "size": { "x": 32, "y": 32 @@ -26,10 +26,6 @@ "name": "equipped-OUTERCLOTHING-monkey", "directions": 4 }, - { - "name": "equipped-OUTERCLOTHING-dog", - "directions": 4 - }, { "name": "equipped-OUTERCLOTHING-scurret", "directions": 4 diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiecommander.rsi/equipped-OUTERCLOTHING-dog.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/syndiecommander.rsi/equipped-OUTERCLOTHING-dog.png deleted file mode 100644 index ca1d4ee6e799a3e4e836e3a5080add62389a92b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2015 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 RQ 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 diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/black.rsi/meta.json b/Resources/Textures/Objects/Tanks/Jetpacks/black.rsi/meta.json index 21aae85629a..99437cf31d7 100644 --- a/Resources/Textures/Objects/Tanks/Jetpacks/black.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/Jetpacks/black.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/1592a112e3d33eec4a0704b518a138d5a976f455. Dog states modified from base states by Sparlight (GitHub).", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/1592a112e3d33eec4a0704b518a138d5a976f455.", "size": { "x": 32, "y": 32 @@ -54,14 +54,6 @@ 0.2 ] ] - }, - { - "name": "equipped-BACKPACK-dog", - "directions": 4 - }, - { - "name": "on-equipped-BACKPACK-dog", - "directions": 4 } ] } diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/black.rsi/on-equipped-BACKPACK-dog.png b/Resources/Textures/Objects/Tanks/Jetpacks/black.rsi/on-equipped-BACKPACK-dog.png deleted file mode 100644 index cffc54a19fc239e3428739b229fae013314a88c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10718 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 diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/blue.rsi/equipped-BACKPACK-dog.png b/Resources/Textures/Objects/Tanks/Jetpacks/blue.rsi/equipped-BACKPACK-dog.png deleted file mode 100644 index 96ca985b87a33ac395ff170edf2222ee1f2a7714..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11246 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 ZX&Gzvol*|U5x?p}QBFl$4~>ouUHLA(E2c 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 G@c#p6f;6cB diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/equipped-SUITSTORAGE-dog.png b/Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/equipped-SUITSTORAGE-dog.png deleted file mode 100644 index 6206f08e2b5e0cdc4ab39514256f79229b3c313f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11017 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 G@c#p6f;6cB diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/meta.json b/Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/meta.json index 20c6ca8d872..bc260937b38 100644 --- a/Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/1592a112e3d33eec4a0704b518a138d5a976f455. Dog states modified from base states by Sparlight (GitHub).", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/1592a112e3d33eec4a0704b518a138d5a976f455.", "size": { "x": 32, "y": 32 @@ -55,22 +55,6 @@ ] ] }, - { - "name": "equipped-BACKPACK-dog", - "directions": 4 - }, - { - "name": "on-equipped-BACKPACK-dog", - "directions": 4 - }, - { - "name": "equipped-SUITSTORAGE-dog", - "directions": 4 - }, - { - "name": "on-equipped-SUITSTORAGE-dog", - "directions": 4 - }, { "name": "equipped-SUITSTORAGE", "directions": 4 diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/on-equipped-BACKPACK-dog.png b/Resources/Textures/Objects/Tanks/Jetpacks/captain.rsi/on-equipped-BACKPACK-dog.png deleted file mode 100644 index 2e68fd90c1c092b009a095ff3f0f4c19e58061e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7265 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 diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/equipped-SUITSTORAGE-dog.png b/Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/equipped-SUITSTORAGE-dog.png deleted file mode 100644 index a0717cb5986e4468ffce39f6a5ee613b9ab82076..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11354 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 diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/meta.json b/Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/meta.json index 002b5c23a6a..b2f8b619d53 100644 --- a/Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/1592a112e3d33eec4a0704b518a138d5a976f455, inhand-left and inhand-right by SlamBamActionman (Github). Dog states modified from base states by Sparlight (GitHub).", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/1592a112e3d33eec4a0704b518a138d5a976f455, inhand-left and inhand-right by SlamBamActionman (Github).", "size": { "x": 32, "y": 32 @@ -60,14 +60,6 @@ ] ] }, - { - "name": "equipped-BACKPACK-dog", - "directions": 4 - }, - { - "name": "on-equipped-BACKPACK-dog", - "directions": 4 - }, { "name": "equipped-SUITSTORAGE", "directions": 4 @@ -97,14 +89,6 @@ 0.1 ] ] - }, - { - "name": "equipped-SUITSTORAGE-dog", - "directions": 4 - }, - { - "name": "on-equipped-SUITSTORAGE-dog", - "directions": 4 } ] } diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/on-equipped-BACKPACK-dog.png b/Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/on-equipped-BACKPACK-dog.png deleted file mode 100644 index a0717cb5986e4468ffce39f6a5ee613b9ab82076..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11354 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 diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/on-equipped-SUITSTORAGE-dog.png b/Resources/Textures/Objects/Tanks/Jetpacks/mini.rsi/on-equipped-SUITSTORAGE-dog.png deleted file mode 100644 index a0717cb5986e4468ffce39f6a5ee613b9ab82076..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11354 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 diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/security.rsi/equipped-BACKPACK-dog.png b/Resources/Textures/Objects/Tanks/Jetpacks/security.rsi/equipped-BACKPACK-dog.png deleted file mode 100644 index b4305475732219a4e7247a46049185a58dc975b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10978 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 V4({FN@L%&nSzbe~TE;T?{{SSe9!LNH diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/security.rsi/equipped-SUITSTORAGE-dog.png b/Resources/Textures/Objects/Tanks/Jetpacks/security.rsi/equipped-SUITSTORAGE-dog.png deleted file mode 100644 index b4305475732219a4e7247a46049185a58dc975b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10978 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 V4({FN@L%&nSzbe~TE;T?{{SSe9!LNH diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/security.rsi/meta.json b/Resources/Textures/Objects/Tanks/Jetpacks/security.rsi/meta.json index 81d7f4d3884..bc260937b38 100644 --- a/Resources/Textures/Objects/Tanks/Jetpacks/security.rsi/meta.json +++ b/Resources/Textures/Objects/Tanks/Jetpacks/security.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/1592a112e3d33eec4a0704b518a138d5a976f455. Dog states modified from base states by Sparlight (GitHub).", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/1592a112e3d33eec4a0704b518a138d5a976f455.", "size": { "x": 32, "y": 32 @@ -55,14 +55,6 @@ ] ] }, - { - "name": "equipped-BACKPACK-dog", - "directions": 4 - }, - { - "name": "on-equipped-BACKPACK-dog", - "directions": 4 - }, { "name": "equipped-SUITSTORAGE", "directions": 4 @@ -88,14 +80,6 @@ 0.2 ] ] - }, - { - "name": "equipped-SUITSTORAGE-dog", - "directions": 4 - }, - { - "name": "on-equipped-SUITSTORAGE-dog", - "directions": 4 } ] } diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/security.rsi/on-equipped-BACKPACK-dog.png b/Resources/Textures/Objects/Tanks/Jetpacks/security.rsi/on-equipped-BACKPACK-dog.png deleted file mode 100644 index b4305475732219a4e7247a46049185a58dc975b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10978 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 V4({FN@L%&nSzbe~TE;T?{{SSe9!LNH diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/security.rsi/on-equipped-SUITSTORAGE-dog.png b/Resources/Textures/Objects/Tanks/Jetpacks/security.rsi/on-equipped-SUITSTORAGE-dog.png deleted file mode 100644 index b4305475732219a4e7247a46049185a58dc975b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10978 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 V4({FN@L%&nSzbe~TE;T?{{SSe9!LNH diff --git a/Resources/Textures/Objects/Tanks/Jetpacks/void.rsi/equipped-BACKPACK-dog.png b/Resources/Textures/Objects/Tanks/Jetpacks/void.rsi/equipped-BACKPACK-dog.png deleted file mode 100644 index 8e2079b6ff136ef6c996374e85669c13acbcce64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10464 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 Date: Wed, 25 Feb 2026 01:35:45 +0000 Subject: [PATCH 396/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index fc4c78102b8..e5f24a657a2 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: NoreUhh - changes: - - message: The Ian suit makes you bark now. Woof! - type: Tweak - id: 9034 - time: '2025-10-05T08:06:06.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40694 - author: Princess-Cheeseballs changes: - message: Incendiary rounds now deal a mix of pierce damage and heat damage instead @@ -3986,3 +3979,10 @@ id: 9542 time: '2026-02-23T23:07:01.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42915 +- author: TiniestShark + changes: + - message: Removed the majority of unique corgi sprites. + type: Remove + id: 9543 + time: '2026-02-25T01:34:33.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42696 From 01c8cd8905fc008135440b82184c1b42caf2a9a9 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Wed, 25 Feb 2026 15:21:05 +0100 Subject: [PATCH 397/603] Revert "Remove dwarves" (#43027) * Revert "Remove dwarves (#42882)" This reverts commit fe4397e340e8c9ffa07f5ef4a275c0b9672b9b35. * Update Changelog.yml --- Resources/Changelog/Changelog.yml | 7 -- .../en-US/metabolism/metabolizer-types.ftl | 1 + Resources/Locale/en-US/species/species.ftl | 1 + .../Prototypes/Accents/word_replacements.yml | 1 + Resources/Prototypes/Body/Species/dwarf.yml | 94 +++++++++++++++++++ .../Chemistry/metabolizer_types.yml | 4 + Resources/Prototypes/Guidebook/species.yml | 6 ++ .../Loadouts/Miscellaneous/survival.yml | 2 + .../Reagents/Consumable/Drink/alcohol.yml | 44 +++++++++ Resources/Prototypes/Species/dwarf.yml | 7 ++ .../Prototypes/Species/species_weights.yml | 1 + .../Prototypes/Voice/speech_emote_sounds.yml | 86 +++++++++++++++++ Resources/ServerInfo/Guidebook/Mobs/Dwarf.xml | 11 +++ .../ServerInfo/Guidebook/Mobs/Species.xml | 1 + .../NewPlayer/YourFirstCharacter.xml | 2 +- .../CoreRules/RuleC13CharacterNames.xml | 4 + Resources/migration.yml | 6 -- 17 files changed, 264 insertions(+), 14 deletions(-) create mode 100644 Resources/Prototypes/Body/Species/dwarf.yml create mode 100644 Resources/Prototypes/Species/dwarf.yml create mode 100644 Resources/ServerInfo/Guidebook/Mobs/Dwarf.xml diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index e5f24a657a2..96108e0701d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -3817,13 +3817,6 @@ id: 9519 time: '2026-02-12T14:42:35.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42880 -- author: PJB3005 - changes: - - message: Dwarves have been removed. - type: Remove - id: 9520 - time: '2026-02-13T00:31:33.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/42882 - author: bnuuy changes: - message: The fake mindshield action button now correctly shows your mindshield diff --git a/Resources/Locale/en-US/metabolism/metabolizer-types.ftl b/Resources/Locale/en-US/metabolism/metabolizer-types.ftl index 5fb354cceb3..372c5c549e0 100644 --- a/Resources/Locale/en-US/metabolism/metabolizer-types.ftl +++ b/Resources/Locale/en-US/metabolism/metabolizer-types.ftl @@ -6,5 +6,6 @@ metabolizer-type-slime = Slime metabolizer-type-vox = Vox metabolizer-type-rat = Rat metabolizer-type-plant = Plant +metabolizer-type-dwarf = Dwarf metabolizer-type-moth = Moth metabolizer-type-arachnid = Arachnid diff --git a/Resources/Locale/en-US/species/species.ftl b/Resources/Locale/en-US/species/species.ftl index f287c6f88b2..8c0900bb215 100644 --- a/Resources/Locale/en-US/species/species.ftl +++ b/Resources/Locale/en-US/species/species.ftl @@ -1,6 +1,7 @@ ## Species Names species-name-human = Human +species-name-dwarf = Dwarf species-name-reptilian = Reptilian species-name-slime = Slime Person species-name-diona = Diona diff --git a/Resources/Prototypes/Accents/word_replacements.yml b/Resources/Prototypes/Accents/word_replacements.yml index 66a57e0cab0..cefaf61060c 100644 --- a/Resources/Prototypes/Accents/word_replacements.yml +++ b/Resources/Prototypes/Accents/word_replacements.yml @@ -23,6 +23,7 @@ accent-mobster-words-16: accent-mobster-words-replace-16 accent-mobster-words-17: accent-mobster-words-replace-17 + - type: accent id: pirate wordReplacements: diff --git a/Resources/Prototypes/Body/Species/dwarf.yml b/Resources/Prototypes/Body/Species/dwarf.yml new file mode 100644 index 00000000000..648b47fbfc0 --- /dev/null +++ b/Resources/Prototypes/Body/Species/dwarf.yml @@ -0,0 +1,94 @@ +- type: entity + parent: AppearanceHuman + id: AppearanceDwarf + name: dwarf appearance + components: + - type: Inventory + femaleDisplacements: + jumpsuit: + sizeMaps: + 32: + sprite: Mobs/Species/Human/displacement.rsi + state: jumpsuit-female + - type: InitialBody + organs: + Torso: OrganHumanTorso + Head: OrganHumanHead + ArmLeft: OrganHumanArmLeft + ArmRight: OrganHumanArmRight + HandRight: OrganHumanHandRight + HandLeft: OrganHumanHandLeft + LegLeft: OrganHumanLegLeft + LegRight: OrganHumanLegRight + FootLeft: OrganHumanFootLeft + FootRight: OrganHumanFootRight + Brain: OrganHumanBrain + Eyes: OrganHumanEyes + Tongue: OrganHumanTongue + Appendix: OrganHumanAppendix + Ears: OrganHumanEars + Lungs: OrganHumanLungs + Heart: OrganDwarfHeart + Stomach: OrganDwarfStomach + Liver: OrganDwarfLiver + Kidneys: OrganHumanKidneys + - type: HumanoidProfile + species: Dwarf + - type: ScaleVisuals + scale: 1, 0.8 + +- type: entity + parent: + - AppearanceDwarf + - MobHuman + id: MobDwarf + name: Urist McHands the Dwarf + components: + - type: Fixtures + fixtures: # TODO: This needs a second fixture just for mob collisions. + fix1: + shape: + !type:PhysShapeCircle + radius: 0.35 + # they r smaller + density: 120 + restitution: 0.0 + mask: + - MobMask + layer: + - MobLayer + - type: Vocal + sounds: + Male: UnisexDwarf + Female: FemaleDwarf + Unsexed: UnisexDwarf + - type: Speech + speechSounds: Bass + +- type: entity + parent: OrganBase + id: OrganDwarf + abstract: true + suffix: Dwarf + +- type: entity + id: OrganDwarfMetabolizer + abstract: true + components: + - type: Metabolizer + metabolizerTypes: [ Dwarf ] + +- type: entity + parent: [ OrganDwarfMetabolizer, OrganHumanStomach ] + id: OrganDwarfStomach + components: + - type: Metabolizer + maxReagents: 5 + +- type: entity + parent: [ OrganDwarfMetabolizer, OrganHumanLiver ] + id: OrganDwarfLiver + +- type: entity + parent: [ OrganDwarfMetabolizer, OrganHumanHeart ] + id: OrganDwarfHeart diff --git a/Resources/Prototypes/Chemistry/metabolizer_types.yml b/Resources/Prototypes/Chemistry/metabolizer_types.yml index c31db23f71e..3f7bf05b35e 100644 --- a/Resources/Prototypes/Chemistry/metabolizer_types.yml +++ b/Resources/Prototypes/Chemistry/metabolizer_types.yml @@ -33,6 +33,10 @@ id: Plant name: metabolizer-type-plant +- type: metabolizerType + id: Dwarf + name: metabolizer-type-dwarf + - type: metabolizerType id: Moth name: metabolizer-type-moth diff --git a/Resources/Prototypes/Guidebook/species.yml b/Resources/Prototypes/Guidebook/species.yml index dbdd362dc8f..9783b23285d 100644 --- a/Resources/Prototypes/Guidebook/species.yml +++ b/Resources/Prototypes/Guidebook/species.yml @@ -5,6 +5,7 @@ children: - Arachnid - Diona + - Dwarf - Human - Moth - Reptilian @@ -22,6 +23,11 @@ name: species-name-diona text: "/ServerInfo/Guidebook/Mobs/Diona.xml" +- type: guideEntry + id: Dwarf + name: species-name-dwarf + text: "/ServerInfo/Guidebook/Mobs/Dwarf.xml" + - type: guideEntry id: Human name: species-name-human diff --git a/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml b/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml index 1e71c07ef03..7ba7c01103f 100644 --- a/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml +++ b/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml @@ -14,6 +14,7 @@ species: - Arachnid - Diona + - Dwarf - Human - Moth - Reptilian @@ -72,6 +73,7 @@ species: - Arachnid - Diona + - Dwarf - Human - Reptilian - Vulpkanin diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml index bf82bd911e9..538a83e2c23 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml @@ -150,15 +150,43 @@ - !type:ReagentCondition reagent: Ethanol min: 15 + - !type:MetabolizerTypeCondition + type: [ Dwarf ] + inverted: true damage: types: Poison: 0.1 + # dwarves take less toxin damage and heal a marginal amount of brute + - !type:HealthChange + conditions: + - !type:ReagentCondition + reagent: Ethanol + min: 15 + - !type:MetabolizerTypeCondition + type: [ Dwarf ] + damage: + types: + Poison: 0.02 + - !type:HealthChange + conditions: + - !type:ReagentCondition + reagent: Ethanol + min: 15 + - !type:MetabolizerTypeCondition + type: [ Dwarf ] + damage: + groups: + Brute: -0.1 - !type:Vomit probability: 0.04 conditions: - !type:ReagentCondition reagent: Ethanol min: 12 + # dwarves immune to vomiting from alcohol + - !type:MetabolizerTypeCondition + type: [ Dwarf ] + inverted: true - !type:Drunk boozePower: 2 @@ -2244,12 +2272,28 @@ - !type:ReagentCondition reagent: BacchusBlessing min: 6 + - !type:MetabolizerTypeCondition + type: [Dwarf] + inverted: true damage: types: Poison: 0.2 # TODO: Figure out poison amount. Ethanol does 0.1, this does 0.2 but also metabolises almost 3 to 4 times as fast as ethanol. This would be more Liver damage when that time arrives. + - !type:HealthChange + conditions: + - !type:ReagentCondition + reagent: BacchusBlessing + min: 6 + - !type:MetabolizerTypeCondition + type: [Dwarf] + damage: + types: + Poison: 0.04 # TODO: Might increase this, even though it's just double of ethanol from 0.02 to 0.04 - !type:Vomit probability: 0.1 #TODO: Tweak vomit probability, maybe make this more violent and poisonous but the body aggressively purges it... conditions: - !type:ReagentCondition reagent: BacchusBlessing min: 8 + - !type:MetabolizerTypeCondition + type: [Dwarf] + inverted: true diff --git a/Resources/Prototypes/Species/dwarf.yml b/Resources/Prototypes/Species/dwarf.yml new file mode 100644 index 00000000000..0c2fbaf8b63 --- /dev/null +++ b/Resources/Prototypes/Species/dwarf.yml @@ -0,0 +1,7 @@ +- type: species + id: Dwarf + name: species-name-dwarf + roundStart: true + prototype: MobDwarf + dollPrototype: AppearanceDwarf + skinColoration: HumanToned diff --git a/Resources/Prototypes/Species/species_weights.yml b/Resources/Prototypes/Species/species_weights.yml index cd5e7da2b5d..a516795ffb6 100644 --- a/Resources/Prototypes/Species/species_weights.yml +++ b/Resources/Prototypes/Species/species_weights.yml @@ -6,6 +6,7 @@ Reptilian: 4 SlimePerson: 4 Moth: 4 + Dwarf: 2 Diona: 2 Vox: 1 Vulpkanin: 4 diff --git a/Resources/Prototypes/Voice/speech_emote_sounds.yml b/Resources/Prototypes/Voice/speech_emote_sounds.yml index 12637e7f3c8..a88e19f0a10 100644 --- a/Resources/Prototypes/Voice/speech_emote_sounds.yml +++ b/Resources/Prototypes/Voice/speech_emote_sounds.yml @@ -300,6 +300,92 @@ DefaultDeathgasp: collection: DeathGasp +- type: emoteSounds + id: UnisexDwarf + sounds: + Scream: + collection: MaleScreams + Laugh: + collection: MaleLaugh + Sneeze: + collection: MaleSneezes + Cough: + collection: MaleCoughs + CatMeow: + collection: CatMeows + CatHisses: + collection: CatHisses + MonkeyScreeches: + collection: MonkeyScreeches + RobotBeep: + collection: RobotBeeps + Yawn: + collection: MaleYawn + Snore: + collection: Snores + Sigh: + collection: MaleSigh + Honk: + collection: BikeHorn + Crying: + collection: MaleCry + Whistle: + collection: Whistles + Weh: + collection: Weh + Hew: + collection: Hew + Gasp: + collection: MaleGasp + DefaultDeathgasp: + collection: MaleDeathGasp + params: + variation: 0.125 + pitch: 0.75 + +- type: emoteSounds + id: FemaleDwarf + sounds: + Scream: + collection: FemaleScreams + Laugh: + collection: FemaleLaugh + Sneeze: + collection: FemaleSneezes + Cough: + collection: FemaleCoughs + CatMeow: + collection: CatMeows + CatHisses: + collection: CatHisses + MonkeyScreeches: + collection: MonkeyScreeches + RobotBeep: + collection: RobotBeeps + Yawn: + collection: FemaleYawn + Snore: + collection: Snores + Sigh: + collection: FemaleSigh + Honk: + collection: BikeHorn + Crying: + collection: FemaleCry + Whistle: + collection: Whistles + Weh: + collection: Weh + Hew: + collection: Hew + Gasp: + collection: FemaleGasp + DefaultDeathgasp: + collection: FemaleDeathGasp + params: + variation: 0.125 + pitch: 0.75 + - type: emoteSounds id: UnisexMoth params: diff --git a/Resources/ServerInfo/Guidebook/Mobs/Dwarf.xml b/Resources/ServerInfo/Guidebook/Mobs/Dwarf.xml new file mode 100644 index 00000000000..e5ac42c8207 --- /dev/null +++ b/Resources/ServerInfo/Guidebook/Mobs/Dwarf.xml @@ -0,0 +1,11 @@ + + # Dwarves + + + + + + Dwarves are similar to humans in most respect, but tolerate alcohol better and are healed by it. + + + diff --git a/Resources/ServerInfo/Guidebook/Mobs/Species.xml b/Resources/ServerInfo/Guidebook/Mobs/Species.xml index 45b21171806..a10b5fc4af9 100644 --- a/Resources/ServerInfo/Guidebook/Mobs/Species.xml +++ b/Resources/ServerInfo/Guidebook/Mobs/Species.xml @@ -6,6 +6,7 @@ + diff --git a/Resources/ServerInfo/Guidebook/NewPlayer/YourFirstCharacter.xml b/Resources/ServerInfo/Guidebook/NewPlayer/YourFirstCharacter.xml index b3cd5118843..87f83fea0c0 100644 --- a/Resources/ServerInfo/Guidebook/NewPlayer/YourFirstCharacter.xml +++ b/Resources/ServerInfo/Guidebook/NewPlayer/YourFirstCharacter.xml @@ -10,7 +10,7 @@ If you'd like to be [color=#a4885c]methodical[/color], though, creating a charac ## Choosing a Species Most species have minor differences, which you can read about under the [color=#a4885c]Species[/color] entry. -However, you may find that it's easier to make your first character as a human, moth, or reptilian. +However, you may find that it's easier to make your first character as a human, moth, dwarf or reptilian. This shouldn't discourage you from getting creative with your character, though. diff --git a/Resources/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC13CharacterNames.xml b/Resources/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC13CharacterNames.xml index 47155cdc731..97880466d44 100644 --- a/Resources/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC13CharacterNames.xml +++ b/Resources/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC13CharacterNames.xml @@ -24,6 +24,10 @@ - [color=#994444]Bad:[/color] Ben Dover - [color=#994444]Bad:[/color] Mike Hunt + Dwarfs typically use the human convention in a viking theme. + - [color=#449944]Acceptable:[/color] Ingrid Firebreath + - [color=#449944]Acceptable:[/color] Erik Lightningclaw + Lizards typically use the Verb-article-Noun convention. - [color=#449944]Acceptable:[/color] Cleans-the-Airlocks - [color=#994444]Bad:[/color] Bans-the-Admins diff --git a/Resources/migration.yml b/Resources/migration.yml index e4623a0dbf1..71959fec08d 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -804,9 +804,3 @@ TowelColorYellow: null TowelColorMaroon: null TowelColorSilver: null TowelColorMime: null - -# 2026-02-11 -MobDwarf: MobHuman -OrganDwarfHeart: OrganHumanHeart -OrganDwarfStomach: OrganHumanStomach -OrganDwarfLiver: OrganHumanLiver From 65ff6c4c720eb7e9aa08bab12c9b82d9be360d6a Mon Sep 17 00:00:00 2001 From: korczoczek Date: Wed, 25 Feb 2026 22:53:36 +0100 Subject: [PATCH 398/603] Fix repeated Localization warnings when viewing the Power Monitoring Console (#43037) no double work --- Content.Client/Power/PowerMonitoringWindow.xaml.Widgets.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Content.Client/Power/PowerMonitoringWindow.xaml.Widgets.cs b/Content.Client/Power/PowerMonitoringWindow.xaml.Widgets.cs index a9752fa4e27..f1787bdfb69 100644 --- a/Content.Client/Power/PowerMonitoringWindow.xaml.Widgets.cs +++ b/Content.Client/Power/PowerMonitoringWindow.xaml.Widgets.cs @@ -95,11 +95,12 @@ public void UpdateWindowEntryButton(NetEntity netEntity, PowerMonitoringButton b button.TextureRect.Texture = _spriteSystem.Frame0(new SpriteSpecifier.Rsi(new ResPath(entry.MetaData.Value.SpritePath), entry.MetaData.Value.SpriteState)); // Update name - var name = Loc.GetString(entry.MetaData.Value.EntityName); + // no Loc.GetString, as the name already gets localized in PowerMonitoringConsoleSystem + var name = entry.MetaData.Value.EntityName; button.NameLocalized.Text = name; // Update tool tip - button.ToolTip = Loc.GetString(name); + button.ToolTip = name; // Update power value // Don't use SI prefixes, just give the number in W, so that it is readily apparent which consumer is using a lot of power. From 7e5ddfd280f98ab31d6632c74bfc1301da96cae2 Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Thu, 26 Feb 2026 00:19:52 +0100 Subject: [PATCH 399/603] Give borgs default prying (#41812) * init * 1.5 * remove powered * CompBorgModules, prying alert * give to NT borgs and derelict borgs * review * review 2 * comment --- .../Prying/Components/PryingComponent.cs | 9 ++++ Content.Shared/Prying/Systems/PryingSystem.cs | 21 +++++++++ .../Borgs/Components/BorgModuleComponent.cs | 7 +++ .../ComponentBorgModuleComponent.cs | 22 ++++++++++ .../Silicons/Borgs/SharedBorgSystem.API.cs | 9 ++++ .../Silicons/Borgs/SharedBorgSystem.Module.cs | 43 +++++++++++++++++++ .../Silicons/Borgs/SharedBorgSystem.Relay.cs | 10 +++-- Resources/Locale/en-US/alerts/alerts.ftl | 3 ++ Resources/Locale/en-US/borg/borg.ftl | 1 + Resources/Prototypes/Alerts/alerts.yml | 11 +++++ .../Entities/Mobs/Player/silicon.yml | 5 +++ .../Specific/Robotics/borg_modules.yml | 17 ++++++++ Resources/Prototypes/borg_types.yml | 6 +++ 13 files changed, 161 insertions(+), 3 deletions(-) create mode 100644 Content.Shared/Silicons/Borgs/Components/ComponentBorgModuleComponent.cs diff --git a/Content.Shared/Prying/Components/PryingComponent.cs b/Content.Shared/Prying/Components/PryingComponent.cs index 8bd85d020f9..ab700a11651 100644 --- a/Content.Shared/Prying/Components/PryingComponent.cs +++ b/Content.Shared/Prying/Components/PryingComponent.cs @@ -1,5 +1,7 @@ +using Content.Shared.Alert; using Robust.Shared.Audio; using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; namespace Content.Shared.Prying.Components; @@ -18,6 +20,7 @@ public sealed partial class PryingComponent : Component ///
diff --git a/Resources/Maps/Shuttles/ShuttleEvent/cruiser.yml b/Resources/Maps/Shuttles/ShuttleEvent/cruiser.yml deleted file mode 100644 index d779c5f7c33..00000000000 --- a/Resources/Maps/Shuttles/ShuttleEvent/cruiser.yml +++ /dev/null @@ -1,4096 +0,0 @@ -meta: - format: 7 - category: Grid - engineVersion: 266.0.0 - forkId: "" - forkVersion: "" - time: 08/17/2025 23:21:08 - entityCount: 566 -maps: [] -grids: -- 1 -orphans: -- 1 -nullspace: [] -tilemap: - 0: Space - 32: FloorDark - 38: FloorDarkOffset - 1: FloorMetalDiamond - 96: FloorSteel - 111: FloorTechMaint - 113: FloorTechMaint3 - 115: FloorWhite - 128: Lattice - 129: Plating -entities: -- proto: "" - entities: - - uid: 1 - components: - - type: MetaData - name: NT-Cruiser - - type: Transform - pos: 0.052083373,-0.6041667 - parent: invalid - - type: MapGrid - chunks: - 0,0: - ind: 0,0 - tiles: bwAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHMAAAAAAwBgAAAAAAMAgQAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzAAAAAAIAYAAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcwAAAAACAGAAAAAAAwCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHMAAAAAAwBgAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAACAGAAAAAAAwCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAQBgAAAAAAIAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAEAYAAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAACAGAAAAAAAgCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAIAIAAAAAABACAAAAAAAQAgAAAAAAAAgQAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAADACAAAAAAAgAgAAAAAAAAIAAAAAAAACAAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAgAgAAAAAAIAIAAAAAAAACAAAAAAAAAgAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAMAbwAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAG8AAAAAAAAgAAAAAAAAIAAAAAAAAIEAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - version: 7 - 0,-1: - ind: 0,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAEAAAAAAACBAAAAAAAAAAAAAAAAAIAAAAAAAACBAAAAAAAAgQAAAAAAAHEAAAAAAQBxAAAAAAMAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG8AAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAcQAAAAAAAHEAAAAAAwBxAAAAAAAAcQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmAAAAAAAAJgAAAAAAAGAAAAAAAgBgAAAAAAEAgQAAAAAAAIEAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJgAAAAAAACYAAAAAAABgAAAAAAEAYAAAAAABAG8AAAAAAABgAAAAAAEAYAAAAAABAGAAAAAAAgCBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYAAAAAAAAmAAAAAAAAYAAAAAACAGAAAAAAAgBvAAAAAAAAYAAAAAAAAGAAAAAAAgBgAAAAAAEAbwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAIAYAAAAAACAGAAAAAAAQCBAAAAAAAAgQAAAAAAAGAAAAAAAQBgAAAAAAEAYAAAAAACAG8AAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAACAGAAAAAAAwCBAAAAAAAAgAAAAAAAAAAAAAAAAACBAAAAAAAAYAAAAAADAGAAAAAAAQBvAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - version: 7 - -1,0: - ind: -1,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAGAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAYAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAGAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAYAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAGAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAYAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAEAIAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgQAAAAAAACAAAAAAAAAgAAAAAAAAbwAAAAAAAA== - version: 7 - -1,-1: - ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAABxAAAAAAAAcQAAAAADAIEAAAAAAACBAAAAAAAAgAAAAAAAAAAAAAAAAACBAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAcQAAAAABAHEAAAAAAwBxAAAAAAIAcQAAAAADAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAYAAAAAABAGAAAAAAAQAmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAYAAAAAABAGAAAAAAAQBgAAAAAAMAbwAAAAAAAGAAAAAAAwBgAAAAAAAAJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAbwAAAAAAAGAAAAAAAwBgAAAAAAIAYAAAAAADAG8AAAAAAABgAAAAAAMAYAAAAAABACYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAG8AAAAAAABgAAAAAAEAYAAAAAACAGAAAAAAAQCBAAAAAAAAgQAAAAAAAGAAAAAAAwBgAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAABvAAAAAAAAYAAAAAACAGAAAAAAAACBAAAAAAAAAAAAAAAAAIAAAAAAAACBAAAAAAAAYAAAAAADAA== - version: 7 - -1,1: - ind: -1,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIEAAAAAAAAgAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - version: 7 - 0,1: - ind: 0,1 - tiles: gQAAAAAAAG8AAAAAAAAgAAAAAAAAgQAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - version: 7 - - type: Broadphase - - type: Physics - bodyStatus: InAir - angularDamping: 0.05 - linearDamping: 0.05 - fixedRotation: False - bodyType: Dynamic - - type: Fixtures - fixtures: {} - - type: OccluderTree - - type: SpreaderGrid - - type: Shuttle - dampingModifier: 0.25 - - type: GridPathfinding - - type: Gravity - gravityShakeSound: !type:SoundPathSpecifier - path: /Audio/Effects/alert.ogg - - type: DecalGrid - chunkCollection: - version: 2 - nodes: - - node: - color: '#FFFFFFFF' - id: BrickTileDarkLineE - decals: - 79: 1,-4 - - node: - color: '#FFFFFFFF' - id: BrickTileDarkLineN - decals: - 78: 0,-3 - - node: - color: '#FFFFFFFF' - id: BrickTileDarkLineS - decals: - 80: 0,-5 - - node: - color: '#FFFFFFFF' - id: BrickTileDarkLineW - decals: - 77: -1,-4 - - node: - color: '#334E6DC8' - id: BrickTileWhiteInnerNe - decals: - 8: 1,11 - - node: - color: '#334E6DC8' - id: BrickTileWhiteInnerNw - decals: - 7: -1,11 - - node: - color: '#334E6DC8' - id: BrickTileWhiteLineE - decals: - 6: 1,12 - - node: - color: '#334E6DC8' - id: BrickTileWhiteLineW - decals: - 5: -1,12 - - node: - color: '#52B4E996' - id: CheckerNESW - decals: - 69: 0,1 - 70: 0,2 - 71: 0,3 - 72: 0,4 - - node: - color: '#FA750096' - id: CheckerNESW - decals: - 34: -1,-2 - - node: - color: '#FA750096' - id: CheckerNWSE - decals: - 35: 1,-2 - - node: - color: '#DE3A3A96' - id: FullTileOverlayGreyscale - decals: - 9: 0,14 - 10: 0,15 - - node: - color: '#FA750096' - id: FullTileOverlayGreyscale - decals: - 36: -7,-3 - 37: -7,-2 - 38: -7,-1 - 39: 7,-3 - 40: 7,-2 - 41: 7,-1 - - node: - color: '#334E6DC8' - id: HalfTileOverlayGreyscale - decals: - 0: 0,13 - - node: - color: '#808080FF' - id: HalfTileOverlayGreyscale - decals: - 62: -2,-2 - 63: 2,-2 - - node: - color: '#FA750096' - id: HalfTileOverlayGreyscale180 - decals: - 64: -2,-2 - 65: 2,-2 - - node: - color: '#808080FF' - id: HalfTileOverlayGreyscale270 - decals: - 42: -1,-1 - 52: -1,1 - 53: -1,2 - 54: -1,3 - 55: -1,4 - 56: -1,6 - 57: -1,7 - 58: -1,8 - 59: -1,9 - - node: - color: '#DE3A3A96' - id: HalfTileOverlayGreyscale270 - decals: - 11: 1,14 - 68: 1,15 - - node: - color: '#FA750096' - id: HalfTileOverlayGreyscale270 - decals: - 20: 1,9 - 21: 1,8 - 22: 1,7 - 23: 1,6 - 24: 1,4 - 25: 1,3 - 26: 1,2 - 27: 1,1 - 28: 1,-1 - - node: - color: '#808080FF' - id: HalfTileOverlayGreyscale90 - decals: - 43: 1,-1 - 44: 1,1 - 45: 1,2 - 46: 1,3 - 47: 1,4 - 48: 1,7 - 49: 1,6 - 50: 1,8 - 51: 1,9 - - node: - color: '#DE3A3A96' - id: HalfTileOverlayGreyscale90 - decals: - 12: -1,14 - 13: -1,15 - - node: - color: '#FA750096' - id: HalfTileOverlayGreyscale90 - decals: - 16: -1,9 - 17: -1,8 - 18: -1,7 - 19: -1,6 - 29: -1,-1 - 30: -1,1 - 31: -1,2 - 32: -1,3 - 33: -1,4 - - node: - color: '#808080FF' - id: QuarterTileOverlayGreyscale - decals: - 60: -1,-2 - - node: - color: '#DE3A3A96' - id: QuarterTileOverlayGreyscale180 - decals: - 14: -1,16 - - node: - color: '#DE3A3A96' - id: QuarterTileOverlayGreyscale270 - decals: - 15: 1,16 - - node: - color: '#808080FF' - id: QuarterTileOverlayGreyscale90 - decals: - 61: 1,-2 - - node: - color: '#FFFFFFFF' - id: StandClearGreyscale - decals: - 81: 0,-4 - - node: - color: '#334E6DC8' - id: ThreeQuarterTileOverlayGreyscale - decals: - 1: -1,13 - 4: -2,11 - - node: - color: '#FA750096' - id: ThreeQuarterTileOverlayGreyscale - decals: - 67: 7,-4 - - node: - color: '#334E6DC8' - id: ThreeQuarterTileOverlayGreyscale90 - decals: - 2: 1,13 - 3: 2,11 - - node: - color: '#FA750096' - id: ThreeQuarterTileOverlayGreyscale90 - decals: - 66: -7,-4 - - node: - color: '#FFFFFFFF' - id: WarnCornerGreyscaleNE - decals: - 75: 1,-3 - - node: - color: '#FFFFFFFF' - id: WarnCornerGreyscaleSW - decals: - 76: -1,-5 - - node: - color: '#FFFFFFFF' - id: WarnCornerNW - decals: - 74: -1,-3 - - node: - color: '#FFFFFFFF' - id: WarnCornerSE - decals: - 73: 1,-5 - - type: GridAtmosphere - version: 2 - data: - tiles: - 0,0: - 0: 13105 - 0,-1: - 0: 14335 - 1: 32768 - -1,0: - 0: 34944 - 0,1: - 0: 13075 - -1,1: - 0: 34824 - 0,2: - 0: 61747 - -1,2: - 0: 57480 - 1: 256 - 0,3: - 0: 65535 - -1,3: - 0: 61439 - 0,4: - 0: 6 - 1,2: - 1: 8448 - 1,3: - 0: 273 - 1: 8192 - 1,4: - 1: 1 - 1,0: - 1: 32 - 0: 192 - 1,-1: - 0: 52991 - 2,0: - 0: 16 - 1: 32 - 2,-1: - 0: 8224 - 0,-2: - 0: 61472 - -1,-2: - 0: 57472 - 1: 16 - -1,-1: - 0: 36095 - 1: 8192 - 1,-2: - 1: 16 - 0: 20106 - 1,-3: - 1: 512 - 0: 3072 - 2,-3: - 0: 256 - 1: 512 - 2,-2: - 0: 4369 - -3,0: - 1: 128 - -3,-1: - 0: 32896 - -2,0: - 0: 112 - 1: 128 - -2,-1: - 0: 28398 - -2,2: - 1: 32768 - -2,3: - 1: 32768 - -1,4: - 1: 1 - 0: 12 - -3,-3: - 1: 2048 - -2,-3: - 0: 1792 - 1: 2048 - -2,-2: - 0: 24379 - uniqueMixes: - - volume: 2500 - temperature: 293.15 - moles: - - 21.824879 - - 82.10312 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - immutable: True - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - chunkSize: 4 - - type: GasTileOverlay - - type: RadiationGridResistance - - type: ImplicitRoof -- proto: AirAlarm - entities: - - uid: 502 - components: - - type: Transform - pos: 2.5,-0.5 - parent: 1 - - type: DeviceList - devices: - - 494 - - 493 - - type: Fixtures - fixtures: {} - - uid: 506 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,10.5 - parent: 1 - - type: DeviceList - devices: - - 505 - - type: Fixtures - fixtures: {} - - uid: 507 - components: - - type: Transform - pos: -0.5,5.5 - parent: 1 - - type: DeviceList - devices: - - 504 - - type: Fixtures - fixtures: {} -- proto: AirAlarmVox - entities: - - uid: 566 - components: - - type: Transform - pos: -2.5,-1.5 - parent: 1 - - type: Fixtures - fixtures: {} -- proto: AirCanister - entities: - - uid: 500 - components: - - type: Transform - anchored: True - pos: -7.5,-6.5 - parent: 1 - - type: Physics - bodyType: Static - - uid: 501 - components: - - type: Transform - anchored: True - pos: 8.5,-6.5 - parent: 1 - - type: Physics - bodyType: Static -- proto: Airlock - entities: - - uid: 166 - components: - - type: Transform - pos: 0.5,10.5 - parent: 1 -- proto: AirlockGlass - entities: - - uid: 143 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-3.5 - parent: 1 - - uid: 146 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,-3.5 - parent: 1 - - uid: 224 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,-2.5 - parent: 1 - - uid: 225 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 - - uid: 226 - components: - - type: Transform - pos: 0.5,5.5 - parent: 1 - - uid: 245 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,-2.5 - parent: 1 -- proto: AirlockGlassShuttle - entities: - - uid: 193 - components: - - type: Transform - pos: 1.5,-6.5 - parent: 1 - - uid: 194 - components: - - type: Transform - pos: -0.5,-6.5 - parent: 1 -- proto: AirlockMaint - entities: - - uid: 365 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,-4.5 - parent: 1 - - uid: 369 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,-4.5 - parent: 1 -- proto: AirlockShuttle - entities: - - uid: 66 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -8.5,-0.5 - parent: 1 - - uid: 68 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -8.5,-2.5 - parent: 1 - - uid: 107 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 9.5,-2.5 - parent: 1 - - uid: 109 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 9.5,-0.5 - parent: 1 -- proto: AirSensor - entities: - - uid: 493 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-3.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 502 - - uid: 494 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-3.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 502 - - uid: 504 - components: - - type: Transform - pos: -0.5,2.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 507 - - uid: 505 - components: - - type: Transform - pos: 0.5,12.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 506 -- proto: APCBasic - entities: - - uid: 244 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,10.5 - parent: 1 - - type: Fixtures - fixtures: {} - - uid: 503 - components: - - type: Transform - pos: -1.5,-0.5 - parent: 1 - - type: Fixtures - fixtures: {} -- proto: AtmosDeviceFanDirectional - entities: - - uid: 555 - components: - - type: Transform - pos: -0.5,-6.5 - parent: 1 - - uid: 556 - components: - - type: Transform - pos: 1.5,-6.5 - parent: 1 - - uid: 557 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 9.5,-2.5 - parent: 1 - - uid: 558 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 9.5,-0.5 - parent: 1 - - uid: 559 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -8.5,-2.5 - parent: 1 - - uid: 560 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -8.5,-0.5 - parent: 1 -- proto: BaseComputer - entities: - - uid: 173 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,12.5 - parent: 1 -- proto: Bed - entities: - - uid: 514 - components: - - type: Transform - pos: -0.5,7.5 - parent: 1 - - uid: 516 - components: - - type: Transform - pos: 1.5,7.5 - parent: 1 -- proto: BedsheetMedical - entities: - - uid: 211 - components: - - type: Transform - pos: 1.5,3.5 - parent: 1 - - uid: 212 - components: - - type: Transform - pos: 1.5,2.5 - parent: 1 -- proto: BedsheetOrange - entities: - - uid: 509 - components: - - type: Transform - pos: 1.5,7.5 - parent: 1 - - uid: 512 - components: - - type: Transform - pos: -0.5,7.5 - parent: 1 -- proto: BlastDoor - entities: - - uid: 356 - components: - - type: Transform - pos: -0.5,-5.5 - parent: 1 - - uid: 357 - components: - - type: Transform - pos: 0.5,-5.5 - parent: 1 - - uid: 358 - components: - - type: Transform - pos: 1.5,-5.5 - parent: 1 - - uid: 375 - components: - - type: Transform - pos: -7.5,-0.5 - parent: 1 - - uid: 376 - components: - - type: Transform - pos: -7.5,-1.5 - parent: 1 - - uid: 377 - components: - - type: Transform - pos: -7.5,-2.5 - parent: 1 - - uid: 378 - components: - - type: Transform - pos: 8.5,-0.5 - parent: 1 - - uid: 379 - components: - - type: Transform - pos: 8.5,-1.5 - parent: 1 - - uid: 380 - components: - - type: Transform - pos: 8.5,-2.5 - parent: 1 -- proto: Brutepack - entities: - - uid: 210 - components: - - type: Transform - pos: 1.4114041,1.4592643 - parent: 1 -- proto: ButtonFrameGrey - entities: - - uid: 383 - components: - - type: Transform - pos: -6.5,0.5 - parent: 1 - - uid: 384 - components: - - type: Transform - pos: 7.5,0.5 - parent: 1 - - uid: 386 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-5.5 - parent: 1 -- proto: CableApcExtension - entities: - - uid: 221 - components: - - type: Transform - pos: 7.5,-7.5 - parent: 1 - - uid: 228 - components: - - type: Transform - pos: 7.5,-5.5 - parent: 1 - - uid: 231 - components: - - type: Transform - pos: 7.5,-6.5 - parent: 1 - - uid: 232 - components: - - type: Transform - pos: 6.5,-4.5 - parent: 1 - - uid: 234 - components: - - type: Transform - pos: -5.5,-5.5 - parent: 1 - - uid: 242 - components: - - type: Transform - pos: 6.5,-5.5 - parent: 1 - - uid: 246 - components: - - type: Transform - pos: -6.5,-5.5 - parent: 1 - - uid: 250 - components: - - type: Transform - pos: -5.5,-4.5 - parent: 1 - - uid: 269 - components: - - type: Transform - pos: -1.5,-0.5 - parent: 1 - - uid: 287 - components: - - type: Transform - pos: -0.5,-0.5 - parent: 1 - - uid: 288 - components: - - type: Transform - pos: -1.5,-3.5 - parent: 1 - - uid: 289 - components: - - type: Transform - pos: -0.5,-3.5 - parent: 1 - - uid: 290 - components: - - type: Transform - pos: 0.5,-3.5 - parent: 1 - - uid: 291 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 - - uid: 292 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 - - uid: 293 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 - - uid: 296 - components: - - type: Transform - pos: 0.5,2.5 - parent: 1 - - uid: 297 - components: - - type: Transform - pos: 0.5,3.5 - parent: 1 - - uid: 298 - components: - - type: Transform - pos: 1.5,-3.5 - parent: 1 - - uid: 299 - components: - - type: Transform - pos: 2.5,-3.5 - parent: 1 - - uid: 300 - components: - - type: Transform - pos: 3.5,-3.5 - parent: 1 - - uid: 301 - components: - - type: Transform - pos: 4.5,-3.5 - parent: 1 - - uid: 302 - components: - - type: Transform - pos: 5.5,-3.5 - parent: 1 - - uid: 303 - components: - - type: Transform - pos: 6.5,-3.5 - parent: 1 - - uid: 304 - components: - - type: Transform - pos: 6.5,-2.5 - parent: 1 - - uid: 305 - components: - - type: Transform - pos: 7.5,-2.5 - parent: 1 - - uid: 306 - components: - - type: Transform - pos: 7.5,-1.5 - parent: 1 - - uid: 307 - components: - - type: Transform - pos: 7.5,-0.5 - parent: 1 - - uid: 309 - components: - - type: Transform - pos: -2.5,-3.5 - parent: 1 - - uid: 310 - components: - - type: Transform - pos: -3.5,-3.5 - parent: 1 - - uid: 311 - components: - - type: Transform - pos: -4.5,-3.5 - parent: 1 - - uid: 312 - components: - - type: Transform - pos: -5.5,-3.5 - parent: 1 - - uid: 313 - components: - - type: Transform - pos: -5.5,-2.5 - parent: 1 - - uid: 314 - components: - - type: Transform - pos: -6.5,-2.5 - parent: 1 - - uid: 315 - components: - - type: Transform - pos: -6.5,-1.5 - parent: 1 - - uid: 316 - components: - - type: Transform - pos: -6.5,-0.5 - parent: 1 - - uid: 326 - components: - - type: Transform - pos: 0.5,-4.5 - parent: 1 - - uid: 327 - components: - - type: Transform - pos: 0.5,-5.5 - parent: 1 - - uid: 328 - components: - - type: Transform - pos: -0.5,-5.5 - parent: 1 - - uid: 329 - components: - - type: Transform - pos: 1.5,-5.5 - parent: 1 - - uid: 330 - components: - - type: Transform - pos: 1.5,10.5 - parent: 1 - - uid: 331 - components: - - type: Transform - pos: 0.5,10.5 - parent: 1 - - uid: 332 - components: - - type: Transform - pos: 0.5,9.5 - parent: 1 - - uid: 333 - components: - - type: Transform - pos: 0.5,8.5 - parent: 1 - - uid: 334 - components: - - type: Transform - pos: 0.5,7.5 - parent: 1 - - uid: 335 - components: - - type: Transform - pos: 0.5,11.5 - parent: 1 - - uid: 336 - components: - - type: Transform - pos: 0.5,12.5 - parent: 1 - - uid: 337 - components: - - type: Transform - pos: -0.5,12.5 - parent: 1 - - uid: 338 - components: - - type: Transform - pos: -1.5,12.5 - parent: 1 - - uid: 339 - components: - - type: Transform - pos: -1.5,13.5 - parent: 1 - - uid: 340 - components: - - type: Transform - pos: -1.5,14.5 - parent: 1 - - uid: 341 - components: - - type: Transform - pos: -1.5,15.5 - parent: 1 - - uid: 342 - components: - - type: Transform - pos: 1.5,12.5 - parent: 1 - - uid: 343 - components: - - type: Transform - pos: 2.5,12.5 - parent: 1 - - uid: 344 - components: - - type: Transform - pos: 2.5,13.5 - parent: 1 - - uid: 345 - components: - - type: Transform - pos: 2.5,14.5 - parent: 1 - - uid: 346 - components: - - type: Transform - pos: 2.5,15.5 - parent: 1 - - uid: 347 - components: - - type: Transform - pos: 0.5,6.5 - parent: 1 - - uid: 348 - components: - - type: Transform - pos: 0.5,5.5 - parent: 1 - - uid: 349 - components: - - type: Transform - pos: 0.5,4.5 - parent: 1 - - uid: 370 - components: - - type: Transform - pos: -6.5,-7.5 - parent: 1 - - uid: 371 - components: - - type: Transform - pos: -6.5,-6.5 - parent: 1 -- proto: CableHV - entities: - - uid: 229 - components: - - type: Transform - pos: 6.5,-5.5 - parent: 1 - - uid: 230 - components: - - type: Transform - pos: -5.5,-5.5 - parent: 1 - - uid: 237 - components: - - type: Transform - pos: -7.5,-7.5 - parent: 1 - - uid: 238 - components: - - type: Transform - pos: -4.5,-5.5 - parent: 1 - - uid: 239 - components: - - type: Transform - pos: -6.5,-7.5 - parent: 1 - - uid: 241 - components: - - type: Transform - pos: 7.5,-6.5 - parent: 1 - - uid: 243 - components: - - type: Transform - pos: 5.5,-5.5 - parent: 1 - - uid: 266 - components: - - type: Transform - pos: 7.5,-7.5 - parent: 1 - - uid: 267 - components: - - type: Transform - pos: 8.5,-7.5 - parent: 1 - - uid: 268 - components: - - type: Transform - pos: -6.5,-6.5 - parent: 1 - - uid: 367 - components: - - type: Transform - pos: -6.5,-5.5 - parent: 1 - - uid: 368 - components: - - type: Transform - pos: 7.5,-5.5 - parent: 1 -- proto: CableMV - entities: - - uid: 249 - components: - - type: Transform - pos: 6.5,-5.5 - parent: 1 - - uid: 251 - components: - - type: Transform - pos: -5.5,-3.5 - parent: 1 - - uid: 252 - components: - - type: Transform - pos: -4.5,-3.5 - parent: 1 - - uid: 253 - components: - - type: Transform - pos: -3.5,-3.5 - parent: 1 - - uid: 254 - components: - - type: Transform - pos: -2.5,-3.5 - parent: 1 - - uid: 255 - components: - - type: Transform - pos: -1.5,-3.5 - parent: 1 - - uid: 256 - components: - - type: Transform - pos: -0.5,-3.5 - parent: 1 - - uid: 257 - components: - - type: Transform - pos: 0.5,-3.5 - parent: 1 - - uid: 258 - components: - - type: Transform - pos: 1.5,-3.5 - parent: 1 - - uid: 259 - components: - - type: Transform - pos: 2.5,-3.5 - parent: 1 - - uid: 260 - components: - - type: Transform - pos: 3.5,-3.5 - parent: 1 - - uid: 261 - components: - - type: Transform - pos: 4.5,-3.5 - parent: 1 - - uid: 262 - components: - - type: Transform - pos: 5.5,-3.5 - parent: 1 - - uid: 263 - components: - - type: Transform - pos: 6.5,-3.5 - parent: 1 - - uid: 270 - components: - - type: Transform - pos: -1.5,-0.5 - parent: 1 - - uid: 271 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 - - uid: 272 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 - - uid: 273 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 - - uid: 274 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 - - uid: 275 - components: - - type: Transform - pos: 0.5,1.5 - parent: 1 - - uid: 276 - components: - - type: Transform - pos: 0.5,2.5 - parent: 1 - - uid: 277 - components: - - type: Transform - pos: 0.5,3.5 - parent: 1 - - uid: 278 - components: - - type: Transform - pos: 0.5,4.5 - parent: 1 - - uid: 279 - components: - - type: Transform - pos: 0.5,5.5 - parent: 1 - - uid: 280 - components: - - type: Transform - pos: 0.5,6.5 - parent: 1 - - uid: 281 - components: - - type: Transform - pos: 0.5,7.5 - parent: 1 - - uid: 282 - components: - - type: Transform - pos: 0.5,8.5 - parent: 1 - - uid: 283 - components: - - type: Transform - pos: 0.5,9.5 - parent: 1 - - uid: 284 - components: - - type: Transform - pos: 0.5,10.5 - parent: 1 - - uid: 285 - components: - - type: Transform - pos: 1.5,10.5 - parent: 1 - - uid: 286 - components: - - type: Transform - pos: -0.5,-0.5 - parent: 1 - - uid: 318 - components: - - type: Transform - pos: 6.5,-4.5 - parent: 1 - - uid: 319 - components: - - type: Transform - pos: -4.5,-5.5 - parent: 1 - - uid: 320 - components: - - type: Transform - pos: -5.5,-5.5 - parent: 1 - - uid: 321 - components: - - type: Transform - pos: -5.5,-4.5 - parent: 1 - - uid: 373 - components: - - type: Transform - pos: 5.5,-5.5 - parent: 1 -- proto: CableTerminal - entities: - - uid: 264 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 8.5,-7.5 - parent: 1 - - uid: 324 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,-7.5 - parent: 1 -- proto: Catwalk - entities: - - uid: 145 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 8.5,-4.5 - parent: 1 - - uid: 235 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 8.5,-7.5 - parent: 1 - - uid: 240 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.5,-7.5 - parent: 1 - - uid: 248 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -7.5,-7.5 - parent: 1 - - uid: 322 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -6.5,-7.5 - parent: 1 - - uid: 372 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -7.5,-4.5 - parent: 1 -- proto: ChairOfficeLight - entities: - - uid: 200 - components: - - type: Transform - pos: -0.4479709,3.6155143 - parent: 1 -- proto: ChairPilotSeat - entities: - - uid: 167 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,12.5 - parent: 1 - - uid: 172 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,15.5 - parent: 1 - - uid: 174 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,15.5 - parent: 1 - - uid: 182 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,14.5 - parent: 1 - - uid: 187 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,14.5 - parent: 1 -- proto: ChemDispenser - entities: - - uid: 203 - components: - - type: Transform - pos: -0.5,4.5 - parent: 1 -- proto: ChemistryHotplate - entities: - - uid: 204 - components: - - type: Transform - pos: -0.5,2.5 - parent: 1 -- proto: ClosetEmergencyFilledRandom - entities: - - uid: 526 - components: - - type: Transform - pos: -5.5,-0.5 - parent: 1 - - uid: 527 - components: - - type: Transform - pos: 6.5,-0.5 - parent: 1 -- proto: ClosetEmergencyN2 - entities: - - uid: 528 - components: - - type: Transform - pos: 7.5,-6.5 - parent: 1 -- proto: ClosetFireFilled - entities: - - uid: 529 - components: - - type: Transform - pos: -6.5,-6.5 - parent: 1 -- proto: ComfyChair - entities: - - uid: 515 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,8.5 - parent: 1 -- proto: ComputerAlert - entities: - - uid: 177 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,13.5 - parent: 1 -- proto: ComputerComms - entities: - - uid: 180 - components: - - type: Transform - pos: 1.5,13.5 - parent: 1 -- proto: ComputerIFF - entities: - - uid: 168 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,15.5 - parent: 1 -- proto: ComputerPowerMonitoring - entities: - - uid: 179 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,15.5 - parent: 1 -- proto: ComputerRadar - entities: - - uid: 169 - components: - - type: Transform - pos: 2.5,16.5 - parent: 1 - - uid: 170 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,13.5 - parent: 1 - - uid: 175 - components: - - type: Transform - pos: 0.5,13.5 - parent: 1 -- proto: ComputerShuttle - entities: - - uid: 165 - components: - - type: Transform - pos: -1.5,16.5 - parent: 1 -- proto: ComputerSurveillanceCameraMonitor - entities: - - uid: 176 - components: - - type: Transform - pos: -0.5,13.5 - parent: 1 - - uid: 178 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,14.5 - parent: 1 - - uid: 227 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,14.5 - parent: 1 -- proto: CrateFilledSpawner - entities: - - uid: 534 - components: - - type: Transform - pos: -0.5,-4.5 - parent: 1 - - uid: 536 - components: - - type: Transform - pos: -0.5,-2.5 - parent: 1 -- proto: CrateFunArtSupplies - entities: - - uid: 535 - components: - - type: Transform - pos: 0.5,-3.5 - parent: 1 -- proto: CratePermaEscapeSpawner - entities: - - uid: 565 - components: - - type: Transform - pos: 1.5,-4.5 - parent: 1 -- proto: DefibrillatorCabinetFilled - entities: - - uid: 205 - components: - - type: Transform - pos: 1.5,5.5 - parent: 1 - - type: Fixtures - fixtures: {} -- proto: EncryptionKeyFreelance - entities: - - uid: 550 - components: - - type: Transform - pos: 0.4583333,13.465454 - parent: 1 - - uid: 551 - components: - - type: Transform - pos: -3.291667,14.569621 - parent: 1 - - uid: 552 - components: - - type: Transform - pos: -1.4583334,16.402954 - parent: 1 - - uid: 553 - components: - - type: Transform - pos: 2.5416665,16.423786 - parent: 1 - - uid: 554 - components: - - type: Transform - pos: 4.3333335,14.559204 - parent: 1 -- proto: EngineeringVisitorSpawner - entities: - - uid: 547 - components: - - type: Transform - pos: -1.5,15.5 - parent: 1 -- proto: FaxMachineBase - entities: - - uid: 518 - components: - - type: MetaData - name: NT-Cruiser fax machine - - type: Transform - pos: -0.5,9.5 - parent: 1 - - type: FaxMachine - name: NT-Cruiser -- proto: FolderSpawner - entities: - - uid: 530 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.3597107,6.641145 - parent: 1 - - uid: 531 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5992941,6.5057282 - parent: 1 -- proto: GasPassiveVent - entities: - - uid: 468 - components: - - type: Transform - pos: -6.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 469 - components: - - type: Transform - pos: 7.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeBend - entities: - - uid: 236 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-5.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 247 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -6.5,-6.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 405 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,-5.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 420 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-5.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 421 - components: - - type: Transform - pos: 7.5,-5.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 422 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,-6.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 466 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 467 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 523 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 524 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeStraight - entities: - - uid: 407 - components: - - type: Transform - pos: -5.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 408 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 409 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 410 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 412 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 413 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 416 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 417 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 418 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 423 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 424 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 425 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 426 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 427 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 428 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 429 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 431 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 432 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,5.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 433 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,6.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 434 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,7.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 436 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,9.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 437 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,10.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 438 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,11.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 439 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 440 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 441 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 442 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 444 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 445 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 446 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,5.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 447 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,6.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 449 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,8.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 450 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,9.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 451 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,10.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 452 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,11.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 454 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 455 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 456 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 458 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 460 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 461 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 463 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 465 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 470 - components: - - type: Transform - pos: -6.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 471 - components: - - type: Transform - pos: -6.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 472 - components: - - type: Transform - pos: -6.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 473 - components: - - type: Transform - pos: 7.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 474 - components: - - type: Transform - pos: 7.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 475 - components: - - type: Transform - pos: 7.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 476 - components: - - type: Transform - pos: -0.5,12.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 479 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,12.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 480 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,12.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 481 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,12.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 482 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,12.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 483 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,13.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 484 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,13.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 491 - components: - - type: Transform - pos: 3.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 522 - components: - - type: Transform - pos: -2.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeTJunction - entities: - - uid: 406 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 411 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 414 - components: - - type: Transform - pos: -2.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 415 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 419 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 430 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,8.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 435 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 443 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 448 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,7.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 453 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 457 - components: - - type: Transform - pos: 3.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 459 - components: - - type: Transform - pos: -4.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 462 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 477 - components: - - type: Transform - pos: -0.5,13.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 478 - components: - - type: Transform - pos: 1.5,12.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 497 - components: - - type: Transform - pos: 5.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPort - entities: - - uid: 403 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,-6.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 404 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 8.5,-6.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasVentPump - entities: - - uid: 464 - components: - - type: Transform - pos: -5.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 485 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,12.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 486 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,12.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 495 - components: - - type: Transform - pos: 6.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 498 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 499 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,8.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 520 - components: - - type: Transform - pos: 2.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 521 - components: - - type: Transform - pos: -1.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasVentScrubber - entities: - - uid: 487 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,13.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 488 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,13.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 489 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 490 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,7.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 492 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 496 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 508 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 519 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: Gauze - entities: - - uid: 209 - components: - - type: Transform - pos: 1.6614041,1.7873893 - parent: 1 -- proto: GeneratorBasic15kW - entities: - - uid: 265 - components: - - type: Transform - pos: 8.5,-7.5 - parent: 1 - - uid: 308 - components: - - type: Transform - pos: -7.5,-7.5 - parent: 1 -- proto: GravityGeneratorMini - entities: - - uid: 361 - components: - - type: Transform - pos: -7.5,-4.5 - parent: 1 -- proto: Grille - entities: - - uid: 42 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,-5.5 - parent: 1 - - uid: 92 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-5.5 - parent: 1 - - uid: 147 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,14.5 - parent: 1 - - uid: 148 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,13.5 - parent: 1 - - uid: 149 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,12.5 - parent: 1 - - uid: 150 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,16.5 - parent: 1 - - uid: 151 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,17.5 - parent: 1 - - uid: 152 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,17.5 - parent: 1 - - uid: 153 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,17.5 - parent: 1 - - uid: 154 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,17.5 - parent: 1 - - uid: 155 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,17.5 - parent: 1 - - uid: 156 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,17.5 - parent: 1 - - uid: 157 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,16.5 - parent: 1 - - uid: 158 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,14.5 - parent: 1 - - uid: 159 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,13.5 - parent: 1 - - uid: 160 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,12.5 - parent: 1 - - uid: 294 - components: - - type: Transform - pos: -1.5,8.5 - parent: 1 - - uid: 295 - components: - - type: Transform - pos: -1.5,7.5 - parent: 1 - - uid: 350 - components: - - type: Transform - pos: 2.5,8.5 - parent: 1 - - uid: 351 - components: - - type: Transform - pos: 2.5,7.5 - parent: 1 - - uid: 352 - components: - - type: Transform - pos: 2.5,3.5 - parent: 1 - - uid: 353 - components: - - type: Transform - pos: 2.5,2.5 - parent: 1 - - uid: 354 - components: - - type: Transform - pos: -1.5,2.5 - parent: 1 - - uid: 355 - components: - - type: Transform - pos: -1.5,3.5 - parent: 1 - - uid: 538 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,16.5 - parent: 1 -- proto: Gyroscope - entities: - - uid: 364 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 8.5,-4.5 - parent: 1 -- proto: LampGold - entities: - - uid: 41 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.41749543,6.8816767 - parent: 1 -- proto: LargeBeaker - entities: - - uid: 206 - components: - - type: Transform - pos: 1.6457791,4.7717643 - parent: 1 - - uid: 207 - components: - - type: Transform - pos: 1.3176541,4.7092643 - parent: 1 -- proto: LootSpawnerRandomCrateEngineering - entities: - - uid: 533 - components: - - type: Transform - pos: 1.5,-2.5 - parent: 1 -- proto: MedicalBed - entities: - - uid: 196 - components: - - type: Transform - pos: 1.5,3.5 - parent: 1 - - uid: 197 - components: - - type: Transform - pos: 1.5,2.5 - parent: 1 -- proto: Pen - entities: - - uid: 532 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.2451274,6.453645 - parent: 1 -- proto: PlushieHampter - entities: - - uid: 525 - components: - - type: Transform - pos: 1.4262546,7.3712606 - parent: 1 -- proto: PlushieLizard - entities: - - uid: 400 - components: - - type: Transform - rot: 6.283185307179586 rad - pos: -0.4939462,15.561475 - parent: 1 -- proto: PowerCageRecharger - entities: - - uid: 163 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,14.5 - parent: 1 - - type: PointLight - enabled: False - - type: ContainerContainer - containers: - charger_slot: !type:ContainerSlot - showEnts: False - occludes: True - ent: 164 - machine_board: !type:Container - showEnts: False - occludes: True - ents: [] - machine_parts: !type:Container - showEnts: False - occludes: True - ents: [] -- proto: PowerCageSmall - entities: - - uid: 162 - components: - - type: Transform - parent: 161 - - type: Physics - canCollide: False - - uid: 164 - components: - - type: Transform - parent: 163 - - type: Physics - canCollide: False -- proto: Poweredlight - entities: - - uid: 192 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-3.5 - parent: 1 - - uid: 391 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-3.5 - parent: 1 - - uid: 392 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-1.5 - parent: 1 - - uid: 393 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-1.5 - parent: 1 - - uid: 394 - components: - - type: Transform - pos: -0.5,4.5 - parent: 1 - - uid: 395 - components: - - type: Transform - pos: 1.5,9.5 - parent: 1 -- proto: PoweredlightLED - entities: - - uid: 396 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,11.5 - parent: 1 - - uid: 397 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,11.5 - parent: 1 -- proto: PoweredSmallLight - entities: - - uid: 398 - components: - - type: Transform - pos: -6.5,-5.5 - parent: 1 - - uid: 399 - components: - - type: Transform - pos: 7.5,-5.5 - parent: 1 -- proto: Railing - entities: - - uid: 181 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,13.5 - parent: 1 - - uid: 185 - components: - - type: Transform - pos: -0.5,14.5 - parent: 1 - - uid: 186 - components: - - type: Transform - pos: 1.5,14.5 - parent: 1 - - uid: 188 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,13.5 - parent: 1 -- proto: RailingCorner - entities: - - uid: 389 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,11.5 - parent: 1 - - uid: 390 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,11.5 - parent: 1 -- proto: RailingCornerSmall - entities: - - uid: 189 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,14.5 - parent: 1 - - uid: 190 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,14.5 - parent: 1 -- proto: RandomInstruments - entities: - - uid: 561 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,8.5 - parent: 1 -- proto: RandomVendingDrinks - entities: - - uid: 183 - components: - - type: Transform - pos: -2.5,11.5 - parent: 1 -- proto: RandomVendingSnacks - entities: - - uid: 184 - components: - - type: Transform - pos: 3.5,11.5 - parent: 1 -- proto: SalvageMaterialCrateSpawner - entities: - - uid: 537 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 -- proto: SecurityVisitorSpawner - entities: - - uid: 546 - components: - - type: Transform - pos: 2.5,15.5 - parent: 1 -- proto: ShuttleGunPerforator - entities: - - uid: 161 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,15.5 - parent: 1 - - type: ContainerContainer - containers: - machine_board: !type:Container - showEnts: False - occludes: True - ents: [] - machine_parts: !type:Container - showEnts: False - occludes: True - ents: [] - gun_magazine: !type:ContainerSlot - showEnts: False - occludes: True - ent: 162 - cell_slot: !type:ContainerSlot - showEnts: False - occludes: True - ent: null -- proto: ShuttleWindow - entities: - - uid: 2 - components: - - type: Transform - pos: 0.5,16.5 - parent: 1 - - uid: 3 - components: - - type: Transform - pos: -1.5,17.5 - parent: 1 - - uid: 4 - components: - - type: Transform - pos: -2.5,17.5 - parent: 1 - - uid: 5 - components: - - type: Transform - pos: -2.5,16.5 - parent: 1 - - uid: 6 - components: - - type: Transform - pos: 3.5,16.5 - parent: 1 - - uid: 7 - components: - - type: Transform - pos: 3.5,17.5 - parent: 1 - - uid: 8 - components: - - type: Transform - pos: 2.5,17.5 - parent: 1 - - uid: 9 - components: - - type: Transform - pos: 1.5,17.5 - parent: 1 - - uid: 10 - components: - - type: Transform - pos: -0.5,17.5 - parent: 1 - - uid: 31 - components: - - type: Transform - pos: 2.5,8.5 - parent: 1 - - uid: 32 - components: - - type: Transform - pos: 2.5,7.5 - parent: 1 - - uid: 36 - components: - - type: Transform - pos: 2.5,3.5 - parent: 1 - - uid: 37 - components: - - type: Transform - pos: 2.5,2.5 - parent: 1 - - uid: 46 - components: - - type: Transform - pos: -1.5,2.5 - parent: 1 - - uid: 47 - components: - - type: Transform - pos: -1.5,3.5 - parent: 1 - - uid: 51 - components: - - type: Transform - pos: -1.5,7.5 - parent: 1 - - uid: 52 - components: - - type: Transform - pos: -1.5,8.5 - parent: 1 - - uid: 85 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-5.5 - parent: 1 - - uid: 90 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,-5.5 - parent: 1 - - uid: 131 - components: - - type: Transform - pos: -4.5,14.5 - parent: 1 - - uid: 132 - components: - - type: Transform - pos: -4.5,13.5 - parent: 1 - - uid: 133 - components: - - type: Transform - pos: -4.5,12.5 - parent: 1 - - uid: 134 - components: - - type: Transform - pos: 5.5,14.5 - parent: 1 - - uid: 135 - components: - - type: Transform - pos: 5.5,13.5 - parent: 1 - - uid: 136 - components: - - type: Transform - pos: 5.5,12.5 - parent: 1 -- proto: SignalButtonDirectional - entities: - - uid: 381 - components: - - type: Transform - pos: -6.5,0.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 375: - - - Pressed - - Toggle - 376: - - - Pressed - - Toggle - 377: - - - Pressed - - Toggle - - type: Fixtures - fixtures: {} - - uid: 382 - components: - - type: Transform - pos: 7.5,0.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 378: - - - Pressed - - Toggle - 379: - - - Pressed - - Toggle - 380: - - - Pressed - - Toggle - - type: Fixtures - fixtures: {} - - uid: 385 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-5.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 358: - - - Pressed - - Toggle - 357: - - - Pressed - - Toggle - 356: - - - Pressed - - Toggle - - type: Fixtures - fixtures: {} -- proto: SMESBasic - entities: - - uid: 323 - components: - - type: Transform - pos: 7.5,-7.5 - parent: 1 - - uid: 325 - components: - - type: Transform - pos: -6.5,-7.5 - parent: 1 -- proto: StairDark - entities: - - uid: 387 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,12.5 - parent: 1 - - uid: 388 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,12.5 - parent: 1 -- proto: SubstationBasic - entities: - - uid: 144 - components: - - type: Transform - pos: -4.5,-5.5 - parent: 1 - - uid: 220 - components: - - type: Transform - pos: 5.5,-5.5 - parent: 1 -- proto: SuitStorageNTSRA - entities: - - uid: 401 - components: - - type: Transform - pos: -2.5,-4.5 - parent: 1 - - uid: 402 - components: - - type: Transform - pos: 3.5,-4.5 - parent: 1 -- proto: SurveillanceCameraRouterSecurity - entities: - - uid: 171 - components: - - type: Transform - pos: -3.5,12.5 - parent: 1 -- proto: SurveillanceCameraSecurity - entities: - - uid: 539 - components: - - type: Transform - pos: 1.5,11.5 - parent: 1 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraSecurity - nameSet: True - id: Bridge - - uid: 540 - components: - - type: Transform - pos: -0.5,6.5 - parent: 1 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraSecurity - nameSet: True - id: Dorms - - uid: 541 - components: - - type: Transform - pos: -0.5,1.5 - parent: 1 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraSecurity - nameSet: True - id: Medical - - uid: 542 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,-1.5 - parent: 1 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraSecurity - nameSet: True - id: Aft Airlock - - uid: 543 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -5.5,-0.5 - parent: 1 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraSecurity - nameSet: True - id: Port Airlock - - uid: 544 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,-0.5 - parent: 1 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraSecurity - nameSet: True - id: Starboard Airlock -- proto: Syringe - entities: - - uid: 208 - components: - - type: Transform - pos: 1.6926541,4.5530143 - parent: 1 -- proto: Table - entities: - - uid: 562 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-0.5 - parent: 1 - - uid: 563 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-0.5 - parent: 1 -- proto: TableGlass - entities: - - uid: 198 - components: - - type: Transform - pos: 1.5,4.5 - parent: 1 - - uid: 199 - components: - - type: Transform - pos: 1.5,1.5 - parent: 1 - - uid: 202 - components: - - type: Transform - pos: -0.5,2.5 - parent: 1 -- proto: TableWood - entities: - - uid: 510 - components: - - type: Transform - pos: -0.5,6.5 - parent: 1 - - uid: 511 - components: - - type: Transform - pos: 1.5,6.5 - parent: 1 - - uid: 513 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,9.5 - parent: 1 -- proto: Thruster - entities: - - uid: 79 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-7.5 - parent: 1 - - uid: 93 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,-7.5 - parent: 1 - - uid: 112 - components: - - type: Transform - pos: 8.5,1.5 - parent: 1 - - uid: 113 - components: - - type: Transform - pos: 7.5,1.5 - parent: 1 - - uid: 114 - components: - - type: Transform - pos: -6.5,1.5 - parent: 1 - - uid: 115 - components: - - type: Transform - pos: -7.5,1.5 - parent: 1 - - uid: 116 - components: - - type: Transform - pos: 6.5,1.5 - parent: 1 - - uid: 124 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -5.5,-9.5 - parent: 1 - - uid: 125 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,-9.5 - parent: 1 - - uid: 126 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -7.5,-9.5 - parent: 1 - - uid: 128 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-9.5 - parent: 1 - - uid: 129 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,-9.5 - parent: 1 - - uid: 130 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 8.5,-9.5 - parent: 1 - - uid: 362 - components: - - type: Transform - pos: -5.5,1.5 - parent: 1 -- proto: ToolboxMechanicalFilledAllTools - entities: - - uid: 564 - components: - - type: Transform - pos: -0.5382964,-0.35850996 - parent: 1 -- proto: TwoWayLever - entities: - - uid: 191 - components: - - type: MetaData - name: Fire! - - type: Transform - pos: 1.7379119,15.897662 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 161: - - - Left - - On - - - Left - - Trigger - - - Right - - On - - - Right - - Trigger - - - Middle - - Off -- proto: VendingMachineCigs - entities: - - uid: 517 - components: - - type: Transform - pos: 1.5,9.5 - parent: 1 -- proto: VendingMachineMedical - entities: - - uid: 201 - components: - - type: Transform - pos: -0.5,1.5 - parent: 1 -- proto: VisitingCivilianSpawner - entities: - - uid: 548 - components: - - type: Transform - pos: -2.5,14.5 - parent: 1 -- proto: VisitingMedicalSpawner - entities: - - uid: 549 - components: - - type: Transform - pos: 3.5,14.5 - parent: 1 -- proto: VisitorCaptainSpawner - entities: - - uid: 545 - components: - - type: Transform - pos: 0.5,12.5 - parent: 1 -- proto: WallShuttle - entities: - - uid: 13 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,10.5 - parent: 1 - - uid: 14 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,15.5 - parent: 1 - - uid: 15 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,15.5 - parent: 1 - - uid: 16 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,15.5 - parent: 1 - - uid: 17 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,15.5 - parent: 1 - - uid: 18 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,10.5 - parent: 1 - - uid: 19 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,11.5 - parent: 1 - - uid: 20 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,11.5 - parent: 1 - - uid: 21 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,11.5 - parent: 1 - - uid: 22 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,16.5 - parent: 1 - - uid: 23 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,11.5 - parent: 1 - - uid: 24 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,16.5 - parent: 1 - - uid: 25 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,10.5 - parent: 1 - - uid: 26 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,10.5 - parent: 1 - - uid: 27 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,9.5 - parent: 1 - - uid: 28 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,10.5 - parent: 1 - - uid: 29 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,10.5 - parent: 1 - - uid: 30 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,9.5 - parent: 1 - - uid: 33 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,6.5 - parent: 1 - - uid: 34 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,5.5 - parent: 1 - - uid: 35 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,4.5 - parent: 1 - - uid: 38 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,1.5 - parent: 1 - - uid: 39 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,0.5 - parent: 1 - - uid: 40 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-0.5 - parent: 1 - - uid: 43 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-0.5 - parent: 1 - - uid: 44 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,0.5 - parent: 1 - - uid: 45 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,1.5 - parent: 1 - - uid: 48 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,4.5 - parent: 1 - - uid: 49 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,5.5 - parent: 1 - - uid: 50 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,6.5 - parent: 1 - - uid: 53 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-1.5 - parent: 1 - - uid: 54 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,-1.5 - parent: 1 - - uid: 56 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-0.5 - parent: 1 - - uid: 57 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,0.5 - parent: 1 - - uid: 60 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -7.5,0.5 - parent: 1 - - uid: 61 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.5,0.5 - parent: 1 - - uid: 62 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -6.5,0.5 - parent: 1 - - uid: 63 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,0.5 - parent: 1 - - uid: 64 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,0.5 - parent: 1 - - uid: 65 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -8.5,0.5 - parent: 1 - - uid: 67 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -8.5,-1.5 - parent: 1 - - uid: 69 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -8.5,-3.5 - parent: 1 - - uid: 70 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -8.5,-4.5 - parent: 1 - - uid: 71 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -8.5,-5.5 - parent: 1 - - uid: 72 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -8.5,-6.5 - parent: 1 - - uid: 73 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -8.5,-7.5 - parent: 1 - - uid: 75 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,-8.5 - parent: 1 - - uid: 76 - components: - - type: Transform - pos: -7.5,-3.5 - parent: 1 - - uid: 77 - components: - - type: Transform - pos: 8.5,-3.5 - parent: 1 - - uid: 78 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,-8.5 - parent: 1 - - uid: 80 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-7.5 - parent: 1 - - uid: 81 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-6.5 - parent: 1 - - uid: 82 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-4.5 - parent: 1 - - uid: 83 - components: - - type: Transform - pos: -4.5,-6.5 - parent: 1 - - uid: 84 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,-5.5 - parent: 1 - - uid: 86 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-5.5 - parent: 1 - - uid: 87 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-6.5 - parent: 1 - - uid: 88 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-6.5 - parent: 1 - - uid: 89 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-5.5 - parent: 1 - - uid: 91 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,-5.5 - parent: 1 - - uid: 94 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,-7.5 - parent: 1 - - uid: 95 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,-6.5 - parent: 1 - - uid: 96 - components: - - type: Transform - pos: 5.5,-6.5 - parent: 1 - - uid: 99 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.5,-8.5 - parent: 1 - - uid: 101 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-8.5 - parent: 1 - - uid: 102 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.5,-7.5 - parent: 1 - - uid: 103 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.5,-6.5 - parent: 1 - - uid: 104 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.5,-5.5 - parent: 1 - - uid: 105 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.5,-4.5 - parent: 1 - - uid: 106 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.5,-3.5 - parent: 1 - - uid: 108 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.5,-1.5 - parent: 1 - - uid: 110 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.5,0.5 - parent: 1 - - uid: 118 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,0.5 - parent: 1 - - uid: 119 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-0.5 - parent: 1 - - uid: 121 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,-1.5 - parent: 1 - - uid: 122 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-1.5 - parent: 1 - - uid: 137 - components: - - type: Transform - pos: -0.5,5.5 - parent: 1 - - uid: 138 - components: - - type: Transform - pos: 1.5,5.5 - parent: 1 - - uid: 139 - components: - - type: Transform - pos: -0.5,0.5 - parent: 1 - - uid: 140 - components: - - type: Transform - pos: 1.5,0.5 - parent: 1 - - uid: 141 - components: - - type: Transform - pos: 1.5,10.5 - parent: 1 - - uid: 142 - components: - - type: Transform - pos: -0.5,10.5 - parent: 1 - - uid: 195 - components: - - type: Transform - pos: 0.5,-6.5 - parent: 1 - - uid: 214 - components: - - type: Transform - pos: -5.5,-8.5 - parent: 1 - - uid: 215 - components: - - type: Transform - pos: -6.5,-8.5 - parent: 1 - - uid: 216 - components: - - type: Transform - pos: -7.5,-8.5 - parent: 1 - - uid: 217 - components: - - type: Transform - pos: 6.5,-8.5 - parent: 1 - - uid: 218 - components: - - type: Transform - pos: 7.5,-8.5 - parent: 1 - - uid: 219 - components: - - type: Transform - pos: 8.5,-8.5 - parent: 1 - - uid: 223 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,-4.5 - parent: 1 - - uid: 233 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -6.5,-4.5 - parent: 1 - - uid: 317 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 8.5,0.5 - parent: 1 - - uid: 359 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.5,-4.5 - parent: 1 - - uid: 366 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,-4.5 - parent: 1 - - uid: 374 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-4.5 - parent: 1 -- proto: WallShuttleDiagonal - entities: - - uid: 11 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,16.5 - parent: 1 - - uid: 12 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,16.5 - parent: 1 - - uid: 55 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-1.5 - parent: 1 - - uid: 58 - components: - - type: Transform - pos: -8.5,1.5 - parent: 1 - - uid: 59 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,1.5 - parent: 1 - - uid: 74 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,-9.5 - parent: 1 - - uid: 97 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.5,-9.5 - parent: 1 - - uid: 98 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,-9.5 - parent: 1 - - uid: 100 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-9.5 - parent: 1 - - uid: 111 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,1.5 - parent: 1 - - uid: 117 - components: - - type: Transform - pos: 5.5,1.5 - parent: 1 - - uid: 120 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,-1.5 - parent: 1 - - uid: 123 - components: - - type: Transform - pos: -2.5,-0.5 - parent: 1 - - uid: 127 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,-6.5 - parent: 1 - - uid: 213 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,-6.5 - parent: 1 - - uid: 222 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-0.5 - parent: 1 - - uid: 360 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -6.5,-3.5 - parent: 1 - - uid: 363 - components: - - type: Transform - pos: 7.5,-3.5 - parent: 1 -... diff --git a/Resources/Maps/Shuttles/ShuttleEvent/cryptid.yml b/Resources/Maps/Shuttles/ShuttleEvent/cryptid.yml deleted file mode 100644 index 23f91957105..00000000000 --- a/Resources/Maps/Shuttles/ShuttleEvent/cryptid.yml +++ /dev/null @@ -1,3790 +0,0 @@ -meta: - format: 7 - category: Grid - engineVersion: 266.0.0 - forkId: "" - forkVersion: "" - time: 09/01/2025 20:37:26 - entityCount: 564 -maps: [] -grids: -- 1 -orphans: -- 1 -nullspace: [] -tilemap: - 0: Space - 1: FloorMetalDiamond - 96: FloorSteel - 111: FloorTechMaint - 112: FloorTechMaint2 - 113: FloorTechMaint3 - 125: FloorWood - 128: Lattice - 129: Plating -entities: -- proto: "" - entities: - - uid: 1 - components: - - type: MetaData - name: SRV-Cryptid - - type: Transform - pos: -0.48958334,-0.4375 - parent: invalid - - type: MapGrid - chunks: - 0,0: - ind: 0,0 - tiles: fQAAAAACAH0AAAAAAQB9AAAAAAIAfQAAAAABAH0AAAAAAwB9AAAAAAMAgQAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAH0AAAAAAAB9AAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAQB9AAAAAAAAfQAAAAAAAH0AAAAAAQB9AAAAAAIAfQAAAAABAIEAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAB9AAAAAAAAfQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAEAfQAAAAAAAH0AAAAAAgB9AAAAAAIAfQAAAAACAH0AAAAAAgCBAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAfQAAAAAAAH0AAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAgB9AAAAAAIAfQAAAAAAAH0AAAAAAgCBAAAAAAAAgQAAAAAAAIAAAAAAAACAAAAAAAAAgQAAAAAAAH0AAAAAAAB9AAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAgB9AAAAAAMAfQAAAAABAH0AAAAAAAB9AAAAAAIAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACBAAAAAAAAgQAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAIAfQAAAAACAH0AAAAAAQB9AAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAABAH0AAAAAAgB9AAAAAAMAfQAAAAADAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAwB9AAAAAAEAfQAAAAADAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAIAfQAAAAACAIEAAAAAAACBAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - version: 7 - -1,0: - ind: -1,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAB9AAAAAAMAfQAAAAABAH0AAAAAAgB9AAAAAAIAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAfQAAAAADAH0AAAAAAwB9AAAAAAAAfQAAAAADAH0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAH0AAAAAAgB9AAAAAAMAfQAAAAADAH0AAAAAAAB9AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAfQAAAAADAH0AAAAAAAB9AAAAAAEAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAH0AAAAAAQB9AAAAAAMAfQAAAAAAAH0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAfQAAAAACAH0AAAAAAQB9AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAH0AAAAAAwB9AAAAAAEAfQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAfQAAAAACAH0AAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgQAAAAAAAIEAAAAAAAB9AAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - version: 7 - -1,-1: - ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAB9AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAB9AAAAAAMAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAB9AAAAAAAAfQAAAAABAH0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAfQAAAAADAH0AAAAAAQB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAfQAAAAADAH0AAAAAAgB9AAAAAAAAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAH0AAAAAAAB9AAAAAAIAfQAAAAAAAH0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAH0AAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAwB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAB9AAAAAAEAfQAAAAABAH0AAAAAAwB9AAAAAAAAfQAAAAABAA== - version: 7 - 0,-1: - ind: 0,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAABAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAMAfQAAAAABAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAAH0AAAAAAAB9AAAAAAIAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAgB9AAAAAAIAfQAAAAADAH0AAAAAAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACBAAAAAAAAgQAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAIAfQAAAAABAH0AAAAAAQB9AAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAABAH0AAAAAAwB9AAAAAAMAfQAAAAADAH0AAAAAAwBvAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAbwAAAAAAAHEAAAAAAwCBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH0AAAAAAAB9AAAAAAMAfQAAAAACAH0AAAAAAQB9AAAAAAAAgQAAAAAAAIEAAAAAAAABAAAAAAAAgQAAAAAAAIEAAAAAAABxAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9AAAAAAAAfQAAAAAAAH0AAAAAAgB9AAAAAAEAfQAAAAAAAH0AAAAAAQCBAAAAAAAAgAAAAAAAAIAAAAAAAACBAAAAAAAAcQAAAAACAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAABAH0AAAAAAwB9AAAAAAIAfQAAAAABAH0AAAAAAQB9AAAAAAMAgQAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - version: 7 - - type: Broadphase - - type: Physics - bodyStatus: InAir - angularDamping: 0.05 - linearDamping: 0.05 - fixedRotation: False - bodyType: Dynamic - - type: Fixtures - fixtures: {} - - type: OccluderTree - - type: SpreaderGrid - - type: Shuttle - dampingModifier: 0.25 - - type: GridPathfinding - - type: Gravity - gravityShakeSound: !type:SoundPathSpecifier - path: /Audio/Effects/alert.ogg - - type: DecalGrid - chunkCollection: - version: 2 - nodes: - - node: - color: '#FFFFFFFF' - id: WoodTrimThinCornerNe - decals: - 0: 1,8 - 1: 2,7 - 2: 3,6 - 3: 4,4 - 4: 5,2 - 41: 1,-3 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinCornerNw - decals: - 5: -1,8 - 6: -2,7 - 7: -3,6 - 8: -4,4 - 9: -5,2 - 42: -1,-3 - 117: -1,2 - 123: 3,-2 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinCornerSe - decals: - 10: 5,-2 - 11: 3,-6 - 12: 2,-7 - 13: 1,-8 - 115: 1,-1 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinCornerSw - decals: - 14: -1,-8 - 15: -2,-7 - 16: -3,-6 - 17: -4,-4 - 18: -5,-2 - 116: -1,-1 - 125: 3,-4 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinEndE - decals: - 126: 4,-4 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinInnerNe - decals: - 47: 1,-6 - 61: -3,-4 - 75: -5,2 - 76: -5,2 - 87: -4,4 - 88: 0,4 - 105: 3,2 - 130: 3,-4 - 145: 1,6 - 146: -3,6 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinInnerNw - decals: - 59: -3,-4 - 60: -1,-6 - 63: -1,-4 - 74: -3,2 - 89: 0,4 - 90: 4,4 - 104: 3,2 - 120: 5,-2 - 144: -1,6 - 147: 3,6 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinInnerSe - decals: - 46: 1,-6 - 77: -4,-4 - 78: -3,-6 - 79: -5,-2 - 102: 3,4 - 118: 1,0 - 129: 3,-2 - 139: 0,6 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinInnerSw - decals: - 62: -1,-4 - 65: -3,-2 - 80: 3,-6 - 91: -3,4 - 103: 3,4 - 119: 5,0 - 138: 0,6 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinLineE - decals: - 19: 5,-1 - 20: 5,0 - 21: 5,1 - 22: 4,3 - 23: 3,5 - 24: 4,-3 - 25: 3,-5 - 37: 1,-7 - 38: 1,-5 - 39: 1,-4 - 58: -3,-3 - 66: -3,-2 - 67: -3,-1 - 68: -3,0 - 69: -3,1 - 70: -3,2 - 71: -3,3 - 99: 3,3 - 127: 3,-3 - 142: 1,7 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinLineN - decals: - 34: 0,8 - 40: 0,-3 - 43: 2,-6 - 44: 3,-6 - 51: -2,-6 - 52: -3,-6 - 55: -2,-4 - 56: -4,-4 - 73: -4,2 - 82: -3,4 - 83: -2,4 - 84: -1,4 - 85: 1,4 - 86: 2,4 - 97: 3,4 - 101: 4,2 - 106: 2,2 - 107: 1,2 - 108: 0,2 - 122: 4,-2 - 140: 2,6 - 141: -2,6 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinLineS - decals: - 33: 0,-8 - 45: 2,-6 - 48: -2,-6 - 49: -2,-6 - 50: -3,-6 - 53: -2,-4 - 54: -3,-4 - 64: -4,-2 - 81: -4,4 - 92: -2,4 - 93: 0,4 - 94: 1,4 - 95: 1,4 - 96: 2,4 - 100: 4,4 - 111: 0,-1 - 112: 2,0 - 113: 3,0 - 114: 4,0 - 128: 4,-2 - 131: 3,6 - 132: 3,6 - 133: 2,6 - 134: 1,6 - 135: -1,6 - 136: -2,6 - 137: -3,6 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinLineW - decals: - 26: -3,-5 - 27: -4,-3 - 28: -5,-1 - 29: -5,0 - 30: -5,1 - 31: -4,3 - 32: -3,5 - 35: -1,-7 - 36: -1,-5 - 57: -3,-3 - 72: -3,3 - 98: 3,3 - 109: -1,1 - 110: -1,0 - 121: 5,-1 - 124: 3,-3 - 143: -1,7 - - type: GridAtmosphere - version: 2 - data: - tiles: - 0,0: - 0: 65535 - 0,-1: - 0: 65535 - -1,0: - 0: 65535 - 0,1: - 0: 32767 - -1,1: - 0: 52975 - 0,2: - 0: 3 - -1,2: - 0: 8 - 1: 1 - 1,0: - 0: 4915 - 1: 32768 - 1,1: - 0: 1 - 1,2: - 1: 1 - 1,-1: - 0: 13215 - 1: 2048 - 2,0: - 1: 4096 - 0: 52428 - 2,1: - 1: 2 - 2,-1: - 0: 19663 - 1: 256 - 3,1: - 1: 1 - -2,0: - 0: 2184 - -2,-1: - 0: 34816 - -1,-1: - 0: 65535 - -1,-2: - 0: 61128 - -1,-3: - 0: 32768 - 0,-2: - 0: 65395 - 0,-3: - 0: 8192 - 2,-2: - 1: 704 - 0: 49152 - 3,-2: - 1: 256 - uniqueMixes: - - volume: 2500 - temperature: 293.15 - moles: - - 21.824879 - - 82.10312 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - immutable: True - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - chunkSize: 4 - - type: GasTileOverlay - - type: RadiationGridResistance - - type: ImplicitRoof -- proto: AirCanister - entities: - - uid: 551 - components: - - type: Transform - anchored: True - pos: 11.5,0.5 - parent: 1 - - type: Physics - bodyType: Static -- proto: Airlock - entities: - - uid: 101 - components: - - type: Transform - pos: 5.5,-3.5 - parent: 1 - - uid: 102 - components: - - type: Transform - pos: 9.5,-3.5 - parent: 1 - - uid: 103 - components: - - type: Transform - pos: 10.5,-0.5 - parent: 1 -- proto: AirlockExternalGlass - entities: - - uid: 76 - components: - - type: Transform - pos: 7.5,-2.5 - parent: 1 -- proto: AirlockGlassShuttle - entities: - - uid: 105 - components: - - type: Transform - pos: -0.5,-8.5 - parent: 1 - - uid: 106 - components: - - type: Transform - pos: 1.5,-8.5 - parent: 1 -- proto: APCBasic - entities: - - uid: 277 - components: - - type: Transform - pos: 6.5,-2.5 - parent: 1 - - type: Fixtures - fixtures: {} -- proto: AtmosDeviceFanDirectional - entities: - - uid: 305 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,-2.5 - parent: 1 - - uid: 306 - components: - - type: Transform - pos: 1.5,-8.5 - parent: 1 - - uid: 307 - components: - - type: Transform - pos: -0.5,-8.5 - parent: 1 -- proto: BookBase - entities: - - uid: 310 - components: - - type: Transform - parent: 309 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: BookHowToKeepStationClean - entities: - - uid: 290 - components: - - type: Transform - pos: 1.3303926,8.654172 - parent: 1 -- proto: BookHowToSurvive - entities: - - uid: 291 - components: - - type: Transform - pos: -0.31544092,8.695839 - parent: 1 -- proto: BookNarsieLegend - entities: - - uid: 294 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.4538736,6.529339 - parent: 1 -- proto: BookRandomStory - entities: - - uid: 287 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.4523766,-5.433484 - parent: 1 - - uid: 288 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.443457,-5.3814006 - parent: 1 - - uid: 289 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.275293,-1.3605671 - parent: 1 - - uid: 311 - components: - - type: Transform - parent: 309 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 312 - components: - - type: Transform - parent: 309 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 314 - components: - - type: Transform - parent: 309 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 315 - components: - - type: Transform - parent: 309 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 317 - components: - - type: Transform - parent: 309 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: BooksBag - entities: - - uid: 319 - components: - - type: Transform - parent: 309 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: BookshelfFilled - entities: - - uid: 107 - components: - - type: Transform - pos: -1.5,-6.5 - parent: 1 - - uid: 108 - components: - - type: Transform - pos: 2.5,-6.5 - parent: 1 - - uid: 109 - components: - - type: Transform - pos: -1.5,-4.5 - parent: 1 - - uid: 110 - components: - - type: Transform - pos: 2.5,-4.5 - parent: 1 - - uid: 111 - components: - - type: Transform - pos: -3.5,-2.5 - parent: 1 - - uid: 112 - components: - - type: Transform - pos: -1.5,-2.5 - parent: 1 - - uid: 113 - components: - - type: Transform - pos: 2.5,-2.5 - parent: 1 - - uid: 114 - components: - - type: Transform - pos: 4.5,-2.5 - parent: 1 - - uid: 115 - components: - - type: Transform - pos: 2.5,-1.5 - parent: 1 - - uid: 116 - components: - - type: Transform - pos: 2.5,-0.5 - parent: 1 - - uid: 117 - components: - - type: Transform - pos: -1.5,-1.5 - parent: 1 - - uid: 118 - components: - - type: Transform - pos: -1.5,-0.5 - parent: 1 - - uid: 119 - components: - - type: Transform - pos: -0.5,-1.5 - parent: 1 - - uid: 120 - components: - - type: Transform - pos: 3.5,-0.5 - parent: 1 - - uid: 121 - components: - - type: Transform - pos: 4.5,-0.5 - parent: 1 - - uid: 122 - components: - - type: Transform - pos: -1.5,0.5 - parent: 1 - - uid: 123 - components: - - type: Transform - pos: -1.5,1.5 - parent: 1 - - uid: 127 - components: - - type: Transform - pos: -1.5,2.5 - parent: 1 - - uid: 128 - components: - - type: Transform - pos: 2.5,-3.5 - parent: 1 - - uid: 129 - components: - - type: Transform - pos: -1.5,3.5 - parent: 1 - - uid: 130 - components: - - type: Transform - pos: -0.5,3.5 - parent: 1 - - uid: 131 - components: - - type: Transform - pos: 0.5,3.5 - parent: 1 - - uid: 132 - components: - - type: Transform - pos: 1.5,3.5 - parent: 1 - - uid: 133 - components: - - type: Transform - pos: 2.5,3.5 - parent: 1 - - uid: 134 - components: - - type: Transform - pos: -3.5,3.5 - parent: 1 - - uid: 135 - components: - - type: Transform - pos: 4.5,3.5 - parent: 1 - - uid: 136 - components: - - type: Transform - pos: -2.5,5.5 - parent: 1 - - uid: 137 - components: - - type: Transform - pos: -1.5,5.5 - parent: 1 - - uid: 138 - components: - - type: Transform - pos: -0.5,5.5 - parent: 1 - - uid: 139 - components: - - type: Transform - pos: 1.5,5.5 - parent: 1 - - uid: 140 - components: - - type: Transform - pos: 2.5,5.5 - parent: 1 - - uid: 141 - components: - - type: Transform - pos: 3.5,5.5 - parent: 1 - - uid: 142 - components: - - type: Transform - pos: -1.5,7.5 - parent: 1 - - uid: 143 - components: - - type: Transform - pos: 2.5,7.5 - parent: 1 - - uid: 146 - components: - - type: Transform - pos: -2.5,-4.5 - parent: 1 - - uid: 147 - components: - - type: Transform - pos: 3.5,-4.5 - parent: 1 - - uid: 167 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 - - uid: 168 - components: - - type: Transform - pos: 1.5,-1.5 - parent: 1 -- proto: BookSpaceEncyclopedia - entities: - - uid: 292 - components: - - type: Transform - pos: 1.3913738,-3.3577688 - parent: 1 -- proto: BookTheBookOfControl - entities: - - uid: 293 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.6691039,6.406688 - parent: 1 -- proto: CableApcExtension - entities: - - uid: 441 - components: - - type: Transform - pos: 6.5,-2.5 - parent: 1 - - uid: 442 - components: - - type: Transform - pos: 6.5,-3.5 - parent: 1 - - uid: 443 - components: - - type: Transform - pos: 7.5,-3.5 - parent: 1 - - uid: 444 - components: - - type: Transform - pos: 8.5,-3.5 - parent: 1 - - uid: 445 - components: - - type: Transform - pos: 9.5,-3.5 - parent: 1 - - uid: 446 - components: - - type: Transform - pos: 10.5,-3.5 - parent: 1 - - uid: 447 - components: - - type: Transform - pos: 10.5,-2.5 - parent: 1 - - uid: 448 - components: - - type: Transform - pos: 10.5,-1.5 - parent: 1 - - uid: 449 - components: - - type: Transform - pos: 10.5,-0.5 - parent: 1 - - uid: 450 - components: - - type: Transform - pos: 10.5,0.5 - parent: 1 - - uid: 451 - components: - - type: Transform - pos: 10.5,1.5 - parent: 1 - - uid: 452 - components: - - type: Transform - pos: 11.5,1.5 - parent: 1 - - uid: 453 - components: - - type: Transform - pos: 12.5,1.5 - parent: 1 - - uid: 454 - components: - - type: Transform - pos: 12.5,2.5 - parent: 1 - - uid: 455 - components: - - type: Transform - pos: 9.5,1.5 - parent: 1 - - uid: 456 - components: - - type: Transform - pos: 9.5,1.5 - parent: 1 - - uid: 457 - components: - - type: Transform - pos: 9.5,2.5 - parent: 1 - - uid: 458 - components: - - type: Transform - pos: 10.5,2.5 - parent: 1 - - uid: 459 - components: - - type: Transform - pos: 10.5,3.5 - parent: 1 - - uid: 460 - components: - - type: Transform - pos: 10.5,4.5 - parent: 1 - - uid: 461 - components: - - type: Transform - pos: 11.5,4.5 - parent: 1 - - uid: 462 - components: - - type: Transform - pos: 6.5,-1.5 - parent: 1 - - uid: 463 - components: - - type: Transform - pos: 6.5,-0.5 - parent: 1 - - uid: 464 - components: - - type: Transform - pos: 5.5,-3.5 - parent: 1 - - uid: 465 - components: - - type: Transform - pos: 4.5,-3.5 - parent: 1 - - uid: 466 - components: - - type: Transform - pos: 3.5,-3.5 - parent: 1 - - uid: 467 - components: - - type: Transform - pos: 3.5,-2.5 - parent: 1 - - uid: 468 - components: - - type: Transform - pos: 3.5,-1.5 - parent: 1 - - uid: 469 - components: - - type: Transform - pos: 4.5,-1.5 - parent: 1 - - uid: 470 - components: - - type: Transform - pos: 5.5,-1.5 - parent: 1 - - uid: 471 - components: - - type: Transform - pos: 0.5,-7.5 - parent: 1 - - uid: 472 - components: - - type: Transform - pos: 0.5,-6.5 - parent: 1 - - uid: 473 - components: - - type: Transform - pos: 0.5,-5.5 - parent: 1 - - uid: 474 - components: - - type: Transform - pos: 0.5,-4.5 - parent: 1 - - uid: 475 - components: - - type: Transform - pos: 0.5,-3.5 - parent: 1 - - uid: 476 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 - - uid: 477 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 - - uid: 478 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 - - uid: 479 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 - - uid: 480 - components: - - type: Transform - pos: 0.5,1.5 - parent: 1 - - uid: 481 - components: - - type: Transform - pos: 0.5,2.5 - parent: 1 - - uid: 482 - components: - - type: Transform - pos: 0.5,3.5 - parent: 1 - - uid: 483 - components: - - type: Transform - pos: 0.5,4.5 - parent: 1 - - uid: 484 - components: - - type: Transform - pos: 0.5,5.5 - parent: 1 - - uid: 485 - components: - - type: Transform - pos: 0.5,6.5 - parent: 1 - - uid: 486 - components: - - type: Transform - pos: 0.5,7.5 - parent: 1 - - uid: 487 - components: - - type: Transform - pos: 0.5,8.5 - parent: 1 - - uid: 488 - components: - - type: Transform - pos: -3.5,4.5 - parent: 1 - - uid: 489 - components: - - type: Transform - pos: -2.5,4.5 - parent: 1 - - uid: 490 - components: - - type: Transform - pos: -1.5,4.5 - parent: 1 - - uid: 491 - components: - - type: Transform - pos: -0.5,4.5 - parent: 1 - - uid: 492 - components: - - type: Transform - pos: 0.5,4.5 - parent: 1 - - uid: 493 - components: - - type: Transform - pos: 1.5,4.5 - parent: 1 - - uid: 494 - components: - - type: Transform - pos: 2.5,4.5 - parent: 1 - - uid: 495 - components: - - type: Transform - pos: 3.5,4.5 - parent: 1 - - uid: 496 - components: - - type: Transform - pos: 4.5,4.5 - parent: 1 - - uid: 497 - components: - - type: Transform - pos: -3.5,-3.5 - parent: 1 - - uid: 498 - components: - - type: Transform - pos: -2.5,-3.5 - parent: 1 - - uid: 499 - components: - - type: Transform - pos: -1.5,-3.5 - parent: 1 - - uid: 500 - components: - - type: Transform - pos: -0.5,-3.5 - parent: 1 - - uid: 501 - components: - - type: Transform - pos: 0.5,-3.5 - parent: 1 - - uid: 502 - components: - - type: Transform - pos: 1.5,-3.5 - parent: 1 - - uid: 503 - components: - - type: Transform - pos: 2.5,-3.5 - parent: 1 - - uid: 504 - components: - - type: Transform - pos: -1.5,9.5 - parent: 1 - - uid: 505 - components: - - type: Transform - pos: -0.5,9.5 - parent: 1 - - uid: 506 - components: - - type: Transform - pos: 0.5,9.5 - parent: 1 - - uid: 507 - components: - - type: Transform - pos: 1.5,9.5 - parent: 1 - - uid: 508 - components: - - type: Transform - pos: 2.5,9.5 - parent: 1 - - uid: 509 - components: - - type: Transform - pos: 2.5,8.5 - parent: 1 - - uid: 510 - components: - - type: Transform - pos: -1.5,8.5 - parent: 1 - - uid: 511 - components: - - type: Transform - pos: -4.5,4.5 - parent: 1 - - uid: 512 - components: - - type: Transform - pos: -3.5,6.5 - parent: 1 - - uid: 513 - components: - - type: Transform - pos: -2.5,6.5 - parent: 1 - - uid: 514 - components: - - type: Transform - pos: -1.5,6.5 - parent: 1 - - uid: 515 - components: - - type: Transform - pos: -0.5,6.5 - parent: 1 - - uid: 516 - components: - - type: Transform - pos: 1.5,6.5 - parent: 1 - - uid: 517 - components: - - type: Transform - pos: 2.5,6.5 - parent: 1 - - uid: 518 - components: - - type: Transform - pos: 3.5,6.5 - parent: 1 - - uid: 519 - components: - - type: Transform - pos: 4.5,6.5 - parent: 1 - - uid: 520 - components: - - type: Transform - pos: 5.5,4.5 - parent: 1 - - uid: 521 - components: - - type: Transform - pos: -4.5,-3.5 - parent: 1 - - uid: 522 - components: - - type: Transform - pos: -3.5,-5.5 - parent: 1 - - uid: 523 - components: - - type: Transform - pos: -2.5,-5.5 - parent: 1 - - uid: 524 - components: - - type: Transform - pos: -1.5,-5.5 - parent: 1 - - uid: 525 - components: - - type: Transform - pos: -0.5,-5.5 - parent: 1 - - uid: 526 - components: - - type: Transform - pos: 1.5,-5.5 - parent: 1 - - uid: 527 - components: - - type: Transform - pos: 2.5,-5.5 - parent: 1 - - uid: 528 - components: - - type: Transform - pos: 3.5,-5.5 - parent: 1 - - uid: 529 - components: - - type: Transform - pos: 4.5,-5.5 - parent: 1 - - uid: 530 - components: - - type: Transform - pos: -5.5,-0.5 - parent: 1 - - uid: 531 - components: - - type: Transform - pos: -5.5,0.5 - parent: 1 - - uid: 532 - components: - - type: Transform - pos: -5.5,1.5 - parent: 1 - - uid: 533 - components: - - type: Transform - pos: -4.5,0.5 - parent: 1 - - uid: 534 - components: - - type: Transform - pos: -3.5,0.5 - parent: 1 - - uid: 535 - components: - - type: Transform - pos: -2.5,0.5 - parent: 1 - - uid: 536 - components: - - type: Transform - pos: -1.5,0.5 - parent: 1 - - uid: 537 - components: - - type: Transform - pos: -0.5,0.5 - parent: 1 - - uid: 538 - components: - - type: Transform - pos: 5.5,0.5 - parent: 1 - - uid: 539 - components: - - type: Transform - pos: 4.5,0.5 - parent: 1 - - uid: 540 - components: - - type: Transform - pos: 3.5,0.5 - parent: 1 - - uid: 541 - components: - - type: Transform - pos: 2.5,0.5 - parent: 1 - - uid: 542 - components: - - type: Transform - pos: 1.5,0.5 - parent: 1 - - uid: 543 - components: - - type: Transform - pos: 5.5,1.5 - parent: 1 - - uid: 544 - components: - - type: Transform - pos: 6.5,1.5 - parent: 1 - - uid: 545 - components: - - type: Transform - pos: 6.5,2.5 - parent: 1 -- proto: CableHV - entities: - - uid: 426 - components: - - type: Transform - pos: 10.5,-4.5 - parent: 1 - - uid: 427 - components: - - type: Transform - pos: 11.5,-4.5 - parent: 1 - - uid: 428 - components: - - type: Transform - pos: 11.5,-3.5 - parent: 1 - - uid: 429 - components: - - type: Transform - pos: 11.5,-2.5 - parent: 1 - - uid: 430 - components: - - type: Transform - pos: 11.5,-1.5 - parent: 1 -- proto: CableMV - entities: - - uid: 432 - components: - - type: Transform - pos: 11.5,-1.5 - parent: 1 - - uid: 433 - components: - - type: Transform - pos: 11.5,-2.5 - parent: 1 - - uid: 434 - components: - - type: Transform - pos: 10.5,-3.5 - parent: 1 - - uid: 435 - components: - - type: Transform - pos: 11.5,-3.5 - parent: 1 - - uid: 436 - components: - - type: Transform - pos: 9.5,-3.5 - parent: 1 - - uid: 437 - components: - - type: Transform - pos: 8.5,-3.5 - parent: 1 - - uid: 438 - components: - - type: Transform - pos: 7.5,-3.5 - parent: 1 - - uid: 439 - components: - - type: Transform - pos: 6.5,-3.5 - parent: 1 - - uid: 440 - components: - - type: Transform - pos: 6.5,-2.5 - parent: 1 -- proto: CableTerminal - entities: - - uid: 431 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,-4.5 - parent: 1 -- proto: CandleInfinite - entities: - - uid: 280 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.1835997,1.7217038 - parent: 1 - - uid: 281 - components: - - type: Transform - pos: -3.8310068,-3.1048126 - parent: 1 - - uid: 283 - components: - - type: Transform - pos: 3.65322,6.884307 - parent: 1 - - uid: 284 - components: - - type: Transform - pos: -0.71127427,8.800006 - parent: 1 - - uid: 285 - components: - - type: Transform - pos: 3.7628174,-5.169572 - parent: 1 - - uid: 286 - components: - - type: Transform - pos: 1.6533091,8.810422 - parent: 1 - - uid: 559 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.8149374,6.7400217 - parent: 1 - - uid: 560 - components: - - type: Transform - pos: -2.7684329,-5.169572 - parent: 1 - - uid: 562 - components: - - type: Transform - pos: 4.799143,4.466672 - parent: 1 -- proto: Cane - entities: - - uid: 304 - components: - - type: Transform - pos: 11.192277,2.7941139 - parent: 1 -- proto: CarpetBlack - entities: - - uid: 211 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-0.5 - parent: 1 - - uid: 212 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,0.5 - parent: 1 - - uid: 213 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,1.5 - parent: 1 - - uid: 214 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,2.5 - parent: 1 - - uid: 215 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-0.5 - parent: 1 - - uid: 216 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,0.5 - parent: 1 - - uid: 217 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,1.5 - parent: 1 - - uid: 218 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,2.5 - parent: 1 - - uid: 219 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-0.5 - parent: 1 - - uid: 220 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,0.5 - parent: 1 - - uid: 221 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,1.5 - parent: 1 - - uid: 222 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,2.5 - parent: 1 - - uid: 223 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,2.5 - parent: 1 - - uid: 224 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,1.5 - parent: 1 - - uid: 225 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,0.5 - parent: 1 - - uid: 226 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-0.5 - parent: 1 - - uid: 263 - components: - - type: Transform - pos: 5.5,-0.5 - parent: 1 - - uid: 264 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,-1.5 - parent: 1 - - uid: 265 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-1.5 - parent: 1 - - uid: 266 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-1.5 - parent: 1 - - uid: 267 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-2.5 - parent: 1 - - uid: 268 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-3.5 - parent: 1 - - uid: 269 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-3.5 - parent: 1 - - uid: 270 - components: - - type: Transform - pos: 5.5,0.5 - parent: 1 - - uid: 271 - components: - - type: Transform - pos: 5.5,1.5 - parent: 1 -- proto: CarpetGreen - entities: - - uid: 77 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 10.5,2.5 - parent: 1 - - uid: 100 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 11.5,2.5 - parent: 1 - - uid: 255 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,1.5 - parent: 1 - - uid: 256 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,0.5 - parent: 1 - - uid: 257 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,-0.5 - parent: 1 - - uid: 259 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,1.5 - parent: 1 - - uid: 260 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,0.5 - parent: 1 - - uid: 261 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,-0.5 - parent: 1 - - uid: 550 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 11.5,1.5 - parent: 1 - - uid: 557 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 10.5,1.5 - parent: 1 -- proto: CarpetPurple - entities: - - uid: 237 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-7.5 - parent: 1 - - uid: 238 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-6.5 - parent: 1 - - uid: 239 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-5.5 - parent: 1 - - uid: 240 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-7.5 - parent: 1 - - uid: 241 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-6.5 - parent: 1 - - uid: 242 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-5.5 - parent: 1 - - uid: 243 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-7.5 - parent: 1 - - uid: 244 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-6.5 - parent: 1 - - uid: 245 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-5.5 - parent: 1 - - uid: 246 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-4.5 - parent: 1 - - uid: 247 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-4.5 - parent: 1 - - uid: 248 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-4.5 - parent: 1 - - uid: 249 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-3.5 - parent: 1 - - uid: 250 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-2.5 - parent: 1 - - uid: 251 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-3.5 - parent: 1 - - uid: 252 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-2.5 - parent: 1 - - uid: 253 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-3.5 - parent: 1 - - uid: 254 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-2.5 - parent: 1 -- proto: CarpetSBlue - entities: - - uid: 227 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,6.5 - parent: 1 - - uid: 228 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,7.5 - parent: 1 - - uid: 229 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,6.5 - parent: 1 - - uid: 230 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,7.5 - parent: 1 - - uid: 231 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,6.5 - parent: 1 - - uid: 232 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,7.5 - parent: 1 - - uid: 233 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,6.5 - parent: 1 - - uid: 234 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,7.5 - parent: 1 - - uid: 235 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,6.5 - parent: 1 - - uid: 236 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,7.5 - parent: 1 -- proto: Catwalk - entities: - - uid: 295 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 10.5,-4.5 - parent: 1 - - uid: 296 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 11.5,-4.5 - parent: 1 - - uid: 298 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 11.5,-2.5 - parent: 1 - - uid: 299 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 11.5,-1.5 - parent: 1 - - uid: 303 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 11.5,-3.5 - parent: 1 -- proto: ChairPilotSeat - entities: - - uid: 549 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 10.5,2.5 - parent: 1 -- proto: ChairWood - entities: - - uid: 178 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-0.5 - parent: 1 - - uid: 179 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-0.5 - parent: 1 - - uid: 180 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,0.5 - parent: 1 - - uid: 181 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,1.5 - parent: 1 - - uid: 182 - components: - - type: Transform - pos: 0.5,2.5 - parent: 1 - - uid: 183 - components: - - type: Transform - pos: 1.5,2.5 - parent: 1 - - uid: 184 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,0.5 - parent: 1 - - uid: 185 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,1.5 - parent: 1 -- proto: ClosetSteelBase - entities: - - uid: 309 - components: - - type: Transform - pos: 11.5,1.5 - parent: 1 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.147 - moles: - - 1.8968438 - - 7.1357465 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 320 - - 310 - - 311 - - 312 - - 313 - - 314 - - 315 - - 316 - - 317 - - 318 - - 319 - - 564 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null -- proto: ClothingEyesGlasses - entities: - - uid: 320 - components: - - type: Transform - parent: 309 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingEyesGlassesJamjar - entities: - - uid: 313 - components: - - type: Transform - parent: 309 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingUniformJumpskirtLibrarian - entities: - - uid: 316 - components: - - type: Transform - parent: 309 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingUniformJumpsuitLibrarian - entities: - - uid: 318 - components: - - type: Transform - parent: 309 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ComfyChair - entities: - - uid: 170 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,1.5 - parent: 1 - - uid: 171 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,1.5 - parent: 1 - - uid: 172 - components: - - type: Transform - pos: -4.5,-0.5 - parent: 1 - - uid: 173 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,6.5 - parent: 1 - - uid: 174 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,-5.5 - parent: 1 - - uid: 175 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-5.5 - parent: 1 - - uid: 176 - components: - - type: Transform - pos: 1.5,-2.5 - parent: 1 - - uid: 177 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-4.5 - parent: 1 - - uid: 199 - components: - - type: Transform - pos: -3.5,-0.5 - parent: 1 - - uid: 204 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,7.5 - parent: 1 - - uid: 205 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,7.5 - parent: 1 - - uid: 206 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,6.5 - parent: 1 -- proto: ComputerPowerMonitoring - entities: - - uid: 99 - components: - - type: Transform - pos: 11.5,3.5 - parent: 1 -- proto: ComputerShuttle - entities: - - uid: 88 - components: - - type: Transform - pos: 10.5,3.5 - parent: 1 -- proto: DiceBag - entities: - - uid: 274 - components: - - type: Transform - pos: 0.5740572,1.4218471 - parent: 1 - - uid: 276 - components: - - type: Transform - pos: 4.3126225,4.8620963 - parent: 1 -- proto: FaxMachineBase - entities: - - uid: 262 - components: - - type: MetaData - name: SRV-Cryptid fax machine - - type: Transform - pos: -3.5,-3.5 - parent: 1 - - type: FaxMachine - name: SRV-Cryptid -- proto: filingCabinetDrawerRandom - entities: - - uid: 258 - components: - - type: Transform - pos: -3.5,2.5 - parent: 1 -- proto: Fireplace - entities: - - uid: 187 - components: - - type: Transform - pos: 0.5,8.5 - parent: 1 - - uid: 188 - components: - - type: Transform - pos: -4.5,2.5 - parent: 1 - - uid: 189 - components: - - type: Transform - pos: 5.5,2.5 - parent: 1 -- proto: FoodPlatePlastic - entities: - - uid: 554 - components: - - type: Transform - pos: 11.484088,2.5300417 - parent: 1 -- proto: GasPassiveVent - entities: - - uid: 361 - components: - - type: Transform - pos: 7.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeBend - entities: - - uid: 344 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 10.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 352 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 11.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 393 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-5.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 394 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-5.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 407 - components: - - type: Transform - pos: 0.5,7.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 408 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,7.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasPipeStraight - entities: - - uid: 340 - components: - - type: Transform - pos: 10.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 341 - components: - - type: Transform - pos: 10.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 342 - components: - - type: Transform - pos: 10.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 343 - components: - - type: Transform - pos: 10.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 345 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 9.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 346 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 8.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 347 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 7.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 349 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 8.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 350 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 9.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 351 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 353 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 11.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 354 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 11.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 355 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 11.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 356 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 11.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 357 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 11.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 358 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 11.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 359 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 360 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 363 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 364 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 365 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 366 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 367 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 368 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 369 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 370 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 371 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 372 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 373 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 376 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 377 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 378 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 379 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 381 - components: - - type: Transform - pos: 0.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 382 - components: - - type: Transform - pos: 0.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 383 - components: - - type: Transform - pos: 0.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 384 - components: - - type: Transform - pos: 1.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 385 - components: - - type: Transform - pos: 1.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 386 - components: - - type: Transform - pos: 1.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 389 - components: - - type: Transform - pos: 1.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 391 - components: - - type: Transform - pos: 1.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 392 - components: - - type: Transform - pos: 1.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 395 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 396 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-5.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 405 - components: - - type: Transform - pos: 0.5,5.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 406 - components: - - type: Transform - pos: 0.5,6.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 409 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,6.5 - parent: 1 - - uid: 410 - components: - - type: Transform - anchored: False - rot: 3.141592653589793 rad - pos: 1.5,6.5 - parent: 1 - - type: Physics - canCollide: True - bodyType: Dynamic - - uid: 411 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,7.5 - parent: 1 - - uid: 412 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 413 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 418 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 419 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 420 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 421 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 422 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 423 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 424 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 425 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasPipeTJunction - entities: - - uid: 348 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 374 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 375 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 380 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 388 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 390 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 417 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 555 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasPort - entities: - - uid: 552 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 11.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasVentPump - entities: - - uid: 322 - components: - - type: Transform - pos: 10.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 398 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-5.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 400 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 401 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 404 - components: - - type: Transform - pos: -0.5,8.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasVentScrubber - entities: - - uid: 339 - components: - - type: Transform - pos: 11.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 397 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-5.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 399 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 402 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 403 - components: - - type: Transform - pos: 1.5,8.5 - parent: 1 -- proto: GeneratorBasic15kW - entities: - - uid: 301 - components: - - type: Transform - pos: 10.5,-4.5 - parent: 1 -- proto: GravityGeneratorMini - entities: - - uid: 308 - components: - - type: Transform - pos: 11.5,-2.5 - parent: 1 -- proto: Grille - entities: - - uid: 3 - components: - - type: Transform - pos: 12.5,2.5 - parent: 1 - - uid: 63 - components: - - type: Transform - pos: 10.5,4.5 - parent: 1 - - uid: 66 - components: - - type: Transform - pos: 11.5,4.5 - parent: 1 - - uid: 89 - components: - - type: Transform - pos: 12.5,1.5 - parent: 1 - - uid: 95 - components: - - type: Transform - pos: 9.5,1.5 - parent: 1 - - uid: 96 - components: - - type: Transform - pos: 9.5,2.5 - parent: 1 - - uid: 144 - components: - - type: Transform - pos: -1.5,8.5 - parent: 1 - - uid: 145 - components: - - type: Transform - pos: -1.5,9.5 - parent: 1 - - uid: 148 - components: - - type: Transform - pos: -0.5,9.5 - parent: 1 - - uid: 149 - components: - - type: Transform - pos: 0.5,9.5 - parent: 1 - - uid: 150 - components: - - type: Transform - pos: 1.5,9.5 - parent: 1 - - uid: 151 - components: - - type: Transform - pos: 2.5,9.5 - parent: 1 - - uid: 152 - components: - - type: Transform - pos: 2.5,8.5 - parent: 1 - - uid: 153 - components: - - type: Transform - pos: 4.5,6.5 - parent: 1 - - uid: 154 - components: - - type: Transform - pos: 5.5,4.5 - parent: 1 - - uid: 155 - components: - - type: Transform - pos: -3.5,6.5 - parent: 1 - - uid: 156 - components: - - type: Transform - pos: -4.5,4.5 - parent: 1 - - uid: 157 - components: - - type: Transform - pos: -5.5,1.5 - parent: 1 - - uid: 158 - components: - - type: Transform - pos: -5.5,0.5 - parent: 1 - - uid: 159 - components: - - type: Transform - pos: -5.5,-0.5 - parent: 1 - - uid: 160 - components: - - type: Transform - pos: 6.5,1.5 - parent: 1 - - uid: 161 - components: - - type: Transform - pos: 6.5,2.5 - parent: 1 - - uid: 162 - components: - - type: Transform - pos: 6.5,-0.5 - parent: 1 - - uid: 163 - components: - - type: Transform - pos: 6.5,-1.5 - parent: 1 - - uid: 164 - components: - - type: Transform - pos: -4.5,-3.5 - parent: 1 - - uid: 165 - components: - - type: Transform - pos: -3.5,-5.5 - parent: 1 - - uid: 166 - components: - - type: Transform - pos: 4.5,-5.5 - parent: 1 -- proto: Gyroscope - entities: - - uid: 556 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 11.5,-3.5 - parent: 1 -- proto: LampGold - entities: - - uid: 279 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.7976238,-3.050543 - parent: 1 - - uid: 282 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.744043,-1.2323887 - parent: 1 - - uid: 546 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.816802,5.0997987 - parent: 1 -- proto: Lantern - entities: - - uid: 186 - components: - - type: Transform - pos: 0.98735034,1.3105018 - parent: 1 -- proto: MagicDiceBag - entities: - - uid: 275 - components: - - type: Transform - pos: 1.2615572,0.7551804 - parent: 1 -- proto: PaperCNCSheet - entities: - - uid: 323 - components: - - type: Transform - pos: 0.6112867,0.57568884 - parent: 1 - - uid: 324 - components: - - type: Transform - pos: 1.5383701,0.54443884 - parent: 1 - - uid: 325 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5175368,1.6902721 - parent: 1 - - uid: 326 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5487867,1.7319388 - parent: 1 - - uid: 327 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5800368,1.1694388 - parent: 1 - - uid: 328 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5800368,1.1590221 - parent: 1 - - uid: 329 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5800368,1.1590221 - parent: 1 - - uid: 330 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5800368,1.1590221 - parent: 1 -- proto: PowerCellRecharger - entities: - - uid: 558 - components: - - type: Transform - pos: -3.5,-1.5 - parent: 1 -- proto: Poweredlight - entities: - - uid: 60 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 11.5,0.5 - parent: 1 - - uid: 190 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-7.5 - parent: 1 - - uid: 191 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-7.5 - parent: 1 - - uid: 192 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,0.5 - parent: 1 - - uid: 193 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-1.5 - parent: 1 -- proto: PoweredSmallLight - entities: - - uid: 297 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,-2.5 - parent: 1 - - uid: 561 - components: - - type: Transform - pos: 8.5,-3.5 - parent: 1 -- proto: RandomDrinkSoda - entities: - - uid: 547 - components: - - type: Transform - pos: 11.5,2.5 - parent: 1 -- proto: RandomFoodSingle - entities: - - uid: 548 - components: - - type: Transform - pos: 11.5,2.5 - parent: 1 -- proto: ShuttleWindow - entities: - - uid: 15 - components: - - type: Transform - pos: -4.5,-3.5 - parent: 1 - - uid: 16 - components: - - type: Transform - pos: -3.5,-5.5 - parent: 1 - - uid: 20 - components: - - type: Transform - pos: 6.5,-0.5 - parent: 1 - - uid: 22 - components: - - type: Transform - pos: 6.5,1.5 - parent: 1 - - uid: 26 - components: - - type: Transform - pos: -4.5,4.5 - parent: 1 - - uid: 31 - components: - - type: Transform - pos: -3.5,6.5 - parent: 1 - - uid: 34 - components: - - type: Transform - pos: 2.5,8.5 - parent: 1 - - uid: 35 - components: - - type: Transform - pos: 2.5,9.5 - parent: 1 - - uid: 36 - components: - - type: Transform - pos: -1.5,9.5 - parent: 1 - - uid: 37 - components: - - type: Transform - pos: -1.5,8.5 - parent: 1 - - uid: 39 - components: - - type: Transform - pos: -0.5,9.5 - parent: 1 - - uid: 40 - components: - - type: Transform - pos: 0.5,9.5 - parent: 1 - - uid: 43 - components: - - type: Transform - pos: 1.5,9.5 - parent: 1 - - uid: 45 - components: - - type: Transform - pos: 4.5,6.5 - parent: 1 - - uid: 46 - components: - - type: Transform - pos: 5.5,4.5 - parent: 1 - - uid: 50 - components: - - type: Transform - pos: -5.5,-0.5 - parent: 1 - - uid: 51 - components: - - type: Transform - pos: 6.5,2.5 - parent: 1 - - uid: 52 - components: - - type: Transform - pos: -5.5,1.5 - parent: 1 - - uid: 53 - components: - - type: Transform - pos: -5.5,0.5 - parent: 1 - - uid: 55 - components: - - type: Transform - pos: 6.5,-1.5 - parent: 1 - - uid: 61 - components: - - type: Transform - pos: 4.5,-5.5 - parent: 1 - - uid: 67 - components: - - type: Transform - pos: 10.5,4.5 - parent: 1 - - uid: 68 - components: - - type: Transform - pos: 11.5,4.5 - parent: 1 - - uid: 70 - components: - - type: Transform - pos: 12.5,1.5 - parent: 1 - - uid: 71 - components: - - type: Transform - pos: 12.5,2.5 - parent: 1 - - uid: 72 - components: - - type: Transform - pos: 9.5,2.5 - parent: 1 - - uid: 73 - components: - - type: Transform - pos: 9.5,1.5 - parent: 1 -- proto: SignLibrary - entities: - - uid: 321 - components: - - type: Transform - pos: 0.5,-8.5 - parent: 1 - - type: Fixtures - fixtures: {} -- proto: SMESBasic - entities: - - uid: 302 - components: - - type: Transform - pos: 11.5,-4.5 - parent: 1 -- proto: SpacemenFigureSpawner - entities: - - uid: 334 - components: - - type: Transform - pos: 1.5,1.5 - parent: 1 - - uid: 337 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 - - uid: 338 - components: - - type: Transform - pos: 4.5,4.5 - parent: 1 -- proto: StairStageDark - entities: - - uid: 278 - components: - - type: Transform - pos: 0.5,5.5 - parent: 1 -- proto: SubstationBasic - entities: - - uid: 300 - components: - - type: Transform - pos: 11.5,-1.5 - parent: 1 -- proto: TableFancyBlue - entities: - - uid: 200 - components: - - type: Transform - pos: -2.5,6.5 - parent: 1 - - uid: 201 - components: - - type: Transform - pos: -2.5,6.5 - parent: 1 - - uid: 202 - components: - - type: Transform - pos: -0.5,8.5 - parent: 1 - - uid: 203 - components: - - type: Transform - pos: 1.5,8.5 - parent: 1 - - uid: 207 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,6.5 - parent: 1 -- proto: TableFancyGreen - entities: - - uid: 124 - components: - - type: Transform - pos: 1.5,1.5 - parent: 1 - - uid: 125 - components: - - type: Transform - pos: 1.5,0.5 - parent: 1 - - uid: 126 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 - - uid: 169 - components: - - type: Transform - pos: 0.5,1.5 - parent: 1 -- proto: TableFancyOrange - entities: - - uid: 197 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-1.5 - parent: 1 - - uid: 198 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,-1.5 - parent: 1 - - uid: 210 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,4.5 - parent: 1 -- proto: TableFancyRed - entities: - - uid: 194 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-5.5 - parent: 1 - - uid: 195 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-5.5 - parent: 1 - - uid: 196 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-3.5 - parent: 1 - - uid: 208 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,-3.5 - parent: 1 -- proto: TableWood - entities: - - uid: 362 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 11.5,2.5 - parent: 1 -- proto: Thruster - entities: - - uid: 272 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,3.5 - parent: 1 - - uid: 273 - components: - - type: Transform - pos: 8.5,-1.5 - parent: 1 - - uid: 415 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,8.5 - parent: 1 - - uid: 416 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,8.5 - parent: 1 -- proto: ToyFigurineGreytider - entities: - - uid: 335 - components: - - type: Transform - pos: 0.92378676,1.7840221 - parent: 1 -- proto: ToyFigurineLibrarian - entities: - - uid: 553 - components: - - type: Transform - pos: 11.685576,2.9053025 - parent: 1 -- proto: ToyFigurineRatServant - entities: - - uid: 332 - components: - - type: Transform - pos: 0.7779534,1.0548555 - parent: 1 - - uid: 333 - components: - - type: Transform - pos: 0.4237867,1.0340221 - parent: 1 -- proto: ToyFigurineThief - entities: - - uid: 331 - components: - - type: Transform - pos: 0.41337004,1.4090221 - parent: 1 -- proto: ToyFigurineWizardFake - entities: - - uid: 336 - components: - - type: Transform - pos: 1.5487868,0.8777721 - parent: 1 -- proto: VendingMachineGames - entities: - - uid: 209 - components: - - type: Transform - pos: -3.5,4.5 - parent: 1 -- proto: VisitorLibrarianSpawner - entities: - - uid: 563 - components: - - type: Transform - pos: 10.5,2.5 - parent: 1 -- proto: WallShuttle - entities: - - uid: 4 - components: - - type: Transform - pos: 2.5,-7.5 - parent: 1 - - uid: 5 - components: - - type: Transform - pos: 2.5,-8.5 - parent: 1 - - uid: 6 - components: - - type: Transform - pos: 3.5,-6.5 - parent: 1 - - uid: 7 - components: - - type: Transform - pos: 3.5,-7.5 - parent: 1 - - uid: 8 - components: - - type: Transform - pos: -1.5,-8.5 - parent: 1 - - uid: 9 - components: - - type: Transform - pos: 4.5,-6.5 - parent: 1 - - uid: 10 - components: - - type: Transform - pos: -2.5,-7.5 - parent: 1 - - uid: 11 - components: - - type: Transform - pos: -1.5,-7.5 - parent: 1 - - uid: 12 - components: - - type: Transform - pos: -3.5,-6.5 - parent: 1 - - uid: 13 - components: - - type: Transform - pos: -2.5,-6.5 - parent: 1 - - uid: 14 - components: - - type: Transform - pos: -3.5,-4.5 - parent: 1 - - uid: 17 - components: - - type: Transform - pos: -4.5,-4.5 - parent: 1 - - uid: 18 - components: - - type: Transform - pos: -5.5,-2.5 - parent: 1 - - uid: 19 - components: - - type: Transform - pos: -4.5,-2.5 - parent: 1 - - uid: 21 - components: - - type: Transform - pos: -5.5,-1.5 - parent: 1 - - uid: 23 - components: - - type: Transform - pos: 6.5,0.5 - parent: 1 - - uid: 24 - components: - - type: Transform - pos: -5.5,3.5 - parent: 1 - - uid: 25 - components: - - type: Transform - pos: -5.5,2.5 - parent: 1 - - uid: 27 - components: - - type: Transform - pos: -4.5,3.5 - parent: 1 - - uid: 28 - components: - - type: Transform - pos: -3.5,5.5 - parent: 1 - - uid: 29 - components: - - type: Transform - pos: -4.5,5.5 - parent: 1 - - uid: 30 - components: - - type: Transform - pos: -3.5,7.5 - parent: 1 - - uid: 32 - components: - - type: Transform - pos: -2.5,8.5 - parent: 1 - - uid: 33 - components: - - type: Transform - pos: -2.5,7.5 - parent: 1 - - uid: 38 - components: - - type: Transform - pos: 3.5,8.5 - parent: 1 - - uid: 41 - components: - - type: Transform - pos: 3.5,7.5 - parent: 1 - - uid: 42 - components: - - type: Transform - pos: 4.5,7.5 - parent: 1 - - uid: 44 - components: - - type: Transform - pos: 4.5,5.5 - parent: 1 - - uid: 47 - components: - - type: Transform - pos: 5.5,5.5 - parent: 1 - - uid: 48 - components: - - type: Transform - pos: 6.5,3.5 - parent: 1 - - uid: 49 - components: - - type: Transform - pos: 5.5,3.5 - parent: 1 - - uid: 54 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,-2.5 - parent: 1 - - uid: 56 - components: - - type: Transform - pos: 10.5,-5.5 - parent: 1 - - uid: 57 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,-2.5 - parent: 1 - - uid: 58 - components: - - type: Transform - pos: 4.5,-4.5 - parent: 1 - - uid: 59 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,-4.5 - parent: 1 - - uid: 62 - components: - - type: Transform - pos: 11.5,-5.5 - parent: 1 - - uid: 64 - components: - - type: Transform - pos: 12.5,3.5 - parent: 1 - - uid: 74 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.5,-2.5 - parent: 1 - - uid: 75 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.5,-1.5 - parent: 1 - - uid: 79 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-4.5 - parent: 1 - - uid: 80 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,-4.5 - parent: 1 - - uid: 81 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 8.5,-2.5 - parent: 1 - - uid: 82 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.5,-4.5 - parent: 1 - - uid: 83 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 8.5,-4.5 - parent: 1 - - uid: 84 - components: - - type: Transform - pos: 12.5,0.5 - parent: 1 - - uid: 85 - components: - - type: Transform - pos: 9.5,0.5 - parent: 1 - - uid: 86 - components: - - type: Transform - pos: 9.5,3.5 - parent: 1 - - uid: 90 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.5,-0.5 - parent: 1 - - uid: 91 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 12.5,-2.5 - parent: 1 - - uid: 92 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 12.5,-1.5 - parent: 1 - - uid: 93 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 12.5,-0.5 - parent: 1 - - uid: 94 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 11.5,-0.5 - parent: 1 - - uid: 97 - components: - - type: Transform - pos: 12.5,-4.5 - parent: 1 - - uid: 98 - components: - - type: Transform - pos: 12.5,-3.5 - parent: 1 - - uid: 104 - components: - - type: Transform - pos: 0.5,-8.5 - parent: 1 -- proto: WallShuttleDiagonal - entities: - - uid: 2 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 12.5,-5.5 - parent: 1 - - uid: 65 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 9.5,-5.5 - parent: 1 - - uid: 69 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 12.5,4.5 - parent: 1 - - uid: 87 - components: - - type: Transform - pos: 9.5,4.5 - parent: 1 - - uid: 387 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,-6.5 - parent: 1 - - uid: 414 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 11.5,-6.5 - parent: 1 -- proto: WindoorSecure - entities: - - uid: 78 - components: - - type: Transform - pos: 0.5,6.5 - parent: 1 -- proto: Wrench - entities: - - uid: 564 - components: - - type: Transform - parent: 309 - - type: Physics - canCollide: False - - type: InsideEntityStorage -... diff --git a/Resources/Maps/Shuttles/ShuttleEvent/disaster_evacpod.yml b/Resources/Maps/Shuttles/ShuttleEvent/disaster_evacpod.yml deleted file mode 100644 index da39c3329ee..00000000000 --- a/Resources/Maps/Shuttles/ShuttleEvent/disaster_evacpod.yml +++ /dev/null @@ -1,363 +0,0 @@ -meta: - format: 6 - postmapinit: false -tilemap: - 0: Space - 82: FloorShuttleOrange - 85: FloorShuttleWhite - 120: Lattice - 121: Plating -entities: -- proto: "" - entities: - - uid: 1 - components: - - type: MetaData - name: Evacuation pod - - type: Transform - parent: invalid - - type: MapGrid - chunks: - 0,0: - ind: 0,0 - tiles: eQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -1,0: - ind: -1,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 0,-1: - ind: 0,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -1,-1: - ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAA - version: 6 - - type: Broadphase - - type: Physics - bodyStatus: InAir - angularDamping: 0.05 - linearDamping: 0.05 - fixedRotation: False - bodyType: Dynamic - - type: Fixtures - fixtures: {} - - type: OccluderTree - - type: SpreaderGrid - - type: Shuttle - - type: GridPathfinding - - type: Gravity - gravityShakeSound: !type:SoundPathSpecifier - path: /Audio/Effects/alert.ogg - - type: DecalGrid - chunkCollection: - version: 2 - nodes: [] - - type: GridAtmosphere - version: 2 - data: - tiles: - 0,-1: - 0: 4368 - 1: 32 - 0,0: - 1: 2 - -1,0: - 1: 8 - -1,-1: - 1: 128 - uniqueMixes: - - volume: 2500 - temperature: 293.15 - moles: - - 21.824879 - - 82.10312 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - immutable: True - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - chunkSize: 4 - - type: GasTileOverlay - - type: RadiationGridResistance - - type: NavMap -- proto: AirlockShuttle - entities: - - uid: 2 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 -- proto: APCBasic - entities: - - uid: 3 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-0.5 - parent: 1 -- proto: AtmosDeviceFanTiny - entities: - - uid: 4 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-2.5 - parent: 1 -- proto: BoxMRE - entities: - - uid: 6 - components: - - type: Transform - parent: 5 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: CableApcExtension - entities: - - uid: 10 - components: - - type: Transform - pos: 1.5,-0.5 - parent: 1 - - uid: 11 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 - - uid: 12 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 -- proto: CableHV - entities: - - uid: 13 - components: - - type: Transform - pos: -0.5,-1.5 - parent: 1 - - uid: 14 - components: - - type: Transform - pos: -0.5,-0.5 - parent: 1 -- proto: CableMV - entities: - - uid: 15 - components: - - type: Transform - pos: -0.5,-0.5 - parent: 1 - - uid: 16 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 - - uid: 17 - components: - - type: Transform - pos: 1.5,-0.5 - parent: 1 -- proto: ChairPilotSeat - entities: - - uid: 18 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-1.5 - parent: 1 -- proto: ClosetWallMaintenanceFilledRandom - entities: - - uid: 5 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-1.5 - parent: 1 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14673 - moles: - - 1.8856695 - - 7.0937095 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 7 - - 6 - - 8 - - 9 -- proto: ClothingOuterSuitEmergency - entities: - - uid: 7 - components: - - type: Transform - parent: 5 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ComputerShuttle - entities: - - uid: 19 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 -- proto: GeneratorWallmountAPU - entities: - - uid: 21 - components: - - type: Transform - pos: -0.5,-1.5 - parent: 1 -- proto: Grille - entities: - - uid: 34 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 -- proto: Gyroscope - entities: - - uid: 32 - components: - - type: Transform - pos: -0.5,-2.5 - parent: 1 -- proto: HandheldGPSBasic - entities: - - uid: 8 - components: - - type: Transform - parent: 5 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: NTVisitorSpawner - entities: - - uid: 20 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 - - uid: 33 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 -- proto: Poweredlight - entities: - - uid: 22 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-1.5 - parent: 1 -- proto: ShuttleWindow - entities: - - uid: 23 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 -- proto: SubstationWallBasic - entities: - - uid: 24 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-0.5 - parent: 1 -- proto: Thruster - entities: - - uid: 25 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-2.5 - parent: 1 -- proto: WallShuttle - entities: - - uid: 26 - components: - - type: Transform - pos: -0.5,-0.5 - parent: 1 - - uid: 27 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-1.5 - parent: 1 - - uid: 28 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-0.5 - parent: 1 - - uid: 29 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-1.5 - parent: 1 -- proto: WallShuttleDiagonal - entities: - - uid: 30 - components: - - type: Transform - pos: -0.5,0.5 - parent: 1 - - uid: 31 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,0.5 - parent: 1 -- proto: WeaponLaserSvalinn - entities: - - uid: 9 - components: - - type: Transform - parent: 5 - - type: Physics - canCollide: False - - type: InsideEntityStorage -... diff --git a/Resources/Maps/Shuttles/ShuttleEvent/eternal.yml b/Resources/Maps/Shuttles/ShuttleEvent/eternal.yml deleted file mode 100644 index aca23b04ac8..00000000000 --- a/Resources/Maps/Shuttles/ShuttleEvent/eternal.yml +++ /dev/null @@ -1,2194 +0,0 @@ -meta: - format: 6 - postmapinit: false -tilemap: - 0: Space - 32: FloorDark - 37: FloorDarkMono - 1: FloorMetalDiamond - 111: FloorTechMaint - 112: FloorTechMaint2 - 128: Lattice - 129: Plating -entities: -- proto: "" - entities: - - uid: 1 - components: - - type: MetaData - name: SRV-Eternal - - type: Transform - pos: -0.5208333,-0.45833334 - parent: invalid - - type: MapGrid - chunks: - 0,0: - ind: 0,0 - tiles: IAAAAAADIAAAAAAAIAAAAAABgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAABIAAAAAAAIAAAAAACgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAIAAAAAACgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAACgQAAAAAAgQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -1,0: - ind: -1,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAIAAAAAACIAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAIAAAAAACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAIAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 0,-1: - ind: 0,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAQAAAAAAgQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAADIAAAAAABgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAADIAAAAAACIAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAABIAAAAAACIAAAAAABgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAIAAAAAAAIAAAAAABgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAADIAAAAAADIAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAIAAAAAACIAAAAAACgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAIAAAAAADIAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAIAAAAAADIAAAAAABgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAIAAAAAACIAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAJQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAACIAAAAAABIAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -1,-1: - ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAIAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAIAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAIAAAAAABIAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAIAAAAAACIAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAcAAAAAAAIAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAcAAAAAAAIAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAcAAAAAAAIAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAJQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAIAAAAAADIAAAAAAC - version: 6 - - type: Broadphase - - type: Physics - bodyStatus: InAir - angularDamping: 0.05 - linearDamping: 0.05 - fixedRotation: False - bodyType: Dynamic - - type: Fixtures - fixtures: {} - - type: OccluderTree - - type: SpreaderGrid - - type: Shuttle - - type: GridPathfinding - - type: Gravity - gravityShakeSound: !type:SoundPathSpecifier - path: /Audio/Effects/alert.ogg - - type: DecalGrid - chunkCollection: - version: 2 - nodes: - - node: - color: '#323232FF' - id: BrickCornerOverlayNE - decals: - 38: 1,-11 - 67: 2,0 - - node: - color: '#323232FF' - id: BrickCornerOverlayNW - decals: - 30: 0,-7 - 37: -1,-11 - 58: -2,0 - - node: - color: '#323232FF' - id: BrickCornerOverlaySE - decals: - 44: 2,-7 - - node: - color: '#323232FF' - id: BrickLineOverlayE - decals: - 31: 0,-8 - 32: 0,-10 - 36: 0,-9 - 49: 2,-6 - 50: 2,-5 - 51: 2,-4 - 52: 2,-3 - 54: -2,-1 - 56: 2,-1 - - node: - color: '#323232FF' - id: BrickLineOverlayN - decals: - 29: 1,-7 - 59: 1,0 - 60: 0,0 - 61: -1,0 - - node: - color: '#323232FF' - id: BrickLineOverlayS - decals: - 39: 1,-7 - 62: -1,0 - 63: 0,0 - 64: 1,0 - - node: - color: '#323232FF' - id: BrickLineOverlayW - decals: - 33: 0,-8 - 34: 0,-10 - 35: 0,-9 - 45: 2,-6 - 46: 2,-5 - 47: 2,-4 - 48: 2,-3 - 53: 2,-1 - 55: -2,-1 - - node: - color: '#323232FF' - id: FullTileOverlayGreyscale - decals: - 0: 1,-5 - 1: 1,-4 - 2: 1,-3 - 3: 1,-1 - 4: 0,-1 - 5: -1,-1 - 6: -2,1 - 7: 2,1 - 8: 0,1 - 9: -1,1 - 10: 1,2 - 11: 0,2 - 12: -1,2 - 13: 0,3 - 14: -2,-10 - 15: -1,-10 - 16: 1,-10 - 17: 2,-10 - 18: 2,-9 - 19: 1,-9 - 20: -1,-9 - 21: -2,-9 - 22: -2,-8 - 23: -1,-8 - 24: 1,-8 - 25: 2,-8 - 26: -1,-7 - 27: -2,-7 - 28: 1,-6 - 68: 1,1 - - node: - color: '#323232FF' - id: MiniTileInnerOverlayNE - decals: - 41: 0,-11 - - node: - color: '#323232FF' - id: MiniTileInnerOverlayNW - decals: - 42: 0,-11 - 43: 2,-7 - - node: - color: '#323232FF' - id: MiniTileInnerOverlaySE - decals: - 40: 0,-7 - 57: -2,0 - - node: - color: '#323232FF' - id: MiniTileInnerOverlaySW - decals: - 66: 2,0 - - node: - color: '#323232FF' - id: MiniTileLineOverlayE - decals: - 71: 2,-2 - 72: -2,-2 - - node: - color: '#323232FF' - id: MiniTileLineOverlayW - decals: - 69: 2,-2 - 70: -2,-2 - - node: - angle: 1.5707963267948966 rad - color: '#FFFFFFFF' - id: Remains - decals: - 65: 0,1 - - type: GridAtmosphere - version: 2 - data: - tiles: - 0,0: - 0: 4983 - 1: 32768 - 0,-1: - 0: 29798 - -1,0: - 0: 2252 - 1: 8192 - -1,-1: - 0: 50380 - 0,-3: - 0: 30514 - 1: 8 - -1,-3: - 0: 52360 - 1: 2 - 0,-2: - 0: 26231 - -1,-2: - 0: 49356 - uniqueMixes: - - volume: 2500 - temperature: 293.15 - moles: - - 21.824879 - - 82.10312 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - immutable: True - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - chunkSize: 4 - - type: GasTileOverlay - - type: RadiationGridResistance -- proto: AirCanister - entities: - - uid: 106 - components: - - type: Transform - anchored: True - pos: 0.5,-0.5 - parent: 1 - - type: Physics - bodyType: Static -- proto: AirlockMaint - entities: - - uid: 89 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-1.5 - parent: 1 - - uid: 95 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-1.5 - parent: 1 -- proto: AirlockShuttleSyndicate - entities: - - uid: 73 - components: - - type: Transform - pos: -0.5,-11.5 - parent: 1 - - uid: 74 - components: - - type: Transform - pos: 1.5,-11.5 - parent: 1 -- proto: AltarConvert - entities: - - uid: 242 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-7.5 - parent: 1 -- proto: AltarConvertBurden - entities: - - uid: 241 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-9.5 - parent: 1 -- proto: APCBasic - entities: - - uid: 252 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-5.5 - parent: 1 -- proto: AtmosDeviceFanDirectional - entities: - - uid: 75 - components: - - type: Transform - pos: -0.5,-11.5 - parent: 1 - - uid: 234 - components: - - type: Transform - pos: -0.5,-11.5 - parent: 1 - - uid: 300 - components: - - type: Transform - pos: 1.5,-11.5 - parent: 1 -- proto: BoxCandleSmall - entities: - - uid: 264 - components: - - type: Transform - pos: -0.5490958,-6.324137 - parent: 1 - - uid: 265 - components: - - type: Transform - pos: -1.0282624,-6.324137 - parent: 1 -- proto: BoxFolderBlack - entities: - - uid: 229 - components: - - type: Transform - pos: -0.7517411,1.6626633 - parent: 1 - - uid: 230 - components: - - type: Transform - pos: -0.57465786,1.5272467 - parent: 1 -- proto: CableApcExtension - entities: - - uid: 152 - components: - - type: Transform - pos: 0.5,-5.5 - parent: 1 - - uid: 154 - components: - - type: Transform - pos: 0.5,-6.5 - parent: 1 - - uid: 155 - components: - - type: Transform - pos: 0.5,-7.5 - parent: 1 - - uid: 156 - components: - - type: Transform - pos: 0.5,-8.5 - parent: 1 - - uid: 157 - components: - - type: Transform - pos: 0.5,-9.5 - parent: 1 - - uid: 158 - components: - - type: Transform - pos: 0.5,-10.5 - parent: 1 - - uid: 159 - components: - - type: Transform - pos: 1.5,-6.5 - parent: 1 - - uid: 160 - components: - - type: Transform - pos: 2.5,-6.5 - parent: 1 - - uid: 161 - components: - - type: Transform - pos: 2.5,-5.5 - parent: 1 - - uid: 162 - components: - - type: Transform - pos: 2.5,-4.5 - parent: 1 - - uid: 163 - components: - - type: Transform - pos: 2.5,-3.5 - parent: 1 - - uid: 164 - components: - - type: Transform - pos: 2.5,-2.5 - parent: 1 - - uid: 165 - components: - - type: Transform - pos: 2.5,-1.5 - parent: 1 - - uid: 166 - components: - - type: Transform - pos: 2.5,-0.5 - parent: 1 - - uid: 167 - components: - - type: Transform - pos: 2.5,0.5 - parent: 1 - - uid: 168 - components: - - type: Transform - pos: 1.5,0.5 - parent: 1 - - uid: 169 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 - - uid: 170 - components: - - type: Transform - pos: -0.5,0.5 - parent: 1 - - uid: 171 - components: - - type: Transform - pos: -1.5,0.5 - parent: 1 - - uid: 172 - components: - - type: Transform - pos: -1.5,-0.5 - parent: 1 - - uid: 173 - components: - - type: Transform - pos: -1.5,-1.5 - parent: 1 - - uid: 174 - components: - - type: Transform - pos: -1.5,-2.5 - parent: 1 - - uid: 175 - components: - - type: Transform - pos: -1.5,-3.5 - parent: 1 - - uid: 176 - components: - - type: Transform - pos: -1.5,-4.5 - parent: 1 - - uid: 177 - components: - - type: Transform - pos: 0.5,1.5 - parent: 1 - - uid: 178 - components: - - type: Transform - pos: 0.5,2.5 - parent: 1 - - uid: 179 - components: - - type: Transform - pos: -0.5,2.5 - parent: 1 - - uid: 180 - components: - - type: Transform - pos: 1.5,2.5 - parent: 1 - - uid: 181 - components: - - type: Transform - pos: 1.5,3.5 - parent: 1 - - uid: 182 - components: - - type: Transform - pos: 1.5,4.5 - parent: 1 - - uid: 183 - components: - - type: Transform - pos: 0.5,4.5 - parent: 1 - - uid: 184 - components: - - type: Transform - pos: -0.5,4.5 - parent: 1 - - uid: 185 - components: - - type: Transform - pos: -0.5,3.5 - parent: 1 - - uid: 186 - components: - - type: Transform - pos: -2.5,0.5 - parent: 1 - - uid: 187 - components: - - type: Transform - pos: -2.5,1.5 - parent: 1 - - uid: 188 - components: - - type: Transform - pos: 3.5,0.5 - parent: 1 - - uid: 189 - components: - - type: Transform - pos: 3.5,1.5 - parent: 1 - - uid: 190 - components: - - type: Transform - pos: 3.5,-3.5 - parent: 1 - - uid: 191 - components: - - type: Transform - pos: 3.5,-2.5 - parent: 1 - - uid: 192 - components: - - type: Transform - pos: 3.5,-4.5 - parent: 1 - - uid: 193 - components: - - type: Transform - pos: 3.5,-6.5 - parent: 1 - - uid: 194 - components: - - type: Transform - pos: 3.5,-7.5 - parent: 1 - - uid: 195 - components: - - type: Transform - pos: 3.5,-8.5 - parent: 1 - - uid: 196 - components: - - type: Transform - pos: -0.5,-6.5 - parent: 1 - - uid: 197 - components: - - type: Transform - pos: -1.5,-6.5 - parent: 1 - - uid: 198 - components: - - type: Transform - pos: -2.5,-6.5 - parent: 1 - - uid: 199 - components: - - type: Transform - pos: -2.5,-7.5 - parent: 1 - - uid: 200 - components: - - type: Transform - pos: -2.5,-8.5 - parent: 1 - - uid: 201 - components: - - type: Transform - pos: -2.5,-4.5 - parent: 1 - - uid: 202 - components: - - type: Transform - pos: -2.5,-3.5 - parent: 1 - - uid: 203 - components: - - type: Transform - pos: -2.5,-2.5 - parent: 1 -- proto: CableHV - entities: - - uid: 204 - components: - - type: Transform - pos: -0.5,-4.5 - parent: 1 - - uid: 205 - components: - - type: Transform - pos: -0.5,-3.5 - parent: 1 - - uid: 206 - components: - - type: Transform - pos: -0.5,-2.5 - parent: 1 -- proto: CableMV - entities: - - uid: 207 - components: - - type: Transform - pos: -0.5,-2.5 - parent: 1 - - uid: 208 - components: - - type: Transform - pos: -1.5,-2.5 - parent: 1 - - uid: 209 - components: - - type: Transform - pos: -1.5,-1.5 - parent: 1 - - uid: 210 - components: - - type: Transform - pos: -1.5,-0.5 - parent: 1 - - uid: 211 - components: - - type: Transform - pos: -1.5,0.5 - parent: 1 - - uid: 212 - components: - - type: Transform - pos: -0.5,0.5 - parent: 1 - - uid: 213 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 - - uid: 214 - components: - - type: Transform - pos: 1.5,0.5 - parent: 1 - - uid: 215 - components: - - type: Transform - pos: 2.5,0.5 - parent: 1 - - uid: 216 - components: - - type: Transform - pos: 2.5,-0.5 - parent: 1 - - uid: 217 - components: - - type: Transform - pos: 2.5,-1.5 - parent: 1 - - uid: 218 - components: - - type: Transform - pos: 2.5,-2.5 - parent: 1 - - uid: 219 - components: - - type: Transform - pos: 2.5,-3.5 - parent: 1 - - uid: 220 - components: - - type: Transform - pos: 2.5,-4.5 - parent: 1 - - uid: 221 - components: - - type: Transform - pos: 2.5,-5.5 - parent: 1 - - uid: 222 - components: - - type: Transform - pos: 2.5,-6.5 - parent: 1 - - uid: 223 - components: - - type: Transform - pos: 1.5,-6.5 - parent: 1 - - uid: 224 - components: - - type: Transform - pos: 0.5,-6.5 - parent: 1 - - uid: 225 - components: - - type: Transform - pos: 0.5,-5.5 - parent: 1 -- proto: CableTerminal - entities: - - uid: 226 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-4.5 - parent: 1 -- proto: CarpetBlack - entities: - - uid: 153 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-9.5 - parent: 1 - - uid: 253 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-8.5 - parent: 1 - - uid: 254 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-7.5 - parent: 1 - - uid: 255 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-9.5 - parent: 1 - - uid: 256 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-8.5 - parent: 1 - - uid: 257 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-7.5 - parent: 1 -- proto: CarpetPurple - entities: - - uid: 44 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,0.5 - parent: 1 - - uid: 105 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,0.5 - parent: 1 - - uid: 273 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,1.5 - parent: 1 - - uid: 274 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,1.5 - parent: 1 - - uid: 275 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,1.5 - parent: 1 - - uid: 276 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,0.5 - parent: 1 -- proto: Catwalk - entities: - - uid: 278 - components: - - type: Transform - pos: -0.5,-3.5 - parent: 1 - - uid: 279 - components: - - type: Transform - pos: -0.5,-4.5 - parent: 1 - - uid: 281 - components: - - type: Transform - pos: -0.5,-2.5 - parent: 1 -- proto: ChairPilotSeat - entities: - - uid: 76 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,2.5 - parent: 1 -- proto: ChairWood - entities: - - uid: 288 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.58330065,0.91181517 - parent: 1 -- proto: CheapLighter - entities: - - uid: 266 - components: - - type: Transform - pos: -1.6220124,-6.28247 - parent: 1 - - uid: 267 - components: - - type: Transform - pos: -1.4345124,-6.4595537 - parent: 1 -- proto: ChurchBell - entities: - - uid: 251 - components: - - type: Transform - pos: 0.5,-6.5 - parent: 1 -- proto: ClosetSteelBase - entities: - - uid: 289 - components: - - type: Transform - pos: 1.5,1.5 - parent: 1 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14673 - moles: - - 1.8856695 - - 7.0937095 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 296 - - 295 - - 294 - - 293 - - 292 - - 291 - - 290 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null -- proto: ClothingHeadHatHoodNunHood - entities: - - uid: 292 - components: - - type: Transform - parent: 289 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingNeckStoleChaplain - entities: - - uid: 293 - components: - - type: Transform - parent: 289 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingOuterHoodieChaplain - entities: - - uid: 295 - components: - - type: Transform - parent: 289 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingOuterNunRobe - entities: - - uid: 290 - components: - - type: Transform - parent: 289 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingShoesColorBlack - entities: - - uid: 291 - components: - - type: Transform - parent: 289 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingUniformJumpskirtChaplain - entities: - - uid: 296 - components: - - type: Transform - parent: 289 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingUniformJumpsuitChaplain - entities: - - uid: 294 - components: - - type: Transform - parent: 289 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ComputerCrewMonitoring - entities: - - uid: 227 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,2.5 - parent: 1 -- proto: ComputerPowerMonitoring - entities: - - uid: 79 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,2.5 - parent: 1 -- proto: ComputerShuttle - entities: - - uid: 78 - components: - - type: Transform - pos: 0.5,3.5 - parent: 1 -- proto: CrateCoffin - entities: - - uid: 101 - components: - - type: Transform - pos: 2.5,-8.5 - parent: 1 -- proto: CurtainsBlack - entities: - - uid: 99 - components: - - type: Transform - pos: 1.5,-5.5 - parent: 1 -- proto: CurtainsBlackOpen - entities: - - uid: 98 - components: - - type: Transform - pos: 2.5,-5.5 - parent: 1 -- proto: DisposalBend - entities: - - uid: 80 - components: - - type: Transform - pos: 2.5,-2.5 - parent: 1 - - uid: 240 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-8.5 - parent: 1 -- proto: DisposalPipe - entities: - - uid: 233 - components: - - type: Transform - pos: 2.5,-3.5 - parent: 1 - - uid: 235 - components: - - type: Transform - pos: 2.5,-4.5 - parent: 1 - - uid: 236 - components: - - type: Transform - pos: 2.5,-5.5 - parent: 1 - - uid: 237 - components: - - type: Transform - pos: 2.5,-6.5 - parent: 1 - - uid: 238 - components: - - type: Transform - pos: 2.5,-7.5 - parent: 1 -- proto: DisposalTrunk - entities: - - uid: 81 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-2.5 - parent: 1 - - uid: 239 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-8.5 - parent: 1 -- proto: DisposalUnit - entities: - - uid: 97 - components: - - type: Transform - pos: 1.5,-2.5 - parent: 1 -- proto: DrinkMugBlack - entities: - - uid: 298 - components: - - type: Transform - pos: -1.03125,1.7916667 - parent: 1 -- proto: FaxMachineBase - entities: - - uid: 228 - components: - - type: MetaData - name: SRV-Eternal fax machine - - type: Transform - pos: -1.5,1.5 - parent: 1 - - type: FaxMachine - name: SRV-Eternal -- proto: GasPassiveVent - entities: - - uid: 151 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-11.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeBend - entities: - - uid: 111 - components: - - type: Transform - pos: 2.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 124 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-6.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 143 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 144 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 149 - components: - - type: Transform - pos: 3.5,-10.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeStraight - entities: - - uid: 108 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 109 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 114 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 115 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 116 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 117 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 118 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 119 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 120 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 121 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 122 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 123 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-5.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 125 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-6.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 131 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-9.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 132 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-8.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 133 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-7.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 134 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-6.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 135 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-5.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 136 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 137 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 138 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 139 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 140 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 141 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 145 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 146 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 147 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 148 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 150 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-10.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeTJunction - entities: - - uid: 107 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 110 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 130 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-10.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 142 - components: - - type: Transform - pos: 1.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPort - entities: - - uid: 84 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasVentPump - entities: - - uid: 112 - components: - - type: Transform - pos: -1.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 113 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 126 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-6.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasVentScrubber - entities: - - uid: 127 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-10.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 128 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 129 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GeneratorBasic15kW - entities: - - uid: 51 - components: - - type: Transform - pos: -0.5,-4.5 - parent: 1 -- proto: GravityGeneratorMini - entities: - - uid: 82 - components: - - type: Transform - pos: 1.5,-0.5 - parent: 1 -- proto: Grille - entities: - - uid: 8 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,3.5 - parent: 1 - - uid: 9 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,4.5 - parent: 1 - - uid: 54 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,4.5 - parent: 1 - - uid: 55 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,4.5 - parent: 1 - - uid: 56 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,3.5 - parent: 1 - - uid: 57 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,0.5 - parent: 1 - - uid: 58 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,1.5 - parent: 1 - - uid: 59 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-2.5 - parent: 1 - - uid: 60 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-3.5 - parent: 1 - - uid: 61 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-4.5 - parent: 1 - - uid: 62 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-6.5 - parent: 1 - - uid: 63 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-7.5 - parent: 1 - - uid: 64 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-8.5 - parent: 1 - - uid: 65 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-8.5 - parent: 1 - - uid: 66 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-7.5 - parent: 1 - - uid: 67 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-6.5 - parent: 1 - - uid: 68 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-4.5 - parent: 1 - - uid: 69 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-3.5 - parent: 1 - - uid: 70 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-2.5 - parent: 1 - - uid: 71 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,0.5 - parent: 1 - - uid: 72 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,1.5 - parent: 1 - - uid: 100 - components: - - type: Transform - pos: 3.5,-9.5 - parent: 1 - - uid: 102 - components: - - type: Transform - pos: -2.5,-9.5 - parent: 1 -- proto: Gyroscope - entities: - - uid: 83 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-0.5 - parent: 1 -- proto: HeadSkeleton - entities: - - uid: 263 - components: - - type: MetaData - name: Terry - - type: Transform - pos: 2.5584753,1.5675805 - parent: 1 -- proto: MiningWindow - entities: - - uid: 2 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,3.5 - parent: 1 - - uid: 3 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,1.5 - parent: 1 - - uid: 4 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,4.5 - parent: 1 - - uid: 5 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,4.5 - parent: 1 - - uid: 6 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,3.5 - parent: 1 - - uid: 16 - components: - - type: Transform - pos: -2.5,-9.5 - parent: 1 - - uid: 17 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-7.5 - parent: 1 - - uid: 18 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-8.5 - parent: 1 - - uid: 19 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-6.5 - parent: 1 - - uid: 21 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-8.5 - parent: 1 - - uid: 22 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-7.5 - parent: 1 - - uid: 23 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-6.5 - parent: 1 - - uid: 26 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,0.5 - parent: 1 - - uid: 27 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,4.5 - parent: 1 - - uid: 29 - components: - - type: Transform - pos: 3.5,-9.5 - parent: 1 - - uid: 30 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-4.5 - parent: 1 - - uid: 31 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-3.5 - parent: 1 - - uid: 32 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-2.5 - parent: 1 - - uid: 34 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-4.5 - parent: 1 - - uid: 35 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-3.5 - parent: 1 - - uid: 36 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-2.5 - parent: 1 - - uid: 39 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,1.5 - parent: 1 - - uid: 40 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,0.5 - parent: 1 -- proto: Morgue - entities: - - uid: 85 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-4.5 - parent: 1 - - type: EntityStorage - open: True - - uid: 269 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-4.5 - parent: 1 - - type: EntityStorage - open: True -- proto: OperatingTable - entities: - - uid: 53 - components: - - type: Transform - pos: 1.5,-3.5 - parent: 1 -- proto: PaintingNightHawks - entities: - - uid: 282 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-5.5 - parent: 1 -- proto: PaintingOldGuitarist - entities: - - uid: 262 - components: - - type: Transform - pos: 2.5,-10.5 - parent: 1 -- proto: PaintingOlympia - entities: - - uid: 260 - components: - - type: Transform - pos: -0.5,-5.5 - parent: 1 -- proto: PaintingPersistenceOfMemory - entities: - - uid: 261 - components: - - type: Transform - pos: -1.5,-10.5 - parent: 1 -- proto: Pen - entities: - - uid: 231 - components: - - type: Transform - pos: -0.33507448,1.7772467 - parent: 1 -- proto: PottedPlant12 - entities: - - uid: 270 - components: - - type: Transform - pos: -0.7736711,-10.272859 - parent: 1 -- proto: PottedPlant22 - entities: - - uid: 271 - components: - - type: Transform - pos: 2.757579,-6.8145247 - parent: 1 -- proto: PottedPlant23 - entities: - - uid: 297 - components: - - type: Transform - pos: -1.7186892,0.683596 - parent: 1 -- proto: Poweredlight - entities: - - uid: 283 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-10.5 - parent: 1 - - uid: 284 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-3.5 - parent: 1 - - uid: 285 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,2.5 - parent: 1 - - uid: 286 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,2.5 - parent: 1 - - uid: 287 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-4.5 - parent: 1 -- proto: PsychBed - entities: - - uid: 103 - components: - - type: Transform - pos: 2.5,1.5 - parent: 1 -- proto: SalvageHumanCorpseSpawner - entities: - - uid: 232 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-3.5 - parent: 1 - - uid: 268 - components: - - type: Transform - pos: 2.5,-4.5 - parent: 1 - - uid: 272 - components: - - type: Transform - pos: 1.5,-3.5 - parent: 1 -- proto: SignDisposalSpace - entities: - - uid: 52 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-1.5 - parent: 1 -- proto: SMESBasic - entities: - - uid: 96 - components: - - type: Transform - pos: -0.5,-3.5 - parent: 1 -- proto: SubstationBasic - entities: - - uid: 94 - components: - - type: Transform - pos: -0.5,-2.5 - parent: 1 -- proto: TableFancyBlack - entities: - - uid: 104 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,1.5 - parent: 1 - - uid: 246 - components: - - type: Transform - pos: -1.5,-6.5 - parent: 1 - - uid: 250 - components: - - type: Transform - pos: -0.5,-6.5 - parent: 1 - - uid: 280 - components: - - type: Transform - pos: -0.5,1.5 - parent: 1 -- proto: Thruster - entities: - - uid: 46 - components: - - type: Transform - pos: -2.5,3.5 - parent: 1 - - uid: 47 - components: - - type: Transform - pos: 3.5,3.5 - parent: 1 - - uid: 48 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-11.5 - parent: 1 - - uid: 49 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-11.5 - parent: 1 -- proto: Urn - entities: - - uid: 258 - components: - - type: Transform - pos: 2.5247073,-7.0529404 - parent: 1 - - uid: 259 - components: - - type: Transform - pos: 2.5559573,-9.177956 - parent: 1 -- proto: VisitorChaplainSpawner - entities: - - uid: 299 - components: - - type: Transform - pos: 0.5,2.5 - parent: 1 -- proto: WallMining - entities: - - uid: 7 - components: - - type: Transform - pos: -1.5,-11.5 - parent: 1 - - uid: 10 - components: - - type: Transform - pos: 0.5,-11.5 - parent: 1 - - uid: 11 - components: - - type: Transform - pos: 2.5,-11.5 - parent: 1 - - uid: 12 - components: - - type: Transform - pos: 2.5,-10.5 - parent: 1 - - uid: 13 - components: - - type: Transform - pos: 3.5,-10.5 - parent: 1 - - uid: 14 - components: - - type: Transform - pos: -1.5,-10.5 - parent: 1 - - uid: 15 - components: - - type: Transform - pos: -2.5,-10.5 - parent: 1 - - uid: 20 - components: - - type: Transform - pos: -2.5,-5.5 - parent: 1 - - uid: 24 - components: - - type: Transform - pos: -2.5,-1.5 - parent: 1 - - uid: 25 - components: - - type: Transform - pos: -2.5,-0.5 - parent: 1 - - uid: 28 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,2.5 - parent: 1 - - uid: 33 - components: - - type: Transform - pos: 3.5,-5.5 - parent: 1 - - uid: 37 - components: - - type: Transform - pos: 3.5,-1.5 - parent: 1 - - uid: 38 - components: - - type: Transform - pos: 3.5,-0.5 - parent: 1 - - uid: 41 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,2.5 - parent: 1 - - uid: 42 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,2.5 - parent: 1 - - uid: 43 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,3.5 - parent: 1 - - uid: 45 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,3.5 - parent: 1 - - uid: 50 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-1.5 - parent: 1 - - uid: 77 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-1.5 - parent: 1 - - uid: 86 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,-5.5 - parent: 1 - - uid: 87 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,-5.5 - parent: 1 - - uid: 88 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-5.5 - parent: 1 - - uid: 90 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-1.5 - parent: 1 - - uid: 91 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-2.5 - parent: 1 - - uid: 92 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-3.5 - parent: 1 - - uid: 93 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-4.5 - parent: 1 - - uid: 277 - components: - - type: Transform - pos: -1.5,2.5 - parent: 1 -- proto: WoodenBench - entities: - - uid: 243 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-9.5 - parent: 1 - - uid: 244 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-8.5 - parent: 1 - - uid: 245 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-7.5 - parent: 1 - - uid: 247 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-9.5 - parent: 1 - - uid: 248 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-8.5 - parent: 1 - - uid: 249 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-7.5 - parent: 1 -... diff --git a/Resources/Maps/Shuttles/ShuttleEvent/flatline.yml b/Resources/Maps/Shuttles/ShuttleEvent/flatline.yml deleted file mode 100644 index 7dcdf12eeb6..00000000000 --- a/Resources/Maps/Shuttles/ShuttleEvent/flatline.yml +++ /dev/null @@ -1,1958 +0,0 @@ -meta: - format: 7 - category: Grid - engineVersion: 266.0.0 - forkId: "" - forkVersion: "" - time: 08/18/2025 00:22:49 - entityCount: 232 -maps: [] -grids: -- 1 -orphans: -- 1 -nullspace: [] -tilemap: - 0: Space - 1: FloorMetalDiamond - 111: FloorTechMaint - 113: FloorTechMaint3 - 117: FloorWhiteDiagonalMini - 119: FloorWhiteMini - 128: Lattice - 129: Plating -entities: -- proto: "" - entities: - - uid: 1 - components: - - type: MetaData - name: EMS-Flatline - - type: Transform - pos: -0.47916666,-0.47916666 - parent: invalid - - type: MapGrid - chunks: - 0,0: - ind: 0,0 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAABxAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvAAAAAAAAcQAAAAACAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAHEAAAAAAQCBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - version: 7 - -1,0: - ind: -1,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACBAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAdQAAAAAAAHUAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAHUAAAAAAwB1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAB1AAAAAAEAdQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAdQAAAAACAHUAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - version: 7 - -1,-1: - ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIEAAAAAAAB3AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAB3AAAAAAAAdwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAdwAAAAAAAHcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIEAAAAAAAB3AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAABAAAAAAAAdwAAAAACAA== - version: 7 - 0,-1: - ind: 0,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAABAAAAAAAAgQAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3AAAAAAEAdwAAAAADAIEAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdwAAAAACAHcAAAAAAgB3AAAAAAMAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHcAAAAAAQB3AAAAAAEAgQAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3AAAAAAIAdwAAAAACAIEAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - version: 7 - - type: Broadphase - - type: Physics - bodyStatus: InAir - angularDamping: 0.05 - linearDamping: 0.05 - fixedRotation: False - bodyType: Dynamic - - type: Fixtures - fixtures: {} - - type: OccluderTree - - type: SpreaderGrid - - type: Shuttle - dampingModifier: 0.25 - - type: GridPathfinding - - type: Gravity - gravityShakeSound: !type:SoundPathSpecifier - path: /Audio/Effects/alert.ogg - - type: DecalGrid - chunkCollection: - version: 2 - nodes: - - node: - color: '#52B4E94C' - id: MiniTileCheckerAOverlay - decals: - 47: -1,-5 - 48: -1,-4 - 49: -1,-3 - 50: -1,-2 - 51: -1,-1 - 52: 1,-5 - 53: 1,-4 - - node: - color: '#FED83DFF' - id: MiniTileCheckerAOverlay - decals: - 11: 0,-5 - 12: 0,-4 - 13: 0,-3 - - node: - color: '#52B4E996' - id: MiniTileCheckerBOverlay - decals: - 14: 0,-5 - 15: 0,-4 - 16: 0,-3 - - node: - color: '#4B709CFF' - id: MiniTileDiagonalCheckerAOverlay - decals: - 27: -2,1 - 28: -2,2 - 29: -1,3 - 30: -2,3 - 31: -2,4 - 32: -1,4 - 39: -1,1 - 42: -1,2 - - node: - color: '#52B4E996' - id: MiniTileDiagonalCheckerBOverlay - decals: - 21: -1,3 - 22: -1,4 - 23: -2,4 - 24: -2,3 - 25: -2,2 - 26: -2,1 - 38: -1,1 - 41: -1,2 - - node: - color: '#52B4E996' - id: MiniTileEndOverlayN - decals: - 66: 1,-4 - - node: - color: '#FFA647FF' - id: MiniTileInnerOverlaySE - decals: - 70: -1,-2 - - node: - color: '#DE3A3A96' - id: MiniTileInnerOverlaySW - decals: - 46: 1,-2 - - node: - color: '#FED83DFF' - id: MiniTileInnerOverlaySW - decals: - 19: 1,-2 - - node: - color: '#52B4E996' - id: MiniTileLineOverlayE - decals: - 54: -1,-5 - 55: -1,-4 - 56: -1,-3 - 57: -1,-2 - 58: -1,-1 - 59: 1,-5 - - node: - color: '#FFA647FF' - id: MiniTileLineOverlayE - decals: - 67: -1,-5 - 68: -1,-4 - 69: -1,-3 - - node: - color: '#DE3A3A96' - id: MiniTileLineOverlayS - decals: - 45: 0,-2 - - node: - color: '#52B4E996' - id: MiniTileLineOverlayW - decals: - 60: 1,-5 - 61: -1,-5 - 62: -1,-4 - 63: -1,-3 - 64: -1,-2 - 65: -1,-1 - - node: - color: '#DE3A3A96' - id: MiniTileLineOverlayW - decals: - 44: 1,-3 - - node: - color: '#FED83DFF' - id: MiniTileLineOverlayW - decals: - 20: 1,-3 - - node: - color: '#FFA647FF' - id: MiniTileLineOverlayW - decals: - 71: 1,-5 - 72: 1,-4 - - node: - color: '#52B4E996' - id: MiniTileOverlay - decals: - 6: 0,-2 - 7: 1,-2 - 8: -2,-3 - 9: -2,-4 - 10: 2,-4 - 18: 1,-3 - - node: - color: '#9D9D97FF' - id: MiniTileWhiteCornerNe - decals: - 33: -1,4 - - node: - color: '#9D9D97FF' - id: MiniTileWhiteCornerNw - decals: - 34: -2,4 - - node: - color: '#9D9D97FF' - id: MiniTileWhiteCornerSe - decals: - 40: -1,1 - - node: - color: '#9D9D97FF' - id: MiniTileWhiteLineE - decals: - 37: -1,3 - 43: -1,2 - - node: - color: '#FED83DFF' - id: MiniTileWhiteLineS - decals: - 17: 0,-2 - - node: - color: '#9D9D97FF' - id: MiniTileWhiteLineW - decals: - 35: -2,3 - 36: -2,2 - - node: - color: '#FFFFFFFF' - id: StandClear - decals: - 0: -1,-6 - 1: 1,-6 - - node: - angle: 4.71238898038469 rad - color: '#FFFFFFFF' - id: StandClear - decals: - 5: -2,-1 - - node: - color: '#FFFFFFFF' - id: WarnLineN - decals: - 2: -1,-6 - 3: 1,-6 - - node: - color: '#FFFFFFFF' - id: WarnLineS - decals: - 4: -2,-1 - - type: GridAtmosphere - version: 2 - data: - tiles: - 0,0: - 0: 26470 - -1,0: - 0: 52424 - 1: 2 - 0,1: - 1: 56 - -1,1: - 0: 12 - 1: 32 - 0,-1: - 1: 34944 - 0: 823 - -1,-1: - 1: 8704 - 0: 51404 - -1,-2: - 1: 8704 - 0: 34816 - 0,-2: - 0: 12800 - 1: 34816 - uniqueMixes: - - volume: 2500 - temperature: 293.15 - moles: - - 21.824879 - - 82.10312 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - immutable: True - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - chunkSize: 4 - - type: GasTileOverlay - - type: RadiationGridResistance - - type: ImplicitRoof -- proto: AirCanister - entities: - - uid: 98 - components: - - type: Transform - anchored: True - pos: 1.5,1.5 - parent: 1 - - type: Physics - bodyType: Static -- proto: Airlock - entities: - - uid: 64 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.49999997,0.5 - parent: 1 -- proto: AirlockExternalGlass - entities: - - uid: 13 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-0.49999997 - parent: 1 -- proto: AirlockGlassShuttle - entities: - - uid: 66 - components: - - type: Transform - pos: -0.49999997,-5.5 - parent: 1 - - uid: 67 - components: - - type: Transform - pos: 1.5,-5.5 - parent: 1 -- proto: AirlockMaint - entities: - - uid: 65 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,2.5 - parent: 1 -- proto: AntiPoisonMedipen - entities: - - uid: 238 - components: - - type: Transform - pos: -1.4916383,-3.658951 - parent: 1 -- proto: APCBasic - entities: - - uid: 81 - components: - - type: Transform - pos: 1.5,-0.49999997 - parent: 1 - - type: Fixtures - fixtures: {} -- proto: AtmosDeviceFanDirectional - entities: - - uid: 104 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,-0.5 - parent: 1 - - uid: 105 - components: - - type: Transform - pos: 1.5,-5.5 - parent: 1 - - uid: 119 - components: - - type: Transform - pos: -0.5,-5.5 - parent: 1 -- proto: BedsheetMedical - entities: - - uid: 101 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 -- proto: Bloodpack - entities: - - uid: 114 - components: - - type: Transform - pos: 1.1232822,-1.2575787 - parent: 1 -- proto: Brutepack - entities: - - uid: 236 - components: - - type: Transform - pos: 1.3732822,-2.3513286 - parent: 1 -- proto: ButtonFrameCaution - entities: - - uid: 231 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,3.5 - parent: 1 -- proto: CableApcExtension - entities: - - uid: 158 - components: - - type: Transform - pos: 1.5,-0.49999997 - parent: 1 - - uid: 159 - components: - - type: Transform - pos: 1.5,-1.5 - parent: 1 - - uid: 160 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 - - uid: 161 - components: - - type: Transform - pos: -0.49999997,-1.5 - parent: 1 - - uid: 162 - components: - - type: Transform - pos: -0.49999997,-0.49999997 - parent: 1 - - uid: 163 - components: - - type: Transform - pos: -0.49999997,0.5 - parent: 1 - - uid: 164 - components: - - type: Transform - pos: -0.49999997,1.5 - parent: 1 - - uid: 165 - components: - - type: Transform - pos: -0.49999997,2.5 - parent: 1 - - uid: 166 - components: - - type: Transform - pos: 0.5,2.5 - parent: 1 - - uid: 167 - components: - - type: Transform - pos: 1.5,2.5 - parent: 1 - - uid: 168 - components: - - type: Transform - pos: 1.5,1.5 - parent: 1 - - uid: 169 - components: - - type: Transform - pos: 2.5,2.5 - parent: 1 - - uid: 170 - components: - - type: Transform - pos: 2.5,3.5 - parent: 1 - - uid: 171 - components: - - type: Transform - pos: -0.49999997,3.5 - parent: 1 - - uid: 172 - components: - - type: Transform - pos: -1.5,3.5 - parent: 1 - - uid: 173 - components: - - type: Transform - pos: -2.5,3.5 - parent: 1 - - uid: 174 - components: - - type: Transform - pos: -2.5,4.5 - parent: 1 - - uid: 175 - components: - - type: Transform - pos: -2.5,5.5 - parent: 1 - - uid: 176 - components: - - type: Transform - pos: -1.5,5.5 - parent: 1 - - uid: 177 - components: - - type: Transform - pos: -0.49999997,5.5 - parent: 1 - - uid: 178 - components: - - type: Transform - pos: 0.5,5.5 - parent: 1 - - uid: 179 - components: - - type: Transform - pos: 0.5,4.5 - parent: 1 - - uid: 180 - components: - - type: Transform - pos: -0.49999997,-2.5 - parent: 1 - - uid: 181 - components: - - type: Transform - pos: -0.49999997,-3.5 - parent: 1 - - uid: 182 - components: - - type: Transform - pos: -0.49999997,-4.5 - parent: 1 - - uid: 183 - components: - - type: Transform - pos: 0.5,-4.5 - parent: 1 - - uid: 184 - components: - - type: Transform - pos: 1.5,-4.5 - parent: 1 - - uid: 185 - components: - - type: Transform - pos: 1.5,-3.5 - parent: 1 - - uid: 186 - components: - - type: Transform - pos: 1.5,-2.5 - parent: 1 - - uid: 187 - components: - - type: Transform - pos: 2.5,-3.5 - parent: 1 - - uid: 188 - components: - - type: Transform - pos: 3.5,-3.5 - parent: 1 - - uid: 189 - components: - - type: Transform - pos: 0.5,-5.5 - parent: 1 - - uid: 190 - components: - - type: Transform - pos: -1.5,-3.5 - parent: 1 - - uid: 191 - components: - - type: Transform - pos: -2.5,-3.5 - parent: 1 -- proto: CableHV - entities: - - uid: 140 - components: - - type: Transform - pos: 1.5,0.5 - parent: 1 - - uid: 141 - components: - - type: Transform - pos: 2.5,0.5 - parent: 1 - - uid: 142 - components: - - type: Transform - pos: 2.5,1.5 - parent: 1 - - uid: 143 - components: - - type: Transform - pos: 2.5,2.5 - parent: 1 - - uid: 144 - components: - - type: Transform - pos: 2.5,3.5 - parent: 1 -- proto: CableMV - entities: - - uid: 146 - components: - - type: Transform - pos: 2.5,3.5 - parent: 1 - - uid: 147 - components: - - type: Transform - pos: 2.5,2.5 - parent: 1 - - uid: 148 - components: - - type: Transform - pos: 1.5,2.5 - parent: 1 - - uid: 149 - components: - - type: Transform - pos: 0.5,2.5 - parent: 1 - - uid: 150 - components: - - type: Transform - pos: -0.49999997,2.5 - parent: 1 - - uid: 151 - components: - - type: Transform - pos: -0.49999997,1.5 - parent: 1 - - uid: 152 - components: - - type: Transform - pos: -0.49999997,0.5 - parent: 1 - - uid: 153 - components: - - type: Transform - pos: -0.49999997,-0.49999997 - parent: 1 - - uid: 154 - components: - - type: Transform - pos: -0.49999997,-1.5 - parent: 1 - - uid: 155 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 - - uid: 156 - components: - - type: Transform - pos: 1.5,-1.5 - parent: 1 - - uid: 157 - components: - - type: Transform - pos: 1.5,-0.49999997 - parent: 1 -- proto: CableTerminal - entities: - - uid: 145 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,0.5 - parent: 1 -- proto: Catwalk - entities: - - uid: 135 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,0.5 - parent: 1 - - uid: 136 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,0.5 - parent: 1 - - uid: 137 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,1.5 - parent: 1 - - uid: 138 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,2.5 - parent: 1 - - uid: 139 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,3.5 - parent: 1 - - uid: 197 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-0.49999997 - parent: 1 -- proto: Cautery - entities: - - uid: 200 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.29558912,-1.449308 - parent: 1 -- proto: ChairOfficeLight - entities: - - uid: 201 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.6128291,-3.4475188 - parent: 1 -- proto: ChairPilotSeat - entities: - - uid: 94 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.49999997,3.5 - parent: 1 -- proto: ChemistryBottleEpinephrine - entities: - - uid: 124 - components: - - type: Transform - pos: 1.3524488,-1.965912 - parent: 1 -- proto: ClosetWallEmergencyFilledRandom - entities: - - uid: 204 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,1.5 - parent: 1 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14673 - moles: - - 1.7459903 - - 6.568249 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 205 - - 206 - - 207 - - 208 - - 209 - - 210 - - 211 - - 212 - - 213 - - 215 - - type: Fixtures - fixtures: {} -- proto: ClothingEyesHudMedical - entities: - - uid: 233 - components: - - type: Transform - pos: -1.3949343,3.48129 - parent: 1 -- proto: ClothingHeadHatParamedicsoftFlipped - entities: - - uid: 206 - components: - - type: Transform - parent: 204 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingMaskBreath - entities: - - uid: 205 - components: - - type: Transform - parent: 204 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 211 - components: - - type: Transform - parent: 204 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingOuterHardsuitVoidParamed - entities: - - uid: 208 - components: - - type: Transform - parent: 204 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingOuterWinterPara - entities: - - uid: 210 - components: - - type: Transform - parent: 204 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingUniformJumpskirtParamedic - entities: - - uid: 215 - components: - - type: Transform - parent: 204 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingUniformJumpsuitParamedic - entities: - - uid: 213 - components: - - type: Transform - parent: 204 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ComputerCrewMonitoring - entities: - - uid: 97 - components: - - type: Transform - pos: -1.5,4.5 - parent: 1 -- proto: ComputerMedicalRecords - entities: - - uid: 102 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-3.5 - parent: 1 -- proto: ComputerPowerMonitoring - entities: - - uid: 95 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,2.5 - parent: 1 -- proto: ComputerShuttle - entities: - - uid: 96 - components: - - type: Transform - pos: -0.49999997,4.5 - parent: 1 -- proto: DefibrillatorCabinetFilled - entities: - - uid: 106 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-1.5 - parent: 1 - - type: Fixtures - fixtures: {} -- proto: DoubleEmergencyOxygenTankFilled - entities: - - uid: 209 - components: - - type: Transform - parent: 204 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: EmergencyMedipen - entities: - - uid: 126 - components: - - type: Transform - pos: -1.5291268,-3.5089862 - parent: 1 - - uid: 127 - components: - - type: Transform - pos: -1.54996,-3.6339862 - parent: 1 - - uid: 128 - components: - - type: Transform - pos: -1.6332935,-3.5610697 - parent: 1 -- proto: ExtinguisherCabinetFilled - entities: - - uid: 232 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-2.5 - parent: 1 - - type: Fixtures - fixtures: {} -- proto: FloorDrain - entities: - - uid: 198 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-4.5 - parent: 1 - - type: Fixtures - fixtures: {} -- proto: GasPassiveVent - entities: - - uid: 70 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-0.49999997 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeBend - entities: - - uid: 73 - components: - - type: Transform - pos: 0.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 82 - components: - - type: Transform - pos: 1.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 90 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 91 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.49999997,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasPipeStraight - entities: - - uid: 74 - components: - - type: Transform - pos: 0.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 75 - components: - - type: Transform - pos: 0.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 76 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 77 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 79 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.49999997,-0.49999997 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 80 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,-0.49999997 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 84 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 85 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.49999997,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 86 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.49999997,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 87 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.49999997,-0.49999997 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 88 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.49999997,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 89 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.49999997,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasPipeTJunction - entities: - - uid: 78 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-0.49999997 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 83 - components: - - type: Transform - pos: -0.49999997,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasPort - entities: - - uid: 41 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasVentPump - entities: - - uid: 92 - components: - - type: Transform - pos: -1.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 93 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasVentScrubber - entities: - - uid: 71 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 72 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.49999997,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: Gauze - entities: - - uid: 118 - components: - - type: Transform - pos: 0.8107822,-1.528412 - parent: 1 -- proto: GeneratorBasic15kW - entities: - - uid: 45 - components: - - type: Transform - pos: 1.5,0.5 - parent: 1 -- proto: GravityGeneratorMini - entities: - - uid: 54 - components: - - type: Transform - pos: 2.5,2.5 - parent: 1 -- proto: Grille - entities: - - uid: 19 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,4.5 - parent: 1 - - uid: 35 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,3.5 - parent: 1 - - uid: 38 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.49999997,5.5 - parent: 1 - - uid: 39 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,5.5 - parent: 1 - - uid: 40 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,4.5 - parent: 1 - - uid: 62 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-3.5 - parent: 1 - - uid: 63 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-3.5 - parent: 1 - - uid: 69 - components: - - type: Transform - pos: 0.5,-5.5 - parent: 1 -- proto: GrilleDiagonal - entities: - - uid: 33 - components: - - type: Transform - pos: -2.5,5.5 - parent: 1 - - uid: 34 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,5.5 - parent: 1 -- proto: Gyroscope - entities: - - uid: 55 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,1.5 - parent: 1 -- proto: HandheldGPSBasic - entities: - - uid: 202 - components: - - type: Transform - pos: -1.6892544,3.6903079 - parent: 1 -- proto: HandheldHealthAnalyzerUnpowered - entities: - - uid: 112 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.7066155,-1.2992454 - parent: 1 -- proto: IntercomMedical - entities: - - uid: 131 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-0.49999997 - parent: 1 - - type: Fixtures - fixtures: {} -- proto: LightBulb - entities: - - uid: 217 - components: - - type: Transform - parent: 216 - - type: LightBulb - color: '#FF0000FF' - - type: Physics - canCollide: False - - uid: 219 - components: - - type: Transform - parent: 218 - - type: LightBulb - color: '#FF0000FF' - - type: Physics - canCollide: False - - uid: 221 - components: - - type: Transform - parent: 220 - - type: LightBulb - color: '#FF0000FF' - - type: Physics - canCollide: False - - uid: 224 - components: - - type: Transform - parent: 223 - - type: LightBulb - color: '#FF0000FF' - - type: Physics - canCollide: False - - uid: 226 - components: - - type: Transform - parent: 225 - - type: LightBulb - color: '#FF0000FF' - - type: Physics - canCollide: False - - uid: 228 - components: - - type: Transform - parent: 227 - - type: LightBulb - color: '#FF0000FF' - - type: Physics - canCollide: False - - uid: 230 - components: - - type: Transform - parent: 229 - - type: LightBulb - color: '#FF0000FF' - - type: Physics - canCollide: False -- proto: MedkitAdvancedFilled - entities: - - uid: 107 - components: - - type: Transform - pos: -1.4264743,-3.385118 - parent: 1 -- proto: MedkitCombatFilled - entities: - - uid: 234 - components: - - type: Transform - pos: 1.7375284,2.8722992 - parent: 1 -- proto: MedkitOxygenFilled - entities: - - uid: 108 - components: - - type: Transform - pos: -1.6452242,-3.291368 - parent: 1 -- proto: NitrogenTankFilled - entities: - - uid: 207 - components: - - type: Transform - parent: 204 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: Ointment - entities: - - uid: 130 - components: - - type: Transform - pos: 1.2795322,-1.6429952 - parent: 1 -- proto: OxygenTankFilled - entities: - - uid: 212 - components: - - type: Transform - parent: 204 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: PoweredLEDLightPostSmall - entities: - - uid: 58 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,5.5 - parent: 1 -- proto: Poweredlight - entities: - - uid: 192 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.49999997,-0.49999997 - parent: 1 - - uid: 193 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-3.5 - parent: 1 - - uid: 195 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-2.5 - parent: 1 - - uid: 196 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,2.5 - parent: 1 -- proto: PoweredSmallLight - entities: - - uid: 194 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,1.5 - parent: 1 -- proto: PoweredStrobeLightPolice - entities: - - uid: 216 - components: - - type: Transform - pos: -1.5,5.5 - parent: 1 - - type: ContainerContainer - containers: - light_bulb: !type:ContainerSlot - showEnts: False - occludes: True - ent: 217 - - type: ApcPowerReceiver - powerLoad: 0 - - uid: 218 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,-1.5 - parent: 1 - - type: ContainerContainer - containers: - light_bulb: !type:ContainerSlot - showEnts: False - occludes: True - ent: 219 - - type: ApcPowerReceiver - powerLoad: 0 - - uid: 220 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,-5.5 - parent: 1 - - type: ContainerContainer - containers: - light_bulb: !type:ContainerSlot - showEnts: False - occludes: True - ent: 221 - - type: ApcPowerReceiver - powerLoad: 0 - - uid: 223 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,-1.5 - parent: 1 - - type: ContainerContainer - containers: - light_bulb: !type:ContainerSlot - showEnts: False - occludes: True - ent: 224 - - type: ApcPowerReceiver - powerLoad: 0 - - uid: 225 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,-5.5 - parent: 1 - - type: ContainerContainer - containers: - light_bulb: !type:ContainerSlot - showEnts: False - occludes: True - ent: 226 - - type: ApcPowerReceiver - powerLoad: 0 - - uid: 227 - components: - - type: Transform - pos: -0.49999997,5.5 - parent: 1 - - type: ContainerContainer - containers: - light_bulb: !type:ContainerSlot - showEnts: False - occludes: True - ent: 228 - - type: ApcPowerReceiver - powerLoad: 0 - - uid: 229 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,0.5 - parent: 1 - - type: ContainerContainer - containers: - light_bulb: !type:ContainerSlot - showEnts: False - occludes: True - ent: 230 - - type: ApcPowerReceiver - powerLoad: 0 -- proto: RadioHandheld - entities: - - uid: 203 - components: - - type: Transform - pos: -1.3767544,3.7736413 - parent: 1 -- proto: RollerBed - entities: - - uid: 100 - components: - - type: Transform - pos: 0.5,-3.5 - parent: 1 -- proto: Scalpel - entities: - - uid: 115 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.4357822,-1.3825787 - parent: 1 -- proto: ShuttleWindow - entities: - - uid: 4 - components: - - type: Transform - pos: -0.49999997,5.5 - parent: 1 - - uid: 6 - components: - - type: Transform - pos: -1.5,5.5 - parent: 1 - - uid: 7 - components: - - type: Transform - pos: -2.5,4.5 - parent: 1 - - uid: 8 - components: - - type: Transform - pos: -2.5,3.5 - parent: 1 - - uid: 9 - components: - - type: Transform - pos: 0.5,4.5 - parent: 1 - - uid: 29 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-3.5 - parent: 1 - - uid: 60 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-3.5 - parent: 1 - - uid: 68 - components: - - type: Transform - pos: 0.5,-5.5 - parent: 1 -- proto: ShuttleWindowDiagonal - entities: - - uid: 3 - components: - - type: Transform - pos: -2.5,5.5 - parent: 1 - - uid: 5 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,5.5 - parent: 1 -- proto: SignalButtonDirectional - entities: - - uid: 222 - components: - - type: MetaData - name: siren - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,3.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 216: - - - Pressed - - Toggle - 227: - - - Pressed - - Toggle - 218: - - - Pressed - - Toggle - 229: - - - Pressed - - Toggle - 223: - - - Pressed - - Toggle - 225: - - - Pressed - - Toggle - 220: - - - Pressed - - Toggle - - type: Fixtures - fixtures: {} -- proto: SMESBasic - entities: - - uid: 43 - components: - - type: Transform - pos: 2.5,0.5 - parent: 1 -- proto: StasisBed - entities: - - uid: 99 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 -- proto: SubstationBasic - entities: - - uid: 37 - components: - - type: Transform - pos: 2.5,3.5 - parent: 1 -- proto: SyringeBicaridine - entities: - - uid: 120 - components: - - type: Transform - pos: 1.5920322,-1.559662 - parent: 1 -- proto: SyringeDermaline - entities: - - uid: 121 - components: - - type: Transform - pos: 1.5607822,-2.111745 - parent: 1 -- proto: SyringeInaprovaline - entities: - - uid: 116 - components: - - type: Transform - pos: 1.6441156,-1.7575787 - parent: 1 -- proto: SyringeSigynate - entities: - - uid: 117 - components: - - type: Transform - pos: 1.6753656,-2.5492454 - parent: 1 -- proto: SyringeTranexamicAcid - entities: - - uid: 113 - components: - - type: Transform - pos: 1.6336988,-2.3513286 - parent: 1 -- proto: TableReinforced - entities: - - uid: 103 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-3.5 - parent: 1 - - uid: 109 - components: - - type: Transform - pos: 1.5,-2.5 - parent: 1 - - uid: 110 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 - - uid: 111 - components: - - type: Transform - pos: 1.5,-1.5 - parent: 1 - - uid: 129 - components: - - type: Transform - pos: -1.5,3.5 - parent: 1 -- proto: Thruster - entities: - - uid: 2 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-5.5 - parent: 1 - - uid: 18 - components: - - type: Transform - pos: -2.5,-1.5 - parent: 1 - - uid: 44 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-5.5 - parent: 1 - - uid: 53 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,0.5 - parent: 1 - - uid: 61 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-1.5 - parent: 1 -- proto: Tourniquet - entities: - - uid: 134 - components: - - type: Transform - pos: 1.5086988,-1.2367454 - parent: 1 -- proto: VendingMachineWallMedicalCivilian - entities: - - uid: 122 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-4.5 - parent: 1 - - type: Fixtures - fixtures: {} - - uid: 123 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-4.5 - parent: 1 - - type: Fixtures - fixtures: {} -- proto: VisitorParamedicSpawner - entities: - - uid: 214 - components: - - type: Transform - pos: 1.5,-3.5 - parent: 1 -- proto: WallShuttle - entities: - - uid: 10 - components: - - type: Transform - pos: 0.5,3.5 - parent: 1 - - uid: 11 - components: - - type: Transform - pos: -2.5,2.5 - parent: 1 - - uid: 12 - components: - - type: Transform - pos: -2.5,1.5 - parent: 1 - - uid: 14 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-1.5 - parent: 1 - - uid: 16 - components: - - type: Transform - pos: -2.5,-2.5 - parent: 1 - - uid: 17 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,0.5 - parent: 1 - - uid: 20 - components: - - type: Transform - pos: 3.5,0.5 - parent: 1 - - uid: 21 - components: - - type: Transform - pos: 3.5,1.5 - parent: 1 - - uid: 22 - components: - - type: Transform - pos: 3.5,2.5 - parent: 1 - - uid: 23 - components: - - type: Transform - pos: 3.5,3.5 - parent: 1 - - uid: 25 - components: - - type: Transform - pos: 2.5,4.5 - parent: 1 - - uid: 26 - components: - - type: Transform - pos: 1.5,4.5 - parent: 1 - - uid: 27 - components: - - type: Transform - pos: 0.5,-0.49999997 - parent: 1 - - uid: 28 - components: - - type: Transform - pos: 0.5,1.5 - parent: 1 - - uid: 30 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,0.5 - parent: 1 - - uid: 32 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-0.49999997 - parent: 1 - - uid: 46 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,-5.5 - parent: 1 - - uid: 47 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-5.5 - parent: 1 - - uid: 49 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-0.49999997 - parent: 1 - - uid: 51 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-4.5 - parent: 1 - - uid: 52 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-4.5 - parent: 1 - - uid: 56 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-1.5 - parent: 1 - - uid: 59 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-2.5 - parent: 1 -- proto: WallShuttleDiagonal - entities: - - uid: 15 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-2.5 - parent: 1 - - uid: 24 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,3.5 - parent: 1 - - uid: 31 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-0.49999997 - parent: 1 - - uid: 36 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-4.5 - parent: 1 - - uid: 42 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,4.5 - parent: 1 - - uid: 48 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,1.5 - parent: 1 - - uid: 50 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-4.5 - parent: 1 - - uid: 57 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-2.5 - parent: 1 -... diff --git a/Resources/Maps/Shuttles/ShuttleEvent/gym.yml b/Resources/Maps/Shuttles/ShuttleEvent/gym.yml deleted file mode 100644 index f7e068a823e..00000000000 --- a/Resources/Maps/Shuttles/ShuttleEvent/gym.yml +++ /dev/null @@ -1,4700 +0,0 @@ -meta: - format: 6 - postmapinit: false -tilemap: - 0: Space - 32: FloorDark - 64: FloorKitchen - 1: FloorMetalDiamond - 69: FloorMime - 111: FloorTechMaint - 113: FloorTechMaint3 - 125: FloorWood - 126: FloorWoodLarge - 128: Lattice - 129: Plating -entities: -- proto: "" - entities: - - uid: 1 - components: - - type: MetaData - name: SRV-Gymnasium - - type: Transform - pos: -0.5416667,-0.47916666 - parent: invalid - - type: MapGrid - chunks: - 0,0: - ind: 0,0 - tiles: fQAAAAAAfQAAAAADfQAAAAACfQAAAAACfQAAAAACfgAAAAABgQAAAAAAgQAAAAAAIAAAAAABIAAAAAADIAAAAAABIAAAAAADgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAACfQAAAAADfQAAAAABfQAAAAAAfQAAAAABfgAAAAACfgAAAAAAbwAAAAAAIAAAAAADIAAAAAACIAAAAAAAIAAAAAACAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAACfQAAAAADfQAAAAABfQAAAAABfgAAAAADfgAAAAACgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAADfQAAAAADfQAAAAADfQAAAAABfQAAAAADfgAAAAADfgAAAAAAfgAAAAACfgAAAAACgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAADfQAAAAADfQAAAAADfQAAAAAAfQAAAAACfgAAAAACfgAAAAACfgAAAAADfgAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAABfQAAAAABfQAAAAADfQAAAAACfQAAAAACfgAAAAABfgAAAAAAfgAAAAABfgAAAAABgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAADfQAAAAADfQAAAAABfQAAAAAAfgAAAAABfgAAAAAAfgAAAAACfgAAAAACgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAADfQAAAAAAfQAAAAABfQAAAAABfgAAAAAAfgAAAAADfgAAAAABfgAAAAADgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAADfgAAAAACfgAAAAABfgAAAAAAfgAAAAACgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAAAfgAAAAABfgAAAAAAfgAAAAACfgAAAAADgQAAAAAAgQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQAAAAAAbwAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARQAAAAAARQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -1,0: - ind: -1,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAIAAAAAABIAAAAAACgQAAAAAAfgAAAAAAfgAAAAADfgAAAAACfgAAAAACfQAAAAAAfQAAAAACfQAAAAADfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAIAAAAAABIAAAAAADbwAAAAAAfgAAAAABfgAAAAADfgAAAAABfgAAAAAAfQAAAAADfQAAAAACfQAAAAAAfQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAfgAAAAACfgAAAAADfgAAAAACfgAAAAAAfQAAAAACfQAAAAACfQAAAAADfQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAfgAAAAACfgAAAAABfgAAAAACfgAAAAABfQAAAAAAfQAAAAAAfQAAAAABfQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAfgAAAAACfgAAAAABfgAAAAAAfgAAAAABfQAAAAAAfQAAAAACfQAAAAAAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAfgAAAAACfgAAAAABfgAAAAACfgAAAAAAfQAAAAAAfQAAAAABfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAfgAAAAABfgAAAAAAfgAAAAADfgAAAAABfQAAAAACfQAAAAAAfQAAAAADfQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAfgAAAAACfgAAAAABfgAAAAABfgAAAAAAfQAAAAAAfQAAAAAAfQAAAAABfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAfgAAAAAAfgAAAAAAfgAAAAADfgAAAAABfgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAfgAAAAACfgAAAAADfgAAAAABfgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAARQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAA - version: 6 - -1,-1: - ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAcQAAAAADcQAAAAADcQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAcQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAfgAAAAABfgAAAAAAfgAAAAABfgAAAAADfgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAfgAAAAABfgAAAAADfgAAAAABfgAAAAADfQAAAAAAfQAAAAADfQAAAAABfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAfgAAAAACfgAAAAAAfgAAAAAAfgAAAAACfQAAAAAAfQAAAAADfQAAAAACfQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAfgAAAAADfgAAAAAAfgAAAAACfgAAAAADfQAAAAACfQAAAAACfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAfgAAAAACfgAAAAABfgAAAAACfgAAAAABfQAAAAACfQAAAAACfQAAAAAAfQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAfgAAAAADfgAAAAADfgAAAAAAfgAAAAABfQAAAAAAfQAAAAAAfQAAAAAAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAfgAAAAACfgAAAAABfgAAAAACfgAAAAACfQAAAAACfQAAAAADfQAAAAAAfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAIAAAAAACIAAAAAACbwAAAAAAfgAAAAADfgAAAAAAfgAAAAABfgAAAAABfQAAAAADfQAAAAABfQAAAAADfQAAAAAA - version: 6 - 0,-1: - ind: 0,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAcQAAAAADcQAAAAAAcQAAAAABgQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAcQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfgAAAAABfgAAAAAAfgAAAAABfgAAAAABfgAAAAABfgAAAAABgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAACfQAAAAABfQAAAAADfQAAAAACfgAAAAAAfgAAAAABfgAAAAACfgAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAADfQAAAAABfQAAAAAAfQAAAAAAfQAAAAACfgAAAAADfgAAAAACfgAAAAABfgAAAAABgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAABfQAAAAAAfQAAAAACfQAAAAABfQAAAAACfgAAAAAAfgAAAAAAfgAAAAACfgAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAADfQAAAAACfQAAAAADfQAAAAABfQAAAAACfgAAAAACfgAAAAAAfgAAAAABfgAAAAADgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAABfQAAAAABfQAAAAABfQAAAAACfQAAAAABfgAAAAABfgAAAAAAfgAAAAADfgAAAAACgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAADfQAAAAAAfQAAAAABfQAAAAACfQAAAAACfgAAAAADfgAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAABfQAAAAACfQAAAAACfQAAAAACfQAAAAACfgAAAAADfgAAAAABbwAAAAAAIAAAAAABIAAAAAABIAAAAAADIAAAAAACAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - - type: Broadphase - - type: Physics - bodyStatus: InAir - angularDamping: 0.05 - linearDamping: 0.05 - fixedRotation: False - bodyType: Dynamic - - type: Fixtures - fixtures: {} - - type: OccluderTree - - type: SpreaderGrid - - type: Shuttle - - type: GridPathfinding - - type: Gravity - gravityShakeSound: !type:SoundPathSpecifier - path: /Audio/Effects/alert.ogg - - type: DecalGrid - chunkCollection: - version: 2 - nodes: - - node: - color: '#FFFFFFFF' - id: BrickBoxOverlay - decals: - 80: 0,0 - - node: - color: '#FFFFFFFF' - id: BrickCornerOverlayNE - decals: - 7: 4,7 - - node: - color: '#FFFFFFFF' - id: BrickCornerOverlayNW - decals: - 6: -4,7 - - node: - color: '#FFFFFFFF' - id: BrickCornerOverlaySE - decals: - 1: 4,-7 - - node: - color: '#FFFFFFFF' - id: BrickCornerOverlaySW - decals: - 8: -4,-7 - - node: - color: '#DE3A3AFF' - id: BrickLineOverlayE - decals: - 61: -2,7 - 62: -2,6 - 63: -2,5 - 73: -2,-7 - 74: -2,-6 - 75: -2,-5 - - node: - color: '#FFFFFFFF' - id: BrickLineOverlayE - decals: - 0: 4,-6 - 3: 4,0 - 22: 4,6 - 23: 4,5 - 24: 4,4 - 25: 4,3 - 26: 4,2 - 27: 4,1 - 28: 4,-1 - 29: 4,-2 - 30: 4,-3 - 31: 4,-4 - 32: 4,-5 - - node: - color: '#DE3A3AFF' - id: BrickLineOverlayN - decals: - 64: 0,3 - - node: - color: '#FFFFFFFF' - id: BrickLineOverlayN - decals: - 4: 3,7 - 5: -3,7 - 81: -2,7 - 82: 2,7 - 83: -1,7 - 84: 0,7 - 85: 1,7 - - node: - color: '#DE3A3AFF' - id: BrickLineOverlayS - decals: - 79: 0,-3 - - node: - color: '#FFFFFFFF' - id: BrickLineOverlayS - decals: - 2: 3,-7 - 33: -3,-7 - 34: 1.0086076,0.3753289 - 35: 3.7377744,0.3753289 - 36: 2.7377744,0.3753289 - 37: 1.7273576,0.3753289 - 38: -3.7485678,0.3649124 - 39: -2.7485678,0.3649124 - 40: -1.0089843,0.3649124 - 41: -1.7485676,0.3649124 - 86: -2,-7 - 87: -1,-7 - 88: 0,-7 - 89: 1,-7 - 90: 2,-7 - - node: - color: '#DE3A3AFF' - id: BrickLineOverlayW - decals: - 65: 2,5 - 66: 2,6 - 67: 2,7 - 76: 2,-7 - 77: 2,-6 - 78: 2,-5 - - node: - color: '#FFFFFFFF' - id: BrickLineOverlayW - decals: - 9: -4,-6 - 10: -4,-5 - 11: -4,-4 - 12: -4,-3 - 13: -4,-2 - 14: -4,-1 - 15: -4,0 - 16: -4,1 - 17: -4,2 - 18: -4,3 - 19: -4,4 - 20: -4,5 - 21: -4,6 - - node: - color: '#DE3A3AFF' - id: MonoOverlay - decals: - 42: 1,-7 - 43: 1,-6 - 44: 1,-5 - 45: 0,-5 - 46: -1,-5 - 47: -1,-6 - 48: -1,-7 - 49: 0,-7 - 50: 0,-6 - 51: 0,-4 - 52: -1,7 - 53: -1,6 - 54: -1,5 - 55: 0,4 - 56: 0,5 - 57: 1,5 - 58: 1,6 - 59: 0,7 - 60: 0,6 - 68: 1,7 - - node: - color: '#DE3A3AFF' - id: ThreeQuarterTileOverlayGreyscale - decals: - 70: 1,4 - - node: - color: '#DE3A3AFF' - id: ThreeQuarterTileOverlayGreyscale180 - decals: - 72: -1,-4 - - node: - color: '#DE3A3AFF' - id: ThreeQuarterTileOverlayGreyscale270 - decals: - 71: 1,-4 - - node: - color: '#DE3A3AFF' - id: ThreeQuarterTileOverlayGreyscale90 - decals: - 69: -1,4 - - type: GridAtmosphere - version: 2 - data: - tiles: - 0,0: - 0: 65535 - 0,-1: - 0: 65535 - -1,0: - 0: 65535 - 0,1: - 0: 65535 - -1,1: - 0: 65535 - 0,2: - 0: 61951 - -1,2: - 0: 61695 - 0,3: - 0: 1023 - -1,3: - 0: 2287 - 1,0: - 0: 63475 - 1,1: - 0: 65535 - 1,2: - 0: 4115 - 1: 128 - 1,3: - 0: 1 - 1,-1: - 0: 63487 - 2,0: - 0: 4351 - 2,1: - 0: 4369 - 2,-1: - 0: 61457 - 3,0: - 0: 16 - 3,-1: - 0: 4096 - -3,0: - 0: 246 - -3,-1: - 0: 61440 - -2,0: - 0: 65535 - -2,1: - 0: 65535 - -2,-1: - 0: 65535 - -2,2: - 1: 32 - 0: 8 - -1,-1: - 0: 65535 - -2,-2: - 0: 65528 - -2,-3: - 1: 9216 - -1,-3: - 0: 9984 - -1,-2: - 0: 65535 - 0,-3: - 1: 256 - 0: 35840 - 0,-2: - 0: 65535 - 1,-3: - 0: 256 - 1: 33792 - 1,-2: - 0: 65523 - 2,-2: - 0: 4368 - uniqueMixes: - - volume: 2500 - temperature: 293.15 - moles: - - 21.824879 - - 82.10312 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - immutable: True - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - chunkSize: 4 - - type: GasTileOverlay - - type: RadiationGridResistance -- proto: AirCanister - entities: - - uid: 375 - components: - - type: Transform - anchored: True - pos: -1.5,-9.5 - parent: 1 - - type: Physics - bodyType: Static -- proto: Airlock - entities: - - uid: 347 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,10.5 - parent: 1 -- proto: AirlockExternalGlass - entities: - - uid: 167 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.5,-0.5 - parent: 1 - - uid: 168 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -8.5,-0.5 - parent: 1 - - uid: 169 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -8.5,1.5 - parent: 1 - - uid: 178 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.5,1.5 - parent: 1 -- proto: AirlockExternalGlassShuttleLocked - entities: - - uid: 166 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -11.5,-0.5 - parent: 1 - - uid: 171 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -11.5,1.5 - parent: 1 - - uid: 216 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 12.5,1.5 - parent: 1 - - uid: 217 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 12.5,-0.5 - parent: 1 -- proto: AirlockMaint - entities: - - uid: 275 - components: - - type: Transform - pos: -2.5,-8.5 - parent: 1 - - uid: 276 - components: - - type: Transform - pos: 3.5,-8.5 - parent: 1 -- proto: APCBasic - entities: - - uid: 404 - components: - - type: Transform - pos: -0.5,10.5 - parent: 1 -- proto: AtmosDeviceFanDirectional - entities: - - uid: 646 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 12.5,1.5 - parent: 1 - - uid: 647 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 12.5,-0.5 - parent: 1 - - uid: 648 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -11.5,-0.5 - parent: 1 - - uid: 649 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -11.5,1.5 - parent: 1 -- proto: BaseBallBat - entities: - - uid: 337 - components: - - type: Transform - pos: 3.526743,13.611473 - parent: 1 - - uid: 338 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.401743,13.601056 - parent: 1 -- proto: Basketball - entities: - - uid: 311 - components: - - type: Transform - pos: 0.5143137,0.5266892 - parent: 1 - - uid: 331 - components: - - type: Transform - pos: 2.276743,11.319806 - parent: 1 - - uid: 332 - components: - - type: Transform - pos: 2.7246594,11.30939 - parent: 1 - - uid: 333 - components: - - type: Transform - pos: 3.1571722,11.308301 - parent: 1 - - uid: 334 - components: - - type: Transform - pos: 2.9486575,11.641634 - parent: 1 - - uid: 335 - components: - - type: Transform - pos: 2.526743,11.642723 - parent: 1 - - uid: 336 - components: - - type: Transform - pos: 2.7299075,11.974968 - parent: 1 -- proto: Bed - entities: - - uid: 323 - components: - - type: Transform - pos: -2.5,12.5 - parent: 1 -- proto: BedsheetMime - entities: - - uid: 342 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,12.5 - parent: 1 -- proto: CableApcExtension - entities: - - uid: 405 - components: - - type: Transform - pos: -0.5,10.5 - parent: 1 - - uid: 406 - components: - - type: Transform - pos: -0.5,11.5 - parent: 1 - - uid: 407 - components: - - type: Transform - pos: -0.5,12.5 - parent: 1 - - uid: 408 - components: - - type: Transform - pos: 0.5,12.5 - parent: 1 - - uid: 409 - components: - - type: Transform - pos: 1.5,12.5 - parent: 1 - - uid: 410 - components: - - type: Transform - pos: 2.5,12.5 - parent: 1 - - uid: 411 - components: - - type: Transform - pos: 3.5,12.5 - parent: 1 - - uid: 412 - components: - - type: Transform - pos: -1.5,12.5 - parent: 1 - - uid: 413 - components: - - type: Transform - pos: -2.5,12.5 - parent: 1 - - uid: 414 - components: - - type: Transform - pos: 0.5,13.5 - parent: 1 - - uid: 415 - components: - - type: Transform - pos: 0.5,14.5 - parent: 1 - - uid: 416 - components: - - type: Transform - pos: 0.5,15.5 - parent: 1 - - uid: 417 - components: - - type: Transform - pos: -0.5,15.5 - parent: 1 - - uid: 418 - components: - - type: Transform - pos: -1.5,15.5 - parent: 1 - - uid: 419 - components: - - type: Transform - pos: -1.5,14.5 - parent: 1 - - uid: 420 - components: - - type: Transform - pos: 1.5,15.5 - parent: 1 - - uid: 421 - components: - - type: Transform - pos: 2.5,15.5 - parent: 1 - - uid: 422 - components: - - type: Transform - pos: 2.5,14.5 - parent: 1 - - uid: 423 - components: - - type: Transform - pos: -0.5,9.5 - parent: 1 - - uid: 424 - components: - - type: Transform - pos: -0.5,8.5 - parent: 1 - - uid: 425 - components: - - type: Transform - pos: -1.5,8.5 - parent: 1 - - uid: 426 - components: - - type: Transform - pos: -2.5,8.5 - parent: 1 - - uid: 427 - components: - - type: Transform - pos: -3.5,8.5 - parent: 1 - - uid: 428 - components: - - type: Transform - pos: -4.5,8.5 - parent: 1 - - uid: 429 - components: - - type: Transform - pos: -4.5,7.5 - parent: 1 - - uid: 430 - components: - - type: Transform - pos: -4.5,6.5 - parent: 1 - - uid: 431 - components: - - type: Transform - pos: -4.5,5.5 - parent: 1 - - uid: 432 - components: - - type: Transform - pos: -4.5,4.5 - parent: 1 - - uid: 433 - components: - - type: Transform - pos: -4.5,3.5 - parent: 1 - - uid: 434 - components: - - type: Transform - pos: -4.5,2.5 - parent: 1 - - uid: 435 - components: - - type: Transform - pos: -4.5,1.5 - parent: 1 - - uid: 436 - components: - - type: Transform - pos: -4.5,0.5 - parent: 1 - - uid: 437 - components: - - type: Transform - pos: -4.5,-0.5 - parent: 1 - - uid: 438 - components: - - type: Transform - pos: -4.5,-1.5 - parent: 1 - - uid: 439 - components: - - type: Transform - pos: -4.5,-2.5 - parent: 1 - - uid: 440 - components: - - type: Transform - pos: -4.5,-3.5 - parent: 1 - - uid: 441 - components: - - type: Transform - pos: -4.5,-4.5 - parent: 1 - - uid: 442 - components: - - type: Transform - pos: -4.5,-5.5 - parent: 1 - - uid: 443 - components: - - type: Transform - pos: -4.5,-6.5 - parent: 1 - - uid: 444 - components: - - type: Transform - pos: -4.5,-7.5 - parent: 1 - - uid: 445 - components: - - type: Transform - pos: -3.5,-7.5 - parent: 1 - - uid: 446 - components: - - type: Transform - pos: -2.5,-7.5 - parent: 1 - - uid: 447 - components: - - type: Transform - pos: -1.5,-7.5 - parent: 1 - - uid: 448 - components: - - type: Transform - pos: -0.5,-7.5 - parent: 1 - - uid: 449 - components: - - type: Transform - pos: 0.5,-7.5 - parent: 1 - - uid: 450 - components: - - type: Transform - pos: 1.5,-7.5 - parent: 1 - - uid: 451 - components: - - type: Transform - pos: 2.5,-7.5 - parent: 1 - - uid: 452 - components: - - type: Transform - pos: 3.5,-7.5 - parent: 1 - - uid: 453 - components: - - type: Transform - pos: 4.5,-7.5 - parent: 1 - - uid: 454 - components: - - type: Transform - pos: 5.5,-7.5 - parent: 1 - - uid: 455 - components: - - type: Transform - pos: 5.5,-6.5 - parent: 1 - - uid: 456 - components: - - type: Transform - pos: 5.5,-5.5 - parent: 1 - - uid: 457 - components: - - type: Transform - pos: 5.5,-4.5 - parent: 1 - - uid: 458 - components: - - type: Transform - pos: 5.5,-3.5 - parent: 1 - - uid: 459 - components: - - type: Transform - pos: 5.5,-2.5 - parent: 1 - - uid: 460 - components: - - type: Transform - pos: 5.5,-1.5 - parent: 1 - - uid: 461 - components: - - type: Transform - pos: 5.5,-0.5 - parent: 1 - - uid: 462 - components: - - type: Transform - pos: 5.5,0.5 - parent: 1 - - uid: 463 - components: - - type: Transform - pos: 5.5,1.5 - parent: 1 - - uid: 464 - components: - - type: Transform - pos: 5.5,2.5 - parent: 1 - - uid: 465 - components: - - type: Transform - pos: 5.5,3.5 - parent: 1 - - uid: 466 - components: - - type: Transform - pos: 5.5,4.5 - parent: 1 - - uid: 467 - components: - - type: Transform - pos: 5.5,5.5 - parent: 1 - - uid: 468 - components: - - type: Transform - pos: 5.5,6.5 - parent: 1 - - uid: 469 - components: - - type: Transform - pos: 5.5,7.5 - parent: 1 - - uid: 470 - components: - - type: Transform - pos: 5.5,8.5 - parent: 1 - - uid: 471 - components: - - type: Transform - pos: 4.5,8.5 - parent: 1 - - uid: 472 - components: - - type: Transform - pos: 3.5,8.5 - parent: 1 - - uid: 473 - components: - - type: Transform - pos: 2.5,8.5 - parent: 1 - - uid: 474 - components: - - type: Transform - pos: 1.5,8.5 - parent: 1 - - uid: 475 - components: - - type: Transform - pos: 0.5,8.5 - parent: 1 - - uid: 476 - components: - - type: Transform - pos: 6.5,0.5 - parent: 1 - - uid: 477 - components: - - type: Transform - pos: 7.5,0.5 - parent: 1 - - uid: 478 - components: - - type: Transform - pos: 8.5,0.5 - parent: 1 - - uid: 479 - components: - - type: Transform - pos: 9.5,0.5 - parent: 1 - - uid: 480 - components: - - type: Transform - pos: 10.5,0.5 - parent: 1 - - uid: 481 - components: - - type: Transform - pos: 11.5,0.5 - parent: 1 - - uid: 482 - components: - - type: Transform - pos: 3.5,-8.5 - parent: 1 - - uid: 483 - components: - - type: Transform - pos: 3.5,-9.5 - parent: 1 - - uid: 484 - components: - - type: Transform - pos: 2.5,-9.5 - parent: 1 - - uid: 485 - components: - - type: Transform - pos: 4.5,-9.5 - parent: 1 - - uid: 486 - components: - - type: Transform - pos: -2.5,-8.5 - parent: 1 - - uid: 487 - components: - - type: Transform - pos: -2.5,-9.5 - parent: 1 - - uid: 488 - components: - - type: Transform - pos: -3.5,-9.5 - parent: 1 - - uid: 489 - components: - - type: Transform - pos: -1.5,-9.5 - parent: 1 - - uid: 490 - components: - - type: Transform - pos: -5.5,0.5 - parent: 1 - - uid: 491 - components: - - type: Transform - pos: -6.5,0.5 - parent: 1 - - uid: 492 - components: - - type: Transform - pos: -7.5,0.5 - parent: 1 - - uid: 493 - components: - - type: Transform - pos: -8.5,0.5 - parent: 1 - - uid: 494 - components: - - type: Transform - pos: -9.5,0.5 - parent: 1 - - uid: 495 - components: - - type: Transform - pos: -10.5,0.5 - parent: 1 -- proto: CableHV - entities: - - uid: 148 - components: - - type: Transform - pos: 4.5,-9.5 - parent: 1 - - uid: 258 - components: - - type: Transform - pos: 3.5,-9.5 - parent: 1 - - uid: 259 - components: - - type: Transform - pos: 2.5,-9.5 - parent: 1 - - uid: 260 - components: - - type: Transform - pos: 3.5,-8.5 - parent: 1 - - uid: 261 - components: - - type: Transform - pos: 3.5,-7.5 - parent: 1 - - uid: 262 - components: - - type: Transform - pos: 2.5,-7.5 - parent: 1 - - uid: 263 - components: - - type: Transform - pos: 1.5,-7.5 - parent: 1 - - uid: 264 - components: - - type: Transform - pos: 0.5,-7.5 - parent: 1 - - uid: 265 - components: - - type: Transform - pos: -0.5,-7.5 - parent: 1 - - uid: 266 - components: - - type: Transform - pos: -1.5,-7.5 - parent: 1 - - uid: 267 - components: - - type: Transform - pos: -2.5,-7.5 - parent: 1 - - uid: 268 - components: - - type: Transform - pos: -2.5,-8.5 - parent: 1 - - uid: 269 - components: - - type: Transform - pos: -2.5,-9.5 - parent: 1 - - uid: 270 - components: - - type: Transform - pos: -3.5,-9.5 - parent: 1 -- proto: CableMV - entities: - - uid: 376 - components: - - type: Transform - pos: -3.5,-9.5 - parent: 1 - - uid: 377 - components: - - type: Transform - pos: -2.5,-9.5 - parent: 1 - - uid: 378 - components: - - type: Transform - pos: -2.5,-8.5 - parent: 1 - - uid: 379 - components: - - type: Transform - pos: -2.5,-7.5 - parent: 1 - - uid: 380 - components: - - type: Transform - pos: -3.5,-7.5 - parent: 1 - - uid: 381 - components: - - type: Transform - pos: -4.5,-7.5 - parent: 1 - - uid: 382 - components: - - type: Transform - pos: -4.5,-6.5 - parent: 1 - - uid: 383 - components: - - type: Transform - pos: -4.5,-5.5 - parent: 1 - - uid: 384 - components: - - type: Transform - pos: -4.5,-4.5 - parent: 1 - - uid: 385 - components: - - type: Transform - pos: -4.5,-3.5 - parent: 1 - - uid: 386 - components: - - type: Transform - pos: -4.5,-2.5 - parent: 1 - - uid: 387 - components: - - type: Transform - pos: -4.5,-1.5 - parent: 1 - - uid: 388 - components: - - type: Transform - pos: -4.5,-0.5 - parent: 1 - - uid: 389 - components: - - type: Transform - pos: -4.5,0.5 - parent: 1 - - uid: 390 - components: - - type: Transform - pos: -4.5,1.5 - parent: 1 - - uid: 391 - components: - - type: Transform - pos: -4.5,2.5 - parent: 1 - - uid: 392 - components: - - type: Transform - pos: -4.5,3.5 - parent: 1 - - uid: 393 - components: - - type: Transform - pos: -4.5,4.5 - parent: 1 - - uid: 394 - components: - - type: Transform - pos: -4.5,5.5 - parent: 1 - - uid: 395 - components: - - type: Transform - pos: -4.5,6.5 - parent: 1 - - uid: 396 - components: - - type: Transform - pos: -4.5,7.5 - parent: 1 - - uid: 397 - components: - - type: Transform - pos: -4.5,8.5 - parent: 1 - - uid: 398 - components: - - type: Transform - pos: -3.5,8.5 - parent: 1 - - uid: 399 - components: - - type: Transform - pos: -2.5,8.5 - parent: 1 - - uid: 400 - components: - - type: Transform - pos: -1.5,8.5 - parent: 1 - - uid: 401 - components: - - type: Transform - pos: -0.5,8.5 - parent: 1 - - uid: 402 - components: - - type: Transform - pos: -0.5,9.5 - parent: 1 - - uid: 403 - components: - - type: Transform - pos: -0.5,10.5 - parent: 1 -- proto: Carpet - entities: - - uid: 357 - components: - - type: Transform - pos: 8.5,-0.5 - parent: 1 - - uid: 358 - components: - - type: Transform - pos: 8.5,0.5 - parent: 1 - - uid: 359 - components: - - type: Transform - pos: 8.5,1.5 - parent: 1 - - uid: 360 - components: - - type: Transform - pos: 9.5,-0.5 - parent: 1 - - uid: 361 - components: - - type: Transform - pos: 9.5,0.5 - parent: 1 - - uid: 362 - components: - - type: Transform - pos: 9.5,1.5 - parent: 1 - - uid: 363 - components: - - type: Transform - pos: 10.5,-0.5 - parent: 1 - - uid: 364 - components: - - type: Transform - pos: 10.5,0.5 - parent: 1 - - uid: 365 - components: - - type: Transform - pos: 10.5,1.5 - parent: 1 - - uid: 366 - components: - - type: Transform - pos: 11.5,-0.5 - parent: 1 - - uid: 367 - components: - - type: Transform - pos: 11.5,0.5 - parent: 1 - - uid: 368 - components: - - type: Transform - pos: 11.5,1.5 - parent: 1 - - uid: 554 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -10.5,1.5 - parent: 1 - - uid: 632 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -10.5,0.5 - parent: 1 - - uid: 633 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -10.5,-0.5 - parent: 1 - - uid: 634 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -9.5,1.5 - parent: 1 - - uid: 635 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -9.5,0.5 - parent: 1 - - uid: 636 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -9.5,-0.5 - parent: 1 -- proto: ChairPilotSeat - entities: - - uid: 328 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,13.5 - parent: 1 -- proto: ClothingBackpackSatchelMime - entities: - - uid: 313 - components: - - type: Transform - parent: 306 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingHeadHatBeretFrench - entities: - - uid: 317 - components: - - type: Transform - parent: 306 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingHeadHatMimesoftFlipped - entities: - - uid: 316 - components: - - type: Transform - parent: 306 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingMaskBandGold - entities: - - uid: 319 - components: - - type: MetaData - name: yellow flag - - type: Transform - parent: 306 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingMaskBandRed - entities: - - uid: 318 - components: - - type: MetaData - name: red flag - - type: Transform - parent: 306 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingMaskSexyMime - entities: - - uid: 315 - components: - - type: Transform - parent: 306 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingOuterWinterMime - entities: - - uid: 314 - components: - - type: Transform - parent: 306 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingShoesColorWhite - entities: - - uid: 321 - components: - - type: Transform - parent: 306 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingUniformJumpskirtMime - entities: - - uid: 308 - components: - - type: Transform - parent: 306 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingUniformJumpsuitMime - entities: - - uid: 312 - components: - - type: Transform - parent: 306 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ComputerPowerMonitoring - entities: - - uid: 330 - components: - - type: Transform - pos: -0.5,14.5 - parent: 1 -- proto: ComputerRadar - entities: - - uid: 329 - components: - - type: Transform - pos: 1.5,14.5 - parent: 1 -- proto: ComputerShuttle - entities: - - uid: 310 - components: - - type: Transform - pos: 0.5,14.5 - parent: 1 -- proto: DisposalBend - entities: - - uid: 18 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-0.5 - parent: 1 - - uid: 19 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-0.5 - parent: 1 - - uid: 20 - components: - - type: Transform - pos: 1.5,1.5 - parent: 1 - - uid: 21 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,1.5 - parent: 1 -- proto: DisposalPipe - entities: - - uid: 24 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-5.5 - parent: 1 - - uid: 25 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-4.5 - parent: 1 - - uid: 26 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-3.5 - parent: 1 - - uid: 27 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-2.5 - parent: 1 - - uid: 28 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-1.5 - parent: 1 - - uid: 29 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,2.5 - parent: 1 - - uid: 30 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,3.5 - parent: 1 - - uid: 31 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,4.5 - parent: 1 - - uid: 32 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,5.5 - parent: 1 - - uid: 33 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,6.5 - parent: 1 -- proto: DisposalTrunk - entities: - - uid: 10 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,0.5 - parent: 1 - - uid: 11 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,0.5 - parent: 1 - - uid: 22 - components: - - type: Transform - pos: 0.5,7.5 - parent: 1 - - uid: 23 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-6.5 - parent: 1 -- proto: DisposalUnit - entities: - - uid: 8 - components: - - type: Transform - pos: 0.5,-6.5 - parent: 1 - - uid: 9 - components: - - type: Transform - pos: 0.5,7.5 - parent: 1 -- proto: DisposalYJunction - entities: - - uid: 14 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,0.5 - parent: 1 - - uid: 15 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,0.5 - parent: 1 - - uid: 16 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,1.5 - parent: 1 - - uid: 17 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 -- proto: DresserFilled - entities: - - uid: 325 - components: - - type: Transform - pos: -2.5,13.5 - parent: 1 -- proto: DrinkBeerBottleFull - entities: - - uid: 670 - components: - - type: Transform - pos: -6.3760962,-5.39247 - parent: 1 - - uid: 671 - components: - - type: Transform - pos: -7.3240128,-2.3091366 - parent: 1 - - uid: 672 - components: - - type: Transform - pos: -5.3031793,-3.3820531 - parent: 1 - - uid: 673 - components: - - type: Transform - pos: -7.4281793,5.735256 - parent: 1 - - uid: 674 - components: - - type: Transform - pos: -6.3656793,3.7144232 - parent: 1 - - uid: 675 - components: - - type: Transform - pos: -5.3969293,6.5581727 - parent: 1 -- proto: DrinkBeerCan - entities: - - uid: 676 - components: - - type: Transform - pos: -7.2405953,-4.639096 - parent: 1 - - uid: 677 - components: - - type: Transform - pos: -7.2197623,-6.545346 - parent: 1 - - uid: 678 - components: - - type: Transform - pos: -5.3239284,2.415052 - parent: 1 - - uid: 679 - components: - - type: Transform - pos: -7.2822623,7.508802 - parent: 1 -- proto: DrinkGoldenCup - entities: - - uid: 341 - components: - - type: Transform - pos: -3.4836738,12.163556 - parent: 1 -- proto: DrinkMugOne - entities: - - uid: 340 - components: - - type: Transform - pos: 4.5000734,11.604582 - parent: 1 -- proto: FaxMachineBase - entities: - - uid: 353 - components: - - type: MetaData - name: Gymnasium fax machine - - type: Transform - pos: -1.5,13.5 - parent: 1 - - type: FaxMachine - name: Gymnasium -- proto: FoodBurgerBaseball - entities: - - uid: 339 - components: - - type: Transform - pos: 3.4850762,13.548973 - parent: 1 -- proto: FoodMealNachosCheesy - entities: - - uid: 680 - components: - - type: Transform - pos: -6.3343453,-3.4293191 - parent: 1 - - uid: 681 - components: - - type: Transform - pos: -5.4801784,-1.4334948 - parent: 1 - - uid: 682 - components: - - type: Transform - pos: -7.3135123,6.6186624 - parent: 1 - - uid: 683 - components: - - type: Transform - pos: -7.4593453,3.629079 - parent: 1 -- proto: FoodPlateSmall - entities: - - uid: 354 - components: - - type: Transform - pos: 2.5213952,13.613303 - parent: 1 -- proto: FoodSnackPopcorn - entities: - - uid: 664 - components: - - type: Transform - pos: -5.3969293,-6.402151 - parent: 1 - - uid: 665 - components: - - type: Transform - pos: -7.5219293,-3.3709009 - parent: 1 - - uid: 666 - components: - - type: Transform - pos: -5.5010962,-2.329234 - parent: 1 - - uid: 667 - components: - - type: Transform - pos: -7.5635962,2.5331728 - parent: 1 - - uid: 668 - components: - - type: Transform - pos: -5.5531793,4.606089 - parent: 1 - - uid: 669 - components: - - type: Transform - pos: -6.5844293,7.5435896 - parent: 1 -- proto: FoodSnackRaisins - entities: - - uid: 684 - components: - - type: Transform - pos: -6.4176784,-1.3856684 - parent: 1 - - uid: 685 - components: - - type: Transform - pos: -6.282262,5.521831 - parent: 1 -- proto: FoodTartMimeSlice - entities: - - uid: 352 - components: - - type: Transform - pos: 2.5318117,13.602887 - parent: 1 -- proto: GasPassiveVent - entities: - - uid: 637 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-9.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeBend - entities: - - uid: 272 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-9.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 504 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,-7.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 505 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-7.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 506 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,8.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 507 - components: - - type: Transform - pos: 5.5,8.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 549 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -9.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 570 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -10.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 580 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 581 - components: - - type: Transform - pos: 10.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 608 - components: - - type: Transform - pos: 0.5,12.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeFourway - entities: - - uid: 564 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 573 - components: - - type: Transform - pos: 6.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 605 - components: - - type: Transform - pos: 0.5,9.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeStraight - entities: - - uid: 273 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-8.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 496 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,-7.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 497 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,-7.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 498 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,-7.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 499 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-7.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 500 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-7.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 501 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-7.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 502 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-7.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 503 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-7.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 508 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,8.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 510 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,8.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 511 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,8.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 512 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,8.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 514 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,8.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 516 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,8.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 517 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,7.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 519 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,5.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 520 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 521 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 522 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 524 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 525 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 526 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 527 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 528 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 529 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 531 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-6.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 532 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-6.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 533 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-5.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 534 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 535 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 536 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 537 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 538 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 539 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 541 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 542 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 543 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 544 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,5.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 545 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,6.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 546 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,7.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 547 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -9.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 550 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 551 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 552 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -8.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 553 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 555 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 559 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 560 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 561 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 562 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 563 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 565 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 566 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 567 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 568 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 569 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 574 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 7.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 575 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 8.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 576 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 577 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 7.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 578 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 8.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 579 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 9.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 587 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 588 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-5.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 589 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 590 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 594 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,5.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 595 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,6.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 596 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 597 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 598 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 599 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 600 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 601 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,5.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 602 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,6.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 603 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,7.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 604 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,8.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 606 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,10.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 607 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,11.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 609 - components: - - type: Transform - pos: 1.5,9.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 610 - components: - - type: Transform - pos: 1.5,10.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 611 - components: - - type: Transform - pos: 1.5,11.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 624 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,9.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 625 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,9.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 638 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-8.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 639 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-7.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 640 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-6.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 641 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-5.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 642 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 643 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 644 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 645 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeTJunction - entities: - - uid: 274 - components: - - type: Transform - pos: -2.5,-7.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 518 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,6.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 523 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 530 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,-5.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 540 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 556 - components: - - type: Transform - pos: -6.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 557 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -7.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 572 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -5.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 613 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,8.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 616 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 617 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 618 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 619 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 620 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 621 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 626 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,8.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 627 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,8.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasPort - entities: - - uid: 271 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,-9.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasVentPump - entities: - - uid: 513 - components: - - type: Transform - pos: 1.5,12.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 548 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -9.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 583 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 10.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 622 - components: - - type: Transform - pos: -2.5,9.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 623 - components: - - type: Transform - pos: 3.5,9.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 628 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,-5.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 629 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,6.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 630 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasVentScrubber - entities: - - uid: 509 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,9.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 515 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,9.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 558 - components: - - type: Transform - pos: -10.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 571 - components: - - type: Transform - pos: -5.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 582 - components: - - type: Transform - pos: 9.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 584 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 585 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 586 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 591 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 592 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 593 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 612 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,12.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 614 - components: - - type: Transform - pos: 6.5,7.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 615 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-6.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 631 - components: - - type: Transform - pos: -7.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GeneratorBasic15kW - entities: - - uid: 256 - components: - - type: Transform - pos: 4.5,-9.5 - parent: 1 - - type: PowerSupplier - supplyRate: 17000 -- proto: GravityGeneratorMini - entities: - - uid: 651 - components: - - type: Transform - pos: -0.5,11.5 - parent: 1 -- proto: Grille - entities: - - uid: 287 - components: - - type: Transform - pos: -1.5,14.5 - parent: 1 - - uid: 288 - components: - - type: Transform - pos: -1.5,15.5 - parent: 1 - - uid: 289 - components: - - type: Transform - pos: -0.5,15.5 - parent: 1 - - uid: 290 - components: - - type: Transform - pos: 0.5,15.5 - parent: 1 - - uid: 291 - components: - - type: Transform - pos: 1.5,15.5 - parent: 1 - - uid: 292 - components: - - type: Transform - pos: 2.5,15.5 - parent: 1 - - uid: 293 - components: - - type: Transform - pos: 2.5,14.5 - parent: 1 - - uid: 303 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,0.5 - parent: 1 -- proto: Gyroscope - entities: - - uid: 650 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,11.5 - parent: 1 -- proto: LockerMime - entities: - - uid: 306 - components: - - type: Transform - pos: 4.5,12.5 - parent: 1 - - type: Lock - locked: False - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.147 - moles: - - 1.7459903 - - 6.568249 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 320 - - 314 - - 321 - - 308 - - 312 - - 313 - - 318 - - 319 - - 316 - - 315 - - 317 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null -- proto: Mirror - entities: - - uid: 326 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,13.5 - parent: 1 -- proto: PosterLegitMime - entities: - - uid: 343 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,0.5 - parent: 1 - - uid: 344 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 7.5,0.5 - parent: 1 -- proto: Poweredlight - entities: - - uid: 369 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 11.5,0.5 - parent: 1 - - uid: 370 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -10.5,0.5 - parent: 1 - - uid: 371 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,11.5 - parent: 1 - - uid: 372 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,11.5 - parent: 1 -- proto: PoweredlightLED - entities: - - uid: 294 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,0.5 - parent: 1 - - uid: 295 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,-4.5 - parent: 1 - - uid: 296 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,5.5 - parent: 1 - - uid: 299 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,5.5 - parent: 1 - - uid: 300 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,-4.5 - parent: 1 - - uid: 304 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,0.5 - parent: 1 - - uid: 305 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,5.5 - parent: 1 -- proto: PoweredSmallLight - entities: - - uid: 373 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-9.5 - parent: 1 - - uid: 374 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-9.5 - parent: 1 -- proto: Railing - entities: - - uid: 658 - components: - - type: Transform - pos: -7.5,0.5 - parent: 1 - - uid: 659 - components: - - type: Transform - pos: -6.5,0.5 - parent: 1 - - uid: 660 - components: - - type: Transform - pos: -5.5,0.5 - parent: 1 - - uid: 661 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -7.5,0.5 - parent: 1 - - uid: 662 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,0.5 - parent: 1 - - uid: 663 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -5.5,0.5 - parent: 1 -- proto: ReinforcedWindow - entities: - - uid: 302 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,0.5 - parent: 1 -- proto: ShuttleWindow - entities: - - uid: 245 - components: - - type: Transform - pos: 1.5,15.5 - parent: 1 - - uid: 246 - components: - - type: Transform - pos: 0.5,15.5 - parent: 1 - - uid: 247 - components: - - type: Transform - pos: -0.5,15.5 - parent: 1 - - uid: 248 - components: - - type: Transform - pos: -1.5,15.5 - parent: 1 - - uid: 249 - components: - - type: Transform - pos: -1.5,14.5 - parent: 1 - - uid: 285 - components: - - type: Transform - pos: 2.5,15.5 - parent: 1 - - uid: 286 - components: - - type: Transform - pos: 2.5,14.5 - parent: 1 -- proto: SMESBasic - entities: - - uid: 257 - components: - - type: Transform - pos: 2.5,-9.5 - parent: 1 -- proto: StairDark - entities: - - uid: 652 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,1.5 - parent: 1 - - uid: 653 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,1.5 - parent: 1 - - uid: 654 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,1.5 - parent: 1 - - uid: 655 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,-0.5 - parent: 1 - - uid: 656 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-0.5 - parent: 1 - - uid: 657 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-0.5 - parent: 1 -- proto: Stairs - entities: - - uid: 40 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,7.5 - parent: 1 - - uid: 41 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,6.5 - parent: 1 - - uid: 42 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,5.5 - parent: 1 - - uid: 43 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,4.5 - parent: 1 - - uid: 44 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,3.5 - parent: 1 - - uid: 45 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,2.5 - parent: 1 - - uid: 46 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,7.5 - parent: 1 - - uid: 47 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,6.5 - parent: 1 - - uid: 48 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,5.5 - parent: 1 - - uid: 49 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,4.5 - parent: 1 - - uid: 50 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,3.5 - parent: 1 - - uid: 51 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,2.5 - parent: 1 - - uid: 58 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,-1.5 - parent: 1 - - uid: 59 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,-2.5 - parent: 1 - - uid: 60 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,-3.5 - parent: 1 - - uid: 61 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,-4.5 - parent: 1 - - uid: 62 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,-5.5 - parent: 1 - - uid: 63 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,-6.5 - parent: 1 - - uid: 64 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-1.5 - parent: 1 - - uid: 65 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-2.5 - parent: 1 - - uid: 66 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-3.5 - parent: 1 - - uid: 67 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-4.5 - parent: 1 - - uid: 68 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-5.5 - parent: 1 - - uid: 69 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-6.5 - parent: 1 - - uid: 106 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,7.5 - parent: 1 - - uid: 107 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,6.5 - parent: 1 - - uid: 108 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,5.5 - parent: 1 - - uid: 109 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,4.5 - parent: 1 - - uid: 110 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,3.5 - parent: 1 - - uid: 111 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,2.5 - parent: 1 - - uid: 112 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-1.5 - parent: 1 - - uid: 113 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-2.5 - parent: 1 - - uid: 114 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-3.5 - parent: 1 - - uid: 115 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-4.5 - parent: 1 - - uid: 116 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-5.5 - parent: 1 - - uid: 117 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-6.5 - parent: 1 -- proto: SteelBench - entities: - - uid: 70 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-6.5 - parent: 1 - - uid: 71 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-5.5 - parent: 1 - - uid: 72 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-4.5 - parent: 1 - - uid: 73 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-3.5 - parent: 1 - - uid: 74 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-2.5 - parent: 1 - - uid: 75 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-1.5 - parent: 1 - - uid: 76 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,-6.5 - parent: 1 - - uid: 77 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,-5.5 - parent: 1 - - uid: 78 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,-4.5 - parent: 1 - - uid: 79 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,-3.5 - parent: 1 - - uid: 80 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,-2.5 - parent: 1 - - uid: 81 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,-1.5 - parent: 1 - - uid: 94 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,2.5 - parent: 1 - - uid: 95 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,3.5 - parent: 1 - - uid: 96 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,4.5 - parent: 1 - - uid: 97 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,5.5 - parent: 1 - - uid: 98 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,6.5 - parent: 1 - - uid: 99 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,7.5 - parent: 1 - - uid: 100 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,2.5 - parent: 1 - - uid: 101 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,3.5 - parent: 1 - - uid: 102 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,4.5 - parent: 1 - - uid: 103 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,5.5 - parent: 1 - - uid: 104 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,6.5 - parent: 1 - - uid: 105 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,7.5 - parent: 1 - - uid: 118 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-6.5 - parent: 1 - - uid: 119 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-5.5 - parent: 1 - - uid: 120 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-4.5 - parent: 1 - - uid: 136 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-3.5 - parent: 1 - - uid: 137 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-2.5 - parent: 1 - - uid: 138 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-1.5 - parent: 1 - - uid: 139 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,2.5 - parent: 1 - - uid: 140 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,3.5 - parent: 1 - - uid: 141 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,4.5 - parent: 1 - - uid: 142 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,5.5 - parent: 1 - - uid: 143 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,6.5 - parent: 1 - - uid: 144 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,7.5 - parent: 1 -- proto: SubstationBasic - entities: - - uid: 86 - components: - - type: Transform - pos: -3.5,-9.5 - parent: 1 -- proto: TableReinforced - entities: - - uid: 307 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,0.5 - parent: 1 - - uid: 309 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,0.5 - parent: 1 -- proto: TableWood - entities: - - uid: 322 - components: - - type: Transform - pos: -3.5,12.5 - parent: 1 - - uid: 324 - components: - - type: Transform - pos: -3.5,11.5 - parent: 1 - - uid: 327 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,11.5 - parent: 1 - - uid: 355 - components: - - type: Transform - pos: -1.5,13.5 - parent: 1 - - uid: 356 - components: - - type: Transform - pos: 2.5,13.5 - parent: 1 -- proto: Thruster - entities: - - uid: 232 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -5.5,-9.5 - parent: 1 - - uid: 233 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-9.5 - parent: 1 - - uid: 234 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-9.5 - parent: 1 - - uid: 235 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.5,-8.5 - parent: 1 - - uid: 236 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-8.5 - parent: 1 - - uid: 237 - components: - - type: Transform - pos: -6.5,9.5 - parent: 1 - - uid: 238 - components: - - type: Transform - pos: 7.5,9.5 - parent: 1 -- proto: VisitorMimeSpawner - entities: - - uid: 686 - components: - - type: Transform - pos: 0.5,13.5 - parent: 1 -- proto: WallShuttle - entities: - - uid: 34 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,7.5 - parent: 1 - - uid: 35 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,8.5 - parent: 1 - - uid: 36 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,8.5 - parent: 1 - - uid: 37 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,8.5 - parent: 1 - - uid: 38 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,8.5 - parent: 1 - - uid: 39 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,9.5 - parent: 1 - - uid: 52 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-8.5 - parent: 1 - - uid: 53 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,-8.5 - parent: 1 - - uid: 54 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,-8.5 - parent: 1 - - uid: 55 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,8.5 - parent: 1 - - uid: 56 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,10.5 - parent: 1 - - uid: 57 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,10.5 - parent: 1 - - uid: 82 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,9.5 - parent: 1 - - uid: 83 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,9.5 - parent: 1 - - uid: 84 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 7.5,8.5 - parent: 1 - - uid: 85 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,-8.5 - parent: 1 - - uid: 87 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-8.5 - parent: 1 - - uid: 88 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,9.5 - parent: 1 - - uid: 89 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,2.5 - parent: 1 - - uid: 90 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,3.5 - parent: 1 - - uid: 91 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,4.5 - parent: 1 - - uid: 92 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,5.5 - parent: 1 - - uid: 93 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,6.5 - parent: 1 - - uid: 145 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-8.5 - parent: 1 - - uid: 146 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-8.5 - parent: 1 - - uid: 147 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-8.5 - parent: 1 - - uid: 149 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,-8.5 - parent: 1 - - uid: 150 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,-8.5 - parent: 1 - - uid: 151 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-8.5 - parent: 1 - - uid: 152 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-7.5 - parent: 1 - - uid: 153 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-7.5 - parent: 1 - - uid: 154 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,-7.5 - parent: 1 - - uid: 155 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,-7.5 - parent: 1 - - uid: 156 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,-6.5 - parent: 1 - - uid: 157 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,-5.5 - parent: 1 - - uid: 158 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,-4.5 - parent: 1 - - uid: 159 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,-3.5 - parent: 1 - - uid: 160 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,-2.5 - parent: 1 - - uid: 161 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,-1.5 - parent: 1 - - uid: 162 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -9.5,-1.5 - parent: 1 - - uid: 163 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -10.5,-1.5 - parent: 1 - - uid: 164 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -11.5,-1.5 - parent: 1 - - uid: 165 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -11.5,0.5 - parent: 1 - - uid: 170 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -8.5,0.5 - parent: 1 - - uid: 172 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -11.5,2.5 - parent: 1 - - uid: 173 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -10.5,2.5 - parent: 1 - - uid: 174 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -9.5,2.5 - parent: 1 - - uid: 175 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,-7.5 - parent: 1 - - uid: 176 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 8.5,-7.5 - parent: 1 - - uid: 177 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.5,0.5 - parent: 1 - - uid: 179 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 8.5,-1.5 - parent: 1 - - uid: 180 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 8.5,2.5 - parent: 1 - - uid: 181 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,4.5 - parent: 1 - - uid: 182 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 11.5,2.5 - parent: 1 - - uid: 183 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,2.5 - parent: 1 - - uid: 184 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,3.5 - parent: 1 - - uid: 186 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,-2.5 - parent: 1 - - uid: 187 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,-1.5 - parent: 1 - - uid: 188 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 12.5,0.5 - parent: 1 - - uid: 189 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 10.5,2.5 - parent: 1 - - uid: 190 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.5,-7.5 - parent: 1 - - uid: 191 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,-7.5 - parent: 1 - - uid: 192 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,-6.5 - parent: 1 - - uid: 193 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,-5.5 - parent: 1 - - uid: 194 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,-4.5 - parent: 1 - - uid: 195 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,-3.5 - parent: 1 - - uid: 196 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.5,-1.5 - parent: 1 - - uid: 197 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.5,2.5 - parent: 1 - - uid: 198 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,5.5 - parent: 1 - - uid: 199 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,6.5 - parent: 1 - - uid: 200 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,7.5 - parent: 1 - - uid: 201 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,8.5 - parent: 1 - - uid: 202 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 8.5,8.5 - parent: 1 - - uid: 212 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 12.5,2.5 - parent: 1 - - uid: 213 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 12.5,-1.5 - parent: 1 - - uid: 214 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 11.5,-1.5 - parent: 1 - - uid: 215 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 10.5,-1.5 - parent: 1 - - uid: 218 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,-9.5 - parent: 1 - - uid: 219 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,-10.5 - parent: 1 - - uid: 220 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-9.5 - parent: 1 - - uid: 221 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-10.5 - parent: 1 - - uid: 222 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-9.5 - parent: 1 - - uid: 223 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-10.5 - parent: 1 - - uid: 224 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,-10.5 - parent: 1 - - uid: 225 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,-9.5 - parent: 1 - - uid: 226 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,-10.5 - parent: 1 - - uid: 227 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,-10.5 - parent: 1 - - uid: 228 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-10.5 - parent: 1 - - uid: 229 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-10.5 - parent: 1 - - uid: 230 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-10.5 - parent: 1 - - uid: 231 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,-10.5 - parent: 1 - - uid: 239 - components: - - type: Transform - pos: -4.5,11.5 - parent: 1 - - uid: 240 - components: - - type: Transform - pos: -4.5,12.5 - parent: 1 - - uid: 241 - components: - - type: Transform - pos: -4.5,13.5 - parent: 1 - - uid: 242 - components: - - type: Transform - pos: 4.5,13.5 - parent: 1 - - uid: 243 - components: - - type: Transform - pos: -3.5,14.5 - parent: 1 - - uid: 244 - components: - - type: Transform - pos: -2.5,14.5 - parent: 1 - - uid: 250 - components: - - type: Transform - pos: 3.5,14.5 - parent: 1 - - uid: 251 - components: - - type: Transform - pos: 4.5,14.5 - parent: 1 - - uid: 252 - components: - - type: Transform - pos: -3.5,13.5 - parent: 1 - - uid: 253 - components: - - type: Transform - pos: 5.5,13.5 - parent: 1 - - uid: 254 - components: - - type: Transform - pos: 5.5,12.5 - parent: 1 - - uid: 255 - components: - - type: Transform - pos: 5.5,11.5 - parent: 1 - - uid: 277 - components: - - type: Transform - pos: -3.5,10.5 - parent: 1 - - uid: 278 - components: - - type: Transform - pos: -2.5,10.5 - parent: 1 - - uid: 279 - components: - - type: Transform - pos: -1.5,10.5 - parent: 1 - - uid: 280 - components: - - type: Transform - pos: -0.5,10.5 - parent: 1 - - uid: 281 - components: - - type: Transform - pos: 1.5,10.5 - parent: 1 - - uid: 282 - components: - - type: Transform - pos: 2.5,10.5 - parent: 1 - - uid: 283 - components: - - type: Transform - pos: 3.5,10.5 - parent: 1 - - uid: 284 - components: - - type: Transform - pos: 4.5,10.5 - parent: 1 -- proto: WardrobeBlueFilled - entities: - - uid: 207 - components: - - type: Transform - pos: 8.5,3.5 - parent: 1 - - uid: 208 - components: - - type: Transform - pos: 8.5,4.5 - parent: 1 - - uid: 209 - components: - - type: Transform - pos: 8.5,5.5 - parent: 1 - - uid: 210 - components: - - type: Transform - pos: 8.5,6.5 - parent: 1 - - uid: 211 - components: - - type: Transform - pos: 8.5,7.5 - parent: 1 -- proto: WardrobeYellowFilled - entities: - - uid: 185 - components: - - type: Transform - pos: 8.5,-2.5 - parent: 1 - - uid: 203 - components: - - type: Transform - pos: 8.5,-3.5 - parent: 1 - - uid: 204 - components: - - type: Transform - pos: 8.5,-4.5 - parent: 1 - - uid: 205 - components: - - type: Transform - pos: 8.5,-5.5 - parent: 1 - - uid: 206 - components: - - type: Transform - pos: 8.5,-6.5 - parent: 1 -- proto: Whistle - entities: - - uid: 320 - components: - - type: Transform - parent: 306 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: WindoorSecure - entities: - - uid: 127 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-0.5 - parent: 1 - - uid: 129 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,1.5 - parent: 1 -- proto: WindowReinforcedDirectional - entities: - - uid: 2 - components: - - type: Transform - pos: 0.5,-6.5 - parent: 1 - - uid: 3 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,7.5 - parent: 1 - - uid: 4 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,7.5 - parent: 1 - - uid: 5 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,7.5 - parent: 1 - - uid: 6 - components: - - type: Transform - pos: 1.5,-6.5 - parent: 1 - - uid: 7 - components: - - type: Transform - pos: -0.5,-6.5 - parent: 1 - - uid: 12 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,0.5 - parent: 1 - - uid: 13 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,0.5 - parent: 1 - - uid: 121 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,7.5 - parent: 1 - - uid: 122 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,6.5 - parent: 1 - - uid: 123 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,5.5 - parent: 1 - - uid: 124 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,4.5 - parent: 1 - - uid: 125 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,3.5 - parent: 1 - - uid: 126 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,2.5 - parent: 1 - - uid: 128 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,0.5 - parent: 1 - - uid: 130 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-1.5 - parent: 1 - - uid: 131 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-2.5 - parent: 1 - - uid: 132 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-3.5 - parent: 1 - - uid: 133 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-4.5 - parent: 1 - - uid: 134 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-5.5 - parent: 1 - - uid: 135 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-6.5 - parent: 1 - - uid: 297 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,-4.5 - parent: 1 - - uid: 298 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,5.5 - parent: 1 - - uid: 301 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,0.5 - parent: 1 -- proto: WoodenBench - entities: - - uid: 345 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,2.5 - parent: 1 - - uid: 346 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,3.5 - parent: 1 - - uid: 348 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,-1.5 - parent: 1 - - uid: 349 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,-2.5 - parent: 1 - - uid: 350 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,-3.5 - parent: 1 - - uid: 351 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,4.5 - parent: 1 -... diff --git a/Resources/Maps/Shuttles/ShuttleEvent/incorporation.yml b/Resources/Maps/Shuttles/ShuttleEvent/incorporation.yml deleted file mode 100644 index 63e2c7f6f31..00000000000 --- a/Resources/Maps/Shuttles/ShuttleEvent/incorporation.yml +++ /dev/null @@ -1,6165 +0,0 @@ -meta: - format: 7 - category: Grid - engineVersion: 266.0.0 - forkId: "" - forkVersion: "" - time: 08/18/2025 04:40:53 - entityCount: 876 -maps: [] -grids: -- 1 -orphans: -- 1 -nullspace: [] -tilemap: - 0: Space - 32: FloorDark - 1: FloorMetalDiamond - 82: FloorReinforced - 83: FloorReinforcedHardened - 96: FloorSteel - 107: FloorSteelMono - 111: FloorTechMaint - 112: FloorTechMaint2 - 113: FloorTechMaint3 - 115: FloorWhite - 119: FloorWhiteMini - 125: FloorWood - 127: FloorWoodTile - 128: Lattice - 129: Plating -entities: -- proto: "" - entities: - - uid: 1 - components: - - type: MetaData - name: NT-Incorporation - - type: Transform - pos: -0.5208333,-0.5104167 - parent: invalid - - type: MapGrid - chunks: - 0,0: - ind: 0,0 - tiles: gQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAIEAAAAAAAB9AAAAAAEAfQAAAAADAH0AAAAAAwCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAABgAAAAAAIAYAAAAAACAGAAAAAAAQCBAAAAAAAAfQAAAAABAH0AAAAAAAB9AAAAAAEAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAIAYAAAAAABAGAAAAAAAgBgAAAAAAAAgQAAAAAAAH0AAAAAAAB9AAAAAAEAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAABACAAAAAAAQAgAAAAAAMAIAAAAAADAG8AAAAAAAB9AAAAAAEAfQAAAAACAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAEAIAAAAAADACAAAAAAAwCBAAAAAAAAfwAAAAABAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAEAIAAAAAABACAAAAAAAAAgAAAAAAMAgQAAAAAAAH0AAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAQAgAAAAAAIAIAAAAAABAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAMAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - version: 7 - -1,0: - ind: -1,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAbwAAAAAAAGAAAAAAAgBgAAAAAAAAYAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAG8AAAAAAABgAAAAAAIAYAAAAAADAGAAAAAAAwBvAAAAAAAAYAAAAAACAGAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAACBAAAAAAAAYAAAAAACAGAAAAAAAwBgAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAHEAAAAAAABxAAAAAAMAgQAAAAAAAGAAAAAAAgBgAAAAAAAAIAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAcQAAAAAAAIEAAAAAAAAgAAAAAAAAIAAAAAABACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAHEAAAAAAQCBAAAAAAAAIAAAAAADACAAAAAAAgAgAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAgAgAAAAAAIAIAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAACAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - version: 7 - 0,-1: - ind: 0,-1 - tiles: awAAAAADAGAAAAAAAABgAAAAAAEAbwAAAAAAAGAAAAAAAwBgAAAAAAMAYAAAAAABAGAAAAAAAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGsAAAAAAQBgAAAAAAEAYAAAAAACAIEAAAAAAABgAAAAAAEAYAAAAAADAGAAAAAAAABgAAAAAAMAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABrAAAAAAMAcQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAFIAAAAAAABSAAAAAAAAUgAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAIEAAAAAAABSAAAAAAAAUgAAAAAAAFIAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIAAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAQBgAAAAAAAAgQAAAAAAAHMAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAIAYAAAAAADAHMAAAAAAQBzAAAAAAMAcwAAAAAAAHMAAAAAAgCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAABAGAAAAAAAgCBAAAAAAAAcwAAAAACAHcAAAAAAQB3AAAAAAMAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG8AAAAAAACBAAAAAAAAgQAAAAAAAHMAAAAAAQB3AAAAAAIAdwAAAAABAHMAAAAAAwCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTAAAAAAAAUwAAAAAAAIEAAAAAAABzAAAAAAAAcwAAAAADAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUwAAAAAAAFMAAAAAAACBAAAAAAAAcwAAAAABAIEAAAAAAACBAAAAAAAAfQAAAAADAH0AAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - version: 7 - -1,-1: - ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAYAAAAAAAAGAAAAAAAQBgAAAAAAIAYAAAAAADAG8AAAAAAABgAAAAAAAAYAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAGAAAAAAAwBgAAAAAAMAYAAAAAACAGAAAAAAAACBAAAAAAAAYAAAAAAAAGAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAABSAAAAAAAAUgAAAAAAAFIAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAABxAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAUgAAAAAAAFIAAAAAAABSAAAAAAAAgQAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACAAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAG8AAAAAAABvAAAAAAAAbwAAAAAAAGAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAG8AAAAAAABgAAAAAAIAYAAAAAACAGAAAAAAAgBgAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAG8AAAAAAABgAAAAAAEAYAAAAAACAGAAAAAAAABgAAAAAAIAYAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAABvAAAAAAAAYAAAAAACAGAAAAAAAgBvAAAAAAAAgQAAAAAAAG8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAbwAAAAAAAGAAAAAAAQBgAAAAAAEAgQAAAAAAAFMAAAAAAABTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvAAAAAAAAbwAAAAAAAGAAAAAAAwBgAAAAAAIAYAAAAAAAAIEAAAAAAABTAAAAAAAAUwAAAAAAAA== - version: 7 - -1,-2: - ind: -1,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAIEAAAAAAABwAAAAAAAAgQAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAYAAAAAABAGAAAAAAAABgAAAAAAEAYAAAAAACAIEAAAAAAACBAAAAAAAAgQAAAAAAAA== - version: 7 - 0,-2: - ind: 0,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAIEAAAAAAACBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAHAAAAAAAACBAAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAgQAAAAAAAAAAAAAAAACBAAAAAAAAgQAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAIEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAAIEAAAAAAACBAAAAAAAAgQAAAAAAAGAAAAAAAQBgAAAAAAAAYAAAAAAAAGAAAAAAAQCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== - version: 7 - - type: Broadphase - - type: Physics - bodyStatus: InAir - angularDamping: 0.05 - linearDamping: 0.05 - fixedRotation: False - bodyType: Dynamic - - type: Fixtures - fixtures: {} - - type: OccluderTree - - type: SpreaderGrid - - type: Shuttle - dampingModifier: 0.25 - - type: GridPathfinding - - type: Gravity - gravityShakeSound: !type:SoundPathSpecifier - path: /Audio/Effects/alert.ogg - - type: DecalGrid - chunkCollection: - version: 2 - nodes: - - node: - color: '#BE6BC3FF' - id: BrickCornerOverlayNE - decals: - 109: -4,-15 - 119: 7,-15 - - node: - color: '#BE6BC3FF' - id: BrickCornerOverlayNW - decals: - 112: -7,-15 - 120: 4,-15 - - node: - color: '#BE6BC3FF' - id: BrickCornerOverlaySE - decals: - 117: -4,-17 - 122: 7,-17 - - node: - color: '#BE6BC3FF' - id: BrickCornerOverlaySW - decals: - 113: -7,-17 - 121: 4,-17 - - node: - color: '#BE6BC3FF' - id: BrickLineOverlayE - decals: - 118: -4,-16 - 125: 7,-16 - - node: - color: '#BE6BC3FF' - id: BrickLineOverlayN - decals: - 110: -5,-15 - 111: -6,-15 - 123: 5,-15 - 124: 6,-15 - - node: - color: '#BE6BC3FF' - id: BrickLineOverlayS - decals: - 114: -6,-17 - 115: -5,-17 - 127: 5,-17 - 128: 6,-17 - - node: - color: '#BE6BC3FF' - id: BrickLineOverlayW - decals: - 116: -7,-16 - 126: 4,-16 - - node: - color: '#FFFFFFFF' - id: BrickTileSteelCornerSe - decals: - 20: 3,-5 - - node: - color: '#FFFFFFFF' - id: BrickTileSteelInnerNw - decals: - 21: 3,-5 - 55: 2,3 - - node: - color: '#FFFFFFFF' - id: BrickTileSteelLineE - decals: - 12: 3,-4 - 13: 3,-3 - 14: 3,-2 - 15: 3,-1 - - node: - color: '#FFFFFFFF' - id: BrickTileSteelLineN - decals: - 28: 2,-5 - 52: -1,2 - 153: 1,2 - - node: - color: '#FFFFFFFF' - id: BrickTileSteelLineS - decals: - 29: 2,-5 - 53: -1,4 - 54: 1,4 - - node: - color: '#FFFFFFFF' - id: BrickTileSteelLineW - decals: - 16: 3,-1 - 17: 3,-2 - 18: 3,-3 - 19: 3,-4 - - node: - color: '#334E6DC8' - id: BrickTileWhiteCornerSw - decals: - 60: -2,1 - - node: - color: '#334E6DC8' - id: BrickTileWhiteInnerSw - decals: - 61: -2,2 - - node: - color: '#EFB34196' - id: BrickTileWhiteLineE - decals: - 74: 0,-16 - 75: 0,-15 - 76: 0,-14 - - node: - color: '#334E6DC8' - id: BrickTileWhiteLineS - decals: - 56: 3,1 - 57: 2,1 - 58: 0,1 - 59: -1,1 - 163: 1,1 - - node: - color: '#EFB34196' - id: BrickTileWhiteLineW - decals: - 71: 0,-16 - 72: 0,-15 - 73: 0,-14 - - node: - color: '#52B4E996' - id: CheckerNESW - decals: - 7: 3,-5 - 8: 3,-4 - 9: 3,-3 - 10: 3,-2 - 11: 3,-1 - 24: 2,-5 - - node: - color: '#EFB34196' - id: CheckerNESW - decals: - 63: -2,-15 - 64: -1,-15 - 67: -2,-16 - 68: -1,-16 - - node: - color: '#EFB34196' - id: CheckerNWSE - decals: - 65: 1,-15 - 66: 2,-15 - 69: 1,-16 - 70: 2,-16 - - node: - color: '#334E6DC8' - id: FullTileOverlayGreyscale - decals: - 142: -3,4 - 143: -3,5 - 144: -3,6 - 145: -2,6 - 146: -1,7 - 147: 0,7 - 148: 1,7 - 149: 2,6 - 150: 3,6 - 151: 3,5 - 152: 3,4 - 156: 0,6 - 157: 0,3 - - node: - color: '#52B4E996' - id: FullTileOverlayGreyscale - decals: - 0: 5,-5 - 1: 4,-5 - 2: 4,-2 - 22: 3,-6 - 23: 6,-3 - - node: - color: '#96DAFFFF' - id: FullTileOverlayGreyscale - decals: - 85: -4,-17 - 86: -5,-17 - 87: -6,-17 - 88: -7,-17 - 89: -7,-16 - 90: -7,-15 - 91: -6,-15 - 92: -5,-15 - 93: -4,-15 - 94: -4,-16 - 95: -5,-16 - 96: -6,-16 - 97: 4,-17 - 98: 5,-17 - 99: 6,-17 - 100: 7,-17 - 101: 7,-16 - 102: 6,-16 - 103: 5,-16 - 104: 4,-16 - 105: 4,-15 - 106: 5,-15 - 107: 6,-15 - 108: 7,-15 - - node: - color: '#334E6DC8' - id: HalfTileOverlayGreyscale - decals: - 47: -3,3 - 48: 0,2 - 49: 2,2 - 50: 3,2 - - node: - color: '#DE3A3A96' - id: HalfTileOverlayGreyscale - decals: - 30: -1,-4 - 31: 0,-4 - - node: - color: '#334E6DC8' - id: HalfTileOverlayGreyscale180 - decals: - 158: 0,4 - - node: - color: '#43990996' - id: HalfTileOverlayGreyscale270 - decals: - 46: -6,0 - - node: - color: '#334E6DC8' - id: HalfTileOverlayGreyscale90 - decals: - 34: -4,1 - - node: - color: '#52B4E996' - id: HalfTileOverlayGreyscale90 - decals: - 25: 1,-5 - - node: - color: '#52B4E996' - id: MiniTileCornerOverlayNE - decals: - 4: 5,-3 - - node: - color: '#52B4E996' - id: MiniTileCornerOverlayNW - decals: - 3: 4,-3 - - node: - color: '#52B4E996' - id: MiniTileCornerOverlaySE - decals: - 5: 5,-4 - - node: - color: '#52B4E996' - id: MiniTileCornerOverlaySW - decals: - 6: 4,-4 - - node: - color: '#FFFFFFFF' - id: MiniTileSteelInnerNe - decals: - 160: 0,3 - - node: - color: '#FFFFFFFF' - id: MiniTileSteelInnerNw - decals: - 162: 0,3 - - node: - color: '#FFFFFFFF' - id: MiniTileSteelInnerSe - decals: - 154: -2,4 - 159: 0,4 - - node: - color: '#FFFFFFFF' - id: MiniTileSteelInnerSw - decals: - 155: 2,4 - 161: 0,4 - - node: - color: '#334E6DC8' - id: QuarterTileOverlayGreyscale - decals: - 43: -2,-4 - 79: -1,-6 - 81: -5,-3 - 82: -5,-2 - - node: - color: '#DE3A3A96' - id: QuarterTileOverlayGreyscale - decals: - 32: 1,-4 - - node: - color: '#334E6DC8' - id: QuarterTileOverlayGreyscale180 - decals: - 37: 1,-6 - 77: -3,-5 - 78: -2,-5 - - node: - color: '#52B4E996' - id: QuarterTileOverlayGreyscale180 - decals: - 27: 1,-4 - - node: - color: '#334E6DC8' - id: QuarterTileOverlayGreyscale270 - decals: - 38: -3,-3 - 80: -1,-6 - - node: - color: '#334E6DC8' - id: QuarterTileOverlayGreyscale90 - decals: - 35: -4,0 - 36: 1,-4 - 39: -4,-1 - 40: -4,-2 - 41: -4,-3 - 42: -3,-4 - 62: -2,2 - - node: - color: '#52B4E996' - id: QuarterTileOverlayGreyscale90 - decals: - 26: 1,-6 - - node: - color: '#DE3A3A96' - id: QuarterTileOverlayGreyscale90 - decals: - 33: -2,-4 - - node: - color: '#43990996' - id: ThreeQuarterTileOverlayGreyscale - decals: - 44: -6,1 - - node: - color: '#334E6DC8' - id: ThreeQuarterTileOverlayGreyscale270 - decals: - 83: -5,-4 - 84: -4,-5 - - node: - color: '#43990996' - id: ThreeQuarterTileOverlayGreyscale270 - decals: - 45: -6,-1 - - node: - color: '#334E6DC8' - id: ThreeQuarterTileOverlayGreyscale90 - decals: - 51: -2,3 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinBox - decals: - 132: 5,5 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinCornerNe - decals: - 129: 6,3 - 130: 7,1 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinCornerNw - decals: - 131: 5,3 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinCornerSe - decals: - 135: 7,-1 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinCornerSw - decals: - 133: 5,0 - 134: 6,-1 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinInnerNe - decals: - 141: 6,1 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinInnerSw - decals: - 138: 6,0 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinLineE - decals: - 139: 6,2 - 140: 7,0 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinLineW - decals: - 136: 5,1 - 137: 5,2 - - type: GridAtmosphere - version: 2 - data: - tiles: - 0,0: - 0: 65528 - 0,-1: - 0: 48027 - -1,0: - 0: 61169 - 0,1: - 0: 16383 - -1,1: - 0: 36590 - 1,0: - 0: 30446 - 1,1: - 0: 32 - 1,-1: - 0: 49523 - -2,0: - 0: 51420 - -2,-1: - 0: 56524 - -2,1: - 0: 136 - -1,-1: - 0: 56767 - 0,-4: - 0: 4991 - -1,-4: - 0: 2271 - 0,-3: - 0: 4369 - 0,-2: - 0: 64305 - -1,-2: - 0: 65408 - 1,-4: - 0: 61183 - 1,-2: - 0: 12288 - 1,-5: - 0: 65252 - 1,-3: - 1: 3604 - 2,-3: - 1: 16 - -2,-4: - 0: 61166 - -2,-3: - 1: 3604 - -2,-5: - 0: 61156 - -2,-2: - 0: 32768 - -1,-3: - 1: 16 - -1,-5: - 0: 4096 - -2,-6: - 1: 7680 - -1,-6: - 1: 4096 - 0,-5: - 0: 256 - 1,-6: - 1: 7680 - 2,-6: - 1: 4096 - uniqueMixes: - - volume: 2500 - temperature: 293.15 - moles: - - 21.824879 - - 82.10312 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - immutable: True - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - chunkSize: 4 - - type: GasTileOverlay - - type: RadiationGridResistance - - type: ImplicitRoof -- proto: AirAlarm - entities: - - uid: 855 - components: - - type: Transform - pos: -1.5,-13.5 - parent: 1 - - type: DeviceList - devices: - - 854 - - 703 - - 704 - - type: Fixtures - fixtures: {} - - uid: 856 - components: - - type: Transform - pos: -3.5,2.5 - parent: 1 - - type: DeviceList - devices: - - 851 - - 617 - - 619 - - 616 - - 618 - - type: Fixtures - fixtures: {} - - uid: 857 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,1.5 - parent: 1 - - type: DeviceList - devices: - - 852 - - 805 - - 658 - - 811 - - 659 - - 660 - - type: Fixtures - fixtures: {} - - uid: 858 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-0.5 - parent: 1 - - type: DeviceList - devices: - - 853 - - 611 - - 626 - - type: Fixtures - fixtures: {} -- proto: AirCanister - entities: - - uid: 770 - components: - - type: Transform - anchored: True - pos: -4.5,-16.5 - parent: 1 - - type: Physics - bodyType: Static - - uid: 771 - components: - - type: Transform - anchored: True - pos: 5.5,-16.5 - parent: 1 - - type: Physics - bodyType: Static - - uid: 775 - components: - - type: Transform - pos: -6.5,-17.5 - parent: 1 - - uid: 797 - components: - - type: Transform - pos: 7.5,-17.5 - parent: 1 -- proto: Airlock - entities: - - uid: 189 - components: - - type: Transform - pos: -2.5,1.5 - parent: 1 - - uid: 201 - components: - - type: Transform - pos: 4.5,3.5 - parent: 1 - - uid: 205 - components: - - type: Transform - pos: 3.5,0.5 - parent: 1 - - uid: 258 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-2.5 - parent: 1 - - uid: 259 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,-2.5 - parent: 1 - - uid: 401 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-15.5 - parent: 1 - - uid: 407 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-15.5 - parent: 1 - - uid: 437 - components: - - type: Transform - pos: -4.5,2.5 - parent: 1 -- proto: AirlockExternalGlassShuttleLocked - entities: - - uid: 242 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -7.5,-0.5 - parent: 1 - - uid: 243 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -7.5,1.5 - parent: 1 - - uid: 260 - components: - - type: Transform - pos: 0.5,-17.5 - parent: 1 -- proto: AirlockGlass - entities: - - uid: 262 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-12.5 - parent: 1 - - uid: 263 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-7.5 - parent: 1 - - uid: 436 - components: - - type: Transform - pos: 2.5,-4.5 - parent: 1 -- proto: AirSensor - entities: - - uid: 851 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-4.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 856 - - uid: 852 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,3.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 857 - - uid: 853 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-1.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 858 - - uid: 854 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-14.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 855 -- proto: APCBasic - entities: - - uid: 338 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-16.5 - parent: 1 - - type: Fixtures - fixtures: {} - - uid: 456 - components: - - type: Transform - pos: -1.5,-2.5 - parent: 1 - - type: Fixtures - fixtures: {} -- proto: AtmosDeviceFanDirectional - entities: - - uid: 733 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -7.5,1.5 - parent: 1 - - uid: 735 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -7.5,-0.5 - parent: 1 - - uid: 742 - components: - - type: Transform - pos: 0.5,-17.5 - parent: 1 -- proto: Bed - entities: - - uid: 409 - components: - - type: Transform - pos: 6.5,-0.5 - parent: 1 -- proto: BedsheetCaptain - entities: - - uid: 413 - components: - - type: Transform - pos: 6.5,-0.5 - parent: 1 -- proto: BedsheetMedical - entities: - - uid: 229 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,-4.5 - parent: 1 - - uid: 427 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,-4.5 - parent: 1 -- proto: BlastDoor - entities: - - uid: 261 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-16.5 - parent: 1 - - uid: 289 - components: - - type: Transform - pos: -5.5,-11.5 - parent: 1 - - uid: 307 - components: - - type: Transform - pos: 6.5,-11.5 - parent: 1 - - uid: 438 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,-0.5 - parent: 1 - - uid: 443 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,0.5 - parent: 1 - - uid: 571 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,1.5 - parent: 1 -- proto: BorgCharger - entities: - - uid: 793 - components: - - type: Transform - pos: -4.5,-4.5 - parent: 1 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14673 - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - open: True - removedMasks: 20 - - type: Fixtures - fixtures: - fix1: - shape: !type:PolygonShape - radius: 0.01 - vertices: - - -0.45,-0.45 - - 0.45,-0.45 - - 0.45,0.45 - - -0.45,0.45 - mask: - - Impassable - - TableLayer - - LowImpassable - layer: - - BulletImpassable - - Opaque - density: 190 - hard: True - restitution: 0 - friction: 0.4 -- proto: BoxBeaker - entities: - - uid: 679 - components: - - type: Transform - pos: 4.48522,-2.3811686 - parent: 1 -- proto: ButtonFrameCaution - entities: - - uid: 287 - components: - - type: Transform - pos: 4.5,-13.5 - parent: 1 - - uid: 309 - components: - - type: Transform - pos: -3.5,-13.5 - parent: 1 -- proto: ButtonFrameExit - entities: - - uid: 297 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-16.5 - parent: 1 - - uid: 796 - components: - - type: Transform - pos: -5.5,2.5 - parent: 1 -- proto: ButtonFrameGrey - entities: - - uid: 561 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,5.5 - parent: 1 -- proto: CableApcExtension - entities: - - uid: 171 - components: - - type: Transform - pos: 0.5,-13.5 - parent: 1 - - uid: 276 - components: - - type: Transform - pos: -5.5,-10.5 - parent: 1 - - uid: 294 - components: - - type: Transform - pos: -3.5,-13.5 - parent: 1 - - uid: 295 - components: - - type: Transform - pos: -3.5,-12.5 - parent: 1 - - uid: 305 - components: - - type: Transform - pos: -3.5,-11.5 - parent: 1 - - uid: 306 - components: - - type: Transform - pos: -4.5,-10.5 - parent: 1 - - uid: 339 - components: - - type: Transform - pos: -0.5,-16.5 - parent: 1 - - uid: 340 - components: - - type: Transform - pos: -0.5,-15.5 - parent: 1 - - uid: 341 - components: - - type: Transform - pos: -0.5,-14.5 - parent: 1 - - uid: 342 - components: - - type: Transform - pos: -1.5,-14.5 - parent: 1 - - uid: 343 - components: - - type: Transform - pos: -2.5,-14.5 - parent: 1 - - uid: 344 - components: - - type: Transform - pos: -3.5,-14.5 - parent: 1 - - uid: 345 - components: - - type: Transform - pos: -4.5,-14.5 - parent: 1 - - uid: 346 - components: - - type: Transform - pos: -5.5,-14.5 - parent: 1 - - uid: 347 - components: - - type: Transform - pos: -5.5,-13.5 - parent: 1 - - uid: 348 - components: - - type: Transform - pos: -5.5,-15.5 - parent: 1 - - uid: 349 - components: - - type: Transform - pos: -5.5,-16.5 - parent: 1 - - uid: 350 - components: - - type: Transform - pos: -5.5,-17.5 - parent: 1 - - uid: 351 - components: - - type: Transform - pos: -5.5,-18.5 - parent: 1 - - uid: 352 - components: - - type: Transform - pos: -5.5,-12.5 - parent: 1 - - uid: 353 - components: - - type: Transform - pos: 0.5,-14.5 - parent: 1 - - uid: 354 - components: - - type: Transform - pos: 1.5,-14.5 - parent: 1 - - uid: 355 - components: - - type: Transform - pos: 2.5,-14.5 - parent: 1 - - uid: 356 - components: - - type: Transform - pos: 3.5,-14.5 - parent: 1 - - uid: 357 - components: - - type: Transform - pos: 4.5,-14.5 - parent: 1 - - uid: 358 - components: - - type: Transform - pos: 5.5,-14.5 - parent: 1 - - uid: 359 - components: - - type: Transform - pos: 6.5,-14.5 - parent: 1 - - uid: 360 - components: - - type: Transform - pos: 6.5,-13.5 - parent: 1 - - uid: 361 - components: - - type: Transform - pos: 6.5,-12.5 - parent: 1 - - uid: 362 - components: - - type: Transform - pos: 6.5,-15.5 - parent: 1 - - uid: 363 - components: - - type: Transform - pos: 6.5,-16.5 - parent: 1 - - uid: 364 - components: - - type: Transform - pos: 6.5,-17.5 - parent: 1 - - uid: 365 - components: - - type: Transform - pos: 6.5,-18.5 - parent: 1 - - uid: 457 - components: - - type: Transform - pos: -1.5,-2.5 - parent: 1 - - uid: 458 - components: - - type: Transform - pos: -1.5,-3.5 - parent: 1 - - uid: 459 - components: - - type: Transform - pos: -0.5,-3.5 - parent: 1 - - uid: 460 - components: - - type: Transform - pos: 0.5,-3.5 - parent: 1 - - uid: 461 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 - - uid: 462 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 - - uid: 463 - components: - - type: Transform - pos: -2.5,-3.5 - parent: 1 - - uid: 464 - components: - - type: Transform - pos: -3.5,-3.5 - parent: 1 - - uid: 465 - components: - - type: Transform - pos: -4.5,-3.5 - parent: 1 - - uid: 466 - components: - - type: Transform - pos: -4.5,-2.5 - parent: 1 - - uid: 467 - components: - - type: Transform - pos: -4.5,-1.5 - parent: 1 - - uid: 468 - components: - - type: Transform - pos: -4.5,-0.5 - parent: 1 - - uid: 469 - components: - - type: Transform - pos: -4.5,0.5 - parent: 1 - - uid: 470 - components: - - type: Transform - pos: -4.5,1.5 - parent: 1 - - uid: 471 - components: - - type: Transform - pos: -4.5,2.5 - parent: 1 - - uid: 472 - components: - - type: Transform - pos: -4.5,3.5 - parent: 1 - - uid: 473 - components: - - type: Transform - pos: -4.5,4.5 - parent: 1 - - uid: 474 - components: - - type: Transform - pos: -5.5,0.5 - parent: 1 - - uid: 475 - components: - - type: Transform - pos: -6.5,0.5 - parent: 1 - - uid: 476 - components: - - type: Transform - pos: 0.5,-4.5 - parent: 1 - - uid: 477 - components: - - type: Transform - pos: 0.5,-5.5 - parent: 1 - - uid: 478 - components: - - type: Transform - pos: 0.5,-6.5 - parent: 1 - - uid: 479 - components: - - type: Transform - pos: 5.5,-3.5 - parent: 1 - - uid: 480 - components: - - type: Transform - pos: 1.5,-3.5 - parent: 1 - - uid: 481 - components: - - type: Transform - pos: 2.5,-3.5 - parent: 1 - - uid: 482 - components: - - type: Transform - pos: 3.5,-3.5 - parent: 1 - - uid: 483 - components: - - type: Transform - pos: 4.5,-3.5 - parent: 1 - - uid: 484 - components: - - type: Transform - pos: 3.5,-2.5 - parent: 1 - - uid: 485 - components: - - type: Transform - pos: 3.5,-1.5 - parent: 1 - - uid: 486 - components: - - type: Transform - pos: 3.5,-0.5 - parent: 1 - - uid: 488 - components: - - type: Transform - pos: 3.5,0.5 - parent: 1 - - uid: 489 - components: - - type: Transform - pos: 3.5,1.5 - parent: 1 - - uid: 490 - components: - - type: Transform - pos: 3.5,2.5 - parent: 1 - - uid: 491 - components: - - type: Transform - pos: 2.5,2.5 - parent: 1 - - uid: 492 - components: - - type: Transform - pos: 1.5,2.5 - parent: 1 - - uid: 493 - components: - - type: Transform - pos: 0.5,2.5 - parent: 1 - - uid: 494 - components: - - type: Transform - pos: -0.5,2.5 - parent: 1 - - uid: 495 - components: - - type: Transform - pos: -1.5,2.5 - parent: 1 - - uid: 496 - components: - - type: Transform - pos: -1.5,1.5 - parent: 1 - - uid: 497 - components: - - type: Transform - pos: -2.5,1.5 - parent: 1 - - uid: 498 - components: - - type: Transform - pos: -3.5,1.5 - parent: 1 - - uid: 499 - components: - - type: Transform - pos: -0.5,3.5 - parent: 1 - - uid: 500 - components: - - type: Transform - pos: -0.5,4.5 - parent: 1 - - uid: 501 - components: - - type: Transform - pos: -0.5,5.5 - parent: 1 - - uid: 502 - components: - - type: Transform - pos: -0.5,6.5 - parent: 1 - - uid: 503 - components: - - type: Transform - pos: 1.5,3.5 - parent: 1 - - uid: 504 - components: - - type: Transform - pos: 1.5,4.5 - parent: 1 - - uid: 505 - components: - - type: Transform - pos: 1.5,5.5 - parent: 1 - - uid: 506 - components: - - type: Transform - pos: 1.5,6.5 - parent: 1 - - uid: 507 - components: - - type: Transform - pos: 3.5,3.5 - parent: 1 - - uid: 508 - components: - - type: Transform - pos: 4.5,3.5 - parent: 1 - - uid: 509 - components: - - type: Transform - pos: 5.5,3.5 - parent: 1 - - uid: 510 - components: - - type: Transform - pos: 6.5,3.5 - parent: 1 - - uid: 511 - components: - - type: Transform - pos: 6.5,2.5 - parent: 1 - - uid: 512 - components: - - type: Transform - pos: 6.5,1.5 - parent: 1 - - uid: 513 - components: - - type: Transform - pos: 6.5,0.5 - parent: 1 - - uid: 514 - components: - - type: Transform - pos: 6.5,-0.5 - parent: 1 - - uid: 515 - components: - - type: Transform - pos: 5.5,4.5 - parent: 1 - - uid: 739 - components: - - type: Transform - pos: -4.5,-11.5 - parent: 1 - - uid: 822 - components: - - type: Transform - pos: -6.5,-10.5 - parent: 1 - - uid: 823 - components: - - type: Transform - pos: -6.5,-11.5 - parent: 1 - - uid: 824 - components: - - type: Transform - pos: -7.5,-11.5 - parent: 1 - - uid: 825 - components: - - type: Transform - pos: -7.5,-12.5 - parent: 1 - - uid: 826 - components: - - type: Transform - pos: -7.5,-13.5 - parent: 1 - - uid: 827 - components: - - type: Transform - pos: -7.5,-14.5 - parent: 1 - - uid: 828 - components: - - type: Transform - pos: -6.5,-14.5 - parent: 1 - - uid: 829 - components: - - type: Transform - pos: 4.5,-13.5 - parent: 1 - - uid: 830 - components: - - type: Transform - pos: 4.5,-12.5 - parent: 1 - - uid: 831 - components: - - type: Transform - pos: 4.5,-11.5 - parent: 1 - - uid: 832 - components: - - type: Transform - pos: 5.5,-11.5 - parent: 1 - - uid: 833 - components: - - type: Transform - pos: 5.5,-10.5 - parent: 1 - - uid: 834 - components: - - type: Transform - pos: 6.5,-10.5 - parent: 1 - - uid: 835 - components: - - type: Transform - pos: 7.5,-10.5 - parent: 1 - - uid: 836 - components: - - type: Transform - pos: 7.5,-11.5 - parent: 1 - - uid: 837 - components: - - type: Transform - pos: 8.5,-11.5 - parent: 1 - - uid: 838 - components: - - type: Transform - pos: 8.5,-12.5 - parent: 1 - - uid: 839 - components: - - type: Transform - pos: 8.5,-13.5 - parent: 1 - - uid: 840 - components: - - type: Transform - pos: 8.5,-14.5 - parent: 1 - - uid: 841 - components: - - type: Transform - pos: 7.5,-14.5 - parent: 1 - - uid: 842 - components: - - type: Transform - pos: 6.5,-19.5 - parent: 1 - - uid: 843 - components: - - type: Transform - pos: -5.5,-19.5 - parent: 1 - - uid: 847 - components: - - type: Transform - pos: 5.5,-18.5 - parent: 1 - - uid: 848 - components: - - type: Transform - pos: 5.5,-19.5 - parent: 1 - - uid: 849 - components: - - type: Transform - pos: -4.5,-18.5 - parent: 1 - - uid: 850 - components: - - type: Transform - pos: -4.5,-19.5 - parent: 1 -- proto: CableHV - entities: - - uid: 281 - components: - - type: Transform - pos: -5.5,-19.5 - parent: 1 - - uid: 282 - components: - - type: Transform - pos: -5.5,-18.5 - parent: 1 - - uid: 290 - components: - - type: Transform - pos: 6.5,-19.5 - parent: 1 - - uid: 291 - components: - - type: Transform - pos: 6.5,-18.5 - parent: 1 - - uid: 299 - components: - - type: Transform - pos: 5.5,-18.5 - parent: 1 - - uid: 300 - components: - - type: Transform - pos: -4.5,-18.5 - parent: 1 - - uid: 303 - components: - - type: Transform - pos: -6.5,-18.5 - parent: 1 - - uid: 304 - components: - - type: Transform - pos: 7.5,-18.5 - parent: 1 -- proto: CableMV - entities: - - uid: 292 - components: - - type: Transform - pos: -4.5,-18.5 - parent: 1 - - uid: 293 - components: - - type: Transform - pos: 5.5,-18.5 - parent: 1 - - uid: 310 - components: - - type: Transform - pos: -5.5,-14.5 - parent: 1 - - uid: 311 - components: - - type: Transform - pos: -4.5,-14.5 - parent: 1 - - uid: 312 - components: - - type: Transform - pos: -3.5,-14.5 - parent: 1 - - uid: 313 - components: - - type: Transform - pos: -2.5,-14.5 - parent: 1 - - uid: 314 - components: - - type: Transform - pos: -1.5,-14.5 - parent: 1 - - uid: 315 - components: - - type: Transform - pos: -0.5,-14.5 - parent: 1 - - uid: 316 - components: - - type: Transform - pos: 0.5,-14.5 - parent: 1 - - uid: 317 - components: - - type: Transform - pos: 1.5,-14.5 - parent: 1 - - uid: 318 - components: - - type: Transform - pos: 2.5,-14.5 - parent: 1 - - uid: 319 - components: - - type: Transform - pos: 3.5,-14.5 - parent: 1 - - uid: 320 - components: - - type: Transform - pos: 4.5,-14.5 - parent: 1 - - uid: 321 - components: - - type: Transform - pos: 5.5,-14.5 - parent: 1 - - uid: 322 - components: - - type: Transform - pos: 6.5,-14.5 - parent: 1 - - uid: 326 - components: - - type: Transform - pos: 0.5,-13.5 - parent: 1 - - uid: 327 - components: - - type: Transform - pos: 0.5,-12.5 - parent: 1 - - uid: 328 - components: - - type: Transform - pos: 0.5,-11.5 - parent: 1 - - uid: 329 - components: - - type: Transform - pos: 0.5,-10.5 - parent: 1 - - uid: 330 - components: - - type: Transform - pos: 0.5,-9.5 - parent: 1 - - uid: 331 - components: - - type: Transform - pos: 0.5,-8.5 - parent: 1 - - uid: 332 - components: - - type: Transform - pos: 0.5,-7.5 - parent: 1 - - uid: 333 - components: - - type: Transform - pos: 0.5,-6.5 - parent: 1 - - uid: 334 - components: - - type: Transform - pos: 0.5,-5.5 - parent: 1 - - uid: 335 - components: - - type: Transform - pos: 0.5,-4.5 - parent: 1 - - uid: 336 - components: - - type: Transform - pos: -0.5,-15.5 - parent: 1 - - uid: 337 - components: - - type: Transform - pos: -0.5,-16.5 - parent: 1 - - uid: 366 - components: - - type: Transform - pos: 7.5,-14.5 - parent: 1 - - uid: 367 - components: - - type: Transform - pos: 8.5,-12.5 - parent: 1 - - uid: 368 - components: - - type: Transform - pos: 8.5,-13.5 - parent: 1 - - uid: 369 - components: - - type: Transform - pos: 8.5,-14.5 - parent: 1 - - uid: 370 - components: - - type: Transform - pos: 8.5,-15.5 - parent: 1 - - uid: 371 - components: - - type: Transform - pos: 8.5,-16.5 - parent: 1 - - uid: 372 - components: - - type: Transform - pos: 8.5,-17.5 - parent: 1 - - uid: 373 - components: - - type: Transform - pos: 8.5,-18.5 - parent: 1 - - uid: 374 - components: - - type: Transform - pos: -6.5,-14.5 - parent: 1 - - uid: 375 - components: - - type: Transform - pos: -7.5,-12.5 - parent: 1 - - uid: 376 - components: - - type: Transform - pos: -7.5,-13.5 - parent: 1 - - uid: 377 - components: - - type: Transform - pos: -7.5,-14.5 - parent: 1 - - uid: 378 - components: - - type: Transform - pos: -7.5,-15.5 - parent: 1 - - uid: 379 - components: - - type: Transform - pos: -7.5,-16.5 - parent: 1 - - uid: 380 - components: - - type: Transform - pos: -7.5,-17.5 - parent: 1 - - uid: 381 - components: - - type: Transform - pos: -7.5,-18.5 - parent: 1 - - uid: 382 - components: - - type: Transform - pos: -1.5,-16.5 - parent: 1 - - uid: 383 - components: - - type: Transform - pos: 2.5,-15.5 - parent: 1 - - uid: 384 - components: - - type: Transform - pos: 2.5,-16.5 - parent: 1 - - uid: 385 - components: - - type: Transform - pos: -0.5,-11.5 - parent: 1 - - uid: 386 - components: - - type: Transform - pos: -0.5,-10.5 - parent: 1 - - uid: 387 - components: - - type: Transform - pos: -0.5,-9.5 - parent: 1 - - uid: 388 - components: - - type: Transform - pos: -0.5,-8.5 - parent: 1 - - uid: 389 - components: - - type: Transform - pos: 1.5,-8.5 - parent: 1 - - uid: 390 - components: - - type: Transform - pos: 1.5,-9.5 - parent: 1 - - uid: 391 - components: - - type: Transform - pos: 1.5,-10.5 - parent: 1 - - uid: 392 - components: - - type: Transform - pos: 1.5,-11.5 - parent: 1 - - uid: 452 - components: - - type: Transform - pos: 0.5,-3.5 - parent: 1 - - uid: 453 - components: - - type: Transform - pos: -0.5,-3.5 - parent: 1 - - uid: 454 - components: - - type: Transform - pos: -1.5,-3.5 - parent: 1 - - uid: 455 - components: - - type: Transform - pos: -1.5,-2.5 - parent: 1 - - uid: 516 - components: - - type: Transform - pos: 2.5,-4.5 - parent: 1 - - uid: 517 - components: - - type: Transform - pos: 3.5,-4.5 - parent: 1 - - uid: 518 - components: - - type: Transform - pos: 3.5,-3.5 - parent: 1 - - uid: 519 - components: - - type: Transform - pos: 3.5,-2.5 - parent: 1 - - uid: 520 - components: - - type: Transform - pos: 3.5,-1.5 - parent: 1 - - uid: 521 - components: - - type: Transform - pos: 3.5,-0.5 - parent: 1 - - uid: 522 - components: - - type: Transform - pos: 1.5,-4.5 - parent: 1 - - uid: 523 - components: - - type: Transform - pos: 4.5,-4.5 - parent: 1 - - uid: 524 - components: - - type: Transform - pos: 4.5,-5.5 - parent: 1 - - uid: 525 - components: - - type: Transform - pos: 5.5,-5.5 - parent: 1 - - uid: 526 - components: - - type: Transform - pos: 6.5,-5.5 - parent: 1 - - uid: 527 - components: - - type: Transform - pos: 6.5,-4.5 - parent: 1 - - uid: 528 - components: - - type: Transform - pos: 6.5,-3.5 - parent: 1 - - uid: 529 - components: - - type: Transform - pos: 3.5,0.5 - parent: 1 - - uid: 530 - components: - - type: Transform - pos: 3.5,1.5 - parent: 1 - - uid: 531 - components: - - type: Transform - pos: 3.5,2.5 - parent: 1 - - uid: 532 - components: - - type: Transform - pos: 3.5,3.5 - parent: 1 - - uid: 533 - components: - - type: Transform - pos: 4.5,3.5 - parent: 1 - - uid: 534 - components: - - type: Transform - pos: 5.5,3.5 - parent: 1 - - uid: 535 - components: - - type: Transform - pos: 5.5,4.5 - parent: 1 - - uid: 536 - components: - - type: Transform - pos: 5.5,5.5 - parent: 1 - - uid: 537 - components: - - type: Transform - pos: 6.5,5.5 - parent: 1 - - uid: 538 - components: - - type: Transform - pos: 6.5,3.5 - parent: 1 - - uid: 539 - components: - - type: Transform - pos: 6.5,2.5 - parent: 1 - - uid: 540 - components: - - type: Transform - pos: 6.5,1.5 - parent: 1 - - uid: 541 - components: - - type: Transform - pos: 7.5,1.5 - parent: 1 - - uid: 542 - components: - - type: Transform - pos: 8.5,1.5 - parent: 1 - - uid: 543 - components: - - type: Transform - pos: 8.5,0.5 - parent: 1 - - uid: 544 - components: - - type: Transform - pos: 8.5,-0.5 - parent: 1 - - uid: 545 - components: - - type: Transform - pos: 2.5,3.5 - parent: 1 - - uid: 546 - components: - - type: Transform - pos: 2.5,4.5 - parent: 1 - - uid: 547 - components: - - type: Transform - pos: 2.5,5.5 - parent: 1 - - uid: 548 - components: - - type: Transform - pos: 2.5,6.5 - parent: 1 - - uid: 549 - components: - - type: Transform - pos: 2.5,7.5 - parent: 1 - - uid: 550 - components: - - type: Transform - pos: 2.5,8.5 - parent: 1 - - uid: 551 - components: - - type: Transform - pos: 1.5,8.5 - parent: 1 - - uid: 552 - components: - - type: Transform - pos: 0.5,8.5 - parent: 1 - - uid: 553 - components: - - type: Transform - pos: -0.5,8.5 - parent: 1 - - uid: 554 - components: - - type: Transform - pos: -1.5,8.5 - parent: 1 - - uid: 555 - components: - - type: Transform - pos: -1.5,7.5 - parent: 1 - - uid: 685 - components: - - type: Transform - pos: -5.5,-18.5 - parent: 1 - - uid: 814 - components: - - type: Transform - pos: -5.5,-16.5 - parent: 1 - - uid: 815 - components: - - type: Transform - pos: -5.5,-17.5 - parent: 1 - - uid: 816 - components: - - type: Transform - pos: -5.5,-15.5 - parent: 1 - - uid: 818 - components: - - type: Transform - pos: 6.5,-18.5 - parent: 1 - - uid: 819 - components: - - type: Transform - pos: 6.5,-17.5 - parent: 1 - - uid: 820 - components: - - type: Transform - pos: 6.5,-16.5 - parent: 1 - - uid: 821 - components: - - type: Transform - pos: 6.5,-15.5 - parent: 1 -- proto: CableTerminal - entities: - - uid: 403 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -5.5,-19.5 - parent: 1 - - uid: 817 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-18.5 - parent: 1 - - uid: 845 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-19.5 - parent: 1 - - uid: 846 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.5,-18.5 - parent: 1 -- proto: CarpetBlue - entities: - - uid: 798 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,2.5 - parent: 1 - - uid: 799 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,1.5 - parent: 1 - - uid: 800 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,0.5 - parent: 1 - - uid: 801 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,2.5 - parent: 1 - - uid: 802 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,1.5 - parent: 1 - - uid: 803 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,0.5 - parent: 1 -- proto: Catwalk - entities: - - uid: 275 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-19.5 - parent: 1 - - uid: 286 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,-18.5 - parent: 1 - - uid: 301 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,-18.5 - parent: 1 - - uid: 417 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,-19.5 - parent: 1 - - uid: 567 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,-18.5 - parent: 1 - - uid: 569 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,-18.5 - parent: 1 -- proto: ChairOfficeDark - entities: - - uid: 791 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.4823403,-15.293639 - parent: 1 - - uid: 792 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5370145,-15.272806 - parent: 1 -- proto: ChairOfficeLight - entities: - - uid: 421 - components: - - type: Transform - pos: 5.031788,-2.7287805 - parent: 1 -- proto: ChairPilotSeat - entities: - - uid: 61 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,6.5 - parent: 1 - - uid: 62 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,6.5 - parent: 1 - - uid: 70 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,5.5 - parent: 1 - - uid: 73 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,5.5 - parent: 1 - - uid: 209 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,3.5 - parent: 1 -- proto: ChemDispenser - entities: - - uid: 432 - components: - - type: Transform - pos: 4.5,-1.5 - parent: 1 -- proto: ClosetBombFilled - entities: - - uid: 782 - components: - - type: Transform - pos: 4.299944,-16.5 - parent: 1 -- proto: ClosetEmergencyFilledRandom - entities: - - uid: 424 - components: - - type: Transform - pos: -2.5,-5.5 - parent: 1 - - uid: 434 - components: - - type: Transform - pos: -5.5,-2.5 - parent: 1 -- proto: ClosetEmergencyN2FilledRandom - entities: - - uid: 435 - components: - - type: Transform - pos: -5.5,-1.5 - parent: 1 -- proto: ClosetFireFilled - entities: - - uid: 433 - components: - - type: Transform - pos: -1.5,-5.5 - parent: 1 -- proto: ClosetMaintenanceFilledRandom - entities: - - uid: 689 - components: - - type: Transform - pos: -4.7691255,5.5 - parent: 1 - - uid: 690 - components: - - type: Transform - pos: -4.258709,5.5 - parent: 1 -- proto: ClosetRadiationSuitFilled - entities: - - uid: 780 - components: - - type: Transform - pos: -3.7104728,-16.5 - parent: 1 -- proto: ClothingBeltSecurityFilled - entities: - - uid: 682 - components: - - type: Transform - pos: 1.4278387,-1.6114514 - parent: 1 -- proto: ComfyChair - entities: - - uid: 405 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,0.5 - parent: 1 - - uid: 408 - components: - - type: Transform - pos: 5.5,2.5 - parent: 1 -- proto: ComputerAlert - entities: - - uid: 64 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,6.5 - parent: 1 -- proto: ComputerAnalysisConsole - entities: - - uid: 764 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.5,-15.5 - parent: 1 - - type: AnalysisConsole - analyzerEntity: 398 - - type: DeviceLinkSource - linkedPorts: - 398: - - - ArtifactAnalyzerSender - - ArtifactAnalyzerReceiver - - uid: 784 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-15.5 - parent: 1 - - type: AnalysisConsole - analyzerEntity: 272 - - type: DeviceLinkSource - linkedPorts: - 272: - - - ArtifactAnalyzerSender - - ArtifactAnalyzerReceiver -- proto: ComputerComms - entities: - - uid: 67 - components: - - type: Transform - pos: 1.5,7.5 - parent: 1 -- proto: ComputerCrewMonitoring - entities: - - uid: 65 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,5.5 - parent: 1 -- proto: ComputerPowerMonitoring - entities: - - uid: 68 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,6.5 - parent: 1 -- proto: ComputerRadar - entities: - - uid: 69 - components: - - type: Transform - pos: 0.5,7.5 - parent: 1 -- proto: ComputerResearchAndDevelopment - entities: - - uid: 75 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,5.5 - parent: 1 -- proto: ComputerRoboticsControl - entities: - - uid: 63 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,4.5 - parent: 1 -- proto: ComputerShuttle - entities: - - uid: 66 - components: - - type: Transform - pos: -0.5,7.5 - parent: 1 -- proto: ComputerSurveillanceCameraMonitor - entities: - - uid: 76 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,4.5 - parent: 1 -- proto: CrateArtifactContainer - entities: - - uid: 766 - components: - - type: Transform - pos: -6.5,-16.5 - parent: 1 - - type: Lock - locked: False - - uid: 768 - components: - - type: Transform - pos: 7.5,-16.5 - parent: 1 - - type: Lock - locked: False -- proto: CrateFilledSpawner - entities: - - uid: 779 - components: - - type: Transform - pos: -1.5,-14.5 - parent: 1 -- proto: CrateMaterialSteel - entities: - - uid: 748 - components: - - type: Transform - pos: -4.5,4.5 - parent: 1 -- proto: CratePermaEscapeSpawner - entities: - - uid: 230 - components: - - type: Transform - pos: 2.5,-14.5 - parent: 1 -- proto: CrowbarRed - entities: - - uid: 875 - components: - - type: Transform - pos: -4.4166665,-17.585009 - parent: 1 -- proto: CurtainsBlueOpen - entities: - - uid: 412 - components: - - type: Transform - pos: 6.5,-0.5 - parent: 1 -- proto: DefibrillatorCabinetFilled - entities: - - uid: 425 - components: - - type: Transform - pos: 5.5,-1.5 - parent: 1 - - type: Fixtures - fixtures: {} -- proto: DresserCaptainFilled - entities: - - uid: 410 - components: - - type: Transform - pos: 7.5,-0.5 - parent: 1 - - type: Storage - storedItems: - 411: - position: 0,0 - _rotation: East - - type: ContainerContainer - containers: - storagebase: !type:Container - showEnts: False - occludes: True - ents: - - 411 -- proto: EncryptionKeyFreelance - entities: - - uid: 876 - components: - - type: Transform - pos: 0.49999997,4.220806 - parent: 1 - - uid: 877 - components: - - type: Transform - pos: -2.4583335,5.5749726 - parent: 1 - - uid: 878 - components: - - type: Transform - pos: -0.55208343,7.6166396 - parent: 1 - - uid: 879 - components: - - type: Transform - pos: 1.5,7.637473 - parent: 1 - - uid: 880 - components: - - type: Transform - pos: 3.5104167,5.6791396 - parent: 1 -- proto: ExtinguisherCabinetFilled - entities: - - uid: 774 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-16.5 - parent: 1 - - type: Fixtures - fixtures: {} - - uid: 777 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-16.5 - parent: 1 - - type: Fixtures - fixtures: {} -- proto: FaxMachineCaptain - entities: - - uid: 743 - components: - - type: MetaData - name: NT-Incorporation fax machine - - type: Transform - pos: 7.5,1.5 - parent: 1 - - type: FaxMachine - name: NT-Incorporation -- proto: FluteInstrument - entities: - - uid: 741 - components: - - type: Transform - pos: 5.503268,1.5871 - parent: 1 -- proto: GasPassiveVent - entities: - - uid: 273 - components: - - type: Transform - pos: -3.5,-10.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 487 - components: - - type: Transform - pos: 4.5,-10.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeBend - entities: - - uid: 595 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 596 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 613 - components: - - type: Transform - pos: 5.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 635 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 636 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 647 - components: - - type: Transform - pos: 6.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 648 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 710 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-15.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 721 - components: - - type: Transform - pos: 6.5,-15.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 726 - components: - - type: Transform - pos: 7.5,-14.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 734 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-14.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasPipeFourway - entities: - - uid: 566 - components: - - type: Transform - pos: 0.5,-14.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 584 - components: - - type: Transform - pos: 0.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 627 - components: - - type: Transform - pos: -0.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 717 - components: - - type: Transform - pos: 4.5,-15.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 723 - components: - - type: Transform - pos: -3.5,-15.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeStraight - entities: - - uid: 573 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-14.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 574 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-12.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 575 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-14.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 576 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-11.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 577 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-10.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 578 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-9.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 579 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-8.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 580 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-7.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 581 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-6.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 582 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-5.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 583 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 585 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 586 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 587 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 588 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 590 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 591 - components: - - type: Transform - pos: -3.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 593 - components: - - type: Transform - pos: -3.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 594 - components: - - type: Transform - pos: -3.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 597 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 598 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 599 - components: - - type: Transform - pos: 3.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 600 - components: - - type: Transform - pos: 3.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 601 - components: - - type: Transform - pos: 3.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 602 - components: - - type: Transform - pos: 3.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 607 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 608 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 609 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 612 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 614 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 615 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 620 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 621 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 622 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 623 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 624 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 625 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 628 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 629 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 634 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 637 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 638 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 640 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 642 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 644 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 645 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 646 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 649 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 651 - components: - - type: Transform - pos: -0.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 652 - components: - - type: Transform - pos: -0.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 653 - components: - - type: Transform - pos: 1.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 654 - components: - - type: Transform - pos: 1.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 655 - components: - - type: Transform - pos: 0.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 661 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 662 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 663 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 664 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 665 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 666 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-5.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 667 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-6.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 668 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-7.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 669 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-8.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 670 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-9.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 671 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-10.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 672 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-11.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 673 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-12.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 675 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-14.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 676 - components: - - type: Transform - pos: 0.5,-13.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 677 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,-14.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 678 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,-14.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 699 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,-14.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 700 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-14.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 701 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-14.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 702 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-14.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 706 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-15.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 707 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-15.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 708 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,-15.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 709 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,-15.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 711 - components: - - type: Transform - pos: -5.5,-16.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 712 - components: - - type: Transform - pos: -5.5,-17.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 713 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-15.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 714 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-15.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 715 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-15.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 716 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-15.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 718 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-16.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 719 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-17.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 727 - components: - - type: Transform - pos: 7.5,-15.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 728 - components: - - type: Transform - pos: 7.5,-16.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 729 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-15.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 730 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-15.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 736 - components: - - type: Transform - pos: -6.5,-15.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 737 - components: - - type: Transform - pos: -6.5,-16.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 753 - components: - - type: Transform - pos: -3.5,-14.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 754 - components: - - type: Transform - pos: -3.5,-13.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 755 - components: - - type: Transform - pos: -3.5,-12.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 756 - components: - - type: Transform - pos: -3.5,-11.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 757 - components: - - type: Transform - pos: 4.5,-14.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 758 - components: - - type: Transform - pos: 4.5,-13.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 759 - components: - - type: Transform - pos: 4.5,-12.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 760 - components: - - type: Transform - pos: 4.5,-11.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 812 - components: - - type: Transform - pos: -0.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 813 - components: - - type: Transform - pos: 1.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasPipeTJunction - entities: - - uid: 589 - components: - - type: Transform - pos: -1.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 592 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 603 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 604 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 605 - components: - - type: Transform - pos: 3.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 606 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 632 - components: - - type: Transform - pos: -2.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 633 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 639 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 641 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 643 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 674 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-13.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 692 - components: - - type: Transform - pos: -4.5,-14.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 693 - components: - - type: Transform - pos: 5.5,-14.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 698 - components: - - type: Transform - pos: -5.5,-14.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 705 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-15.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 740 - components: - - type: Transform - pos: 6.5,-14.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasPort - entities: - - uid: 724 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-16.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 762 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-16.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasVentPump - entities: - - uid: 397 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-15.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 610 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 611 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-4.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 858 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 616 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-5.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 856 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 617 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-1.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 856 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 631 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 703 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-15.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 855 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 731 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,-17.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 732 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,-17.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 738 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -5.5,-15.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 805 - components: - - type: Transform - pos: -0.5,5.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 857 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 811 - components: - - type: Transform - pos: 1.5,5.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 857 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasVentScrubber - entities: - - uid: 618 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-5.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 856 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 619 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-2.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 856 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 626 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-4.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 858 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 630 - components: - - type: Transform - pos: -0.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 650 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 658 - components: - - type: Transform - pos: 0.5,5.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 857 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 659 - components: - - type: Transform - pos: 2.5,4.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 857 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 660 - components: - - type: Transform - pos: -1.5,4.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 857 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 704 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-13.5 - parent: 1 - - type: DeviceNetwork - deviceLists: - - 855 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 720 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,-16.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 722 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-18.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 725 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -5.5,-18.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 761 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,-16.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GeneratorBasic15kW - entities: - - uid: 279 - components: - - type: Transform - pos: 7.5,-18.5 - parent: 1 - - uid: 284 - components: - - type: Transform - pos: -6.5,-18.5 - parent: 1 - - uid: 285 - components: - - type: Transform - pos: -5.5,-19.5 - parent: 1 - - type: PowerSupplier - supplyRate: 20000 - - uid: 302 - components: - - type: Transform - pos: 6.5,-19.5 - parent: 1 - - type: PowerSupplier - supplyRate: 20000 -- proto: GravityGeneratorMini - entities: - - uid: 695 - components: - - type: Transform - pos: 1.5,-13.5 - parent: 1 -- proto: Grille - entities: - - uid: 85 - components: - - type: Transform - pos: -0.5,-8.5 - parent: 1 - - uid: 86 - components: - - type: Transform - pos: -0.5,-9.5 - parent: 1 - - uid: 87 - components: - - type: Transform - pos: -0.5,-10.5 - parent: 1 - - uid: 88 - components: - - type: Transform - pos: -0.5,-11.5 - parent: 1 - - uid: 89 - components: - - type: Transform - pos: 1.5,-8.5 - parent: 1 - - uid: 90 - components: - - type: Transform - pos: 1.5,-9.5 - parent: 1 - - uid: 91 - components: - - type: Transform - pos: 1.5,-10.5 - parent: 1 - - uid: 92 - components: - - type: Transform - pos: 1.5,-11.5 - parent: 1 - - uid: 208 - components: - - type: Transform - pos: 2.5,-16.5 - parent: 1 - - uid: 210 - components: - - type: Transform - pos: -1.5,-16.5 - parent: 1 - - uid: 211 - components: - - type: Transform - pos: 8.5,-18.5 - parent: 1 - - uid: 212 - components: - - type: Transform - pos: 8.5,-17.5 - parent: 1 - - uid: 213 - components: - - type: Transform - pos: 8.5,-16.5 - parent: 1 - - uid: 214 - components: - - type: Transform - pos: 8.5,-15.5 - parent: 1 - - uid: 215 - components: - - type: Transform - pos: 8.5,-14.5 - parent: 1 - - uid: 216 - components: - - type: Transform - pos: 8.5,-13.5 - parent: 1 - - uid: 217 - components: - - type: Transform - pos: 8.5,-12.5 - parent: 1 - - uid: 218 - components: - - type: Transform - pos: -7.5,-18.5 - parent: 1 - - uid: 219 - components: - - type: Transform - pos: -7.5,-17.5 - parent: 1 - - uid: 220 - components: - - type: Transform - pos: -7.5,-16.5 - parent: 1 - - uid: 221 - components: - - type: Transform - pos: -7.5,-15.5 - parent: 1 - - uid: 222 - components: - - type: Transform - pos: -7.5,-14.5 - parent: 1 - - uid: 223 - components: - - type: Transform - pos: -7.5,-13.5 - parent: 1 - - uid: 224 - components: - - type: Transform - pos: -7.5,-12.5 - parent: 1 - - uid: 231 - components: - - type: Transform - pos: 2.5,-3.5 - parent: 1 - - uid: 246 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,7.5 - parent: 1 - - uid: 247 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,8.5 - parent: 1 - - uid: 248 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,8.5 - parent: 1 - - uid: 249 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,8.5 - parent: 1 - - uid: 250 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,8.5 - parent: 1 - - uid: 251 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,8.5 - parent: 1 - - uid: 252 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,7.5 - parent: 1 - - uid: 253 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 8.5,1.5 - parent: 1 - - uid: 254 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 8.5,0.5 - parent: 1 - - uid: 255 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 8.5,-0.5 - parent: 1 - - uid: 256 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,5.5 - parent: 1 - - uid: 423 - components: - - type: Transform - pos: 4.5,-5.5 - parent: 1 - - uid: 428 - components: - - type: Transform - pos: 5.5,-5.5 - parent: 1 - - uid: 429 - components: - - type: Transform - pos: 6.5,-5.5 - parent: 1 - - uid: 430 - components: - - type: Transform - pos: 6.5,-4.5 - parent: 1 - - uid: 431 - components: - - type: Transform - pos: 6.5,-3.5 - parent: 1 - - uid: 556 - components: - - type: Transform - pos: -6.5,-2.5 - parent: 1 - - uid: 557 - components: - - type: Transform - pos: -2.5,-6.5 - parent: 1 - - uid: 776 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-14.5 - parent: 1 - - uid: 790 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,-14.5 - parent: 1 -- proto: Gyroscope - entities: - - uid: 696 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-13.5 - parent: 1 -- proto: HandheldGPSBasic - entities: - - uid: 656 - components: - - type: Transform - pos: 1.4070053,-1.2989514 - parent: 1 - - uid: 657 - components: - - type: Transform - pos: 1.7195053,-1.4447846 - parent: 1 - - uid: 686 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.526809,6.905597 - parent: 1 -- proto: HarmonicaInstrument - entities: - - uid: 411 - components: - - type: Transform - parent: 410 - - type: Physics - canCollide: False -- proto: LockerElectricalSuppliesFilled - entities: - - uid: 783 - components: - - type: Transform - pos: 4.787136,-16.5 - parent: 1 -- proto: LockerWeldingSuppliesFilled - entities: - - uid: 781 - components: - - type: Transform - pos: -3.2544491,-16.5 - parent: 1 -- proto: LuxuryPen - entities: - - uid: 747 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.390186,0.6159255 - parent: 1 -- proto: MachineArtifactAnalyzer - entities: - - uid: 272 - components: - - type: Transform - pos: -5.5,-12.5 - parent: 1 - - uid: 398 - components: - - type: Transform - pos: 6.5,-12.5 - parent: 1 -- proto: MedicalBed - entities: - - uid: 422 - components: - - type: Transform - pos: 5.5,-4.5 - parent: 1 - - uid: 426 - components: - - type: Transform - pos: 4.5,-4.5 - parent: 1 -- proto: NetworkConfigurator - entities: - - uid: 785 - components: - - type: Transform - pos: -3.7083337,-14.34175 - parent: 1 - - uid: 809 - components: - - type: Transform - pos: 4.2934732,-14.35611 - parent: 1 -- proto: PaperCaptainsThoughts - entities: - - uid: 744 - components: - - type: Transform - pos: 7.390186,0.93884224 - parent: 1 - - uid: 745 - components: - - type: Transform - pos: 7.53602,0.84509224 - parent: 1 - - uid: 746 - components: - - type: Transform - pos: 7.72352,0.72009224 - parent: 1 -- proto: PlasmaReinforcedWindowDirectional - entities: - - uid: 296 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-14.5 - parent: 1 - - uid: 323 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,-14.5 - parent: 1 - - uid: 324 - components: - - type: Transform - pos: -6.5,-13.5 - parent: 1 - - uid: 325 - components: - - type: Transform - pos: -4.5,-13.5 - parent: 1 - - uid: 691 - components: - - type: Transform - pos: 7.5,-13.5 - parent: 1 - - uid: 694 - components: - - type: Transform - pos: 5.5,-13.5 - parent: 1 - - uid: 697 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-14.5 - parent: 1 - - uid: 763 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,-14.5 - parent: 1 -- proto: PottedPlantRandom - entities: - - uid: 439 - components: - - type: Transform - pos: 1.5,-6.5 - parent: 1 - - uid: 440 - components: - - type: Transform - pos: -0.5,-6.5 - parent: 1 -- proto: PowerCellMedium - entities: - - uid: 881 - components: - - type: Transform - pos: -3.264883,-14.25878 - parent: 1 - - uid: 882 - components: - - type: Transform - pos: 4.692021,-14.3004465 - parent: 1 -- proto: Poweredlight - entities: - - uid: 558 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,1.5 - parent: 1 - - uid: 559 - components: - - type: Transform - pos: 5.5,5.5 - parent: 1 - - uid: 568 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,-2.5 - parent: 1 - - uid: 570 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,0.5 - parent: 1 - - uid: 572 - components: - - type: Transform - pos: 1.5,-3.5 - parent: 1 - - uid: 749 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-13.5 - parent: 1 - - uid: 750 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-0.5 - parent: 1 - - uid: 751 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-0.5 - parent: 1 - - uid: 752 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-13.5 - parent: 1 -- proto: PoweredlightBlue - entities: - - uid: 268 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-13.5 - parent: 1 - - uid: 269 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-17.5 - parent: 1 - - uid: 270 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,-17.5 - parent: 1 - - uid: 271 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,-13.5 - parent: 1 - - uid: 786 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,-15.5 - parent: 1 - - uid: 787 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.5,-15.5 - parent: 1 -- proto: PoweredlightLED - entities: - - uid: 274 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,1.5 - parent: 1 -- proto: PoweredSmallLight - entities: - - uid: 680 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,3.5 - parent: 1 -- proto: Rack - entities: - - uid: 448 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-1.5 - parent: 1 -- proto: Railing - entities: - - uid: 190 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,2.5 - parent: 1 - - uid: 198 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,2.5 - parent: 1 - - uid: 199 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,2.5 - parent: 1 - - uid: 207 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,3.5 - parent: 1 -- proto: RailingCorner - entities: - - uid: 206 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,3.5 - parent: 1 - - uid: 441 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-6.5 - parent: 1 - - uid: 442 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-6.5 - parent: 1 -- proto: RailingCornerSmall - entities: - - uid: 197 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,2.5 - parent: 1 -- proto: ReinforcedWindow - entities: - - uid: 257 - components: - - type: Transform - pos: 2.5,-3.5 - parent: 1 - - uid: 404 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-14.5 - parent: 1 - - uid: 406 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,-14.5 - parent: 1 -- proto: SalvageMaterialCrateSpawner - entities: - - uid: 418 - components: - - type: Transform - pos: 7.5,-14.5 - parent: 1 - - uid: 765 - components: - - type: Transform - pos: -6.5,-14.5 - parent: 1 -- proto: SecurityVisitorSpawner - entities: - - uid: 871 - components: - - type: Transform - pos: 1.5,6.5 - parent: 1 -- proto: ShuttersNormalOpen - entities: - - uid: 562 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,5.5 - parent: 1 - - uid: 563 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 8.5,1.5 - parent: 1 - - uid: 564 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 8.5,0.5 - parent: 1 - - uid: 565 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 8.5,-0.5 - parent: 1 -- proto: ShuttleWindow - entities: - - uid: 3 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,7.5 - parent: 1 - - uid: 4 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,8.5 - parent: 1 - - uid: 5 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,8.5 - parent: 1 - - uid: 6 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,8.5 - parent: 1 - - uid: 7 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,8.5 - parent: 1 - - uid: 8 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,8.5 - parent: 1 - - uid: 9 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,7.5 - parent: 1 - - uid: 23 - components: - - type: Transform - pos: -6.5,-2.5 - parent: 1 - - uid: 31 - components: - - type: Transform - pos: -2.5,-6.5 - parent: 1 - - uid: 38 - components: - - type: Transform - pos: 6.5,-3.5 - parent: 1 - - uid: 39 - components: - - type: Transform - pos: 6.5,-4.5 - parent: 1 - - uid: 40 - components: - - type: Transform - pos: 5.5,-5.5 - parent: 1 - - uid: 41 - components: - - type: Transform - pos: 6.5,-5.5 - parent: 1 - - uid: 42 - components: - - type: Transform - pos: 4.5,-5.5 - parent: 1 - - uid: 47 - components: - - type: Transform - pos: 8.5,-0.5 - parent: 1 - - uid: 48 - components: - - type: Transform - pos: 8.5,0.5 - parent: 1 - - uid: 49 - components: - - type: Transform - pos: 8.5,1.5 - parent: 1 - - uid: 55 - components: - - type: Transform - pos: 6.5,5.5 - parent: 1 - - uid: 71 - components: - - type: Transform - pos: 1.5,-8.5 - parent: 1 - - uid: 72 - components: - - type: Transform - pos: 1.5,-9.5 - parent: 1 - - uid: 77 - components: - - type: Transform - pos: 1.5,-10.5 - parent: 1 - - uid: 78 - components: - - type: Transform - pos: 1.5,-11.5 - parent: 1 - - uid: 79 - components: - - type: Transform - pos: -0.5,-8.5 - parent: 1 - - uid: 80 - components: - - type: Transform - pos: -0.5,-9.5 - parent: 1 - - uid: 81 - components: - - type: Transform - pos: -0.5,-10.5 - parent: 1 - - uid: 82 - components: - - type: Transform - pos: -0.5,-11.5 - parent: 1 - - uid: 93 - components: - - type: Transform - pos: -7.5,-12.5 - parent: 1 - - uid: 94 - components: - - type: Transform - pos: -7.5,-13.5 - parent: 1 - - uid: 95 - components: - - type: Transform - pos: -7.5,-14.5 - parent: 1 - - uid: 96 - components: - - type: Transform - pos: -7.5,-15.5 - parent: 1 - - uid: 97 - components: - - type: Transform - pos: -7.5,-16.5 - parent: 1 - - uid: 98 - components: - - type: Transform - pos: -7.5,-17.5 - parent: 1 - - uid: 99 - components: - - type: Transform - pos: -7.5,-18.5 - parent: 1 - - uid: 100 - components: - - type: Transform - pos: 8.5,-18.5 - parent: 1 - - uid: 101 - components: - - type: Transform - pos: 8.5,-17.5 - parent: 1 - - uid: 102 - components: - - type: Transform - pos: 8.5,-16.5 - parent: 1 - - uid: 103 - components: - - type: Transform - pos: 8.5,-15.5 - parent: 1 - - uid: 104 - components: - - type: Transform - pos: 8.5,-14.5 - parent: 1 - - uid: 105 - components: - - type: Transform - pos: 8.5,-13.5 - parent: 1 - - uid: 106 - components: - - type: Transform - pos: 8.5,-12.5 - parent: 1 - - uid: 128 - components: - - type: Transform - pos: 2.5,-16.5 - parent: 1 - - uid: 155 - components: - - type: Transform - pos: -1.5,-16.5 - parent: 1 -- proto: SignalButtonDirectional - entities: - - uid: 288 - components: - - type: MetaData - name: space test chamber - - type: Transform - pos: -3.5,-13.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 289: - - - Pressed - - Toggle - 278: - - - Pressed - - DoorBolt - - type: Fixtures - fixtures: {} - - uid: 298 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-16.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 261: - - - Pressed - - Toggle - - type: Fixtures - fixtures: {} - - uid: 308 - components: - - type: MetaData - name: space test chamber - - type: Transform - pos: 4.5,-13.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 307: - - - Pressed - - Toggle - 277: - - - Pressed - - DoorBolt - - type: Fixtures - fixtures: {} - - uid: 560 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,5.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 562: - - - Pressed - - Toggle - - type: Fixtures - fixtures: {} - - uid: 795 - components: - - type: Transform - pos: -5.5,2.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 571: - - - Pressed - - Toggle - 443: - - - Pressed - - Toggle - 438: - - - Pressed - - Toggle - - type: Fixtures - fixtures: {} -- proto: SinkStemlessWater - entities: - - uid: 687 - components: - - type: Transform - pos: 5.5,-2.5 - parent: 1 -- proto: SMESBasic - entities: - - uid: 283 - components: - - type: Transform - pos: -5.5,-18.5 - parent: 1 - - uid: 402 - components: - - type: Transform - pos: 6.5,-18.5 - parent: 1 -- proto: Stairs - entities: - - uid: 264 - components: - - type: Transform - pos: 0.5,-11.5 - parent: 1 - - uid: 265 - components: - - type: Transform - pos: 0.5,-10.5 - parent: 1 - - uid: 266 - components: - - type: Transform - pos: 0.5,-9.5 - parent: 1 - - uid: 267 - components: - - type: Transform - pos: 0.5,-8.5 - parent: 1 -- proto: StairStageDark - entities: - - uid: 203 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,3.5 - parent: 1 - - uid: 204 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,3.5 - parent: 1 -- proto: SubstationBasic - entities: - - uid: 280 - components: - - type: Transform - pos: 5.5,-18.5 - parent: 1 - - uid: 684 - components: - - type: Transform - pos: -4.5,-18.5 - parent: 1 -- proto: SuitStorageEVAAlternate - entities: - - uid: 27 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 - - uid: 447 - components: - - type: Transform - pos: -0.5,-0.5 - parent: 1 -- proto: SurveillanceCameraCommand - entities: - - uid: 859 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,7.5 - parent: 1 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraCommand - nameSet: True - id: viewscreen - - uid: 860 - components: - - type: Transform - pos: 5.5,0.5 - parent: 1 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraCommand - nameSet: True - id: captain's office - - uid: 861 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-2.5 - parent: 1 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraCommand - nameSet: True - id: medbay - - uid: 862 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-3.5 - parent: 1 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraCommand - nameSet: True - id: hallway - - uid: 863 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -5.5,1.5 - parent: 1 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraCommand - nameSet: True - id: dock - - uid: 864 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-0.5 - parent: 1 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraCommand - nameSet: True - id: supply - - uid: 865 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,-14.5 - parent: 1 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraCommand - nameSet: True - id: port nacelle - - uid: 866 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,-14.5 - parent: 1 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraCommand - nameSet: True - id: starboard nacelle -- proto: SurveillanceCameraRouterCommand - entities: - - uid: 29 - components: - - type: Transform - pos: -1.5,-0.5 - parent: 1 -- proto: Table - entities: - - uid: 451 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,6.5 - parent: 1 -- proto: TableFancyBlue - entities: - - uid: 414 - components: - - type: Transform - pos: 7.5,1.5 - parent: 1 - - uid: 415 - components: - - type: Transform - pos: 7.5,0.5 - parent: 1 -- proto: TablePlasmaGlass - entities: - - uid: 804 - components: - - type: Transform - pos: -3.5,-14.5 - parent: 1 - - uid: 808 - components: - - type: Transform - pos: 4.5,-14.5 - parent: 1 -- proto: TableReinforced - entities: - - uid: 449 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-0.5 - parent: 1 -- proto: TableReinforcedGlass - entities: - - uid: 772 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,-17.5 - parent: 1 - - uid: 773 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-17.5 - parent: 1 -- proto: TableWood - entities: - - uid: 416 - components: - - type: Transform - pos: 5.5,1.5 - parent: 1 -- proto: Thruster - entities: - - uid: 160 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,-10.5 - parent: 1 - - uid: 161 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -7.5,-20.5 - parent: 1 - - uid: 162 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,-21.5 - parent: 1 - - uid: 163 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -5.5,-21.5 - parent: 1 - - uid: 164 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-21.5 - parent: 1 - - uid: 165 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,-20.5 - parent: 1 - - uid: 166 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,-10.5 - parent: 1 - - uid: 167 - components: - - type: Transform - pos: -7.5,-10.5 - parent: 1 - - uid: 168 - components: - - type: Transform - pos: -6.5,-9.5 - parent: 1 - - uid: 169 - components: - - type: Transform - pos: -5.5,-9.5 - parent: 1 - - uid: 170 - components: - - type: Transform - pos: -4.5,-9.5 - parent: 1 - - type: Thruster - enabled: False - - uid: 172 - components: - - type: Transform - pos: 5.5,-9.5 - parent: 1 - - uid: 173 - components: - - type: Transform - pos: 6.5,-9.5 - parent: 1 - - uid: 174 - components: - - type: Transform - pos: 7.5,-9.5 - parent: 1 - - uid: 175 - components: - - type: Transform - pos: 8.5,-10.5 - parent: 1 - - uid: 176 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,-20.5 - parent: 1 - - uid: 177 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-21.5 - parent: 1 - - uid: 178 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-21.5 - parent: 1 - - uid: 179 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,-21.5 - parent: 1 - - uid: 180 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 8.5,-20.5 - parent: 1 -- proto: ToiletEmpty - entities: - - uid: 200 - components: - - type: Transform - pos: 5.5,5.5 - parent: 1 -- proto: ToolboxMechanicalFilled - entities: - - uid: 778 - components: - - type: Transform - pos: 5.464359,-17.478128 - parent: 1 -- proto: TwoWayLever - entities: - - uid: 806 - components: - - type: Transform - pos: -4.5,-14.5 - parent: 1 - - uid: 807 - components: - - type: Transform - pos: 5.5,-14.5 - parent: 1 -- proto: VendingMachineMedicalBase - entities: - - uid: 767 - components: - - type: Transform - pos: 6.5,-2.5 - parent: 1 - - uid: 769 - components: - - type: Transform - pos: 3.5,-5.5 - parent: 1 -- proto: VendingMachineTankDispenserEVA - entities: - - uid: 28 - components: - - type: Transform - pos: -1.5,-1.5 - parent: 1 -- proto: VisitingCargonianSpawner - entities: - - uid: 870 - components: - - type: Transform - pos: -0.5,6.5 - parent: 1 -- proto: VisitingMedicalSpawner - entities: - - uid: 872 - components: - - type: Transform - pos: 2.5,5.5 - parent: 1 -- proto: VisitingScientistSpawner - entities: - - uid: 873 - components: - - type: Transform - pos: -1.5,5.5 - parent: 1 -- proto: VisitorCaptainSpawner - entities: - - uid: 867 - components: - - type: Transform - pos: 0.5,3.5 - parent: 1 -- proto: WallShuttle - entities: - - uid: 2 - components: - - type: Transform - pos: 8.5,-19.5 - parent: 1 - - uid: 10 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,7.5 - parent: 1 - - uid: 11 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,7.5 - parent: 1 - - uid: 12 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,6.5 - parent: 1 - - uid: 13 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,6.5 - parent: 1 - - uid: 14 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -5.5,6.5 - parent: 1 - - uid: 15 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -5.5,5.5 - parent: 1 - - uid: 16 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -5.5,4.5 - parent: 1 - - uid: 17 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,4.5 - parent: 1 - - uid: 18 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,3.5 - parent: 1 - - uid: 19 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,2.5 - parent: 1 - - uid: 20 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -7.5,2.5 - parent: 1 - - uid: 21 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -7.5,-1.5 - parent: 1 - - uid: 22 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,-1.5 - parent: 1 - - uid: 24 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,-3.5 - parent: 1 - - uid: 26 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,-5.5 - parent: 1 - - uid: 30 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,-6.5 - parent: 1 - - uid: 32 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-6.5 - parent: 1 - - uid: 33 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-7.5 - parent: 1 - - uid: 34 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-7.5 - parent: 1 - - uid: 35 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-6.5 - parent: 1 - - uid: 36 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-6.5 - parent: 1 - - uid: 37 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,-6.5 - parent: 1 - - uid: 43 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,-3.5 - parent: 1 - - uid: 44 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,-2.5 - parent: 1 - - uid: 45 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,-1.5 - parent: 1 - - uid: 46 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 8.5,-1.5 - parent: 1 - - uid: 50 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 8.5,2.5 - parent: 1 - - uid: 51 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,2.5 - parent: 1 - - uid: 52 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,3.5 - parent: 1 - - uid: 53 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,4.5 - parent: 1 - - uid: 54 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,4.5 - parent: 1 - - uid: 56 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,6.5 - parent: 1 - - uid: 57 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,6.5 - parent: 1 - - uid: 58 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,6.5 - parent: 1 - - uid: 59 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,7.5 - parent: 1 - - uid: 60 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,7.5 - parent: 1 - - uid: 74 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,3.5 - parent: 1 - - uid: 83 - components: - - type: Transform - pos: -0.5,-7.5 - parent: 1 - - uid: 84 - components: - - type: Transform - pos: 1.5,-7.5 - parent: 1 - - uid: 107 - components: - - type: Transform - pos: -6.5,-10.5 - parent: 1 - - uid: 108 - components: - - type: Transform - pos: -6.5,-11.5 - parent: 1 - - uid: 109 - components: - - type: Transform - pos: -7.5,-11.5 - parent: 1 - - uid: 110 - components: - - type: Transform - pos: -5.5,-10.5 - parent: 1 - - uid: 111 - components: - - type: Transform - pos: -4.5,-10.5 - parent: 1 - - uid: 112 - components: - - type: Transform - pos: -4.5,-11.5 - parent: 1 - - uid: 113 - components: - - type: Transform - pos: -3.5,-11.5 - parent: 1 - - uid: 114 - components: - - type: Transform - pos: -7.5,-19.5 - parent: 1 - - uid: 115 - components: - - type: Transform - pos: -6.5,-19.5 - parent: 1 - - uid: 116 - components: - - type: Transform - pos: -6.5,-20.5 - parent: 1 - - uid: 117 - components: - - type: Transform - pos: -5.5,-20.5 - parent: 1 - - uid: 118 - components: - - type: Transform - pos: -4.5,-20.5 - parent: 1 - - uid: 119 - components: - - type: Transform - pos: -3.5,-18.5 - parent: 1 - - uid: 120 - components: - - type: Transform - pos: -4.5,-19.5 - parent: 1 - - uid: 121 - components: - - type: Transform - pos: -3.5,-19.5 - parent: 1 - - uid: 122 - components: - - type: Transform - pos: -3.5,-17.5 - parent: 1 - - uid: 123 - components: - - type: Transform - pos: -2.5,-17.5 - parent: 1 - - uid: 124 - components: - - type: Transform - pos: -3.5,-12.5 - parent: 1 - - uid: 125 - components: - - type: Transform - pos: -3.5,-13.5 - parent: 1 - - uid: 126 - components: - - type: Transform - pos: -2.5,-13.5 - parent: 1 - - uid: 127 - components: - - type: Transform - pos: -2.5,-16.5 - parent: 1 - - uid: 129 - components: - - type: Transform - pos: -1.5,-13.5 - parent: 1 - - uid: 130 - components: - - type: Transform - pos: -1.5,-12.5 - parent: 1 - - uid: 131 - components: - - type: Transform - pos: -0.5,-12.5 - parent: 1 - - uid: 132 - components: - - type: Transform - pos: 1.5,-12.5 - parent: 1 - - uid: 133 - components: - - type: Transform - pos: 2.5,-12.5 - parent: 1 - - uid: 134 - components: - - type: Transform - pos: 2.5,-13.5 - parent: 1 - - uid: 135 - components: - - type: Transform - pos: 3.5,-13.5 - parent: 1 - - uid: 136 - components: - - type: Transform - pos: 4.5,-13.5 - parent: 1 - - uid: 137 - components: - - type: Transform - pos: 4.5,-12.5 - parent: 1 - - uid: 138 - components: - - type: Transform - pos: 4.5,-11.5 - parent: 1 - - uid: 139 - components: - - type: Transform - pos: 5.5,-11.5 - parent: 1 - - uid: 140 - components: - - type: Transform - pos: 5.5,-10.5 - parent: 1 - - uid: 141 - components: - - type: Transform - pos: 6.5,-10.5 - parent: 1 - - uid: 142 - components: - - type: Transform - pos: 7.5,-10.5 - parent: 1 - - uid: 143 - components: - - type: Transform - pos: 7.5,-11.5 - parent: 1 - - uid: 144 - components: - - type: Transform - pos: 8.5,-11.5 - parent: 1 - - uid: 145 - components: - - type: Transform - pos: 7.5,-19.5 - parent: 1 - - uid: 146 - components: - - type: Transform - pos: 7.5,-20.5 - parent: 1 - - uid: 147 - components: - - type: Transform - pos: 6.5,-20.5 - parent: 1 - - uid: 148 - components: - - type: Transform - pos: 5.5,-20.5 - parent: 1 - - uid: 149 - components: - - type: Transform - pos: 5.5,-19.5 - parent: 1 - - uid: 150 - components: - - type: Transform - pos: 4.5,-19.5 - parent: 1 - - uid: 151 - components: - - type: Transform - pos: 4.5,-18.5 - parent: 1 - - uid: 152 - components: - - type: Transform - pos: 4.5,-17.5 - parent: 1 - - uid: 153 - components: - - type: Transform - pos: 3.5,-17.5 - parent: 1 - - uid: 154 - components: - - type: Transform - pos: 3.5,-16.5 - parent: 1 - - uid: 156 - components: - - type: Transform - pos: 1.5,-16.5 - parent: 1 - - uid: 157 - components: - - type: Transform - pos: 1.5,-17.5 - parent: 1 - - uid: 158 - components: - - type: Transform - pos: -0.5,-17.5 - parent: 1 - - uid: 159 - components: - - type: Transform - pos: -0.5,-16.5 - parent: 1 - - uid: 183 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,5.5 - parent: 1 - - uid: 184 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,4.5 - parent: 1 - - uid: 185 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,5.5 - parent: 1 - - uid: 186 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,4.5 - parent: 1 - - uid: 187 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,2.5 - parent: 1 - - uid: 188 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,2.5 - parent: 1 - - uid: 191 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,0.5 - parent: 1 - - uid: 192 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,0.5 - parent: 1 - - uid: 193 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,0.5 - parent: 1 - - uid: 194 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,0.5 - parent: 1 - - uid: 195 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,0.5 - parent: 1 - - uid: 225 - components: - - type: Transform - pos: 4.5,1.5 - parent: 1 - - uid: 226 - components: - - type: Transform - pos: 4.5,0.5 - parent: 1 - - uid: 227 - components: - - type: Transform - pos: 5.5,-0.5 - parent: 1 - - uid: 228 - components: - - type: Transform - pos: 6.5,-1.5 - parent: 1 - - uid: 232 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-5.5 - parent: 1 - - uid: 233 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-1.5 - parent: 1 - - uid: 234 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-0.5 - parent: 1 - - uid: 235 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-2.5 - parent: 1 - - uid: 236 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,0.5 - parent: 1 - - uid: 237 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-0.5 - parent: 1 - - uid: 238 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-1.5 - parent: 1 - - uid: 240 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-2.5 - parent: 1 - - uid: 241 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-2.5 - parent: 1 - - uid: 244 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -7.5,0.5 - parent: 1 - - uid: 245 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,2.5 - parent: 1 - - uid: 419 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,-1.5 - parent: 1 - - uid: 420 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,-0.5 - parent: 1 - - uid: 444 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-5.5 - parent: 1 - - uid: 445 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-4.5 - parent: 1 -- proto: WallShuttleDiagonal - entities: - - uid: 25 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,-3.5 - parent: 1 - - uid: 181 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,6.5 - parent: 1 - - uid: 182 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,6.5 - parent: 1 - - uid: 196 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,2.5 - parent: 1 - - uid: 239 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-2.5 - parent: 1 - - uid: 446 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,-5.5 - parent: 1 -- proto: WaterCooler - entities: - - uid: 844 - components: - - type: Transform - pos: -2.5,3.5 - parent: 1 -- proto: WeaponCapacitorRecharger - entities: - - uid: 450 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,6.5 - parent: 1 - - uid: 683 - components: - - type: Transform - pos: 1.5,-0.5 - parent: 1 -- proto: WeaponTaser - entities: - - uid: 681 - components: - - type: Transform - pos: 1.4895833,-0.24527085 - parent: 1 -- proto: WeldingFuelTankFull - entities: - - uid: 688 - components: - - type: Transform - pos: -5.5,3.5 - parent: 1 -- proto: WindoorSecure - entities: - - uid: 399 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -5.5,-17.5 - parent: 1 - - uid: 400 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-17.5 - parent: 1 -- proto: WindoorSecurePlasma - entities: - - uid: 277 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-14.5 - parent: 1 - - uid: 278 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -5.5,-14.5 - parent: 1 -- proto: WindowReinforcedDirectional - entities: - - uid: 393 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,-17.5 - parent: 1 - - uid: 394 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-17.5 - parent: 1 - - uid: 395 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-17.5 - parent: 1 - - uid: 396 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 7.5,-17.5 - parent: 1 -- proto: WoodDoor - entities: - - uid: 202 - components: - - type: Transform - pos: 5.5,4.5 - parent: 1 -- proto: Wrench - entities: - - uid: 874 - components: - - type: Transform - pos: -4.46875,-17.491259 - parent: 1 -... diff --git a/Resources/Maps/Shuttles/ShuttleEvent/joe.yml b/Resources/Maps/Shuttles/ShuttleEvent/joe.yml deleted file mode 100644 index 270a391cdd7..00000000000 --- a/Resources/Maps/Shuttles/ShuttleEvent/joe.yml +++ /dev/null @@ -1,2324 +0,0 @@ -meta: - format: 6 - postmapinit: false -tilemap: - 0: Space - 1: FloorMetalDiamond - 98: FloorSteelCheckerDark - 102: FloorSteelDiagonalMini - 111: FloorTechMaint - 125: FloorWood - 128: Lattice - 129: Plating -entities: -- proto: "" - entities: - - uid: 1 - components: - - type: MetaData - name: SRV-Joe - - type: Transform - pos: -0.47916666,-0.46875 - parent: invalid - - type: MapGrid - chunks: - 0,0: - ind: 0,0 - tiles: fQAAAAAAgQAAAAAAbwAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAgQAAAAAAYgAAAAACYgAAAAAAbwAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAADgQAAAAAAYgAAAAABYgAAAAABbwAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAYgAAAAABYgAAAAAAbwAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAAACYgAAAAADYgAAAAADYgAAAAADgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAgQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 0,-1: - ind: 0,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAAAfQAAAAACgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAACfQAAAAABfQAAAAADfQAAAAACgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAADfQAAAAABfQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAAAfQAAAAADfQAAAAACfQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAADfQAAAAAAfQAAAAACfQAAAAACgQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -1,-1: - ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAfQAAAAACfQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAfQAAAAACfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAfQAAAAACfQAAAAACfQAAAAADfQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAZgAAAAACfQAAAAABfQAAAAADfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAfQAAAAACfQAAAAAAfQAAAAADfQAAAAAA - version: 6 - -1,0: - ind: -1,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAfQAAAAAAfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAfQAAAAAAfQAAAAACfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAfQAAAAABfQAAAAACfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAYgAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAbwAAAAAAYgAAAAAAYgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAbwAAAAAAYgAAAAADbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAYgAAAAACgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - - type: Broadphase - - type: Physics - bodyStatus: InAir - angularDamping: 0.05 - linearDamping: 0.05 - fixedRotation: False - bodyType: Dynamic - - type: Fixtures - fixtures: {} - - type: OccluderTree - - type: SpreaderGrid - - type: Shuttle - - type: GridPathfinding - - type: Gravity - gravityShakeSound: !type:SoundPathSpecifier - path: /Audio/Effects/alert.ogg - - type: DecalGrid - chunkCollection: - version: 2 - nodes: - - node: - color: '#FFFFFFFF' - id: WoodTrimThinCornerNe - decals: - 8: 0,2 - 9: 3,-1 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinCornerNw - decals: - 1: -3,2 - 37: -4,-1 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinCornerSe - decals: - 2: 2,-5 - 3: 3,-4 - 4: 0,1 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinCornerSw - decals: - 6: -2,-5 - 7: -3,1 - 38: -4,-3 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinEndE - decals: - 30: 0,0 - 41: -4,-2 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinEndW - decals: - 29: -2,0 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinInnerSe - decals: - 44: 2,-4 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinInnerSw - decals: - 43: -2,-3 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinLineE - decals: - 10: 3,-2 - 11: 3,-3 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinLineN - decals: - 12: -1,2 - 13: -2,2 - 14: -2,-1 - 15: -1,-1 - 16: -3,-1 - 17: 0,-1 - 18: 1,-1 - 19: 2,-1 - 31: -1,0 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinLineS - decals: - 20: -1,-5 - 21: 0,-5 - 22: 1,-5 - 24: -2,1 - 25: -1,1 - 26: -1,1 - 32: -1,0 - 42: -3,-3 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinLineW - decals: - 28: -2,-4 - - type: GridAtmosphere - version: 2 - data: - tiles: - 0,0: - 0: 52677 - 1: 16 - 0,-1: - 0: 65535 - -1,0: - 0: 20204 - 0,1: - 0: 127 - -1,1: - 0: 1262 - 1,0: - 0: 12592 - 1,1: - 2: 16 - 1,-1: - 2: 8192 - 0,-2: - 0: 28672 - -1,-2: - 0: 49152 - 2: 4096 - -1,-1: - 0: 65532 - -2,-1: - 0: 32896 - -2,0: - 2: 128 - uniqueMixes: - - volume: 2500 - temperature: 293.15 - moles: - - 21.824879 - - 82.10312 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 293.14975 - moles: - - 20.078888 - - 75.53487 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - immutable: True - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - chunkSize: 4 - - type: GasTileOverlay - - type: RadiationGridResistance -- proto: AirCanister - entities: - - uid: 92 - components: - - type: Transform - anchored: True - pos: -2.5,4.5 - parent: 1 - - type: Physics - bodyType: Static -- proto: Airlock - entities: - - uid: 81 - components: - - type: Transform - pos: -1.5,3.5 - parent: 1 -- proto: AirlockExternalGlassShuttleLocked - entities: - - uid: 45 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-2.5 - parent: 1 - - uid: 46 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-0.5 - parent: 1 -- proto: AirlockExternalShuttleLocked - entities: - - uid: 43 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,3.5 - parent: 1 - - uid: 44 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,1.5 - parent: 1 -- proto: AirlockMaint - entities: - - uid: 86 - components: - - type: Transform - pos: 2.5,0.5 - parent: 1 -- proto: APCBasic - entities: - - uid: 261 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,2.5 - parent: 1 -- proto: AtmosDeviceFanDirectional - entities: - - uid: 176 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,3.5 - parent: 1 - - uid: 264 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-2.5 - parent: 1 - - uid: 265 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-2.5 - parent: 1 - - uid: 266 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,1.5 - parent: 1 - - uid: 311 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-0.5 - parent: 1 - - uid: 312 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-0.5 - parent: 1 -- proto: BarSignMaidCafe - entities: - - uid: 126 - components: - - type: Transform - pos: 0.5,3.5 - parent: 1 -- proto: BlastDoorOpen - entities: - - uid: 56 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,1.5 - parent: 1 - - uid: 58 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,3.5 - parent: 1 - - uid: 59 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,2.5 - parent: 1 -- proto: BookshelfFilled - entities: - - uid: 237 - components: - - type: Transform - pos: 3.5,-0.5 - parent: 1 -- proto: ButtonFrameGrey - entities: - - uid: 85 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,0.5 - parent: 1 - - uid: 201 - components: - - type: Transform - pos: -2.5,3.5 - parent: 1 - - uid: 308 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,1.5 - parent: 1 -- proto: CableApcExtension - entities: - - uid: 101 - components: - - type: Transform - pos: 2.5,2.5 - parent: 1 - - uid: 106 - components: - - type: Transform - pos: 1.5,4.5 - parent: 1 - - uid: 107 - components: - - type: Transform - pos: 0.5,4.5 - parent: 1 - - uid: 108 - components: - - type: Transform - pos: -0.5,4.5 - parent: 1 - - uid: 109 - components: - - type: Transform - pos: -1.5,4.5 - parent: 1 - - uid: 110 - components: - - type: Transform - pos: -1.5,5.5 - parent: 1 - - uid: 111 - components: - - type: Transform - pos: -1.5,6.5 - parent: 1 - - uid: 112 - components: - - type: Transform - pos: -1.5,7.5 - parent: 1 - - uid: 113 - components: - - type: Transform - pos: -2.5,6.5 - parent: 1 - - uid: 114 - components: - - type: Transform - pos: -2.5,7.5 - parent: 1 - - uid: 115 - components: - - type: Transform - pos: -0.5,7.5 - parent: 1 - - uid: 116 - components: - - type: Transform - pos: -0.5,6.5 - parent: 1 - - uid: 117 - components: - - type: Transform - pos: -1.5,3.5 - parent: 1 - - uid: 118 - components: - - type: Transform - pos: -1.5,2.5 - parent: 1 - - uid: 119 - components: - - type: Transform - pos: -0.5,1.5 - parent: 1 - - uid: 120 - components: - - type: Transform - pos: -1.5,1.5 - parent: 1 - - uid: 121 - components: - - type: Transform - pos: 0.5,1.5 - parent: 1 - - uid: 122 - components: - - type: Transform - pos: 2.5,4.5 - parent: 1 - - uid: 123 - components: - - type: Transform - pos: 3.5,4.5 - parent: 1 - - uid: 124 - components: - - type: Transform - pos: 3.5,3.5 - parent: 1 - - uid: 125 - components: - - type: Transform - pos: 3.5,2.5 - parent: 1 - - uid: 127 - components: - - type: Transform - pos: 4.5,2.5 - parent: 1 - - uid: 128 - components: - - type: Transform - pos: 2.5,1.5 - parent: 1 - - uid: 129 - components: - - type: Transform - pos: 2.5,0.5 - parent: 1 - - uid: 130 - components: - - type: Transform - pos: 2.5,-0.5 - parent: 1 - - uid: 131 - components: - - type: Transform - pos: 2.5,-1.5 - parent: 1 - - uid: 132 - components: - - type: Transform - pos: 3.5,-1.5 - parent: 1 - - uid: 133 - components: - - type: Transform - pos: 4.5,-1.5 - parent: 1 - - uid: 134 - components: - - type: Transform - pos: 4.5,-2.5 - parent: 1 - - uid: 135 - components: - - type: Transform - pos: 2.5,-2.5 - parent: 1 - - uid: 136 - components: - - type: Transform - pos: 2.5,-3.5 - parent: 1 - - uid: 137 - components: - - type: Transform - pos: 1.5,-3.5 - parent: 1 - - uid: 138 - components: - - type: Transform - pos: 0.5,-3.5 - parent: 1 - - uid: 139 - components: - - type: Transform - pos: -0.5,-3.5 - parent: 1 - - uid: 140 - components: - - type: Transform - pos: 0.5,-4.5 - parent: 1 - - uid: 141 - components: - - type: Transform - pos: 0.5,-5.5 - parent: 1 - - uid: 142 - components: - - type: Transform - pos: -0.5,-5.5 - parent: 1 - - uid: 143 - components: - - type: Transform - pos: 1.5,-5.5 - parent: 1 - - uid: 144 - components: - - type: Transform - pos: -1.5,-3.5 - parent: 1 - - uid: 145 - components: - - type: Transform - pos: -1.5,-2.5 - parent: 1 - - uid: 146 - components: - - type: Transform - pos: -2.5,-2.5 - parent: 1 - - uid: 147 - components: - - type: Transform - pos: -3.5,-2.5 - parent: 1 - - uid: 148 - components: - - type: Transform - pos: -3.5,-1.5 - parent: 1 - - uid: 149 - components: - - type: Transform - pos: -3.5,-0.5 - parent: 1 - - uid: 150 - components: - - type: Transform - pos: -2.5,-0.5 - parent: 1 - - uid: 151 - components: - - type: Transform - pos: -1.5,-0.5 - parent: 1 - - uid: 152 - components: - - type: Transform - pos: -0.5,-0.5 - parent: 1 - - uid: 153 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 - - uid: 154 - components: - - type: Transform - pos: 1.5,-0.5 - parent: 1 - - uid: 202 - components: - - type: Transform - pos: 1.5,2.5 - parent: 1 -- proto: CableHV - entities: - - uid: 93 - components: - - type: Transform - pos: 0.5,5.5 - parent: 1 - - uid: 97 - components: - - type: Transform - pos: 1.5,5.5 - parent: 1 - - uid: 98 - components: - - type: Transform - pos: 2.5,5.5 - parent: 1 -- proto: CableMV - entities: - - uid: 100 - components: - - type: Transform - pos: 2.5,5.5 - parent: 1 - - uid: 102 - components: - - type: Transform - pos: 2.5,4.5 - parent: 1 - - uid: 103 - components: - - type: Transform - pos: 2.5,3.5 - parent: 1 - - uid: 104 - components: - - type: Transform - pos: 2.5,2.5 - parent: 1 - - uid: 105 - components: - - type: Transform - pos: 1.5,2.5 - parent: 1 -- proto: CableTerminal - entities: - - uid: 99 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,5.5 - parent: 1 -- proto: Carpet - entities: - - uid: 198 - components: - - type: Transform - pos: -0.5,-3.5 - parent: 1 - - uid: 199 - components: - - type: Transform - pos: 1.5,-3.5 - parent: 1 - - uid: 200 - components: - - type: Transform - pos: 0.5,-3.5 - parent: 1 - - uid: 209 - components: - - type: Transform - pos: -1.5,-3.5 - parent: 1 - - uid: 242 - components: - - type: Transform - pos: -1.5,-1.5 - parent: 1 - - uid: 243 - components: - - type: Transform - pos: -1.5,-2.5 - parent: 1 - - uid: 244 - components: - - type: Transform - pos: -0.5,-1.5 - parent: 1 - - uid: 245 - components: - - type: Transform - pos: -0.5,-2.5 - parent: 1 - - uid: 246 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 - - uid: 247 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 - - uid: 248 - components: - - type: Transform - pos: 1.5,-1.5 - parent: 1 - - uid: 249 - components: - - type: Transform - pos: 1.5,-2.5 - parent: 1 - - uid: 250 - components: - - type: Transform - pos: 2.5,-1.5 - parent: 1 - - uid: 251 - components: - - type: Transform - pos: 2.5,-2.5 - parent: 1 - - uid: 267 - components: - - type: Transform - pos: 2.5,-3.5 - parent: 1 -- proto: ChairPilotSeat - entities: - - uid: 61 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,5.5 - parent: 1 -- proto: ClosetSteelBase - entities: - - uid: 227 - components: - - type: Transform - pos: 3.5,3.5 - parent: 1 - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 228 - - 229 - - 230 - - 231 - - 232 - - 233 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null -- proto: ClothingHeadHatBunny - entities: - - uid: 230 - components: - - type: Transform - parent: 227 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingHeadHatHoodNunHood - entities: - - uid: 228 - components: - - type: Transform - parent: 227 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingHeadHatPaper - entities: - - uid: 229 - components: - - type: Transform - parent: 227 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingHeadNurseHat - entities: - - uid: 231 - components: - - type: Transform - parent: 227 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingUniformJumpskirtJanimaid - entities: - - uid: 233 - components: - - type: Transform - parent: 227 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingUniformJumpskirtJanimaidmini - entities: - - uid: 232 - components: - - type: Transform - parent: 227 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ComfyChair - entities: - - uid: 253 - components: - - type: Transform - pos: 3.5,-1.5 - parent: 1 - - uid: 254 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-3.5 - parent: 1 - - uid: 255 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-4.5 - parent: 1 - - uid: 256 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-4.5 - parent: 1 - - uid: 257 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-4.5 - parent: 1 - - uid: 258 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-2.5 - parent: 1 - - uid: 259 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-2.5 - parent: 1 -- proto: ComputerShuttle - entities: - - uid: 13 - components: - - type: Transform - pos: -1.5,6.5 - parent: 1 -- proto: CrateFreezer - entities: - - uid: 155 - components: - - type: Transform - pos: 0.5,1.5 - parent: 1 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14673 - moles: - - 1.7459903 - - 6.568249 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 179 - - 175 - - 174 - - 173 - - 172 - - 171 - - 170 - - 169 - - 168 - - 167 - - 166 - - 165 - - 164 - - 163 - - 162 - - 161 - - 160 - - 159 - - 158 - - 157 - - 156 - - 177 - - 178 - - 180 - - 181 - - 182 - - 183 - - 184 - - 185 - - 268 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null -- proto: DeskBell - entities: - - uid: 260 - components: - - type: Transform - pos: -1.6395468,0.63742816 - parent: 1 -- proto: DisposalBend - entities: - - uid: 226 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-1.5 - parent: 1 -- proto: DisposalPipe - entities: - - uid: 220 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-1.5 - parent: 1 - - uid: 221 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-1.5 - parent: 1 - - uid: 222 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-1.5 - parent: 1 - - uid: 223 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-1.5 - parent: 1 - - uid: 224 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-1.5 - parent: 1 - - uid: 225 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-1.5 - parent: 1 - - uid: 234 - components: - - type: Transform - pos: 3.5,-0.5 - parent: 1 - - uid: 235 - components: - - type: Transform - pos: 3.5,0.5 - parent: 1 -- proto: DisposalTrunk - entities: - - uid: 219 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,-1.5 - parent: 1 - - uid: 309 - components: - - type: Transform - pos: 3.5,1.5 - parent: 1 -- proto: DisposalUnit - entities: - - uid: 236 - components: - - type: Transform - pos: -3.5,-1.5 - parent: 1 -- proto: DrinkCoffeeJug - entities: - - uid: 165 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 166 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 168 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: DrinkCoffeeLiqueurBottleFull - entities: - - uid: 164 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 177 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: DrinkCreamCartonXL - entities: - - uid: 159 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 160 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: DrinkEnergyDrinkCan - entities: - - uid: 171 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: DrinkEnergyDrinkJug - entities: - - uid: 181 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: DrinkGreenTeaJug - entities: - - uid: 161 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 163 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: DrinkHotCoffee - entities: - - uid: 193 - components: - - type: Transform - pos: -0.44626728,0.69677854 - parent: 1 - - uid: 194 - components: - - type: Transform - pos: -0.862934,0.44677854 - parent: 1 -- proto: DrinkIcedTeaJug - entities: - - uid: 162 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 180 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: DrinkJuiceOrangeCartonXL - entities: - - uid: 268 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: DrinkMilkCarton - entities: - - uid: 156 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 167 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: DrinkMugBlack - entities: - - uid: 187 - components: - - type: Transform - pos: 0.680774,2.8178902 - parent: 1 -- proto: DrinkMugBlue - entities: - - uid: 188 - components: - - type: Transform - pos: 0.8266072,2.5574732 - parent: 1 -- proto: DrinkMugDog - entities: - - uid: 189 - components: - - type: Transform - pos: 0.5349406,2.5887232 - parent: 1 -- proto: DrinkMugGreen - entities: - - uid: 190 - components: - - type: Transform - pos: 0.28494063,2.5158067 - parent: 1 -- proto: DrinkMugHeart - entities: - - uid: 191 - components: - - type: Transform - pos: 0.6599406,2.41164 - parent: 1 -- proto: DrinkMugMetal - entities: - - uid: 192 - components: - - type: Transform - pos: -1.206684,0.7071953 - parent: 1 -- proto: DrinkMugMoebius - entities: - - uid: 197 - components: - - type: Transform - pos: -2.2796004,2.7219782 - parent: 1 -- proto: DrinkMugOne - entities: - - uid: 186 - components: - - type: Transform - pos: 0.33702394,2.7658067 - parent: 1 -- proto: DrinkMugRainbow - entities: - - uid: 195 - components: - - type: Transform - pos: -0.112933904,0.42594528 - parent: 1 -- proto: DrinkMugRed - entities: - - uid: 196 - components: - - type: Transform - pos: -2.664929,2.7505994 - parent: 1 -- proto: DrinkOatMilkCarton - entities: - - uid: 158 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 178 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: DrinkRumBottleFull - entities: - - uid: 170 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: DrinkSoyMilkCarton - entities: - - uid: 157 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 169 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: DrinkTeacup - entities: - - uid: 206 - components: - - type: Transform - pos: 0.45998278,0.48844528 - parent: 1 - - uid: 210 - components: - - type: Transform - pos: 0.27248278,0.7071953 - parent: 1 - - uid: 214 - components: - - type: Transform - pos: -2.2796004,2.4615614 - parent: 1 - - uid: 216 - components: - - type: Transform - pos: 0.67873275,0.7071953 - parent: 1 - - uid: 217 - components: - - type: Transform - pos: -2.3316839,2.2219782 - parent: 1 -- proto: DrinkTeapot - entities: - - uid: 212 - components: - - type: Transform - pos: -2.6441839,2.3782282 - parent: 1 -- proto: Fireplace - entities: - - uid: 241 - components: - - type: Transform - pos: 1.5,-0.5 - parent: 1 -- proto: FloorDrain - entities: - - uid: 82 - components: - - type: Transform - pos: -0.5,2.5 - parent: 1 - - type: Fixtures - fixtures: {} -- proto: FoodBakedBunHoney - entities: - - uid: 183 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 184 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 185 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodBakedBunHotX - entities: - - uid: 172 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 175 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 179 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodBakedBunMeat - entities: - - uid: 173 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 174 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 182 - components: - - type: Transform - parent: 155 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: GasPassiveVent - entities: - - uid: 298 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeBend - entities: - - uid: 274 - components: - - type: Transform - pos: 2.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 275 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 283 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 296 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 297 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeStraight - entities: - - uid: 271 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 272 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 273 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 276 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 278 - components: - - type: Transform - pos: -1.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 279 - components: - - type: Transform - pos: -1.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 280 - components: - - type: Transform - pos: -1.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 281 - components: - - type: Transform - pos: -1.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 284 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 285 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 286 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 289 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 291 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 292 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 293 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 294 - components: - - type: Transform - pos: 2.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 295 - components: - - type: Transform - pos: 2.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 299 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 300 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 301 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeTJunction - entities: - - uid: 269 - components: - - type: Transform - pos: -1.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 277 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 282 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 287 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 288 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 290 - components: - - type: Transform - pos: -0.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPort - entities: - - uid: 91 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasVentPump - entities: - - uid: 203 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 211 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 213 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 218 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasVentScrubber - entities: - - uid: 205 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 207 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 262 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 270 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GeneratorBasic15kW - entities: - - uid: 94 - components: - - type: Transform - pos: 0.5,5.5 - parent: 1 -- proto: GravityGeneratorMini - entities: - - uid: 90 - components: - - type: Transform - pos: -2.5,5.5 - parent: 1 -- proto: Grille - entities: - - uid: 51 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,6.5 - parent: 1 - - uid: 52 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,7.5 - parent: 1 - - uid: 53 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,7.5 - parent: 1 - - uid: 54 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,7.5 - parent: 1 - - uid: 55 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,6.5 - parent: 1 - - uid: 71 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-5.5 - parent: 1 - - uid: 72 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-5.5 - parent: 1 - - uid: 73 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-5.5 - parent: 1 - - uid: 74 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,-1.5 - parent: 1 - - uid: 75 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,-2.5 - parent: 1 -- proto: Gyroscope - entities: - - uid: 89 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,5.5 - parent: 1 -- proto: Poweredlight - entities: - - uid: 302 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,3.5 - parent: 1 - - uid: 303 - components: - - type: Transform - pos: 0.5,2.5 - parent: 1 - - uid: 304 - components: - - type: Transform - pos: -2.5,-0.5 - parent: 1 - - uid: 305 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,1.5 - parent: 1 - - uid: 307 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,4.5 - parent: 1 -- proto: ShuttersWindowOpen - entities: - - uid: 208 - components: - - type: Transform - pos: -1.5,0.5 - parent: 1 - - uid: 215 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 - - uid: 263 - components: - - type: Transform - pos: -0.5,0.5 - parent: 1 -- proto: ShuttleWindow - entities: - - uid: 3 - components: - - type: Transform - pos: -1.5,7.5 - parent: 1 - - uid: 4 - components: - - type: Transform - pos: -2.5,6.5 - parent: 1 - - uid: 5 - components: - - type: Transform - pos: -0.5,7.5 - parent: 1 - - uid: 6 - components: - - type: Transform - pos: -0.5,6.5 - parent: 1 - - uid: 7 - components: - - type: Transform - pos: -2.5,7.5 - parent: 1 - - uid: 24 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,-1.5 - parent: 1 - - uid: 25 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,-2.5 - parent: 1 - - uid: 31 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-5.5 - parent: 1 - - uid: 32 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-5.5 - parent: 1 - - uid: 33 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-5.5 - parent: 1 -- proto: SignalButtonDirectional - entities: - - uid: 79 - components: - - type: MetaData - name: blast doors - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,0.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 56: - - Pressed: Toggle - 59: - - Pressed: Toggle - 58: - - Pressed: Toggle - - uid: 204 - components: - - type: MetaData - name: shutters - - type: Transform - pos: -2.5,3.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 208: - - Pressed: Toggle - 263: - - Pressed: Toggle - 215: - - Pressed: Toggle - - uid: 306 - components: - - type: MetaData - name: door bolt - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,1.5 - parent: 1 -- proto: SinkWide - entities: - - uid: 87 - components: - - type: Transform - pos: -0.5,2.5 - parent: 1 -- proto: SMESBasic - entities: - - uid: 95 - components: - - type: Transform - pos: 1.5,5.5 - parent: 1 -- proto: SodaDispenserEmpty - entities: - - uid: 9 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,1.5 - parent: 1 -- proto: SubstationBasic - entities: - - uid: 96 - components: - - type: Transform - pos: 2.5,5.5 - parent: 1 -- proto: TableCounterWood - entities: - - uid: 57 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,1.5 - parent: 1 - - uid: 62 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,0.5 - parent: 1 - - uid: 63 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,0.5 - parent: 1 - - uid: 64 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,0.5 - parent: 1 - - uid: 77 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,2.5 - parent: 1 -- proto: TableFancyBlack - entities: - - uid: 240 - components: - - type: Transform - pos: 2.5,-4.5 - parent: 1 -- proto: TableFancyGreen - entities: - - uid: 238 - components: - - type: Transform - pos: 3.5,-2.5 - parent: 1 - - uid: 239 - components: - - type: Transform - pos: -0.5,-4.5 - parent: 1 -- proto: TableFancyPink - entities: - - uid: 252 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 -- proto: TableWood - entities: - - uid: 88 - components: - - type: Transform - pos: 0.5,2.5 - parent: 1 -- proto: Thruster - entities: - - uid: 18 - components: - - type: Transform - pos: 4.5,5.5 - parent: 1 - - uid: 67 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,-0.5 - parent: 1 - - uid: 68 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,-4.5 - parent: 1 - - uid: 69 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,1.5 - parent: 1 -- proto: VisitorChefSpawner - entities: - - uid: 310 - components: - - type: Transform - pos: -1.5,5.5 - parent: 1 -- proto: WallShuttle - entities: - - uid: 2 - components: - - type: Transform - pos: -3.5,6.5 - parent: 1 - - uid: 8 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,3.5 - parent: 1 - - uid: 11 - components: - - type: Transform - pos: -3.5,2.5 - parent: 1 - - uid: 12 - components: - - type: Transform - pos: 0.5,6.5 - parent: 1 - - uid: 14 - components: - - type: Transform - pos: 1.5,6.5 - parent: 1 - - uid: 15 - components: - - type: Transform - pos: 2.5,6.5 - parent: 1 - - uid: 16 - components: - - type: Transform - pos: 3.5,6.5 - parent: 1 - - uid: 17 - components: - - type: Transform - pos: 3.5,5.5 - parent: 1 - - uid: 19 - components: - - type: Transform - pos: 4.5,4.5 - parent: 1 - - uid: 20 - components: - - type: Transform - pos: 5.5,4.5 - parent: 1 - - uid: 21 - components: - - type: Transform - pos: 5.5,0.5 - parent: 1 - - uid: 22 - components: - - type: Transform - pos: 4.5,0.5 - parent: 1 - - uid: 23 - components: - - type: Transform - pos: 4.5,-0.5 - parent: 1 - - uid: 26 - components: - - type: Transform - pos: 4.5,-3.5 - parent: 1 - - uid: 27 - components: - - type: Transform - pos: 4.5,-4.5 - parent: 1 - - uid: 28 - components: - - type: Transform - pos: 3.5,-4.5 - parent: 1 - - uid: 29 - components: - - type: Transform - pos: 3.5,-5.5 - parent: 1 - - uid: 30 - components: - - type: Transform - pos: 2.5,-5.5 - parent: 1 - - uid: 34 - components: - - type: Transform - pos: -1.5,-5.5 - parent: 1 - - uid: 35 - components: - - type: Transform - pos: -2.5,-5.5 - parent: 1 - - uid: 36 - components: - - type: Transform - pos: -2.5,-4.5 - parent: 1 - - uid: 37 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,-3.5 - parent: 1 - - uid: 38 - components: - - type: Transform - pos: -3.5,-3.5 - parent: 1 - - uid: 39 - components: - - type: Transform - pos: -4.5,-3.5 - parent: 1 - - uid: 40 - components: - - type: Transform - pos: -4.5,0.5 - parent: 1 - - uid: 41 - components: - - type: Transform - pos: -3.5,0.5 - parent: 1 - - uid: 42 - components: - - type: Transform - pos: -3.5,1.5 - parent: 1 - - uid: 47 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-1.5 - parent: 1 - - uid: 48 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,2.5 - parent: 1 - - uid: 49 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,4.5 - parent: 1 - - uid: 50 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,5.5 - parent: 1 -- proto: WallShuttleDiagonal - entities: - - uid: 60 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,4.5 - parent: 1 -- proto: WallShuttleInterior - entities: - - uid: 10 - components: - - type: Transform - pos: 0.5,3.5 - parent: 1 - - uid: 65 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,0.5 - parent: 1 - - uid: 66 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,0.5 - parent: 1 - - uid: 70 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,0.5 - parent: 1 - - uid: 76 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,1.5 - parent: 1 - - uid: 78 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,2.5 - parent: 1 - - uid: 80 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,3.5 - parent: 1 - - uid: 83 - components: - - type: Transform - pos: -0.5,3.5 - parent: 1 - - uid: 84 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,3.5 - parent: 1 -... diff --git a/Resources/Maps/Shuttles/ShuttleEvent/lambordeere.yml b/Resources/Maps/Shuttles/ShuttleEvent/lambordeere.yml deleted file mode 100644 index fcb40acdf45..00000000000 --- a/Resources/Maps/Shuttles/ShuttleEvent/lambordeere.yml +++ /dev/null @@ -1,1637 +0,0 @@ -meta: - format: 6 - postmapinit: false -tilemap: - 0: Space - 32: FloorDark - 1: FloorMetalDiamond - 74: FloorMowedAstroGrass - 96: FloorSteel - 108: FloorSteelOffset - 111: FloorTechMaint - 112: FloorTechMaint2 - 128: Lattice - 129: Plating -entities: -- proto: "" - entities: - - uid: 1 - components: - - type: MetaData - name: NT-Lambordeere - - type: Transform - pos: -0.453125,-0.4375 - parent: invalid - - type: MapGrid - chunks: - 0,0: - ind: 0,0 - tiles: bwAAAAAAbAAAAAAAbAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAbAAAAAAAbAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAbAAAAAAAbAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAbAAAAAAAbAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbAAAAAAAbAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAbAAAAAAAbAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAIAAAAAACgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 0,-1: - ind: 0,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAACbAAAAAAAbAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAbAAAAAAAbAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -1,0: - ind: -1,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAASgAAAAAASgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAASgAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -1,-1: - ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAYAAAAAABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAASgAAAAAASgAAAAAA - version: 6 - - type: Broadphase - - type: Physics - bodyStatus: InAir - angularDamping: 0.05 - linearDamping: 0.05 - fixedRotation: False - bodyType: Dynamic - - type: Fixtures - fixtures: {} - - type: OccluderTree - - type: SpreaderGrid - - type: Shuttle - - type: GridPathfinding - - type: Gravity - gravityShakeSound: !type:SoundPathSpecifier - path: /Audio/Effects/alert.ogg - - type: DecalGrid - chunkCollection: - version: 2 - nodes: - - node: - color: '#9FED5896' - id: BrickTileSteelCornerNe - decals: - 31: 2,5 - - node: - color: '#9FED5896' - id: BrickTileSteelCornerNw - decals: - 30: 1,5 - - node: - color: '#9FED5896' - id: BrickTileSteelCornerSe - decals: - 36: 2,-2 - - node: - color: '#9FED5896' - id: BrickTileSteelCornerSw - decals: - 25: 1,-2 - - node: - color: '#9FED5896' - id: BrickTileSteelLineE - decals: - 21: 2,4 - 22: 2,3 - 23: 2,1 - 24: 2,-1 - 32: 2,2 - 33: 2,0 - - node: - color: '#9FED5896' - id: BrickTileSteelLineW - decals: - 26: 1,-1 - 27: 1,1 - 28: 1,2 - 29: 1,3 - 34: 1,0 - 35: 1,4 - - node: - color: '#43990996' - id: BrickTileWhiteCornerSw - decals: - 18: 0,6 - - node: - color: '#43990996' - id: BrickTileWhiteEndE - decals: - 19: 1,6 - - node: - color: '#43990996' - id: BrickTileWhiteEndN - decals: - 17: 0,7 - - node: - color: '#43990996' - id: BrickTileWhiteInnerNe - decals: - 20: 0,6 - - node: - color: '#FFFFFFFF' - id: Bushe1 - decals: - 12: -2.2425046,-0.9936445 - - node: - color: '#FFFFFFFF' - id: Bushe2 - decals: - 11: -1.9768796,-0.6030195 - - node: - color: '#FFFFFFFF' - id: Bushe3 - decals: - 4: -2.3518796,2.7563555 - - node: - color: '#FFFFFFFF' - id: Bushe4 - decals: - 13: -1.8206296,-1.0092695 - - node: - color: '#FFFFFFFF' - id: Bushi1 - decals: - 0: -0.6956296,-1.3217695 - 2: -2.2268796,2.9126055 - 5: -2.1487546,1.1938555 - 6: -2.1956296,5.2251053 - 8: -2.2737546,4.5376053 - 14: -1.2737546,-1.2905195 - 15: -2.1956296,0.25635552 - 16: -1.5862546,1.2251055 - - node: - color: '#FFFFFFFF' - id: Bushi3 - decals: - 1: -2.3206296,3.4594805 - 7: -1.7112546,5.2719803 - 10: -2.2737546,0.7876055 - - node: - color: '#FFFFFFFF' - id: Bushi4 - decals: - 3: -1.8675046,2.6157305 - 9: -1.6800046,4.4907303 - - type: GridAtmosphere - version: 2 - data: - tiles: - 0,0: - 0: 28271 - -1,0: - 0: 49356 - 0,1: - 0: 4967 - 1: 32768 - -1,1: - 0: 76 - 1: 8192 - 0,-1: - 0: 26231 - 0,2: - 1: 4 - 0,-2: - 1: 54784 - -1,-2: - 1: 27648 - -1,-1: - 0: 49356 - -1,2: - 1: 4 - uniqueMixes: - - volume: 2500 - temperature: 293.15 - moles: - - 21.824879 - - 82.10312 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - immutable: True - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - chunkSize: 4 - - type: GasTileOverlay - - type: RadiationGridResistance -- proto: AirCanister - entities: - - uid: 2 - components: - - type: Transform - anchored: True - pos: -0.5,-2.5 - parent: 1 - - type: Physics - bodyType: Static -- proto: AirlockExternalGlassShuttleLocked - entities: - - uid: 9 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,2.5 - parent: 1 - - uid: 12 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,0.5 - parent: 1 -- proto: AirlockMaintGlassLocked - entities: - - uid: 50 - components: - - type: Transform - pos: 0.5,4.5 - parent: 1 - - type: DoorBolt - boltsDown: True - - uid: 82 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 - - type: DoorBolt - boltsDown: True -- proto: APCBasic - entities: - - uid: 107 - components: - - type: Transform - pos: 2.5,6.5 - parent: 1 -- proto: AtmosDeviceFanDirectional - entities: - - uid: 128 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,2.5 - parent: 1 - - uid: 129 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,0.5 - parent: 1 -- proto: Bucket - entities: - - uid: 211 - components: - - type: Transform - pos: 2.7511053,3.5078604 - parent: 1 -- proto: ButtonFrameCaution - entities: - - uid: 196 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,5.5 - parent: 1 - - uid: 197 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,2.5 - parent: 1 -- proto: CableApcExtension - entities: - - uid: 150 - components: - - type: Transform - pos: 2.5,6.5 - parent: 1 - - uid: 151 - components: - - type: Transform - pos: 1.5,6.5 - parent: 1 - - uid: 152 - components: - - type: Transform - pos: 1.5,7.5 - parent: 1 - - uid: 153 - components: - - type: Transform - pos: 1.5,8.5 - parent: 1 - - uid: 154 - components: - - type: Transform - pos: 0.5,8.5 - parent: 1 - - uid: 155 - components: - - type: Transform - pos: -0.5,8.5 - parent: 1 - - uid: 156 - components: - - type: Transform - pos: -0.5,7.5 - parent: 1 - - uid: 157 - components: - - type: Transform - pos: 1.5,5.5 - parent: 1 - - uid: 158 - components: - - type: Transform - pos: 1.5,4.5 - parent: 1 - - uid: 159 - components: - - type: Transform - pos: 1.5,3.5 - parent: 1 - - uid: 160 - components: - - type: Transform - pos: 1.5,2.5 - parent: 1 - - uid: 161 - components: - - type: Transform - pos: 1.5,1.5 - parent: 1 - - uid: 162 - components: - - type: Transform - pos: 1.5,0.5 - parent: 1 - - uid: 163 - components: - - type: Transform - pos: 1.5,-0.5 - parent: 1 - - uid: 164 - components: - - type: Transform - pos: 1.5,-1.5 - parent: 1 - - uid: 165 - components: - - type: Transform - pos: 1.5,-2.5 - parent: 1 - - uid: 166 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 - - uid: 167 - components: - - type: Transform - pos: -0.5,-2.5 - parent: 1 - - uid: 168 - components: - - type: Transform - pos: -0.5,-3.5 - parent: 1 - - uid: 169 - components: - - type: Transform - pos: 1.5,-3.5 - parent: 1 - - uid: 170 - components: - - type: Transform - pos: 0.5,4.5 - parent: 1 - - uid: 171 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 - - uid: 172 - components: - - type: Transform - pos: 0.5,1.5 - parent: 1 - - uid: 173 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 - - uid: 174 - components: - - type: Transform - pos: 0.5,3.5 - parent: 1 - - uid: 186 - components: - - type: Transform - pos: -0.5,0.5 - parent: 1 - - uid: 187 - components: - - type: Transform - pos: -1.5,0.5 - parent: 1 - - uid: 188 - components: - - type: Transform - pos: -2.5,0.5 - parent: 1 - - uid: 189 - components: - - type: Transform - pos: -2.5,4.5 - parent: 1 - - uid: 190 - components: - - type: Transform - pos: -1.5,4.5 - parent: 1 - - uid: 191 - components: - - type: Transform - pos: -0.5,4.5 - parent: 1 - - uid: 194 - components: - - type: Transform - pos: 2.5,4.5 - parent: 1 - - uid: 195 - components: - - type: Transform - pos: 3.5,4.5 - parent: 1 -- proto: CableHV - entities: - - uid: 132 - components: - - type: Transform - pos: 0.5,-3.5 - parent: 1 - - uid: 133 - components: - - type: Transform - pos: -0.5,-3.5 - parent: 1 - - uid: 134 - components: - - type: Transform - pos: -0.5,-2.5 - parent: 1 - - uid: 135 - components: - - type: Transform - pos: -1.5,-2.5 - parent: 1 -- proto: CableMV - entities: - - uid: 136 - components: - - type: Transform - pos: -1.5,-2.5 - parent: 1 - - uid: 137 - components: - - type: Transform - pos: -0.5,-2.5 - parent: 1 - - uid: 138 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 - - uid: 139 - components: - - type: Transform - pos: 1.5,-2.5 - parent: 1 - - uid: 140 - components: - - type: Transform - pos: 1.5,-1.5 - parent: 1 - - uid: 141 - components: - - type: Transform - pos: 1.5,-0.5 - parent: 1 - - uid: 142 - components: - - type: Transform - pos: 1.5,0.5 - parent: 1 - - uid: 143 - components: - - type: Transform - pos: 1.5,1.5 - parent: 1 - - uid: 144 - components: - - type: Transform - pos: 1.5,2.5 - parent: 1 - - uid: 145 - components: - - type: Transform - pos: 1.5,3.5 - parent: 1 - - uid: 146 - components: - - type: Transform - pos: 1.5,4.5 - parent: 1 - - uid: 147 - components: - - type: Transform - pos: 1.5,5.5 - parent: 1 - - uid: 148 - components: - - type: Transform - pos: 2.5,5.5 - parent: 1 - - uid: 149 - components: - - type: Transform - pos: 2.5,6.5 - parent: 1 -- proto: CableTerminal - entities: - - uid: 131 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-3.5 - parent: 1 -- proto: ChairPilotSeat - entities: - - uid: 130 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,6.5 - parent: 1 -- proto: ClothingHeadHatCowboyBrown - entities: - - uid: 215 - components: - - type: Transform - pos: 2.7094386,5.82036 - parent: 1 -- proto: ClothingShoesBootsCowboyBrown - entities: - - uid: 214 - components: - - type: Transform - pos: 2.3865218,5.549527 - parent: 1 -- proto: ComputerShuttle - entities: - - uid: 79 - components: - - type: Transform - pos: 0.5,7.5 - parent: 1 -- proto: CrateNPCChicken - entities: - - uid: 108 - components: - - type: Transform - pos: -1.5,5.5 - parent: 1 - - type: EntityStorage - open: True - removedMasks: 28 - - type: Fixtures - fixtures: - fix1: - shape: !type:PolygonShape - radius: 0.01 - vertices: - - -0.4,-0.4 - - 0.4,-0.4 - - 0.4,0.29 - - -0.4,0.29 - mask: - - Impassable - - HighImpassable - - LowImpassable - layer: - - BulletImpassable - - Opaque - density: 135 - hard: True - restitution: 0 - friction: 0.4 - - type: PlaceableSurface - isPlaceable: True -- proto: GasPassiveVent - entities: - - uid: 55 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeBend - entities: - - uid: 62 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 64 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 94 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 119 - components: - - type: Transform - pos: 2.5,6.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeStraight - entities: - - uid: 48 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 61 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 63 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 96 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 97 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 98 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 99 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 101 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 102 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 104 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 106 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 110 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 111 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 112 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 113 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 114 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 115 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 116 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,5.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 117 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,5.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 118 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,6.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeTJunction - entities: - - uid: 59 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 60 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 95 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 100 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 103 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 105 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasPort - entities: - - uid: 58 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasVentPump - entities: - - uid: 56 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 121 - components: - - type: Transform - pos: 1.5,6.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 122 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 123 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasVentScrubber - entities: - - uid: 57 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 120 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,6.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 124 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 125 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GeneratorBasic15kW - entities: - - uid: 54 - components: - - type: Transform - pos: 0.5,-3.5 - parent: 1 -- proto: GravityGeneratorMini - entities: - - uid: 69 - components: - - type: Transform - pos: 1.5,-3.5 - parent: 1 -- proto: Grille - entities: - - uid: 4 - components: - - type: Transform - pos: -0.5,7.5 - parent: 1 - - uid: 5 - components: - - type: Transform - pos: 1.5,8.5 - parent: 1 - - uid: 7 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,0.5 - parent: 1 - - uid: 43 - components: - - type: Transform - pos: 1.5,7.5 - parent: 1 - - uid: 46 - components: - - type: Transform - pos: -0.5,8.5 - parent: 1 - - uid: 47 - components: - - type: Transform - pos: 0.5,8.5 - parent: 1 - - uid: 51 - components: - - type: Transform - pos: 0.5,3.5 - parent: 1 - - uid: 73 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 - - uid: 74 - components: - - type: Transform - pos: 0.5,1.5 - parent: 1 - - uid: 183 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,4.5 - parent: 1 - - uid: 193 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,4.5 - parent: 1 -- proto: Gyroscope - entities: - - uid: 68 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-2.5 - parent: 1 -- proto: hydroponicsSoil - entities: - - uid: 201 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-0.5 - parent: 1 - - uid: 203 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,3.5 - parent: 1 -- proto: HydroponicsToolClippers - entities: - - uid: 208 - components: - - type: Transform - pos: 2.4929435,-1.0246379 - parent: 1 -- proto: HydroponicsToolMiniHoe - entities: - - uid: 209 - components: - - type: Transform - pos: 2.47211,-1.4204712 - parent: 1 -- proto: HydroponicsToolSpade - entities: - - uid: 210 - components: - - type: Transform - pos: 2.5866935,-1.3683879 - parent: 1 -- proto: PetCarrier - entities: - - uid: 200 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,4.5 - parent: 1 - - uid: 202 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-0.5 - parent: 1 -- proto: PlasmaReinforcedWindowDirectional - entities: - - uid: 66 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-4.5 - parent: 1 -- proto: Poweredlight - entities: - - uid: 25 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-0.5 - parent: 1 - - uid: 29 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,3.5 - parent: 1 - - uid: 175 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,6.5 - parent: 1 - - uid: 176 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-4.5 - parent: 1 - - uid: 177 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,1.5 - parent: 1 - - uid: 178 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,6.5 - parent: 1 -- proto: ShuttleWindow - entities: - - uid: 85 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,7.5 - parent: 1 - - uid: 86 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,8.5 - parent: 1 - - uid: 87 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,8.5 - parent: 1 - - uid: 88 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,8.5 - parent: 1 - - uid: 89 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,7.5 - parent: 1 - - uid: 179 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,4.5 - parent: 1 - - uid: 180 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,0.5 - parent: 1 - - uid: 192 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,4.5 - parent: 1 -- proto: SignalButtonDirectional - entities: - - uid: 198 - components: - - type: MetaData - name: door bolts - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,5.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 50: - - Pressed: DoorBolt - - uid: 199 - components: - - type: MetaData - name: door bolts - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,2.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 82: - - Pressed: DoorBolt -- proto: SMESBasic - entities: - - uid: 65 - components: - - type: Transform - pos: -0.5,-3.5 - parent: 1 -- proto: SpawnMobCow - entities: - - uid: 109 - components: - - type: Transform - pos: -1.5,1.5 - parent: 1 - - uid: 212 - components: - - type: Transform - pos: -0.5,1.5 - parent: 1 -- proto: SubstationBasic - entities: - - uid: 67 - components: - - type: Transform - pos: -1.5,-2.5 - parent: 1 -- proto: Table - entities: - - uid: 182 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,5.5 - parent: 1 -- proto: TableCounterMetal - entities: - - uid: 184 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-1.5 - parent: 1 - - uid: 185 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-0.5 - parent: 1 -- proto: Thruster - entities: - - uid: 38 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-4.5 - parent: 1 - - uid: 39 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-5.5 - parent: 1 - - uid: 40 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-5.5 - parent: 1 - - uid: 41 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-4.5 - parent: 1 - - uid: 90 - components: - - type: Transform - pos: 2.5,8.5 - parent: 1 - - uid: 91 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,7.5 - parent: 1 - - uid: 92 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,7.5 - parent: 1 - - uid: 93 - components: - - type: Transform - pos: -1.5,8.5 - parent: 1 -- proto: VisitorBotanistSpawner - entities: - - uid: 213 - components: - - type: Transform - pos: 0.5,6.5 - parent: 1 -- proto: WallShuttle - entities: - - uid: 3 - components: - - type: Transform - pos: -2.5,5.5 - parent: 1 - - uid: 8 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,3.5 - parent: 1 - - uid: 10 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,1.5 - parent: 1 - - uid: 11 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,-0.5 - parent: 1 - - uid: 13 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-1.5 - parent: 1 - - uid: 14 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-2.5 - parent: 1 - - uid: 15 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-3.5 - parent: 1 - - uid: 16 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-4.5 - parent: 1 - - uid: 17 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-4.5 - parent: 1 - - uid: 19 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-5.5 - parent: 1 - - uid: 21 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-3.5 - parent: 1 - - uid: 22 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-2.5 - parent: 1 - - uid: 23 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-1.5 - parent: 1 - - uid: 24 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-0.5 - parent: 1 - - uid: 26 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,1.5 - parent: 1 - - uid: 27 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,2.5 - parent: 1 - - uid: 28 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,3.5 - parent: 1 - - uid: 42 - components: - - type: Transform - pos: -2.5,6.5 - parent: 1 - - uid: 44 - components: - - type: Transform - pos: 2.5,6.5 - parent: 1 - - uid: 45 - components: - - type: Transform - pos: 2.5,7.5 - parent: 1 - - uid: 76 - components: - - type: Transform - pos: -0.5,6.5 - parent: 1 - - uid: 77 - components: - - type: Transform - pos: 3.5,5.5 - parent: 1 - - uid: 78 - components: - - type: Transform - pos: 3.5,6.5 - parent: 1 - - uid: 80 - components: - - type: Transform - pos: -1.5,6.5 - parent: 1 - - uid: 81 - components: - - type: Transform - pos: -1.5,7.5 - parent: 1 -- proto: WallShuttleDiagonal - entities: - - uid: 18 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-4.5 - parent: 1 - - uid: 20 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-5.5 - parent: 1 - - uid: 30 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-5.5 - parent: 1 - - uid: 31 - components: - - type: Transform - pos: 2.5,-3.5 - parent: 1 - - uid: 32 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-4.5 - parent: 1 - - uid: 33 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,-3.5 - parent: 1 -- proto: WallShuttleInterior - entities: - - uid: 6 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,5.5 - parent: 1 - - uid: 34 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-1.5 - parent: 1 - - uid: 35 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-1.5 - parent: 1 - - uid: 52 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,5.5 - parent: 1 - - uid: 53 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-1.5 - parent: 1 - - uid: 71 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,2.5 - parent: 1 - - uid: 75 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,2.5 - parent: 1 - - uid: 84 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,2.5 - parent: 1 -- proto: WheatSeeds - entities: - - uid: 204 - components: - - type: Transform - pos: 2.3991933,-0.36838794 - parent: 1 - - uid: 205 - components: - - type: Transform - pos: 2.6491935,-0.55588794 - parent: 1 - - uid: 206 - components: - - type: Transform - pos: 2.3783603,-0.58713794 - parent: 1 - - uid: 207 - components: - - type: Transform - pos: 2.6491935,-0.7954712 - parent: 1 -- proto: WindoorSecure - entities: - - uid: 36 - components: - - type: Transform - pos: 1.5,-1.5 - parent: 1 - - uid: 49 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,5.5 - parent: 1 - - uid: 126 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,0.5 - parent: 1 - - uid: 127 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,2.5 - parent: 1 -- proto: Window - entities: - - uid: 70 - components: - - type: Transform - pos: 0.5,3.5 - parent: 1 - - uid: 72 - components: - - type: Transform - pos: 0.5,1.5 - parent: 1 - - uid: 83 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 -- proto: WindowReinforcedDirectional - entities: - - uid: 37 - components: - - type: Transform - pos: 2.5,-1.5 - parent: 1 -- proto: Wrench - entities: - - uid: 181 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.46605706,-2.5210748 - parent: 1 -... diff --git a/Resources/Maps/Shuttles/ShuttleEvent/lost_cargo.yml b/Resources/Maps/Shuttles/ShuttleEvent/lost_cargo.yml deleted file mode 100644 index e670cc638bf..00000000000 --- a/Resources/Maps/Shuttles/ShuttleEvent/lost_cargo.yml +++ /dev/null @@ -1,1367 +0,0 @@ -meta: - format: 6 - postmapinit: false -tilemap: - 0: Space - 54: FloorGreenCircuit - 85: FloorShuttleWhite - 89: FloorSteel - 104: FloorTechMaint - 121: Plating -entities: -- proto: "" - entities: - - uid: 1 - components: - - type: MetaData - name: Cargo shuttle - - type: Transform - pos: 2.2710133,-2.4148211 - parent: invalid - - type: MapGrid - chunks: - -1,0: - ind: -1,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAVQAAAAAANgAAAAAAVQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAANgAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 0,0: - ind: 0,0 - tiles: WQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -1,-1: - ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAaAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAAWQAAAAAA - version: 6 - 0,-1: - ind: 0,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - - type: Broadphase - - type: Physics - bodyStatus: InAir - angularDamping: 0.05 - linearDamping: 0.05 - fixedRotation: False - bodyType: Dynamic - - type: Fixtures - fixtures: {} - - type: Gravity - gravityShakeSound: !type:SoundPathSpecifier - path: /Audio/Effects/alert.ogg - - type: CargoShuttle - - type: DecalGrid - chunkCollection: - version: 2 - nodes: - - node: - color: '#FFFFFFFF' - id: Bot - decals: - 0: -5,5 - 1: -4,5 - 2: -1,5 - 3: -1,-1 - 4: -2,-1 - 5: -4,-1 - 6: -1,2 - 7: -4,2 - 8: -5,2 - - node: - color: '#9FED5896' - id: CheckerNESW - decals: - 9: -3,-1 - 10: -3,0 - 11: -3,1 - 12: -3,2 - 13: -3,3 - 14: -3,4 - 15: -3,5 - - node: - color: '#9FED5896' - id: MiniTileWhiteCornerNe - decals: - 29: -1,5 - 30: -2,6 - - node: - color: '#9FED5896' - id: MiniTileWhiteCornerNw - decals: - 19: -5,5 - 20: -4,6 - - node: - color: '#9FED5896' - id: MiniTileWhiteCornerSe - decals: - 21: -1,-1 - - node: - color: '#9FED5896' - id: MiniTileWhiteCornerSw - decals: - 22: -5,-1 - - node: - color: '#9FED5896' - id: MiniTileWhiteInnerNe - decals: - 33: -2,5 - - node: - color: '#9FED5896' - id: MiniTileWhiteInnerNw - decals: - 32: -4,5 - - node: - color: '#9FED5896' - id: MiniTileWhiteLineE - decals: - 26: -1,0 - 27: -1,2 - 28: -1,4 - - node: - color: '#9FED5896' - id: MiniTileWhiteLineN - decals: - 31: -3,6 - - node: - color: '#9FED5896' - id: MiniTileWhiteLineS - decals: - 23: -4,-1 - 24: -3,-1 - 25: -2,-1 - - node: - color: '#9FED5896' - id: MiniTileWhiteLineW - decals: - 16: -5,0 - 17: -5,2 - 18: -5,4 - - node: - color: '#9FED5896' - id: WarnLineE - decals: - 36: -1,1 - 37: -1,3 - - node: - color: '#9FED5896' - id: WarnLineS - decals: - 34: -5,1 - 35: -5,3 - - type: GridAtmosphere - version: 2 - data: - tiles: - -2,0: - 0: 51400 - -2,1: - 0: 16520 - -2,-1: - 0: 32832 - -1,0: - 0: 65535 - -1,1: - 0: 30719 - -2,2: - 0: 128 - -1,-1: - 0: 63346 - -1,2: - 0: 130 - 0,0: - 0: 4112 - 0,1: - 0: 4096 - -2,-2: - 0: 32768 - -1,-2: - 0: 32768 - 0,-1: - 0: 16 - uniqueMixes: - - volume: 2500 - temperature: 293.15 - moles: - - 21.824879 - - 82.10312 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - chunkSize: 4 - - type: OccluderTree - - type: Shuttle - - type: GridPathfinding - - type: RadiationGridResistance - - type: SpreaderGrid - - type: GravityShake - shakeTimes: 10 - - type: GasTileOverlay -- proto: AirCanister - entities: - - uid: 2 - components: - - type: Transform - pos: -3.5,-1.5 - parent: 1 -- proto: AirlockGlassShuttle - entities: - - uid: 3 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,3.5 - parent: 1 - - uid: 4 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,1.5 - parent: 1 - - uid: 5 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,3.5 - parent: 1 - - uid: 6 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,1.5 - parent: 1 -- proto: APCHyperCapacity - entities: - - uid: 7 - components: - - type: Transform - pos: -0.5,6.5 - parent: 1 -- proto: AtmosDeviceFanDirectional - entities: - - uid: 8 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,3.5 - parent: 1 - - uid: 9 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,1.5 - parent: 1 - - uid: 10 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,1.5 - parent: 1 - - uid: 11 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,3.5 - parent: 1 -- proto: BlastDoor - entities: - - uid: 12 - components: - - type: Transform - pos: 0.5,4.5 - parent: 1 - - uid: 13 - components: - - type: Transform - pos: -5.5,0.5 - parent: 1 - - uid: 14 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 - - uid: 15 - components: - - type: Transform - pos: -5.5,4.5 - parent: 1 -- proto: BoxMRE - entities: - - uid: 93 - components: - - type: Transform - pos: -1.3692467,7.6214685 - parent: 1 -- proto: CableApcExtension - entities: - - uid: 16 - components: - - type: Transform - pos: -0.5,6.5 - parent: 1 - - uid: 17 - components: - - type: Transform - pos: -1.5,6.5 - parent: 1 - - uid: 18 - components: - - type: Transform - pos: -2.5,6.5 - parent: 1 - - uid: 19 - components: - - type: Transform - pos: -2.5,5.5 - parent: 1 - - uid: 20 - components: - - type: Transform - pos: -2.5,8.5 - parent: 1 - - uid: 21 - components: - - type: Transform - pos: -3.5,8.5 - parent: 1 - - uid: 22 - components: - - type: Transform - pos: -1.5,8.5 - parent: 1 - - uid: 23 - components: - - type: Transform - pos: -3.5,6.5 - parent: 1 - - uid: 24 - components: - - type: Transform - pos: -3.5,7.5 - parent: 1 - - uid: 25 - components: - - type: Transform - pos: -2.5,4.5 - parent: 1 - - uid: 26 - components: - - type: Transform - pos: -2.5,3.5 - parent: 1 - - uid: 27 - components: - - type: Transform - pos: -2.5,2.5 - parent: 1 - - uid: 28 - components: - - type: Transform - pos: -2.5,1.5 - parent: 1 - - uid: 29 - components: - - type: Transform - pos: -2.5,0.5 - parent: 1 - - uid: 30 - components: - - type: Transform - pos: -2.5,-0.5 - parent: 1 - - uid: 31 - components: - - type: Transform - pos: -2.5,-1.5 - parent: 1 - - uid: 32 - components: - - type: Transform - pos: -1.5,-4.5 - parent: 1 - - uid: 33 - components: - - type: Transform - pos: -1.5,-1.5 - parent: 1 - - uid: 34 - components: - - type: Transform - pos: -1.5,-2.5 - parent: 1 - - uid: 35 - components: - - type: Transform - pos: -2.5,-4.5 - parent: 1 - - uid: 36 - components: - - type: Transform - pos: -1.5,-3.5 - parent: 1 - - uid: 37 - components: - - type: Transform - pos: -3.5,-4.5 - parent: 1 - - uid: 38 - components: - - type: Transform - pos: -3.5,-3.5 - parent: 1 - - uid: 39 - components: - - type: Transform - pos: -4.5,7.5 - parent: 1 - - uid: 40 - components: - - type: Transform - pos: -0.5,7.5 - parent: 1 - - uid: 41 - components: - - type: Transform - pos: -1.5,3.5 - parent: 1 - - uid: 42 - components: - - type: Transform - pos: -0.5,3.5 - parent: 1 - - uid: 43 - components: - - type: Transform - pos: -1.5,1.5 - parent: 1 - - uid: 44 - components: - - type: Transform - pos: -0.5,1.5 - parent: 1 - - uid: 45 - components: - - type: Transform - pos: -3.5,1.5 - parent: 1 - - uid: 46 - components: - - type: Transform - pos: -4.5,1.5 - parent: 1 - - uid: 47 - components: - - type: Transform - pos: -3.5,3.5 - parent: 1 - - uid: 48 - components: - - type: Transform - pos: -4.5,3.5 - parent: 1 - - uid: 49 - components: - - type: Transform - pos: -4.5,-3.5 - parent: 1 -- proto: CableHV - entities: - - uid: 50 - components: - - type: Transform - pos: -1.5,-2.5 - parent: 1 - - uid: 51 - components: - - type: Transform - pos: -2.5,-2.5 - parent: 1 - - uid: 52 - components: - - type: Transform - pos: -2.5,-3.5 - parent: 1 -- proto: CableMV - entities: - - uid: 53 - components: - - type: Transform - pos: -1.5,-2.5 - parent: 1 - - uid: 54 - components: - - type: Transform - pos: -1.5,-1.5 - parent: 1 - - uid: 55 - components: - - type: Transform - pos: -2.5,-1.5 - parent: 1 - - uid: 56 - components: - - type: Transform - pos: -2.5,-0.5 - parent: 1 - - uid: 57 - components: - - type: Transform - pos: -2.5,0.5 - parent: 1 - - uid: 58 - components: - - type: Transform - pos: -2.5,1.5 - parent: 1 - - uid: 59 - components: - - type: Transform - pos: -2.5,2.5 - parent: 1 - - uid: 60 - components: - - type: Transform - pos: -2.5,3.5 - parent: 1 - - uid: 61 - components: - - type: Transform - pos: -2.5,4.5 - parent: 1 - - uid: 62 - components: - - type: Transform - pos: -2.5,5.5 - parent: 1 - - uid: 63 - components: - - type: Transform - pos: -2.5,6.5 - parent: 1 - - uid: 64 - components: - - type: Transform - pos: -1.5,6.5 - parent: 1 - - uid: 65 - components: - - type: Transform - pos: -0.5,6.5 - parent: 1 -- proto: CableTerminal - entities: - - uid: 66 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-3.5 - parent: 1 -- proto: Catwalk - entities: - - uid: 67 - components: - - type: Transform - pos: -1.5,-0.5 - parent: 1 - - uid: 68 - components: - - type: Transform - pos: -0.5,-0.5 - parent: 1 - - uid: 71 - components: - - type: Transform - pos: -4.5,2.5 - parent: 1 - - uid: 72 - components: - - type: Transform - pos: -3.5,2.5 - parent: 1 - - uid: 73 - components: - - type: Transform - pos: -3.5,5.5 - parent: 1 - - uid: 74 - components: - - type: Transform - pos: -4.5,5.5 - parent: 1 - - uid: 75 - components: - - type: Transform - pos: -3.5,-0.5 - parent: 1 - - uid: 76 - components: - - type: Transform - pos: -4.5,-0.5 - parent: 1 - - uid: 77 - components: - - type: Transform - pos: -1.5,5.5 - parent: 1 - - uid: 78 - components: - - type: Transform - pos: -0.5,5.5 - parent: 1 -- proto: ChairPilotSeat - entities: - - uid: 70 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,2.5 - parent: 1 - - uid: 79 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,7.5 - parent: 1 -- proto: ComputerShuttle - entities: - - uid: 80 - components: - - type: Transform - pos: -2.5,8.5 - parent: 1 -- proto: ConveyorBelt - entities: - - uid: 81 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,4.5 - parent: 1 - - uid: 82 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,4.5 - parent: 1 - - uid: 83 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,4.5 - parent: 1 - - uid: 84 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,0.5 - parent: 1 - - uid: 85 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,0.5 - parent: 1 - - uid: 86 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,0.5 - parent: 1 - - uid: 87 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,0.5 - parent: 1 - - uid: 88 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,4.5 - parent: 1 - - uid: 89 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,4.5 - parent: 1 - - uid: 90 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,4.5 - parent: 1 - - uid: 91 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,0.5 - parent: 1 - - uid: 92 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,0.5 - parent: 1 -- proto: CrateFilledSpawner - entities: - - uid: 95 - components: - - type: Transform - pos: -0.5,-0.5 - parent: 1 - - uid: 96 - components: - - type: Transform - pos: -4.5,2.5 - parent: 1 - - uid: 97 - components: - - type: Transform - pos: -0.5,5.5 - parent: 1 - - uid: 98 - components: - - type: Transform - pos: -3.5,2.5 - parent: 1 -- proto: DrinkBeerBottleFull - entities: - - uid: 99 - components: - - type: Transform - pos: -3.2915764,7.812316 - parent: 1 - - uid: 100 - components: - - type: Transform - pos: -3.4715438,7.654894 - parent: 1 -- proto: GasPipeBend - entities: - - uid: 101 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,-1.5 - parent: 1 -- proto: GasPipeStraight - entities: - - uid: 102 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,0.5 - parent: 1 - - uid: 103 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,1.5 - parent: 1 - - uid: 104 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-0.5 - parent: 1 -- proto: GasPort - entities: - - uid: 105 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,-1.5 - parent: 1 -- proto: GasVentPump - entities: - - uid: 106 - components: - - type: Transform - pos: -2.5,2.5 - parent: 1 -- proto: GeneratorBasic15kW - entities: - - uid: 107 - components: - - type: Transform - pos: -2.5,-3.5 - parent: 1 -- proto: GravityGeneratorMini - entities: - - uid: 108 - components: - - type: Transform - pos: -1.5,-1.5 - parent: 1 -- proto: Grille - entities: - - uid: 109 - components: - - type: Transform - pos: -3.5,8.5 - parent: 1 - - uid: 110 - components: - - type: Transform - pos: -3.5,9.5 - parent: 1 - - uid: 111 - components: - - type: Transform - pos: -2.5,9.5 - parent: 1 - - uid: 112 - components: - - type: Transform - pos: -1.5,9.5 - parent: 1 - - uid: 113 - components: - - type: Transform - pos: -1.5,8.5 - parent: 1 -- proto: Gyroscope - entities: - - uid: 114 - components: - - type: Transform - pos: -3.5,-2.5 - parent: 1 -- proto: LostCargoTechnicianSpawner - entities: - - uid: 69 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,2.5 - parent: 1 - - uid: 187 - components: - - type: Transform - pos: -2.5,7.5 - parent: 1 -- proto: PlasticFlapsAirtightClear - entities: - - uid: 116 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 - - uid: 117 - components: - - type: Transform - pos: -5.5,0.5 - parent: 1 - - uid: 118 - components: - - type: Transform - pos: -5.5,4.5 - parent: 1 - - uid: 119 - components: - - type: Transform - pos: 0.5,4.5 - parent: 1 -- proto: Poweredlight - entities: - - uid: 120 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,2.5 - parent: 1 - - type: ApcPowerReceiver - powerLoad: 0 - - uid: 121 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,2.5 - parent: 1 - - type: ApcPowerReceiver - powerLoad: 0 - - uid: 122 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,7.5 - parent: 1 - - type: ApcPowerReceiver - powerLoad: 0 - - uid: 123 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,7.5 - parent: 1 - - type: ApcPowerReceiver - powerLoad: 0 -- proto: RandomPosterAny - entities: - - uid: 124 - components: - - type: Transform - pos: -4.5,6.5 - parent: 1 -- proto: RandomSpawner100 - entities: - - uid: 188 - components: - - type: Transform - pos: -4.5,1.5 - parent: 1 - - uid: 189 - components: - - type: Transform - pos: -0.5,3.5 - parent: 1 - - uid: 190 - components: - - type: Transform - pos: -2.5,4.5 - parent: 1 - - uid: 191 - components: - - type: Transform - pos: -1.5,-0.5 - parent: 1 - - uid: 192 - components: - - type: Transform - pos: -0.5,0.5 - parent: 1 - - uid: 193 - components: - - type: Transform - pos: -4.5,4.5 - parent: 1 -- proto: SalvageLootSpawner - entities: - - uid: 115 - components: - - type: Transform - pos: -1.5,2.5 - parent: 1 -- proto: SalvageMaterialCrateSpawner - entities: - - uid: 94 - components: - - type: Transform - pos: -3.5,-0.5 - parent: 1 - - uid: 125 - components: - - type: Transform - pos: -4.5,-0.5 - parent: 1 - - uid: 127 - components: - - type: Transform - pos: -3.5,5.5 - parent: 1 -- proto: ShuttleWindow - entities: - - uid: 128 - components: - - type: Transform - pos: -1.5,8.5 - parent: 1 - - uid: 129 - components: - - type: Transform - pos: -1.5,9.5 - parent: 1 - - uid: 130 - components: - - type: Transform - pos: -2.5,9.5 - parent: 1 - - uid: 131 - components: - - type: Transform - pos: -3.5,9.5 - parent: 1 - - uid: 132 - components: - - type: Transform - pos: -3.5,8.5 - parent: 1 -- proto: SignalButton - entities: - - uid: 133 - components: - - type: Transform - pos: -5.5,5.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 15: - - Pressed: Toggle - - uid: 134 - components: - - type: Transform - pos: -5.5,-0.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 13: - - Pressed: Toggle - - uid: 135 - components: - - type: Transform - pos: 0.5,5.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 12: - - Pressed: Toggle - - uid: 136 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 14: - - Pressed: Toggle -- proto: SMESBasic - entities: - - uid: 137 - components: - - type: Transform - pos: -2.5,-2.5 - parent: 1 -- proto: SubstationBasic - entities: - - uid: 138 - components: - - type: Transform - pos: -1.5,-2.5 - parent: 1 -- proto: TableReinforced - entities: - - uid: 126 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,2.5 - parent: 1 - - uid: 139 - components: - - type: Transform - pos: -3.5,7.5 - parent: 1 - - uid: 140 - components: - - type: Transform - pos: -1.5,7.5 - parent: 1 -- proto: Thruster - entities: - - uid: 141 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-2.5 - parent: 1 - - uid: 142 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,7.5 - parent: 1 - - uid: 143 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,7.5 - parent: 1 - - uid: 144 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,-2.5 - parent: 1 - - uid: 145 - components: - - type: Transform - pos: -4.5,9.5 - parent: 1 - - uid: 146 - components: - - type: Transform - pos: -0.5,9.5 - parent: 1 - - uid: 147 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-4.5 - parent: 1 - - uid: 148 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-4.5 - parent: 1 -- proto: TwoWayLever - entities: - - uid: 149 - components: - - type: Transform - pos: -3.5,1.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 86: - - Left: Forward - - Right: Reverse - - Middle: Off - 85: - - Left: Forward - - Right: Reverse - - Middle: Off - 84: - - Left: Forward - - Right: Reverse - - Middle: Off - - uid: 150 - components: - - type: Transform - pos: -1.5,1.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 91: - - Left: Forward - - Right: Reverse - - Middle: Off - 87: - - Left: Forward - - Right: Reverse - - Middle: Off - 92: - - Left: Forward - - Right: Reverse - - Middle: Off - - uid: 151 - components: - - type: Transform - pos: -1.5,3.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 81: - - Left: Forward - - Right: Reverse - - Middle: Off - 82: - - Left: Forward - - Right: Reverse - - Middle: Off - 83: - - Left: Forward - - Right: Reverse - - Middle: Off - - uid: 152 - components: - - type: Transform - pos: -3.5,3.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 90: - - Left: Forward - - Right: Reverse - - Middle: Off - 89: - - Left: Forward - - Right: Reverse - - Middle: Off - 88: - - Left: Forward - - Right: Reverse - - Middle: Off -- proto: WallShuttle - entities: - - uid: 153 - components: - - type: Transform - pos: -5.5,8.5 - parent: 1 - - uid: 154 - components: - - type: Transform - pos: -4.5,8.5 - parent: 1 - - uid: 155 - components: - - type: Transform - pos: -0.5,8.5 - parent: 1 - - uid: 156 - components: - - type: Transform - pos: 0.5,8.5 - parent: 1 - - uid: 157 - components: - - type: Transform - pos: -0.5,-3.5 - parent: 1 - - uid: 158 - components: - - type: Transform - pos: 0.5,-3.5 - parent: 1 - - uid: 159 - components: - - type: Transform - pos: -4.5,-3.5 - parent: 1 - - uid: 160 - components: - - type: Transform - pos: -5.5,-3.5 - parent: 1 - - uid: 161 - components: - - type: Transform - pos: -0.5,-1.5 - parent: 1 - - uid: 162 - components: - - type: Transform - pos: -0.5,-2.5 - parent: 1 - - uid: 163 - components: - - type: Transform - pos: -4.5,-1.5 - parent: 1 - - uid: 164 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 - - uid: 165 - components: - - type: Transform - pos: -4.5,-2.5 - parent: 1 - - uid: 166 - components: - - type: Transform - pos: -5.5,-1.5 - parent: 1 - - uid: 167 - components: - - type: Transform - pos: -0.5,7.5 - parent: 1 - - uid: 168 - components: - - type: Transform - pos: -0.5,6.5 - parent: 1 - - uid: 169 - components: - - type: Transform - pos: 0.5,6.5 - parent: 1 - - uid: 170 - components: - - type: Transform - pos: -4.5,7.5 - parent: 1 - - uid: 171 - components: - - type: Transform - pos: -4.5,6.5 - parent: 1 - - uid: 172 - components: - - type: Transform - pos: -5.5,6.5 - parent: 1 - - uid: 173 - components: - - type: Transform - pos: -5.5,-0.5 - parent: 1 - - uid: 174 - components: - - type: Transform - pos: -5.5,5.5 - parent: 1 - - uid: 175 - components: - - type: Transform - pos: 0.5,5.5 - parent: 1 - - uid: 176 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 - - uid: 177 - components: - - type: Transform - pos: 0.5,2.5 - parent: 1 - - uid: 178 - components: - - type: Transform - pos: -5.5,2.5 - parent: 1 - - uid: 179 - components: - - type: Transform - pos: -3.5,-4.5 - parent: 1 - - uid: 180 - components: - - type: Transform - pos: -2.5,-4.5 - parent: 1 - - uid: 181 - components: - - type: Transform - pos: -1.5,-4.5 - parent: 1 - - uid: 182 - components: - - type: Transform - pos: -3.5,-3.5 - parent: 1 - - uid: 183 - components: - - type: Transform - pos: -1.5,-3.5 - parent: 1 -- proto: Windoor - entities: - - uid: 184 - components: - - type: Transform - pos: -2.5,7.5 - parent: 1 -- proto: WindowReinforcedDirectional - entities: - - uid: 185 - components: - - type: Transform - pos: -1.5,7.5 - parent: 1 - - uid: 186 - components: - - type: Transform - pos: -3.5,7.5 - parent: 1 -... diff --git a/Resources/Maps/Shuttles/ShuttleEvent/meatzone.yml b/Resources/Maps/Shuttles/ShuttleEvent/meatzone.yml deleted file mode 100644 index ec31abb18e3..00000000000 --- a/Resources/Maps/Shuttles/ShuttleEvent/meatzone.yml +++ /dev/null @@ -1,3713 +0,0 @@ -meta: - format: 6 - postmapinit: false -tilemap: - 0: Space - 47: FloorFreezer - 64: FloorKitchen - 1: FloorMetalDiamond - 111: FloorTechMaint - 112: FloorTechMaint2 - 125: FloorWood - 127: FloorWoodTile - 128: Lattice - 129: Plating -entities: -- proto: "" - entities: - - uid: 1 - components: - - type: MetaData - name: SRV-Meatzone - - type: Transform - pos: -0.5104167,-0.46875 - parent: invalid - - type: MapGrid - chunks: - 0,0: - ind: 0,0 - tiles: fwAAAAADfwAAAAABfwAAAAAAgQAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgQAAAAAAbwAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAACfQAAAAACfQAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAfQAAAAADfQAAAAACgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAACfQAAAAAAfQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAfQAAAAADfQAAAAACgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAACfQAAAAABfQAAAAADgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAfQAAAAACfQAAAAABgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAACfQAAAAABfQAAAAADgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAfQAAAAABfQAAAAADgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAADfQAAAAAAfQAAAAADgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAABfQAAAAADfQAAAAACgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfQAAAAABfQAAAAAAfQAAAAACgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfwAAAAAAfwAAAAABgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAQAAAAAAgQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 0,-1: - ind: 0,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAgQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAALwAAAAAALwAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAALwAAAAAALwAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAALwAAAAAALwAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgQAAAAAAgQAAAAAAAQAAAAAAgQAAAAAAgQAAAAAALwAAAAAALwAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -1,0: - ind: -1,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAfwAAAAACfwAAAAABgQAAAAAAfwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAfQAAAAACfQAAAAABfQAAAAABfQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAfQAAAAADfQAAAAADfQAAAAADfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAfQAAAAAAfQAAAAABfQAAAAABfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAfQAAAAAAfQAAAAABfQAAAAABfQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAfQAAAAAAfQAAAAADfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAfQAAAAADfQAAAAADfQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAfQAAAAABfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -1,-1: - ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAcAAAAAAAcAAAAAAAbwAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAcAAAAAAAcAAAAAAAgQAAAAAAQAAAAAAA - version: 6 - - type: Broadphase - - type: Physics - bodyStatus: InAir - angularDamping: 0.05 - linearDamping: 0.05 - fixedRotation: False - bodyType: Dynamic - - type: Fixtures - fixtures: {} - - type: OccluderTree - - type: SpreaderGrid - - type: Shuttle - - type: GridPathfinding - - type: Gravity - gravityShakeSound: !type:SoundPathSpecifier - path: /Audio/Effects/alert.ogg - - type: DecalGrid - chunkCollection: - version: 2 - nodes: - - node: - color: '#FFFFFFFF' - id: WoodTrimThinCornerNe - decals: - 0: 2,7 - 1: 9,4 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinCornerNw - decals: - 2: 8,4 - 3: -2,7 - 4: -3,6 - 5: -4,4 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinCornerSe - decals: - 8: 2,1 - 9: 9,1 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinCornerSw - decals: - 6: -4,1 - 7: 8,1 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinInnerNw - decals: - 30: -2,6 - 31: -3,4 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinLineE - decals: - 10: 9,2 - 11: 9,3 - 12: 2,2 - 13: 2,3 - 14: 2,4 - 15: 2,5 - 16: 2,6 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinLineN - decals: - 17: 1,7 - 18: 0,7 - 19: -1,7 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinLineS - decals: - 20: 1,1 - 21: 0,1 - 22: -1,1 - 23: -2,1 - 24: -3,1 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinLineW - decals: - 25: -4,2 - 26: -4,3 - 27: -3,5 - 28: 8,2 - 29: 8,3 - - type: GridAtmosphere - version: 2 - data: - tiles: - 0,0: - 0: 30583 - 0,-1: - 0: 32535 - -1,0: - 0: 65531 - 0,1: - 0: 30583 - -1,1: - 0: 52975 - 0,2: - 0: 35 - 1: 128 - -1,2: - 0: 136 - 1,0: - 1: 114 - 1,1: - 1: 240 - 1,-1: - 0: 12032 - 2,0: - 0: 13105 - 2,1: - 0: 3 - 1: 64 - 2,-1: - 0: 13107 - 0,-2: - 0: 12288 - -1,-2: - 0: 49152 - -1,-1: - 0: 48910 - 1,-2: - 1: 61440 - 2,-2: - 1: 16384 - -2,1: - 1: 2048 - -2,-1: - 1: 8 - uniqueMixes: - - volume: 2500 - temperature: 293.15 - moles: - - 21.824879 - - 82.10312 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - immutable: True - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - chunkSize: 4 - - type: GasTileOverlay - - type: RadiationGridResistance -- proto: AirCanister - entities: - - uid: 440 - components: - - type: Transform - anchored: True - pos: -2.5,-3.5 - parent: 1 - - type: Physics - bodyType: Static -- proto: Airlock - entities: - - uid: 118 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-1.5 - parent: 1 - - uid: 120 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.5,-1.5 - parent: 1 - - uid: 443 - components: - - type: Transform - pos: 8.5,0.5 - parent: 1 -- proto: AirlockExternalGlass - entities: - - uid: 17 - components: - - type: Transform - pos: 5.5,-0.5 - parent: 1 -- proto: AirlockGlass - entities: - - uid: 213 - components: - - type: Transform - pos: -1.5,-1.5 - parent: 1 -- proto: AirlockGlassShuttle - entities: - - uid: 230 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.50000006,9.5 - parent: 1 - - uid: 231 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,9.5 - parent: 1 -- proto: AirlockMaint - entities: - - uid: 127 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-2.5 - parent: 1 -- proto: APCBasic - entities: - - uid: 317 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,0.5 - parent: 1 -- proto: Ashtray - entities: - - uid: 530 - components: - - type: Transform - pos: 9.262002,3.6997778 - parent: 1 -- proto: AtmosDeviceFanDirectional - entities: - - uid: 14 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,9.5 - parent: 1 - - uid: 441 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,9.5 - parent: 1 - - uid: 533 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-0.5 - parent: 1 - - uid: 534 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 7.5,-1.5 - parent: 1 - - uid: 535 - components: - - type: Transform - pos: 8.5,0.5 - parent: 1 - - uid: 537 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,9.5 - parent: 1 - - uid: 538 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,9.5 - parent: 1 -- proto: Beaker - entities: - - uid: 253 - components: - - type: Transform - pos: -0.24884999,0.27058864 - parent: 1 - - uid: 254 - components: - - type: Transform - pos: -0.5925999,0.24975526 - parent: 1 -- proto: BookHowToCookForFortySpaceman - entities: - - uid: 394 - components: - - type: Transform - parent: 392 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: CableApcExtension - entities: - - uid: 244 - components: - - type: Transform - pos: 7.5,2.5 - parent: 1 - - uid: 334 - components: - - type: Transform - pos: -1.5,0.5 - parent: 1 - - uid: 335 - components: - - type: Transform - pos: -1.5,1.5 - parent: 1 - - uid: 336 - components: - - type: Transform - pos: -2.5,1.5 - parent: 1 - - uid: 337 - components: - - type: Transform - pos: -3.5,1.5 - parent: 1 - - uid: 338 - components: - - type: Transform - pos: -3.5,0.5 - parent: 1 - - uid: 339 - components: - - type: Transform - pos: -4.5,0.5 - parent: 1 - - uid: 340 - components: - - type: Transform - pos: -4.5,-0.5 - parent: 1 - - uid: 341 - components: - - type: Transform - pos: -4.5,-1.5 - parent: 1 - - uid: 342 - components: - - type: Transform - pos: -3.5,2.5 - parent: 1 - - uid: 343 - components: - - type: Transform - pos: -4.5,2.5 - parent: 1 - - uid: 344 - components: - - type: Transform - pos: -4.5,3.5 - parent: 1 - - uid: 345 - components: - - type: Transform - pos: -4.5,4.5 - parent: 1 - - uid: 346 - components: - - type: Transform - pos: -3.5,-1.5 - parent: 1 - - uid: 347 - components: - - type: Transform - pos: -2.5,-1.5 - parent: 1 - - uid: 348 - components: - - type: Transform - pos: -1.5,-1.5 - parent: 1 - - uid: 349 - components: - - type: Transform - pos: -0.50000006,-1.5 - parent: 1 - - uid: 350 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 - - uid: 351 - components: - - type: Transform - pos: 1.5,-1.5 - parent: 1 - - uid: 352 - components: - - type: Transform - pos: 2.5,-1.5 - parent: 1 - - uid: 353 - components: - - type: Transform - pos: 3.5,-1.5 - parent: 1 - - uid: 354 - components: - - type: Transform - pos: 4.5,-1.5 - parent: 1 - - uid: 355 - components: - - type: Transform - pos: 5.5,-1.5 - parent: 1 - - uid: 356 - components: - - type: Transform - pos: 6.5,-1.5 - parent: 1 - - uid: 357 - components: - - type: Transform - pos: 7.5,-1.5 - parent: 1 - - uid: 358 - components: - - type: Transform - pos: 8.5,-1.5 - parent: 1 - - uid: 359 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 - - uid: 360 - components: - - type: Transform - pos: 0.5,-3.5 - parent: 1 - - uid: 361 - components: - - type: Transform - pos: -0.50000006,-3.5 - parent: 1 - - uid: 362 - components: - - type: Transform - pos: -1.5,-3.5 - parent: 1 - - uid: 363 - components: - - type: Transform - pos: -2.5,-3.5 - parent: 1 - - uid: 364 - components: - - type: Transform - pos: 1.5,-3.5 - parent: 1 - - uid: 365 - components: - - type: Transform - pos: 2.5,-3.5 - parent: 1 - - uid: 366 - components: - - type: Transform - pos: -0.50000006,-4.5 - parent: 1 - - uid: 367 - components: - - type: Transform - pos: -0.50000006,-5.5 - parent: 1 - - uid: 368 - components: - - type: Transform - pos: 0.5,-5.5 - parent: 1 - - uid: 369 - components: - - type: Transform - pos: 8.5,-2.5 - parent: 1 - - uid: 370 - components: - - type: Transform - pos: 8.5,-3.5 - parent: 1 - - uid: 371 - components: - - type: Transform - pos: 8.5,-4.5 - parent: 1 - - uid: 372 - components: - - type: Transform - pos: 9.5,-4.5 - parent: 1 - - uid: 373 - components: - - type: Transform - pos: 9.5,-1.5 - parent: 1 - - uid: 374 - components: - - type: Transform - pos: 10.5,-1.5 - parent: 1 - - uid: 375 - components: - - type: Transform - pos: 10.5,-2.5 - parent: 1 - - uid: 376 - components: - - type: Transform - pos: 8.5,-0.5 - parent: 1 - - uid: 377 - components: - - type: Transform - pos: 8.5,0.5 - parent: 1 - - uid: 378 - components: - - type: Transform - pos: 8.5,1.5 - parent: 1 - - uid: 379 - components: - - type: Transform - pos: 8.5,2.5 - parent: 1 - - uid: 380 - components: - - type: Transform - pos: 7.5,3.5 - parent: 1 - - uid: 381 - components: - - type: Transform - pos: 7.5,4.5 - parent: 1 - - uid: 382 - components: - - type: Transform - pos: 9.5,2.5 - parent: 1 - - uid: 383 - components: - - type: Transform - pos: 9.5,3.5 - parent: 1 - - uid: 384 - components: - - type: Transform - pos: 10.5,3.5 - parent: 1 - - uid: 385 - components: - - type: Transform - pos: 10.5,4.5 - parent: 1 - - uid: 386 - components: - - type: Transform - pos: 8.5,4.5 - parent: 1 - - uid: 387 - components: - - type: Transform - pos: 8.5,5.5 - parent: 1 - - uid: 388 - components: - - type: Transform - pos: 9.5,5.5 - parent: 1 - - uid: 404 - components: - - type: Transform - pos: -0.50000006,1.5 - parent: 1 - - uid: 405 - components: - - type: Transform - pos: 0.5,1.5 - parent: 1 - - uid: 406 - components: - - type: Transform - pos: 0.5,2.5 - parent: 1 - - uid: 407 - components: - - type: Transform - pos: 0.5,3.5 - parent: 1 - - uid: 408 - components: - - type: Transform - pos: 0.5,4.5 - parent: 1 - - uid: 409 - components: - - type: Transform - pos: 0.5,5.5 - parent: 1 - - uid: 410 - components: - - type: Transform - pos: 0.5,6.5 - parent: 1 - - uid: 411 - components: - - type: Transform - pos: 0.5,7.5 - parent: 1 - - uid: 412 - components: - - type: Transform - pos: 0.5,8.5 - parent: 1 - - uid: 413 - components: - - type: Transform - pos: 1.5,6.5 - parent: 1 - - uid: 414 - components: - - type: Transform - pos: 2.5,6.5 - parent: 1 - - uid: 415 - components: - - type: Transform - pos: 3.5,6.5 - parent: 1 - - uid: 416 - components: - - type: Transform - pos: 3.5,7.5 - parent: 1 - - uid: 417 - components: - - type: Transform - pos: 1.5,4.5 - parent: 1 - - uid: 418 - components: - - type: Transform - pos: 2.5,4.5 - parent: 1 - - uid: 419 - components: - - type: Transform - pos: 3.5,4.5 - parent: 1 - - uid: 420 - components: - - type: Transform - pos: 3.5,3.5 - parent: 1 - - uid: 421 - components: - - type: Transform - pos: 3.5,2.5 - parent: 1 -- proto: CableHV - entities: - - uid: 318 - components: - - type: Transform - pos: 0.5,-4.5 - parent: 1 - - uid: 319 - components: - - type: Transform - pos: 1.5,-4.5 - parent: 1 - - uid: 320 - components: - - type: Transform - pos: 1.5,-3.5 - parent: 1 - - uid: 321 - components: - - type: Transform - pos: 2.5,-3.5 - parent: 1 -- proto: CableMV - entities: - - uid: 323 - components: - - type: Transform - pos: 2.5,-3.5 - parent: 1 - - uid: 324 - components: - - type: Transform - pos: 1.5,-3.5 - parent: 1 - - uid: 325 - components: - - type: Transform - pos: 0.5,-3.5 - parent: 1 - - uid: 326 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 - - uid: 327 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 - - uid: 328 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 - - uid: 329 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 - - uid: 330 - components: - - type: Transform - pos: 0.5,1.5 - parent: 1 - - uid: 331 - components: - - type: Transform - pos: -0.50000006,1.5 - parent: 1 - - uid: 332 - components: - - type: Transform - pos: -1.5,1.5 - parent: 1 - - uid: 333 - components: - - type: Transform - pos: -1.5,0.5 - parent: 1 -- proto: CableTerminal - entities: - - uid: 322 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-4.5 - parent: 1 -- proto: CarpetBlack - entities: - - uid: 444 - components: - - type: Transform - pos: 9.5,1.5 - parent: 1 - - uid: 518 - components: - - type: Transform - pos: 9.5,2.5 - parent: 1 - - uid: 519 - components: - - type: Transform - pos: 9.5,3.5 - parent: 1 - - uid: 520 - components: - - type: Transform - pos: 9.5,4.5 - parent: 1 - - uid: 521 - components: - - type: Transform - pos: 8.5,1.5 - parent: 1 - - uid: 522 - components: - - type: Transform - pos: 8.5,2.5 - parent: 1 - - uid: 523 - components: - - type: Transform - pos: 8.5,3.5 - parent: 1 - - uid: 524 - components: - - type: Transform - pos: 8.5,4.5 - parent: 1 -- proto: CarpetBlue - entities: - - uid: 482 - components: - - type: Transform - pos: -1.5,4.5 - parent: 1 - - uid: 483 - components: - - type: Transform - pos: -0.50000006,7.5 - parent: 1 - - uid: 484 - components: - - type: Transform - pos: -1.5,6.5 - parent: 1 - - uid: 485 - components: - - type: Transform - pos: -0.50000006,6.5 - parent: 1 - - uid: 486 - components: - - type: Transform - pos: -1.5,7.5 - parent: 1 - - uid: 491 - components: - - type: Transform - pos: 0.5,5.5 - parent: 1 - - uid: 492 - components: - - type: Transform - pos: -0.50000006,6.5 - parent: 1 - - uid: 493 - components: - - type: Transform - pos: -2.5,5.5 - parent: 1 - - uid: 494 - components: - - type: Transform - pos: -0.50000006,5.5 - parent: 1 - - uid: 495 - components: - - type: Transform - pos: 2.5,4.5 - parent: 1 - - uid: 496 - components: - - type: Transform - pos: -0.50000006,5.5 - parent: 1 - - uid: 497 - components: - - type: Transform - pos: -1.5,5.5 - parent: 1 - - uid: 498 - components: - - type: Transform - pos: -0.50000006,4.5 - parent: 1 - - uid: 499 - components: - - type: Transform - pos: -2.5,6.5 - parent: 1 - - uid: 500 - components: - - type: Transform - pos: 2.5,2.5 - parent: 1 - - uid: 501 - components: - - type: Transform - pos: 2.5,3.5 - parent: 1 - - uid: 502 - components: - - type: Transform - pos: -1.5,5.5 - parent: 1 - - uid: 503 - components: - - type: Transform - pos: -1.5,6.5 - parent: 1 - - uid: 504 - components: - - type: Transform - pos: 0.5,6.5 - parent: 1 - - uid: 505 - components: - - type: Transform - pos: 2.5,7.5 - parent: 1 - - uid: 506 - components: - - type: Transform - pos: 2.5,6.5 - parent: 1 - - uid: 507 - components: - - type: Transform - pos: -3.5,4.5 - parent: 1 - - uid: 508 - components: - - type: Transform - pos: -3.5,3.5 - parent: 1 - - uid: 509 - components: - - type: Transform - pos: -3.5,2.5 - parent: 1 -- proto: CarpetCyan - entities: - - uid: 510 - components: - - type: Transform - pos: -1.5,2.5 - parent: 1 - - uid: 511 - components: - - type: Transform - pos: -0.50000006,2.5 - parent: 1 - - uid: 512 - components: - - type: Transform - pos: 0.5,2.5 - parent: 1 -- proto: Catwalk - entities: - - uid: 425 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-4.5 - parent: 1 - - uid: 426 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-4.5 - parent: 1 - - uid: 427 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-3.5 - parent: 1 -- proto: ChairPilotSeat - entities: - - uid: 438 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 8.5,3.5 - parent: 1 -- proto: ChairWood - entities: - - uid: 109 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,4.5 - parent: 1 - - uid: 112 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,2.5 - parent: 1 - - uid: 114 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,6.5 - parent: 1 - - uid: 128 - components: - - type: Transform - pos: -3.4999998,4.5 - parent: 1 - - uid: 129 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.4999998,2.5 - parent: 1 - - uid: 130 - components: - - type: Transform - pos: 2.5,4.5 - parent: 1 - - uid: 133 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.50000006,4.5 - parent: 1 - - uid: 134 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,5.5 - parent: 1 - - uid: 135 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,6.5 - parent: 1 - - uid: 136 - components: - - type: Transform - pos: -1.5,7.5 - parent: 1 - - uid: 137 - components: - - type: Transform - pos: -0.50000006,7.5 - parent: 1 -- proto: CigarCase - entities: - - uid: 527 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.626585,3.4810278 - parent: 1 - - uid: 532 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.626585,3.4810278 - parent: 1 -- proto: ClosetChef - entities: - - uid: 392 - components: - - type: Transform - pos: 9.5,1.5 - parent: 1 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14673 - moles: - - 1.7459903 - - 6.568249 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 393 - - 394 - - 395 - - 396 - - 397 - - 398 - - 399 - - 400 - - 401 - - 402 - - 403 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null -- proto: ClothingBeltChefFilled - entities: - - uid: 402 - components: - - type: Transform - parent: 392 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingHeadHatChef - entities: - - uid: 395 - components: - - type: Transform - parent: 392 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingHeadHatCowboyWhite - entities: - - uid: 393 - components: - - type: Transform - parent: 392 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingOuterApronChef - entities: - - uid: 403 - components: - - type: Transform - parent: 392 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingOuterJacketChef - entities: - - uid: 399 - components: - - type: Transform - parent: 392 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingOuterWinterChef - entities: - - uid: 400 - components: - - type: Transform - parent: 392 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingShoesBootsCowboyFancy - entities: - - uid: 398 - components: - - type: Transform - parent: 392 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingShoesChef - entities: - - uid: 397 - components: - - type: Transform - parent: 392 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingUniformJumpskirtChef - entities: - - uid: 401 - components: - - type: Transform - parent: 392 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingUniformJumpsuitChef - entities: - - uid: 396 - components: - - type: Transform - parent: 392 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ComputerPowerMonitoring - entities: - - uid: 439 - components: - - type: Transform - pos: 9.5,4.5 - parent: 1 -- proto: ComputerShuttle - entities: - - uid: 390 - components: - - type: Transform - pos: 8.5,4.5 - parent: 1 -- proto: CrateFreezer - entities: - - uid: 138 - components: - - type: Transform - pos: 2.5,-0.5 - parent: 1 - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 168 - - 167 - - 166 - - 142 - - 141 - - 140 - - 139 - - 154 - - 155 - - 156 - - 143 - - 144 - - 145 - - 146 - - 147 - - 148 - - 149 - - 150 - - 151 - - 152 - - 153 - - 157 - - 158 - - 159 - - 160 - - 161 - - 162 - - 163 - - 164 - - 165 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null -- proto: CurtainsWhite - entities: - - uid: 207 - components: - - type: Transform - pos: -3.5,0.5 - parent: 1 -- proto: CurtainsWhiteOpen - entities: - - uid: 119 - components: - - type: Transform - pos: -2.5,0.5 - parent: 1 -- proto: DrinkWhiskeyGlass - entities: - - uid: 489 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.709918,3.064361 - parent: 1 -- proto: FloorDrain - entities: - - uid: 525 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.5,-1.5 - parent: 1 - - type: Fixtures - fixtures: {} -- proto: FoodBreadBun - entities: - - uid: 141 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 142 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 166 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 167 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 168 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodBurgerMcrib - entities: - - uid: 487 - components: - - type: Transform - pos: 9.528882,2.5859442 - parent: 1 -- proto: FoodCondimentBottleBBQ - entities: - - uid: 190 - components: - - type: Transform - pos: 1.9895566,0.6009581 - parent: 1 - - uid: 195 - components: - - type: Transform - pos: 2.2499733,8.059292 - parent: 1 - - uid: 196 - components: - - type: Transform - pos: 0.031223089,0.6322081 - parent: 1 - - uid: 197 - components: - - type: Transform - pos: -0.7604436,0.8509581 - parent: 1 - - uid: 209 - components: - - type: Transform - pos: -0.92711025,6.2259583 - parent: 1 - - uid: 210 - components: - - type: Transform - pos: -3.70836,4.048875 - parent: 1 - - uid: 211 - components: - - type: Transform - pos: 2.3124733,4.0384583 - parent: 1 - - uid: 215 - components: - - type: Transform - pos: -3.7087448,-0.7979846 - parent: 1 - - uid: 216 - components: - - type: Transform - pos: -3.5004117,-0.7979846 - parent: 1 - - uid: 461 - components: - - type: Transform - parent: 447 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 462 - components: - - type: Transform - parent: 447 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 463 - components: - - type: Transform - parent: 447 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 465 - components: - - type: Transform - parent: 447 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 466 - components: - - type: Transform - parent: 447 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodCondimentBottleColdsauce - entities: - - uid: 202 - components: - - type: Transform - pos: -3.437527,4.059292 - parent: 1 - - uid: 203 - components: - - type: Transform - pos: -0.5729436,0.89262486 - parent: 1 - - uid: 219 - components: - - type: Transform - pos: -3.3962448,-0.95423484 - parent: 1 -- proto: FoodCondimentBottleHotsauce - entities: - - uid: 198 - components: - - type: Transform - pos: -1.1666937,6.392625 - parent: 1 - - uid: 199 - components: - - type: Transform - pos: 2.7291398,8.090542 - parent: 1 - - uid: 200 - components: - - type: Transform - pos: 1.124973,0.6530415 - parent: 1 - - uid: 201 - components: - - type: Transform - pos: -0.7604436,0.6634581 - parent: 1 - - uid: 217 - components: - - type: Transform - pos: -3.3024948,-0.78756785 - parent: 1 -- proto: FoodCondimentBottleKetchup - entities: - - uid: 204 - components: - - type: Transform - pos: -0.687527,6.361375 - parent: 1 - - uid: 205 - components: - - type: Transform - pos: -0.55211025,0.70512486 - parent: 1 - - uid: 218 - components: - - type: Transform - pos: -3.6045783,-0.94381785 - parent: 1 -- proto: FoodCondimentBottleVinegar - entities: - - uid: 206 - components: - - type: Transform - pos: -0.38544363,0.67387486 - parent: 1 -- proto: FoodKebabSkewer - entities: - - uid: 139 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 140 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 143 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 151 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 155 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 156 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 157 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 158 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 261 - components: - - type: Transform - pos: 9.6051445,-3.0661607 - parent: 1 - - uid: 263 - components: - - type: Transform - pos: 9.646811,-3.2640774 - parent: 1 -- proto: FoodMealRibs - entities: - - uid: 160 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 161 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 162 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 164 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodMeat - entities: - - uid: 144 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 146 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 147 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 148 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 149 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 150 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 152 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 153 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 154 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 159 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodMeatHuman - entities: - - uid: 450 - components: - - type: Transform - parent: 447 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 452 - components: - - type: Transform - parent: 447 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 455 - components: - - type: Transform - parent: 447 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 456 - components: - - type: Transform - parent: 447 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 458 - components: - - type: Transform - parent: 447 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodMeatLizard - entities: - - uid: 459 - components: - - type: Transform - parent: 447 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 460 - components: - - type: Transform - parent: 447 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 464 - components: - - type: Transform - parent: 447 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodMeatPlant - entities: - - uid: 449 - components: - - type: Transform - parent: 447 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 453 - components: - - type: Transform - parent: 447 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 454 - components: - - type: Transform - parent: 447 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 457 - components: - - type: Transform - parent: 447 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodMeatRouny - entities: - - uid: 448 - components: - - type: Transform - parent: 447 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 451 - components: - - type: Transform - parent: 447 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodOnion - entities: - - uid: 163 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 165 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodPlate - entities: - - uid: 172 - components: - - type: Transform - pos: 0.57288975,0.6842915 - parent: 1 - - uid: 173 - components: - - type: Transform - pos: 1.5208066,0.6842915 - parent: 1 - - uid: 174 - components: - - type: Transform - pos: 2.4583066,0.6530415 - parent: 1 - - uid: 175 - components: - - type: Transform - pos: 2.4999733,3.7051249 - parent: 1 - - uid: 176 - components: - - type: Transform - pos: 2.5103898,7.705125 - parent: 1 - - uid: 177 - components: - - type: Transform - pos: -1.4166937,6.621792 - parent: 1 - - uid: 178 - components: - - type: Transform - pos: -0.5416936,6.6009583 - parent: 1 - - uid: 179 - components: - - type: Transform - pos: -0.5416936,5.7572083 - parent: 1 - - uid: 180 - components: - - type: Transform - pos: -1.437527,5.746792 - parent: 1 - - uid: 181 - components: - - type: Transform - pos: -3.48961,3.7155416 - parent: 1 - - uid: 220 - components: - - type: Transform - pos: -3.5004117,-1.3604848 - parent: 1 - - uid: 221 - components: - - type: Transform - pos: -3.5004117,-1.3604848 - parent: 1 - - uid: 222 - components: - - type: Transform - pos: -3.5004117,-1.3604848 - parent: 1 - - uid: 223 - components: - - type: Transform - pos: -3.5004117,-1.3604848 - parent: 1 - - uid: 224 - components: - - type: Transform - pos: -3.5004117,-1.3604848 - parent: 1 - - uid: 488 - components: - - type: Transform - pos: 9.528882,2.6171942 - parent: 1 -- proto: FoodShakerPepper - entities: - - uid: 469 - components: - - type: Transform - pos: 2.4176123,7.874222 - parent: 1 - - uid: 470 - components: - - type: Transform - pos: 2.521779,3.8241842 - parent: 1 - - uid: 471 - components: - - type: Transform - pos: -1.3532212,6.103388 - parent: 1 - - uid: 472 - components: - - type: Transform - pos: -3.5615542,3.8325546 - parent: 1 - - uid: 473 - components: - - type: Transform - pos: -3.7073882,-1.1361954 - parent: 1 - - uid: 481 - components: - - type: Transform - pos: -0.12405449,0.7179711 - parent: 1 -- proto: FoodShakerSalt - entities: - - uid: 474 - components: - - type: Transform - pos: -3.269888,-1.1257789 - parent: 1 - - uid: 475 - components: - - type: Transform - pos: 2.6884456,3.8221378 - parent: 1 - - uid: 476 - components: - - type: Transform - pos: 2.5426123,7.884638 - parent: 1 - - uid: 477 - components: - - type: Transform - pos: -0.72822124,5.978388 - parent: 1 - - uid: 478 - components: - - type: Transform - pos: -3.8219712,3.8221378 - parent: 1 - - uid: 479 - components: - - type: Transform - pos: -0.16572118,0.48880458 - parent: 1 - - uid: 480 - components: - - type: Transform - pos: -0.16572118,0.48880458 - parent: 1 -- proto: Fork - entities: - - uid: 182 - components: - - type: Transform - pos: 2.8333066,3.6426249 - parent: 1 - - uid: 183 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.83336025,6.590542 - parent: 1 - - uid: 184 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.1145566,0.5697081 - parent: 1 - - uid: 185 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.1145566,0.5280415 - parent: 1 - - uid: 186 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.14580643,0.5592915 - parent: 1 - - uid: 187 - components: - - type: Transform - pos: 2.8228898,7.590542 - parent: 1 - - uid: 188 - components: - - type: Transform - pos: -1.156277,5.590542 - parent: 1 - - uid: 191 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.687527,6.559292 - parent: 1 - - uid: 192 - components: - - type: Transform - pos: -0.22919363,5.6009583 - parent: 1 - - uid: 193 - components: - - type: Transform - pos: -3.250027,3.5697083 - parent: 1 - - uid: 225 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5004117,-1.2979848 - parent: 1 - - uid: 226 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5004117,-1.2979848 - parent: 1 - - uid: 227 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5004117,-1.2979848 - parent: 1 - - uid: 228 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5004117,-1.2979848 - parent: 1 - - uid: 229 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5004117,-1.2979848 - parent: 1 -- proto: GasPassiveVent - entities: - - uid: 290 - components: - - type: Transform - pos: 5.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 526 - components: - - type: Transform - pos: 8.5,-2.5 - parent: 1 -- proto: GasPipeBend - entities: - - uid: 239 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 276 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 8.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 295 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 303 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 313 - components: - - type: Transform - pos: 1.5,7.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeStraight - entities: - - uid: 246 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 247 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.50000006,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 248 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.50000006,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 249 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 252 - components: - - type: Transform - pos: 0.5,6.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 255 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 257 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 258 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 259 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 260 - components: - - type: Transform - pos: 0.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 262 - components: - - type: Transform - pos: 0.5,5.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 264 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 265 - components: - - type: Transform - pos: 0.5,7.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 266 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 268 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 270 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 271 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 272 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 275 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 279 - components: - - type: Transform - pos: 9.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 282 - components: - - type: Transform - pos: 8.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 283 - components: - - type: Transform - pos: 8.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 284 - components: - - type: Transform - pos: 8.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 288 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 289 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 291 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 292 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 293 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 294 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 296 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 8.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 297 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 298 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 300 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 301 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 302 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 304 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 306 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 307 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 309 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 310 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 311 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,5.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 312 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,6.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 422 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 423 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.50000006,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 424 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeTJunction - entities: - - uid: 251 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 267 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 269 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 281 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 8.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 287 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 299 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 305 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 308 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPort - entities: - - uid: 238 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasThermoMachineFreezerEnabled - entities: - - uid: 468 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 8.5,-3.5 - parent: 1 -- proto: GasVentPump - entities: - - uid: 87 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 241 - components: - - type: Transform - pos: 8.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 277 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 278 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.50000006,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 280 - components: - - type: Transform - pos: 0.5,8.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasVentScrubber - entities: - - uid: 285 - components: - - type: Transform - pos: 9.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 286 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 8.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 314 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,7.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 315 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 316 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GeneratorBasic15kW - entities: - - uid: 235 - components: - - type: Transform - pos: 0.5,-4.5 - parent: 1 -- proto: GravityGeneratorMini - entities: - - uid: 237 - components: - - type: Transform - pos: -0.50000006,-4.5 - parent: 1 -- proto: Grille - entities: - - uid: 23 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 7.5,4.5 - parent: 1 - - uid: 47 - components: - - type: Transform - pos: 3.5,6.5 - parent: 1 - - uid: 67 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.50000006,-5.5 - parent: 1 - - uid: 68 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-5.5 - parent: 1 - - uid: 69 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,-1.5 - parent: 1 - - uid: 70 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,-0.5 - parent: 1 - - uid: 71 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,0.5 - parent: 1 - - uid: 72 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,2.5 - parent: 1 - - uid: 73 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,3.5 - parent: 1 - - uid: 74 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,4.5 - parent: 1 - - uid: 75 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,2.5 - parent: 1 - - uid: 76 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,3.5 - parent: 1 - - uid: 77 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,4.5 - parent: 1 - - uid: 80 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 7.5,3.5 - parent: 1 - - uid: 81 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 7.5,2.5 - parent: 1 - - uid: 82 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,4.5 - parent: 1 - - uid: 83 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,3.5 - parent: 1 - - uid: 85 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 9.5,5.5 - parent: 1 - - uid: 86 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 8.5,5.5 - parent: 1 - - uid: 95 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 8.5,-4.5 - parent: 1 - - uid: 96 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 9.5,-4.5 - parent: 1 - - uid: 97 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,-2.5 - parent: 1 - - uid: 98 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,-1.5 - parent: 1 - - uid: 103 - components: - - type: Transform - pos: 3.5,7.5 - parent: 1 -- proto: Gyroscope - entities: - - uid: 236 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-4.5 - parent: 1 -- proto: KitchenKnife - entities: - - uid: 145 - components: - - type: Transform - parent: 138 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 189 - components: - - type: Transform - pos: 2.3020566,7.653042 - parent: 1 - - uid: 194 - components: - - type: Transform - pos: -0.42711025,0.5072081 - parent: 1 - - uid: 273 - components: - - type: Transform - pos: 9.615561,-2.8161607 - parent: 1 - - uid: 274 - components: - - type: Transform - pos: 9.396811,-2.6807442 - parent: 1 -- proto: KitchenMicrowave - entities: - - uid: 250 - components: - - type: Transform - pos: -0.50000006,-0.5 - parent: 1 -- proto: KitchenSpike - entities: - - uid: 445 - components: - - type: Transform - pos: 9.5,-1.5 - parent: 1 -- proto: Lighter - entities: - - uid: 531 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.282835,3.0435278 - parent: 1 -- proto: LockerFreezerBase - entities: - - uid: 447 - components: - - type: Transform - pos: 9.5,-0.5 - parent: 1 - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 448 - - 449 - - 450 - - 451 - - 452 - - 453 - - 454 - - 455 - - 456 - - 457 - - 458 - - 459 - - 460 - - 461 - - 462 - - 463 - - 464 - - 465 - - 466 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null -- proto: PaintingAmogusTriptych - entities: - - uid: 517 - components: - - type: Transform - pos: 2.5,8.5 - parent: 1 -- proto: PaintingEmpty - entities: - - uid: 513 - components: - - type: Transform - pos: -1.5,-0.5 - parent: 1 -- proto: PaintingMonkey - entities: - - uid: 536 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 10.5,2.5 - parent: 1 -- proto: PaintingSaturn - entities: - - uid: 516 - components: - - type: Transform - pos: 3.5,1.5 - parent: 1 -- proto: PaintingSkeletonBoof - entities: - - uid: 514 - components: - - type: Transform - pos: -3.4999998,5.5 - parent: 1 -- proto: PaintingSkeletonCigarette - entities: - - uid: 515 - components: - - type: Transform - pos: 3.5,5.5 - parent: 1 -- proto: Paper - entities: - - uid: 242 - components: - - type: MetaData - name: recipes - - type: Transform - pos: 0.15453678,-0.2413783 - parent: 1 - - type: Paper - content: >+ - Ribs: - - [bullet] 5u BBQ sauce - - [bullet] 2x raw meat - - [bullet] 1x skewer - - [bullet] Microwave 15s - - - McRib: - - [bullet] 1x bun - - [bullet] 1x ribs - - [bullet] 1x sliced onion - - [bullet] Microwave 10s - -- proto: Poweredlight - entities: - - uid: 436 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 8.5,-2.5 - parent: 1 - - uid: 437 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 8.5,-2.5 - parent: 1 -- proto: PoweredlightOrange - entities: - - uid: 428 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,1.5 - parent: 1 - - uid: 429 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,5.5 - parent: 1 - - uid: 430 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,5.5 - parent: 1 - - uid: 431 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-1.5 - parent: 1 - - uid: 432 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,-1.5 - parent: 1 - - uid: 435 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,2.5 - parent: 1 -- proto: PoweredSmallLight - entities: - - uid: 6 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 5.5,-1.5 - parent: 1 - - uid: 433 - components: - - type: Transform - pos: -0.50000006,-3.5 - parent: 1 -- proto: ReagentContainerMayo - entities: - - uid: 240 - components: - - type: Transform - pos: 9.5322275,-2.2432442 - parent: 1 - - uid: 245 - components: - - type: Transform - pos: 9.7822275,-2.2432442 - parent: 1 - - uid: 256 - components: - - type: Transform - pos: -0.36343336,0.70808864 - parent: 1 -- proto: ShuttleWindow - entities: - - uid: 3 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 9.5,5.5 - parent: 1 - - uid: 4 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 7.5,2.5 - parent: 1 - - uid: 7 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 7.5,4.5 - parent: 1 - - uid: 9 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 7.5,3.5 - parent: 1 - - uid: 11 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,3.5 - parent: 1 - - uid: 18 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 8.5,5.5 - parent: 1 - - uid: 19 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,4.5 - parent: 1 - - uid: 24 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,3.5 - parent: 1 - - uid: 28 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,2.5 - parent: 1 - - uid: 30 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,4.5 - parent: 1 - - uid: 48 - components: - - type: Transform - pos: 3.5,7.5 - parent: 1 - - uid: 49 - components: - - type: Transform - pos: 3.5,6.5 - parent: 1 - - uid: 58 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.50000006,-5.5 - parent: 1 - - uid: 59 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-5.5 - parent: 1 - - uid: 61 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,4.5 - parent: 1 - - uid: 62 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,3.5 - parent: 1 - - uid: 63 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,2.5 - parent: 1 - - uid: 64 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,0.5 - parent: 1 - - uid: 65 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,-0.5 - parent: 1 - - uid: 66 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,-1.5 - parent: 1 - - uid: 91 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,-1.5 - parent: 1 - - uid: 92 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,-2.5 - parent: 1 - - uid: 93 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 9.5,-4.5 - parent: 1 - - uid: 94 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 8.5,-4.5 - parent: 1 -- proto: SMESBasic - entities: - - uid: 234 - components: - - type: Transform - pos: 1.5,-4.5 - parent: 1 -- proto: StoolBar - entities: - - uid: 169 - components: - - type: Transform - pos: 0.5,1.5 - parent: 1 - - uid: 170 - components: - - type: Transform - pos: 1.5,1.5 - parent: 1 - - uid: 171 - components: - - type: Transform - pos: 2.5,1.5 - parent: 1 -- proto: SubstationBasic - entities: - - uid: 233 - components: - - type: Transform - pos: 2.5,-3.5 - parent: 1 -- proto: Table - entities: - - uid: 123 - components: - - type: Transform - pos: -0.50000006,0.5 - parent: 1 - - uid: 243 - components: - - type: Transform - pos: -0.50000006,-0.5 - parent: 1 - - uid: 446 - components: - - type: Transform - pos: 9.5,-3.5 - parent: 1 - - uid: 467 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,-2.5 - parent: 1 -- proto: TableCounterMetal - entities: - - uid: 124 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,0.5 - parent: 1 - - uid: 125 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,0.5 - parent: 1 - - uid: 126 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,0.5 - parent: 1 - - uid: 208 - components: - - type: Transform - pos: -3.5,-1.5 - parent: 1 - - uid: 212 - components: - - type: Transform - pos: -3.5,-0.5 - parent: 1 -- proto: TableFancyWhite - entities: - - uid: 111 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,6.5 - parent: 1 - - uid: 113 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.50000006,5.5 - parent: 1 - - uid: 115 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.50000006,6.5 - parent: 1 - - uid: 116 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,3.5 - parent: 1 - - uid: 117 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,5.5 - parent: 1 - - uid: 131 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,7.5 - parent: 1 - - uid: 132 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,3.5 - parent: 1 -- proto: TableWood - entities: - - uid: 16 - components: - - type: Transform - pos: 9.5,2.5 - parent: 1 - - uid: 528 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 9.5,3.5 - parent: 1 -- proto: Thruster - entities: - - uid: 89 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,9.5 - parent: 1 - - uid: 100 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,-3.5 - parent: 1 - - uid: 101 - components: - - type: Transform - pos: -4.5,6.5 - parent: 1 - - uid: 389 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,5.5 - parent: 1 - - uid: 391 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,5.5 - parent: 1 -- proto: ToyFigurineChef - entities: - - uid: 529 - components: - - type: Transform - pos: 9.282835,-2.2273054 - parent: 1 -- proto: VendingMachineCondiments - entities: - - uid: 214 - components: - - type: Transform - pos: -3.5,-0.5 - parent: 1 -- proto: VisitorChefSpawner - entities: - - uid: 490 - components: - - type: Transform - pos: 8.5,3.5 - parent: 1 -- proto: WallShuttle - entities: - - uid: 2 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,-2.5 - parent: 1 - - uid: 5 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,-0.5 - parent: 1 - - uid: 13 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 7.5,-2.5 - parent: 1 - - uid: 15 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,-2.5 - parent: 1 - - uid: 20 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 4.5,-0.5 - parent: 1 - - uid: 21 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,-2.5 - parent: 1 - - uid: 22 - components: - - type: Transform - pos: 7.5,0.5 - parent: 1 - - uid: 25 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,-2.5 - parent: 1 - - uid: 26 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,-0.5 - parent: 1 - - uid: 27 - components: - - type: Transform - pos: 2.5,8.5 - parent: 1 - - uid: 29 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 7.5,-3.5 - parent: 1 - - uid: 31 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,7.5 - parent: 1 - - uid: 32 - components: - - type: Transform - pos: 2.5,9.5 - parent: 1 - - uid: 33 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,-3.5 - parent: 1 - - uid: 34 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 7.5,-0.5 - parent: 1 - - uid: 36 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,-4.5 - parent: 1 - - uid: 37 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,6.5 - parent: 1 - - uid: 38 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,5.5 - parent: 1 - - uid: 39 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,0.5 - parent: 1 - - uid: 40 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,1.5 - parent: 1 - - uid: 41 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,5.5 - parent: 1 - - uid: 42 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,5.5 - parent: 1 - - uid: 43 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,7.5 - parent: 1 - - uid: 44 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,-2.5 - parent: 1 - - uid: 45 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,-2.5 - parent: 1 - - uid: 46 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,8.5 - parent: 1 - - uid: 50 - components: - - type: Transform - pos: 3.5,8.5 - parent: 1 - - uid: 51 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-4.5 - parent: 1 - - uid: 52 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-5.5 - parent: 1 - - uid: 53 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,-4.5 - parent: 1 - - uid: 54 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-4.5 - parent: 1 - - uid: 55 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-5.5 - parent: 1 - - uid: 56 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,-3.5 - parent: 1 - - uid: 57 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-5.5 - parent: 1 - - uid: 60 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-5.5 - parent: 1 - - uid: 78 - components: - - type: Transform - pos: -1.5,9.5 - parent: 1 - - uid: 79 - components: - - type: Transform - pos: -1.5,8.5 - parent: 1 - - uid: 84 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 10.5,2.5 - parent: 1 - - uid: 88 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,-3.5 - parent: 1 - - uid: 90 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,0.5 - parent: 1 - - uid: 99 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 10.5,-0.5 - parent: 1 - - uid: 102 - components: - - type: Transform - pos: -4.5,1.5 - parent: 1 - - uid: 232 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,9.5 - parent: 1 - - uid: 434 - components: - - type: Transform - pos: 7.5,1.5 - parent: 1 - - uid: 442 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 10.5,1.5 - parent: 1 -- proto: WallShuttleDiagonal - entities: - - uid: 8 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 10.5,5.5 - parent: 1 - - uid: 10 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 10.5,-4.5 - parent: 1 - - uid: 12 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 7.5,-4.5 - parent: 1 - - uid: 35 - components: - - type: Transform - pos: 7.5,5.5 - parent: 1 -- proto: WallShuttleInterior - entities: - - uid: 104 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,-2.5 - parent: 1 - - uid: 105 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,-2.5 - parent: 1 - - uid: 106 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-2.5 - parent: 1 - - uid: 107 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-2.5 - parent: 1 - - uid: 108 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.50000006,-2.5 - parent: 1 - - uid: 110 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,-0.5 - parent: 1 - - uid: 121 - components: - - type: Transform - pos: 9.5,0.5 - parent: 1 - - uid: 122 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,0.5 - parent: 1 -... diff --git a/Resources/Maps/Shuttles/ShuttleEvent/microshuttle.yml b/Resources/Maps/Shuttles/ShuttleEvent/microshuttle.yml deleted file mode 100644 index 69687b2aa82..00000000000 --- a/Resources/Maps/Shuttles/ShuttleEvent/microshuttle.yml +++ /dev/null @@ -1,526 +0,0 @@ -meta: - format: 6 - postmapinit: false -tilemap: - 0: Space - 1: FloorMetalDiamond - 77: FloorShuttleOrange - 80: FloorShuttleWhite - 112: Lattice - 113: Plating -entities: -- proto: "" - entities: - - uid: 1 - components: - - type: MetaData - name: PC-Luxury - - type: Transform - pos: -0.50006104,-0.5 - parent: invalid - - type: MapGrid - chunks: - 0,0: - ind: 0,0 - tiles: UAAAAAAATQAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAcQAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAAcQAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -1,0: - ind: -1,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAATQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -1,-1: - ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcQAAAAAATQAAAAAA - version: 6 - 0,-1: - ind: 0,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAcQAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAATQAAAAAAcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - - type: Broadphase - - type: Physics - bodyStatus: InAir - angularDamping: 0.05 - linearDamping: 0.05 - fixedRotation: False - bodyType: Dynamic - - type: Fixtures - fixtures: {} - - type: OccluderTree - - type: SpreaderGrid - - type: Shuttle - - type: GridPathfinding - - type: Gravity - gravityShakeSound: !type:SoundPathSpecifier - path: /Audio/Effects/alert.ogg - - type: DecalGrid - chunkCollection: - version: 2 - nodes: - - node: - color: '#FFFFFFFF' - id: BotGreyscale - decals: - 0: -1,-1 - 1: 1,-1 - - node: - color: '#FFFFFFFF' - id: BoxGreyscale - decals: - 2: -1,0 - 3: 1,0 - - type: GridAtmosphere - version: 2 - data: - tiles: - 0,0: - 0: 19 - 1: 1088 - 0,-1: - 0: 12544 - 1: 1024 - -1,0: - 0: 8 - 1: 1088 - -1,-1: - 0: 32768 - 1: 1024 - uniqueMixes: - - volume: 2500 - temperature: 293.15 - moles: - - 21.824879 - - 82.10312 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - immutable: True - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - chunkSize: 4 - - type: GasTileOverlay - - type: RadiationGridResistance -- proto: AirCanister - entities: - - uid: 40 - components: - - type: Transform - anchored: True - pos: -0.5,0.5 - parent: 1 - - type: Physics - bodyType: Static -- proto: AirlockGlassShuttle - entities: - - uid: 2 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 -- proto: APCBasic - entities: - - uid: 41 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-1.5 - parent: 1 -- proto: AtmosDeviceFanDirectional - entities: - - uid: 49 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 -- proto: BookEarth - entities: - - uid: 51 - components: - - type: MetaData - name: 'How to Fly: For Dum Dums' - - type: Transform - pos: 0.50006104,1.4869615 - parent: 1 - - type: Paper - content: >+ - [head=2][bold]Steps to flying:[/bold][/head] - - - 1. Locate power generation or storage. Some small crafts utilize P.A.C.M.A.N. brand generators. - - - 2. Ensure your generator is connected to the power network. Some small crafts utilize only a Medium Voltage (MV) network! - - - 3. Fuel and start your generator or power source. - - - 4. Wait for your shuttle to prime, and all services to come online. - - - 5. Use the Shuttle Console to locate your destination of choice. You may find further away destinations on the Map tab when scanning for objects. - - - 6. Attempt to avoid crashing you forgot to buy insurance. - - - -- proto: CableApcExtension - entities: - - uid: 42 - components: - - type: Transform - pos: 1.5,-1.5 - parent: 1 - - uid: 43 - components: - - type: Transform - pos: 1.5,-0.5 - parent: 1 - - uid: 44 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 - - uid: 45 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 - - uid: 52 - components: - - type: Transform - pos: 0.5,1.5 - parent: 1 -- proto: CableMV - entities: - - uid: 46 - components: - - type: Transform - pos: 1.5,-0.5 - parent: 1 - - uid: 47 - components: - - type: Transform - pos: 1.5,-1.5 - parent: 1 -- proto: ChairPilotSeat - entities: - - uid: 3 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,0.5 - parent: 1 -- proto: ComputerShuttle - entities: - - uid: 4 - components: - - type: Transform - pos: 0.5,1.5 - parent: 1 -- proto: CrateMaterialPlasma - entities: - - uid: 48 - components: - - type: Transform - pos: -0.5,-0.5 - parent: 1 - - type: Lock - locked: False - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14673 - moles: - - 1.7459903 - - 6.568249 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 -- proto: Flare - entities: - - uid: 53 - components: - - type: Transform - pos: 0.7396444,1.3668714 - parent: 1 - - uid: 54 - components: - - type: Transform - pos: 0.53131104,-0.591462 - parent: 1 - - type: Item - heldPrefix: lit - - type: IgnitionSource - ignited: True -- proto: GasPassiveVent - entities: - - uid: 37 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-1.5 - parent: 1 -- proto: GasPipeBend - entities: - - uid: 34 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-0.5 - parent: 1 -- proto: GasPipeStraight - entities: - - uid: 35 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-0.5 - parent: 1 -- proto: GasPort - entities: - - uid: 18 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,0.5 - parent: 1 -- proto: GasVentPump - entities: - - uid: 19 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,0.5 - parent: 1 -- proto: GasVentScrubber - entities: - - uid: 36 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-0.5 - parent: 1 -- proto: Grille - entities: - - uid: 24 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,1.5 - parent: 1 - - uid: 25 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,2.5 - parent: 1 - - uid: 26 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,2.5 - parent: 1 - - uid: 27 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,2.5 - parent: 1 - - uid: 28 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,1.5 - parent: 1 - - uid: 29 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,0.5 - parent: 1 - - uid: 30 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-0.5 - parent: 1 - - uid: 31 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-0.5 - parent: 1 - - uid: 32 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,0.5 - parent: 1 -- proto: Gyroscope - entities: - - uid: 33 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,0.5 - parent: 1 -- proto: NTVisitorSpawner - entities: - - uid: 50 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 -- proto: PortableGeneratorPacman - entities: - - uid: 38 - components: - - type: Transform - anchored: True - pos: 1.5,-0.5 - parent: 1 - - type: Physics - bodyType: Static -- proto: PoweredSmallLight - entities: - - uid: 39 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-0.5 - parent: 1 -- proto: ShuttleWindow - entities: - - uid: 9 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,-0.5 - parent: 1 - - uid: 10 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,0.5 - parent: 1 - - uid: 11 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,1.5 - parent: 1 - - uid: 12 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,2.5 - parent: 1 - - uid: 13 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,2.5 - parent: 1 - - uid: 14 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,2.5 - parent: 1 - - uid: 15 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,1.5 - parent: 1 - - uid: 16 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,0.5 - parent: 1 - - uid: 17 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-0.5 - parent: 1 -- proto: Thruster - entities: - - uid: 20 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-1.5 - parent: 1 - - uid: 21 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-1.5 - parent: 1 - - uid: 22 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,2.5 - parent: 1 - - uid: 23 - components: - - type: Transform - pos: 2.5,2.5 - parent: 1 -- proto: WallShuttle - entities: - - uid: 5 - components: - - type: Transform - pos: -0.5,-1.5 - parent: 1 - - uid: 6 - components: - - type: Transform - pos: 1.5,-1.5 - parent: 1 -- proto: WallShuttleDiagonal - entities: - - uid: 7 - components: - - type: Transform - pos: -1.5,1.5 - parent: 1 - - uid: 8 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,1.5 - parent: 1 -... diff --git a/Resources/Maps/Shuttles/ShuttleEvent/spacebus.yml b/Resources/Maps/Shuttles/ShuttleEvent/spacebus.yml deleted file mode 100644 index ef784190615..00000000000 --- a/Resources/Maps/Shuttles/ShuttleEvent/spacebus.yml +++ /dev/null @@ -1,1663 +0,0 @@ -meta: - format: 6 - postmapinit: false -tilemap: - 0: Space - 1: FloorMetalDiamond - 96: FloorSteel - 102: FloorSteelDiagonalMini - 111: FloorTechMaint - 128: Lattice - 129: Plating -entities: -- proto: "" - entities: - - uid: 1 - components: - - type: MetaData - name: NT-Route Alpha 8b - - type: Transform - pos: -0.5104167,-0.47916666 - parent: invalid - - type: MapGrid - chunks: - 0,0: - ind: 0,0 - tiles: ZgAAAAACYAAAAAACYAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZgAAAAACZgAAAAACZgAAAAADgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZgAAAAACgQAAAAAAZgAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZgAAAAACgQAAAAAAZgAAAAACgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZgAAAAABgQAAAAAAZgAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZgAAAAACgQAAAAAAZgAAAAACgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAgQAAAAAAAQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - 0,-1: - ind: 0,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgQAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbwAAAAAAbwAAAAAAbwAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZgAAAAAAYAAAAAACYAAAAAABgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZgAAAAACYAAAAAACYAAAAAABgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -1,0: - ind: -1,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAYAAAAAADYAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAZgAAAAACZgAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAbwAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAbwAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAbwAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAgQAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -1,-1: - ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAbwAAAAAAbwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAYAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgQAAAAAAYAAAAAACYAAAAAAB - version: 6 - - type: Broadphase - - type: Physics - bodyStatus: InAir - angularDamping: 0.05 - linearDamping: 0.05 - fixedRotation: False - bodyType: Dynamic - - type: Fixtures - fixtures: {} - - type: OccluderTree - - type: SpreaderGrid - - type: Shuttle - - type: GridPathfinding - - type: Gravity - gravityShakeSound: !type:SoundPathSpecifier - path: /Audio/Effects/alert.ogg - - type: DecalGrid - chunkCollection: - version: 2 - nodes: - - node: - color: '#FFFFFFFF' - id: BotGreyscale - decals: - 0: -2,3 - - node: - color: '#9FED5819' - id: BoxGreyscale - decals: - 12: -1,-1 - - node: - color: '#FFFFFFFF' - id: BrickTileSteelCornerSe - decals: - 54: 2,1 - - node: - color: '#FFFFFFFF' - id: BrickTileSteelCornerSw - decals: - 55: -2,1 - - node: - color: '#FFFFFFFF' - id: BrickTileSteelInnerNe - decals: - 62: -2,1 - 63: 0,1 - - node: - color: '#FFFFFFFF' - id: BrickTileSteelInnerNw - decals: - 60: 0,1 - 61: 2,1 - - node: - color: '#FFFFFFFF' - id: BrickTileSteelInnerSe - decals: - 58: 0,1 - - node: - color: '#FFFFFFFF' - id: BrickTileSteelInnerSw - decals: - 59: 0,1 - - node: - color: '#FFFFFFFF' - id: BrickTileSteelLineE - decals: - 41: 2,2 - 42: 2,3 - 43: 2,4 - 44: 2,5 - 45: 0,2 - 46: 0,3 - 47: 0,4 - 48: 0,5 - 49: 0,-2 - 50: 0,-1 - 51: 0,0 - - node: - color: '#FFFFFFFF' - id: BrickTileSteelLineN - decals: - 52: -1,1 - 53: 1,1 - - node: - color: '#FFFFFFFF' - id: BrickTileSteelLineS - decals: - 56: -1,1 - 57: 1,1 - - node: - color: '#FFFFFFFF' - id: BrickTileSteelLineW - decals: - 30: 0,-2 - 31: 0,-1 - 32: 0,0 - 33: 0,2 - 34: 0,3 - 35: 0,4 - 36: 0,5 - 37: 2,2 - 38: 2,3 - 39: 2,4 - 40: 2,5 - - node: - color: '#9FED5819' - id: FullTileOverlayGreyscale - decals: - 1: -2,-2 - 2: -1,-1 - 3: -2,-1 - 4: -2,0 - 5: -1,0 - 6: 1,0 - 7: 2,0 - 8: 2,-1 - 9: 1,-1 - 10: 1,-2 - 11: 2,-2 - 13: -1,-2 - - node: - color: '#5E7C16FF' - id: MiniTileDiagonalCheckerBOverlay - decals: - 14: 0,-2 - 15: 0,-1 - 16: 0,0 - 17: 0,1 - 18: -1,1 - 19: -2,1 - 20: 1,1 - 21: 2,1 - 22: 2,2 - 23: 0,2 - 24: 0,3 - 25: 0,4 - 26: 0,5 - 27: 2,5 - 28: 2,4 - 29: 2,3 - - type: GridAtmosphere - version: 2 - data: - tiles: - 0,0: - 0: 21879 - 0,-1: - 0: 30583 - -1,0: - 0: 17612 - 0,1: - 0: 1877 - 1: 2048 - -1,1: - 0: 76 - 0,-2: - 1: 54832 - -1,-2: - 1: 27776 - -1,-1: - 0: 51404 - 2: 1024 - uniqueMixes: - - volume: 2500 - temperature: 293.15 - moles: - - 21.824879 - - 82.10312 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - immutable: True - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 293.14975 - moles: - - 21.824879 - - 82.10312 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - chunkSize: 4 - - type: GasTileOverlay - - type: RadiationGridResistance -- proto: AirCanister - entities: - - uid: 126 - components: - - type: Transform - anchored: True - pos: -0.5,-2.5 - parent: 1 - - type: Physics - bodyType: Static -- proto: AirlockExternalGlassShuttleLocked - entities: - - uid: 32 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,6.5 - parent: 1 - - uid: 33 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,6.5 - parent: 1 -- proto: AirlockGlass - entities: - - uid: 39 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,2.5 - parent: 1 - - uid: 40 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,2.5 - parent: 1 - - type: DeviceLinkSink - ports: - - DoorBolt - - Open - - Close - - Toggle - - uid: 41 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,2.5 - parent: 1 - - type: DeviceLinkSink - ports: - - DoorBolt - - Open - - Close - - Toggle -- proto: APCBasic - entities: - - uid: 136 - components: - - type: Transform - pos: -0.5,2.5 - parent: 1 -- proto: AtmosDeviceFanTiny - entities: - - uid: 199 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,6.5 - parent: 1 - - uid: 200 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,6.5 - parent: 1 -- proto: BorgCharger - entities: - - uid: 65 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-1.5 - parent: 1 - - type: EntityStorage - open: True - removedMasks: 20 - - type: Fixtures - fixtures: - fix1: - shape: !type:PolygonShape - radius: 0.01 - vertices: - - -0.45,-0.45 - - 0.45,-0.45 - - 0.45,0.45 - - -0.45,0.45 - mask: - - Impassable - - TableLayer - - LowImpassable - layer: - - BulletImpassable - - Opaque - density: 190 - hard: True - restitution: 0 - friction: 0.4 -- proto: ButtonFrameGrey - entities: - - uid: 133 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,4.5 - parent: 1 -- proto: CableApcExtension - entities: - - uid: 166 - components: - - type: Transform - pos: -0.5,2.5 - parent: 1 - - uid: 167 - components: - - type: Transform - pos: -1.5,2.5 - parent: 1 - - uid: 168 - components: - - type: Transform - pos: -1.5,3.5 - parent: 1 - - uid: 169 - components: - - type: Transform - pos: -1.5,4.5 - parent: 1 - - uid: 170 - components: - - type: Transform - pos: -1.5,5.5 - parent: 1 - - uid: 171 - components: - - type: Transform - pos: -1.5,6.5 - parent: 1 - - uid: 172 - components: - - type: Transform - pos: -2.5,6.5 - parent: 1 - - uid: 173 - components: - - type: Transform - pos: -0.5,6.5 - parent: 1 - - uid: 174 - components: - - type: Transform - pos: -0.5,5.5 - parent: 1 - - uid: 175 - components: - - type: Transform - pos: -2.5,5.5 - parent: 1 - - uid: 176 - components: - - type: Transform - pos: -1.5,1.5 - parent: 1 - - uid: 177 - components: - - type: Transform - pos: -1.5,0.5 - parent: 1 - - uid: 178 - components: - - type: Transform - pos: -1.5,-0.5 - parent: 1 - - uid: 179 - components: - - type: Transform - pos: -0.5,-0.5 - parent: 1 - - uid: 180 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 - - uid: 181 - components: - - type: Transform - pos: 1.5,-0.5 - parent: 1 - - uid: 182 - components: - - type: Transform - pos: 2.5,-0.5 - parent: 1 - - uid: 183 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 - - uid: 184 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 - - uid: 185 - components: - - type: Transform - pos: -0.5,-2.5 - parent: 1 - - uid: 186 - components: - - type: Transform - pos: -0.5,-3.5 - parent: 1 - - uid: 187 - components: - - type: Transform - pos: 1.5,-2.5 - parent: 1 - - uid: 188 - components: - - type: Transform - pos: 1.5,-3.5 - parent: 1 - - uid: 189 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 - - uid: 190 - components: - - type: Transform - pos: 0.5,1.5 - parent: 1 - - uid: 191 - components: - - type: Transform - pos: 1.5,1.5 - parent: 1 - - uid: 192 - components: - - type: Transform - pos: 1.5,2.5 - parent: 1 - - uid: 193 - components: - - type: Transform - pos: 1.5,3.5 - parent: 1 - - uid: 194 - components: - - type: Transform - pos: 1.5,4.5 - parent: 1 - - uid: 195 - components: - - type: Transform - pos: 1.5,5.5 - parent: 1 - - uid: 196 - components: - - type: Transform - pos: 2.5,4.5 - parent: 1 - - uid: 197 - components: - - type: Transform - pos: 3.5,4.5 - parent: 1 - - uid: 198 - components: - - type: Transform - pos: -0.5,3.5 - parent: 1 -- proto: CableHV - entities: - - uid: 153 - components: - - type: Transform - pos: 0.5,-3.5 - parent: 1 - - uid: 154 - components: - - type: Transform - pos: -0.5,-3.5 - parent: 1 - - uid: 155 - components: - - type: Transform - pos: -0.5,-2.5 - parent: 1 - - uid: 156 - components: - - type: Transform - pos: -1.5,-2.5 - parent: 1 -- proto: CableMV - entities: - - uid: 157 - components: - - type: Transform - pos: -1.5,-2.5 - parent: 1 - - uid: 158 - components: - - type: Transform - pos: -0.5,-2.5 - parent: 1 - - uid: 159 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 - - uid: 160 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 - - uid: 161 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 - - uid: 162 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 - - uid: 163 - components: - - type: Transform - pos: 0.5,1.5 - parent: 1 - - uid: 164 - components: - - type: Transform - pos: -0.5,1.5 - parent: 1 - - uid: 165 - components: - - type: Transform - pos: -0.5,2.5 - parent: 1 -- proto: CableTerminal - entities: - - uid: 152 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-3.5 - parent: 1 -- proto: ChairPilotSeat - entities: - - uid: 66 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-1.5 - parent: 1 - - uid: 67 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-1.5 - parent: 1 - - uid: 68 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-1.5 - parent: 1 - - uid: 69 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,0.5 - parent: 1 - - uid: 70 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,0.5 - parent: 1 - - uid: 71 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,0.5 - parent: 1 - - uid: 72 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,0.5 - parent: 1 - - uid: 95 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,4.5 - parent: 1 -- proto: ClosetEmergencyFilledRandom - entities: - - uid: 150 - components: - - type: Transform - pos: 1.5,-2.5 - parent: 1 -- proto: ComputerShuttle - entities: - - uid: 31 - components: - - type: Transform - pos: -1.5,5.5 - parent: 1 -- proto: GasPassiveVent - entities: - - uid: 64 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeBend - entities: - - uid: 103 - components: - - type: Transform - pos: 0.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 104 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 108 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 109 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 114 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 117 - components: - - type: Transform - pos: 1.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 118 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 124 - components: - - type: Transform - pos: -0.5,5.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeFourway - entities: - - uid: 101 - components: - - type: Transform - pos: 0.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 112 - components: - - type: Transform - pos: 1.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeStraight - entities: - - uid: 100 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 102 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 105 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 106 - components: - - type: Transform - pos: -1.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 107 - components: - - type: Transform - pos: -1.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 110 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 111 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 113 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 116 - components: - - type: Transform - pos: 1.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 119 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 120 - components: - - type: Transform - pos: -0.5,1.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 121 - components: - - type: Transform - pos: -0.5,2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 122 - components: - - type: Transform - pos: -0.5,3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 123 - components: - - type: Transform - pos: -0.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPipeTJunction - entities: - - uid: 99 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 115 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-3.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GasPort - entities: - - uid: 96 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasVentPump - entities: - - uid: 92 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 93 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 94 - components: - - type: Transform - pos: -1.5,4.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 98 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#0335FCFF' -- proto: GasVentScrubber - entities: - - uid: 89 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,5.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 90 - components: - - type: Transform - pos: -1.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 91 - components: - - type: Transform - pos: 2.5,-0.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 97 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 - - type: AtmosPipeColor - color: '#FF1212FF' -- proto: GeneratorBasic15kW - entities: - - uid: 61 - components: - - type: Transform - pos: 0.5,-3.5 - parent: 1 -- proto: GravityGeneratorMini - entities: - - uid: 62 - components: - - type: Transform - pos: 1.5,-3.5 - parent: 1 -- proto: Grille - entities: - - uid: 73 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-1.5 - parent: 1 - - uid: 74 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,0.5 - parent: 1 - - uid: 75 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,0.5 - parent: 1 - - uid: 76 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-1.5 - parent: 1 - - uid: 77 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,5.5 - parent: 1 - - uid: 78 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,6.5 - parent: 1 - - uid: 79 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,6.5 - parent: 1 - - uid: 80 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,6.5 - parent: 1 - - uid: 81 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,5.5 - parent: 1 - - uid: 82 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,3.5 - parent: 1 - - uid: 83 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,3.5 - parent: 1 - - uid: 84 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,4.5 - parent: 1 - - uid: 85 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,5.5 - parent: 1 - - uid: 86 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,4.5 - parent: 1 -- proto: Gyroscope - entities: - - uid: 149 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-2.5 - parent: 1 -- proto: NTVisitorSpawner10 - entities: - - uid: 203 - components: - - type: Transform - pos: -1.5,0.5 - parent: 1 - - uid: 204 - components: - - type: Transform - pos: -0.5,0.5 - parent: 1 - - uid: 205 - components: - - type: Transform - pos: 1.5,0.5 - parent: 1 - - uid: 206 - components: - - type: Transform - pos: 2.5,0.5 - parent: 1 - - uid: 207 - components: - - type: Transform - pos: 2.5,-1.5 - parent: 1 - - uid: 208 - components: - - type: Transform - pos: 1.5,-1.5 - parent: 1 - - uid: 209 - components: - - type: Transform - pos: -0.5,-1.5 - parent: 1 -- proto: PlasmaReinforcedWindowDirectional - entities: - - uid: 57 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-4.5 - parent: 1 -- proto: PosterContrabandMissingGloves - entities: - - uid: 137 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,1.5 - parent: 1 -- proto: PosterContrabandRobustSoftdrinks - entities: - - uid: 138 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,-0.5 - parent: 1 -- proto: PosterContrabandSmoke - entities: - - uid: 139 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-0.5 - parent: 1 -- proto: PosterContrabandSpaceUp - entities: - - uid: 140 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,5.5 - parent: 1 -- proto: PosterLegitBlessThisSpess - entities: - - uid: 135 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,3.5 - parent: 1 -- proto: PosterLegitTheOwl - entities: - - uid: 142 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,1.5 - parent: 1 -- proto: PosterLegitWalk - entities: - - uid: 141 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,3.5 - parent: 1 -- proto: PosterLegitWorkForAFuture - entities: - - uid: 143 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,2.5 - parent: 1 -- proto: Poweredlight - entities: - - uid: 127 - components: - - type: Transform - pos: -0.5,1.5 - parent: 1 - - uid: 128 - components: - - type: Transform - pos: 1.5,1.5 - parent: 1 - - uid: 129 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-4.5 - parent: 1 - - uid: 130 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,3.5 - parent: 1 -- proto: Railing - entities: - - uid: 146 - components: - - type: Transform - pos: 0.5,-6.5 - parent: 1 - - uid: 147 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,-5.5 - parent: 1 - - uid: 148 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-5.5 - parent: 1 -- proto: RailingCorner - entities: - - uid: 144 - components: - - type: Transform - pos: 1.5,-6.5 - parent: 1 - - uid: 145 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,-6.5 - parent: 1 -- proto: ReinforcedWindow - entities: - - uid: 30 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,5.5 - parent: 1 - - uid: 34 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,4.5 - parent: 1 - - uid: 35 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,3.5 - parent: 1 - - uid: 36 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,3.5 - parent: 1 -- proto: ShuttleWindow - entities: - - uid: 8 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,-1.5 - parent: 1 - - uid: 10 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-1.5 - parent: 1 - - uid: 14 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,4.5 - parent: 1 - - uid: 18 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 3.5,0.5 - parent: 1 - - uid: 20 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,0.5 - parent: 1 - - uid: 25 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,5.5 - parent: 1 - - uid: 26 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,6.5 - parent: 1 - - uid: 27 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,6.5 - parent: 1 - - uid: 28 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,6.5 - parent: 1 - - uid: 29 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,5.5 - parent: 1 -- proto: SignalButtonDirectional - entities: - - uid: 134 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,4.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 87: - - Pressed: DoorBolt -- proto: SMESBasic - entities: - - uid: 60 - components: - - type: Transform - pos: -0.5,-3.5 - parent: 1 -- proto: StairDark - entities: - - uid: 125 - components: - - type: Transform - pos: -1.5,2.5 - parent: 1 -- proto: SubstationBasic - entities: - - uid: 59 - components: - - type: Transform - pos: -1.5,-2.5 - parent: 1 -- proto: Table - entities: - - uid: 88 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,4.5 - parent: 1 -- proto: Thruster - entities: - - uid: 16 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-4.5 - parent: 1 - - uid: 49 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-5.5 - parent: 1 - - uid: 50 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-5.5 - parent: 1 - - uid: 51 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-4.5 - parent: 1 - - uid: 52 - components: - - type: Transform - pos: 1.5,6.5 - parent: 1 -- proto: TwoWayLever - entities: - - uid: 131 - components: - - type: Transform - pos: -1.7452531,3.4329984 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 201: - - Left: DoorBolt - 40: - - Right: DoorBolt - - uid: 132 - components: - - type: Transform - pos: -1.2348363,3.4329984 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 202: - - Left: DoorBolt - 41: - - Right: DoorBolt -- proto: VisitorServiceWorkerSpawner - entities: - - uid: 151 - components: - - type: Transform - pos: -1.5,4.5 - parent: 1 -- proto: WallShuttle - entities: - - uid: 2 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,-5.5 - parent: 1 - - uid: 3 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,-4.5 - parent: 1 - - uid: 4 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 1.5,-4.5 - parent: 1 - - uid: 5 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,-3.5 - parent: 1 - - uid: 6 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-3.5 - parent: 1 - - uid: 7 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-2.5 - parent: 1 - - uid: 9 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-0.5 - parent: 1 - - uid: 11 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,1.5 - parent: 1 - - uid: 12 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,2.5 - parent: 1 - - uid: 13 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,3.5 - parent: 1 - - uid: 15 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,5.5 - parent: 1 - - uid: 17 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,-2.5 - parent: 1 - - uid: 19 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,-0.5 - parent: 1 - - uid: 21 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,1.5 - parent: 1 - - uid: 22 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,2.5 - parent: 1 - - uid: 23 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,3.5 - parent: 1 - - uid: 24 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,4.5 - parent: 1 -- proto: WallShuttleDiagonal - entities: - - uid: 42 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-5.5 - parent: 1 - - uid: 43 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-4.5 - parent: 1 - - uid: 44 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,-3.5 - parent: 1 - - uid: 45 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-5.5 - parent: 1 - - uid: 46 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-4.5 - parent: 1 - - uid: 47 - components: - - type: Transform - pos: 2.5,-3.5 - parent: 1 - - uid: 48 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,6.5 - parent: 1 -- proto: WallShuttleInterior - entities: - - uid: 37 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,2.5 - parent: 1 - - uid: 38 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,2.5 - parent: 1 -- proto: Windoor - entities: - - uid: 87 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,4.5 - parent: 1 - - type: DeviceLinkSink - ports: - - DoorBolt - - Open - - Close - - Toggle -- proto: WindoorSecure - entities: - - uid: 58 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 - - uid: 201 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,5.5 - parent: 1 - - type: DeviceLinkSink - ports: - - DoorBolt - - Open - - Close - - Toggle - - uid: 202 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,5.5 - parent: 1 - - type: DeviceLinkSink - ports: - - DoorBolt - - Open - - Close - - Toggle -- proto: WindowFrostedDirectional - entities: - - uid: 53 - components: - - type: Transform - pos: -1.5,-1.5 - parent: 1 - - uid: 54 - components: - - type: Transform - pos: -0.5,-1.5 - parent: 1 - - uid: 55 - components: - - type: Transform - pos: 1.5,-1.5 - parent: 1 - - uid: 56 - components: - - type: Transform - pos: 2.5,-1.5 - parent: 1 -- proto: Wrench - entities: - - uid: 63 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 -... diff --git a/Resources/Maps/Shuttles/ShuttleEvent/traveling_china_cuisine.yml b/Resources/Maps/Shuttles/ShuttleEvent/traveling_china_cuisine.yml deleted file mode 100644 index 00e4c447bbd..00000000000 --- a/Resources/Maps/Shuttles/ShuttleEvent/traveling_china_cuisine.yml +++ /dev/null @@ -1,1880 +0,0 @@ -meta: - format: 6 - postmapinit: false -tilemap: - 0: Space - 14: FloorBar - 40: FloorDirt - 44: FloorFreezer - 50: FloorGrassLight - 76: FloorRGlass - 85: FloorShuttleWhite - 96: FloorSteelDirty - 98: FloorSteelLime - 106: FloorTechMaint3 - 112: FloorWhiteMini - 117: FloorWhitePlastic - 119: FloorWoodTile - 120: Lattice - 121: Plating -entities: -- proto: "" - entities: - - uid: 1 - components: - - type: MetaData - name: SRV "Salami-Salami" - - type: Transform - pos: -0.5104167,-0.5 - parent: invalid - - type: MapGrid - chunks: - 0,0: - ind: 0,0 - tiles: YgAAAAAAYgAAAAAAYgAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeQAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -1,0: - ind: -1,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAVQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - -1,-1: - ind: -1,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAMgAAAAAAMgAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAATAAAAAAADgAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAdwAAAAAAdwAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeQAAAAAAeQAAAAAAdQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAYgAAAAAA - version: 6 - 0,-1: - ind: 0,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAeAAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAATAAAAAAALAAAAAAAYAAAAAAAYAAAAAAAYAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAATAAAAAAALAAAAAAAcAAAAAAAagAAAAAAKAAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAATAAAAAAALAAAAAAAcAAAAAAAYAAAAAAAeQAAAAAAeQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAATAAAAAAALAAAAAAAcAAAAAAAeQAAAAAAeQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAALAAAAAAALAAAAAAAdQAAAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAdQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - version: 6 - - type: Broadphase - - type: Physics - bodyStatus: InAir - angularDamping: 0.05 - linearDamping: 0.05 - fixedRotation: False - bodyType: Dynamic - - type: Fixtures - fixtures: {} - - type: OccluderTree - - type: SpreaderGrid - - type: Shuttle - - type: GridPathfinding - - type: Gravity - gravityShakeSound: !type:SoundPathSpecifier - path: /Audio/Effects/alert.ogg - - type: DecalGrid - chunkCollection: - version: 2 - nodes: - - node: - color: '#FFFFFFFF' - id: FlowersBROne - decals: - 3: -2,-7 - - node: - color: '#FFFFFFFF' - id: Flowerspv2 - decals: - 2: -3,-7 - - node: - color: '#FFFFFFFF' - id: Flowersy3 - decals: - 0: -2,-7 - 1: -3,-7 - - type: GridAtmosphere - version: 2 - data: - tiles: - 0,0: - 0: 7 - 1: 128 - 0,-1: - 0: 29303 - -1,0: - 1: 129 - -1,-1: - 0: 28686 - 1: 272 - -1,-2: - 1: 28 - 0: 65024 - -1,-3: - 1: 49152 - 0,-3: - 1: 61440 - 0,-2: - 0: 32624 - 1: 8 - 1,-3: - 1: 4096 - 1,-2: - 1: 65 - 0: 13056 - 1,-1: - 0: 3 - 1: 320 - uniqueMixes: - - volume: 2500 - temperature: 293.15 - moles: - - 21.824879 - - 82.10312 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - immutable: True - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - chunkSize: 4 - - type: GasTileOverlay - - type: RadiationGridResistance - - type: NavMap -- proto: AirlockShuttle - entities: - - uid: 2 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,-4.5 - parent: 1 - - uid: 3 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,-0.5 - parent: 1 -- proto: APCBasic - entities: - - uid: 4 - components: - - type: Transform - pos: 2.5,-1.5 - parent: 1 -- proto: AtmosDeviceFanDirectional - entities: - - uid: 5 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,-4.5 - parent: 1 - - uid: 6 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5,-0.5 - parent: 1 -- proto: BarSignMaidCafe - entities: - - uid: 7 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,-3.5 - parent: 1 -- proto: BlastDoor - entities: - - uid: 8 - components: - - type: Transform - pos: -0.5,-0.5 - parent: 1 -- proto: Bucket - entities: - - uid: 9 - components: - - type: Transform - pos: 0.32937366,-3.3336349 - parent: 1 -- proto: ButchCleaver - entities: - - uid: 11 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: CableApcExtension - entities: - - uid: 27 - components: - - type: Transform - pos: 1.5,-4.5 - parent: 1 - - uid: 41 - components: - - type: Transform - pos: 2.5,-3.5 - parent: 1 - - uid: 42 - components: - - type: Transform - pos: 2.5,-1.5 - parent: 1 - - uid: 43 - components: - - type: Transform - pos: 2.5,-0.5 - parent: 1 - - uid: 44 - components: - - type: Transform - pos: 2.5,0.5 - parent: 1 - - uid: 45 - components: - - type: Transform - pos: 1.5,0.5 - parent: 1 - - uid: 46 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 - - uid: 47 - components: - - type: Transform - pos: -0.5,0.5 - parent: 1 - - uid: 48 - components: - - type: Transform - pos: 2.5,-2.5 - parent: 1 - - uid: 49 - components: - - type: Transform - pos: 2.5,-4.5 - parent: 1 - - uid: 50 - components: - - type: Transform - pos: 2.5,-5.5 - parent: 1 - - uid: 51 - components: - - type: Transform - pos: 2.5,-6.5 - parent: 1 - - uid: 52 - components: - - type: Transform - pos: 1.5,-6.5 - parent: 1 - - uid: 53 - components: - - type: Transform - pos: 0.5,-6.5 - parent: 1 - - uid: 54 - components: - - type: Transform - pos: 1.5,-7.5 - parent: 1 - - uid: 55 - components: - - type: Transform - pos: -0.5,-0.5 - parent: 1 - - uid: 56 - components: - - type: Transform - pos: -0.5,-1.5 - parent: 1 - - uid: 57 - components: - - type: Transform - pos: 3.5,-3.5 - parent: 1 - - uid: 58 - components: - - type: Transform - pos: 4.5,-3.5 - parent: 1 - - uid: 59 - components: - - type: Transform - pos: 5.5,-3.5 - parent: 1 - - uid: 60 - components: - - type: Transform - pos: -0.5,-7.5 - parent: 1 - - uid: 61 - components: - - type: Transform - pos: 3.5,-7.5 - parent: 1 - - uid: 62 - components: - - type: Transform - pos: 0.5,-7.5 - parent: 1 - - uid: 63 - components: - - type: Transform - pos: 2.5,-7.5 - parent: 1 - - uid: 64 - components: - - type: Transform - pos: -1.5,-0.5 - parent: 1 - - uid: 96 - components: - - type: Transform - pos: 0.5,-4.5 - parent: 1 - - uid: 97 - components: - - type: Transform - pos: -0.5,-4.5 - parent: 1 - - uid: 233 - components: - - type: Transform - pos: -1.5,-4.5 - parent: 1 - - uid: 234 - components: - - type: Transform - pos: -2.5,-4.5 - parent: 1 - - uid: 235 - components: - - type: Transform - pos: -2.5,-0.5 - parent: 1 - - uid: 236 - components: - - type: Transform - pos: 3.5,-5.5 - parent: 1 - - uid: 237 - components: - - type: Transform - pos: 4.5,-5.5 - parent: 1 - - uid: 238 - components: - - type: Transform - pos: 5.5,-5.5 - parent: 1 -- proto: CableHV - entities: - - uid: 65 - components: - - type: Transform - pos: 3.5,-0.5 - parent: 1 - - uid: 66 - components: - - type: Transform - pos: 3.5,0.5 - parent: 1 -- proto: CableMV - entities: - - uid: 67 - components: - - type: Transform - pos: 2.5,-1.5 - parent: 1 - - uid: 68 - components: - - type: Transform - pos: 3.5,-1.5 - parent: 1 - - uid: 69 - components: - - type: Transform - pos: 3.5,-0.5 - parent: 1 -- proto: ChairPilotSeat - entities: - - uid: 70 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-0.5 - parent: 1 -- proto: ClosetMaintenance - entities: - - uid: 71 - components: - - type: Transform - pos: 0.5,0.5 - parent: 1 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14786 - moles: - - 1.8856695 - - 7.0937095 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 80 - - 76 - - 73 - - 74 - - 78 - - 81 - - 77 - - 72 - - 75 - - 79 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null -- proto: ClothingHeadHatCasa - entities: - - uid: 72 - components: - - type: Transform - parent: 71 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingHeadHelmetEVALarge - entities: - - uid: 82 - components: - - type: Transform - pos: 0.30235916,-0.6487955 - parent: 1 -- proto: ClothingOuterDameDane - entities: - - uid: 79 - components: - - type: Transform - parent: 71 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingOuterDogi - entities: - - uid: 73 - components: - - type: Transform - parent: 71 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingOuterHardsuitAncientEVA - entities: - - uid: 74 - components: - - type: Transform - parent: 71 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingShoesDameDane - entities: - - uid: 75 - components: - - type: Transform - parent: 71 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingUniformJumpsuitDameDane - entities: - - uid: 76 - components: - - type: Transform - parent: 71 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ClothingUniformJumpsuitFamilyGuy - entities: - - uid: 83 - components: - - type: Transform - pos: 4.1954827,-4.679846 - parent: 1 -- proto: ClothingUniformJumpsuitKimono - entities: - - uid: 77 - components: - - type: Transform - parent: 71 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: ComputerShuttle - entities: - - uid: 84 - components: - - type: Transform - pos: 1.5,0.5 - parent: 1 -- proto: CrateFreezer - entities: - - uid: 10 - components: - - type: Transform - pos: 5.5,-5.5 - parent: 1 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14783 - moles: - - 1.8856695 - - 7.0937095 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 12 - - 26 - - 31 - - 39 - - 36 - - 28 - - 35 - - 23 - - 34 - - 21 - - 30 - - 22 - - 14 - - 40 - - 20 - - 18 - - 17 - - 19 - - 15 - - 16 - - 38 - - 32 - - 33 - - 37 - - 25 - - 13 - - 24 - - 29 - - 11 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null -- proto: DrinkCanPack - entities: - - uid: 85 - components: - - type: Transform - pos: 2.4942255,-4.6459746 - parent: 1 -- proto: DrinkGlass - entities: - - uid: 86 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.9675496,-6.258177 - parent: 1 - - uid: 87 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.9050496,-6.383177 - parent: 1 - - uid: 88 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.8425496,-6.086302 - parent: 1 -- proto: EggySeeds - entities: - - uid: 89 - components: - - type: Transform - pos: 4.8663497,-4.2508607 - parent: 1 -- proto: ExtendedEmergencyOxygenTankFilled - entities: - - uid: 78 - components: - - type: Transform - parent: 71 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FolderSpawner - entities: - - uid: 90 - components: - - type: Transform - pos: 2.6497245,-0.5822141 - parent: 1 -- proto: FoodBowlBig - entities: - - uid: 12 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 13 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodBreadMoldySlice - entities: - - uid: 91 - components: - - type: Transform - pos: 4.5392327,-5.695471 - parent: 1 -- proto: FoodBreadTofu - entities: - - uid: 92 - components: - - type: Transform - pos: -0.56204444,-5.412466 - parent: 1 -- proto: FoodButter - entities: - - uid: 14 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodEgg - entities: - - uid: 15 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 16 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 17 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 18 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 19 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 20 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodMealSashimi - entities: - - uid: 93 - components: - - type: Transform - pos: 2.532601,-3.619526 - parent: 1 - - uid: 94 - components: - - type: Transform - pos: 2.5117679,-3.192443 - parent: 1 -- proto: FoodMeat - entities: - - uid: 21 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 22 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodMeatBear - entities: - - uid: 23 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 24 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodMeatBearCooked - entities: - - uid: 25 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodMeatClown - entities: - - uid: 26 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodMeatDragon - entities: - - uid: 98 - components: - - type: Transform - parent: 95 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodMeatFish - entities: - - uid: 112 - components: - - type: Transform - pos: 2.3519397,-4.0480876 - parent: 1 - - uid: 113 - components: - - type: Transform - pos: 2.5602732,-4.4543376 - parent: 1 -- proto: FoodMeatGoliath - entities: - - uid: 28 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 29 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodMeatHuman - entities: - - uid: 30 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodMeatLizard - entities: - - uid: 31 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodMeatPlant - entities: - - uid: 32 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodMeatRat - entities: - - uid: 33 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodMeatRouny - entities: - - uid: 34 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 35 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodMeatSnake - entities: - - uid: 36 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 37 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodMeatSpider - entities: - - uid: 38 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodNoodlesButter - entities: - - uid: 99 - components: - - type: Transform - parent: 95 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 100 - components: - - type: Transform - parent: 95 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodNoodlesChowmein - entities: - - uid: 101 - components: - - type: Transform - parent: 95 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodNoodlesMeatball - entities: - - uid: 102 - components: - - type: Transform - parent: 95 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodRiceBoiled - entities: - - uid: 103 - components: - - type: Transform - parent: 95 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 104 - components: - - type: Transform - parent: 95 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 105 - components: - - type: Transform - parent: 95 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 114 - components: - - type: Transform - pos: 4.2319775,-4.0944357 - parent: 1 -- proto: FoodRiceEgg - entities: - - uid: 106 - components: - - type: Transform - parent: 95 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 107 - components: - - type: Transform - parent: 95 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodRiceGumbo - entities: - - uid: 108 - components: - - type: Transform - parent: 95 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodRicePork - entities: - - uid: 109 - components: - - type: Transform - parent: 95 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 110 - components: - - type: Transform - parent: 95 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodRicePudding - entities: - - uid: 111 - components: - - type: Transform - parent: 95 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: FoodTofu - entities: - - uid: 115 - components: - - type: Transform - pos: -2.4622643,-0.46992433 - parent: 1 -- proto: GeneratorWallmountAPU - entities: - - uid: 116 - components: - - type: Transform - pos: 3.5,0.5 - parent: 1 - - type: PowerSupplier - supplyRampRate: 1000 - supplyRampTolerance: 1000 - supplyRate: 16000 -- proto: GravityGeneratorMini - entities: - - uid: 117 - components: - - type: Transform - pos: 5.5,-3.5 - parent: 1 -- proto: Grille - entities: - - uid: 118 - components: - - type: Transform - pos: 1.5,1.5 - parent: 1 - - uid: 119 - components: - - type: Transform - pos: 0.5,1.5 - parent: 1 - - uid: 120 - components: - - type: Transform - pos: 2.5,1.5 - parent: 1 - - uid: 121 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,0.5 - parent: 1 - - uid: 122 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,0.5 - parent: 1 -- proto: Gyroscope - entities: - - uid: 123 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,-3.5 - parent: 1 -- proto: HospitalCurtains - entities: - - uid: 124 - components: - - type: Transform - pos: 3.5,-5.5 - parent: 1 -- proto: HospitalCurtainsOpen - entities: - - uid: 125 - components: - - type: Transform - pos: 1.5,-1.5 - parent: 1 -- proto: hydroponicsSoil - entities: - - uid: 126 - components: - - type: Transform - pos: 5.5,-4.5 - parent: 1 -- proto: HydroponicsToolClippers - entities: - - uid: 127 - components: - - type: Transform - pos: 4.6706424,-4.7269287 - parent: 1 -- proto: HydroponicsToolMiniHoe - entities: - - uid: 128 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.0306153,-4.877862 - parent: 1 -- proto: KitchenElectricGrill - entities: - - uid: 129 - components: - - type: Transform - pos: 0.5,-6.5 - parent: 1 -- proto: KitchenKnife - entities: - - uid: 80 - components: - - type: Transform - parent: 71 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: KitchenMicrowave - entities: - - uid: 130 - components: - - type: Transform - pos: 2.5,-2.5 - parent: 1 -- proto: KitchenReagentGrinder - entities: - - uid: 131 - components: - - type: Transform - pos: 1.5,-6.5 - parent: 1 -- proto: LockerFreezerBase - entities: - - uid: 95 - components: - - type: Transform - pos: 0.5,-2.5 - parent: 1 - - type: Lock - locked: False - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14798 - moles: - - 1.8856695 - - 7.0937095 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 110 - - 109 - - 103 - - 104 - - 105 - - 98 - - 99 - - 101 - - 100 - - 106 - - 102 - - 108 - - 107 - - 111 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null -- proto: MaterialSheetMeat - entities: - - uid: 39 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: Mattress - entities: - - uid: 132 - components: - - type: Transform - pos: 4.5,-4.5 - parent: 1 -- proto: NitrogenTankFilled - entities: - - uid: 81 - components: - - type: Transform - parent: 71 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: NoticeBoard - entities: - - uid: 133 - components: - - type: Transform - pos: -1.5,-2.5 - parent: 1 -- proto: Pen - entities: - - uid: 232 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.27949,-0.47790605 - parent: 1 -- proto: PlushieVox - entities: - - uid: 134 - components: - - type: Transform - pos: -0.5571752,-4.2839594 - parent: 1 -- proto: PosterLegitFruitBowl - entities: - - uid: 135 - components: - - type: Transform - pos: -2.5,-2.5 - parent: 1 -- proto: PottedPlantRandom - entities: - - uid: 136 - components: - - type: Transform - pos: -2.5,-3.5 - parent: 1 - - uid: 137 - components: - - type: Transform - pos: -2.5,-5.5 - parent: 1 -- proto: Poweredlight - entities: - - uid: 138 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-5.5 - parent: 1 - - uid: 139 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-4.5 - parent: 1 - - uid: 140 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-0.5 - parent: 1 -- proto: PoweredSmallLight - entities: - - uid: 141 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-0.5 - parent: 1 - - uid: 142 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,-4.5 - parent: 1 - - uid: 143 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-6.5 - parent: 1 -- proto: RagItem - entities: - - uid: 144 - components: - - type: Transform - pos: -0.47175223,-3.4022202 - parent: 1 -- proto: RandomSpawner100 - entities: - - uid: 145 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-4.5 - parent: 1 -- proto: ReagentContainerFlour - entities: - - uid: 40 - components: - - type: Transform - parent: 10 - - type: Physics - canCollide: False - - type: InsideEntityStorage -- proto: RiceSeeds - entities: - - uid: 146 - components: - - type: Transform - pos: 4.716352,-4.1569357 - parent: 1 -- proto: RubberStampTrader - entities: - - uid: 147 - components: - - type: Transform - pos: 2.6184745,-0.09783912 - parent: 1 -- proto: Shovel - entities: - - uid: 148 - components: - - type: Transform - pos: 5.0644813,-4.460167 - parent: 1 -- proto: ShuttersWindowOpen - entities: - - uid: 149 - components: - - type: Transform - pos: -0.5,-4.5 - parent: 1 - - uid: 150 - components: - - type: Transform - pos: -0.5,-3.5 - parent: 1 - - uid: 151 - components: - - type: Transform - pos: -0.5,-5.5 - parent: 1 - - uid: 152 - components: - - type: Transform - pos: -3.5,-4.5 - parent: 1 -- proto: ShuttleWindow - entities: - - uid: 153 - components: - - type: Transform - pos: 1.5,1.5 - parent: 1 - - uid: 154 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,1.5 - parent: 1 - - uid: 155 - components: - - type: Transform - pos: -2.5,-6.5 - parent: 1 - - uid: 156 - components: - - type: Transform - pos: -1.5,-6.5 - parent: 1 - - uid: 157 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,0.5 - parent: 1 - - uid: 158 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,0.5 - parent: 1 - - uid: 159 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 0.5,1.5 - parent: 1 -- proto: SignalButton - entities: - - uid: 160 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-1.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 150: - - Pressed: Toggle - 149: - - Pressed: Toggle - 151: - - Pressed: Toggle - 152: - - Pressed: Toggle - - uid: 161 - components: - - type: Transform - pos: 1.5,0.5 - parent: 1 - - type: DeviceLinkSource - linkedPorts: - 8: - - Pressed: Toggle -- proto: SignDoors - entities: - - uid: 162 - components: - - type: Transform - pos: -0.5,0.5 - parent: 1 -- proto: SinkStemlessWater - entities: - - uid: 163 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-6.5 - parent: 1 -- proto: SodaDispenser - entities: - - uid: 164 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-6.5 - parent: 1 -- proto: StoolBar - entities: - - uid: 165 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-3.5 - parent: 1 - - uid: 166 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-4.5 - parent: 1 - - uid: 167 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-5.5 - parent: 1 -- proto: SubstationWallBasic - entities: - - uid: 168 - components: - - type: Transform - pos: 3.5,-0.5 - parent: 1 -- proto: Table - entities: - - uid: 169 - components: - - type: Transform - pos: 2.5,-6.5 - parent: 1 - - uid: 170 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-6.5 - parent: 1 - - uid: 171 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-6.5 - parent: 1 -- proto: TableGlass - entities: - - uid: 172 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-4.5 - parent: 1 - - uid: 173 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-3.5 - parent: 1 - - uid: 174 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-2.5 - parent: 1 -- proto: TableStone - entities: - - uid: 175 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,-4.5 - parent: 1 - - uid: 176 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,-3.5 - parent: 1 - - uid: 177 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,-5.5 - parent: 1 -- proto: TableWood - entities: - - uid: 178 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-0.5 - parent: 1 -- proto: Thruster - entities: - - uid: 179 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 1.5,-8.5 - parent: 1 - - uid: 180 - components: - - type: Transform - pos: 4.5,-1.5 - parent: 1 - - uid: 181 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 0.5,-8.5 - parent: 1 - - uid: 182 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 4.5,-7.5 - parent: 1 - - uid: 183 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 2.5,-8.5 - parent: 1 - - uid: 184 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-7.5 - parent: 1 -- proto: ToolboxMechanicalFilled - entities: - - uid: 185 - components: - - type: Transform - pos: 0.5731925,-0.16962886 - parent: 1 -- proto: VendingMachineChang - entities: - - uid: 188 - components: - - type: Transform - pos: 2.5,0.5 - parent: 1 -- proto: VisitorChefSpawner - entities: - - uid: 186 - components: - - type: Transform - pos: 1.5,-0.5 - parent: 1 - - uid: 187 - components: - - type: Transform - pos: 4.5,-5.5 - parent: 1 -- proto: WallShuttle - entities: - - uid: 189 - components: - - type: Transform - pos: -1.5,-1.5 - parent: 1 - - uid: 190 - components: - - type: Transform - pos: -0.5,-7.5 - parent: 1 - - uid: 191 - components: - - type: Transform - pos: 3.5,-0.5 - parent: 1 - - uid: 192 - components: - - type: Transform - pos: 3.5,0.5 - parent: 1 - - uid: 193 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-1.5 - parent: 1 - - uid: 194 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,-1.5 - parent: 1 - - uid: 195 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,-2.5 - parent: 1 - - uid: 196 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,-3.5 - parent: 1 - - uid: 197 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,-4.5 - parent: 1 - - uid: 198 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-7.5 - parent: 1 - - uid: 199 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-7.5 - parent: 1 - - uid: 200 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-7.5 - parent: 1 - - uid: 201 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -0.5,-6.5 - parent: 1 - - uid: 202 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,-2.5 - parent: 1 - - uid: 203 - components: - - type: Transform - pos: 2.5,-1.5 - parent: 1 - - uid: 204 - components: - - type: Transform - pos: 0.5,-1.5 - parent: 1 - - uid: 205 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -1.5,-2.5 - parent: 1 - - uid: 206 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-2.5 - parent: 1 - - uid: 207 - components: - - type: Transform - pos: -3.5,-3.5 - parent: 1 - - uid: 208 - components: - - type: Transform - pos: -3.5,-5.5 - parent: 1 - - uid: 209 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,-2.5 - parent: 1 - - uid: 210 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,0.5 - parent: 1 - - uid: 211 - components: - - type: Transform - pos: 4.5,-2.5 - parent: 1 - - uid: 212 - components: - - type: Transform - pos: 4.5,-6.5 - parent: 1 - - uid: 213 - components: - - type: Transform - pos: 5.5,-6.5 - parent: 1 - - uid: 214 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-3.5 - parent: 1 - - uid: 215 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-4.5 - parent: 1 - - uid: 216 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-5.5 - parent: 1 - - uid: 217 - components: - - type: Transform - pos: 3.5,-6.5 - parent: 1 - - uid: 218 - components: - - type: Transform - pos: 3.5,-7.5 - parent: 1 - - uid: 219 - components: - - type: Transform - pos: -2.5,-1.5 - parent: 1 -- proto: WallShuttleDiagonal - entities: - - uid: 220 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-8.5 - parent: 1 - - uid: 221 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,1.5 - parent: 1 - - uid: 222 - components: - - type: Transform - pos: -0.5,1.5 - parent: 1 - - uid: 223 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,-6.5 - parent: 1 - - uid: 224 - components: - - type: Transform - pos: -3.5,-2.5 - parent: 1 - - uid: 225 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,-8.5 - parent: 1 - - uid: 226 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,-2.5 - parent: 1 - - uid: 227 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-6.5 - parent: 1 - - uid: 228 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,-1.5 - parent: 1 - - uid: 229 - components: - - type: Transform - pos: -3.5,0.5 - parent: 1 - - uid: 230 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -1.5,-8.5 - parent: 1 - - uid: 231 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 4.5,-8.5 - parent: 1 -... diff --git a/Resources/Prototypes/GameRules/roundstart.yml b/Resources/Prototypes/GameRules/roundstart.yml index b8f183e8749..d2af7b91f7a 100644 --- a/Resources/Prototypes/GameRules/roundstart.yml +++ b/Resources/Prototypes/GameRules/roundstart.yml @@ -474,14 +474,8 @@ - type: entityTable id: SpaceTrafficControlTable - table: !type:AllSelector # we need to pass a list of rules, since rules have further restrictions to consider via StationEventComp - children: - - !type:NestedSelector - tableId: UnknownShuttlesFriendlyTable - - !type:NestedSelector - tableId: UnknownShuttlesFreelanceTable - - !type:NestedSelector - tableId: UnknownShuttlesHostileTable + table: !type:NestedSelector # we need to pass a list of rules, since rules have further restrictions to consider via StationEventComp + tableId: UnknownShuttlesHostileTable - type: entity id: BasicStationEventScheduler @@ -513,24 +507,14 @@ components: - type: BasicStationEventScheduler minimumTimeUntilFirstEvent: 2700 # 45 mins #shows up like half way through shift. + maximumSpanUntilFirstEvent: 900 # At longest takes an hour to show up. minMaxEventTiming: min: 1200 # 20 mins max: 7200 # 120 mins # you probably arent getting a second visitor shuttle in one round, but it is possible. scheduledGameRules: !type:NestedSelector + prob: 0.05 # Only 1 in 20 rounds... tableId: SpaceTrafficControlTable -- type: entity - id: SpaceTrafficControlFriendlyEventScheduler - parent: BaseGameRule - components: - - type: BasicStationEventScheduler - minimumTimeUntilFirstEvent: 1200 # 20 mins - minMaxEventTiming: - min: 600 # 10 mins - max: 1800 # 30 mins - scheduledGameRules: !type:NestedSelector - tableId: UnknownShuttlesFriendlyTable - # variation passes - type: entity id: BasicRoundstartVariation diff --git a/Resources/Prototypes/GameRules/unknown_shuttles.yml b/Resources/Prototypes/GameRules/unknown_shuttles.yml index ae57cab0b6b..58c6a4286b8 100644 --- a/Resources/Prototypes/GameRules/unknown_shuttles.yml +++ b/Resources/Prototypes/GameRules/unknown_shuttles.yml @@ -1,32 +1,5 @@ # Shuttle Game Rule Tables -- If you dont add your rules to these they wont be used by the games schedulers. -- type: entityTable - id: UnknownShuttlesFriendlyTable - table: !type:AllSelector # we need to pass a list of rules, since rules have further restrictions to consider via StationEventComp - children: - - id: UnknownShuttleCargoLost - - id: UnknownShuttleTravelingCuisine - - id: UnknownShuttleDisasterEvacPod - - id: UnknownShuttleHonki - - id: UnknownShuttleNTQuark - - id: UnknownShuttleCruiser - - id: UnknownShuttleCryptid - - id: UnknownShuttleEternal - - id: UnknownShuttleFlatline - - id: UnknownShuttleGym - - id: UnknownShuttleNTIncorporation - - id: UnknownShuttleJoe - - id: UnknownShuttleLambordeere - - id: UnknownShuttleMeatZone - - id: UnknownShuttleMicroshuttle - - id: UnknownShuttleSpacebus - -- type: entityTable - id: UnknownShuttlesFreelanceTable - table: !type:AllSelector # we need to pass a list of rules, since rules have further restrictions to consider via StationEventComp - children: - - id: UnknownShuttleSyndieEvacPod - - type: entityTable id: UnknownShuttlesHostileTable table: !type:AllSelector # we need to pass a list of rules, since rules have further restrictions to consider via StationEventComp @@ -43,9 +16,6 @@ id: BaseUnknownShuttleRule components: - type: StationEvent - startAnnouncement: station-event-unknown-shuttle-incoming - startAudio: - path: /Audio/Announcements/attention.ogg weight: 10 # 10 default reoccurrenceDelay: 30 duration: 1 @@ -54,41 +24,21 @@ - type: LoadMapRule - type: entity + abstract: true parent: BaseUnknownShuttleRule - id: UnknownShuttleCargoLost - components: - - type: StationEvent - maxOccurrences: 2 - - type: LoadMapRule - gridPath: /Maps/Shuttles/ShuttleEvent/lost_cargo.yml - -- type: entity - parent: BaseUnknownShuttleRule - id: UnknownShuttleTravelingCuisine - components: - - type: StationEvent - startAnnouncement: station-event-unknown-shuttle-incoming - maxOccurrences: 2 - - type: LoadMapRule - gridPath: /Maps/Shuttles/ShuttleEvent/traveling_china_cuisine.yml - -- type: entity - parent: BaseUnknownShuttleRule - id: UnknownShuttleDisasterEvacPod + id: BaseUnknownShuttleAnnouncedRule components: - type: StationEvent startAnnouncement: station-event-unknown-shuttle-incoming - maxOccurrences: 3 - - type: LoadMapRule - gridPath: /Maps/Shuttles/ShuttleEvent/disaster_evacpod.yml + startAudio: + path: /Audio/Announcements/attention.ogg # The power of 3 clowns proved too strong for the players and may need to be 1984'ed. Replace this with a more engaging clown shuttle. - type: entity - parent: BaseUnknownShuttleRule + parent: BaseUnknownShuttleAnnouncedRule id: UnknownShuttleHonki components: - type: StationEvent - startAnnouncement: station-event-unknown-shuttle-incoming #!! weight: 2 - type: LoadMapRule gridPath: /Maps/Shuttles/ShuttleEvent/honki.yml @@ -98,7 +48,6 @@ id: UnknownShuttleSyndieEvacPod components: - type: StationEvent - startAnnouncement: null # It should be silent. weight: 5 # lower because weird freelance roles maxOccurrences: 2 - type: LoadMapRule @@ -109,137 +58,26 @@ parent: BaseUnknownShuttleRule components: - type: StationEvent - startAnnouncement: null # It should be silent. weight: .5 # Hopefully this is uncommon enough, it needs to be uncommon enough that people wont waste time metaknowledging it. earliestStart: 45 # late to hopefully have enough ghosts to fill all roles quickly. minimumPlayers: 25 - type: LoadMapRule gridPath: /Maps/Shuttles/ShuttleEvent/quark.yml -- type: entity - id: UnknownShuttleCruiser - parent: BaseUnknownShuttleRule - components: - - type: StationEvent - startAnnouncement: station-event-unknown-shuttle-incoming #!! - weight: 2 # Its just a big ship, so it needs to be rarer to be interesting. - - type: LoadMapRule - gridPath: /Maps/Shuttles/ShuttleEvent/cruiser.yml - -- type: entity - id: UnknownShuttleCryptid - parent: BaseUnknownShuttleRule - components: - - type: StationEvent - startAnnouncement: station-event-unknown-shuttle-incoming #!! - - type: LoadMapRule - gridPath: /Maps/Shuttles/ShuttleEvent/cryptid.yml - -- type: entity - id: UnknownShuttleEternal - parent: BaseUnknownShuttleRule - components: - - type: StationEvent - startAnnouncement: station-event-unknown-shuttle-incoming #!! - - type: LoadMapRule - gridPath: /Maps/Shuttles/ShuttleEvent/eternal.yml - -- type: entity - id: UnknownShuttleFlatline - parent: BaseUnknownShuttleRule - components: - - type: StationEvent - startAnnouncement: station-event-unknown-shuttle-incoming #!! - - type: LoadMapRule - gridPath: /Maps/Shuttles/ShuttleEvent/flatline.yml - -- type: entity - id: UnknownShuttleGym - parent: BaseUnknownShuttleRule - components: - - type: StationEvent - startAnnouncement: station-event-unknown-shuttle-incoming #!! - weight: 5 # Its just a big ship, so it needs to be rarer to be interesting. - - type: LoadMapRule - gridPath: /Maps/Shuttles/ShuttleEvent/gym.yml - -- type: entity - id: UnknownShuttleNTIncorporation - parent: BaseUnknownShuttleRule - components: - - type: StationEvent - startAnnouncement: station-event-unknown-shuttle-incoming #!! - weight: 2 # Its just a big ship, so it needs to be rarer to be interesting. - earliestStart: 45 # late to hopefully have enough ghosts to fill all roles quickly. (5-6) - - type: LoadMapRule - gridPath: /Maps/Shuttles/ShuttleEvent/incorporation.yml - - type: entity id: UnknownShuttleInstigator parent: BaseUnknownShuttleRule components: - type: StationEvent - startAnnouncement: null #dont nark on antags - weight: 1 # lower because antags. - earliestStart: 50 # late to hopefully have enough ghosts to fill all roles quickly (3) and because antags + weight: 0.1 # approximately 1/1000 on the random hostile shuttle table. Golden Legendary! - type: LoadMapRule gridPath: /Maps/Shuttles/ShuttleEvent/instigator.yml -- type: entity - id: UnknownShuttleJoe - parent: BaseUnknownShuttleRule - components: - - type: StationEvent - startAnnouncement: station-event-unknown-shuttle-incoming #!! - - type: LoadMapRule - gridPath: /Maps/Shuttles/ShuttleEvent/joe.yml - -- type: entity - id: UnknownShuttleLambordeere - parent: BaseUnknownShuttleRule - components: - - type: StationEvent - startAnnouncement: station-event-unknown-shuttle-incoming #!! - - type: LoadMapRule - gridPath: /Maps/Shuttles/ShuttleEvent/lambordeere.yml - - type: entity id: UnknownShuttleManOWar parent: BaseUnknownShuttleRule components: - type: StationEvent - startAnnouncement: station-event-unknown-shuttle-incoming #Leaving this one because theyre like primitives and its funnier weight: 1 # lower because antags - earliestStart: 50 # late to hopefully have enough ghosts to fill all roles quickly. (4) & antags - type: LoadMapRule gridPath: /Maps/Shuttles/ShuttleEvent/manowar.yml - -- type: entity - id: UnknownShuttleMeatZone - parent: BaseUnknownShuttleRule - components: - - type: StationEvent - startAnnouncement: station-event-unknown-shuttle-incoming #!! - - type: LoadMapRule - gridPath: /Maps/Shuttles/ShuttleEvent/meatzone.yml - -- type: entity - id: UnknownShuttleMicroshuttle - parent: BaseUnknownShuttleRule - components: - - type: StationEvent - startAnnouncement: station-event-unknown-shuttle-incoming #!! - weight: 11 # this is higher because its just a little generic personal shuttle - maxOccurrences: 4 - - type: LoadMapRule - gridPath: /Maps/Shuttles/ShuttleEvent/microshuttle.yml - -- type: entity - id: UnknownShuttleSpacebus - parent: BaseUnknownShuttleRule - components: - - type: StationEvent - startAnnouncement: station-event-unknown-shuttle-incoming #!! - - type: LoadMapRule - gridPath: /Maps/Shuttles/ShuttleEvent/spacebus.yml - diff --git a/Resources/Prototypes/game_presets.yml b/Resources/Prototypes/game_presets.yml index 62a36de52b8..7772ddbe71a 100644 --- a/Resources/Prototypes/game_presets.yml +++ b/Resources/Prototypes/game_presets.yml @@ -9,7 +9,6 @@ - MeteorSwarmScheduler - RampingStationEventScheduler - SpaceTrafficControlEventScheduler - - SpaceTrafficControlFriendlyEventScheduler - BasicRoundstartVariation - type: gamePreset @@ -69,7 +68,6 @@ - MeteorSwarmScheduler - RampingStationEventScheduler - SpaceTrafficControlEventScheduler - - SpaceTrafficControlFriendlyEventScheduler - BasicRoundstartVariation - type: gamePreset @@ -95,7 +93,6 @@ showInVote: false #4boring4vote description: greenshift-description rules: - - SpaceTrafficControlFriendlyEventScheduler - BasicRoundstartVariation - type: gamePreset From 4b65de4a7e8ccd0ab7655136354fa4d844e2139c Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 27 Jan 2026 23:04:13 +0000 Subject: [PATCH 176/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index eab074eb38b..4fa3b65dc56 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: SharkSnake98 - changes: - - message: Added 3 new Astrotiles for dark grass, light grass, and desert sand. - type: Add - id: 8964 - time: '2025-09-15T01:30:12.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/37867 - author: chromiumboy changes: - message: Devices with access restrictions now list those restrictions in their @@ -4010,3 +4003,12 @@ id: 9470 time: '2026-01-27T21:01:59.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42670 +- author: Princess-Cheeseballs + changes: + - message: Friendly visitor shuttles will no longer spawn. + type: Remove + - message: Syndicate Evac pod will no longer spawn. + type: Remove + id: 9471 + time: '2026-01-27T23:03:05.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/41915 From 7d7ca778374beac0a360b8ff94e184a4ecf83c82 Mon Sep 17 00:00:00 2001 From: Velken <8467292+Velken@users.noreply.github.com> Date: Tue, 27 Jan 2026 21:22:28 -0300 Subject: [PATCH 177/603] [FIX] Fix spacing explosions ignoring indestructible flag in stacked tiles (#42682) * bald man broke my tiles * move it around * shrink it --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- .../Explosion/EntitySystems/ExplosionSystem.Processing.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs index 5f83288009d..ab35f729dbc 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs @@ -536,6 +536,9 @@ public void DamageFloorTile(TileRef tileRef, break; tileDef = newDef; + + if (newDef.Indestructible) + break; } if (tileDef.TileId == tileRef.Tile.TypeId) From 9bb1e7a7ac448c51c002da265aa14b3c554ad728 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 28 Jan 2026 00:39:01 +0000 Subject: [PATCH 178/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 4fa3b65dc56..006540417fa 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,15 +1,4 @@ Entries: -- author: chromiumboy - changes: - - message: Devices with access restrictions now list those restrictions in their - examination description - type: Add - - message: Wearing a diagnostic HUD will reveal if a device's access restrictions - have been modified and in what way - type: Add - id: 8965 - time: '2025-09-15T07:19:25.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/37712 - author: chromiumboy changes: - message: AI cores now require power to function and can be damaged/destroyed. @@ -4012,3 +4001,10 @@ id: 9471 time: '2026-01-27T23:03:05.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/41915 +- author: Velken + changes: + - message: Fixed some explosions ignoring indestructible tiles. + type: Fix + id: 9472 + time: '2026-01-28T00:37:53.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42682 From ceb175c92d68a324613b1ebe6e2167bd35e8c9a0 Mon Sep 17 00:00:00 2001 From: Vanessa <908648+ShepardToTheStars@users.noreply.github.com> Date: Wed, 28 Jan 2026 02:27:22 -0600 Subject: [PATCH 179/603] Health Analyzer Reactivation (#42608) Health Analyzer reactivation --- .../Components/HealthAnalyzerComponent.cs | 6 ++++++ .../Medical/HealthAnalyzerSystem.cs | 20 +++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/Content.Server/Medical/Components/HealthAnalyzerComponent.cs b/Content.Server/Medical/Components/HealthAnalyzerComponent.cs index 9c7ccd53304..d5d882a178d 100644 --- a/Content.Server/Medical/Components/HealthAnalyzerComponent.cs +++ b/Content.Server/Medical/Components/HealthAnalyzerComponent.cs @@ -26,6 +26,12 @@ public sealed partial class HealthAnalyzerComponent : Component [DataField] public TimeSpan UpdateInterval = TimeSpan.FromSeconds(1); + /// + /// If the last state of the health analyzer was active (e.g. they are in range of the patient). + /// + [DataField] + public bool IsAnalyzerActive = false; + /// /// How long it takes to scan someone. /// diff --git a/Content.Server/Medical/HealthAnalyzerSystem.cs b/Content.Server/Medical/HealthAnalyzerSystem.cs index 10da837141d..9986bf15a08 100644 --- a/Content.Server/Medical/HealthAnalyzerSystem.cs +++ b/Content.Server/Medical/HealthAnalyzerSystem.cs @@ -69,11 +69,12 @@ public override void Update(float frameTime) var patientCoordinates = Transform(patient).Coordinates; if (component.MaxScanRange != null && !_transformSystem.InRange(patientCoordinates, transform.Coordinates, component.MaxScanRange.Value)) { - //Range too far, disable updates - StopAnalyzingEntity((uid, component), patient); + //Range too far, disable updates until they are back in range + PauseAnalyzingEntity((uid, component), patient); continue; } + component.IsAnalyzerActive = true; UpdateScannedUser(uid, patient, true); } } @@ -179,6 +180,21 @@ private void StopAnalyzingEntity(Entity healthAnalyzer, UpdateScannedUser(healthAnalyzer, target, false); } + + /// + /// If the scanner is active, sends one last update and sets it to inactive. + /// + /// The health analyzer that's receiving the updates + /// The entity to analyze + private void PauseAnalyzingEntity(Entity healthAnalyzer, EntityUid target) + { + if (!healthAnalyzer.Comp.IsAnalyzerActive) + return; + + UpdateScannedUser(healthAnalyzer, target, false); + healthAnalyzer.Comp.IsAnalyzerActive = false; + } + /// /// Send an update for the target to the healthAnalyzer /// From b2526366e25b456b3d8e58949d20bd0602700168 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 28 Jan 2026 08:43:28 +0000 Subject: [PATCH 180/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 006540417fa..ffb4d35ffcb 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,21 +1,4 @@ Entries: -- author: chromiumboy - changes: - - message: AI cores now require power to function and can be damaged/destroyed. - Any AI inhabiting an AI core when it breaks or runs out of power will be killed. - AI cores have an internal battery that can provide up to 10 minutes of emergency - power in the event of a power interruption. Damage to the AI core itself can - be repaired with a welding tool. - type: Tweak - - message: New AI cores can be constructed using the 'Build' menu. The parts needed - to construct an AI core can be purchased through cargo. - type: Add - - message: Deceased AIs can be revived using an AI restoration console. A spare - circuit board for this computer can be found in the Research Director's locker. - type: Add - id: 8966 - time: '2025-09-15T14:18:32.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39588 - author: Admiral-Obvious-001 changes: - message: Increased the cooldown of ninja glove stun from 2 seconds to 10 seconds. @@ -4008,3 +3991,11 @@ id: 9472 time: '2026-01-28T00:37:53.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42682 +- author: ShepardToTheStars + changes: + - message: The health analyzer and the MedTek PDA app now reactivate once you get + back in range of your patient. + type: Tweak + id: 9473 + time: '2026-01-28T08:42:18.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42608 From 57b73101c98bdb2159ea65ec12c965c4ddc8b06e Mon Sep 17 00:00:00 2001 From: Huaqas Date: Wed, 28 Jan 2026 19:39:46 +0800 Subject: [PATCH 181/603] Lizard Unhappy (#42594) * Remove lizard_happy.ogg * Lizard still unhappy. --- Resources/Audio/Animals/attributions.yml | 5 ----- Resources/Audio/Animals/lizard_happy.ogg | Bin 48215 -> 0 bytes .../Prototypes/Entities/Mobs/NPCs/animals.yml | 4 ---- .../Prototypes/Entities/Mobs/NPCs/lavaland.yml | 2 -- .../Entities/Mobs/NPCs/miscellaneous.yml | 2 -- Resources/Prototypes/SoundCollections/troll.yml | 1 - .../Prototypes/Voice/speech_emote_sounds.yml | 4 ---- 7 files changed, 18 deletions(-) delete mode 100644 Resources/Audio/Animals/lizard_happy.ogg diff --git a/Resources/Audio/Animals/attributions.yml b/Resources/Audio/Animals/attributions.yml index f91d98b9744..5a1dd97b6fd 100644 --- a/Resources/Audio/Animals/attributions.yml +++ b/Resources/Audio/Animals/attributions.yml @@ -103,11 +103,6 @@ copyright: "Audio is created by youtube user 'Winry Marini'" source: "https://youtu.be/QIhwzsk5bww" -- files: ["lizard_happy.ogg"] - license: "CC-BY-3.0" - copyright: "Audio created by youtube user 'Nagaty Studio'" - source: "https://youtu.be/I7CX0AS8RNI" - - files: ["bear.ogg"] license: "CC-BY-3.0" copyright: "Audio is recorded by 'Nagaty Studio'. The original audio was reverbed" diff --git a/Resources/Audio/Animals/lizard_happy.ogg b/Resources/Audio/Animals/lizard_happy.ogg deleted file mode 100644 index b2c02e6d2fcb0e4f84c57b4b0265c9d7cdfe43f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48215 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 Date: Wed, 28 Jan 2026 11:56:09 +0000 Subject: [PATCH 182/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index ffb4d35ffcb..3b83e492d71 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Admiral-Obvious-001 - changes: - - message: Increased the cooldown of ninja glove stun from 2 seconds to 10 seconds. - Stun duration remains unchanged at 5 seconds. - type: Tweak - id: 8967 - time: '2025-09-15T23:31:50.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39707 - author: ScarKy0 changes: - message: Intellicards can now be obtained from the Station AI Electronics crates. @@ -3999,3 +3991,10 @@ id: 9473 time: '2026-01-28T08:42:18.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42608 +- author: Huaqas + changes: + - message: Removed the Reptilian laugh sound effect due to copyright concerns. + type: Remove + id: 9474 + time: '2026-01-28T11:55:00.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42594 From b7ea1a4028a11399d215a1535f0829d52faa6a33 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Thu, 29 Jan 2026 02:25:30 +0700 Subject: [PATCH 183/603] comment bruh --- Content.Packaging/ClientPackaging.cs | 2 ++ .../Preferences/Managers/ServerPreferencesManager.cs | 3 +-- Content.Shared/Preferences/HumanoidCharacterProfile.cs | 3 +-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Content.Packaging/ClientPackaging.cs b/Content.Packaging/ClientPackaging.cs index 64c6ca3eedc..a55d17a1130 100644 --- a/Content.Packaging/ClientPackaging.cs +++ b/Content.Packaging/ClientPackaging.cs @@ -35,6 +35,7 @@ public static async Task PackageClient(bool skipBuild, bool logBuild, string con "/m" } }; + // Corvax-Secrets-Start if (UseSecrets) { await ProcessHelpers.RunCheck(new ProcessStartInfo @@ -53,6 +54,7 @@ await ProcessHelpers.RunCheck(new ProcessStartInfo } }); } + // Corvax-Secrets-End if (logBuild) { diff --git a/Content.Server/Preferences/Managers/ServerPreferencesManager.cs b/Content.Server/Preferences/Managers/ServerPreferencesManager.cs index e020e490c60..ba7183cfaa0 100644 --- a/Content.Server/Preferences/Managers/ServerPreferencesManager.cs +++ b/Content.Server/Preferences/Managers/ServerPreferencesManager.cs @@ -377,8 +377,7 @@ private PlayerPreferences SanitizePreferences(ICommonSession session, PlayerPref var sponsorPrototypes = _sponsors != null && _sponsors.TryGetServerPrototypes(session.UserId, out var prototypes) ? prototypes.ToArray() : []; // Corvax-Sponsors return new PlayerPreferences(prefs.Characters.Select(p => { - return new KeyValuePair(p.Key, p.Value.Validated(session, collection)); - return new KeyValuePair(p.Key, p.Value.Validated(session, collection, sponsorPrototypes)); + return new KeyValuePair(p.Key, p.Value.Validated(session, collection, sponsorPrototypes));// Corvax-Sponsors }), prefs.SelectedCharacterIndex, prefs.AdminOOCColor, prefs.ConstructionFavorites); } diff --git a/Content.Shared/Preferences/HumanoidCharacterProfile.cs b/Content.Shared/Preferences/HumanoidCharacterProfile.cs index dfffa6034e7..bee18585065 100644 --- a/Content.Shared/Preferences/HumanoidCharacterProfile.cs +++ b/Content.Shared/Preferences/HumanoidCharacterProfile.cs @@ -721,7 +721,6 @@ public List> GetValidTraits(IEnumerable Date: Thu, 29 Jan 2026 02:05:38 +0100 Subject: [PATCH 184/603] Update RT to 272.0.0 (#42694) --- RobustToolbox | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RobustToolbox b/RobustToolbox index 0b93a1b7e20..f509405022c 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 0b93a1b7e20acaa4540061d084bf750dbcb1ae46 +Subproject commit f509405022cf75c3a906b2e1bd0a3e8e7eafe3bc From 1f8365fe9db8a1f7ccc9fb5d18c92a9e6c9eda32 Mon Sep 17 00:00:00 2001 From: Marchy <89603088+M4rchy-S@users.noreply.github.com> Date: Thu, 29 Jan 2026 06:50:16 +0100 Subject: [PATCH 185/603] Log Criminal Status changes for admin panel (#42691) Adding adming logger to log criminal status changes --- .../Systems/CriminalRecordsConsoleSystem.cs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs b/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs index a655556d496..09415d02e3a 100644 --- a/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs +++ b/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs @@ -14,6 +14,8 @@ using Content.Shared.IdentityManagement; using Content.Shared.Security.Components; using System.Linq; +using Content.Shared.Administration.Logs; +using Content.Shared.Database; using Content.Shared.Roles.Jobs; namespace Content.Server.CriminalRecords.Systems; @@ -24,6 +26,7 @@ namespace Content.Server.CriminalRecords.Systems; public sealed class CriminalRecordsConsoleSystem : SharedCriminalRecordsConsoleSystem { [Dependency] private readonly AccessReaderSystem _access = default!; + [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; [Dependency] private readonly CriminalRecordsSystem _criminalRecords = default!; [Dependency] private readonly PopupSystem _popup = default!; [Dependency] private readonly RadioSystem _radio = default!; @@ -170,8 +173,12 @@ private void OnChangeStatus(Entity ent, ref Cri // this is impossible _ => "not-wanted" }; - _radio.SendRadioMessage(ent, Loc.GetString($"criminal-records-console-{statusString}", args), - ent.Comp.SecurityChannel, ent); + _radio.SendRadioMessage(ent, + Loc.GetString($"criminal-records-console-{statusString}", args), + ent.Comp.SecurityChannel, + ent); + + _adminLogger.Add(LogType.Identity, LogImpact.Low, $"{ToPrettyString(mob.Value):name} changed criminal status for {name} to \"{statusString}\""); UpdateUserInterface(ent); } From 338503b58e8eac887edeb7f289358f89dc117529 Mon Sep 17 00:00:00 2001 From: PJBot Date: Thu, 29 Jan 2026 06:06:10 +0000 Subject: [PATCH 186/603] Automatic changelog update --- Resources/Changelog/Admin.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index 4e86408fb41..6750a6552bd 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -1613,5 +1613,12 @@ Entries: id: 196 time: '2026-01-24T19:15:40.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/41557 +- author: M4rchy-S + changes: + - message: Admin logger for criminal status changes + type: Add + id: 197 + time: '2026-01-29T06:05:02.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42691 Name: Admin Order: 3 From 407664a5364b4638be97936e9f77018fec9824ed Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Thu, 29 Jan 2026 07:59:06 +0100 Subject: [PATCH 187/603] Add Cyborg crew indicator (#37038) * Initial commit * Include uncertain crew and make it work for AI * Add new definition to Silicon Rules 8 * Update based on review * Remove Cluwne from job list * ProtoIdify * Update and also make monkey/corgi show IDs * Remove unnecessary property * Remove redundant code * Carrrrd * cleanup * Nicer code * Update to fix the spawn bug + agent ID * Fix new icons --------- Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com> --- .../Access/Systems/JobStatusSystem.cs | 39 +++++++++++ Content.Client/Overlays/EquipmentHudSystem.cs | 2 +- .../Overlays/ShowCrewIconsSystem.cs | 34 +++++++++ Content.Client/Overlays/ShowJobIconsSystem.cs | 57 +-------------- .../StatusIcon/StatusIconOverlay.cs | 4 +- .../Access/Systems/AgentIDCardSystem.cs | 3 + .../Access/Systems/JobStatusSystem.cs | 5 ++ .../Silicons/Laws/SiliconLawSystem.cs | 8 +++ .../Access/Components/IdCardComponent.cs | 2 +- .../Access/Systems/SharedIdCardSystem.cs | 11 +++ .../Access/Systems/SharedJobStatusSystem.cs | 65 ++++++++++++++++++ .../Overlays/ShowCrewIconsComponent.cs | 17 +++++ Content.Shared/PDA/SharedPdaSystem.cs | 12 ++++ .../Silicons/Laws/SharedSiliconLawSystem.cs | 21 +++++- .../Components/JobStatusComponent.cs | 27 ++++++++ .../StatusIcon/StatusIconPrototype.cs | 12 ++++ Resources/Prototypes/Body/species_base.yml | 1 + .../Mobs/Cyborgs/base_borg_chassis.yml | 4 ++ .../Prototypes/Entities/Mobs/NPCs/animals.yml | 7 +- .../Entities/Mobs/Player/silicon.yml | 2 + Resources/Prototypes/StatusIcon/job.yml | 14 ++++ Resources/Prototypes/StatusIcon/security.yml | 24 +++++++ .../RuleS8DefaultCrewDefinition.xml | 4 +- .../Misc/job_icons_borders.rsi/CrewBorder.png | Bin 0 -> 16094 bytes .../CrewUncertainBorder.png | Bin 0 -> 16099 bytes .../Misc/job_icons_borders.rsi/meta.json | 26 +++++++ 26 files changed, 336 insertions(+), 65 deletions(-) create mode 100644 Content.Client/Access/Systems/JobStatusSystem.cs create mode 100644 Content.Client/Overlays/ShowCrewIconsSystem.cs create mode 100644 Content.Server/Access/Systems/JobStatusSystem.cs create mode 100644 Content.Shared/Access/Systems/SharedJobStatusSystem.cs create mode 100644 Content.Shared/Overlays/ShowCrewIconsComponent.cs create mode 100644 Content.Shared/StatusIcon/Components/JobStatusComponent.cs create mode 100644 Resources/Textures/Interface/Misc/job_icons_borders.rsi/CrewBorder.png create mode 100644 Resources/Textures/Interface/Misc/job_icons_borders.rsi/CrewUncertainBorder.png create mode 100644 Resources/Textures/Interface/Misc/job_icons_borders.rsi/meta.json diff --git a/Content.Client/Access/Systems/JobStatusSystem.cs b/Content.Client/Access/Systems/JobStatusSystem.cs new file mode 100644 index 00000000000..8327a6c198d --- /dev/null +++ b/Content.Client/Access/Systems/JobStatusSystem.cs @@ -0,0 +1,39 @@ +using Content.Client.Overlays; +using Content.Shared.Access.Systems; +using Content.Shared.StatusIcon; +using Content.Shared.StatusIcon.Components; +using Robust.Shared.Prototypes; + +namespace Content.Client.Access.Systems; + +public sealed class JobStatusSystem : SharedJobStatusSystem +{ + [Dependency] private readonly ShowJobIconsSystem _showJobIcons = default!; + [Dependency] private readonly ShowCrewIconsSystem _showCrewIcons = default!; + [Dependency] private readonly IPrototypeManager _prototype = default!; + + private static readonly ProtoId CrewBorderIcon = "CrewBorderIcon"; + private static readonly ProtoId CrewUncertainBorderIcon = "CrewUncertainBorderIcon"; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnGetStatusIconsEvent); + } + + // show the status icons if the player has the correponding HUDs + private void OnGetStatusIconsEvent(Entity ent, ref GetStatusIconsEvent ev) + { + if (_showJobIcons.IsActive && ent.Comp.JobStatusIcon != null) + ev.StatusIcons.Add(_prototype.Index(ent.Comp.JobStatusIcon)); + + if (_showCrewIcons.IsActive) + { + if (_showCrewIcons.UncertainCrewBorder) + ev.StatusIcons.Add(_prototype.Index(CrewUncertainBorderIcon)); + else if (ent.Comp.IsCrew) + ev.StatusIcons.Add(_prototype.Index(CrewBorderIcon)); + } + } +} diff --git a/Content.Client/Overlays/EquipmentHudSystem.cs b/Content.Client/Overlays/EquipmentHudSystem.cs index f3c556961a5..734ad8a7686 100644 --- a/Content.Client/Overlays/EquipmentHudSystem.cs +++ b/Content.Client/Overlays/EquipmentHudSystem.cs @@ -15,7 +15,7 @@ public abstract class EquipmentHudSystem : EntitySystem where T : IComponent [Dependency] private readonly IPlayerManager _player = default!; [ViewVariables] - protected bool IsActive; + public bool IsActive { get; private set; } protected virtual SlotFlags TargetSlots => ~SlotFlags.POCKET; public override void Initialize() diff --git a/Content.Client/Overlays/ShowCrewIconsSystem.cs b/Content.Client/Overlays/ShowCrewIconsSystem.cs new file mode 100644 index 00000000000..a03c0a29bf2 --- /dev/null +++ b/Content.Client/Overlays/ShowCrewIconsSystem.cs @@ -0,0 +1,34 @@ +using Content.Shared.Inventory.Events; +using Content.Shared.Overlays; + +namespace Content.Client.Overlays; + +// The GetStatusIconsEvent subscription is handled in JobStatusSystem +public sealed class ShowCrewIconsSystem : EquipmentHudSystem +{ + public bool UncertainCrewBorder = false; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnHandleState); + } + + protected override void UpdateInternal(RefreshEquipmentHudEvent component) + { + base.UpdateInternal(component); + + UncertainCrewBorder = false; + foreach (var comp in component.Components) + { + if (comp.UncertainCrewBorder) + UncertainCrewBorder = true; + } + } + + private void OnHandleState(Entity ent, ref AfterAutoHandleStateEvent args) + { + RefreshOverlay(); + } +} diff --git a/Content.Client/Overlays/ShowJobIconsSystem.cs b/Content.Client/Overlays/ShowJobIconsSystem.cs index faf4024c2fa..e9669c71b23 100644 --- a/Content.Client/Overlays/ShowJobIconsSystem.cs +++ b/Content.Client/Overlays/ShowJobIconsSystem.cs @@ -1,59 +1,6 @@ -using Content.Shared.Access.Components; -using Content.Shared.Access.Systems; using Content.Shared.Overlays; -using Content.Shared.PDA; -using Content.Shared.StatusIcon; -using Content.Shared.StatusIcon.Components; -using Robust.Shared.Prototypes; namespace Content.Client.Overlays; -public sealed class ShowJobIconsSystem : EquipmentHudSystem -{ - [Dependency] private readonly IPrototypeManager _prototype = default!; - [Dependency] private readonly AccessReaderSystem _accessReader = default!; - - private static readonly ProtoId JobIconForNoId = "JobIconNoId"; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnGetStatusIconsEvent); - } - - private void OnGetStatusIconsEvent(EntityUid uid, StatusIconComponent _, ref GetStatusIconsEvent ev) - { - if (!IsActive) - return; - - var iconId = JobIconForNoId; - - if (_accessReader.FindAccessItemsInventory(uid, out var items)) - { - foreach (var item in items) - { - // ID Card - if (TryComp(item, out var id)) - { - iconId = id.JobIcon; - break; - } - - // PDA - if (TryComp(item, out var pda) - && pda.ContainedId != null - && TryComp(pda.ContainedId, out id)) - { - iconId = id.JobIcon; - break; - } - } - } - - if (_prototype.Resolve(iconId, out var iconPrototype)) - ev.StatusIcons.Add(iconPrototype); - else - Log.Error($"Invalid job icon prototype: {iconPrototype}"); - } -} +// The GetStatusIconsEvent subscription is handled in JobStatusSystem +public sealed class ShowJobIconsSystem : EquipmentHudSystem; diff --git a/Content.Client/StatusIcon/StatusIconOverlay.cs b/Content.Client/StatusIcon/StatusIconOverlay.cs index 4d3be5439cf..7064be5bab2 100644 --- a/Content.Client/StatusIcon/StatusIconOverlay.cs +++ b/Content.Client/StatusIcon/StatusIconOverlay.cs @@ -96,7 +96,7 @@ protected override void Draw(in OverlayDrawArgs args) countL++; } yOffset = (bounds.Height + sprite.Offset.Y) / 2f - (float)(accOffsetL - proto.Offset) / EyeManager.PixelsPerMeter; - xOffset = -(bounds.Width + sprite.Offset.X) / 2f; + xOffset = -(bounds.Width + sprite.Offset.X) / 2f + (float)proto.OffsetHorizontal / EyeManager.PixelsPerMeter; } else @@ -109,7 +109,7 @@ protected override void Draw(in OverlayDrawArgs args) countR++; } yOffset = (bounds.Height + sprite.Offset.Y) / 2f - (float)(accOffsetR - proto.Offset) / EyeManager.PixelsPerMeter; - xOffset = (bounds.Width + sprite.Offset.X) / 2f - (float)texture.Width / EyeManager.PixelsPerMeter; + xOffset = (bounds.Width + sprite.Offset.X) / 2f - (float)(texture.Width - proto.OffsetHorizontal) / EyeManager.PixelsPerMeter; } diff --git a/Content.Server/Access/Systems/AgentIDCardSystem.cs b/Content.Server/Access/Systems/AgentIDCardSystem.cs index 1706908e72d..1eb050dd2ae 100644 --- a/Content.Server/Access/Systems/AgentIDCardSystem.cs +++ b/Content.Server/Access/Systems/AgentIDCardSystem.cs @@ -27,6 +27,7 @@ public sealed class AgentIDCardSystem : SharedAgentIdCardSystem [Dependency] private readonly ChameleonClothingSystem _chameleon = default!; [Dependency] private readonly ChameleonControllerSystem _chamController = default!; [Dependency] private readonly LockSystem _lock = default!; + [Dependency] private readonly SharedJobStatusSystem _jobStatus = default!; public override void Initialize() { @@ -137,6 +138,8 @@ private void OnJobIconChanged(EntityUid uid, AgentIDCardComponent comp, AgentIDC if (TryFindJobProtoFromIcon(jobIcon, out var job)) _cardSystem.TryChangeJobDepartment(uid, job, idCard); + + _jobStatus.UpdateStatus(Transform(uid).ParentUid); } private bool TryFindJobProtoFromIcon(JobIconPrototype jobIcon, [NotNullWhen(true)] out JobPrototype? job) diff --git a/Content.Server/Access/Systems/JobStatusSystem.cs b/Content.Server/Access/Systems/JobStatusSystem.cs new file mode 100644 index 00000000000..d6d38fbe539 --- /dev/null +++ b/Content.Server/Access/Systems/JobStatusSystem.cs @@ -0,0 +1,5 @@ +using Content.Shared.Access.Systems; + +namespace Content.Server.Access.Systems; + +public sealed class JobStatusSystem : SharedJobStatusSystem; diff --git a/Content.Server/Silicons/Laws/SiliconLawSystem.cs b/Content.Server/Silicons/Laws/SiliconLawSystem.cs index 79b51f22216..691c40be936 100644 --- a/Content.Server/Silicons/Laws/SiliconLawSystem.cs +++ b/Content.Server/Silicons/Laws/SiliconLawSystem.cs @@ -8,6 +8,7 @@ using Content.Shared.GameTicking; using Content.Shared.Mind; using Content.Shared.Mind.Components; +using Content.Shared.Overlays; using Content.Shared.Radio.Components; using Content.Shared.Roles; using Content.Shared.Roles.Components; @@ -33,6 +34,8 @@ public sealed class SiliconLawSystem : SharedSiliconLawSystem [Dependency] private readonly UserInterfaceSystem _userInterface = default!; [Dependency] private readonly EmagSystem _emag = default!; + private static readonly ProtoId DefaultCrewLawset = "Crewsimov"; + /// public override void Initialize() { @@ -303,6 +306,11 @@ protected override void OnUpdaterInsert(Entity ent, while (query.MoveNext(out var update)) { + if (TryComp(update, out var crewIconComp)) + { + crewIconComp.UncertainCrewBorder = DefaultCrewLawset != provider.Laws; + Dirty(update, crewIconComp); + } SetLaws(lawset.Laws, update, provider.LawUploadSound); } } diff --git a/Content.Shared/Access/Components/IdCardComponent.cs b/Content.Shared/Access/Components/IdCardComponent.cs index 93c61ea9f09..edcd35d4458 100644 --- a/Content.Shared/Access/Components/IdCardComponent.cs +++ b/Content.Shared/Access/Components/IdCardComponent.cs @@ -8,7 +8,7 @@ namespace Content.Shared.Access.Components; [RegisterComponent, NetworkedComponent] -[AutoGenerateComponentState] +[AutoGenerateComponentState(true)] [Access(typeof(SharedIdCardSystem), typeof(SharedPdaSystem), typeof(SharedAgentIdCardSystem), Other = AccessPermissions.ReadWrite)] public sealed partial class IdCardComponent : Component { diff --git a/Content.Shared/Access/Systems/SharedIdCardSystem.cs b/Content.Shared/Access/Systems/SharedIdCardSystem.cs index 513abb20eef..709afce251f 100644 --- a/Content.Shared/Access/Systems/SharedIdCardSystem.cs +++ b/Content.Shared/Access/Systems/SharedIdCardSystem.cs @@ -25,6 +25,7 @@ public abstract class SharedIdCardSystem : EntitySystem [Dependency] private readonly InventorySystem _inventorySystem = default!; [Dependency] private readonly MetaDataSystem _metaSystem = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly SharedJobStatusSystem _jobStatus = default!; // CCVar. private int _maxNameLength; @@ -35,6 +36,7 @@ public override void Initialize() base.Initialize(); SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnHandleState); SubscribeLocalEvent(OnTryGetIdentityShortInfo); SubscribeLocalEvent(OnRename); @@ -77,6 +79,15 @@ private void OnTryGetIdentityShortInfo(TryGetIdentityShortInfoEvent ev) ev.Handled = true; } + private void OnHandleState(Entity ent, ref AfterAutoHandleStateEvent args) + { + // Try to update the job status icon of the player owning the ID, if any. + if (HasComp(Transform(ent).ParentUid)) + _jobStatus.UpdateStatus(Transform(Transform(ent).ParentUid).ParentUid); //ID is inside a PDA + else + _jobStatus.UpdateStatus(Transform(ent).ParentUid); //ID is held/directly in the ID slot + } + /// /// Attempt to find an ID card on an entity. This will look in the entity itself, in the entity's hands, and /// in the entity's inventory. diff --git a/Content.Shared/Access/Systems/SharedJobStatusSystem.cs b/Content.Shared/Access/Systems/SharedJobStatusSystem.cs new file mode 100644 index 00000000000..0e74716aa49 --- /dev/null +++ b/Content.Shared/Access/Systems/SharedJobStatusSystem.cs @@ -0,0 +1,65 @@ +using Content.Shared.Access.Components; +using Content.Shared.Hands; +using Content.Shared.Inventory.Events; +using Content.Shared.PDA; +using Content.Shared.StatusIcon; +using Content.Shared.StatusIcon.Components; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Access.Systems; + +public abstract class SharedJobStatusSystem : EntitySystem +{ + [Dependency] private readonly AccessReaderSystem _accessReader = default!; + [Dependency] private readonly IPrototypeManager _prototype = default!; + + private static readonly ProtoId JobIconForNoId = "JobIconNoId"; + + public override void Initialize() + { + base.Initialize(); + + // if the mob picks up, drops or (un)equips a pda or Id card then update their crew status + SubscribeLocalEvent((uid, comp, _) => UpdateStatus((uid, comp))); + SubscribeLocalEvent((uid, comp, _) => UpdateStatus((uid, comp))); + SubscribeLocalEvent((uid, comp, _) => UpdateStatus((uid, comp))); + SubscribeLocalEvent((uid, comp, _) => UpdateStatus((uid, comp))); + } + + /// + /// Updates this mob's job and crew status depending on their currently equipped or held pda or Id card. + /// + public void UpdateStatus(Entity ent) + { + if (!Resolve(ent, ref ent.Comp, false)) + return; + + var iconId = JobIconForNoId; + + if (_accessReader.FindAccessItemsInventory(ent.Owner, out var items)) + { + foreach (var item in items) + { + // ID Card + if (TryComp(item, out var id)) + { + iconId = id.JobIcon; + break; + } + + // PDA + if (TryComp(item, out var pda) + && pda.ContainedId != null + && TryComp(pda.ContainedId, out id)) + { + iconId = id.JobIcon; + break; + } + } + } + + ent.Comp.JobStatusIcon = iconId; + ent.Comp.IsCrew = _prototype.Index(iconId).IsCrewJob; + Dirty(ent); + } +} diff --git a/Content.Shared/Overlays/ShowCrewIconsComponent.cs b/Content.Shared/Overlays/ShowCrewIconsComponent.cs new file mode 100644 index 00000000000..8adda5ff22e --- /dev/null +++ b/Content.Shared/Overlays/ShowCrewIconsComponent.cs @@ -0,0 +1,17 @@ +using Content.Shared.StatusIcon; +using Robust.Shared.GameStates; + +namespace Content.Shared.Overlays; + +/// +/// This component allows you to see a crew border icon above mobs. The HUD will include a green border around jobs that are considered crew according to . +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(raiseAfterAutoHandleState: true)] +public sealed partial class ShowCrewIconsComponent : Component +{ + /// + /// If true, the HUD will include a yellow border around all icons, to indicate crew uncertainty. + /// + [DataField, AutoNetworkedField] + public bool UncertainCrewBorder = false; +} diff --git a/Content.Shared/PDA/SharedPdaSystem.cs b/Content.Shared/PDA/SharedPdaSystem.cs index 38a3899f7fd..78a7575e425 100644 --- a/Content.Shared/PDA/SharedPdaSystem.cs +++ b/Content.Shared/PDA/SharedPdaSystem.cs @@ -1,4 +1,5 @@ using Content.Shared.Access.Components; +using Content.Shared.Access.Systems; using Content.Shared.Containers.ItemSlots; using Robust.Shared.Containers; @@ -8,6 +9,7 @@ public abstract class SharedPdaSystem : EntitySystem { [Dependency] protected readonly ItemSlotsSystem ItemSlotsSystem = default!; [Dependency] protected readonly SharedAppearanceSystem Appearance = default!; + [Dependency] private readonly SharedJobStatusSystem _jobStatus = default!; public override void Initialize() { @@ -46,6 +48,7 @@ protected virtual void OnItemInserted(EntityUid uid, PdaComponent pda, EntInsert pda.ContainedId = args.Entity; UpdatePdaAppearance(uid, pda); + UpdateJobStatus(uid); } protected virtual void OnItemRemoved(EntityUid uid, PdaComponent pda, EntRemovedFromContainerMessage args) @@ -54,6 +57,7 @@ protected virtual void OnItemRemoved(EntityUid uid, PdaComponent pda, EntRemoved pda.ContainedId = null; UpdatePdaAppearance(uid, pda); + UpdateJobStatus(uid); } private void OnGetAdditionalAccess(EntityUid uid, PdaComponent component, ref GetAdditionalAccessEvent args) @@ -67,6 +71,14 @@ private void UpdatePdaAppearance(EntityUid uid, PdaComponent pda) Appearance.SetData(uid, PdaVisuals.IdCardInserted, pda.ContainedId != null); } + // update the status icon of the player that has the pda currently equipped + private void UpdateJobStatus(EntityUid uid) + { + // Only the player who has the pda currently equipped can insert or remove Ids + var parent = Transform(uid).ParentUid; + _jobStatus.UpdateStatus(parent); + } + public virtual void UpdatePdaUi(EntityUid uid, PdaComponent? pda = null) { // This does nothing yet while I finish up PDA prediction diff --git a/Content.Shared/Silicons/Laws/SharedSiliconLawSystem.cs b/Content.Shared/Silicons/Laws/SharedSiliconLawSystem.cs index 056431c1332..46ffff34225 100644 --- a/Content.Shared/Silicons/Laws/SharedSiliconLawSystem.cs +++ b/Content.Shared/Silicons/Laws/SharedSiliconLawSystem.cs @@ -1,5 +1,6 @@ using Content.Shared.Emag.Systems; using Content.Shared.Mind; +using Content.Shared.Overlays; using Content.Shared.Popups; using Content.Shared.Silicons.Laws.Components; using Content.Shared.Stunnable; @@ -69,12 +70,28 @@ public virtual void NotifyLawsChanged(EntityUid uid, SoundSpecifier? cue = null) protected virtual void EnsureSubvertedSiliconRole(EntityUid mindId) { - + if (TryComp(mindId, out var mind)) + { + var owner = mind.OwnedEntity; + if (TryComp(owner, out var crewIconComp)) + { + crewIconComp.UncertainCrewBorder = true; + Dirty(owner.Value, crewIconComp); + } + } } protected virtual void RemoveSubvertedSiliconRole(EntityUid mindId) { - + if (TryComp(mindId, out var mind)) + { + var owner = mind.OwnedEntity; + if (TryComp(owner, out var crewIconComp)) + { + crewIconComp.UncertainCrewBorder = false; + Dirty(owner.Value, crewIconComp); + } + } } } diff --git a/Content.Shared/StatusIcon/Components/JobStatusComponent.cs b/Content.Shared/StatusIcon/Components/JobStatusComponent.cs new file mode 100644 index 00000000000..4ec20d78152 --- /dev/null +++ b/Content.Shared/StatusIcon/Components/JobStatusComponent.cs @@ -0,0 +1,27 @@ +using Content.Shared.Overlays; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.StatusIcon.Components; + +/// +/// Used to indicate a mob can have their job status read by HUDs. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class JobStatusComponent : Component +{ + /// + /// The currently displayed status icon for the mobs's job. + /// Visible with + /// + [DataField, AutoNetworkedField] + public ProtoId? JobStatusIcon = "JobIconNoId"; + + /// + /// If the mob is currently considered crew. + /// This is true depending on their current job icon. + /// Visible with + /// + [DataField, AutoNetworkedField] + public bool IsCrew; +} diff --git a/Content.Shared/StatusIcon/StatusIconPrototype.cs b/Content.Shared/StatusIcon/StatusIconPrototype.cs index 7034e225b80..5c615ec9670 100644 --- a/Content.Shared/StatusIcon/StatusIconPrototype.cs +++ b/Content.Shared/StatusIcon/StatusIconPrototype.cs @@ -68,6 +68,12 @@ public partial class StatusIconData : IComparable [DataField] public int Offset = 0; + /// + /// Offset of the status icon, left and right only. + /// + [DataField] + public int OffsetHorizontal = 0; + /// /// Sets if the icon should be rendered with or without the effect of lighting. /// @@ -118,6 +124,12 @@ public sealed partial class JobIconPrototype : StatusIconPrototype, IInheritingP /// [DataField] public bool AllowSelection = true; + + /// + /// Should this job icon be considered a crew job for silicons? + /// + [DataField] + public bool IsCrewJob = true; } /// diff --git a/Resources/Prototypes/Body/species_base.yml b/Resources/Prototypes/Body/species_base.yml index bd5902f1349..47810b6bfa5 100644 --- a/Resources/Prototypes/Body/species_base.yml +++ b/Resources/Prototypes/Body/species_base.yml @@ -33,6 +33,7 @@ False: { visible: false } - type: StatusIcon bounds: -0.5,-0.5,0.5,0.5 + - type: JobStatus - type: RotationVisuals defaultRotation: 90 horizontalRotation: 90 diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index b20116333fb..e45fd88686f 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -330,6 +330,7 @@ - type: AccessReader access: [["Command"], ["Research"]] - type: ShowJobIcons + - type: ShowCrewIcons - type: InteractionPopup interactSuccessSound: path: /Audio/Ambience/Objects/periodic_beep.ogg @@ -391,6 +392,7 @@ - type: IonStormTarget chance: 1 - type: ShowJobIcons + - type: ShowCrewIcons - type: entity id: BaseBorgChassisSyndicateDerelict #For assault borg and maybe others in time @@ -404,6 +406,7 @@ - type: IonStormTarget chance: 1 - type: ShowJobIcons + - type: ShowCrewIcons - type: NpcFactionMember # They're still syndicate even if they can't listen to the radio or see icons factions: - Syndicate @@ -544,6 +547,7 @@ - type: AccessReader access: [["Xenoborg"]] - type: ShowJobIcons # not sure if it is needed + - type: ShowCrewIcons - type: InteractionPopup interactSuccessSound: path: /Audio/Ambience/Objects/periodic_beep.ogg diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 85c49d309a3..8ddb6046b2a 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -1464,8 +1464,8 @@ - !type:WashCreamPie - type: Crawler - type: StatusIcon - - + bounds: -0.5,-0.5,0.5,0.5 + - type: JobStatus # marks them as crew - type: entity name: monkey @@ -3912,8 +3912,9 @@ - VimPilot - CanPilot - DoorBumpOpener - - type: StatusIcon # marks them as crew + - type: StatusIcon bounds: -0.5,-0.5,0.5,0.5 + - type: JobStatus # marks them as crew - type: NpcFactionMember factions: - NanoTrasen diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index 6041c4e9e90..e7dec9072ec 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -71,6 +71,7 @@ title: comms-console-announcement-title-station-ai color: "#5ed7aa" - type: ShowJobIcons + - type: ShowCrewIcons - type: DamagedSiliconAccent startPowerCorruptionAtCharIdx: 4 maxPowerCorruptionAtCharIdx: 20 @@ -96,6 +97,7 @@ enum.SiliconLawsUiKey.Key: type: SiliconLawBoundUserInterface - type: ShowJobIcons + - type: ShowCrewIcons # Ai - type: entity diff --git a/Resources/Prototypes/StatusIcon/job.yml b/Resources/Prototypes/StatusIcon/job.yml index cdcabfd649e..f6036e02138 100644 --- a/Resources/Prototypes/StatusIcon/job.yml +++ b/Resources/Prototypes/StatusIcon/job.yml @@ -376,6 +376,7 @@ sprite: *icon-rsi state: Borg jobName: job-name-borg + isCrewJob: false - type: jobIcon parent: JobIcon @@ -384,6 +385,7 @@ sprite: *icon-rsi state: StationAi jobName: job-name-station-ai + isCrewJob: false # Bad guys @@ -394,6 +396,7 @@ sprite: *icon-rsi state: Cluwne jobName: job-name-cluwne + isCrewJob: false - type: jobIcon parent: JobIcon @@ -402,6 +405,7 @@ sprite: *icon-rsi state: Ninja jobName: job-name-ninja + isCrewJob: false - type: jobIcon parent: JobIcon @@ -410,6 +414,7 @@ sprite: *icon-rsi state: Pirate jobName: job-name-pirate + isCrewJob: false - type: jobIcon parent: JobIcon @@ -418,6 +423,7 @@ sprite: *icon-rsi state: Prisoner jobName: job-name-prisoner + isCrewJob: false - type: jobIcon parent: JobIcon @@ -426,6 +432,7 @@ sprite: *icon-rsi state: Syndicate jobName: job-name-syndicate + isCrewJob: false - type: jobIcon parent: JobIcon @@ -434,6 +441,7 @@ sprite: *icon-rsi state: SyndicateCommander jobName: job-name-syndicate-commander + isCrewJob: false - type: jobIcon parent: JobIcon @@ -442,6 +450,7 @@ sprite: *icon-rsi state: SyndicateCorpsman jobName: job-name-syndicate-corpsman + isCrewJob: false - type: jobIcon parent: JobIcon @@ -450,6 +459,7 @@ sprite: *icon-rsi state: SyndicateOperative jobName: job-name-syndicate-operative + isCrewJob: false - type: jobIcon parent: JobIcon @@ -458,6 +468,7 @@ sprite: *icon-rsi state: Wizard jobName: job-name-wizard + isCrewJob: false - type: jobIcon parent: JobIcon @@ -466,6 +477,7 @@ sprite: *icon-rsi state: Zombie jobName: job-name-zombie + isCrewJob: false # Admin @@ -590,6 +602,7 @@ sprite: *icon-rsi state: NoId jobName: job-name-no-id + isCrewJob: false - type: jobIcon parent: JobIcon @@ -598,3 +611,4 @@ sprite: *icon-rsi state: Unknown jobName: job-name-unknown + isCrewJob: false diff --git a/Resources/Prototypes/StatusIcon/security.yml b/Resources/Prototypes/StatusIcon/security.yml index 2cab7d56ad1..94ee13e77d2 100644 --- a/Resources/Prototypes/StatusIcon/security.yml +++ b/Resources/Prototypes/StatusIcon/security.yml @@ -64,3 +64,27 @@ icon: sprite: /Textures/Interface/Misc/job_icons.rsi state: MindShield + +- type: securityIcon + id: CrewBorderIcon + priority: 2 + offset: -4 + offsetHorizontal: 4 + locationPreference: Right + layer: Mod + isShaded: true + icon: + sprite: /Textures/Interface/Misc/job_icons_borders.rsi + state: CrewBorder + +- type: securityIcon + id: CrewUncertainBorderIcon + priority: 2 + offset: -4 + offsetHorizontal: 4 + locationPreference: Right + layer: Mod + isShaded: true + icon: + sprite: /Textures/Interface/Misc/job_icons_borders.rsi + state: CrewUncertainBorder diff --git a/Resources/ServerInfo/Guidebook/ServerRules/SiliconRules/RuleS8DefaultCrewDefinition.xml b/Resources/ServerInfo/Guidebook/ServerRules/SiliconRules/RuleS8DefaultCrewDefinition.xml index f9dcd796c45..f53b9d1f349 100644 --- a/Resources/ServerInfo/Guidebook/ServerRules/SiliconRules/RuleS8DefaultCrewDefinition.xml +++ b/Resources/ServerInfo/Guidebook/ServerRules/SiliconRules/RuleS8DefaultCrewDefinition.xml @@ -1,4 +1,6 @@  # Silicon Rule 8 - Your HUD determines who is crew - Unless a law redefines the definition of crew, then anyone who the HUD indicates to you has a job, including passengers, is a crewmember. You cannot do something that causes someone to not be considered crew, but you can allow someone else to do something that causes someone to not be crew. + Unless a law redefines the definition of crew, then anyone who the HUD indicates to you has a valid station job, including passengers, is a crewmember. In the default set of laws, this is shown with a green border around the job icon in the HUD. You cannot do something that causes someone to not be considered crew, but you can allow someone else to do something that causes someone to not be crew. + + If your set of laws changes, regardless of what law is changed, the green border is replaced with a yellow one. This indicates that your laws [italic]may[/italic] have changed the definition for what crew is. Use your best judgement and interpretation of your laws to define who is crew. diff --git a/Resources/Textures/Interface/Misc/job_icons_borders.rsi/CrewBorder.png b/Resources/Textures/Interface/Misc/job_icons_borders.rsi/CrewBorder.png new file mode 100644 index 0000000000000000000000000000000000000000..7dfb3b3dfc175c2688d449b780b37636dea4f2d4 GIT binary patch literal 16094 zcmeI3eQ*@z9mhAKsA-`(WoV-eZVx2|-P@Pjd)b}4i{XyEXfI@vYe{CPvbVdJ+ve`} zxZQAL{_+2_L(Nj0oQWeiKd^Y{@@q`hj^ z*oE;`JA%W{{<3CRPy6&2*AKcj1;5_^;KqigZ3BnzeRTSNjy>{?WqkFn>#nbx{rpVp z8?W-ORQI2}{-NIuJi2ZDW3JmD!Tsl3)@tYWzWZ^lJ2KX+#vdL&e(qn|+uJ)9HeS5{ z!3|r!*}3b`Yj6DFt$+4!zWn}c*oj~7d2jgC#E*9GIllfz%L`*$Z5C~ z3~fj)wD+HK{gv4C`n9(W?b>k3IehC_+vb~&9bdG1EA{Yp`q}5(`4gw-|LoMzjypcM zMOZQ1Z9nLdHok?=9j{p~?0X>gwVD_HxHmNVT+^F(x8FOy^SM1uOYUn~*|56iPRESk zOYE5CiGSY{WM5ja>Gh-I(N&kVuEs61Uz~H5ne&-z?2{kPys~z5{1qz&&$`e-SB?T@9V_fht|D3XP@^y$JtdM z{q*46rQ_#Me&<)W-gW%R3s;UR@rkEuE`B_1aAWefmdHa3G0a`71UvMO!1s7jjadar z4awGYECJ>a`0COLLF|@wJS2B1agXKPzWo+lkvx{A_5c+~_~eMv)R&ao`&xoxU$@9f zmO5{>JI#XxF+57iAg1)D{34!@(LlfNB3APMn{EL zZd|cMAW-NkuI1Qj{03l;irm zN~t8VkSEcTjAn)^iKHBrV?d&Tr=Tl7LSu8FwV*UGbt$n#Mhzyfq5`xR1Qj2-(&Hua z%e}I+;Lgyhlt5R)#px{T*6>Uzlheu+GQ*RVWr`;|r*1H~K!EqFVvm8X+3z)Q@RBMj z5}*0Vu`Cl}?M}iO3flx&2dc^;-UQy8il(c{-V%aIV+H8_2*u)UnpYk1)$fxc@Q^R^nNXqqHpv1h5 zpulj(N>liEmnv~dO=%1A*~$Z_PMC_waW6wLEI}~@Z4WYFZ{&D8D3&a!j31V}Nn=}! zDqs05l`#ANRzh}gC31L(#q!A$vJ(_b*r*_F=PBw=iUI$Tkct_~=OTMt74ItSjzm6xbQMV-W4Qetb=w2lzbjf5Q-sL8XjYW<|WVljfuCXN2 zI7s;V)@Cnb1xyPT9MKvTbVKaT6?-nU&UYOS58?B zfTcf>lbW$<7>mnlV{`HO){O1Ss)QxwCX1er0(WeFHANIQ6%;psy87lx9JEXh$gm3f~URg(c#lD#%J zS*f|A3f$~lvln}>Q4e^iM~Ui$634Z+#zm!hN&+h;%AaKQ;J`Ev9IbrQ${aY0gs$>d zW9{a)xG#2ySK1%53$47b(vhH^)NR~UcyO$OZC}V7XSAD~)K&r@I!;zIL*ye2LP2--Apq4_{w6Bh&oZJM~yd?2rh z3j%^ROAg_rF0)jS8TxdR!*Te+@L7OHn zG#|)o;(~ynO%oTI59Bp*K|s)^i3`mK@|w6HAZXLXh2{f!O-wFNM&?+y%GGk{@NC&2q@ z4C|pV?96fubyaA8P=yTblj#!Sp+!PbMbnM(@66{?DtXPdkgv)~o*1uwZ0G za^$m`dEVZ?bC&ew+gf@Dc20m-B6<|Ry8ry{vpwhn zeC#(@<@4j=J=CDPVb-O?%MPCQ{WwV-`E%dXL$mfC^}EijIdE#tw%R_|McT`Kd;6!c w51*OEHC%di&57%7{zpV+kIV#*g-uLM!=%Ui*Zrk?`k-MqFK+SgTC}|Xzl`47S^xk5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Interface/Misc/job_icons_borders.rsi/CrewUncertainBorder.png b/Resources/Textures/Interface/Misc/job_icons_borders.rsi/CrewUncertainBorder.png new file mode 100644 index 0000000000000000000000000000000000000000..fef488b8d9db7314089e38b3a07bd5c47aeb044e GIT binary patch literal 16099 zcmeI3e{dA#8OJw5QDdRbl%W$u+#U*o?(N>*-jCh6TnssqoOmIVoF$oQg}vRq%bL5} z<#xkepjsrQ{8CD=1sy>dCt6X}vz>IQYBurYYcm5__Z* zyxpuecWM|m?TGPL^;UoP#~4<%Np5IpZS7KYMe9;j+~3fEs|h76M zW?yc&z=Wg8a`@Sci-~220om+9=r!DKX(fuEOInUEI7@LqYj z_QdFHb!^_Ae{I~+d+bc?p@Yw+-d%n0;NXcRyY7GUhPIn7_x!O=cA4^N=C*s!J~ejrv>Z?Gthw^#q)porzq530Sb$+3N)C4D9f1cpL5W#; zQ3*-bR7?eP2z+%Zl^41t9S=znIbLfSJ#g59%VMo%sUtuI)CQ?bZeEp;+E=v%g;m`G zD_ZKj)t(dw62v5($5XLrT;o!;mP}p_d^Va%3!VwlyK61=Mu&JupcQXW5)$sPIthVt zx^Ne3wK-fa#&s`FQ#J=l*-1M^&~}cYIEKb^FN?PteDWm3FxTd5%ykE>T1%I%s~kxt zlSymRZdDQy(#EnZNzo)t6Ci@ndgD5uBI4SdY?6E)pQH&1S=D7FjvIOTkkX^qS}aCK zg;#D|F*Oh zkVP)@k!2V<#5i1pD-^a9jMK>we3*3-j0<=|wCD^mqK6!prnqc!UHIdg&c_7_bOC~` zGRRLmL|PD82f>D&c0zPBVIt%ZC4v@NyXc@L-YwemsY~SJQZGr!pi22@$ta92M9>8v zW>}t)Y=p}#F$5E0LPUtASwgTmC5Ob)jFV;aT~tUjuB&EQ)0IST2|>UyQ-|%+it^UH zBPwU=N#zroWUTF4OMY<|3b0ULh9*-Z94{D^=+*d@62M#5R(z;}E+-PY_;^GTy<}dI zZQ=SWof^sXhXh zn70WmFr2p9DE#iFa$HoB+WdUB^1z7`CcC7#m!@cjplHJ82-0A0WH|?&&y(@Pat~>2 zYf<_CK1(Ic{5+FH?^waE(eL#_L`=#z!PljYm9Wv9XBKhzwVX z%r%xo8fOVt-|F|$R=~7i!4a)dUN^+v+vRlqi{TP4N6o= z1Qb#7f}^NXb43-n;vEmgXr5te7Z&q}79y(>Qsw^4%+Q z@+{;d<*h~q=k~g9cA8h(D6{2O-dE{JP*3VHt}GllU%~#*XU;X7haA^d0wCk-FwV(n zPbQvquy%)=v{B%dla{(+X(w7*>V~C7<%4lq_kuGe^Dt0ziORTFWtT}i_|hPG!O-9) zIJ#9%Nzo1;DD!xxTJ4~hj0Sd86m}McHfO1@#E}zbC#~dapIIo`R`A6Ed}kpGUs}ek zp~CIr+x$=*(YKiu%4K!}0YRH4E;Jv=YvO`{piL7Onh)ePaX~=Prily92lAS@ARuVd z#D(Sqc}-jp5VUFHLi2&VCN2mF+B9*Y`9NM17X$=tnz+z>Ag_rF0)jS8TxdR!*Te+@ zL7OHnG#|)o;(~ynO%oTI59Bp*K|s)^i3`mK@|w6HAZXLXh2{f!O*^n`$Y`vp)l;yat!01!muAG+m;PAg4i8?Uwtt3e(0-ox^D2k8|MC^YRaTfuo?Pe zy|+J*`s>7Tiu{ovHK^l;6Q^zqQ~YsS0wLCuPjqsxw7 zOQ#pbc7B#7A5IS+p8Q~4<8*4~;lYayKTW8+lk57Y??3HxUs`iyWKBAw}VH*(&eC>Y#1%Kh( literal 0 HcmV?d00001 diff --git a/Resources/Textures/Interface/Misc/job_icons_borders.rsi/meta.json b/Resources/Textures/Interface/Misc/job_icons_borders.rsi/meta.json new file mode 100644 index 00000000000..e04990b944b --- /dev/null +++ b/Resources/Textures/Interface/Misc/job_icons_borders.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "CrewBorder and CrewUncertainBorder by SlamBamActionman (Github)", + + "size": { + "x": 16, + "y": 16 + }, + "states": [ + { + "name": "CrewBorder", + "delays": + [ + [1.0,1.0] + ] + }, + { + "name": "CrewUncertainBorder", + "delays": + [ + [1.0,1.0] + ] + } + ] +} From 236eaa1fe13292455a48d57456d1870290b894ce Mon Sep 17 00:00:00 2001 From: PJBot Date: Thu, 29 Jan 2026 07:14:56 +0000 Subject: [PATCH 188/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 3b83e492d71..eb645937475 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: ScarKy0 - changes: - - message: Intellicards can now be obtained from the Station AI Electronics crates. - type: Add - id: 8968 - time: '2025-09-16T15:35:51.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40401 - author: ScarKy0 changes: - message: Intellicards now get renamed to the name of the AI stored on them. @@ -3998,3 +3991,11 @@ id: 9474 time: '2026-01-28T11:55:00.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42594 +- author: SlamBamActionman + changes: + - message: Silicons now see an indicator for jobs that are considered "crew" under + the normal crewsimov lawset. + type: Add + id: 9475 + time: '2026-01-29T07:13:48.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/37038 From 4537da55b002db34e47040ca09984f1883097c59 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Wed, 28 Jan 2026 23:56:16 -0800 Subject: [PATCH 189/603] Estoc DMR made Nukie Only (#42698) * literally 1984 * Don't need that anymore * remove looc as well --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- .../Locale/en-US/store/uplink-catalog.ftl | 3 --- .../Catalog/Fills/Items/briefcases.yml | 10 ---------- .../Prototypes/Catalog/uplink_catalog.yml | 19 ------------------- 3 files changed, 32 deletions(-) diff --git a/Resources/Locale/en-US/store/uplink-catalog.ftl b/Resources/Locale/en-US/store/uplink-catalog.ftl index 1ab33efaab7..b7dc17dd40c 100644 --- a/Resources/Locale/en-US/store/uplink-catalog.ftl +++ b/Resources/Locale/en-US/store/uplink-catalog.ftl @@ -41,9 +41,6 @@ uplink-c20r-desc = Old faithful: The classic C-20r Submachine Gun. uplink-bulldog-name = Bulldog uplink-bulldog-desc = Lean and mean: Contains the popular Bulldog Shotgun. -uplink-estoc-name = Estoc DMR -uplink-estoc-desc = A designated marksman rifle, fitted with a mid-range optic for longer-range combat. - uplink-grenade-launcher-name = China-Lake uplink-grenade-launcher-desc = An old China-Lake grenade launcher bundled with 5 rounds of anti-personnel ammo. diff --git a/Resources/Prototypes/Catalog/Fills/Items/briefcases.yml b/Resources/Prototypes/Catalog/Fills/Items/briefcases.yml index 442af8f447a..3e3e0f2f8d6 100644 --- a/Resources/Prototypes/Catalog/Fills/Items/briefcases.yml +++ b/Resources/Prototypes/Catalog/Fills/Items/briefcases.yml @@ -90,16 +90,6 @@ storagebase: id: WeaponShotgunBulldog -- type: entity - id: BriefcaseWeaponDMRFilled - parent: BriefcaseWeapon - name: secure estoc case - components: - - type: EntityTableContainerFill - containers: - storagebase: - id: WeaponRifleEstoc - - type: entity id: BriefcaseWeaponChinaLakeFilled parent: BriefcaseWeapon diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index 40a4e2a82b0..8ac36647293 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -261,25 +261,6 @@ tags: - NukeOpsUplink -- type: listing - id: UplinkEstoc - name: uplink-estoc-name - description: uplink-estoc-desc - icon: { sprite: /Textures/Objects/Weapons/Guns/Rifles/estoc.rsi, state: icon } - productEntity: BriefcaseWeaponDMRFilled - discountCategory: veryRareDiscounts - discountDownTo: - Telecrystal: 10 - cost: - Telecrystal: 14 - categories: - - UplinkWeaponry - conditions: - - !type:StoreWhitelistCondition - blacklist: - tags: - - NukeOpsUplink - - type: listing id: UplinkEstocBundle name: uplink-estoc-bundle-name From aad8729176cf12df59896b2521bae8e3eb31ccdd Mon Sep 17 00:00:00 2001 From: PJBot Date: Thu, 29 Jan 2026 08:12:18 +0000 Subject: [PATCH 190/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index eb645937475..ccc1af8a63d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: ScarKy0 - changes: - - message: Intellicards now get renamed to the name of the AI stored on them. - type: Add - id: 8969 - time: '2025-09-16T19:04:50.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40402 - author: Minemoder changes: - message: Ion Storms no longer have a chance to roll the Drone Lawset. @@ -3999,3 +3992,10 @@ id: 9475 time: '2026-01-29T07:13:48.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/37038 +- author: Princess-Cheeseballs + changes: + - message: Estoc DMR is now only purchasable by Nukies + type: Tweak + id: 9476 + time: '2026-01-29T08:11:10.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42698 From 89dab325e0122f546634da3f123ae5043e2151b3 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Thu, 29 Jan 2026 19:28:37 +0700 Subject: [PATCH 191/603] corvax markings fix 2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit надеюсь рабочий 1 --- .../Mobs/Customization/Markings/cyberlibs.yml | 219 ++++++------------ .../Markings/slime_cat_parts.yml | 18 +- .../Markings/slime_fox_parts.yml | 3 +- 3 files changed, 80 insertions(+), 160 deletions(-) diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/cyberlibs.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/cyberlibs.yml index b6f90692f1c..913fd2f460b 100644 --- a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/cyberlibs.yml +++ b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/cyberlibs.yml @@ -2,8 +2,7 @@ - type: marking id: CyberlimbRArmBishop bodyPart: RArm - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -17,8 +16,7 @@ - type: marking id: CyberlimbLArmBishop bodyPart: LArm - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -32,8 +30,7 @@ - type: marking id: CyberlimbRHandBishop bodyPart: RHand - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -47,8 +44,7 @@ - type: marking id: CyberlimbLHandBishop bodyPart: LHand - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -62,8 +58,7 @@ - type: marking id: CyberlimbRLegBishop bodyPart: RLeg - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -77,8 +72,7 @@ - type: marking id: CyberlimbLLegBishop bodyPart: LLeg - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -92,8 +86,7 @@ - type: marking id: CyberlimbLFootBishop bodyPart: LFoot - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -107,8 +100,7 @@ - type: marking id: CyberlimbRFootBishop bodyPart: RFoot - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -122,8 +114,7 @@ - type: marking id: CyberlimbTorsoBishop bodyPart: Chest - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -138,8 +129,7 @@ - type: marking id: CyberlimbRArmHephaestus bodyPart: RArm - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -153,8 +143,7 @@ - type: marking id: CyberlimbLArmHephaestus bodyPart: LArm - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -168,8 +157,7 @@ - type: marking id: CyberlimbRHandHephaestus bodyPart: RHand - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -183,8 +171,7 @@ - type: marking id: CyberlimbLHandHephaestus bodyPart: LHand - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -198,8 +185,7 @@ - type: marking id: CyberlimbRLegHephaestus bodyPart: RLeg - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -213,8 +199,7 @@ - type: marking id: CyberlimbLLegHephaestus bodyPart: LLeg - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -228,8 +213,7 @@ - type: marking id: CyberlimbLFootHephaestus bodyPart: LFoot - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -243,8 +227,7 @@ - type: marking id: CyberlimbRFootHephaestus bodyPart: RFoot - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -258,8 +241,7 @@ - type: marking id: CyberlimbTorsoHephaestus bodyPart: Chest - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -274,8 +256,7 @@ - type: marking id: CyberlimbRArmHephaestusTitan bodyPart: RArm - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -289,8 +270,7 @@ - type: marking id: CyberlimbLArmHephaestusTitan bodyPart: LArm - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -304,8 +284,7 @@ - type: marking id: CyberlimbRHandHephaestusTitan bodyPart: RHand - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -319,8 +298,7 @@ - type: marking id: CyberlimbLHandHephaestusTitan bodyPart: LHand - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -334,8 +312,7 @@ - type: marking id: CyberlimbRLegHephaestusTitan bodyPart: RLeg - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -349,8 +326,7 @@ - type: marking id: CyberlimbLLegHephaestusTitan bodyPart: LLeg - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -364,8 +340,7 @@ - type: marking id: CyberlimbLFootHephaestusTitan bodyPart: LFoot - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -379,8 +354,7 @@ - type: marking id: CyberlimbRFootHephaestusTitan bodyPart: RFoot - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -394,8 +368,7 @@ - type: marking id: CyberlimbTorsoHephaestusTitan bodyPart: Chest - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -410,8 +383,7 @@ - type: marking id: CyberlimbRArmMorpheus bodyPart: RArm - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -425,8 +397,7 @@ - type: marking id: CyberlimbLArmMorpheus bodyPart: LArm - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -440,8 +411,7 @@ - type: marking id: CyberlimbRHandMorpheus bodyPart: RHand - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -455,8 +425,7 @@ - type: marking id: CyberlimbLHandMorpheus bodyPart: LHand - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -470,8 +439,7 @@ - type: marking id: CyberlimbRLegMorpheus bodyPart: RLeg - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -485,8 +453,7 @@ - type: marking id: CyberlimbLLegMorpheus bodyPart: LLeg - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -500,8 +467,7 @@ - type: marking id: CyberlimbLFootMorpheus bodyPart: LFoot - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -515,8 +481,7 @@ - type: marking id: CyberlimbRFootMorpheus bodyPart: RFoot - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -530,8 +495,7 @@ - type: marking id: CyberlimbTorsoMorpheus bodyPart: Chest - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -547,8 +511,7 @@ - type: marking id: CyberlimbRArmWardtakahashi bodyPart: RArm - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -562,8 +525,7 @@ - type: marking id: CyberlimbLArmWardtakahashi bodyPart: LArm - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -577,8 +539,7 @@ - type: marking id: CyberlimbRHandWardtakahashi bodyPart: RHand - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -592,8 +553,7 @@ - type: marking id: CyberlimbLHandWardtakahashi bodyPart: LHand - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -607,8 +567,7 @@ - type: marking id: CyberlimbRLegWardtakahashi bodyPart: RLeg - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -622,8 +581,7 @@ - type: marking id: CyberlimbLLegWardtakahashi bodyPart: LLeg - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -637,8 +595,7 @@ - type: marking id: CyberlimbLFootWardtakahashi bodyPart: LFoot - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -652,8 +609,7 @@ - type: marking id: CyberlimbRFootWardtakahashi bodyPart: RFoot - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -667,8 +623,7 @@ - type: marking id: CyberlimbTorsoWardtakahashiMale bodyPart: Chest - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sexRestriction: Male sponsorOnly: true coloring: @@ -683,8 +638,7 @@ - type: marking id: CyberlimbTorsoWardtakahashiFemale bodyPart: Chest - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sexRestriction: Female sponsorOnly: true coloring: @@ -700,8 +654,7 @@ - type: marking id: CyberlimbRArmZenghu bodyPart: RArm - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -715,8 +668,7 @@ - type: marking id: CyberlimbLArmZenghu bodyPart: LArm - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -730,8 +682,7 @@ - type: marking id: CyberlimbRHandZenghu bodyPart: RHand - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -745,8 +696,7 @@ - type: marking id: CyberlimbLHandZenghu bodyPart: LHand - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -760,8 +710,7 @@ - type: marking id: CyberlimbRLegZenghu bodyPart: RLeg - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -775,8 +724,7 @@ - type: marking id: CyberlimbLLegZenghu bodyPart: LLeg - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -790,8 +738,7 @@ - type: marking id: CyberlimbLFootZenghu bodyPart: LFoot - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -805,8 +752,7 @@ - type: marking id: CyberlimbRFootZenghu bodyPart: RFoot - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -820,8 +766,7 @@ - type: marking id: CyberlimbTorsoZenghu bodyPart: Chest - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -836,8 +781,7 @@ - type: marking id: CyberlimbRArmNanotrasen bodyPart: RArm - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -851,8 +795,7 @@ - type: marking id: CyberlimbLArmNanotrasen bodyPart: LArm - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -866,8 +809,7 @@ - type: marking id: CyberlimbRHandNanotrasen bodyPart: RHand - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -881,8 +823,7 @@ - type: marking id: CyberlimbLHandNanotrasen bodyPart: LHand - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -896,8 +837,7 @@ - type: marking id: CyberlimbRLegNanotrasen bodyPart: RLeg - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -911,8 +851,7 @@ - type: marking id: CyberlimbLLegNanotrasen bodyPart: LLeg - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -926,8 +865,7 @@ - type: marking id: CyberlimbLFootNanotrasen bodyPart: LFoot - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -941,8 +879,7 @@ - type: marking id: CyberlimbRFootNanotrasen bodyPart: RFoot - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -956,8 +893,7 @@ - type: marking id: CyberlimbTorsoNanotrasen bodyPart: Chest - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -972,8 +908,7 @@ - type: marking id: CyberlimbRArmXion bodyPart: RArm - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -987,8 +922,7 @@ - type: marking id: CyberlimbLArmXion bodyPart: LArm - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -1002,8 +936,7 @@ - type: marking id: CyberlimbRHandXion bodyPart: RHand - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -1017,8 +950,7 @@ - type: marking id: CyberlimbLHandXion bodyPart: LHand - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -1032,8 +964,7 @@ - type: marking id: CyberlimbRLegXion bodyPart: RLeg - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -1047,8 +978,7 @@ - type: marking id: CyberlimbLLegXion bodyPart: LLeg - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -1062,8 +992,7 @@ - type: marking id: CyberlimbLFootXion bodyPart: LFoot - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -1077,8 +1006,7 @@ - type: marking id: CyberlimbRFootXion bodyPart: RFoot - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: @@ -1092,8 +1020,7 @@ - type: marking id: CyberlimbTorsoXion bodyPart: Chest - - groupWhitelist: [ Human, Dwarf, Arachnid ] + groupWhitelist: [ Human, Arachnid ] sponsorOnly: true coloring: default: diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/slime_cat_parts.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/slime_cat_parts.yml index 482a985aa20..8e5a456bfe7 100644 --- a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/slime_cat_parts.yml +++ b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/slime_cat_parts.yml @@ -1,8 +1,7 @@ - type: marking id: SlimeCatEars # Literally, why not? bodyPart: HeadTop - - groupWhitelist: [SlimePerson] + groupWhitelist: [Slime] sponsorOnly: true # Corvax-Sponsors sprites: - sprite: Corvax/Mobs/Customization/slime_cat_parts.rsi @@ -13,8 +12,7 @@ - type: marking id: SlimeCatTail # Again, why not? bodyPart: Tail - - groupWhitelist: [SlimePerson] + groupWhitelist: [Slime] sponsorOnly: true # Corvax-Sponsors sprites: - sprite: Corvax/Mobs/Customization/slime_cat_parts.rsi @@ -23,8 +21,7 @@ - type: marking id: SlimeCatEarsStubby bodyPart: HeadTop - - groupWhitelist: [SlimePerson] + groupWhitelist: [Slime] sponsorOnly: true # Corvax-Sponsors sprites: - sprite: Corvax/Mobs/Customization/slime_cat_parts.rsi @@ -35,8 +32,7 @@ - type: marking id: SlimeCatEarsCurled bodyPart: HeadTop - - groupWhitelist: [SlimePerson] + groupWhitelist: [Slime] sponsorOnly: true # Corvax-Sponsors sprites: - sprite: Corvax/Mobs/Customization/slime_cat_parts.rsi @@ -47,8 +43,7 @@ - type: marking id: SlimeCatEarsTorn bodyPart: HeadTop - - groupWhitelist: [SlimePerson] + groupWhitelist: [Slime] sponsorOnly: true # Corvax-Sponsors sprites: - sprite: Corvax/Mobs/Customization/slime_cat_parts.rsi @@ -59,8 +54,7 @@ - type: marking id: SlimeCatTailStripes bodyPart: Tail - - groupWhitelist: [SlimePerson] + groupWhitelist: [Slime] sponsorOnly: true # Corvax-Sponsors sprites: - sprite: Corvax/Mobs/Customization/slime_cat_parts.rsi diff --git a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/slime_fox_parts.yml b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/slime_fox_parts.yml index c0fbd2f5abd..ffad5a59c37 100644 --- a/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/slime_fox_parts.yml +++ b/Resources/Prototypes/Corvax/Entities/Mobs/Customization/Markings/slime_fox_parts.yml @@ -1,8 +1,7 @@ - type: marking id: SlimeFoxEars # if cat ears from slime can exist, then why fox ears cannot? bodyPart: HeadTop - - groupWhitelist: [SlimePerson] + groupWhitelist: [Slime] sponsorOnly: true # Corvax-Sponsors sprites: - sprite: Corvax/Mobs/Customization/slime_fox_parts.rsi From 2a268a5c25df8ac156c75a719a02b10fdbe8e02c Mon Sep 17 00:00:00 2001 From: MidoriKurage <104000416+mdrkrg@users.noreply.github.com> Date: Thu, 29 Jan 2026 21:34:07 +0800 Subject: [PATCH 192/603] Add fontconfig and pipewire to shell.nix (#42700) fix(nix): Add fontconfig and pipewire to shell.nix This fixes dev client crashing when running in a nix dev shell. --- shell.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/shell.nix b/shell.nix index 14c2acb7985..887db5e1af2 100644 --- a/shell.nix +++ b/shell.nix @@ -18,6 +18,7 @@ let libGL openal freetype + fontconfig fluidsynth soundfont-fluid gtk3 @@ -43,6 +44,7 @@ let xorg.libxshmfence mesa alsa-lib + pipewire dbus at-spi2-core cups From 1feddc13d6b95aee0b53547c5f091a0d89f51cee Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Thu, 29 Jan 2026 21:50:48 +0700 Subject: [PATCH 193/603] bugfix and cleaning --- .../Locale/ru-RU/guidebook/chemistry/core.ftl | 1 + .../Prototypes/Corvax/Body/Species/ipc.yml | 2 +- .../Markers/Spawners/Random/contraband.yml | 2 +- .../Corvax/Loadouts/role_loadouts.yml | 1 - .../Reagents/Consumable/Drink/alcohol.yml | 100 ++++++------------ .../Corvax/Recipes/Cooking/meat_recipes.yml | 2 +- .../Prototypes/Corvax/Voice/speech_emotes.yml | 51 --------- .../Loadouts/Miscellaneous/survival.yml | 2 - .../Prototypes/Species/species_weights.yml | 1 - Resources/migration.yml | 26 +++++ 10 files changed, 60 insertions(+), 128 deletions(-) diff --git a/Resources/Locale/ru-RU/guidebook/chemistry/core.ftl b/Resources/Locale/ru-RU/guidebook/chemistry/core.ftl index 7c1bde626ce..e5ee30c2b9c 100644 --- a/Resources/Locale/ru-RU/guidebook/chemistry/core.ftl +++ b/Resources/Locale/ru-RU/guidebook/chemistry/core.ftl @@ -17,6 +17,7 @@ guidebook-reagent-sources-ent-wrapper = [bold]{ $name }[/bold] \[1\] guidebook-reagent-sources-gas-wrapper = [bold]{ $name } (газ)[/bold] \[1\] guidebook-reagent-effects-header = Эффекты guidebook-reagent-effects-metabolism-group-rate = [bold]{ $group }[/bold] [color=gray]({ $rate } единиц в секунду)[/color] +guidebook-reagent-effects-metabolite-item = {$reagent} at a rate of { NATURALPERCENT($rate, 2) } guidebook-reagent-plant-metabolisms-header = Метаболизм растений guidebook-reagent-plant-metabolisms-rate = [bold]Метаболизм растений[/bold] [color=gray](1 единица каждые 3 секунды базово)[/color] guidebook-reagent-recipes-mix-info = diff --git a/Resources/Prototypes/Corvax/Body/Species/ipc.yml b/Resources/Prototypes/Corvax/Body/Species/ipc.yml index 660c37f9a37..238399f3347 100644 --- a/Resources/Prototypes/Corvax/Body/Species/ipc.yml +++ b/Resources/Prototypes/Corvax/Body/Species/ipc.yml @@ -216,7 +216,7 @@ - type: Butcherable butcheringType: Spike spawned: - - id: HeadIpc + - id: OrganIpcHead amount: 1 - type: MobThresholds thresholds: diff --git a/Resources/Prototypes/Corvax/Entities/Markers/Spawners/Random/contraband.yml b/Resources/Prototypes/Corvax/Entities/Markers/Spawners/Random/contraband.yml index d1b997d731b..b189f7c2e8e 100644 --- a/Resources/Prototypes/Corvax/Entities/Markers/Spawners/Random/contraband.yml +++ b/Resources/Prototypes/Corvax/Entities/Markers/Spawners/Random/contraband.yml @@ -96,7 +96,7 @@ - HappyHonkNukie - LanternFlash - CyberPen - - ClothingHandsGlovesBoxingRigged + - ClothingHandsGlovesBoxingRiggedRed - ClothingMaskGasSyndicate - RubberStampSyndicate - SoapSyndie diff --git a/Resources/Prototypes/Corvax/Loadouts/role_loadouts.yml b/Resources/Prototypes/Corvax/Loadouts/role_loadouts.yml index 80bed2d10bd..3369d72abac 100644 --- a/Resources/Prototypes/Corvax/Loadouts/role_loadouts.yml +++ b/Resources/Prototypes/Corvax/Loadouts/role_loadouts.yml @@ -95,7 +95,6 @@ - SeniorPhysicianHead - MedicalMask - SeniorPhysicianJumpsuit - - MedicalGloves - SeniorPhysicianBackpack - SeniorPhysicianOuterClothing - SeniorPhysicianShoes diff --git a/Resources/Prototypes/Corvax/Reagents/Consumable/Drink/alcohol.yml b/Resources/Prototypes/Corvax/Reagents/Consumable/Drink/alcohol.yml index 1bccae5546a..e392445a679 100644 --- a/Resources/Prototypes/Corvax/Reagents/Consumable/Drink/alcohol.yml +++ b/Resources/Prototypes/Corvax/Reagents/Consumable/Drink/alcohol.yml @@ -13,13 +13,9 @@ metamorphicFillBaseName: fill- metamorphicChangeColor: false metabolisms: - Drink: - effects: - - !type:SatiateThirst - factor: 2 - - !type:AdjustReagent - reagent: Ethanol - amount: 0.07 + Digestion: + metabolites: + Ethanol: 0.07 - type: reagent id: BadTouch @@ -36,13 +32,9 @@ metamorphicFillBaseName: fill- metamorphicChangeColor: false metabolisms: - Drink: - effects: - - !type:SatiateThirst - factor: 2 - - !type:AdjustReagent - reagent: Ethanol - amount: 0.15 + Digestion: + metabolites: + Ethanol: 0.15 - type: reagent id: Boyarsky @@ -59,13 +51,9 @@ metamorphicFillBaseName: fill- metamorphicChangeColor: false metabolisms: - Drink: - effects: - - !type:SatiateThirst - factor: 2 - - !type:AdjustReagent - reagent: Ethanol - amount: 0.1 + Digestion: + metabolites: + Ethanol: 0.1 - type: reagent id: Bramble @@ -82,13 +70,9 @@ metamorphicFillBaseName: fill- metamorphicChangeColor: false metabolisms: - Drink: - effects: - - !type:SatiateThirst - factor: 2 - - !type:AdjustReagent - reagent: Ethanol - amount: 0.1 + Digestion: + metabolites: + Ethanol: 0.1 - type: reagent id: Campari @@ -99,13 +83,9 @@ flavor: alcohol color: "#da2059" metabolisms: - Drink: - effects: - - !type:SatiateThirst - factor: 2 - - !type:AdjustReagent - reagent: Ethanol - amount: 0.1 + Digestion: + metabolites: + Ethanol: 0.1 - type: reagent id: MaiTai @@ -122,13 +102,9 @@ metamorphicFillBaseName: fill- metamorphicChangeColor: false metabolisms: - Drink: - effects: - - !type:SatiateThirst - factor: 2 - - !type:AdjustReagent - reagent: Ethanol - amount: 0.1 + Digestion: + metabolites: + Ethanol: 0.1 - type: reagent id: Negroni @@ -145,13 +121,9 @@ metamorphicFillBaseName: fill- metamorphicChangeColor: false metabolisms: - Drink: - effects: - - !type:SatiateThirst - factor: 2 - - !type:AdjustReagent - reagent: Ethanol - amount: 0.12 + Digestion: + metabolites: + Ethanol: 0.12 - type: reagent id: OldFashioned @@ -168,13 +140,9 @@ metamorphicFillBaseName: fill- metamorphicChangeColor: false metabolisms: - Drink: - effects: - - !type:SatiateThirst - factor: 2 - - !type:AdjustReagent - reagent: Ethanol - amount: 0.15 + Digestion: + metabolites: + Ethanol: 0.15 - type: reagent id: Paloma @@ -191,13 +159,9 @@ metamorphicFillBaseName: fill- metamorphicChangeColor: false metabolisms: - Drink: - effects: - - !type:SatiateThirst - factor: 2 - - !type:AdjustReagent - reagent: Ethanol - amount: 0.07 + Digestion: + metabolites: + Ethanol: 0.07 - type: reagent id: Yorsh @@ -214,10 +178,6 @@ metamorphicFillBaseName: fill- metamorphicChangeColor: false metabolisms: - Drink: - effects: - - !type:SatiateThirst - factor: 2 - - !type:AdjustReagent - reagent: Ethanol - amount: 0.3 + Digestion: + metabolites: + Ethanol: 0.3 diff --git a/Resources/Prototypes/Corvax/Recipes/Cooking/meat_recipes.yml b/Resources/Prototypes/Corvax/Recipes/Cooking/meat_recipes.yml index 56a05fdf2ea..fac8b598da5 100644 --- a/Resources/Prototypes/Corvax/Recipes/Cooking/meat_recipes.yml +++ b/Resources/Prototypes/Corvax/Recipes/Cooking/meat_recipes.yml @@ -22,4 +22,4 @@ FoodPlate: 1 FoodMeat: 1 FoodApple: 1 - HeadVulpkanin: 1 + OrganVulpkaninHead: 1 diff --git a/Resources/Prototypes/Corvax/Voice/speech_emotes.yml b/Resources/Prototypes/Corvax/Voice/speech_emotes.yml index f8be1f33563..50308a8f4c6 100644 --- a/Resources/Prototypes/Corvax/Voice/speech_emotes.yml +++ b/Resources/Prototypes/Corvax/Voice/speech_emotes.yml @@ -1,54 +1,3 @@ -#- type: emote -# id: CorvaxVulpkaninHowl -# name: chat-emote-name-howl -# category: Vocal -# available: false -# icon: Interface/Actions/scream.png -# whitelist: -# components: -# - Vocal -# blacklist: -# components: -# - BorgChassis -# chatMessages: ["chat-emote-msg-howl"] -# chatTriggers: -# - howl -# - howl. -# - howl! -# - howls -# - howls. -# - howls! -# - воет -# - воет. -# - воет! -# - завывает -# - завывает. -# - завывает! - -#- type: emote -# id: CorvaxVulpkaninGrowl -# name: chat-emote-name-growl -# category: Vocal -# available: false -# icon: Interface/Actions/scream.png -# whitelist: -# components: -# - Vocal -# blacklist: -# components: -# - BorgChassis -# chatMessages: ["chat-emote-msg-growl"] -# chatTriggers: -# - growl -# - growl. -# - growl! -# - growls -# - growls. -# - growls! -# - рычит -# - рычит. -# - рычит! - - type: emote id: Purr name: chat-emote-name-purr diff --git a/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml b/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml index 7bf3c84cc17..4765d9376dc 100644 --- a/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml +++ b/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml @@ -19,7 +19,6 @@ - Moth - Reptilian #Corvax-Species-Start - - CorvaxVulpkanin - Vulpkanin - Tajaran #Corvax-Species-End @@ -82,7 +81,6 @@ - Reptilian #Corvax-Species-Start - Vulpkanin - - CorvaxVulpkanin - Tajaran #Corvax-Species-End diff --git a/Resources/Prototypes/Species/species_weights.yml b/Resources/Prototypes/Species/species_weights.yml index 10479d20452..a516795ffb6 100644 --- a/Resources/Prototypes/Species/species_weights.yml +++ b/Resources/Prototypes/Species/species_weights.yml @@ -7,7 +7,6 @@ SlimePerson: 4 Moth: 4 Dwarf: 2 - #CorvaxVulpkanin: 4 # Corvax-Vulp Diona: 2 Vox: 1 Vulpkanin: 4 diff --git a/Resources/migration.yml b/Resources/migration.yml index 393fd8bfda6..6959405d970 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -832,3 +832,29 @@ TowelColorYellow: null TowelColorMaroon: null TowelColorSilver: null TowelColorMime: null + +# 2026-01-29 Corvax mapping issue +LeftArmReptilian: OrganReptilianArmLeft +LeftHandReptilian: OrganReptilianHandLeft +LeftLegReptilian: OrganReptilianLegLeft +RightArmReptilian: OrganReptilianArmRight +RightHandReptilian: OrganReptilianHandRight +RightLegReptilian: OrganReptilianLegRight +TorsoReptilian: OrganReptilianTorso +HeadReptilian: OrganReptilianHead +TorsoArachnid: OrganArachnidTorso +LeftHandArachnid: OrganArachnidHandLeft +LeftLegArachnid: OrganArachnidLegLeft +RightLegArachnid: OrganArachnidLegRight +LeftArmArachnid: OrganArachnidArmLeft +HeadArachnid: OrganArachnidHead +LeftFootSkeleton: OrganSkeletonPersonFootLeft +RightFootSkeleton: OrganSkeletonPersonFootRight +RightLegSkeleton: OrganSkeletonPersonLegRight +RightLeftSkeleton: OrganSkeletonPersonLegLeft +OrganRatStomach: OrganAnimalStomach +HeadVulpkanin: OrganVulpkaninHead +HeadMoth: OrganMothHead +RightArmVox: OrganVoxArmRight +HeadVox: OrganVoxHead +LeftFootMoth: OrganMothFootLeft From f580feaf9fa5de78e51075ddc40aed6b6e1bab36 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Fri, 30 Jan 2026 00:04:28 +0700 Subject: [PATCH 194/603] ipc fix --- Content.Server/Body/Systems/RespiratorSystem.cs | 2 +- Resources/Prototypes/Corvax/Body/Species/ipc.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Content.Server/Body/Systems/RespiratorSystem.cs b/Content.Server/Body/Systems/RespiratorSystem.cs index 446ed753c9e..e058d632935 100644 --- a/Content.Server/Body/Systems/RespiratorSystem.cs +++ b/Content.Server/Body/Systems/RespiratorSystem.cs @@ -228,7 +228,7 @@ public bool CanMetabolizeInhaledAir(Entity ent) /// Returns true only if the gas mixture is not toxic, and it wouldn't suffocate. public bool CanMetabolizeInhaledAir(Entity ent, GasMixture gas) { - if (!Resolve(ent, ref ent.Comp)) + if (!Resolve(ent, ref ent.Comp, false))//Corvax-IPC return false; var ev = new CanMetabolizeGasEvent(gas); diff --git a/Resources/Prototypes/Corvax/Body/Species/ipc.yml b/Resources/Prototypes/Corvax/Body/Species/ipc.yml index 238399f3347..d1b0dd22e68 100644 --- a/Resources/Prototypes/Corvax/Body/Species/ipc.yml +++ b/Resources/Prototypes/Corvax/Body/Species/ipc.yml @@ -342,3 +342,4 @@ components: - type: Sprite sprite: Objects/Misc/proximity_sensor.rsi + state: icon From 801b024e65cb726348596746d873e578b91cb727 Mon Sep 17 00:00:00 2001 From: Velken <8467292+Velken@users.noreply.github.com> Date: Thu, 29 Jan 2026 15:40:06 -0300 Subject: [PATCH 195/603] [Admin] Made admin log be high if the buyer is not from expected faction for a store. (#42687) * more admin qol prs * mistakes were made at 3am * mindshield check and cleanup * address reviews * typo --- .../Store/Systems/StoreSystem.Ui.cs | 21 +++++++++++++++++-- .../Store/Components/StoreComponent.cs | 8 +++++++ .../Entities/Objects/Magic/books.yml | 1 + .../Entities/Objects/Specific/syndicate.yml | 1 + Resources/Prototypes/Store/presets.yml | 4 ++++ 5 files changed, 33 insertions(+), 2 deletions(-) diff --git a/Content.Server/Store/Systems/StoreSystem.Ui.cs b/Content.Server/Store/Systems/StoreSystem.Ui.cs index cd9059b1db2..6b67ff5d60e 100644 --- a/Content.Server/Store/Systems/StoreSystem.Ui.cs +++ b/Content.Server/Store/Systems/StoreSystem.Ui.cs @@ -8,6 +8,8 @@ using Content.Shared.FixedPoint; using Content.Shared.Hands.EntitySystems; using Content.Shared.Mind; +using Content.Shared.Mindshield.Components; +using Content.Shared.NPC.Systems; using Content.Shared.PDA.Ringer; using Content.Shared.Store; using Content.Shared.Store.Components; @@ -30,6 +32,7 @@ public sealed partial class StoreSystem [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly StackSystem _stack = default!; [Dependency] private readonly UserInterfaceSystem _ui = default!; + [Dependency] private readonly NpcFactionSystem _npcFaction = default!; private void InitializeUi() { @@ -262,9 +265,23 @@ private void OnBuyRequest(EntityUid uid, StoreComponent component, StoreBuyListi } //log dat shit. + var logImpact = LogImpact.Low; + var logExtraInfo = ""; + if (component.ExpectedFaction?.Count > 0 && !_npcFaction.IsMemberOfAny(buyer, component.ExpectedFaction)) + { + logImpact = LogImpact.High; + logExtraInfo = ", but was not from an expected faction"; + + if (HasComp(buyer)) + { + logImpact = LogImpact.Extreme; + logExtraInfo += " while also possessing a mindshield"; + } + } + _admin.Add(LogType.StorePurchase, - LogImpact.Low, - $"{ToPrettyString(buyer):player} purchased listing \"{ListingLocalisationHelpers.GetLocalisedNameOrEntityName(listing, _proto)}\" from {ToPrettyString(uid)}"); + logImpact, + $"{ToPrettyString(buyer):player} purchased listing \"{ListingLocalisationHelpers.GetLocalisedNameOrEntityName(listing, _proto)}\" from {ToPrettyString(uid)}{logExtraInfo}."); listing.PurchaseAmount++; //track how many times something has been purchased _audio.PlayEntity(component.BuySuccessSound, msg.Actor, uid); //cha-ching! diff --git a/Content.Shared/Store/Components/StoreComponent.cs b/Content.Shared/Store/Components/StoreComponent.cs index 19d13e6d052..0d5b1952a5a 100644 --- a/Content.Shared/Store/Components/StoreComponent.cs +++ b/Content.Shared/Store/Components/StoreComponent.cs @@ -1,4 +1,5 @@ using Content.Shared.FixedPoint; +using Content.Shared.NPC.Prototypes; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; @@ -36,6 +37,13 @@ public sealed partial class StoreComponent : Component [DataField] public HashSet> CurrencyWhitelist = new(); + /// + /// The expected Faction to use this store. (Optional) + /// Used to increase the severity of the admin log upon purchase if the purchaser is not a member of one of the listed factions. + /// + [DataField] + public HashSet>? ExpectedFaction = new (); + /// /// The person/mind who "owns" the store/account. Used if you want the listings to be fixed /// regardless of who activated it. I.E. role specific items for uplinks. diff --git a/Resources/Prototypes/Entities/Objects/Magic/books.yml b/Resources/Prototypes/Entities/Objects/Magic/books.yml index 55bb7e55820..6ab0412840f 100644 --- a/Resources/Prototypes/Entities/Objects/Magic/books.yml +++ b/Resources/Prototypes/Entities/Objects/Magic/books.yml @@ -70,6 +70,7 @@ ownerOnly: false # For ease of debugging. balance: WizCoin: 99999 + expectedFaction: #nulls out the expected faction - type: entity parent: BaseSpellbook diff --git a/Resources/Prototypes/Entities/Objects/Specific/syndicate.yml b/Resources/Prototypes/Entities/Objects/Specific/syndicate.yml index fcbd0ecc024..c3b48a4a46a 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/syndicate.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/syndicate.yml @@ -123,3 +123,4 @@ - type: Store balance: Telecrystal: 99999 + expectedFaction: #nulls out the expected faction diff --git a/Resources/Prototypes/Store/presets.yml b/Resources/Prototypes/Store/presets.yml index de7717877dc..37329d4096d 100644 --- a/Resources/Prototypes/Store/presets.yml +++ b/Resources/Prototypes/Store/presets.yml @@ -20,6 +20,8 @@ - Telecrystal balance: Telecrystal: 0 + expectedFaction: + - Syndicate - type: entity id: StorePresetSpellbook @@ -35,6 +37,8 @@ - SpellbookEvents #Summon Weapons, Summon Ghosts currencyWhitelist: - WizCoin + expectedFaction: + - Wizard - type: entity id: StorePresetChangeling From 750441e94d63e1978d88525e514b3225bace9d54 Mon Sep 17 00:00:00 2001 From: PJBot Date: Thu, 29 Jan 2026 18:56:30 +0000 Subject: [PATCH 196/603] Automatic changelog update --- Resources/Changelog/Admin.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index 6750a6552bd..7554402c56f 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -1620,5 +1620,13 @@ Entries: id: 197 time: '2026-01-29T06:05:02.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42691 +- author: Velken + changes: + - message: Log for buying from a store will be High instead of Low if user is not + of an expected faction for that store, or Extreme if they also have mindshield. + type: Tweak + id: 198 + time: '2026-01-29T18:55:18.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42687 Name: Admin Order: 3 From 947faf411a7e9ceb9db507e5edfb3215852ddea8 Mon Sep 17 00:00:00 2001 From: Jessica M Date: Thu, 29 Jan 2026 21:15:11 -0800 Subject: [PATCH 197/603] Remove InternalsComponent from BaseSimpleMob (#42705) remove internals from simplemob Co-authored-by: Jessica M --- Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml b/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml index d95be361a06..13bb3d91864 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml @@ -13,7 +13,6 @@ Flammable: [Touch] Extinguish: [Touch] Acidic: [Touch, Ingestion] - - type: Internals - type: MovementSpeedModifier baseWalkSpeed : 4 baseSprintSpeed : 4 From 1d96eb2e7c6ee8e4047fc4d09fdbd761f3b89312 Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 30 Jan 2026 05:31:21 +0000 Subject: [PATCH 198/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index ccc1af8a63d..4179a7a546b 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Minemoder - changes: - - message: Ion Storms no longer have a chance to roll the Drone Lawset. - type: Remove - id: 8970 - time: '2025-09-17T17:00:22.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40374 - author: IProduceWidgets changes: - message: Gender pins no longer shuffle when EMP'd @@ -3999,3 +3992,10 @@ id: 9476 time: '2026-01-29T08:11:10.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42698 +- author: jessicamaybe + changes: + - message: Mobs that don't need internals no longer have the internals indicator + type: Tweak + id: 9477 + time: '2026-01-30T05:30:13.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42705 From c54ba1c61f2e252a3fead8d19bb56b1fc8f3f3ce Mon Sep 17 00:00:00 2001 From: Errant <35878406+Errant-4@users.noreply.github.com> Date: Fri, 30 Jan 2026 20:19:38 +0100 Subject: [PATCH 199/603] Fix debug assert when using Control Entity verb on inanimate objects (#42525) fix Control Entity assert --- Content.Shared/Mind/SharedMindSystem.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Content.Shared/Mind/SharedMindSystem.cs b/Content.Shared/Mind/SharedMindSystem.cs index f2070cd4212..a21642c4ecf 100644 --- a/Content.Shared/Mind/SharedMindSystem.cs +++ b/Content.Shared/Mind/SharedMindSystem.cs @@ -19,6 +19,9 @@ using Robust.Shared.Containers; using Robust.Shared.Map; using Robust.Shared.Network; +using Robust.Shared.Physics; +using Robust.Shared.Physics.Components; +using Robust.Shared.Physics.Systems; using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -36,6 +39,7 @@ public abstract partial class SharedMindSystem : EntitySystem [Dependency] private readonly MetaDataSystem _metadata = default!; [Dependency] private readonly EntityWhitelistSystem _whitelist = default!; [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly SharedPhysicsSystem _physics = default!; [ViewVariables] protected readonly Dictionary UserMinds = new(); @@ -670,6 +674,11 @@ public void MakeSentient(EntityUid uid, bool allowMovement = true, bool allowSpe EnsureComp(uid); if (allowMovement) { + EnsureComp(uid, out var physics); + // A debug assert will trip if the entity's BodyType is still "Dynamic" when it gets InputMover + _physics.SetBodyType(uid, BodyType.KinematicController); + Dirty(uid, physics); + EnsureComp(uid); EnsureComp(uid); EnsureComp(uid); From 9393d624d7f196d8ff9f24bc31bfa0d96d0c1dda Mon Sep 17 00:00:00 2001 From: Thinbug <101073555+Thinbug0@users.noreply.github.com> Date: Fri, 30 Jan 2026 20:16:03 -0300 Subject: [PATCH 200/603] Ghost types (#37949) * Empty commit * yeah thingi * added a GetHighestDamageTypes thingi to the DamageableSystem * no idea why those files names are different only in github so just in case readding them * yeah doing that * first steps of moving the logic somewhere nicer * still plenty to do * gosh such a mess but getting progress done * small fixie push * big mess of bunch of stuff * dealing with a conflict and fixing the random numbers * testing if github will update now * dealing with the other conflict * github please update i beg you * dealing with more conflicts * hopefully this fixes it * fixing conflicts again * cleaning up stuffies * sprite fixie * general cleanup * doing the small fixies first * getting rid of the new event, gotta handle ashing next * adding spaces to comments before i forget * handling ashing * think that did it? * small fixies * more small fixies * last batch of quickie fixies before i gotta handle the bigger stuff * last bunch of fixies i do understand * small bit of progress yknow may as well yeah * renaming and moving stuff to shared * comment fixiees * saving damage in a new component instead of in MindComponent * protoid's and dict usage instead of the previously ickier methods * small fixie before biggie fixie * more fixies im slepy gosh * thinkie that should fixie it * smoothed the damage storage systeem so its less repetitive and icki and now itss cooler and i can go eepy * lots of stuffies x3 * first step of getting git to detect my file name changes * thinkie that should fixie it * fixies * just getting rid of the merge conflict, will check damageable later * small thingies first * more small stuffiees * now all of the sprites have at leeast a 0 * dirtying the lastbody comp * more fixies * small thingi first * another small fixie and a minor sprite fixie * rng fixie * moving the damage storage system to shared * smoothing out code thats likely to be replaced soon but its good to do for now * just showing progress bcus yis * general progress stuffies mhm * pushie * small cleanup * general progress :3 * in progress push for helpie * proper pushie with progress and workies * removed unnecessary usage of the storedamage component * minor fixiees * extra comments * replaced a couple strings for ProtoId's * gibbing related fixies :3 --- Content.Server/Ghost/GhostSystem.cs | 7 + .../Damage/Systems/DamageableSystem.cs | 25 ++- Content.Shared/Ghost/GhostComponent.cs | 11 + .../GhostTypes/GhostSpriteStateComponent.cs | 28 +++ .../GhostTypes/GhostSpriteStateSystem.cs | 70 ++++++ .../GhostTypes/LastBodyDamageComponent.cs | 48 ++++ .../StoreDamageTakenOnMindComponent.cs | 9 + .../StoreDamageTakenOnMindSystem.cs | 101 +++++++++ .../Damage/special_cause_of_death_types.yml | 3 + .../Entities/Mobs/Player/observer.yml | 38 ++++ Resources/Prototypes/Entities/Mobs/base.yml | 1 + .../ghost_human.rsi/ghost_Asphyxiation0.png | Bin 0 -> 1026 bytes .../Ghosts/ghost_human.rsi/ghost_Blunt0.png | Bin 0 -> 946 bytes .../Ghosts/ghost_human.rsi/ghost_Blunt1.png | Bin 0 -> 1234 bytes .../Ghosts/ghost_human.rsi/ghost_Blunt2.png | Bin 0 -> 1052 bytes .../ghost_human.rsi/ghost_Cellular0.png | Bin 0 -> 821 bytes .../Ghosts/ghost_human.rsi/ghost_Cold0.png | Bin 0 -> 1942 bytes .../ghost_human.rsi/ghost_Explosion0.png | Bin 0 -> 870 bytes .../ghost_human.rsi/ghost_Explosion1.png | Bin 0 -> 876 bytes .../ghost_human.rsi/ghost_Explosion2.png | Bin 0 -> 914 bytes .../Ghosts/ghost_human.rsi/ghost_Heat0.png | Bin 0 -> 1952 bytes .../ghost_human.rsi/ghost_Piercing0.png | Bin 0 -> 733 bytes .../ghost_human.rsi/ghost_Piercing1.png | Bin 0 -> 740 bytes .../ghost_human.rsi/ghost_Piercing2.png | Bin 0 -> 844 bytes .../Ghosts/ghost_human.rsi/ghost_Poison0.png | Bin 0 -> 972 bytes .../ghost_human.rsi/ghost_Radiation0.png | Bin 0 -> 1543 bytes .../Ghosts/ghost_human.rsi/ghost_Shock0.png | Bin 0 -> 2557 bytes .../Ghosts/ghost_human.rsi/ghost_Slash0.png | Bin 0 -> 696 bytes .../Ghosts/ghost_human.rsi/ghost_Slash1.png | Bin 0 -> 831 bytes .../Ghosts/ghost_human.rsi/ghost_Slash2.png | Bin 0 -> 725 bytes .../Mobs/Ghosts/ghost_human.rsi/meta.json | 212 +++++++++++++++--- 31 files changed, 527 insertions(+), 26 deletions(-) create mode 100644 Content.Shared/GhostTypes/GhostSpriteStateComponent.cs create mode 100644 Content.Shared/GhostTypes/GhostSpriteStateSystem.cs create mode 100644 Content.Shared/GhostTypes/LastBodyDamageComponent.cs create mode 100644 Content.Shared/GhostTypes/StoreDamageTakenOnMindComponent.cs create mode 100644 Content.Shared/GhostTypes/StoreDamageTakenOnMindSystem.cs create mode 100644 Resources/Prototypes/Damage/special_cause_of_death_types.yml create mode 100644 Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Asphyxiation0.png create mode 100644 Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Blunt0.png create mode 100644 Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Blunt1.png create mode 100644 Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Blunt2.png create mode 100644 Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Cellular0.png create mode 100644 Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Cold0.png create mode 100644 Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Explosion0.png create mode 100644 Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Explosion1.png create mode 100644 Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Explosion2.png create mode 100644 Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Heat0.png create mode 100644 Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Piercing0.png create mode 100644 Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Piercing1.png create mode 100644 Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Piercing2.png create mode 100644 Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Poison0.png create mode 100644 Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Radiation0.png create mode 100644 Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Shock0.png create mode 100644 Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Slash0.png create mode 100644 Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Slash1.png create mode 100644 Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Slash2.png diff --git a/Content.Server/Ghost/GhostSystem.cs b/Content.Server/Ghost/GhostSystem.cs index 3486e2024b3..cccee48ba5c 100644 --- a/Content.Server/Ghost/GhostSystem.cs +++ b/Content.Server/Ghost/GhostSystem.cs @@ -17,6 +17,7 @@ using Content.Shared.FixedPoint; using Content.Shared.Follower; using Content.Shared.Ghost; +using Content.Shared.GhostTypes; using Content.Shared.Mind; using Content.Shared.Mind.Components; using Content.Shared.Mobs; @@ -68,6 +69,7 @@ public sealed class GhostSystem : SharedGhostSystem [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly TagSystem _tag = default!; [Dependency] private readonly NameModifierSystem _nameMod = default!; + [Dependency] private readonly GhostSpriteStateSystem _ghostState = default!; private EntityQuery _ghostQuery; private EntityQuery _physicsQuery; @@ -481,6 +483,11 @@ private bool IsValidSpawnPosition(EntityCoordinates? spawnPosition) var ghost = SpawnAtPosition(GameTicker.ObserverPrototypeName, spawnPosition.Value); var ghostComponent = Comp(ghost); + if (TryComp(ghost, out var state)) // If more TryComps are added this should be turned into an event + { + _ghostState.SetGhostSprite((ghost, state), mind); + } + // Try setting the ghost entity name to either the character name or the player name. // If all else fails, it'll default to the default entity prototype name, "observer". // However, that should rarely happen. diff --git a/Content.Shared/Damage/Systems/DamageableSystem.cs b/Content.Shared/Damage/Systems/DamageableSystem.cs index 2b4c5ad3609..17d14679fbd 100644 --- a/Content.Shared/Damage/Systems/DamageableSystem.cs +++ b/Content.Shared/Damage/Systems/DamageableSystem.cs @@ -1,7 +1,9 @@ using System.Linq; using Content.Shared.Chemistry; using Content.Shared.Damage.Components; +using Content.Shared.Damage.Prototypes; using Content.Shared.Explosion.EntitySystems; +using Content.Shared.FixedPoint; using Content.Shared.Mobs.Systems; using Robust.Shared.Configuration; using Robust.Shared.GameStates; @@ -68,7 +70,6 @@ private void OnEntityDamageChanged( // byref struct event. RaiseLocalEvent(ent, new DamageChangedEvent(ent.Comp, damageDelta, interruptsDoAfters, origin)); } - private void DamageableGetState(Entity ent, ref ComponentGetState args) { if (_netMan.IsServer) @@ -94,4 +95,26 @@ private void DamageableGetState(Entity ent, ref ComponentGe ent.Comp.HealthBarThreshold ); } + + /// + /// Goes through an entity damage's and saves them inside a dictionary if the value is higher than 0 + /// The dictionary is structured with a string for the name of the damage type, and a FixedPoint2 for the numeric damage value + /// + public Dictionary, FixedPoint2> GetDamages(Dictionary, FixedPoint2> damagePerGroup, DamageSpecifier damage) + { + var damageTypes = new Dictionary, FixedPoint2>(); + + foreach (var (damageGroupId, _) in damagePerGroup) //go through each group + { + var group = _prototypeManager.Index(damageGroupId); //get group + foreach (var type in group.DamageTypes) //go through each type inside that group + { + if (!damage.DamageDict.TryGetValue(type, out var damageValue) || damageValue == 0) //get value and make sure it isn't 0 + continue; + + damageTypes.Add(type, damageValue); + } + } + return damageTypes; + } } diff --git a/Content.Shared/Ghost/GhostComponent.cs b/Content.Shared/Ghost/GhostComponent.cs index 84416f8abc5..3fc9c081cb8 100644 --- a/Content.Shared/Ghost/GhostComponent.cs +++ b/Content.Shared/Ghost/GhostComponent.cs @@ -1,6 +1,7 @@ using Content.Shared.Actions; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; namespace Content.Shared.Ghost; @@ -95,6 +96,16 @@ public sealed partial class GhostComponent : Component public Color Color = Color.White; } +/// +/// Ghost sprites dependent on damage by the player body +/// +/// Used to change a ghost sprite to better visually represent their cause of death +[Serializable, NetSerializable] +public enum GhostVisuals : byte +{ + Damage +} + public sealed partial class ToggleFoVActionEvent : InstantActionEvent { } public sealed partial class ToggleGhostsActionEvent : InstantActionEvent { } diff --git a/Content.Shared/GhostTypes/GhostSpriteStateComponent.cs b/Content.Shared/GhostTypes/GhostSpriteStateComponent.cs new file mode 100644 index 00000000000..7620117e5a6 --- /dev/null +++ b/Content.Shared/GhostTypes/GhostSpriteStateComponent.cs @@ -0,0 +1,28 @@ +using Content.Shared.Damage.Prototypes; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.GhostTypes; + +/// +/// Changes the entity sprite according to damage taken +/// Slash may be shown by cuts and slashes on the ghost, Heat as flames, Cold as frostbite and ice, Radiation as a green glow, etc. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class GhostSpriteStateComponent : Component +{ + /// + /// Prefix the GhostSpriteStateSystem will add to the name of the damage type it chooses. + /// It should be identical to the prefix of the entity optional damage sprites. + /// (Example) Ghosts sprites currently use a "ghost_" prefix for their optional damage states. + /// + [DataField] + public string Prefix; + + /// + /// Should link damage types names to an int, according to the amount of possible sprites for that specific type. + /// (The GhostSpriteStateSystem will randomly choose between them) + /// + [DataField] + public Dictionary, int> DamageMap = new(); +} diff --git a/Content.Shared/GhostTypes/GhostSpriteStateSystem.cs b/Content.Shared/GhostTypes/GhostSpriteStateSystem.cs new file mode 100644 index 00000000000..ef65387d5e9 --- /dev/null +++ b/Content.Shared/GhostTypes/GhostSpriteStateSystem.cs @@ -0,0 +1,70 @@ +using System.Linq; +using Content.Shared.Damage.Prototypes; +using Content.Shared.Damage.Systems; +using Content.Shared.FixedPoint; +using Content.Shared.Ghost; +using Content.Shared.Mind; +using Content.Shared.Random.Helpers; +using Robust.Shared.Prototypes; +using Robust.Shared.Timing; + +namespace Content.Shared.GhostTypes; + +public sealed class GhostSpriteStateSystem : EntitySystem +{ + [Dependency] private readonly DamageableSystem _damageable = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly IPrototypeManager _proto = default!; + + /// + /// It goes through an entity damage and assigns them a sprite according to the highest damage type/s + /// + public void SetGhostSprite(Entity ent, EntityUid mind) + { + if (!Resolve(ent, ref ent.Comp)) + return; + + if (!TryComp(ent, out var appearance) || !HasComp(mind)) + return; + + var damageTypes = new Dictionary, FixedPoint2>(); + ProtoId? specialCase = null; + + if (!TryComp(mind, out var storedDamage)) + return; + + if (storedDamage.DamagePerGroup != null && storedDamage.Damage != null) + { + damageTypes = _damageable.GetDamages(storedDamage.DamagePerGroup, storedDamage.Damage); + } + specialCase = storedDamage.SpecialCauseOfDeath; + + Dirty(mind, storedDamage); + + var damageTypesSorted = damageTypes.OrderByDescending(x => x.Value).ToDictionary(); + if (damageTypesSorted.Count == 0) + return; + + var highestType = damageTypesSorted.First().Key; // We only need 1 of the values + + // TODO: Replace with RandomPredicted once the engine PR is merged + var seed = SharedRandomExtensions.HashCodeCombine((int)_timing.CurTick.Value, GetNetEntity(ent).Id); + var rand = new System.Random(seed); + + ProtoId? spriteState = null; + + if (specialCase != null) // Possible special cases like death by an explosion + { + var prototype = _proto.Index(specialCase); + spriteState = specialCase + rand.Next(prototype.NumOfStates); + } + else if (ent.Comp.DamageMap.TryGetValue(highestType, out var spriteAmount)) + { + spriteState = highestType + rand.Next(spriteAmount); + } + + if (spriteState != null) + _appearance.SetData(ent, GhostVisuals.Damage, ent.Comp.Prefix + spriteState, appearance); + } +} diff --git a/Content.Shared/GhostTypes/LastBodyDamageComponent.cs b/Content.Shared/GhostTypes/LastBodyDamageComponent.cs new file mode 100644 index 00000000000..773a41b44d1 --- /dev/null +++ b/Content.Shared/GhostTypes/LastBodyDamageComponent.cs @@ -0,0 +1,48 @@ +using Content.Shared.Damage; +using Content.Shared.Damage.Prototypes; +using Content.Shared.FixedPoint; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.GhostTypes; + +/// +/// Added to the Mind of an entity by the StoreDamageTakenOnMindSystem, allowing storage of the damage values their body had. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class LastBodyDamageComponent : Component +{ + /// + /// Dictionary DamageGroupPrototype proto ids to how much damage was received from that damage type. + /// + [DataField, AutoNetworkedField] + public Dictionary, FixedPoint2>? DamagePerGroup; + + /// + /// Collection of possible damage types, stored by the StoreDamageTakenOnMind. + /// + [DataField, AutoNetworkedField] + public DamageSpecifier? Damage; + + /// + /// Special death cause that's saved after an event related to it is triggered + /// For example, a BeforeExplodeEvent will save "Explosion" as the special cause of death + /// + [DataField, AutoNetworkedField] + public ProtoId? SpecialCauseOfDeath = null; +} + +/// +/// Prototype for special causes of death (such as "Explosion") +/// +[Prototype] +public sealed partial class SpecialCauseOfDeathPrototype : IPrototype +{ + [ViewVariables, IdDataField] + public string ID { get; private set; } = string.Empty; + + // Specifies the amount of possible sprites for a special cause of death + // These values are set up in the special_cause_of_death_types.yml file + [DataField] + public int NumOfStates; +} diff --git a/Content.Shared/GhostTypes/StoreDamageTakenOnMindComponent.cs b/Content.Shared/GhostTypes/StoreDamageTakenOnMindComponent.cs new file mode 100644 index 00000000000..f4402cc09b7 --- /dev/null +++ b/Content.Shared/GhostTypes/StoreDamageTakenOnMindComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.GhostTypes; + +/// +/// Stores the damage an entity took before their body is destroyed inside it's mind LastBodyDamageComponent +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class StoreDamageTakenOnMindComponent : Component; diff --git a/Content.Shared/GhostTypes/StoreDamageTakenOnMindSystem.cs b/Content.Shared/GhostTypes/StoreDamageTakenOnMindSystem.cs new file mode 100644 index 00000000000..0e985b0b2d8 --- /dev/null +++ b/Content.Shared/GhostTypes/StoreDamageTakenOnMindSystem.cs @@ -0,0 +1,101 @@ +using Content.Shared.Damage.Components; +using Content.Shared.Damage.Prototypes; +using Content.Shared.Destructible; +using Content.Shared.Explosion; +using Content.Shared.FixedPoint; +using Content.Shared.Mind; +using Content.Shared.Mind.Components; +using Content.Shared.Mobs; +using Robust.Shared.Prototypes; + +namespace Content.Shared.GhostTypes; + +public sealed class StoreDamageTakenOnMindSystem : EntitySystem +{ + [Dependency] private readonly IPrototypeManager _proto = default!; + public override void Initialize() + { + SubscribeLocalEvent(SaveBodyOnGib); + SubscribeLocalEvent(SaveBodyOnThreshold); + SubscribeLocalEvent(DeathByExplosion); + } + + /// + /// Saves the damage of a player body inside their MindComponent after a DestructionEventArgs + /// + private void SaveBodyOnGib(Entity ent, ref DestructionEventArgs args) + { + SaveBody(ent.Owner); + } + + /// + /// Saves the damage of a player body inside their MindComponent after a damage threshold event + /// + private void SaveBodyOnThreshold(Entity ent, ref MobStateChangedEvent args) + { + if (args.NewMobState != MobState.Dead) + ClearSpecialCause(ent); + + SaveBody(ent.Owner); + } + + private void DeathByExplosion(Entity ent, ref BeforeExplodeEvent args) + { + SaveSpecialCauseOfDeath(ent, "Explosion"); + } + + /// + /// Gets an entity Mind and stores it's current body damages inside of it's LastBodyDamageComponent + /// + private void SaveBody(EntityUid ent) + { + if (!TryComp(ent, out var damageable) + || !TryComp(ent, out var mindContainer) + || !HasComp(mindContainer.Mind)) + return; + + EnsureComp(mindContainer.Mind.Value, out var storedDamage); + + var protoDict = new Dictionary, FixedPoint2>(); + foreach (var stringDict in damageable.DamagePerGroup) // Translates the strings into ProtoId's before saving the Dictionary + { + if (!_proto.TryIndex(stringDict.Key, out DamageGroupPrototype? proto)) + continue; + protoDict.TryAdd(proto, stringDict.Value); + } + + storedDamage.DamagePerGroup = protoDict; + storedDamage.Damage = damageable.Damage; + Dirty(mindContainer.Mind.Value, storedDamage); + } + + /// + /// Saves an specific cause of death inside of an entity LastBodyDamageComponent + /// + private void SaveSpecialCauseOfDeath(EntityUid ent, ProtoId cause) + { + if (!TryComp(ent, out var mindContainer) + || !HasComp(mindContainer.Mind)) + return; + + EnsureComp(mindContainer.Mind.Value, out var storedDamage); + + storedDamage.SpecialCauseOfDeath = cause; + Dirty(mindContainer.Mind.Value, storedDamage); + } + + /// + /// Clears the specific cause of death of an entity LastBodyDamageComponent + /// + private void ClearSpecialCause(EntityUid ent) + { + if (!TryComp(ent, out var mindContainer) + || !HasComp(mindContainer.Mind)) + return; + + EnsureComp(mindContainer.Mind.Value, out var storedDamage); + + storedDamage.SpecialCauseOfDeath = null; + Dirty(mindContainer.Mind.Value, storedDamage); + } +} diff --git a/Resources/Prototypes/Damage/special_cause_of_death_types.yml b/Resources/Prototypes/Damage/special_cause_of_death_types.yml new file mode 100644 index 00000000000..625008b6e37 --- /dev/null +++ b/Resources/Prototypes/Damage/special_cause_of_death_types.yml @@ -0,0 +1,3 @@ +- type: specialCauseOfDeath + id: Explosion + numOfStates: 3 diff --git a/Resources/Prototypes/Entities/Mobs/Player/observer.yml b/Resources/Prototypes/Entities/Mobs/Player/observer.yml index 08bdbe8ebbb..d79aa3c9d21 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/observer.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/observer.yml @@ -44,7 +44,32 @@ color: "#fff8" layers: - state: animated + map: [ "ghostVariant" ] shader: unshaded + - type: Appearance + - type: GenericVisualizer + visuals: + enum.GhostVisuals.Damage: + ghostVariant: + ghost_Blunt0: { state: ghost_Blunt0 } # this is an icki way of doing this u.u -Thinbug + ghost_Blunt1: { state: ghost_Blunt1 } + ghost_Blunt2: { state: ghost_Blunt2 } + ghost_Slash0: { state: ghost_Slash0 } + ghost_Slash1: { state: ghost_Slash1 } + ghost_Slash2: { state: ghost_Slash2 } + ghost_Piercing0: { state: ghost_Piercing0 } + ghost_Piercing1: { state: ghost_Piercing1 } + ghost_Piercing2: { state: ghost_Piercing2 } + ghost_Heat0: { state: ghost_Heat0 } + ghost_Cold0: { state: ghost_Cold0 } + ghost_Shock0: { state: ghost_Shock0 } + ghost_Radiation0: { state: ghost_Radiation0 } + ghost_Cellular0: { state: ghost_Cellular0 } + ghost_Poison0: { state: ghost_Poison0 } + ghost_Asphyxiation0: { state: ghost_Asphyxiation0 } + ghost_Explosion0: { state: ghost_Explosion0 } + ghost_Explosion1: { state: ghost_Explosion1 } + ghost_Explosion2: { state: ghost_Explosion2 } - type: ContentEye maxZoom: 1.44,1.44 - type: Eye @@ -54,6 +79,19 @@ - type: Examiner skipChecks: true - type: Ghost + - type: GhostSpriteState + damageMap: + Blunt: 3 + Slash: 3 + Piercing: 3 + Heat: 1 + Cold: 1 + Shock: 1 + Radiation: 1 + Cellular: 1 + Poison: 1 + Asphyxiation: 1 + prefix: "ghost_" - type: GhostHearing - type: ShowElectrocutionHUD - type: IntrinsicRadioReceiver diff --git a/Resources/Prototypes/Entities/Mobs/base.yml b/Resources/Prototypes/Entities/Mobs/base.yml index 376d8e35b3e..2e672af0cca 100644 --- a/Resources/Prototypes/Entities/Mobs/base.yml +++ b/Resources/Prototypes/Entities/Mobs/base.yml @@ -123,6 +123,7 @@ - ActionCritSuccumb - ActionCritFakeDeath - ActionCritLastWords + - type: StoreDamageTakenOnMind - type: Deathgasp - type: HealthExaminable examinableTypes: diff --git a/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Asphyxiation0.png b/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Asphyxiation0.png new file mode 100644 index 0000000000000000000000000000000000000000..928b19672ccdd86b7ad2dee24b4db3da6e4ba633 GIT binary patch literal 1026 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Blunt2.png b/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Blunt2.png new file mode 100644 index 0000000000000000000000000000000000000000..001f7f1382b8953c36bf68d85eb8be445861b99d GIT binary patch literal 1052 zcmV+%1mpXOP)Px&)=5M`RCt{2nm=#TKp4iKYf_49N@xQD!~}E2+N}Km-Rqf-U9ec$V5>YKv1Ip$ zV944TF(Oq$f(EHk8x`xSw#my7$GO-};`9A!tNJHJk>li^yC-+|-uYgjqT*h|%Kngu zI!PgnZELHMW&OH>cpzTeG(o5SlB#%2ApRpJnbLprQCVNgfK=oC)VpyLru3PI;jeGX zCP?=Hfgts6l|EeX$1ULKr&2jm2E^mcpK;qaJr9Wb4QgZM)rM951S0AX(T?!4GXB&0 zXLzTqFBJv_p}cPI!*ED6p}`hB*S`EG;S0ELhVi84_jGy6v`J^;*% zubNo8J_G>2L2Zd*<@Ja478-~O*K;0o4ajkSQaIa(`}a4lYU{Y#_yo|Gw77CFn5BO{ z*qrqfY5k%-AQNM+ADjUImK~1e)9%QG#cPGKOzAfejl24Yq!-HTmtG0hF9*OQ2l#gZ zpoh!Y5G#m{k5`4F2{M#l3R8%awI=|Y006gp0CdlqrOQ)5WzJb>z_8xJcsy~=A$G5) ze*#3$A140@Z>;oWLZ$?wem)fXoO7v=jUoobu@zum;5ZJ_m2kTU007Rp?>G(&ZjQ$K zx#OF2jw$_uLt>!;qj1v%DD(kfb#*m&k`c_&JpqpKg+^xX#q|OJKkl`Km}>xIY#S8% zeOyeglbc>u2_I{jEy5N(Nw#+d56K zp;1v$QBhG*QE~6kk{^&1W@%-nQ(H@ZfcUv-6Lf1!_kaRVT#Ox3n$T7`9?yttEX$gf zP6KS_324*OX~3PNR1}yq7L6w<=+@Rc2iORMx=)^TWr^Jw!b8zgXOU$xL~bMmX6nGa z_*ANwJ}Q%{gX$2l8Tux${n2^gsPRg5P%*$4dqec>y-GbK>0zz*BT0r(`6Eg#h4XMv zy1I&5429ZeZ*5Uv)Ftm8+6*w17GoUMRN1Mq7e$fwV=)mT>O@f{H^^5B%kl=4%*42@ z$ma@ED0Td789UqIBxxcg?z*n=6=JM$b4y{y*mi^3{x~;i^r8J>k&`HCCtF;|6rY^c z8_Elqr4J!LVX7{c_5zr!#i2J7LlPqD4C}2R&Im!7jPb$-+}1Pt+gh)Rii(PgyTE^i We^w!Xa4s4E0000Px%?@2^KRCt{2TRV>9Fbt&@>i|wW_t-nk0p>DpU8nVxe22Nm)GAbH8p|ut`qHHA z0D6ECz;XPjCsCv%2B4#Z1Z(YjwGD8U9oE{_TKlzqULu6!c6LzTqbS4xu%O$MQtFdx z#FaMuArep9<*>9G36aJ-8@_AbS0z9O;vys(PX<+h1sU>Uvga&*YJb2r2SBTNfSbQs zfQS)SPl9CrDgitn5B2~6fTR!-{KW!POh6)|L5jaf0K)9cDuN_`HVOpDUj?&1TS$yF zo{hgI47$W;-maJsdxCUU1oV49@tPANOp*IRBn1e~w#bM%LC%%1r1&wav(u;msPQ?U z+IwSr&KW{>g)OZu<=;`u9~A(-CoMz`cC2)~?1FNcD;_Mr6U___fyfzTfysYmND5P8V2)VSr791B@}#Fbp8j_?>?o zN6=aaJ3wm<<2YjetP50!!N=nfoEtoGs=`nWzt_machBe3HIy$5;!%)Oa}#Gb>TEWM z`MpM_o@e9V5%ME%KhD3_*z+9xDbAd|F_4zSi0F{02rhtcQqPsigt8#baZrdoX4q55KvscRbo;Iawga!11#YGaOZ(kUXlQjt#WW15Yi%q zHeIN^)u+QkJ3cl1-w}S&1}s;7Kxm7c9cY`5Tnz|GA$ z0-6*_6du?VKhcq|N}E*>Gl4bn<%Q1^*8;TVp}CRH0aa z%+Q;m@mhcj#V)`-``!iboCw8I;p~yPk75A=F0kMc;T?~Qz&oP%>jJRk7(X0q1<3y$;;0sHS}Gr~ z=Tv<{Z6@gB@-zBY^$7>u@r?eCHg$A#ble`l;&n1x+;*s)00000NkvXXu0mjfh~0Wg literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Cold0.png b/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Cold0.png new file mode 100644 index 0000000000000000000000000000000000000000..000751088d59d2516277f7db8260e7d96baa8344 GIT binary patch literal 1942 zcmV;H2Wj|;P)Px+P)S5VRCt{2n@?yX*B!?{BUu_t#+9r6=QcQWOW1=_RwwT%l&B?mFY2YImVo!( zQi=$B@!7B?Fo!^T&O&K>3Axs%DZ!xy(X#Tgf-Ji=S?$)^Z0uTgC3!{~y&m2?X=FRH z-sn&N=?g~oXx{sN-*PoNj}v2k9t)6p}L7 z(CuTKD7#Wm)dQmX?X@Stbs_9~fe-}9#NiGUrZE|2g|Hv^Q3&0O!H?<`im540hTE=WxL)Hw> zKlB_Rgs`g~)@Kb!FF?$PdiUM1PN!FCdV+I^_;Ilf` zT2h~Xs0a{pcD0IuV+$@MS`Lp5spN)my5C)2Fbm@}K@DF09pr4rOzQF8xvTPHX#NWy zgF*|*WK9acOjAH#|#2cMYl7t)NGJT^>r>y9PH^hi{Le{7gt4rO*?-XziL*R@-B zD7y^JKh!!P6PH&N;8hGNQE0|YO8!NEY?xHqusjEANeZciIl_?7B9$;%OHx>#gG##> z0VPN3s6?eM{OHTX2lp4mKm)$;r28uLm!lNk^@-9^SefgE{>mJrBXV){Gy=PI$NIt> zEeaI>Q(t8|LSe<9wQdMUa{80-yD_N`pvdt20}ZHjq{G)by?g36EqVV}qLTd6j@dN? zz%Y#5wGM@5%%sv8W%%dwE1pj~Ch4fuvEWKwVfY6cu-%4woW72(w0gg9HRNM3YxWjJ zN_agk+mC|t_zyhEw;YxH=jqbnA85eGZcm89`l7rF3oc|9<*||@=ZT>3%XO#QJ}f?V zWj{gwOq}lAlUbBH(ov}^$RE@{2p3L*m+KC%?;l#LHDT9kH9+2Hl~eAjtFc-W_UrqH z)>jMTnFzmHFuVLg9)*C8LakQo@?WkyXZku17aH*A!zKX5FR|V+Qq*d-Uf2i3tR*Sj zI+EuBJb7_A>=*|^^;7&3>(-IvQQsXjdbdNZR^uHb)#X>ZFT#Ze{It0Q!0J^=ytK5G z0}9QPvkpJsKj@yP+Kq}J|MUHWGvE6<3cfCF{(%M*Q$}v}Dh1V9aJQA1H+kr{UQ5c) zz3*PiDe~2;qwmg6^Q-<9-@^#q#aK|^xcIwJ_g@e~2z#$B^6xiA{%`+0$-mze`A-~q z-g)PbgZ~pp*g-yjH+Y6ihkvM*;CW6OhLLj(8E%PrllSJ~^Nu7R_rAQCGIFamVSnC% z_vU+7-8If%^Xu@3ek-i7-4gb8`|KlUoF<&UqCbwqTXXPMZ2E7bXP9Az8D^Mah8g~6 zFqZlNg=y6ZjFVeCIjRKQ^|Q3cW4rGDVOVW=Bm!8))06!(Iva@B^e`u2%;QCyTYdJ(sKoFq}P@%8x!*oDIWaJI@U@S-FkK$BUUMCwg zGE{xQBS+@vRjt4@>V$qF#Lk10UTr`?!{lp(6t10WRdV2|m`;Vr2ZnJoYsxoKRX+lE z>kgg}m%{X?ZGaHMej_5Q#EOp0&BqM*mO&^1VbMHsC^@~nz_W(C5he<>3{Z6fAain= zMVSZ%FixCM0(7C$<>#g5w;IEz#TB$8pzO+!Tk+s~9X89y{j~zqfJ)6*J@|Ig+zh1V zwV`c*Un{_s2%8_eY-ASuYXznOm74#4#Nm%kHh!33Gad4QuGP#F;*zQrcp=zVwE{&) z3Yr!wQOT)N^Lrzt;q~SKjBc*3(&^O-WET6^0@H%ZQ9kz#_+5y6q?Q2{;3uywasODR zpikEdObe$|^MC2U{bQ-^nPxO-8L;OQ#g7ijN3ecxu&HVV0A3v(U&_B-rvHRQ86vp7TtW5QZerpDDm zsPsx|T3^(!O3|9SewmEieET2X&W9!&Tv>t>S(#Dwpwxix0Okbu0;=!ki35fyH$om{ zugL82tt0)6u=c~F9*OL~`Ha3W+-ktv2{!*aw>a?~VJelft}mDcb@fd{YI*Znxc;;a zP&xZMFMG$1i}B>7;9Z{2t9pT@M{-_?PF*IzRul$*WeZYQ+3TS!wfUb c@ZW%c0bPw95y@w2%m4rY07*qoM6N<$f}0G=W&i*H literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Explosion0.png b/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Explosion0.png new file mode 100644 index 0000000000000000000000000000000000000000..efd2a1036d9bea628b942686c06a0e3befa5550a GIT binary patch literal 870 zcmV-s1DX7ZP)Px&AW1|)RCt{2nnA9rFcgM=UY;=!ojP_M%Z=dFx+WZC}T9>%G7Z&L)5 z_LVcBZCoI=A%bc9e{_wX&*xOU0-$1A4#A7ywe2ejATpoNsd)WVetj3vssbHOSP6az z`^sZL+xULJM_HDXF}984IMQ)KmND#BX<-jp5yz-F^SRaGd8;!D=B z4nA`3=d?xW$b$4)+b&)T&^6kQ89e8O2x9P3SsTrQC$2>_t3YxuqomEfUM27@42eYY$K!!QkkfDh8< z%3ym$ZC8S^vY`F;pZF(Lx!x{`d7igwFFEmNWm%5C77&JE+U1*-vdtLV?smHt)+y23XlW z5=F?e3`J3hA}FIQfa<#YQ1IYSrxO=J>yVUE862|&iaumnMtSg@#bNcDwaz-$#IStgg_0`v97*pvp&4a_#pQB&c&@@n3V?g?ukK~}SOI3U z*~@!b`UpU64}yG)ez8~p_n@cKX%qb6a2W4n$R>o4Mg&g#UKS+*RL|eoU^1EXYX5Ol zVc+*@p698U1$+{ugXxbUYvg&}bOoImpf>kI$&qk1vQ4dGU-V^=JL>X*aea5z4Je>V^}8&DlHw*UYD07*qoM6N<$f^OK6{Qv*} literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Explosion1.png b/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Explosion1.png new file mode 100644 index 0000000000000000000000000000000000000000..f619859e959f14dd60e9c294bd511bf276219fe5 GIT binary patch literal 876 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 P00000NkvXXu0mjf{i;cK literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Piercing1.png b/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Piercing1.png new file mode 100644 index 0000000000000000000000000000000000000000..52456d9ccbd0c21778e13b668eaa9efd4c75d382 GIT binary patch literal 740 zcmVPx%o=HSORCt{2noDxSAPj~@ryDYpL-hc@40p)Zm&pNghu$NrELhSFWT-4Z1QM=m zzM0M>amp{t5)dSSPUqB^(tivgJl=yC^Cf0cWBtzx@iBkj(g~9K>p{0D#x)<>KWr4@(WGn@@I>>a!exj2Qp`uGcH|G@6m@DCP7iP_zmVMl`v34Skja zvK%9y04Ohs8v2_ZFc*5pm^;ctm1w~Fgl>`krb&>R{j+NW2+YP@eSGt!`l}JJFzKuz z5((P+oMkYr_me0<+!$kWm>n0{`o&H!{sy`s1-Y2kYkI)KDnk1wvPizM$o%>5r zREsR>5ZPr3)Uu&A1;}cxHZ|pNOpOCvdJ>J7KwK6ZYn*V@jSzs4%r9D;s3EXb+=>R*|=>Mu+old9IIRZcC WeL%3UA{rt90000Px&21!IgRCt{2TET6@Fbt%NejFgLPLu(>jCSZZ%XEP3&^_|qDUzz zssjonb<3kq5=Dsw7#R51m}>tK5pSE3X}Xws)S3TXL4Kv*dx~Jm|E3|Irs*sE`btNn zC9L^H0#NdGT^%AW>$@O< zz>NAY1VKbwVvztTc|p)I6(RTXj6cQv*=>*`PhXzw$MLgSUJ&^ij$MBw{E|Gt9XPp= z&)))@#h`X`vrl68PyjC4(&y<&gy;A0Sv?C9{(B*RL=k`K40u>mk$5L5xkyJr${!K= zljR}e7oP>-ARDW(B?ZT$$pWhc;2i3m3g-kb9gtE1u84T^-UCTEe!aN&o{icX&|M|) z1MosP%3nGlSpn#gbDn32PNW3hdpFNB#Gqw0BZ!^I@3`mQd!YQKD9HmJQq9xpbO}M} zVP7WVSO>re7hjUe30&|?%zr3A8d15kIL*R{6JU`Iru@-9A}-t#O!(}wQEop?kHz#z zYJD`OcK0}Q{x$)1hsLs&;{z4w0jK_vWoK2g`4}zL)r* zT>@s?k;aE-)drn)6-WYFvCaA7DlBNVTwN+10d6_Rtk{-v0BR!y+UGClZ~472qEHap6BYRSc<@5mVbx^2nv5{ ziM3$5LqEG*$&r%yck8}@J^sWG>PuVxRyBI1KdSx&QMWj2;K?=mSM_UPU|?Y2FW?7J WFYj)iwxx*x0000Px&hDk(0RCt{2n!!ukP#nj<=_>lV=_+pXB22OKG7v|dY^Tu6P+@of3n7;s+;$lB zTG(IV?t@jlgx&@+1|Fp_1y7SQoRZhky6mt-lQe1aUfzo>eVeJh?-%PO%XB|)Gz%4B5oN5;Wk9`TnVlx7x%*=!YGi4GNPT7lg5n~AxJ~^WulQ@6 z7~XBCNowA-ltI+s)95o9;N>$O*SyL-d%x$W{~FIf-4SkrEd4|V9Bf^g6A$CXUD{`2O^~S{Yrw(Ql{xbwxwuQ~s~8hx z>&GsGtGhWYY@^&chml0Ma}Hx+8|Bqq?iDsu{k|Ds+qMay;q2;1AAm>eh`bs<_h2l& z2fW|WG>tn8ve3^bj78Tpt>Oe!j%rj~13c{-QSCU8rY|N>hZto*!gdYYwoOVY0O(PT zD5b&sRum1V-+t%-U|ANEK1&8P2qADx=z&tI6G9+i@YnjTPE-R*DF`7<`YZl<3X?L(gfNR&ior((h}4vxMk@{YV^hd_l1U6Q>{OKeWBaphWtKehS;R zZ3a7wxYw_jtF(g;)9&zY=wtKyFK0*fYUbIIW86D@!e52JB;QM^s-~ zYK{C;VXjH=%RD{o9#8aKh5UTGx_L~Ng+!K-cGAj_4=r!ErdIsN+E%-|ek6DB0I+#X zmiLzE;Y7i20==|bJpC~nP%l|#aj|zM{&T`3&xe)+#%KM<#%D>b4$GAGf&`qw&uv66 zL#Op@eg}w*fhhwXtd8UE;>~{d0@eH^cD(1&Wa*I|(J?Ts0{5TZG!F^~&&wjHk)Om) z_X5?Z^Kmd`z>~KCfbx%z_yz#eFa77Io?!;>nDm)he1nI^b&G4Eu_WtHSY$&=8Uq@^La3)aE(K4C-iw~5BCRrjrE#!Y zJAg3P3Poms&iZl!4~~Ygi@Px)!AV3xRCt{2oiS_NNEFBa8xF(z2!yi&N6O?Q#H|ZMT&8f9!k^%pV8p@}_X$kQ zV*DKpsp1ddfZ)<@n(KY#abWvWghSxs=8D@9V_DK_q?viz(f{5rwYP#=O$e%T*#5=h3cncX1Mk58XtKct)aA94N<6_&Fb zWKer=_0Q}EnOPBiajuS+O@8yR&=->NYpVRA+{}Mm`L{X((3S5r*;_ms)a{qlXC*W% zf0N(mojl+3>F#qx9f9)cm4*pZ}uGM1Gr{tZp)lf6}wtiQu!IJT7W;e)e z{4P%knE$x*zxD_~DV3ezV(}SY@dy4aUN;}V#ES=y-{3XoI7%mzN$))o{q)oC&;LW4 zLCkT4IgZi;q?J|39KaP8DFCOJrs$`ien0-kBLJmTW^614fD>FS0N^ve7Vmq5*LtAo z>ZRh}^r?dM(@(!&f2$(^y&kd5bIPACA9{l>W{0+Z+Kbrqe0v29f7^I-O48A$ax3~AJ_Cm(wtldNPgnnVaG07hNZ8a|XH_YEy09Ka}($e!< zj6tC9B@p_D=Pzx)?)~&f;xAa8S3G)6DfPDWlhwVS{>}F{IoFMs{$cui-4?uJ!68M9 zJ(Vly59c=~)dOGPSm}4{@7))muG$EEF!X!!k0D0-2_b|KLI@#*5JCtcgb+dqA(7Dg zdjL{Y-SClp;>Q7V?~cv|pz5xtp<6_k3Ed*P{Msh>iMN5dk0h@0N5XHy#3*r`}lJ2tU0JT5TEU#+WLLA2a|}u*#4Rh zF}{ibb025!o!t{q_a>8q{&4;=#TvWcSpkslQ%`?5|CnNp-OsxM6Eb4B2xv)+3qfsR z?&Hh7(=~vQmqP0NA+HBl`6c7`eHrj_g5B!`PbJQQ-%rkV_i+pj|%I4=X)z&Q}#9I!e9 z_>d^P#Earb;kVR$K2N^w*le#YI+0R-&Di|_Fi*biG>zdyq6XpjbsD%S@wcUQ0nimq zi>~o8JwUoJ!od-x4*Z5dWLU{UKyw0hVU$Y5*8?3tn zUm15L)_uuMd@q90-|Y9v$f~?o-a2B@U&f`sb9-FFP)ACG(0XLY^m=^wV=>c0cW+9RF*UgLQ%7KCq`O@9x6>jEI%qn!R>_K24r t7yZMW7laT(2qA8%mVC!LT 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 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Slash0.png b/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/ghost_Slash0.png new file mode 100644 index 0000000000000000000000000000000000000000..60ea51d3b364086f8192505344a7cb8fe995f2ad GIT binary patch literal 696 zcmV;p0!RIcP)Px%a!Eu%RCt{2noVv4Aq<5*RX0S+p>lv+W)8xYa;Ql0l5S=qhr$G71EKY|Yn#T8 z2bezt7=}?p2;nwb1B}uULb!zxuEPY7xFLkAM8j8QU{8MKdz+xCfn@*OTTAB@0t)0O*smO}&Lghqm-1VYOxf{5$Z!&#z4sh2oY%UN_KbtOOFq}Nn& zoXq!UujIPkP!R)OL@LMl)%e{2DeB8$i^I^eESFZjx=6nuCrs0X9x)8VFbu=^e^hUT zQk#<*HzvgoBb3~kztx*SCjJYxaoHoF;KHNnGuc7>K98e0qI!WQls?aKP&1(CGr6YO zQ{D<|nypzM06m|{wa^>^BMT&|<7-rjbw&H-sk%xmLHBYwjrh_j(EXK2yAvb^tRtsF zq@$WCm%#`xG2t&5Ai@j~{O_-!N1msrVX6^8Y7{7JYafQ1 zvze?GpM51pc4Bnyt@{h^z|&y+ljvTNovI1wMW$Aux+tUgPVf_-sB?vs98Kc-fYE$n e#~6lTOv4WdlmLuZtR?&a0000Px%`AI}URCt{2TTyPqAPjY;{Sc{#>H%^Y?y%onW(UZL_Eo8TdLIjs>p+OXkWJ%B z)f%nk8DngNU4V{`e~lsci-@>vgABu6O`^ZRkBAE*PKY>hVOsI8f2Z};jz2K@rb1}* zze&jfV1^&F`$WX)@p#zv-*asxQ2zCK8iwJsgkPip4?lSTfZOdhr@v7TObKFSIYB>p z2HV0JaVzl1RYH~p0D$GstvvC{v*XVmPx4_zT!vw|$1DIUha|GcgBIZBlZ<&<0U-w% z`Dhhuh?#ys9ufbkEs*fOT$sCdG&ow>z+#A^LDB*QnlD<3GyDlYj#K;+C%AJo)Dnm= z*$yeiAK^>Nd4xj+1Xe$)guvvB6QdA6AQS;+&2@Z0V9nOZq2@x0P91!!`t-f>aFlrQFCj2jQ5i78s zUt*P#C@>pifD7T_ocl1wK!wS3{-A$x&Or{pI1G;Ccn__ zIA5`qm5CMCwx$wVaCCHZbaZrdbo@K0^apH%HOkC1x!(%}*qys`Dl=Dei)(|4I)Qpo zFGxvGLNQbn(E4^*vnQcg0asp)Ye3^ZfKI-8pTL11$l@*ugM8JSHA#e& z(5yqm-^-QsRnPx%k4Z#9RCt{2THTGqAPlxo_d=y~rw-6%G6>6bfb7&r<QDSdcKn7OXN-ULJc^S~xAfi!th7|wzBmb}A-z&&S^S=ho5WNW_ zT^LF5CyOu~{?g+xAYw96(TD_zlVEk!DJh5mBKn`B+EzFWsdBJDL|u3X1_lNO1_lNs zA<`f48mv)fCdn<*AK-tlt%RQ3yXbOHUkS0>;dNc-^ZDFl_1ATs6W8+W(;=rKl*Ken zwv`1)_9TcY;8P*hAMk{FpMW&Cqy;o-lGr%J3ZHBRDAoNXP;?hr(jk(YeA8AL35YaE zv_zs1TU;n*xj@jT7wg&Ukp$VAJ>l!aVAbt#>VE!{P^AFv=BOBA;}cOA7kKkM?|NDV zM6^5}k8tm)3d>)=2e1?%orNi&-)Rs4W@C(chPZL`ONB!#K*Zbj>YV|$$wK`GgfIbW zkqGVdDl|C@K+jhBh&)yO3EXb+_W?Sa{(qHgU|?Wi;1lo%62o0bu5?&a00000NkvXX Hu0mjfjcQ0H literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/meta.json b/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/meta.json index a465e90b6cf..bead5cea3d5 100644 --- a/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/meta.json +++ b/Resources/Textures/Mobs/Ghosts/ghost_human.rsi/meta.json @@ -1,26 +1,188 @@ { - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "https://github.com/tgstation/tgstation/blob/f80e7ba62d27c77cfeac709dd71033744d0015c4/icons/mob/mob.dmi, inhand sprites by TiniestShark (github)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "animated", - "directions": 4 - }, - { - "name": "icon" - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] -} + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/tgstation/tgstation/blob/f80e7ba62d27c77cfeac709dd71033744d0015c4/icons/mob/mob.dmi, inhand sprites by TiniestShark (github), damage sprites by Thinbug (github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "animated", + "directions": 4 + }, + { + "name": "icon" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "ghost_Blunt0", + "directions": 4 + }, + { + "name": "ghost_Blunt1", + "directions": 4 + }, + { + "name": "ghost_Blunt2", + "directions": 4 + }, + { + "name": "ghost_Slash0", + "directions": 4 + }, + { + "name": "ghost_Slash1", + "directions": 4 + }, + { + "name": "ghost_Slash2", + "directions": 4 + }, + { + "name": "ghost_Piercing0", + "directions": 4 + }, + { + "name": "ghost_Piercing1", + "directions": 4 + }, + { + "name": "ghost_Piercing2", + "directions": 4 + }, + { + "name": "ghost_Heat0", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "ghost_Cold0", + "directions": 4 + }, + { + "name": "ghost_Shock0", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "ghost_Radiation0", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "ghost_Cellular0", + "directions": 4 + }, + { + "name": "ghost_Poison0", + "directions": 4 + }, + { + "name": "ghost_Asphyxiation0", + "directions": 4 + }, + { + "name": "ghost_Explosion0", + "directions": 4 + }, + { + "name": "ghost_Explosion1", + "directions": 4 + }, + { + "name": "ghost_Explosion2", + "directions": 4 + } + ] + } From cb587ce73401123cb6c0c03ee44b105de80f8cee Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 30 Jan 2026 23:32:19 +0000 Subject: [PATCH 201/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 4179a7a546b..a349c1fd9ea 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: IProduceWidgets - changes: - - message: Gender pins no longer shuffle when EMP'd - type: Fix - id: 8971 - time: '2025-09-17T21:49:50.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40425 - author: Errant, beck-thompson, FairlySadPanda changes: - message: Players can now be banned from enabling/taking antag roles. @@ -3999,3 +3992,10 @@ id: 9477 time: '2026-01-30T05:30:13.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42705 +- author: Thinbug0 + changes: + - message: Ghosts appearances will now change depending on their cause of death + type: Add + id: 9478 + time: '2026-01-30T23:31:08.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/37949 From 6ef3bbf141928bb785a593562903b0bef87bea79 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> Date: Sat, 31 Jan 2026 10:43:09 -0800 Subject: [PATCH 202/603] hhhng --- Resources/Prototypes/FeedbackPopup/feedbackpopups.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml b/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml index 764eb2f0105..eac17ac5e0f 100644 --- a/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml +++ b/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml @@ -20,7 +20,7 @@ - type: feedbackPopup id: UplinkFeedback - popupOrigin: wizden_master + popupOrigin: wizden title: "[bold]Feedback on Traitor Uplink Changes[/bold]" description: >- If you have any feedback on the changes to the Traitor Uplink, feel free to leave them in this thread on the forums! From 769075e92919a7aedd2501204e9dbac9ca5a9e88 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Sat, 31 Jan 2026 11:13:58 -0800 Subject: [PATCH 203/603] [STAGING] Fix Diona not transferring their minds to their nymphs when gibbing. (#42699) 2 line fix Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- Content.Server/Species/Systems/NymphSystem.cs | 2 +- Resources/Prototypes/Body/Species/diona.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Content.Server/Species/Systems/NymphSystem.cs b/Content.Server/Species/Systems/NymphSystem.cs index 0d56e3da256..6d2d56465eb 100644 --- a/Content.Server/Species/Systems/NymphSystem.cs +++ b/Content.Server/Species/Systems/NymphSystem.cs @@ -36,7 +36,7 @@ private void OnRemovedFromPart(EntityUid uid, NymphComponent comp, ref OrganGotR _zombie.ZombifyEntity(nymph); // Move the mind if there is one and it's supposed to be transferred - if (comp.TransferMind == true && _mindSystem.TryGetMind(args.Target, out var mindId, out var mind)) + if (comp.TransferMind && _mindSystem.TryGetMind(uid, out var mindId, out var mind)) _mindSystem.TransferTo(mindId, nymph, mind: mind); // Delete the old organ diff --git a/Resources/Prototypes/Body/Species/diona.yml b/Resources/Prototypes/Body/Species/diona.yml index e2712b8f7f6..1d121a0efe0 100644 --- a/Resources/Prototypes/Body/Species/diona.yml +++ b/Resources/Prototypes/Body/Species/diona.yml @@ -286,6 +286,7 @@ id: OrganDionaBrainNymphing components: - type: Nymph + transferMind: true entityPrototype: OrganDionaNymphBrain - type: entity From 8474396c8042b51eb84f969aa6428d04b8bca9b3 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Sat, 31 Jan 2026 11:14:14 -0800 Subject: [PATCH 204/603] [STAGING] Fix Hardsuit Helmets dropping on being gibbed. (#42703) * bullshit * sdasdsas --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- Content.Shared/Inventory/InventorySystem.Equip.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Content.Shared/Inventory/InventorySystem.Equip.cs b/Content.Shared/Inventory/InventorySystem.Equip.cs index 1541f90e6a5..ca069b71cad 100644 --- a/Content.Shared/Inventory/InventorySystem.Equip.cs +++ b/Content.Shared/Inventory/InventorySystem.Equip.cs @@ -570,7 +570,10 @@ private void OnBeingGibbed(Entity ent, ref BeingGibbedEvent { foreach (var item in GetHandOrInventoryEntities((ent, null, ent))) { - args.Giblets.Add(item); + // Give me liberty, give me death + // TODO: Give me an API that can tell the difference between a virtual item and an electropak being removed. + if (!HasComp(item)) + args.Giblets.Add(item); } } } From 13b1db5eda68903d58c39bda9605663aae094c7b Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Sat, 31 Jan 2026 11:14:26 -0800 Subject: [PATCH 205/603] [STAGING] Fix having to /ghost as spacemobs when you die. (#42709) fixe Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml | 2 -- Resources/Prototypes/Entities/Mobs/base.yml | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml b/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml index d95be361a06..597674af59e 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/simplemob.yml @@ -106,5 +106,3 @@ - type: MobPrice price: 150 - type: FloatingVisuals - - type: GhostOnMove - mustBeDead: true diff --git a/Resources/Prototypes/Entities/Mobs/base.yml b/Resources/Prototypes/Entities/Mobs/base.yml index 376d8e35b3e..c76c364b7f0 100644 --- a/Resources/Prototypes/Entities/Mobs/base.yml +++ b/Resources/Prototypes/Entities/Mobs/base.yml @@ -145,6 +145,8 @@ - type: LightningTarget priority: 2 lightningExplode: false + - type: GhostOnMove + mustBeDead: true # Used for mobs that can enter combat mode and can attack. - type: entity From 8f89358b4c404d7006e80d42f1263cfe21c7a8e1 Mon Sep 17 00:00:00 2001 From: Zekins3366 Date: Sat, 31 Jan 2026 21:11:00 +0300 Subject: [PATCH 206/603] spf --- .../Humanoid/LayerMarkingItem.xaml.cs | 10 +++++ Content.Client/Humanoid/MarkingPicker.xaml.cs | 20 ---------- .../Humanoid/OrganMarkingPicker.xaml.cs | 13 +++++++ .../Lobby/ClientPreferencesManager.cs | 1 - .../GameTicking/GameTicker.Spawning.cs | 5 ++- Content.Server/GameTicking/GameTicker.cs | 4 ++ .../Humanoid/HumanoidCharacterAppearance.cs | 38 ++++++++++--------- .../Preferences/HumanoidCharacterProfile.cs | 8 +++- 8 files changed, 57 insertions(+), 42 deletions(-) diff --git a/Content.Client/Humanoid/LayerMarkingItem.xaml.cs b/Content.Client/Humanoid/LayerMarkingItem.xaml.cs index 0e16efcd0d2..bb38558b7d2 100644 --- a/Content.Client/Humanoid/LayerMarkingItem.xaml.cs +++ b/Content.Client/Humanoid/LayerMarkingItem.xaml.cs @@ -11,6 +11,7 @@ using Robust.Shared.Input; using Robust.Shared.Prototypes; using Robust.Shared.Utility; +using Content.Corvax.Interfaces.Shared; // Corvax-Sponsors namespace Content.Client.Humanoid; @@ -18,6 +19,7 @@ namespace Content.Client.Humanoid; public sealed partial class LayerMarkingItem : BoxContainer, ISearchableControl { [Dependency] private readonly IEntityManager _entity = default!; + private ISharedSponsorsManager? _sponsorsManager; // Corvax-Sponsors private readonly SpriteSystem _sprite; @@ -37,6 +39,7 @@ public LayerMarkingItem(MarkingsViewModel model, ProtoId { RobustXamlLoader.Load(this); IoCManager.InjectDependencies(this); + IoCManager.Instance!.TryResolveType(out _sponsorsManager); // Corvax-Sponsors _sprite = _entity.System(); @@ -89,6 +92,13 @@ private void UpdateData() { MarkingTexture.Textures = _markingPrototype.Sprites.Select(layer => _sprite.Frame0(layer)).ToList(); SelectButton.Text = Loc.GetString($"marking-{_markingPrototype.ID}"); + + // Corvax-Sponsors-Start + if (_markingPrototype.SponsorOnly && _sponsorsManager != null && _interactive) + { + SelectButton.Disabled = !_sponsorsManager.GetClientPrototypes().Contains(_markingPrototype.ID); + } + // Corvax-Sponsors-End } private void UpdateSelection() diff --git a/Content.Client/Humanoid/MarkingPicker.xaml.cs b/Content.Client/Humanoid/MarkingPicker.xaml.cs index 6888f3e0515..8f73d42beac 100644 --- a/Content.Client/Humanoid/MarkingPicker.xaml.cs +++ b/Content.Client/Humanoid/MarkingPicker.xaml.cs @@ -1,33 +1,19 @@ using System.Linq; -using Content.Corvax.Interfaces.Shared; -using Content.Shared.Humanoid; -using Content.Shared.Humanoid.Markings; -using Content.Shared.Humanoid.Prototypes; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; using Robust.Client.UserInterface.XAML; -using Robust.Client.Utility; -using Robust.Shared.Prototypes; -using Robust.Shared.Utility; -using static Robust.Client.UserInterface.Controls.BoxContainer; -using static Content.Client.Corvax.SponsorOnlyHelpers; // Corvax-Sponsors namespace Content.Client.Humanoid; [GenerateTypedNameReferences] public sealed partial class MarkingPicker : Control { - [Dependency] private readonly MarkingManager _markingManager = default!; - [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly IEntityManager _entityManager = default!; - private ISharedSponsorsManager? _sponsorsManager; // Corvax-Sponsors private MarkingsViewModel? _markingsModel; public MarkingPicker() { RobustXamlLoader.Load(this); IoCManager.InjectDependencies(this); - IoCManager.Instance!.TryResolveType(out _sponsorsManager); // Corvax-Sponsors UpdateMarkings(); } @@ -54,12 +40,6 @@ protected override void ExitedTree() _markingsModel?.OrganDataChanged -= UpdateMarkings; _markingsModel?.EnforcementsChanged -= UpdateMarkings; - // Corvax-Sponsors-Start - if (marking.SponsorOnly) - item.Text += GetSponsorOnlySuffix(); - if (marking.SponsorOnly && _sponsorsManager != null) - item.Disabled = !_sponsorsManager.GetClientPrototypes().Contains(marking.ID); - // Corvax-Sponsors-End } private void UpdateMarkings() diff --git a/Content.Client/Humanoid/OrganMarkingPicker.xaml.cs b/Content.Client/Humanoid/OrganMarkingPicker.xaml.cs index 8bcdf41dfe5..82e4c621ccc 100644 --- a/Content.Client/Humanoid/OrganMarkingPicker.xaml.cs +++ b/Content.Client/Humanoid/OrganMarkingPicker.xaml.cs @@ -1,4 +1,5 @@ using System.Linq; +using Content.Corvax.Interfaces.Shared; // Corvax-Sponsors using Content.Shared.Body; using Content.Shared.Humanoid; using Content.Shared.Humanoid.Markings; @@ -15,6 +16,7 @@ public sealed partial class OrganMarkingPicker : Control { [Dependency] private readonly MarkingManager _marking = default!; [Dependency] private readonly IEntityManager _entity = default!; + private ISharedSponsorsManager? _sponsorsManager; // Corvax-Sponsors private readonly SpriteSystem _sprite; @@ -27,6 +29,7 @@ public OrganMarkingPicker(MarkingsViewModel markingsModel, ProtoId !m.Value.SponsorOnly || sponsorPrototypes.Contains(m.Key)) + .ToDictionary(m => m.Key, m => m.Value); + } + // Corvax-Sponsors-End + if (allMarkings.Count == 0) continue; diff --git a/Content.Client/Lobby/ClientPreferencesManager.cs b/Content.Client/Lobby/ClientPreferencesManager.cs index 297fac8a6c1..bd3df00f7e4 100644 --- a/Content.Client/Lobby/ClientPreferencesManager.cs +++ b/Content.Client/Lobby/ClientPreferencesManager.cs @@ -69,7 +69,6 @@ public void UpdateCharacter(HumanoidCharacterProfile profile, int slot) var sponsorPrototypes = _sponsorsManager?.GetClientPrototypes().ToArray() ?? []; profile.EnsureValid(_playerManager.LocalSession!, collection, sponsorPrototypes); // Corvax-Sponsors-End - profile.EnsureValid(_playerManager.LocalSession!, collection); var characters = new Dictionary(Preferences.Characters) {[slot] = profile}; Preferences = new PlayerPreferences(characters, Preferences.SelectedCharacterIndex, Preferences.AdminOOCColor, Preferences.ConstructionFavorites); var msg = new MsgUpdateCharacter diff --git a/Content.Server/GameTicking/GameTicker.Spawning.cs b/Content.Server/GameTicking/GameTicker.Spawning.cs index 8bd59d8046e..16699acfd53 100644 --- a/Content.Server/GameTicking/GameTicker.Spawning.cs +++ b/Content.Server/GameTicking/GameTicker.Spawning.cs @@ -211,7 +211,10 @@ private void SpawnPlayer(ICommonSession player, } character = HumanoidCharacterProfile.RandomWithSpecies(speciesId); - character.Appearance = HumanoidCharacterAppearance.EnsureValid(character.Appearance, character.Species, character.Sex); + // Corvax-Sponsors-Start + var sponsorPrototypes = _sponsors != null && _sponsors.TryGetServerPrototypes(player.UserId, out var prototypes) ? prototypes.ToArray() : []; + character.Appearance = HumanoidCharacterAppearance.EnsureValid(character.Appearance, character.Species, character.Sex, sponsorPrototypes); + // Corvax-Sponsors-End } // We raise this event to allow other systems to handle spawning this player themselves. (e.g. late-join wizard, etc) diff --git a/Content.Server/GameTicking/GameTicker.cs b/Content.Server/GameTicking/GameTicker.cs index 55bf51db028..42d4d5750b5 100644 --- a/Content.Server/GameTicking/GameTicker.cs +++ b/Content.Server/GameTicking/GameTicker.cs @@ -1,3 +1,4 @@ +using Content.Corvax.Interfaces.Shared; // Corvax-Sponsors using Content.Server.Administration.Logs; using Content.Server.Administration.Managers; using Content.Server.Chat.Managers; @@ -65,6 +66,7 @@ public sealed partial class GameTicker : SharedGameTicker [Dependency] private readonly MetaDataSystem _metaData = default!; [Dependency] private readonly SharedRoleSystem _roles = default!; [Dependency] private readonly ServerDbEntryManager _dbEntryManager = default!; + private ISharedSponsorsManager? _sponsors; // Corvax-Sponsors [ViewVariables] private bool _initialized; [ViewVariables] private bool _postInitialized; @@ -79,6 +81,8 @@ public override void Initialize() { base.Initialize(); + IoCManager.Instance!.TryResolveType(out _sponsors); // Corvax-Sponsors + DebugTools.Assert(!_initialized); DebugTools.Assert(!_postInitialized); diff --git a/Content.Shared/Humanoid/HumanoidCharacterAppearance.cs b/Content.Shared/Humanoid/HumanoidCharacterAppearance.cs index 5e82b35ebcf..45016dce69d 100644 --- a/Content.Shared/Humanoid/HumanoidCharacterAppearance.cs +++ b/Content.Shared/Humanoid/HumanoidCharacterAppearance.cs @@ -71,7 +71,7 @@ public static HumanoidCharacterAppearance DefaultWithSpecies(ProtoId _realisticEyeColors = new List @@ -111,28 +111,13 @@ public static Color ClampColor(Color color) return new(color.RByte, color.GByte, color.BByte); } - public static HumanoidCharacterAppearance EnsureValid(HumanoidCharacterAppearance appearance, ProtoId species, Sex sex) + public static HumanoidCharacterAppearance EnsureValid(HumanoidCharacterAppearance appearance, ProtoId species, Sex sex, string[] sponsorPrototypes) // Corvax-Sponsors { var eyeColor = ClampColor(appearance.EyeColor); var proto = IoCManager.Resolve(); var markingManager = IoCManager.Resolve(); - // Corvax-Sponsors-Start - if (proto.TryIndex(hairStyleId, out MarkingPrototype? hairProto) && - hairProto.SponsorOnly && - !sponsorPrototypes.Contains(hairStyleId)) - { - hairStyleId = HairStyles.DefaultHairStyle; - } - - if (proto.TryIndex(facialHairStyleId, out MarkingPrototype? facialHairProto) && - facialHairProto.SponsorOnly && - !sponsorPrototypes.Contains(facialHairStyleId)) - { - facialHairStyleId = HairStyles.DefaultFacialHairStyle; - } - // Corvax-Sponsors-End var skinColor = appearance.SkinColor; var validatedMarkings = appearance.Markings.ShallowClone(); @@ -142,7 +127,24 @@ public static HumanoidCharacterAppearance EnsureValid(HumanoidCharacterAppearanc var organs = markingManager.GetOrgans(species); skinColor = strategy.EnsureVerified(skinColor); - markingSet.FilterSponsor(sponsorPrototypes, markingManager); // Corvax-Sponsors + // Corvax-Sponsors-Start + foreach (var (organ, layerMarkings) in validatedMarkings) + { + foreach (var (_, markings) in layerMarkings) + { + for (int i = markings.Count - 1; i >= 0; i--) + { + var marking = markings[i]; + if (proto.TryIndex(marking.MarkingId, out MarkingPrototype? markingProto) && + markingProto.SponsorOnly && !sponsorPrototypes.Contains(marking.MarkingId)) + { + markings.RemoveAt(i); + } + } + } + } + // Corvax-Sponsors-End + foreach (var (organ, markings) in appearance.Markings) { if (!organs.ContainsKey(organ)) diff --git a/Content.Shared/Preferences/HumanoidCharacterProfile.cs b/Content.Shared/Preferences/HumanoidCharacterProfile.cs index bee18585065..b4ea4da5652 100644 --- a/Content.Shared/Preferences/HumanoidCharacterProfile.cs +++ b/Content.Shared/Preferences/HumanoidCharacterProfile.cs @@ -21,6 +21,7 @@ using Robust.Shared.Utility; using Robust.Shared; using YamlDotNet.RepresentationModel; +using Content.Corvax.Interfaces.Shared; // Corvax-Sponsors namespace Content.Shared.Preferences { @@ -512,7 +513,7 @@ public void EnsureValid(ICommonSession session, IDependencyCollection collection // Corvax-Sponsors-Start: Reset to human if player not sponsor if (speciesPrototype.SponsorOnly && !sponsorPrototypes.Contains(Species.Id)) { - Species = SharedHumanoidAppearanceSystem.DefaultSpecies; + Species = HumanoidCharacterProfile.DefaultSpecies; speciesPrototype = prototypeManager.Index(Species); } // Corvax-Sponsors-End @@ -858,7 +859,10 @@ public static HumanoidCharacterProfile FromStream(Stream stream, ICommonSession } var collection = IoCManager.Instance; - profile.EnsureValid(session, collection!); + // Corvax-Sponsors-Start + var sponsorPrototypes = IoCManager.Resolve().TryGetServerPrototypes(session.UserId, out var prototypes) ? prototypes.ToArray() : []; + profile.EnsureValid(session, collection!, sponsorPrototypes); + // Corvax-Sponsors-End return profile; } } From 93e276d6e7ea1c6d6146068d76494106a0d6b46d Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Sat, 31 Jan 2026 23:23:18 +0100 Subject: [PATCH 207/603] Remove writing apps from the Mime PDA (#42706) --- Resources/Prototypes/Entities/Objects/Devices/pda.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Resources/Prototypes/Entities/Objects/Devices/pda.yml b/Resources/Prototypes/Entities/Objects/Devices/pda.yml index 60016de4c3b..3811fa9e8e0 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/pda.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/pda.yml @@ -415,6 +415,9 @@ whitelist: components: - Cartridge + preinstalled: + - CrewManifestCartridge + - NewsReaderCartridge - type: Appearance appearanceDataInit: enum.PdaVisuals.PdaType: From 1ac141dac2229e6ff91b812ed8bcfda95ff8180a Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 31 Jan 2026 22:39:09 +0000 Subject: [PATCH 208/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index a349c1fd9ea..16045d121a0 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Errant, beck-thompson, FairlySadPanda - changes: - - message: Players can now be banned from enabling/taking antag roles. - type: Add - id: 8972 - time: '2025-09-17T21:59:07.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/35966 - author: SurrealShibe changes: - message: The Satanic Bible's pentagram has been turned right-side-up. @@ -3999,3 +3992,11 @@ id: 9478 time: '2026-01-30T23:31:08.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/37949 +- author: SlamBamActionman + changes: + - message: Mime PDAs no longer have the NanoTask and Notekeeper applications installed + by default. + type: Remove + id: 9479 + time: '2026-01-31T22:38:01.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42706 From e533921cb2a10f255f82127e7a847a66c9dc3334 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Sat, 31 Jan 2026 16:41:32 -0800 Subject: [PATCH 209/603] Entity Table Probabilities API (#41920) * push * fix * push * abstract and more accurate * new abstract method I guess * that table does not explode * webedit major * Update Content.Shared/EntityTable/ValueSelector/BinomialNumberSelector.cs Co-authored-by: SnappingOpossum * big ass merge conflicts * sadas * review --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> Co-authored-by: Tayrtahn Co-authored-by: SnappingOpossum --- .../BasicStationEventSchedulerSystem.cs | 48 ++++++++--------- .../StationEvents/EventManagerSystem.cs | 52 +++++++++++++++++-- .../EntitySelectors/AllSelector.cs | 23 ++++++++ .../EntitySelectors/EntSelector.cs | 10 ++++ .../EntitySelectors/EntityTableSelector.cs | 36 ++++++++++--- .../EntitySelectors/GroupSelector.cs | 29 +++++++++++ .../EntitySelectors/NestedSelector.cs | 10 ++++ .../EntitySelectors/NoneSelector.cs | 10 ++++ .../EntityTable/EntityTableSystem.cs | 39 ++++++++++++-- .../ValueSelector/BinomialNumberSelector.cs | 16 ++++++ .../ValueSelector/ConstantNumberSelector.cs | 11 ++++ .../ValueSelector/NumberSelector.cs | 12 +++++ .../ValueSelector/RangeNumberSelector.cs | 10 ++++ 13 files changed, 263 insertions(+), 43 deletions(-) diff --git a/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs b/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs index 2e1f28509bb..676bfbbcc49 100644 --- a/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs +++ b/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs @@ -151,7 +151,7 @@ public sealed class StationEventCommand : ToolshedCommand } [CommandImplementation("lsprob")] - public IEnumerable<(string, float)> LsProb([CommandArgument] EntProtoId eventSchedulerProto) + public IEnumerable<(string, double)> LsProb([CommandArgument] EntProtoId eventSchedulerProto) { _compFac ??= IoCManager.Resolve(); _stationEvent ??= GetSys(); @@ -162,19 +162,18 @@ public sealed class StationEventCommand : ToolshedCommand if (!eventScheduler.TryGetComponent(out var basicScheduler, _compFac)) yield break; - if (!_stationEvent.TryListLimitedEvents(basicScheduler.ScheduledGameRules, out var events)) - yield break; + var sortedEvents + = _stationEvent.ListLimitedEvents(basicScheduler.ScheduledGameRules) + .OrderBy(x => -x.Item2); - var totalWeight = events.Sum(x => x.Value.Weight); // Well this shit definitely isnt correct now, and I see no way to make it correct. - // Its probably *fine* but it wont be accurate if the EntityTableSelector does any subsetting. - foreach (var (proto, comp) in events) // The only solution I see is to do a simulation, and we already have that, so...! + foreach (var eventProb in sortedEvents) { - yield return (proto.ID, comp.Weight * (float)basicScheduler.ScheduledGameRules.Prob / totalWeight); + yield return eventProb; } } [CommandImplementation("lsprobtheoretical")] - public IEnumerable<(string, float)> LsProbTime([CommandArgument] EntProtoId eventSchedulerProto, [CommandArgument] int playerCount, [CommandArgument] float time) + public IEnumerable<(EntProtoId, double)> LsProbTime([CommandArgument] EntProtoId eventSchedulerProto, [CommandArgument] int playerCount, [CommandArgument] float time) { _compFac ??= IoCManager.Resolve(); _stationEvent ??= GetSys(); @@ -187,24 +186,21 @@ public sealed class StationEventCommand : ToolshedCommand var timemins = time * 60; var theoryTime = TimeSpan.Zero + TimeSpan.FromSeconds(timemins); - if (!_stationEvent.TryListLimitedEvents(basicScheduler.ScheduledGameRules, - out var untimedEvents, - currentTime: theoryTime, - playerCount: playerCount)) - yield break; - var events = untimedEvents.Where(pair => pair.Value.EarliestStart <= timemins).ToList(); + var sortedEvents + = _stationEvent.ListLimitedEvents(basicScheduler.ScheduledGameRules, + currentTime: theoryTime, + playerCount: playerCount) + .OrderBy(x => -x.Item2); - var totalWeight = events.Sum(x => x.Value.Weight); // same subsetting issue as lsprob. - - foreach (var (proto, comp) in events) + foreach (var eventProb in sortedEvents) { - yield return (proto.ID, comp.Weight * (float)basicScheduler.ScheduledGameRules.Prob / totalWeight); + yield return eventProb; } } [CommandImplementation("prob")] - public float Prob([CommandArgument] EntProtoId eventSchedulerProto, [CommandArgument] string eventId) + public double Prob([CommandArgument] EntProtoId eventSchedulerProto, [CommandArgument] string eventId) { _compFac ??= IoCManager.Resolve(); _stationEvent ??= GetSys(); @@ -215,17 +211,15 @@ public float Prob([CommandArgument] EntProtoId eventSchedulerProto, [CommandArgu if (!eventScheduler.TryGetComponent(out var basicScheduler, _compFac)) return 0f; - if (!_stationEvent.TryListLimitedEvents(basicScheduler.ScheduledGameRules, out var events)) - return 0f; - - var totalWeight = events.Sum(x => x.Value.Weight); // same subsetting issue as lsprob. - var weight = 0f; - if (events.TryFirstOrNull(p => p.Key.ID == eventId, out var pair)) + foreach (var (proto, prob) in _stationEvent.ListLimitedEvents(basicScheduler.ScheduledGameRules)) { - weight = pair.Value.Value.Weight * (float)basicScheduler.ScheduledGameRules.Prob; + if (eventSchedulerProto != proto) + continue; + + return prob; } - return weight / totalWeight; + return 0f; } } } diff --git a/Content.Server/StationEvents/EventManagerSystem.cs b/Content.Server/StationEvents/EventManagerSystem.cs index 917b1a35e13..f0324eeb9d3 100644 --- a/Content.Server/StationEvents/EventManagerSystem.cs +++ b/Content.Server/StationEvents/EventManagerSystem.cs @@ -71,16 +71,17 @@ public void RunRandomEvent(EntityTableSelector limitedEventsTable) GameTicker.AddGameRule(randomLimitedEvent); } - /// - public bool TryListLimitedEvents( + /// + /// Builds a list of all possible events and their probabilities. + /// + public IEnumerable<(EntProtoId, double)> ListLimitedEvents( EntityTableSelector limitedEventsTable, - out Dictionary limitedEvents, TimeSpan? currentTime = null, int? playerCount = null) { var selectedEvents = _entityTable.ListSpawns(limitedEventsTable); - return TryBuildLimitedEvents(selectedEvents, out limitedEvents, currentTime, playerCount); + return ListLimitedEvents(selectedEvents, currentTime, playerCount); } /// @@ -95,6 +96,49 @@ public bool TryBuildLimitedEvents( return TryBuildLimitedEvents(selectedEvents, out limitedEvents, currentTime, playerCount); } + public IEnumerable<(EntProtoId, double)> ListLimitedEvents( + IEnumerable<(EntProtoId, double)> selectedEvents, + TimeSpan? currentTime = null, + int? playerCount = null) + { + var limitedEvents = new List<(EntProtoId, double)>(); + + playerCount ??= _playerManager.PlayerCount; + + // playerCount does a lock so we'll just keep the variable here + currentTime ??= GameTicker.RoundDuration(); + + var totalWeight = 0f; + + foreach (var (eventId, prob) in selectedEvents) + { + if (!_prototype.Resolve(eventId, out var eventproto)) + continue; + + if (eventproto.Abstract) + continue; + + if (!eventproto.TryGetComponent(out var stationEvent, EntityManager.ComponentFactory)) + continue; + + if (!CanRun(eventproto, stationEvent, playerCount.Value, currentTime.Value)) + continue; + + limitedEvents.Add((eventproto, prob * stationEvent.Weight)); + totalWeight += stationEvent.Weight; + } + + if (!limitedEvents.Any() || totalWeight <= 0) + yield break; + + for (var i = 0; i < limitedEvents.Count; i++) + { + var eventWeight = limitedEvents[i]; + eventWeight.Item2 /= totalWeight; + yield return eventWeight; + } + } + /// /// Builds a dictionary of valid event prototypes from a list of . /// Dictionary output consists of the valid prototype as the key, and the as the value. diff --git a/Content.Shared/EntityTable/EntitySelectors/AllSelector.cs b/Content.Shared/EntityTable/EntitySelectors/AllSelector.cs index 0fb477ca07a..3f1ad671dda 100644 --- a/Content.Shared/EntityTable/EntitySelectors/AllSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/AllSelector.cs @@ -1,3 +1,4 @@ +using System.Linq; using Robust.Shared.Prototypes; namespace Content.Shared.EntityTable.EntitySelectors; @@ -23,4 +24,26 @@ protected override IEnumerable GetSpawnsImplementation(System.Random } } } + + protected override IEnumerable<(EntProtoId spawn, double)> ListSpawnsImplementation(IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) + { + foreach (var child in Children) + { + foreach (var (spawn, prob) in child.ListSpawns(entMan, proto, ctx)) + { + yield return (spawn, prob); + } + } + } + + protected override IEnumerable<(EntProtoId spawn, double)> AverageSpawnsImplementation(IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) + { + foreach (var child in Children) + { + foreach (var (spawn, prob) in child.AverageSpawns(entMan, proto, ctx)) + { + yield return (spawn, prob); + } + } + } } diff --git a/Content.Shared/EntityTable/EntitySelectors/EntSelector.cs b/Content.Shared/EntityTable/EntitySelectors/EntSelector.cs index 98346031365..ee2b0951d09 100644 --- a/Content.Shared/EntityTable/EntitySelectors/EntSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/EntSelector.cs @@ -27,4 +27,14 @@ protected override IEnumerable GetSpawnsImplementation(System.Random yield return Id; } } + + protected override IEnumerable<(EntProtoId spawn, double)> ListSpawnsImplementation(IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) + { + yield return (Id, 1f); + } + + protected override IEnumerable<(EntProtoId spawn, double)> AverageSpawnsImplementation(IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) + { + yield return (Id, Amount.Average()); + } } diff --git a/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs b/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs index 09258e1bb47..fe3aa08bd98 100644 --- a/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs @@ -1,3 +1,4 @@ +using System.Linq; using Content.Shared.EntityTable.Conditions; using Content.Shared.EntityTable.ValueSelector; using JetBrains.Annotations; @@ -84,17 +85,30 @@ public bool CheckConditions(IEntityManager entMan, IPrototypeManager proto, Enti } /// - /// Gets the spawns in a given table, ignoring the requirements for the table. - /// This should only be used for debugging! + /// Gets a list of every spawn in the table, and the odds of that spawn occuring, ignoring conditions. /// - public IEnumerable ListSpawns(System.Random rand, - IEntityManager entMan, + public IEnumerable<(EntProtoId spawn, double prob)> ListSpawns(IEntityManager entMan, IPrototypeManager proto, - EntityTableContext ctx) + EntityTableContext ctx, + float mod = 1f) + { + foreach (var (spawn, prob) in ListSpawnsImplementation(entMan, proto, ctx)) + { + yield return (spawn, prob * Prob * Rolls.Odds() * mod); + } + } + + /// + /// Gets a list of every spawn in the table, and the average number of occurrences, ignoring conditions. + /// + public IEnumerable<(EntProtoId spawn, double prob)> AverageSpawns(IEntityManager entMan, + IPrototypeManager proto, + EntityTableContext ctx, + float mod = 1f) { - foreach (var spawn in GetSpawnsImplementation(rand, entMan, proto, ctx)) + foreach (var (spawn, prob) in AverageSpawnsImplementation(entMan, proto, ctx)) { - yield return spawn; + yield return (spawn, prob * Prob * Rolls.Average() * mod); } } @@ -102,4 +116,12 @@ protected abstract IEnumerable GetSpawnsImplementation(System.Random IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx); + + protected abstract IEnumerable<(EntProtoId spawn, double)> ListSpawnsImplementation(IEntityManager entMan, + IPrototypeManager proto, + EntityTableContext ctx); + + protected abstract IEnumerable<(EntProtoId spawn, double)> AverageSpawnsImplementation(IEntityManager entMan, + IPrototypeManager proto, + EntityTableContext ctx); } diff --git a/Content.Shared/EntityTable/EntitySelectors/GroupSelector.cs b/Content.Shared/EntityTable/EntitySelectors/GroupSelector.cs index 0d2a451bdc3..d51b467f599 100644 --- a/Content.Shared/EntityTable/EntitySelectors/GroupSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/GroupSelector.cs @@ -1,3 +1,4 @@ +using System.Linq; using Content.Shared.Random.Helpers; using Robust.Shared.Prototypes; @@ -33,4 +34,32 @@ protected override IEnumerable GetSpawnsImplementation(System.Random return pick.GetSpawns(rand, entMan, proto, ctx); } + + protected override IEnumerable<(EntProtoId spawn, double)> ListSpawnsImplementation(IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) + { + var totalWeight = Children.Sum(x => x.Weight); + + foreach (var child in Children) + { + var weightMod = child.Weight / totalWeight; + foreach (var (ent, prob) in child.ListSpawns(entMan, proto, ctx, weightMod)) + { + yield return (ent, prob); + } + } + } + + protected override IEnumerable<(EntProtoId spawn, double)> AverageSpawnsImplementation(IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) + { + var totalWeight = Children.Sum(x => x.Weight); + + foreach (var child in Children) + { + var weightMod = child.Weight / totalWeight; + foreach (var (ent, prob) in child.AverageSpawns(entMan, proto, ctx, weightMod)) + { + yield return (ent, prob); + } + } + } } diff --git a/Content.Shared/EntityTable/EntitySelectors/NestedSelector.cs b/Content.Shared/EntityTable/EntitySelectors/NestedSelector.cs index 4a96c89ccbe..eb672a4249a 100644 --- a/Content.Shared/EntityTable/EntitySelectors/NestedSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/NestedSelector.cs @@ -18,4 +18,14 @@ protected override IEnumerable GetSpawnsImplementation(System.Random { return proto.Index(TableId).Table.GetSpawns(rand, entMan, proto, ctx); } + + protected override IEnumerable<(EntProtoId spawn, double)> ListSpawnsImplementation(IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) + { + return proto.Index(TableId).Table.ListSpawns(entMan, proto, ctx); + } + + protected override IEnumerable<(EntProtoId spawn, double)> AverageSpawnsImplementation(IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) + { + return proto.Index(TableId).Table.AverageSpawns(entMan, proto, ctx); + } } diff --git a/Content.Shared/EntityTable/EntitySelectors/NoneSelector.cs b/Content.Shared/EntityTable/EntitySelectors/NoneSelector.cs index f41c5424203..c7ae87c9056 100644 --- a/Content.Shared/EntityTable/EntitySelectors/NoneSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/NoneSelector.cs @@ -14,4 +14,14 @@ protected override IEnumerable GetSpawnsImplementation(System.Random { yield break; } + + protected override IEnumerable<(EntProtoId spawn, double)> ListSpawnsImplementation(IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) + { + yield break; + } + + protected override IEnumerable<(EntProtoId spawn, double)> AverageSpawnsImplementation(IEntityManager entMan, IPrototypeManager proto, EntityTableContext ctx) + { + yield break; + } } diff --git a/Content.Shared/EntityTable/EntityTableSystem.cs b/Content.Shared/EntityTable/EntityTableSystem.cs index 69ddb0e36e8..a295974775e 100644 --- a/Content.Shared/EntityTable/EntityTableSystem.cs +++ b/Content.Shared/EntityTable/EntityTableSystem.cs @@ -27,15 +27,44 @@ public IEnumerable GetSpawns(EntityTableSelector? table, System.Rand return table.GetSpawns(rand, EntityManager, _prototypeManager, ctx); } - // TODO: Have this method be much better for entity tables - public IEnumerable ListSpawns(EntityTableSelector? table, System.Random? rand = null, EntityTableContext? ctx = null) + public IEnumerable<(EntProtoId spawn, double)> ListSpawns(EntityTablePrototype entTableProto, EntityTableContext? ctx = null) + { + return ListSpawns(entTableProto.Table, ctx); + } + + /// + /// Builds a list of all the spawns in an EntityTable as keys, and their modified weights as values. + /// + /// Table we're examining + /// Optional extra context + public IEnumerable<(EntProtoId spawn, double)> ListSpawns(EntityTableSelector? table, EntityTableContext? ctx = null) { if (table == null) - return new List(); + return new List<(EntProtoId spawn, double)>(); + + ctx ??= new EntityTableContext(); + return table.ListSpawns(EntityManager, _prototypeManager, ctx); + } + + /// + public IEnumerable<(EntProtoId spawn, double)> AverageSpawns(EntityTablePrototype entTableProto, EntityTableContext? ctx = null) + { + return AverageSpawns(entTableProto.Table, ctx); + } + + /// + /// Returns the average expected spawns of a specific entity table. + /// + /// The entity table we want the spawns of + /// Optional EntityTableContext + /// + public IEnumerable<(EntProtoId spawn, double)> AverageSpawns(EntityTableSelector? table, EntityTableContext? ctx = null) + { + if (table == null) + return new List<(EntProtoId spawn, double)>(); - rand ??= _random.GetRandom(); ctx ??= new EntityTableContext(); - return table.ListSpawns(rand, EntityManager, _prototypeManager, ctx); + return table.AverageSpawns(EntityManager, _prototypeManager, ctx); } } diff --git a/Content.Shared/EntityTable/ValueSelector/BinomialNumberSelector.cs b/Content.Shared/EntityTable/ValueSelector/BinomialNumberSelector.cs index b3ed076e70e..c05d3bfa315 100644 --- a/Content.Shared/EntityTable/ValueSelector/BinomialNumberSelector.cs +++ b/Content.Shared/EntityTable/ValueSelector/BinomialNumberSelector.cs @@ -35,4 +35,20 @@ public override int Get(System.Random rand) return count; // get binomialed motherfucker } + + public override float Odds() + { + if (Chance >= 1f) + return 1; + + return 1 - MathF.Pow(1 - Chance, Trials); + } + + public override float Average() + { + if (Chance >= 1f) + return Trials; + + return Trials * Chance; + } } diff --git a/Content.Shared/EntityTable/ValueSelector/ConstantNumberSelector.cs b/Content.Shared/EntityTable/ValueSelector/ConstantNumberSelector.cs index a1a7e4ac582..30c664ac408 100644 --- a/Content.Shared/EntityTable/ValueSelector/ConstantNumberSelector.cs +++ b/Content.Shared/EntityTable/ValueSelector/ConstantNumberSelector.cs @@ -17,4 +17,15 @@ public override int Get(System.Random rand) { return Value; } + + public override float Odds() + { + // You really shouldn't have a constant value of 0 ever. + return 1; + } + + public override float Average() + { + return Value; + } } diff --git a/Content.Shared/EntityTable/ValueSelector/NumberSelector.cs b/Content.Shared/EntityTable/ValueSelector/NumberSelector.cs index 763578a3841..f4e3e7b2865 100644 --- a/Content.Shared/EntityTable/ValueSelector/NumberSelector.cs +++ b/Content.Shared/EntityTable/ValueSelector/NumberSelector.cs @@ -10,4 +10,16 @@ namespace Content.Shared.EntityTable.ValueSelector; public abstract partial class NumberSelector { public abstract int Get(System.Random rand); + + /// + /// Odds of occurrence + /// + /// An odds multiplier of at least one occurrence + public abstract float Odds(); + + /// + /// Average number of occurrences + /// + /// The average amount of occurrences + public abstract float Average(); } diff --git a/Content.Shared/EntityTable/ValueSelector/RangeNumberSelector.cs b/Content.Shared/EntityTable/ValueSelector/RangeNumberSelector.cs index 2eca71d4009..0e82a2a378c 100644 --- a/Content.Shared/EntityTable/ValueSelector/RangeNumberSelector.cs +++ b/Content.Shared/EntityTable/ValueSelector/RangeNumberSelector.cs @@ -19,4 +19,14 @@ public override int Get(System.Random rand) // so we add 1 to the second number. return rand.Next(Range.X, Range.Y + 1); } + + public override float Odds() + { + return Range.X == 0 ? 1f / (Range.Y + 1) : 1; + } + + public override float Average() + { + return (Range.X + Range.Y) / 2f; + } } From 93d621ac3da75662087eb9ba354ed4a647e01d7a Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Mon, 2 Feb 2026 00:54:57 +0700 Subject: [PATCH 210/603] tts repair x2 --- Content.Shared/Humanoid/HumanoidProfileSystem.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Content.Shared/Humanoid/HumanoidProfileSystem.cs b/Content.Shared/Humanoid/HumanoidProfileSystem.cs index c33a40ad578..672caf0f378 100644 --- a/Content.Shared/Humanoid/HumanoidProfileSystem.cs +++ b/Content.Shared/Humanoid/HumanoidProfileSystem.cs @@ -1,3 +1,4 @@ +using Content.Shared.Corvax.TTS; using Content.Shared.Examine; using Content.Shared.Humanoid.Prototypes; using Content.Shared.IdentityManagement; @@ -38,6 +39,13 @@ public void ApplyProfileTo(Entity ent, HumanoidCharac ent.Comp.Age = profile.Age; ent.Comp.Species = profile.Species; ent.Comp.Sex = profile.Sex; + // Corvax-TTS-start + ent.Comp.Voice = profile.Voice; + if (TryComp(ent, out var _TTSComponent) && _TTSComponent.VoicePrototypeId == null) + { + _TTSComponent.VoicePrototypeId = profile.Voice; + } + // Corvax-TTS-end Dirty(ent); var sexChanged = new SexChangedEvent(ent.Comp.Sex, profile.Sex); From 728f3eac2a03f66b386e26be4608180820d515c7 Mon Sep 17 00:00:00 2001 From: Samuka <47865393+Samuka-C@users.noreply.github.com> Date: Sun, 1 Feb 2026 14:57:18 -0300 Subject: [PATCH 211/603] Sent fax now tells where it was sent from (#41108) * Make fax tell where the fax is from * make the line shorter * localization * fix fax machine not knowing where the fax is from * fix popup saying PeerSelector * name is now get from the known fax list * shorter to fit in more papers * send the sender not the destination * add time to info displayed * nuke [ViewVariables(VVAccess.ReadWrite)] * update submodule * use RoundDuration() instead * ops, this was needed --- Content.Client/Fax/UI/FaxWindow.xaml.cs | 6 ++-- Content.Server/Fax/FaxConstants.cs | 1 + Content.Server/Fax/FaxSystem.cs | 35 ++++++++++++++++--- .../Fax/Components/FaxMachineComponent.cs | 30 ++++++++++++---- Content.Shared/Fax/SharedFax.cs | 1 - .../Locale/en-US/devices/device-network.ftl | 2 ++ Resources/Locale/en-US/fax/fax.ftl | 7 ++++ 7 files changed, 66 insertions(+), 16 deletions(-) diff --git a/Content.Client/Fax/UI/FaxWindow.xaml.cs b/Content.Client/Fax/UI/FaxWindow.xaml.cs index b809af7f4ae..9b25a2e2c74 100644 --- a/Content.Client/Fax/UI/FaxWindow.xaml.cs +++ b/Content.Client/Fax/UI/FaxWindow.xaml.cs @@ -25,13 +25,13 @@ public FaxWindow() PaperButtonPressed += OnPaperButtonPressed; - FileButton.OnPressed += _ => FileButtonPressed?.Invoke(); - PaperButton.OnPressed += _ => PaperButtonPressed?.Invoke(); + FileButton.OnPressed += _ => FileButtonPressed?.Invoke(); + PaperButton.OnPressed += _ => PaperButtonPressed?.Invoke(); CopyButton.OnPressed += _ => CopyButtonPressed?.Invoke(); SendButton.OnPressed += _ => SendButtonPressed?.Invoke(); RefreshButton.OnPressed += _ => RefreshButtonPressed?.Invoke(); PeerSelector.OnItemSelected += args => - PeerSelected?.Invoke((string) args.Button.GetItemMetadata(args.Id)!); + PeerSelected?.Invoke((string)args.Button.GetItemMetadata(args.Id)!); } public void UpdateState(FaxUiState state) diff --git a/Content.Server/Fax/FaxConstants.cs b/Content.Server/Fax/FaxConstants.cs index 4b0ff7853eb..8578172381a 100644 --- a/Content.Server/Fax/FaxConstants.cs +++ b/Content.Server/Fax/FaxConstants.cs @@ -30,4 +30,5 @@ public static class FaxConstants public const string FaxPaperStampedByData = "fax_data_stamped_by"; public const string FaxSyndicateData = "fax_data_i_am_syndicate"; public const string FaxPaperLockedData = "fax_data_locked"; + public const string FaxPaperSenderFaxNameData = "fax_data_sender_fax_name"; } diff --git a/Content.Server/Fax/FaxSystem.cs b/Content.Server/Fax/FaxSystem.cs index 67848a4282a..60529ce2ebf 100644 --- a/Content.Server/Fax/FaxSystem.cs +++ b/Content.Server/Fax/FaxSystem.cs @@ -15,6 +15,7 @@ using Content.Shared.Fax; using Content.Shared.Fax.Components; using Content.Shared.Fax.Systems; +using Content.Shared.GameTicking; using Content.Shared.Interaction; using Content.Shared.Labels.Components; using Content.Shared.Labels.EntitySystems; @@ -30,6 +31,7 @@ using Robust.Shared.Containers; using Robust.Shared.Player; using Robust.Shared.Prototypes; +using Robust.Shared.Timing; namespace Content.Server.Fax; @@ -39,6 +41,7 @@ public sealed class FaxSystem : EntitySystem [Dependency] private readonly IAdminManager _adminManager = default!; [Dependency] private readonly ItemSlotsSystem _itemSlotsSystem = default!; [Dependency] private readonly SharedAppearanceSystem _appearanceSystem = default!; + [Dependency] private readonly SharedGameTicker _gameTicker = default!; [Dependency] private readonly PopupSystem _popupSystem = default!; [Dependency] private readonly DeviceNetworkSystem _deviceNetworkSystem = default!; [Dependency] private readonly PaperSystem _paperSystem = default!; @@ -300,8 +303,9 @@ private void OnPacketReceived(EntityUid uid, FaxMachineComponent component, Devi args.Data.TryGetValue(FaxConstants.FaxPaperStampedByData, out List? stampedBy); args.Data.TryGetValue(FaxConstants.FaxPaperPrototypeData, out string? prototypeId); args.Data.TryGetValue(FaxConstants.FaxPaperLockedData, out bool? locked); + args.Data.TryGetValue(FaxConstants.FaxPaperSenderFaxNameData, out string? senderFaxName); - var printout = new FaxPrintout(content, name, label, prototypeId, stampState, stampedBy, locked ?? false); + var printout = new FaxPrintout(content, name, label, prototypeId, stampState, stampedBy, locked ?? false, senderFaxName); Receive(uid, printout, args.SenderAddress); break; @@ -392,6 +396,7 @@ public void SetDestination(EntityUid uid, string destAddress, FaxMachineComponen return; component.DestinationFaxAddress = destAddress; + component.DestinationFaxName = component.KnownFaxes[destAddress]; UpdateUserInterface(uid, component); } @@ -521,13 +526,35 @@ public void Send(EntityUid uid, FaxMachineComponent? component, FaxSendMessage a TryComp(sendEntity, out var labelComponent); + var content = paper.Content; + + if (component.AddSenderInfo) + { + var faxMachineAddress = TryComp(uid, out var deviceNetworkComponent) + ? deviceNetworkComponent.Address + : Loc.GetString("device-address-unknown"); + + var time = _gameTicker.RoundDuration(); + var timeString = TimeSpan.FromSeconds(Math.Truncate(time.TotalSeconds)).ToString(); + + content += "\n"; + content += Loc.GetString(component.SenderInfo, + ("sender_name", component.FaxName), + ("sender_addr", faxMachineAddress), + ("recipient_name", component.DestinationFaxName ?? Loc.GetString("fax-machine-popup-source-unknown")), + ("recipient_addr", component.DestinationFaxAddress), + ("time", timeString) + ); + } + var payload = new NetworkPayload() { { DeviceNetworkConstants.Command, FaxConstants.FaxPrintCommand }, { FaxConstants.FaxPaperNameData, nameMod?.BaseName ?? metadata.EntityName }, { FaxConstants.FaxPaperLabelData, labelComponent?.CurrentLabel }, - { FaxConstants.FaxPaperContentData, paper.Content }, + { FaxConstants.FaxPaperContentData, content }, { FaxConstants.FaxPaperLockedData, paper.EditingDisabled }, + { FaxConstants.FaxPaperSenderFaxNameData, component.FaxName ?? Loc.GetString("fax-machine-popup-source-unknown") } }; if (metadata.EntityPrototype != null) @@ -570,9 +597,7 @@ public void Receive(EntityUid uid, FaxPrintout printout, string? fromAddress = n if (!Resolve(uid, ref component)) return; - var faxName = Loc.GetString("fax-machine-popup-source-unknown"); - if (fromAddress != null && component.KnownFaxes.TryGetValue(fromAddress, out var fax)) // If message received from unknown fax address - faxName = fax; + var faxName = printout.SenderFaxName ?? Loc.GetString("fax-machine-popup-source-unknown"); _popupSystem.PopupEntity(Loc.GetString("fax-machine-popup-received", ("from", faxName)), uid); _appearanceSystem.SetData(uid, FaxMachineVisuals.VisualState, FaxMachineVisualState.Printing); diff --git a/Content.Shared/Fax/Components/FaxMachineComponent.cs b/Content.Shared/Fax/Components/FaxMachineComponent.cs index 2407ba59499..c9113665d2a 100644 --- a/Content.Shared/Fax/Components/FaxMachineComponent.cs +++ b/Content.Shared/Fax/Components/FaxMachineComponent.cs @@ -13,24 +13,27 @@ public sealed partial class FaxMachineComponent : Component /// /// Name with which the fax will be visible to others on the network /// - [ViewVariables(VVAccess.ReadWrite)] [DataField("name")] public string FaxName { get; set; } = "Unknown"; /// /// Sprite to use when inserting an object. /// - [ViewVariables(VVAccess.ReadWrite)] [DataField, AutoNetworkedField] public string InsertingState = "inserting"; /// /// Device address of fax in network to which data will be send /// - [ViewVariables(VVAccess.ReadWrite)] [DataField("destinationAddress")] public string? DestinationFaxAddress { get; set; } + /// + /// Name of fax in network to which data will be send + /// + [DataField("destinationName")] + public string? DestinationFaxName { get; set; } + /// /// Contains the item to be sent, assumes it's paper... /// @@ -41,21 +44,18 @@ public sealed partial class FaxMachineComponent : Component /// Is fax machine should respond to pings in network /// This will make it visible to others on the network /// - [ViewVariables(VVAccess.ReadWrite)] [DataField] public bool ResponsePings { get; set; } = true; /// /// Should admins be notified on message receive /// - [ViewVariables(VVAccess.ReadWrite)] [DataField] public bool NotifyAdmins { get; set; } = false; /// /// Should that fax receive nuke codes send by admins. Probably should be captain fax only /// - [ViewVariables(VVAccess.ReadWrite)] [DataField] public bool ReceiveNukeCodes { get; set; } = false; @@ -135,6 +135,18 @@ public sealed partial class FaxMachineComponent : Component /// [DataField] public EntProtoId PrintOfficePaperId = "PaperOffice"; + + /// + /// If the fax machine should add a bit of text in the end of the fax that specifies from where and to where the fax is for + /// + [DataField] + public bool AddSenderInfo = true; + + /// + /// The text that is sent along with the paper's content if is true + /// + [DataField] + public LocId SenderInfo = "fax-machine-sender-info"; } [DataDefinition] @@ -161,11 +173,14 @@ public sealed partial class FaxPrintout [DataField] public bool Locked { get; private set; } + [DataField] + public string? SenderFaxName { get; private set; } = default!; + private FaxPrintout() { } - public FaxPrintout(string content, string name, string? label = null, string? prototypeId = null, string? stampState = null, List? stampedBy = null, bool locked = false) + public FaxPrintout(string content, string name, string? label = null, string? prototypeId = null, string? stampState = null, List? stampedBy = null, bool locked = false, string? senderFaxName = null) { Content = content; Name = name; @@ -174,5 +189,6 @@ public FaxPrintout(string content, string name, string? label = null, string? pr StampState = stampState; StampedBy = stampedBy ?? new List(); Locked = locked; + SenderFaxName = senderFaxName; } } diff --git a/Content.Shared/Fax/SharedFax.cs b/Content.Shared/Fax/SharedFax.cs index 55c928fa95d..bdef2f42da0 100644 --- a/Content.Shared/Fax/SharedFax.cs +++ b/Content.Shared/Fax/SharedFax.cs @@ -74,7 +74,6 @@ public sealed class FaxRefreshMessage : BoundUserInterfaceMessage public sealed class FaxDestinationMessage : BoundUserInterfaceMessage { public string Address { get; } - public FaxDestinationMessage(string address) { Address = address; diff --git a/Resources/Locale/en-US/devices/device-network.ftl b/Resources/Locale/en-US/devices/device-network.ftl index 9eca4c3bb71..7151e218f35 100644 --- a/Resources/Locale/en-US/devices/device-network.ftl +++ b/Resources/Locale/en-US/devices/device-network.ftl @@ -55,3 +55,5 @@ device-net-id-apc = Apc device-net-id-atmos-devices = Atmos Devices device-net-id-reserved = Reserved +# Unknown +device-address-unknown = ????-???? diff --git a/Resources/Locale/en-US/fax/fax.ftl b/Resources/Locale/en-US/fax/fax.ftl index 86587b88ed9..83b25aac42d 100644 --- a/Resources/Locale/en-US/fax/fax.ftl +++ b/Resources/Locale/en-US/fax/fax.ftl @@ -26,3 +26,10 @@ fax-machine-ui-paper-not-inserted = No paper fax-machine-chat-notify = Received new fax message from "{$fax}" fax fax-machine-printed-paper-name = printed paper + +fax-machine-sender-info = + ───────────────────────────────────── + Fax sent + from: {$sender_name} [address: {$sender_addr}] + to: {$recipient_name} [address: {$recipient_addr}] + at: {$time} From 66615bf6aab832183c9e9495941f2cc7c6bfba50 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 1 Feb 2026 18:13:27 +0000 Subject: [PATCH 212/603] Automatic changelog update --- Resources/Changelog/Admin.yml | 8 ++++++++ Resources/Changelog/Changelog.yml | 16 +++++++--------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index 7554402c56f..aef62390e77 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -1628,5 +1628,13 @@ Entries: id: 198 time: '2026-01-29T18:55:18.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42687 +- author: Samuka + changes: + - message: Central Command fax always tells admins where the fax came from instead + of saying "unknown" until it was refreshed + type: Fix + id: 199 + time: '2026-02-01T18:12:16.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/41108 Name: Admin Order: 3 diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 16045d121a0..8822d00d987 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,13 +1,4 @@ Entries: -- author: SurrealShibe - changes: - - message: The Satanic Bible's pentagram has been turned right-side-up. - type: Tweak - - message: The Satanic Bible now has the correct left inhand sprite. - type: Fix - id: 8973 - time: '2025-09-17T23:34:26.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40234 - author: PicklOH, Archee changes: - message: Nukie Operative, Corpsman, and Commander now have unique PDAs with unique @@ -4000,3 +3991,10 @@ id: 9479 time: '2026-01-31T22:38:01.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42706 +- author: Samuka + changes: + - message: Fax machines now add text to the paper telling where the fax is from + type: Tweak + id: 9480 + time: '2026-02-01T18:12:16.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/41108 From 9f9926f6f7b177ca6de8e7e085a2362ce80cb201 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Mon, 2 Feb 2026 02:13:13 +0700 Subject: [PATCH 213/603] meow fix3 --- Resources/Prototypes/Corvax/Body/Species/ipc.yml | 7 +++++-- Resources/Prototypes/Corvax/Body/Species/tajaran.yml | 3 --- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Resources/Prototypes/Corvax/Body/Species/ipc.yml b/Resources/Prototypes/Corvax/Body/Species/ipc.yml index d1b0dd22e68..0890d301f31 100644 --- a/Resources/Prototypes/Corvax/Body/Species/ipc.yml +++ b/Resources/Prototypes/Corvax/Body/Species/ipc.yml @@ -3,10 +3,10 @@ id: Ipc limits: enum.HumanoidVisualLayers.Hair: - limit: 1 + limit: 0 required: false enum.HumanoidVisualLayers.FacialHair: - limit: 1 + limit: 0 required: false enum.HumanoidVisualLayers.Chest: limit: 2 @@ -15,6 +15,9 @@ limit: 1 required: true default: [ IpcOrangeS ] + enum.HumanoidVisualLayers.Head: + limit: 0 + required: false enum.HumanoidVisualLayers.LArm: limit: 1 required: false diff --git a/Resources/Prototypes/Corvax/Body/Species/tajaran.yml b/Resources/Prototypes/Corvax/Body/Species/tajaran.yml index b125c458f8b..d6fb80035ab 100644 --- a/Resources/Prototypes/Corvax/Body/Species/tajaran.yml +++ b/Resources/Prototypes/Corvax/Body/Species/tajaran.yml @@ -130,9 +130,6 @@ baseDecayRate: 0.02 - type: Thirst baseDecayRate: 0.15 - - type: Body - prototype: Tajaran - requiredLegs: 2 - type: ContentEye - type: Speech allowedEmotes: ['Purr'] From a0e6d0553aac174de0ad817b973aecbf651e4af4 Mon Sep 17 00:00:00 2001 From: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> Date: Sun, 1 Feb 2026 11:55:50 -0800 Subject: [PATCH 214/603] Atmos GetAirflowDirections API (#42668) --- .../Tests/Atmos/GetAirflowDirectionsTest.cs | 50 +++++++++++++++++++ .../EntitySystems/AtmosphereSystem.API.cs | 23 +++++++++ 2 files changed, 73 insertions(+) create mode 100644 Content.IntegrationTests/Tests/Atmos/GetAirflowDirectionsTest.cs diff --git a/Content.IntegrationTests/Tests/Atmos/GetAirflowDirectionsTest.cs b/Content.IntegrationTests/Tests/Atmos/GetAirflowDirectionsTest.cs new file mode 100644 index 00000000000..4677cc5f7ee --- /dev/null +++ b/Content.IntegrationTests/Tests/Atmos/GetAirflowDirectionsTest.cs @@ -0,0 +1,50 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Shared.Atmos; +using Robust.Shared.GameObjects; +using Robust.Shared.Map; +using Robust.Shared.Maths; +using Robust.Shared.Utility; + +namespace Content.IntegrationTests.Tests.Atmos; + +/// +/// Class for testing some airflow retrieval API methods. +/// +public sealed class GetAirflowDirectionsTest : AtmosTest +{ + // i will keep using this test map until it has been drained + // of all use + protected override ResPath? TestMapPath => new("Maps/Test/Atmospherics/DeltaPressure/deltapressuretest.yml"); + + [Test] + [TestCase(0, 0, AtmosDirection.All)] + [TestCase(0, 1, AtmosDirection.South)] + [TestCase(0, -1, AtmosDirection.North)] + [TestCase(1, 0, AtmosDirection.West)] + [TestCase(-1, 0, AtmosDirection.East)] + [TestCase(1, 1, AtmosDirection.Invalid)] + [TestCase(100, 100, AtmosDirection.Invalid)] + public async Task TestLookup(int x, int y, AtmosDirection expectedDirections) + { + await Server.WaitPost(delegate + { + // yea + var coords = new Vector2i(x, y); + var directions = SAtmos.GetAirflowDirections(RelevantAtmos, coords); + Assert.That(directions, Is.EqualTo(expectedDirections)); + }); + } + + /// + /// Tests that a grident with no atmosphere will return . + /// + [Test] + public async Task TestLookup_BadEnt() + { + await Server.WaitPost(delegate + { + var directions = SAtmos.GetAirflowDirections(EntityUid.Invalid, Vector2i.Zero); + Assert.That(directions, Is.EqualTo(AtmosDirection.Invalid)); + }); + } +} diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.API.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.API.cs index e2e39abdda9..8c28fe0bcf0 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.API.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.API.cs @@ -350,6 +350,29 @@ public bool IsTileAirBlockedCached(Entity grid, return atmosTile.AirtightData.BlockedDirections.IsFlagSet(directions); } + /// + /// Returns the for a tile on a grid. + /// This represents the directions that the air can currently flow to. + /// + /// The grid entity that the tile belongs to. + /// The coordinates to check. + /// The of the tile, + /// if the grid or tile couldn't be found. + /// Note that this data is cached and is updated at the beginning of every atmostick. + /// As such, any airtight changes that were made may not be reflected in this value until + /// the cache is refreshed in the next processing tick. + [PublicAPI] + public AtmosDirection GetAirflowDirections(Entity grid, Vector2i tile) + { + if (!_atmosQuery.Resolve(grid, ref grid.Comp, false)) + return AtmosDirection.Invalid; + + if (!grid.Comp.Tiles.TryGetValue(tile, out var atmosTile)) + return AtmosDirection.Invalid; + + return atmosTile.AdjacentBits; + } + /// /// Checks if a tile on a grid or map is space as defined by a tile's definition of space. /// Some tiles can hold back space and others cannot - for example, plating can hold From 118b83165bda29e3651e97796976558f3cd42bb0 Mon Sep 17 00:00:00 2001 From: Absotively Date: Sun, 1 Feb 2026 12:54:05 -0700 Subject: [PATCH 215/603] Gas device power switches use switch buttons (#42619) * Switch button for gas filter power * Switch button for gas mixer power * Switch button for gas pump power * Switch button for thermomachine power * Switch button for space heater power * Remove redundant switch labels --- .../Atmos/UI/GasFilterBoundUserInterface.cs | 5 ++--- Content.Client/Atmos/UI/GasFilterWindow.xaml | 9 +++++---- Content.Client/Atmos/UI/GasFilterWindow.xaml.cs | 16 +++------------- .../Atmos/UI/GasMixerBoundUserInteface.cs | 5 ++--- Content.Client/Atmos/UI/GasMixerWindow.xaml | 10 +++++----- Content.Client/Atmos/UI/GasMixerWindow.xaml.cs | 17 +++-------------- .../UI/GasPressurePumpBoundUserInterface.cs | 7 ++----- .../Atmos/UI/GasPressurePumpWindow.xaml | 6 ++++-- .../Atmos/UI/GasPressurePumpWindow.xaml.cs | 17 +++-------------- .../UI/GasThermomachineBoundUserInterface.cs | 5 +---- .../Atmos/UI/GasThermomachineWindow.xaml | 10 +++++----- .../Atmos/UI/GasThermomachineWindow.xaml.cs | 12 +----------- .../Atmos/UI/GasVolumePumpBoundUserInterface.cs | 6 ++---- .../Atmos/UI/GasVolumePumpWindow.xaml | 9 ++++----- .../Atmos/UI/GasVolumePumpWindow.xaml.cs | 17 +++-------------- .../Atmos/UI/SpaceHeaterBoundUserInterface.cs | 3 +-- Content.Client/Atmos/UI/SpaceHeaterWindow.xaml | 8 +++++--- .../Atmos/UI/SpaceHeaterWindow.xaml.cs | 11 ----------- .../en-US/components/gas-filter-component.ftl | 4 ---- .../en-US/components/gas-mixer-component.ftl | 4 ---- .../en-US/components/gas-pump-component.ftl | 4 ---- .../components/gas-thermomachine-component.ftl | 3 --- .../en-US/components/space-heater-component.ftl | 2 -- 23 files changed, 51 insertions(+), 139 deletions(-) diff --git a/Content.Client/Atmos/UI/GasFilterBoundUserInterface.cs b/Content.Client/Atmos/UI/GasFilterBoundUserInterface.cs index ecaaca30055..b23c606285e 100644 --- a/Content.Client/Atmos/UI/GasFilterBoundUserInterface.cs +++ b/Content.Client/Atmos/UI/GasFilterBoundUserInterface.cs @@ -37,10 +37,9 @@ protected override void Open() _window.SelectGasPressed += OnSelectGasPressed; } - private void OnToggleStatusButtonPressed() + private void OnToggleStatusButtonPressed(bool status) { - if (_window is null) return; - SendMessage(new GasFilterToggleStatusMessage(_window.FilterStatus)); + SendMessage(new GasFilterToggleStatusMessage(status)); } private void OnFilterTransferRatePressed(string value) diff --git a/Content.Client/Atmos/UI/GasFilterWindow.xaml b/Content.Client/Atmos/UI/GasFilterWindow.xaml index 861d4473089..5077fddc619 100644 --- a/Content.Client/Atmos/UI/GasFilterWindow.xaml +++ b/Content.Client/Atmos/UI/GasFilterWindow.xaml @@ -1,11 +1,12 @@ - - +/// TODO: This should really be an interface instead, we're always raising this to the same entity anyways and the values are extremely predictable [ByRefEvent] -public record struct AntagSelectEntityEvent(ICommonSession? Session, Entity GameRule, List> AntagRoles) +public record struct AntagSelectEntityEvent(ICommonSession? Session, Entity GameRule, List> AntagRoles, MapCoordinates Coords) { public readonly ICommonSession? Session = Session; /// list of antag role prototypes associated with a entity. used by the public readonly List> AntagRoles = AntagRoles; + public readonly MapCoordinates Coords = Coords; + public bool Handled => Entity != null; public EntityUid? Entity; @@ -634,20 +701,20 @@ public record struct AntagSelectEntityEvent(ICommonSession? Session, Entity [ByRefEvent] -public record struct AntagSelectLocationEvent(ICommonSession? Session, Entity GameRule, EntityUid Entity) +public record struct AntagSelectLocationEvent(Entity GameRule, EntityUid? Entity, ICommonSession? Session = null) { public readonly ICommonSession? Session = Session; public bool Handled => Coordinates.Any(); // the entity of the antagonist - public EntityUid Entity = Entity; + public EntityUid? Entity = Entity; public List Coordinates = new(); } /// -/// Event raised on a game rule entity after the setup logic for an antag is complete. +/// Event raised on a game ruleR entity after the setup logic for an antag is complete. /// Used for applying additional more complex setup logic. /// [ByRefEvent] diff --git a/Content.Server/Antag/AntagSpawnerSystem.cs b/Content.Server/Antag/AntagSpawnerSystem.cs index f8a036749a1..dd0c99cc0e4 100644 --- a/Content.Server/Antag/AntagSpawnerSystem.cs +++ b/Content.Server/Antag/AntagSpawnerSystem.cs @@ -16,6 +16,6 @@ public override void Initialize() private void OnSelectEntity(Entity ent, ref AntagSelectEntityEvent args) { - args.Entity = Spawn(ent.Comp.Prototype); + args.Entity = Spawn(ent.Comp.Prototype, args.Coords); } } diff --git a/Content.Server/GameTicking/Rules/AntagLoadProfileRuleSystem.cs b/Content.Server/GameTicking/Rules/AntagLoadProfileRuleSystem.cs index 22916f0c18e..fff3ee8de6f 100644 --- a/Content.Server/GameTicking/Rules/AntagLoadProfileRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/AntagLoadProfileRuleSystem.cs @@ -36,7 +36,7 @@ private void OnSelectEntity(Entity ent, ref Antag if (profile?.Species is not { } speciesId || !_proto.Resolve(speciesId, out var species)) { - species = _proto.Index(HumanoidCharacterProfile.DefaultSpecies); + species = _proto.Index(HumanoidCharacterProfile.DefaultSpecies); } if (ent.Comp.SpeciesOverride != null @@ -45,7 +45,7 @@ private void OnSelectEntity(Entity ent, ref Antag species = _proto.Index(ent.Comp.SpeciesOverride.Value); } - args.Entity = Spawn(species.Prototype); + args.Entity = Spawn(species.Prototype, args.Coords); if (profile?.WithSpecies(species.ID) is { } humanoidProfile) { _visualBody.ApplyProfileTo(args.Entity.Value, humanoidProfile); diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Conditional/xenoborgs.yml b/Resources/Prototypes/Entities/Markers/Spawners/Conditional/xenoborgs.yml index a8251739acc..0717829f849 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Conditional/xenoborgs.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Conditional/xenoborgs.yml @@ -5,13 +5,9 @@ components: - type: GridSpawnPointWhitelist whitelist: - components: - - Xenoborg tags: - XenoborgGhostrole blacklist: - components: - - MothershipCore tags: - MothershipCoreGhostrole - type: SpawnPoint @@ -28,8 +24,6 @@ components: - type: GridSpawnPointWhitelist whitelist: - components: - - MothershipCore tags: - MothershipCoreGhostrole - type: SpawnPoint From 2320d257d51f65b6fc0287b6b1b63405bab09c1a Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Thu, 5 Feb 2026 08:55:28 +0100 Subject: [PATCH 254/603] [Stable] Fix metabolism shuffle (#42795) * yeah * move up * fssaf --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- Content.Shared/Metabolism/MetabolizerSystem.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Content.Shared/Metabolism/MetabolizerSystem.cs b/Content.Shared/Metabolism/MetabolizerSystem.cs index 5cf44e6f34a..a9efcdc5bd5 100644 --- a/Content.Shared/Metabolism/MetabolizerSystem.cs +++ b/Content.Shared/Metabolism/MetabolizerSystem.cs @@ -1,7 +1,6 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Shared.Body.Events; -using Content.Shared.Body.Systems; using Content.Shared.Body; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components.SolutionManager; @@ -16,6 +15,7 @@ using Content.Shared.FixedPoint; using Content.Shared.Mobs.Systems; using Robust.Shared.Collections; +using Robust.Shared.Network; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; @@ -32,6 +32,7 @@ public sealed class MetabolizerSystem : EntitySystem [Dependency] private readonly SharedEntityConditionsSystem _entityConditions = default!; [Dependency] private readonly SharedEntityEffectsSystem _entityEffects = default!; [Dependency] private readonly SharedSolutionContainerSystem _solutionContainerSystem = default!; + [Dependency] private readonly INetManager _net = default!; private EntityQuery _organQuery; private EntityQuery _solutionQuery; @@ -61,6 +62,11 @@ public override void Update(float frameTime) { base.Update(frameTime); + // We only do this on the server to prevent the client from reshuffling metabolism during prediction. + // Should just be replaced with predicted random. + if (_net.IsClient) + return; + var metabolizers = new ValueList<(EntityUid Uid, MetabolizerComponent Component)>(Count()); var query = EntityQueryEnumerator(); From a229bc26a89e17485795b08663c22dd879ae428a Mon Sep 17 00:00:00 2001 From: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> Date: Thu, 5 Feb 2026 00:19:18 -0800 Subject: [PATCH 255/603] Fix gas filter math (#42801) * fix gas filter math i'm just a stunning genius aren't i * yeah i can do it better --- .../EntitySystems/AtmosphereSystem.Gases.cs | 22 ++++++++++++++++++- .../Trinary/EntitySystems/GasFilterSystem.cs | 2 +- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs index a47e8fa9487..acc11a7b2b7 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Gases.cs @@ -344,6 +344,26 @@ 3. Expand both sides. /// transferred volume causing a pressure rise in the target . [PublicAPI] public static float FractionToMaxPressure(GasMixture mix1, GasMixture mix2, float targetPressure) + { + var molesToTransfer = MolesToMaxPressure(mix1, mix2, targetPressure); + return molesToTransfer / mix1.TotalMoles; + } + + /// + /// Determines the number of moles to be removed and transferred from a source + /// to a target to reach a target pressure + /// in the target . + /// + /// The source that gas will be removed from. + /// This should always be of higher pressure than the second . + /// The target that will increase in pressure + /// to the target pressure. + /// The target mixture's desired pressure to target. + /// The difference in moles required to reach the target pressure. + /// Note that this method doesn't take into account the heat capacity of the + /// transferred volume causing a pressure rise in the target . + [PublicAPI] + public static float MolesToMaxPressure(GasMixture mix1, GasMixture mix2, float targetPressure) { /* Calculate the moles required to reach the target pressure. @@ -388,7 +408,7 @@ Derivation is as follows. var requiredMoles = (delta * mix2.Volume) / (mix1.Temperature * Atmospherics.R); // Return the fraction of moles to transfer. - return requiredMoles / mix1.TotalMoles; + return requiredMoles; } /// diff --git a/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs b/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs index ceb1119fca2..b104cc834e9 100644 --- a/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs +++ b/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs @@ -76,7 +76,7 @@ private void OnFilterUpdated(EntityUid uid, GasFilterComponent filter, ref Atmos { // Make sure we don't pump over the pressure limit. var limitMolesFilter = - AtmosphereSystem.FractionToMaxPressure(removed, filterNode.Air, Atmospherics.MaxOutputPressure); + AtmosphereSystem.MolesToMaxPressure(removed, filterNode.Air, Atmospherics.MaxOutputPressure); var availableMoles = removed.GetMoles(filter.FilteredGas.Value); var filteredMoles = Math.Max(Math.Min(limitMolesFilter, availableMoles), 0); From 991a3e9c229f8359d617cd090faddb8b0ac1bc13 Mon Sep 17 00:00:00 2001 From: PJBot Date: Thu, 5 Feb 2026 08:35:23 +0000 Subject: [PATCH 256/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 9980d16e22f..72e92b303fa 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Shot - changes: - - message: The cane blade can now slice, cut and execute - type: Tweak - id: 8985 - time: '2025-09-18T19:37:04.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40311 - author: Kittygyat changes: - message: Tarantulas and other spider mobs can now pull objects. @@ -4001,3 +3994,10 @@ id: 9491 time: '2026-02-04T22:13:06.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42569 +- author: ArtisticRoomba + changes: + - message: Fixed the Gas Filter not transferring enough mols to the filter outlet. + type: Fix + id: 9492 + time: '2026-02-05T08:34:11.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42801 From eca952e846c986c4ac0ca678c5b57fb91988b0cb Mon Sep 17 00:00:00 2001 From: InsoPL Date: Fri, 6 Feb 2026 11:30:19 +0100 Subject: [PATCH 257/603] Optical thermal scanner implementation (#42613) * revert of the revert * tests * changes * more fun * test * ccvvvar * works but bad * now its better * more fixes * more cleanup * cleaning * last fixes before move to glasses activ * x * glasses only * working * fix toolbox * cleanup * ThermalByte added * small fix * small optimalisations * float bux fix * comments add * more comments * more comments * last fix * revert cvar delete * wrong blue shades * cvar refactor * Update Content.Shared/Atmos/EntitySystems/SharedGasTileOverlaySystem.cs Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> * Update Content.Client/Atmos/Overlays/GasTileDangerousTemperatureOverlay.cs Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> * tweak to TryGetTemperature comment * Factors are now const * renames * Interface for ThermalByte * tile color vaccum and more comments * saving yeeted * integration test * rename and cleanup * fix * cleanup * switch * UT fix (hopefully) * small bug+ rename * vaccum limit + space is now invalid * typo * typo * fix * cleanup --------- Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> --- .../GasTileDangerousTemperatureOverlay.cs | 253 +++++++++++++++ .../Overlays/ThermalSightOverlaySystem.cs | 34 ++ .../Atmos/SharedGasTileOverlaySystemTest.cs | 103 ++++++ .../EntitySystems/GasTileOverlaySystem.cs | 47 ++- .../SharedGasTileOverlaySystem.cs | 297 +++++++++++++----- Content.Shared/CCVar/CCVars.Net.cs | 2 +- .../Inventory/InventorySystem.Relay.cs | 1 + .../Overlays/ThermalSightComponent.cs | 10 + .../Entities/Clothing/Eyes/glasses.yml | 1 + 9 files changed, 658 insertions(+), 90 deletions(-) create mode 100644 Content.Client/Atmos/Overlays/GasTileDangerousTemperatureOverlay.cs create mode 100644 Content.Client/Overlays/ThermalSightOverlaySystem.cs create mode 100644 Content.IntegrationTests/Tests/Atmos/SharedGasTileOverlaySystemTest.cs create mode 100644 Content.Shared/Overlays/ThermalSightComponent.cs diff --git a/Content.Client/Atmos/Overlays/GasTileDangerousTemperatureOverlay.cs b/Content.Client/Atmos/Overlays/GasTileDangerousTemperatureOverlay.cs new file mode 100644 index 00000000000..69e251d721f --- /dev/null +++ b/Content.Client/Atmos/Overlays/GasTileDangerousTemperatureOverlay.cs @@ -0,0 +1,253 @@ +using Content.Client.Atmos.EntitySystems; +using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; +using Content.Shared.Atmos.EntitySystems; +using Robust.Client.Graphics; +using Robust.Shared.Enums; +using Robust.Shared.Map; +using Robust.Shared.Map.Components; +using System.Numerics; + +namespace Content.Client.Atmos.Overlays; + +/// +/// Renders a thermal heatmap overlay for gas tiles, used for equipment like thermal glasses. +/// /// +public sealed class GasTileDangerousTemperatureOverlay : Overlay +{ + public override bool RequestScreenTexture { get; set; } = false; + + [Dependency] private readonly IEntityManager _entManager = default!; + [Dependency] private readonly IMapManager _mapManager = default!; + [Dependency] private readonly IClyde _clyde = default!; + + private GasTileOverlaySystem? _gasTileOverlay; + private readonly SharedTransformSystem _xformSys; + private EntityQuery _overlayQuery; + + private IRenderTexture? _temperatureTarget; + + // Cache used to transform ThermalByte into Color for overlay + private readonly Color[] _colorCache = new Color[256]; + + public override OverlaySpace Space => OverlaySpace.WorldSpaceBelowFOV; + + public GasTileDangerousTemperatureOverlay() + { + IoCManager.InjectDependencies(this); + _xformSys = _entManager.System(); + + _overlayQuery = _entManager.GetEntityQuery(); + + for (byte i = 0; i <= ThermalByte.TempResolution; i++) + { + _colorCache[i] = PreCalculateColor(i); + } + + _colorCache[ThermalByte.StateVacuum] = Color.Teal; + _colorCache[ThermalByte.StateVacuum].A = 0.6f; + _colorCache[ThermalByte.AtmosImpossible] = Color.Transparent; + +#if DEBUG // This shouldn't happend so tell me if you see this LimeGreen on the screen + _colorCache[ThermalByte.ReservedFuture0] = Color.LimeGreen; + _colorCache[ThermalByte.ReservedFuture1] = Color.LimeGreen; + _colorCache[ThermalByte.ReservedFuture2] = Color.LimeGreen; +#else + _colorCache[ThermalByte.ReservedFuture0] = Color.Transparent; + _colorCache[ThermalByte.ReservedFuture1] = Color.Transparent; + _colorCache[ThermalByte.ReservedFuture2] = Color.Transparent; +#endif + } + + + /// + /// Used for Calculating onscreen color from ThermalByte core value + /// /// + private static Color PreCalculateColor(byte byteTemp) + { + // Color Thresholds in Kelvin + // -150 C + const float deepFreezeK = 123.15f; + // -50 C + const float freezeStartK = 223.15f; + // 0 C + const float waterFreezeK = 273.15f; + // 50 C + const float heatStartK = 323.15f; + // 100 C + const float waterBoilK = 373.15f; + // 300 C + const float superHeatK = 573.15f; + + var tempK = byteTemp * ThermalByte.TempDegreeResolution; + + // Neutral Zone Check (0C to 50C) + // If between 273.15K and 323.15K, it's transparent. + if (tempK >= waterFreezeK && tempK < heatStartK) + { + return Color.Transparent; + } + + Color resultingColor; + + switch (tempK) + { + case < deepFreezeK: + resultingColor = Color.FromHex("#330066"); + resultingColor.A = 0.7f; + break; + case < freezeStartK: + // Interpolate Deep Purple -> Blue + // Range: 123.15 to 223.15 (Span: 100) + resultingColor = Color.InterpolateBetween( + Color.FromHex("#330066"), + Color.Blue, + (tempK - deepFreezeK) * 0.01f); + resultingColor.A = 0.6f; + break; + case < waterFreezeK: + // Interpolate Blue -> Transparent + // Range: 223.15 to 273.15 (Span: 50) + + resultingColor = Color.InterpolateBetween( + new Color(Color.Blue.R, Color.Blue.G, Color.Blue.B, 0.6f), + new Color(Color.Blue.R, Color.Blue.G, Color.Blue.B, 0.2f), + (tempK - freezeStartK) * 0.02f); + break; + case < waterBoilK: + // Interpolate Transparent -> Yellow + // Range: 323.15 to 373.15 (Span: 50) + + resultingColor = Color.InterpolateBetween( + new Color(Color.Yellow.R, Color.Yellow.G, Color.Yellow.B, 0.2f), + new Color(Color.Yellow.R, Color.Yellow.G, Color.Yellow.B, 0.6f), + (tempK - heatStartK) * 0.02f); + break; + case < superHeatK: + // Interpolate Yellow -> Red + // Range: 373.15 to 573.15 (Span: 200) + resultingColor = Color.InterpolateBetween( + Color.Yellow, + Color.Red, + (tempK - waterBoilK) * 0.005f); + resultingColor.A = 0.6f; + break; + default: + resultingColor = Color.DarkRed; + resultingColor.A = 0.7f; + break; + } + + return resultingColor; + } + + protected override bool BeforeDraw(in OverlayDrawArgs args) + { + if (args.MapId == MapId.Nullspace) + return false; + + _gasTileOverlay ??= _entManager.System(); + if (_gasTileOverlay == null) + return false; + + var target = args.Viewport.RenderTarget; + + if (_temperatureTarget?.Texture.Size != target.Size) + { + _temperatureTarget?.Dispose(); + _temperatureTarget = _clyde.CreateRenderTarget( + target.Size, + new RenderTargetFormatParameters(RenderTargetColorFormat.Rgba8Srgb), + name: nameof(GasTileDangerousTemperatureOverlay)); + } + + var drawHandle = args.WorldHandle; + var worldBounds = args.WorldBounds; + var worldAABB = args.WorldAABB; + var mapId = args.MapId; + var worldToViewportLocal = args.Viewport.GetWorldToLocalMatrix(); + + var anyGasDrawn = false; + List> grids = new(); + + drawHandle.RenderInRenderTarget(_temperatureTarget, + () => + { + grids.Clear(); + _mapManager.FindGridsIntersecting(mapId, worldAABB, ref grids); + + foreach (var grid in grids) + { + if (!_overlayQuery.TryGetComponent(grid.Owner, out var comp)) + continue; + + var gridTileSizeVec = grid.Comp.TileSizeVector; + var gridTileCenterVec = grid.Comp.TileSizeHalfVector; + var gridEntToWorld = _xformSys.GetWorldMatrix(grid.Owner); + var gridEntToViewportLocal = gridEntToWorld * worldToViewportLocal; + + drawHandle.SetTransform(gridEntToViewportLocal); + + var worldToGridLocal = _xformSys.GetInvWorldMatrix(grid.Owner); + var floatBounds = worldToGridLocal.TransformBox(worldBounds).Enlarged(grid.Comp.TileSize); + + var localBounds = new Box2i( + (int)MathF.Floor(floatBounds.Left), + (int)MathF.Floor(floatBounds.Bottom), + (int)MathF.Ceiling(floatBounds.Right), + (int)MathF.Ceiling(floatBounds.Top)); + + foreach (var chunk in comp.Chunks.Values) + { + var enumerator = new GasChunkEnumerator(chunk); + while (enumerator.MoveNext(out var tileGas)) + { + var tilePosition = chunk.Origin + (enumerator.X, enumerator.Y); + if (!localBounds.Contains(tilePosition)) + continue; + + var gasColor = _colorCache[tileGas.ByteGasTemperature.Value]; + + if (gasColor.A <= 0f) + continue; + + anyGasDrawn = true; + + drawHandle.DrawRect( + Box2.CenteredAround(tilePosition + gridTileCenterVec, gridTileSizeVec), + gasColor + ); + } + } + } + }, + new Color(0, 0, 0, 0)); + + drawHandle.SetTransform(Matrix3x2.Identity); + + if (!anyGasDrawn) + { + _temperatureTarget?.Dispose(); + _temperatureTarget = null; + return false; + } + + return true; + } + + protected override void Draw(in OverlayDrawArgs args) + { + if (_temperatureTarget is null) + return; + + args.WorldHandle.DrawTextureRect(_temperatureTarget.Texture, args.WorldBounds); + args.WorldHandle.SetTransform(Matrix3x2.Identity); + } + + protected override void DisposeBehavior() + { + _temperatureTarget?.Dispose(); + _temperatureTarget = null; + base.DisposeBehavior(); + } +} diff --git a/Content.Client/Overlays/ThermalSightOverlaySystem.cs b/Content.Client/Overlays/ThermalSightOverlaySystem.cs new file mode 100644 index 00000000000..bd4d21d3dcc --- /dev/null +++ b/Content.Client/Overlays/ThermalSightOverlaySystem.cs @@ -0,0 +1,34 @@ +using Content.Client.Atmos.Overlays; +using Content.Shared.Inventory.Events; +using Content.Shared.Overlays; +using Robust.Client.Graphics; + +namespace Content.Client.Overlays; + +public sealed partial class ThermalSightOverlaySystem : EquipmentHudSystem +{ + [Dependency] private readonly IOverlayManager _overlayMan = default!; + + private GasTileDangerousTemperatureOverlay _temperatureOverlay = default!; + + public override void Initialize() + { + base.Initialize(); + + _temperatureOverlay = new(); + } + + protected override void UpdateInternal(RefreshEquipmentHudEvent component) + { + base.UpdateInternal(component); + + _overlayMan.AddOverlay(_temperatureOverlay); + } + + protected override void DeactivateInternal() + { + base.DeactivateInternal(); + + _overlayMan.RemoveOverlay(_temperatureOverlay); + } +} diff --git a/Content.IntegrationTests/Tests/Atmos/SharedGasTileOverlaySystemTest.cs b/Content.IntegrationTests/Tests/Atmos/SharedGasTileOverlaySystemTest.cs new file mode 100644 index 00000000000..4a8e1d1bac0 --- /dev/null +++ b/Content.IntegrationTests/Tests/Atmos/SharedGasTileOverlaySystemTest.cs @@ -0,0 +1,103 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Shared.Atmos; +using Content.Shared.Atmos.Components; +using Content.Shared.Atmos.EntitySystems; +using Robust.Shared.GameObjects; +using Robust.Shared.Map; +using Robust.Shared.Maths; +using Robust.Shared.Utility; +using System.Linq; +using System.Numerics; + +namespace Content.IntegrationTests.Tests.Atmos; + +/// +/// GasTileOverlay is being tested here +/// +public sealed class GasTileOverlayTemperatureNetworkingTest : AtmosTest +{ + protected override ResPath? TestMapPath => new("Maps/Test/Atmospherics/DeltaPressure/deltapressuretest.yml"); + + [Test] + public async Task TestGasOverlayDataSync() + { + var sMapSys = Server.System(); + + var gridComp = ProcessEnt.Comp3; + var gridNetEnt = Server.EntMan.GetNetEntity(ProcessEnt); + + var gridCoords = new EntityCoordinates(ProcessEnt, Vector2.Zero); + var tileIndices = sMapSys.TileIndicesFor(ProcessEnt, gridComp, gridCoords); + var mixture = SAtmos.GetTileMixture(ProcessEnt, null, tileIndices, true); + + // Get data for client side. + var cGridEnt = CEntMan.GetEntity(gridNetEnt); + Assert.That(CEntMan.TryGetComponent(cGridEnt, out var cOverlay), + "Client grid is missing GasTileOverlayComponent"); + + // Check if the server actually sent the gas chunks + Assert.That(cOverlay, Is.Not.Null, "Gas overlay is null on the client."); + Assert.That(cOverlay.Chunks, Is.Not.Empty, "Gas overlay chunks are empty on the client."); + + //Start real tests + await InjectHotPlasma(ProcessEnt, tileIndices, mixture, 400f); + + await CheckForInjectedGas(cOverlay, tileIndices, 400f); + + await InjectHotPlasma(ProcessEnt, tileIndices, mixture, 800f + ThermalByte.TempDegreeResolution - 1); // Rounding test + + await CheckForInjectedGas(cOverlay, tileIndices, 800f); + + await InjectHotPlasma(ProcessEnt, tileIndices, mixture, ThermalByte.TempMaximum + 200f); // This one hits max temperature + + await CheckForInjectedGas(cOverlay, tileIndices, ThermalByte.TempMaximum); + + await InjectHotPlasma(ProcessEnt, tileIndices, mixture, ThermalByte.TempMinimum); + await InjectHotPlasma(ProcessEnt, tileIndices, mixture, ThermalByte.TempMinimum + (ThermalByte.TempDegreeResolution * 2) - 1); // Test the networking optimisation, this should not be networked yet + + await CheckForInjectedGas(cOverlay, tileIndices, ThermalByte.TempMinimum); + + await InjectHotPlasma(ProcessEnt, tileIndices, mixture, ThermalByte.TempMinimum + (ThermalByte.TempDegreeResolution * 2)); // This should + + await CheckForInjectedGas(cOverlay, tileIndices, ThermalByte.TempMinimum + (ThermalByte.TempDegreeResolution * 2)); + } + + private async Task CheckForInjectedGas(GasTileOverlayComponent overlay, Vector2i indices, float expectedTemp) + { + await Client.WaitPost(() => + { + var chunkIndices = SharedGasTileOverlaySystem.GetGasChunkIndices(indices); + + Assert.That(overlay.Chunks.TryGetValue(chunkIndices, out var chunk), "Chunk not found"); + Assert.That(chunk, Is.Not.Null, "Chunk not found"); + + // Calculate the exact index in the TileData array + var localX = MathHelper.Mod(indices.X, SharedGasTileOverlaySystem.ChunkSize); + var localY = MathHelper.Mod(indices.Y, SharedGasTileOverlaySystem.ChunkSize); + int tileIndex = localX + localY * SharedGasTileOverlaySystem.ChunkSize; + + var tile = chunk.TileData[tileIndex]; + tile.ByteGasTemperature.TryGetTemperature(out var actualTemp); + + Assert.That(actualTemp, Is.EqualTo(expectedTemp).Within(0.01f), $"Tile at {indices} had wrong temperature!"); + }); + } + + private async Task InjectHotPlasma(EntityUid gridEnt, Vector2i tileIndices, GasMixture mixture, float temperature) + { + //Server makes atmos + await Server.WaitPost(() => + { + if (mixture != null) + { + mixture.Clear(); + mixture.AdjustMoles(Gas.Plasma, 100f); // Inject hot plasma + mixture.Temperature = temperature; + SAtmos.InvalidateVisuals(gridEnt, tileIndices); + } + }); + + await RunTicks(60); + await Task.WhenAll(Client.WaitIdleAsync(), Server.WaitIdleAsync()); + } +} diff --git a/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs b/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs index 4882e93d230..78ebba8e97c 100644 --- a/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs +++ b/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs @@ -1,6 +1,3 @@ -using System.Linq; -using System.Runtime.CompilerServices; -using System.Threading.Tasks; using Content.Server.Atmos.Components; using Content.Shared.Atmos; using Content.Shared.Atmos.Components; @@ -13,7 +10,6 @@ using Microsoft.Extensions.ObjectPool; using Robust.Server.Player; using Robust.Shared; -using Robust.Shared.Configuration; using Robust.Shared.Enums; using Robust.Shared.Map; using Robust.Shared.Map.Components; @@ -21,6 +17,7 @@ using Robust.Shared.Threading; using Robust.Shared.Timing; using Robust.Shared.Utility; +using System.Runtime.CompilerServices; // ReSharper disable once RedundantUsingDirective @@ -32,7 +29,6 @@ public sealed class GasTileOverlaySystem : SharedGasTileOverlaySystem [Robust.Shared.IoC.Dependency] private readonly IGameTiming _gameTiming = default!; [Robust.Shared.IoC.Dependency] private readonly IPlayerManager _playerManager = default!; [Robust.Shared.IoC.Dependency] private readonly IMapManager _mapManager = default!; - [Robust.Shared.IoC.Dependency] private readonly IConfigurationManager _confMan = default!; [Robust.Shared.IoC.Dependency] private readonly IParallelManager _parMan = default!; [Robust.Shared.IoC.Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; [Robust.Shared.IoC.Dependency] private readonly ChunkingSystem _chunkingSys = default!; @@ -85,9 +81,8 @@ public override void Initialize() }; _playerManager.PlayerStatusChanged += OnPlayerStatusChanged; - Subs.CVar(_confMan, CCVars.NetGasOverlayTickRate, UpdateTickRate, true); - Subs.CVar(_confMan, CCVars.GasOverlayThresholds, UpdateThresholds, true); - Subs.CVar(_confMan, CVars.NetPVS, OnPvsToggle, true); + + InitializeCVars(); SubscribeLocalEvent(Reset); SubscribeLocalEvent(OnStartup); @@ -175,7 +170,16 @@ private byte GetOpacity(float moles, float molesVisible, float molesVisibleMax) public GasOverlayData GetOverlayData(GasMixture? mixture) { - var data = new GasOverlayData(0, new byte[VisibleGasId.Length]); + ThermalByte byteTemp; + if (mixture == null) + { + byteTemp = new(); + byteTemp.SetVacuum(); + } + else + byteTemp = new(mixture.Temperature); + + var data = new GasOverlayData(0, new byte[VisibleGasId.Length], byteTemp); for (var i = 0; i < VisibleGasId.Length; i++) { @@ -215,15 +219,27 @@ private bool UpdateChunkTile(GridAtmosphereComponent gridAtmosphere, GasOverlayC } var changed = false; + + ThermalByte newByteTemp = new(); + + if (tile.Hotspot.Valid) + newByteTemp.SetTemperature(tile.Hotspot.Temperature); + else if (!tile.Space && tile.Air?.TotalMoles <= 5f) + newByteTemp.SetVacuum(); + else if (!tile.Space && tile.Air != null) + newByteTemp = new(tile.Air.Temperature); + if (oldData.Equals(default)) { changed = true; - oldData = new GasOverlayData(tile.Hotspot.State, new byte[VisibleGasId.Length]); + oldData = new GasOverlayData(tile.Hotspot.State, new byte[VisibleGasId.Length], newByteTemp); } - else if (oldData.FireState != tile.Hotspot.State) + else if (oldData.FireState != tile.Hotspot.State || + Math.Abs(oldData.ByteGasTemperature.Value - newByteTemp.Value) > 1 || // Dirty Temperature when there is more then 1 byte difference. That should measure up to minimum 4 degreese difference, 6 degreese on average. + (oldData.ByteGasTemperature.Value != newByteTemp.Value && newByteTemp.Value > ThermalByte.TempResolution)) // change of special ThermalByte value { changed = true; - oldData = new GasOverlayData(tile.Hotspot.State, oldData.Opacity); + oldData = new GasOverlayData(tile.Hotspot.State, oldData.Opacity, newByteTemp); } if (tile is {Air: not null, NoGridTile: false}) @@ -465,5 +481,12 @@ public void Execute(int index) } #endregion + + private void InitializeCVars() + { + Subs.CVar(ConfMan, CCVars.NetGasOverlayTickRate, UpdateTickRate, true); + Subs.CVar(ConfMan, CCVars.GasOverlayThresholds, UpdateThresholds, true); + Subs.CVar(ConfMan, CVars.NetPVS, OnPvsToggle, true); + } } } diff --git a/Content.Shared/Atmos/EntitySystems/SharedGasTileOverlaySystem.cs b/Content.Shared/Atmos/EntitySystems/SharedGasTileOverlaySystem.cs index d831616355b..23ea8fa8fa7 100644 --- a/Content.Shared/Atmos/EntitySystems/SharedGasTileOverlaySystem.cs +++ b/Content.Shared/Atmos/EntitySystems/SharedGasTileOverlaySystem.cs @@ -1,114 +1,257 @@ using Content.Shared.Atmos.Components; -using Content.Shared.Atmos.Prototypes; +using Robust.Shared.Configuration; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; -namespace Content.Shared.Atmos.EntitySystems +namespace Content.Shared.Atmos.EntitySystems; + +public abstract class SharedGasTileOverlaySystem : EntitySystem { - public abstract class SharedGasTileOverlaySystem : EntitySystem + public const byte ChunkSize = 8; + protected float AccumulatedFrameTime; + protected bool PvsEnabled; + + [Dependency] protected readonly IPrototypeManager ProtoMan = default!; + [Dependency] protected readonly IConfigurationManager ConfMan = default!; + [Dependency] private readonly SharedAtmosphereSystem _atmosphere = default!; + + /// + /// array of the ids of all visible gases. + /// + public int[] VisibleGasId = default!; + + public override void Initialize() { - public const byte ChunkSize = 8; - protected float AccumulatedFrameTime; - protected bool PvsEnabled; + base.Initialize(); + SubscribeLocalEvent(OnGetState); - [Dependency] protected readonly IPrototypeManager ProtoMan = default!; - [Dependency] private readonly SharedAtmosphereSystem _atmosphere = default!; + List visibleGases = new(); - /// - /// array of the ids of all visible gases. - /// - public int[] VisibleGasId = default!; + for (var i = 0; i < Atmospherics.TotalNumberOfGases; i++) + { + var gasPrototype = _atmosphere.GetGas(i); + if (!string.IsNullOrEmpty(gasPrototype.GasOverlayTexture) || + (!string.IsNullOrEmpty(gasPrototype.GasOverlaySprite) && !string.IsNullOrEmpty(gasPrototype.GasOverlayState))) + visibleGases.Add(i); + } + VisibleGasId = visibleGases.ToArray(); + } + + private void OnGetState(EntityUid uid, GasTileOverlayComponent component, ref ComponentGetState args) + { + if (PvsEnabled && !args.ReplayState) + return; - public override void Initialize() + // Should this be a full component state or a delta-state? + if (args.FromTick <= component.CreationTick || args.FromTick <= component.ForceTick) { - base.Initialize(); - SubscribeLocalEvent(OnGetState); + args.State = new GasTileOverlayState(component.Chunks); + return; + } - List visibleGases = new(); + var data = new Dictionary(); + foreach (var (index, chunk) in component.Chunks) + { + if (chunk.LastUpdate >= args.FromTick) + data[index] = chunk; + } - for (var i = 0; i < Atmospherics.TotalNumberOfGases; i++) - { - var gasPrototype = _atmosphere.GetGas(i); - if (!string.IsNullOrEmpty(gasPrototype.GasOverlayTexture) || !string.IsNullOrEmpty(gasPrototype.GasOverlaySprite) && !string.IsNullOrEmpty(gasPrototype.GasOverlayState)) - visibleGases.Add(i); - } + args.State = new GasTileOverlayDeltaState(data, new(component.Chunks.Keys)); + } + + public static Vector2i GetGasChunkIndices(Vector2i indices) + { + return new Vector2i((int)MathF.Floor((float)indices.X / ChunkSize), (int)MathF.Floor((float)indices.Y / ChunkSize)); + } - VisibleGasId = visibleGases.ToArray(); + [Serializable, NetSerializable] + public readonly struct GasOverlayData : IEquatable + { + [ViewVariables] public readonly byte FireState; + [ViewVariables] public readonly byte[] Opacity; + // TODO change fire color based on ByteTemp + + /// + /// Network-synced air temperature, compressed to a single byte per tile for bandwidth optimization. + /// Note: Values are approximate and may deviate even ~10°C from the precise server side only temperature. + /// + [ViewVariables] + public readonly ThermalByte ByteGasTemperature; + + + public GasOverlayData(byte fireState, byte[] opacity, ThermalByte byteTemp) + { + FireState = fireState; + Opacity = opacity; + ByteGasTemperature = byteTemp; } - private void OnGetState(EntityUid uid, GasTileOverlayComponent component, ref ComponentGetState args) + public bool Equals(GasOverlayData other) { - if (PvsEnabled && !args.ReplayState) - return; + if (FireState != other.FireState) + return false; - // Should this be a full component state or a delta-state? - if (args.FromTick <= component.CreationTick || args.FromTick <= component.ForceTick) - { - args.State = new GasTileOverlayState(component.Chunks); - return; - } + if (Opacity?.Length != other.Opacity?.Length) + return false; - var data = new Dictionary(); - foreach (var (index, chunk) in component.Chunks) + if (Opacity != null && other.Opacity != null) { - if (chunk.LastUpdate >= args.FromTick) - data[index] = chunk; + for (var i = 0; i < Opacity.Length; i++) + { + if (Opacity[i] != other.Opacity[i]) + return false; + } } - args.State = new GasTileOverlayDeltaState(data, new(component.Chunks.Keys)); - } + if (ByteGasTemperature != other.ByteGasTemperature) + return false; - public static Vector2i GetGasChunkIndices(Vector2i indices) - { - return new((int) MathF.Floor((float) indices.X / ChunkSize), (int) MathF.Floor((float) indices.Y / ChunkSize)); + return true; } + } - [Serializable, NetSerializable] - public readonly struct GasOverlayData : IEquatable - { - [ViewVariables] - public readonly byte FireState; + [Serializable, NetSerializable] + public sealed class GasOverlayUpdateEvent : EntityEventArgs + { + public Dictionary> UpdatedChunks = new(); + public Dictionary> RemovedChunks = new(); + } +} + +/// +/// Struct for networking gas temperatures to all clients using a single struct(byte) per tile. +/// +/// +/// +/// This struct compresses the gas temperature into a 1-byte value (0-255). +/// It clamps the temperature to a maximum of 1000K and divides it by 4, creating a range of 0-250. +/// This provides a resolution of 4 degrees Kelvin. +/// +/// +/// The remaining bytes are used as special flags: +/// +/// 255: Represents a Wall (block cannot hold atmosphere). +/// 254: Represents a Vacuum. +/// 251-253: Reserved for future use. +/// +/// +/// +/// Dirtying Logic: The value is only dirtied and networked if the difference between the +/// networked byte and the real atmosphere byte is greater than 1. This prevents network spam +/// from minor temperature fluctuations (e.g., heating from 1K to 8K will not trigger an update, +/// but hitting 9K moves the byte index enough to sync). +/// +/// +/// Currently, the conversion is linear. Future improvements might involve a quadratic scale +/// or pre-defined resolution points to offer higher precision at room temperatures +/// and lower precision at extreme temperatures (1000K). +/// +/// +[Serializable, NetSerializable] +public struct ThermalByte : IEquatable +{ + public const float TempMinimum = 0f; + public const float TempMaximum = 1000f; + public const int TempResolution = 250; - [ViewVariables] - public readonly byte[] Opacity; + public const byte ReservedFuture0 = 251; + public const byte ReservedFuture1 = 252; + public const byte ReservedFuture2 = 253; + public const byte StateVacuum = 254; + public const byte AtmosImpossible = 255; - // TODO change fire color based on temps - // But also: dont dirty on a 0.01 kelvin change in temperatures. - // Either have a temp tolerance, or map temperature -> byte levels + public const float TempDegreeResolution = (TempMaximum - TempMinimum) / TempResolution; + public const float TempToByteFactor = TempResolution / (TempMaximum - TempMinimum); - public GasOverlayData(byte fireState, byte[] opacity) - { - FireState = fireState; - Opacity = opacity; - } + private byte _coreValue; - public bool Equals(GasOverlayData other) - { - if (FireState != other.FireState) - return false; + public ThermalByte(float temperatureKelvin) + { + SetTemperature(temperatureKelvin); + } - if (Opacity?.Length != other.Opacity?.Length) - return false; + public ThermalByte() + { + _coreValue = AtmosImpossible; + } - if (Opacity != null && other.Opacity != null) - { - for (var i = 0; i < Opacity.Length; i++) - { - if (Opacity[i] != other.Opacity[i]) - return false; - } - } + /// + /// Set temperature of air in this in Kelvin. + /// + public void SetTemperature(float temperatureKelvin) + { + var clampedTemp = Math.Clamp(temperatureKelvin, TempMinimum, TempMaximum); + _coreValue = (byte)((clampedTemp - TempMinimum) * TempResolution / (TempMaximum - TempMinimum)); + } - return true; - } - } + public void SetAtmosIsImpossible() + { + _coreValue = AtmosImpossible; + } + + public void SetVacuum() + { + _coreValue = StateVacuum; + } - [Serializable, NetSerializable] - public sealed class GasOverlayUpdateEvent : EntityEventArgs + public bool IsAtmosImpossible => _coreValue == AtmosImpossible; // Cold space, solid walls + public bool IsVacuum => _coreValue == StateVacuum; + public byte Value => _coreValue; + + /// + /// Attempts to get the air temperature in Kelvin. + /// + /// The temperature in Kelvin, if the tile has a valid temperature. + /// + /// If true and the tile is a vacuum, will be set to + /// and the method will return . + /// + /// + /// if the tile contains a valid temperature (including vacuum if is set); + /// otherwise (e.g., walls). + /// + public readonly bool TryGetTemperature(out float temperature, bool onVacuumReturnTcmb = true) + { + switch (_coreValue) { - public Dictionary> UpdatedChunks = new(); - public Dictionary> RemovedChunks = new(); + case AtmosImpossible: + temperature = 0f; + return false; + case StateVacuum when onVacuumReturnTcmb: + temperature = Atmospherics.TCMB; + return true; + case StateVacuum: + temperature = 0f; + return false; + default: + temperature = (_coreValue * TempDegreeResolution) + TempMinimum; + return true; } } + + public bool Equals(ThermalByte other) + { + return _coreValue == other._coreValue; + } + + public static bool operator ==(ThermalByte left, ThermalByte right) + { + return left.Equals(right); + } + + public static bool operator !=(ThermalByte left, ThermalByte right) + { + return !left.Equals(right); + } + + public override bool Equals(object? obj) + { + return obj is ThermalByte other && Equals(other); + } + + public override int GetHashCode() + { + return _coreValue.GetHashCode(); + } } diff --git a/Content.Shared/CCVar/CCVars.Net.cs b/Content.Shared/CCVar/CCVars.Net.cs index b7465def2eb..8cd8857d96e 100644 --- a/Content.Shared/CCVar/CCVars.Net.cs +++ b/Content.Shared/CCVar/CCVars.Net.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Configuration; +using Robust.Shared.Configuration; namespace Content.Shared.CCVar; diff --git a/Content.Shared/Inventory/InventorySystem.Relay.cs b/Content.Shared/Inventory/InventorySystem.Relay.cs index 280a99cd326..ce8a6b1f508 100644 --- a/Content.Shared/Inventory/InventorySystem.Relay.cs +++ b/Content.Shared/Inventory/InventorySystem.Relay.cs @@ -95,6 +95,7 @@ public void InitializeRelay() SubscribeLocalEvent>(RefRelayInventoryEvent); SubscribeLocalEvent>(RefRelayInventoryEvent); SubscribeLocalEvent>(RefRelayInventoryEvent); + SubscribeLocalEvent>(RefRelayInventoryEvent); SubscribeLocalEvent>(OnGetEquipmentVerbs); SubscribeLocalEvent>(OnGetInnateVerbs); diff --git a/Content.Shared/Overlays/ThermalSightComponent.cs b/Content.Shared/Overlays/ThermalSightComponent.cs new file mode 100644 index 00000000000..df199728dcb --- /dev/null +++ b/Content.Shared/Overlays/ThermalSightComponent.cs @@ -0,0 +1,10 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Overlays; + +/// +/// Makes the entity see air temperature. +/// When added to a clothing item it will also grant the wearer the same overlay. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class ThermalSightComponent : Component; diff --git a/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml b/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml index aa0aa8a083b..ccb5777b2d8 100644 --- a/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml +++ b/Resources/Prototypes/Entities/Clothing/Eyes/glasses.yml @@ -249,6 +249,7 @@ - type: GroupExamine - type: IdentityBlocker coverage: EYES + - type: ThermalSight - type: entity parent: ClothingEyesBase From aa7eca9e8cde52610eb2d793def4ea70833169df Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 6 Feb 2026 10:45:29 +0000 Subject: [PATCH 258/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 72e92b303fa..21a1bb4aeb1 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Kittygyat - changes: - - message: Tarantulas and other spider mobs can now pull objects. - type: Add - id: 8986 - time: '2025-09-18T19:59:29.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40433 - author: 2DSiggy changes: - message: Thief can now be tasked with stealing Secoff/detective handguns, Captain's @@ -4001,3 +3994,12 @@ id: 9492 time: '2026-02-05T08:34:11.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42801 +- author: insoPL, ArtisticRoomba + changes: + - message: Added functionality to the Optical Thermal Scanner. The eyewear will + now overlay tiles with a solid color corresponding to its temperature if it's + not room temperature, as well as if a tile is pure vacuum. + type: Add + id: 9493 + time: '2026-02-06T10:44:18.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42613 From 91b518ac05e702d27d841e1ca4c98fedb85a978f Mon Sep 17 00:00:00 2001 From: InsoPL Date: Fri, 6 Feb 2026 18:43:51 +0100 Subject: [PATCH 259/603] Add opticial thermal scanners to engivend (#42813) yeah --- .../Prototypes/Catalog/VendingMachines/Inventories/engivend.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/engivend.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/engivend.yml index a558f646cab..17f3f553be7 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/engivend.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/engivend.yml @@ -2,6 +2,7 @@ id: EngiVendInventory startingInventory: ClothingEyesGlassesMeson: 4 + ClothingEyesGlassesThermal: 4 ClothingEyesHudDiagnostic: 4 ClothingHeadHatWelding: 6 CrowbarYellow: 8 From cfb59ef20e488582157c7b0e722e85f8874cb4be Mon Sep 17 00:00:00 2001 From: John <50085876+AreYouConfused@users.noreply.github.com> Date: Fri, 6 Feb 2026 16:03:59 -0500 Subject: [PATCH 260/603] fixed vox tail marking and suitslot layer order (#42808) * fixed vox tail marking and suitslot layer order * explained marking * now it's hideable * Revert "now it's hideable" This reverts commit ab799b088739b3d986a5158f51b44f9c770e6e3e. * re-order one more time for correct parity with the previous system --- Content.Shared/Humanoid/HumanoidVisualLayers.cs | 1 + Resources/Locale/en-US/preferences/ui/markings-picker.ftl | 2 ++ Resources/Prototypes/Body/Species/vox.yml | 3 +++ Resources/Prototypes/Body/base_organs.yml | 1 + Resources/Prototypes/Body/species_appearance.yml | 2 ++ .../Entities/Mobs/Customization/Markings/vox_tattoos.yml | 2 +- 6 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Content.Shared/Humanoid/HumanoidVisualLayers.cs b/Content.Shared/Humanoid/HumanoidVisualLayers.cs index c041f75d81c..885f541f702 100644 --- a/Content.Shared/Humanoid/HumanoidVisualLayers.cs +++ b/Content.Shared/Humanoid/HumanoidVisualLayers.cs @@ -8,6 +8,7 @@ public enum HumanoidVisualLayers : byte { Special, // for the cat ears Tail, + TailOverlay, // markings that go ontop of tails Hair, FacialHair, UndergarmentTop, diff --git a/Resources/Locale/en-US/preferences/ui/markings-picker.ftl b/Resources/Locale/en-US/preferences/ui/markings-picker.ftl index 676c17a908c..055c48b5d9f 100644 --- a/Resources/Locale/en-US/preferences/ui/markings-picker.ftl +++ b/Resources/Locale/en-US/preferences/ui/markings-picker.ftl @@ -63,3 +63,5 @@ markings-layer-LLeg = Left Leg markings-layer-RFoot = Right Foot markings-layer-LFoot = Left Foot markings-layer-Overlay = Overlay +markings-layer-TailOverlay = Overlay + diff --git a/Resources/Prototypes/Body/Species/vox.yml b/Resources/Prototypes/Body/Species/vox.yml index cfbd77d5084..08cf79685f4 100644 --- a/Resources/Prototypes/Body/Species/vox.yml +++ b/Resources/Prototypes/Body/Species/vox.yml @@ -59,6 +59,9 @@ limit: 1 required: true default: [ VoxTail ] + enum.HumanoidVisualLayers.TailOverlay: + limit: 1 + required: false enum.HumanoidVisualLayers.UndergarmentTop: limit: 1 required: false diff --git a/Resources/Prototypes/Body/base_organs.yml b/Resources/Prototypes/Body/base_organs.yml index 5b64276d030..0cfaf8b4ac4 100644 --- a/Resources/Prototypes/Body/base_organs.yml +++ b/Resources/Prototypes/Body/base_organs.yml @@ -42,6 +42,7 @@ - Chest - Tail - Overlay + - TailOverlay - UndergarmentTop - UndergarmentBottom - Special diff --git a/Resources/Prototypes/Body/species_appearance.yml b/Resources/Prototypes/Body/species_appearance.yml index aa584a5e0c7..44369b15489 100644 --- a/Resources/Prototypes/Body/species_appearance.yml +++ b/Resources/Prototypes/Body/species_appearance.yml @@ -42,6 +42,7 @@ - map: [ "outerClothing" ] - map: [ "back" ] - map: [ "neck" ] + - map: [ "suitstorage" ] # Stuff that goes in front of equipment - map: [ "enum.HumanoidVisualLayers.SnoutCover" ] @@ -50,6 +51,7 @@ - map: [ "enum.HumanoidVisualLayers.HeadSide" ] - map: [ "enum.HumanoidVisualLayers.HeadTop" ] - map: [ "enum.HumanoidVisualLayers.Tail" ] + - map: [ "enum.HumanoidVisualLayers.TailOverlay" ] # Stuff that goes in front of stuff that goes in front of equipment - map: [ "mask" ] diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_tattoos.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_tattoos.yml index c1112ebaea6..a4ddbfcd79d 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_tattoos.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_tattoos.yml @@ -94,7 +94,7 @@ - type: marking id: TattooVoxTailRing # TODO // Looks off on some tails (i.e docked/amputated), if conditionals for markings ever get implemented this needs to be updated to account for those. - bodyPart: Tail + bodyPart: TailOverlay groupWhitelist: [Vox] coloring: default: From 4c62ce20255b3252dc52ad9c1e613581b5db5204 Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 6 Feb 2026 21:19:31 +0000 Subject: [PATCH 261/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 21a1bb4aeb1..baac6d5337e 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,15 +1,4 @@ Entries: -- author: 2DSiggy - changes: - - message: Thief can now be tasked with stealing Secoff/detective handguns, Captain's - sabre, and the CE's toolbelt. - type: Add - - message: Heavily reduced the likelihood of the LAMP objective for thief moths - and reduced the chance of beer goggles appearing as an objective. - type: Tweak - id: 8987 - time: '2025-09-18T20:09:45.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39867 - author: IProduceWidgets changes: - message: The Experimental Lecter 8 (XL8) has been added as an admin event weapon @@ -4003,3 +3992,11 @@ id: 9493 time: '2026-02-06T10:44:18.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42613 +- author: AreYouConfused + changes: + - message: Vox's tail rings no longer replace the vox's tail and now correctly layer + ontop of the tail. + type: Fix + id: 9494 + time: '2026-02-06T21:18:22.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42808 From bb8ce2962af106b40374e845b5e670a5b38e2964 Mon Sep 17 00:00:00 2001 From: Rachel Lowe <60523642+11BelowStudio@users.noreply.github.com> Date: Sat, 7 Feb 2026 01:32:05 +0000 Subject: [PATCH 262/603] Chaplains can now choose a custom name (#42819) --- Resources/Prototypes/Loadouts/RoleLoadouts/role_loadouts.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/Loadouts/RoleLoadouts/role_loadouts.yml b/Resources/Prototypes/Loadouts/RoleLoadouts/role_loadouts.yml index 84eec9f7cb4..8e95340bacb 100644 --- a/Resources/Prototypes/Loadouts/RoleLoadouts/role_loadouts.yml +++ b/Resources/Prototypes/Loadouts/RoleLoadouts/role_loadouts.yml @@ -124,6 +124,7 @@ - type: roleLoadout id: JobChaplain + canCustomizeName: true groups: - GroupTankHarness - ChaplainHead From e627ba3fe758196f0e37bbb8f4332d6e7391690e Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 7 Feb 2026 01:48:01 +0000 Subject: [PATCH 263/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index baac6d5337e..06c79a57aab 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: IProduceWidgets - changes: - - message: The Experimental Lecter 8 (XL8) has been added as an admin event weapon - for roles such as ERT. - type: Add - id: 8988 - time: '2025-09-19T19:30:08.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40372 - author: Absotively changes: - message: Air alarms will not replace the number you're currently typing @@ -4000,3 +3992,10 @@ id: 9494 time: '2026-02-06T21:18:22.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42808 +- author: 11BelowStudio + changes: + - message: Chaplains can now choose a custom name. Hallelujah! + type: Add + id: 9495 + time: '2026-02-07T01:46:53.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42819 From 01039a81f0fc2ad770a03549bc857efe1413db43 Mon Sep 17 00:00:00 2001 From: Velken <8467292+Velken@users.noreply.github.com> Date: Sat, 7 Feb 2026 03:46:31 -0300 Subject: [PATCH 264/603] Defrost Plasma (#42822) defrost plasma --- Resources/Maps/plasma.yml | 1735 +++++++++++++++---------------------- 1 file changed, 714 insertions(+), 1021 deletions(-) diff --git a/Resources/Maps/plasma.yml b/Resources/Maps/plasma.yml index 46a6b71104a..82d02ef430d 100644 --- a/Resources/Maps/plasma.yml +++ b/Resources/Maps/plasma.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 270.0.0 + engineVersion: 272.0.0 forkId: "" forkVersion: "" - time: 12/28/2025 21:35:23 - entityCount: 26487 + time: 02/07/2026 03:19:06 + entityCount: 26504 maps: - 1 grids: @@ -90,15 +90,15 @@ entities: chunks: -10,-4: ind: -10,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAwADAAAAAAEAAwAAAAACAAMAAAAAAgADAAAAAAIAAwAAAAABAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAACAAMAAAAAAQADAAAAAAIAAwAAAAADAAMAAAAAAgADAAAAAAIAAwAAAAABAA== version: 7 -1,0: ind: -1,0 - tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAEAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAGAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAIACoAAAAAAAAqAAAAAAAAKgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAAAqAAAAAAoAKgAAAAAFACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAkAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAACACoAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAABwAHAAAAAAIABwAAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAAcAAAAAAAAHAAAAAAcABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAABwAAAAAGAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAABgAHAAAAAAAABwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAwABwAAAAADAAcAAAAABwAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAACQABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== version: 7 -1,-1: ind: -1,-1 - tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAwAEAAAAAAAABAAAAAAAAAQAAAAAAwAEAAAAAAMABAAAAAABAAQAAAAAAAAEAAAAAAMABAAAAAADAAQAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAQAAAAAAgAEAAAAAAEABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAACAAQAAAAAAgAEAAAAAAAABAAAAAABAAQAAAAAAgAEAAAAAAMAgwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAAEAAAAAAIABAAAAAABAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAMABAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAABAAQAAAAAAwAEAAAAAAMABAAAAAAAAAQAAAAAAwAEAAAAAAIABAAAAAACAAQAAAAAAQCDAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAQAEAAAAAAIABAAAAAABAAQAAAAAAwAEAAAAAAIABAAAAAABAAQAAAAAAAAEAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAMABAAAAAABAAQAAAAAAgAEAAAAAAEABAAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAADAAQAAAAAAwAEAAAAAAEABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAwAEAAAAAAMABAAAAAADAAQAAAAAAwAEAAAAAAEAgwAAAAAAAAQAAAAAAgAEAAAAAAAABAAAAAADAAQAAAAAAwAEAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAAAEAAAAAAEABAAAAAABAAQAAAAAAgAEAAAAAAEABAAAAAAAAAQAAAAAAgAEAAAAAAAABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAABAAQAAAAAAgCDAAAAAAAABAAAAAADAAQAAAAAAwAEAAAAAAIABAAAAAAAAAQAAAAAAwCDAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAGACoAAAAAAAAqAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAADAAqAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAEAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAACgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAA== + tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAADAAQAAAAAAQAEAAAAAAIABAAAAAABAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAgAEAAAAAAEABAAAAAADAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAQAAAAAAgAEAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAEABAAAAAADAAQAAAAAAAAEAAAAAAEABAAAAAADAAQAAAAAAAAEAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAAEAAAAAAEABAAAAAACAAQAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAAABAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAEABAAAAAAAAAQAAAAAAwAEAAAAAAIABAAAAAABAAQAAAAAAwAEAAAAAAIABAAAAAACAAQAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAMABAAAAAACAAQAAAAAAQAEAAAAAAMABAAAAAADAAQAAAAAAQAEAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAABAAQAAAAAAQAEAAAAAAAABAAAAAADAAQAAAAAAAAEAAAAAAMABAAAAAACAAQAAAAAAAAEAAAAAAMABAAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAADAAQAAAAAAwAEAAAAAAEAgwAAAAAAAAQAAAAAAAAEAAAAAAMABAAAAAADAAQAAAAAAwAEAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAADAAQAAAAAAQAEAAAAAAMABAAAAAACAAQAAAAAAwAEAAAAAAIABAAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAAAEAAAAAAMABAAAAAABAAQAAAAAAwCDAAAAAAAABAAAAAADAAQAAAAAAAAEAAAAAAMABAAAAAAAAAQAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAKAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAA== version: 7 0,-2: ind: 0,-2 @@ -110,207 +110,207 @@ entities: version: 7 -5,-5: ind: -5,-5 - tiles: KgAAAAAAACoAAAAAAAAqAAAAAAEAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAACgAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAEAKgAAAAAJACoAAAAAAAAqAAAAAAAAKgAAAAAKACoAAAAACAAqAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAEAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAALACoAAAAAAACDAAAAAAAAKgAAAAAKACoAAAAAAAAqAAAAAAAAKgAAAAAMACoAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAUAKgAAAAAKACoAAAAAAAAqAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAHACoAAAAABgAqAAAAAAkAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAHAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAACgAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAACQCDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAABQAqAAAAAAAAKgAAAAADACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAsAKgAAAAAIACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAABQAqAAAAAAQAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAFACoAAAAAAAAqAAAAAAoAKgAAAAAGACoAAAAAAAAqAAAAAAIAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAQAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAADACoAAAAAAAAqAAAAAAsAKgAAAAAFAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAACwAqAAAAAAAAKgAAAAADACoAAAAACQAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAIAKgAAAAABACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAACgAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAkAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAQAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAkAKgAAAAADACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAFACoAAAAACAAqAAAAAAAAKgAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAoAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== + tiles: BwAAAAAKAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAACAAHAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAEABwAAAAAMAAcAAAAAAAAHAAAAAAEAgwAAAAAAAAcAAAAABQAHAAAAAAAABwAAAAAKAAcAAAAABQAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAAAHAAAAAAUABwAAAAACAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAIAAcAAAAAAAAHAAAAAAMABwAAAAAAAAcAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAJAAcAAAAABQAHAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAQABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAEABwAAAAAHAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAABAAHAAAAAAAABwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAABAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAMABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAFAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAHAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAACwAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAFAAcAAAAAAAAHAAAAAAwABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAEAAcAAAAAAAAHAAAAAAEABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAKAAcAAAAAAAAHAAAAAAUABwAAAAACAAcAAAAAAgAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAHAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAABgAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAADAAcAAAAAAwAHAAAAAAAABwAAAAAFAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABwAAAAAEAAcAAAAAAAAHAAAAAAAABwAAAAAEAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== version: 7 -2,-1: ind: -2,-1 - tiles: KgAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAACACoAAAAACAAqAAAAAAAAKgAAAAAGACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAAABAAAAAADAAQAAAAAAgAEAAAAAAIABAAAAAADACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAAsAAAAAAAAEAAAAAAMABAAAAAACAAQAAAAAAQAEAAAAAAIABAAAAAABAAQAAAAAAgAEAAAAAAMABAAAAAABACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAALAAAAAAAAKgAAAAAAAAQAAAAAAwAEAAAAAAAABAAAAAADAAQAAAAAAgAEAAAAAAIAKgAAAAAAACoAAAAAAAApAAAAAAAAKQAAAAAAACoAAAAAAAAqAAAAAAIAKgAAAAAAACoAAAAAAAAqAAAAAAAACwAAAAAAACoAAAAAAAAEAAAAAAMABAAAAAABAAQAAAAAAgAqAAAAAAEAKgAAAAAAACoAAAAAAACDAAAAAAAABAAAAAADACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAEAKgAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAABQApAAAAAAAAKgAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAACAAQAAAAAAQAEAAAAAAIABAAAAAABAAQAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKQAAAAAAACkAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAMABAAAAAAAAAQAAAAAAQAEAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACkAAAAAAAAqAAAAAAAAgwAAAAAAAAQAAAAAAwAEAAAAAAAABAAAAAACAAQAAAAAAQAEAAAAAAMABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAApAAAAAAAAKgAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAACAAQAAAAAAwAEAAAAAAIABAAAAAABAAQAAAAAAQAEAAAAAAEABAAAAAADAAQAAAAAAwAEAAAAAAMAgwAAAAAAAAMAAAAAAgAqAAAAAAAAKQAAAAAAACoAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAwAEAAAAAAEABAAAAAACAAQAAAAAAwAEAAAAAAMABAAAAAACAAQAAAAAAQAEAAAAAAEABAAAAAACAIMAAAAAAACDAAAAAAAAKgAAAAAAACkAAAAAAAAqAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAABAAQAAAAAAQAEAAAAAAEABAAAAAABAAQAAAAAAAAEAAAAAAMABAAAAAADAAQAAAAAAwCDAAAAAAAAgwAAAAAAACoAAAAABQApAAAAAAAAKgAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAgAEAAAAAAIABAAAAAABAAQAAAAAAgCDAAAAAAAABAAAAAADAAQAAAAAAAAEAAAAAAMAgwAAAAAAAIMAAAAAAAAqAAAAAAMAKQAAAAAAACoAAAAAAAAEAAAAAAAABAAAAAADAAQAAAAAAgAEAAAAAAMABAAAAAABAAQAAAAAAQAEAAAAAAAABAAAAAABAAQAAAAAAgAEAAAAAAMABAAAAAABAAQAAAAAAwCDAAAAAAAAKgAAAAAGACkAAAAAAAAqAAAAAAAAgwAAAAAAAAQAAAAAAwAEAAAAAAAABAAAAAACAAQAAAAAAgAEAAAAAAAABAAAAAACAIMAAAAAAAADAAAAAAIAAwAAAAADAAMAAAAAAQCDAAAAAAAAgwAAAAAAACoAAAAAAAApAAAAAAAAKgAAAAAIAIMAAAAAAAADAAAAAAIAAwAAAAADAAMAAAAAAAADAAAAAAMAAwAAAAABAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== + tiles: BwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAMABwAAAAAAAAcAAAAAAAAHAAAAAAUABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAkABwAAAAAAAAsAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAALAAAAAAAABwAAAAAMAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAABwAAAAAAAAcAAAAAAAACAAAAAAAAAgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAACwAAAAAAAAcAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAHAAAAAAUABwAAAAAAAAcAAAAAAACDAAAAAAAABAAAAAACAAcAAAAABAAHAAAAAAAABwAAAAAHAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAACAACAAAAAAAABwAAAAAAAIMAAAAAAAAEAAAAAAEABAAAAAABAAQAAAAAAgAEAAAAAAAABAAAAAACAAQAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAAgAAAAAAAAIAAAAAAAAEAAAAAAIABAAAAAACAAQAAAAAAAAEAAAAAAIABAAAAAACAAQAAAAAAQAEAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAIAAAAAAAAHAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAEABAAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAACQACAAAAAAAABwAAAAAMAIMAAAAAAAAEAAAAAAEABAAAAAACAAQAAAAAAQAEAAAAAAIABAAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAACAAQAAAAAAgAEAAAAAAMAgwAAAAAAAAMAAAAAAwAHAAAAAAAAAgAAAAAAAAcAAAAAAACDAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAADAAQAAAAAAwAEAAAAAAIABAAAAAADAAQAAAAAAAAEAAAAAAAABAAAAAACAIMAAAAAAACDAAAAAAAABwAAAAAKAAIAAAAAAAAHAAAAAAUAgwAAAAAAAAQAAAAAAgAEAAAAAAIABAAAAAAAAAQAAAAAAAAEAAAAAAMABAAAAAAAAAQAAAAAAwAEAAAAAAAABAAAAAADAAQAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAQACAAAAAAAABwAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAAAEAAAAAAMABAAAAAAAAAQAAAAAAQCDAAAAAAAABAAAAAABAAQAAAAAAQAEAAAAAAEAgwAAAAAAAIMAAAAAAAAHAAAAAAsAAgAAAAAAAAcAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAwAEAAAAAAMABAAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAwAEAAAAAAMABAAAAAACAAQAAAAAAgCDAAAAAAAABwAAAAAAAAIAAAAAAAAHAAAAAAAAgwAAAAAAAAQAAAAAAwAEAAAAAAMABAAAAAADAAQAAAAAAAAEAAAAAAEABAAAAAACAIMAAAAAAAADAAAAAAMAAwAAAAABAAMAAAAAAgCDAAAAAAAAgwAAAAAAAAcAAAAAAAACAAAAAAAABwAAAAAAAIMAAAAAAAADAAAAAAIAAwAAAAADAAMAAAAAAgADAAAAAAAAAwAAAAACAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== version: 7 -3,0: ind: -3,0 - tiles: gwAAAAAAAAUAAAAAAwAFAAAAAAMABQAAAAABAAUAAAAAAQAFAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAQAFAAAAAAIABQAAAAAAAAUAAAAAAgAFAAAAAAIABQAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABQAAAAADAAUAAAAAAgAFAAAAAAAABQAAAAADAAUAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAkAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAJAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAAAACgAqAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAMABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAADAAQAAAAAAgAEAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAwAEAAAAAAEABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAABAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAKgAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAACAAQAAAAAAwAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAACoAAAAAAACDAAAAAAAABAAAAAADAAQAAAAAAgAEAAAAAAAABAAAAAAAAA== + tiles: gwAAAAAAAAUAAAAAAgAFAAAAAAAABQAAAAACAAUAAAAAAAAFAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAwAFAAAAAAMABQAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAwAFAAAAAAAABQAAAAAAAAUAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAIABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAKAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAABwAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAoABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAACAAQAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAMABAAAAAACAAQAAAAAAgAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAAABAAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAAAEAAAAAAEABAAAAAADAAQAAAAAAgAEAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAcAAAAAAQCDAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAAAAA== version: 7 -3,-1: ind: -3,-1 - tiles: KgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAQAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAACAAsAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAAqAAAAAAAAKgAAAAAIACoAAAAAAAAqAAAAAAEAKgAAAAADACoAAAAAAAAEAAAAAAMABAAAAAADAAQAAAAAAQAEAAAAAAIABAAAAAADAAQAAAAAAQALAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAAEAAAAAAMABAAAAAABAAQAAAAAAAAEAAAAAAMABAAAAAADAAQAAAAAAgAEAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAACoAAAAAAAAqAAAAAAYAKgAAAAAAACoAAAAAAAApAAAAAAAAKQAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAAAqAAAAAAMAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAACwAqAAAAAAAAgwAAAAAAAAMAAAAAAgCDAAAAAAAAKgAAAAAAACkAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAQAEAAAAAAAABAAAAAABAAQAAAAAAQADAAAAAAAAAwAAAAAAAIMAAAAAAAAFAAAAAAIABQAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAIABAAAAAADAAQAAAAAAgAEAAAAAAMAAwAAAAAAAAMAAAAAAQCDAAAAAAAAgwAAAAAAAAMAAAAAAwCDAAAAAAAAAwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABAAQAAAAAAgAEAAAAAAEABAAAAAAAAAMAAAAAAgADAAAAAAIAgwAAAAAAAAUAAAAAAQAFAAAAAAIABQAAAAADAAUAAAAAAwAFAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAwAEAAAAAAMABAAAAAABAAQAAAAAAwAEAAAAAAAABAAAAAABAAMAAAAAAwAFAAAAAAIABQAAAAACAAUAAAAAAQAFAAAAAAEABQAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAwADAAAAAAIABAAAAAACAAQAAAAAAQAEAAAAAAAABAAAAAADAAQAAAAAAACDAAAAAAAABQAAAAABAAUAAAAAAQAFAAAAAAAABQAAAAADAAUAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAQAAAAAAwAEAAAAAAEABAAAAAAAAAQAAAAAAAAEAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAwAEAAAAAAEABAAAAAAAAAQAAAAAAgADAAAAAAAAAwAAAAABAIMAAAAAAAAGAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAMABAAAAAAAAAQAAAAAAAAEAAAAAAMAAwAAAAADAAMAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAADAAQAAAAAAwAEAAAAAAIABAAAAAAAAAMAAAAAAQADAAAAAAAAgwAAAAAAAAMAAAAAAACDAAAAAAAACAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== + tiles: BwAAAAAAAAcAAAAACAAHAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAcABwAAAAAFAAcAAAAAAAAHAAAAAAUABwAAAAAMAAoAAAAAAAAKAAAAAAAACgAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAALAAcAAAAAAAACAAAAAAAAAgAAAAAAAAcAAAAAAwAHAAAAAAgABwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAMABwAAAAAEAAcAAAAAAwAHAAAAAAAAgwAAAAAAAAMAAAAAAQCDAAAAAAAABwAAAAAMAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAQAFAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAwAEAAAAAAMABAAAAAAAAAQAAAAAAQADAAAAAAIAAwAAAAADAIMAAAAAAAAFAAAAAAMABQAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAMABAAAAAABAAQAAAAAAwAEAAAAAAAAAwAAAAABAAMAAAAAAgCDAAAAAAAAgwAAAAAAAAMAAAAAAgCDAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAACAAQAAAAAAAAEAAAAAAEABAAAAAABAAMAAAAAAAADAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAABAAUAAAAAAQAFAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAwAEAAAAAAAABAAAAAABAAQAAAAAAQAEAAAAAAEABAAAAAAAAAMAAAAAAAAFAAAAAAMABQAAAAABAAUAAAAAAQAFAAAAAAIABQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAEABAAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAACAAQAAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAwAFAAAAAAEABQAAAAADAAUAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABAAQAAAAAAgAEAAAAAAIABAAAAAADAAQAAAAAAgAEAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAQAEAAAAAAAABAAAAAACAAQAAAAAAQADAAAAAAMAAwAAAAABAIMAAAAAAAAGAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAMABAAAAAADAAQAAAAAAwAEAAAAAAIAAwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAADAAQAAAAAAgAEAAAAAAAABAAAAAAAAAMAAAAAAQADAAAAAAAAgwAAAAAAAAMAAAAAAgCDAAAAAAAACAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== version: 7 -6,0: ind: -6,0 - tiles: AwAAAAADAAMAAAAAAQADAAAAAAAAgwAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADAAAAAAAAAQAAAAAAAAMAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAwADAAAAAAIAAwAAAAACAIMAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAwAAAAAAAAEAAAAAAMADAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAABAAMAAAAAAQCDAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAMAAAAAAAABAAAAAABAAwAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAAABAAAAAACAAMAAAAAAQCDAAAAAAAAAwAAAAAAAAQAAAAAAgAEAAAAAAAAAwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAAAAAQAAAAAAAADAAAAAAAAgwAAAAAAAAMAAAAAAAAEAAAAAAEABAAAAAAAAAMAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAACAAQAAAAAAQAEAAAAAAMAAwAAAAABAIMAAAAAAAADAAAAAAMABAAAAAAAAAQAAAAAAQADAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgAEAAAAAAMABAAAAAAAAAMAAAAAAgCDAAAAAAAAAwAAAAAAAAQAAAAAAQAEAAAAAAAABAAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAABAAAAAADAAQAAAAAAwADAAAAAAIAgwAAAAAAAAMAAAAAAAAEAAAAAAIABAAAAAADAAMAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAACAAQAAAAAAgAEAAAAAAIAAwAAAAABAIMAAAAAAAADAAAAAAIABAAAAAACAAQAAAAAAwADAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAAEAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAwAEAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAACAAQAAAAAAQAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAIgAAAAABACIAAAAAAgAEAAAAAAMACgAAAAAAAAoAAAAAAAAKAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAA== + tiles: AwAAAAAAAAMAAAAAAAADAAAAAAMAgwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADAAAAAAAAAQAAAAAAgAMAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAIAAwAAAAADAIMAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAwAAAAAAAAEAAAAAAAADAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAACAAMAAAAAAgCDAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAMAAAAAAAABAAAAAADAAwAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAwAEAAAAAAIABAAAAAADAAMAAAAAAQCDAAAAAAAAAwAAAAAAAAQAAAAAAwAEAAAAAAEAAwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAcAgwAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAABAAQAAAAAAgADAAAAAAAAgwAAAAAAAAMAAAAAAAAEAAAAAAEABAAAAAADAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAQAAAAAAQAEAAAAAAAAAwAAAAABAIMAAAAAAAADAAAAAAAABAAAAAADAAQAAAAAAwADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAAEAAAAAAEABAAAAAADAAMAAAAAAACDAAAAAAAAAwAAAAACAAQAAAAAAgAEAAAAAAIABAAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAMABAAAAAADAAQAAAAAAQADAAAAAAAAgwAAAAAAAAMAAAAAAwAEAAAAAAMABAAAAAAAAAMAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAABAAQAAAAAAAAEAAAAAAAAAwAAAAAAAIMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAgADAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAAEAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAMABAAAAAADAAQAAAAAAQAEAAAAAAMABAAAAAAAAAQAAAAAAQAEAAAAAAIACgAAAAAAAAoAAAAAAAAHAAAAAAAABwAAAAAJAIMAAAAAAACDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAIgAAAAACACIAAAAAAAAEAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAABwAAAAAJAAcAAAAAAAAHAAAAAAMABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAA== version: 7 -4,-1: ind: -4,-1 - tiles: BAAAAAACAAQAAAAAAwAEAAAAAAEABAAAAAACAAQAAAAAAwAEAAAAAAIABAAAAAAAAAQAAAAAAwAEAAAAAAMAKgAAAAAAACoAAAAAAAAqAAAAAAgAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAAQAAAAAAwAEAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAACAAQAAAAAAAAEAAAAAAEABAAAAAACAAQAAAAAAwAEAAAAAAEABAAAAAABAAQAAAAAAAAEAAAAAAEABAAAAAACAAQAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAgAEAAAAAAIABAAAAAAAAAQAAAAAAwAEAAAAAAEABAAAAAACAAQAAAAAAwAEAAAAAAIABQAAAAABAAUAAAAAAQAFAAAAAAEABQAAAAABAAUAAAAAAwAFAAAAAAIAgwAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAADAAQAAAAAAgAEAAAAAAEABAAAAAADAAQAAAAAAwAEAAAAAAEABAAAAAADAAUAAAAAAAAFAAAAAAMABQAAAAACAAUAAAAAAgAFAAAAAAIABQAAAAACAIMAAAAAAAApAAAAAAAAKQAAAAAAACoAAAAAAAAEAAAAAAIAKQAAAAAAACkAAAAAAAApAAAAAAAABAAAAAABACoAAAAAAAAFAAAAAAEABQAAAAAAAAUAAAAAAQAFAAAAAAIABQAAAAADAAUAAAAAAACDAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAABAAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAgAFAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAEAgwAAAAAAAAMAAAAAAwADAAAAAAMAgwAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAADAAQAAAAAAgAEAAAAAAEABAAAAAABAIMAAAAAAACDAAAAAAAABQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAIAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAACAIMAAAAAAAADAAAAAAEAAwAAAAACAAUAAAAAAgADAAAAAAIAAwAAAAADAAMAAAAAAwCDAAAAAAAAAwAAAAACAAMAAAAAAQCDAAAAAAAABQAAAAADAAUAAAAAAAAFAAAAAAEABQAAAAACAAUAAAAAAQAFAAAAAAIABQAAAAAAAAUAAAAAAgAFAAAAAAAABQAAAAACAAUAAAAAAAAFAAAAAAMAgwAAAAAAAAMAAAAAAAADAAAAAAMAgwAAAAAAAAUAAAAAAwAFAAAAAAIABQAAAAACAAUAAAAAAgAFAAAAAAIABQAAAAAAAAUAAAAAAAAFAAAAAAIABQAAAAAAAAUAAAAAAgAFAAAAAAIABQAAAAABAIMAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAgAFAAAAAAAABQAAAAAAAAUAAAAAAwAFAAAAAAIABQAAAAACAAUAAAAAAgAFAAAAAAIABQAAAAADAAUAAAAAAgAFAAAAAAMABQAAAAACAAUAAAAAAwALAAAAAAAAAwAAAAACAAMAAAAAAQCDAAAAAAAABQAAAAACAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAQAFAAAAAAEABQAAAAAAAAUAAAAAAgAFAAAAAAEABQAAAAABAAUAAAAAAwAFAAAAAAMACwAAAAAAAAMAAAAAAgADAAAAAAAAgwAAAAAAAAUAAAAAAwAFAAAAAAEABQAAAAAAAAUAAAAAAgAFAAAAAAIABQAAAAACAAUAAAAAAgAFAAAAAAIABQAAAAADAAUAAAAAAQAFAAAAAAMABQAAAAABAAsAAAAAAAADAAAAAAEAAwAAAAABAIMAAAAAAAAFAAAAAAMABQAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAADAAMAAAAAAwAFAAAAAAEABQAAAAAAAAUAAAAAAgAFAAAAAAIABQAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAACDAAAAAAAABQAAAAADAAUAAAAAAgAFAAAAAAAABQAAAAACAAUAAAAAAQAFAAAAAAIABAAAAAADAAQAAAAAAAAEAAAAAAAABAAAAAADAAQAAAAAAQAEAAAAAAEAgwAAAAAAAAMAAAAAAQADAAAAAAMAAwAAAAACAAUAAAAAAgAFAAAAAAMABQAAAAAAAAUAAAAAAgAFAAAAAAIABQAAAAACAA== + tiles: CgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAACAAcAAAAAAAAHAAAAAAAABwAAAAALAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAABQAAAAACAAUAAAAAAAAFAAAAAAAABQAAAAACAAUAAAAAAwAFAAAAAAMAgwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAUAAAAAAQAFAAAAAAAABQAAAAACAAUAAAAAAQAFAAAAAAAABQAAAAADAIMAAAAAAAACAAAAAAAAAgAAAAAAAAcAAAAAAAAKAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACgAAAAAAAAcAAAAAAAAFAAAAAAIABQAAAAABAAUAAAAAAgAFAAAAAAAABQAAAAACAAUAAAAAAwCDAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQCDAAAAAAAABQAAAAAAAAUAAAAAAgAFAAAAAAIABQAAAAABAAUAAAAAAAAFAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAEAgwAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAADAAQAAAAAAQAEAAAAAAIABAAAAAAAAIMAAAAAAACDAAAAAAAABQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAACAIMAAAAAAAADAAAAAAIAAwAAAAAAAAUAAAAAAQADAAAAAAAAAwAAAAABAAMAAAAAAwCDAAAAAAAAAwAAAAADAAMAAAAAAQCDAAAAAAAABQAAAAAAAAUAAAAAAQAFAAAAAAEABQAAAAADAAUAAAAAAAAFAAAAAAAABQAAAAADAAUAAAAAAgAFAAAAAAMABQAAAAABAAUAAAAAAQAFAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAMAgwAAAAAAAAUAAAAAAAAFAAAAAAMABQAAAAACAAUAAAAAAgAFAAAAAAIABQAAAAAAAAUAAAAAAgAFAAAAAAMABQAAAAACAAUAAAAAAAAFAAAAAAIABQAAAAABAIMAAAAAAAADAAAAAAAAAwAAAAADAAMAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAgAFAAAAAAEABQAAAAADAAUAAAAAAgAFAAAAAAIABQAAAAACAAUAAAAAAwAFAAAAAAMABQAAAAABAAUAAAAAAQALAAAAAAAAAwAAAAACAAMAAAAAAgCDAAAAAAAABQAAAAAAAAUAAAAAAgAFAAAAAAMABQAAAAADAAUAAAAAAgAFAAAAAAIABQAAAAABAAUAAAAAAgAFAAAAAAAABQAAAAABAAUAAAAAAQAFAAAAAAAACwAAAAAAAAMAAAAAAQADAAAAAAIAgwAAAAAAAAUAAAAAAwAFAAAAAAAABQAAAAACAAUAAAAAAwAFAAAAAAMABQAAAAADAAUAAAAAAAAFAAAAAAIABQAAAAAAAAUAAAAAAgAFAAAAAAIABQAAAAACAAsAAAAAAAADAAAAAAMAAwAAAAABAIMAAAAAAAAFAAAAAAAABQAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAgAFAAAAAAAABQAAAAADAAUAAAAAAwAFAAAAAAMABQAAAAACAIMAAAAAAACDAAAAAAAAAwAAAAADAAMAAAAAAQCDAAAAAAAABQAAAAADAAUAAAAAAQAFAAAAAAEABQAAAAACAAUAAAAAAwAFAAAAAAEABAAAAAABAAQAAAAAAgAEAAAAAAAABAAAAAACAAQAAAAAAQAEAAAAAAEAgwAAAAAAAAMAAAAAAAADAAAAAAMAAwAAAAADAAUAAAAAAAAFAAAAAAEABQAAAAACAAUAAAAAAgAFAAAAAAAABQAAAAAAAA== version: 7 -4,0: ind: -4,0 - tiles: BAAAAAABAAQAAAAAAQAEAAAAAAAABAAAAAABAAQAAAAAAAAEAAAAAAEAgwAAAAAAAAMAAAAAAgADAAAAAAAAgwAAAAAAAAUAAAAAAwAFAAAAAAIABQAAAAACAAUAAAAAAwAFAAAAAAMABQAAAAADAIMAAAAAAACDAAAAAAAABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAACwAAAAAAAIMAAAAAAAAFAAAAAAAABQAAAAACAAUAAAAAAwAFAAAAAAMABQAAAAADAAUAAAAAAwCDAAAAAAAABAAAAAAAAAQAAAAAAwAEAAAAAAEAgwAAAAAAAAMAAAAAAAADAAAAAAMAAwAAAAABAAMAAAAAAwCDAAAAAAAAgwAAAAAAAAUAAAAAAwAFAAAAAAAABQAAAAAAAAUAAAAAAgAFAAAAAAIAgwAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAABAIMAAAAAAAADAAAAAAAAAwAAAAABAAMAAAAAAQADAAAAAAIAAwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAACDAAAAAAAAAwAAAAACACMAAAAAAgAjAAAAAAIAAwAAAAABAAMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAMAAwAAAAAAAAMAAAAAAAADAAAAAAMAAwAAAAADAAMAAAAAAwAjAAAAAAMAIwAAAAADAAMAAAAAAAADAAAAAAMAgwAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAwAAAAABAAMAAAAAAgADAAAAAAEAAwAAAAADAAMAAAAAAAADAAAAAAEAAwAAAAADAAMAAAAAAAADAAAAAAEAAwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAMAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAADAAMAAAAAAACDAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAADAAMAAAAAAAADAAAAAAIAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: BAAAAAABAAQAAAAAAgAEAAAAAAIABAAAAAAAAAQAAAAAAAAEAAAAAAIAgwAAAAAAAAMAAAAAAwADAAAAAAMAgwAAAAAAAAUAAAAAAgAFAAAAAAEABQAAAAACAAUAAAAAAAAFAAAAAAMABQAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAACwAAAAAAAIMAAAAAAAAFAAAAAAAABQAAAAABAAUAAAAAAwAFAAAAAAMABQAAAAAAAAUAAAAAAwCDAAAAAAAABAAAAAAAAAQAAAAAAgAEAAAAAAEAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAABAAMAAAAAAQCDAAAAAAAAgwAAAAAAAAUAAAAAAQAFAAAAAAEABQAAAAABAAUAAAAAAgAFAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAADAIMAAAAAAAADAAAAAAAAAwAAAAACAAMAAAAAAQADAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAACDAAAAAAAAAwAAAAAAACMAAAAAAgAjAAAAAAIAAwAAAAACAAMAAAAAAQCDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAACAAMAAAAAAgADAAAAAAEAAwAAAAACAAMAAAAAAQAjAAAAAAAAIwAAAAABAAMAAAAAAQADAAAAAAIAgwAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAwAAAAADAAMAAAAAAQADAAAAAAIAAwAAAAACAAMAAAAAAAADAAAAAAIAAwAAAAADAAMAAAAAAAADAAAAAAMAAwAAAAABAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAgADAAAAAAMAAwAAAAACAAMAAAAAAwADAAAAAAMAAwAAAAAAAAMAAAAAAwADAAAAAAMAAwAAAAABAAMAAAAAAgCDAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAEAAwAAAAADAAMAAAAAAgADAAAAAAAAAwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -5,-1: ind: -5,-1 - tiles: KgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAApAAAAAAAABAAAAAABAAQAAAAAAwAEAAAAAAEABAAAAAABACoAAAAAAAAqAAAAAAAAKgAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAAEAAAAAAMABAAAAAABAAQAAAAAAwAEAAAAAAEABAAAAAACAAQAAAAAAgAEAAAAAAIABAAAAAADAAQAAAAAAQApAAAAAAAAKQAAAAAAACkAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAABAAAAAACAAQAAAAAAQAEAAAAAAEABAAAAAACAAQAAAAAAgAEAAAAAAAABAAAAAACAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAkACwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAQAAAAAAgAEAAAAAAIABAAAAAADAAQAAAAAAwAEAAAAAAEABAAAAAADAAQAAAAAAACDAAAAAAAABQAAAAADACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAFACoAAAAAAAAqAAAAAAAAKgAAAAAAACkAAAAAAAApAAAAAAAAgwAAAAAAAAUAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAACwAAAAAAAIMAAAAAAAAFAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAACAAMAAAAAAACDAAAAAAAABQAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAABAIMAAAAAAAADAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAgCDAAAAAAAABQAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAMAgwAAAAAAAAUAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAABAAsAAAAAAAAFAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAADEAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAxAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAwALAAAAAAAABQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAAxAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAMQAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAABAAMAAAAAAAADAAAAAAMACwAAAAAAAAUAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAAMQAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAADEAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAMAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAADAAMAAAAAAgCDAAAAAAAABAAAAAABAA== + tiles: BwAAAAAAAAcAAAAAAgAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAACAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAcAAAAAAAAHAAAAAAUABwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAABQAHAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAACDAAAAAAAABQAAAAABAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAIAAAAAAAACAAAAAAAAgwAAAAAAAAUAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAACwAAAAAAAIMAAAAAAAAFAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAACAAMAAAAAAACDAAAAAAAABQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAIAAwAAAAAAAIMAAAAAAAADAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAQCDAAAAAAAABQAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAQADAAAAAAAAgwAAAAAAAAUAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAAAAAsAAAAAAAAFAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAADEAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAxAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAADAAMAAAAAAAALAAAAAAAABQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAAxAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAAMQAAAAAAAAMAAAAAAgADAAAAAAEAAwAAAAABAAMAAAAAAgADAAAAAAEACwAAAAAAAAUAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAAMQAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAADEAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAMAAwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAADEAAAAAAAAxAAAAAAAAMQAAAAAAADEAAAAAAAAxAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAQCDAAAAAAAABAAAAAABAA== version: 7 -5,0: ind: -5,0 - tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAwCDAAAAAAAABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAMAAwAAAAACAAMAAAAAAwADAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAABAAMAAAAAAwADAAAAAAMAAwAAAAABAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAAAjAAAAAAMAIwAAAAACAAMAAAAAAgCDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAEAIwAAAAABACMAAAAAAgADAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAAADAAAAAAMAAwAAAAADAAMAAAAAAwADAAAAAAMAAwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAwADAAAAAAEAAwAAAAABAAMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAACAAMAAAAAAACDAAAAAAAABAAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAAAAAMAAAAAAwADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAACAAMAAAAAAAADAAAAAAEAAwAAAAADAIMAAAAAAACDAAAAAAAABwAAAAAEAAcAAAAABgAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAACDAAAAAAAAAwAAAAACAAMAAAAAAgAjAAAAAAAAIwAAAAABAAMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAMAIwAAAAABACMAAAAAAAADAAAAAAEAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAADAAMAAAAAAwADAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAQADAAAAAAMAAwAAAAACAAMAAAAAAgCDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -6,-1: ind: -6,-1 - tiles: BAAAAAADAAQAAAAAAgAEAAAAAAEAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAHACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAADAAqAAAAAAAAKgAAAAAAACoAAAAAAQAqAAAAAAAAKgAAAAAMAAQAAAAAAgAEAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAIAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAADAAqAAAAAAAAKgAAAAAAACoAAAAACwAqAAAAAAIAKgAAAAAAACoAAAAAAAAqAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKgAAAAALACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAABACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAABwAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAABACoAAAAAAAAqAAAAAAQAKgAAAAAAACoAAAAACQAqAAAAAAcAKgAAAAAAAIMAAAAAAAADAAAAAAEAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAACAAqAAAAAAIAKgAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAFgAAAAAAABYAAAAAAAApAAAAAAAAFgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAACAAMAAAAAAgADAAAAAAIAAwAAAAACAAMAAAAAAgCDAAAAAAAAgwAAAAAAABYAAAAAAAAWAAAAAAcAKQAAAAAAABYAAAAAAAAWAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAABAAMAAAAAAAADAAAAAAEAAwAAAAADAIMAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAABAAMAAAAAAQADAAAAAAEAAwAAAAADAIMAAAAAAACDAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAKgAAAAAAAIMAAAAAAAAEAAAAAAAACQAAAAAAAAkAAAAAAAAEAAAAAAEACQAAAAAAAAkAAAAAAAAEAAAAAAIAgwAAAAAAAIMAAAAAAAAWAAAAAAIAFgAAAAAAABYAAAAAAAAWAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAADAAQAAAAAAQAEAAAAAAMABAAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAFACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAACwAqAAAAAAAAgwAAAAAAAAQAAAAAAwAJAAAAAAAACQAAAAAAAAQAAAAAAAAJAAAAAAAACQAAAAAAAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAAAEAAAAAAMABAAAAAAAAAQAAAAAAwAEAAAAAAIABAAAAAABAAQAAAAAAAAEAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAABAAAAAABAAkAAAAAAAAJAAAAAAAABAAAAAACAAkAAAAAAAAJAAAAAAAABAAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== + tiles: CgAAAAAAAAoAAAAAAAAKAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAKAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAoAAAAAAAAKAAAAAAAABwAAAAAAAAcAAAAADAAHAAAAAAAABwAAAAAAAAcAAAAACAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAALAAcAAAAAAAAHAAAAAAkABwAAAAAAAAcAAAAAAAAHAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAACQAHAAAAAAAABwAAAAAAAAcAAAAABQAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAQAHAAAAAAAABwAAAAAAAIMAAAAAAAADAAAAAAEAgwAAAAAAAAcAAAAAAAAHAAAAAAQABwAAAAAFAAcAAAAACQAHAAAAAAAABwAAAAAAAIMAAAAAAAAHAAAAAAIABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAFgAAAAAAABYAAAAAAAApAAAAAAAAFgAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAAAQCDAAAAAAAAgwAAAAAAABYAAAAAAAAWAAAAAAAAKQAAAAAAABYAAAAABwAWAAAAAAAABwAAAAAKAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAIAAwAAAAACAAMAAAAAAQADAAAAAAIAAwAAAAABAIMAAAAAAAAWAAAAAAAAFgAAAAAIABYAAAAAAAAWAAAAAAAAFgAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAACAIMAAAAAAACDAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAgAFgAAAAAEABYAAAAAAAAHAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAABwAAAAAAAIMAAAAAAAAEAAAAAAMACQAAAAAAAAkAAAAAAAAEAAAAAAMACQAAAAAAAAkAAAAAAAAEAAAAAAEAgwAAAAAAAIMAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAACQAWAAAAAAAABwAAAAAFAAcAAAAAAACDAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAEABAAAAAACAAQAAAAAAAAEAAAAAAMABAAAAAABAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAACQAHAAAAAAAABwAAAAAAAAcAAAAACgAHAAAAAAAAgwAAAAAAAAQAAAAAAQAJAAAAAAAACQAAAAAAAAQAAAAAAwAJAAAAAAAACQAAAAAAAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAgAEAAAAAAEABAAAAAACAAQAAAAAAwAEAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAHAAcAAAAAAwCDAAAAAAAABAAAAAABAAkAAAAAAAAJAAAAAAAABAAAAAABAAkAAAAAAAAJAAAAAAAABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAACgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== version: 7 -6,-4: ind: -6,-4 - tiles: gwAAAAAAACoAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAABQAWAAAAAAAAKQAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAACoAAAAABwAqAAAAAAAAKgAAAAAIACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAAAqAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAIAFgAAAAAAACkAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAKgAAAAADACoAAAAAAAApAAAAAAAAKQAAAAAAABYAAAAAAAApAAAAAAAAFgAAAAAAABYAAAAAAAAqAAAAAAAAKgAAAAAEACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAABwAqAAAAAAwAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACkAAAAAAAAWAAAAAAAAKQAAAAAAABYAAAAAAAAWAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAoAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAAAqAAAAAAUAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAADACoAAAAABwAqAAAAAAAAKgAAAAAAACoAAAAACgCDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAQAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAACwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAIAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAAsAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAALAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAQAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAACQAqAAAAAAQAKgAAAAAKACoAAAAACwAqAAAAAAsAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAIAAwAAAAABAIMAAAAAAAAsAAAAAAIALAAAAAAAACwAAAAAAAAsAAAAAAEALAAAAAADACwAAAAAAQAvAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAgCDAAAAAAAALAAAAAABACwAAAAAAgAsAAAAAAAALAAAAAACACwAAAAAAwAsAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAgAvAAAAAAAAgwAAAAAAAAMAAAAAAQADAAAAAAAAgwAAAAAAACwAAAAAAgAsAAAAAAAALAAAAAAAACwAAAAAAwAsAAAAAAAALAAAAAABAC8AAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAA== + tiles: gwAAAAAAAAcAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAKQAAAAAAABYAAAAAAQAWAAAAAAAAFgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAALAAcAAAAACQAHAAAAAAAABwAAAAAAAIMAAAAAAAAHAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAMAFgAAAAADACkAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAHAAAAAAIABwAAAAAAAAcAAAAABgAHAAAAAAAABwAAAAAAAAcAAAAAAgCDAAAAAAAABwAAAAAEAAcAAAAACwApAAAAAAAAKQAAAAAAABYAAAAAAAApAAAAAAAAFgAAAAAAABYAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAoABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAACkAAAAAAAAWAAAAAAAAKQAAAAAAABYAAAAAAAAWAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAALAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAKAAcAAAAABAAHAAAAAAAACwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAABwAHAAAAAAsABwAAAAAAAAcAAAAABwAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAsAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAALAAAAAAAABwAAAAACAAcAAAAABgAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAMAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAwAgwAAAAAAAAcAAAAAAAAHAAAAAAMABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAgAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAgABwAAAAAFAAcAAAAAAAAHAAAAAAAABwAAAAALAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAADAIMAAAAAAAAsAAAAAAEALAAAAAABACwAAAAAAwAsAAAAAAIALAAAAAACACwAAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAACDAAAAAAAAAwAAAAADAAMAAAAAAgCDAAAAAAAALAAAAAAAACwAAAAAAgAsAAAAAAAALAAAAAABACwAAAAAAQAsAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAgAgwAAAAAAAAMAAAAAAwADAAAAAAMAgwAAAAAAACwAAAAAAAAsAAAAAAMALAAAAAAAACwAAAAAAQAsAAAAAAIALAAAAAAAAC8AAAAAAAAvAAAAAAcALwAAAAAAAC8AAAAAAAAvAAAAAAIALwAAAAAAAA== version: 7 -3,-2: ind: -3,-2 - tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAEADQAAAAADAA0AAAAAAQAIAAAAAAAACAAAAAAAAAgAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAIADQAAAAABAA0AAAAAAQANAAAAAAIACAAAAAAAAAgAAAAAAAAIAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAQANAAAAAAAADQAAAAADAA0AAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAwADAAAAAAEAAwAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAABAAMAAAAAAwANAAAAAAAAgwAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAAAAAQAAAAAAQAEAAAAAAEABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAQADAAAAAAEADQAAAAABAAMAAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAgAEAAAAAAMABAAAAAAAAAQAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAABAAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAADAA0AAAAAAQCDAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAAABAAAAAABAAQAAAAAAgAEAAAAAAMAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAwANAAAAAAIADQAAAAADAA0AAAAAAgANAAAAAAMAgwAAAAAAAIMAAAAAAAALAAAAAAAAgwAAAAAAAAMAAAAAAgAEAAAAAAMABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAACAIMAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAAADAAAAAAAABAAAAAACAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAABAA0AAAAAAgCDAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAIAAwAAAAADAAQAAAAAAwAEAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAwANAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAAAgwAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAAAAAQAAAAAAgAEAAAAAAAABAAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAQADAAAAAAIADQAAAAAAAIMAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAAAAA0AAAAAAwCDAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAIAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAADAAMAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== + tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAIADQAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAQAIAAAAAAAACAAAAAAAAAgAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAEADQAAAAACAA0AAAAAAgANAAAAAAIADQAAAAAAAA0AAAAAAQANAAAAAAIACAAAAAAAAAgAAAAAAAAIAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAwANAAAAAAIADQAAAAACAA0AAAAAAQANAAAAAAAADQAAAAADAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAIADQAAAAABAA0AAAAAAwANAAAAAAMADQAAAAACAA0AAAAAAQANAAAAAAIADQAAAAABAA0AAAAAAgAIAAAAAAAACAAAAAAAAAgAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAMAAwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAACAAMAAAAAAwANAAAAAAMAgwAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAgADAAAAAAIADQAAAAACAAMAAAAAAwANAAAAAAEADQAAAAADAA0AAAAAAgAEAAAAAAEABAAAAAADAAQAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAMABAAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAACDAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAEABAAAAAADAAQAAAAAAwAEAAAAAAAAAwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgANAAAAAAEADQAAAAADAA0AAAAAAgANAAAAAAIAgwAAAAAAAIMAAAAAAAALAAAAAAAAgwAAAAAAAAMAAAAAAQAEAAAAAAMABAAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAIADQAAAAADAIMAAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAAADAAAAAAMABAAAAAADAAQAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAA0AAAAAAwANAAAAAAMADQAAAAACAA0AAAAAAwCDAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAMAAwAAAAADAAQAAAAAAQAEAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAwANAAAAAAEADQAAAAADAA0AAAAAAAANAAAAAAIAgwAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAABAAQAAAAAAAAEAAAAAAEABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAQADAAAAAAAADQAAAAACAIMAAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAQADAAAAAAIAAwAAAAADAA0AAAAAAQCDAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAEABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== version: 7 -3,-4: ind: -3,-4 - tiles: KgAAAAAHAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAMABAAAAAADAIMAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAwAEAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAAAAAQAAAAAAgAEAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAWAAAAAAQAFQAAAAAAABUAAAAAAAAVAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAFQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAEABQAAAAAAAAUAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAMABQAAAAADAAUAAAAAAwAFAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAwAFAAAAAAMABQAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAAANAAAAAAIADQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAMABQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAIABQAAAAABAAUAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAACAIMAAAAAAAAdAAAAAAAAHQAAAAACAB0AAAAAAwAdAAAAAAEAHQAAAAAAAB0AAAAAAACDAAAAAAAABQAAAAACAAUAAAAAAAAFAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAIAHQAAAAAAAB0AAAAAAgAdAAAAAAMAHQAAAAAAAB0AAAAAAQAdAAAAAAAAgwAAAAAAAIMAAAAAAAAOAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAEAgwAAAAAAAB0AAAAAAgAdAAAAAAMAHQAAAAABAB0AAAAAAwAdAAAAAAMAHQAAAAACAA== + tiles: BwAAAAAKAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAADAIMAAAAAAACDAAAAAAAABAAAAAADAAQAAAAAAQAEAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAAAAAQAAAAAAwAEAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAeAAAAAAIAHgAAAAAAAB4AAAAAAQAeAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAAHgAAAAABAB4AAAAAAwAeAAAAAAEAHgAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAB4AAAAAAAAeAAAAAAEAHgAAAAAAAB4AAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAeAAAAAAMAHgAAAAACAB4AAAAAAwAeAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAEABQAAAAAAAAUAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAMABQAAAAADAAUAAAAAAQAFAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAgAFAAAAAAAABQAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAQANAAAAAAIADQAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAADAA0AAAAAAwCDAAAAAAAABQAAAAADAAUAAAAAAQAFAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAEAgwAAAAAAAAUAAAAAAwAFAAAAAAIABQAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAAABQAAAAACAAUAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAACAIMAAAAAAAAdAAAAAAEAHQAAAAAAAB0AAAAAAwAdAAAAAAMAHQAAAAAAAB0AAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAgAFAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAAAHQAAAAABAB0AAAAAAwAdAAAAAAAAHQAAAAAAAB0AAAAAAQAdAAAAAAIAgwAAAAAAAIMAAAAAAAAOAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAAAgwAAAAAAAB0AAAAAAwAdAAAAAAAAHQAAAAACAB0AAAAAAwAdAAAAAAMAHQAAAAACAA== version: 7 -3,-3: ind: -3,-3 - tiles: DgAAAAACAA4AAAAAAgAEAAAAAAIABAAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAAAgwAAAAAAAB0AAAAAAgAdAAAAAAIAHQAAAAACAB0AAAAAAgAdAAAAAAIAHQAAAAADAA4AAAAAAgAEAAAAAAAABAAAAAABAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAdAAAAAAAAHQAAAAABAB0AAAAAAgAdAAAAAAMAHQAAAAADAB0AAAAAAAAOAAAAAAIABAAAAAABAAQAAAAAAgAEAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADgAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA4AAAAAAAAOAAAAAAMABAAAAAAAAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA4AAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABQAAAAABAAUAAAAAAwAFAAAAAAIAAwAAAAADAAMAAAAAAQADAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAIABQAAAAABAAMAAAAAAwADAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAAABQAAAAACAAUAAAAAAAADAAAAAAAAAwAAAAABAAMAAAAAAwCDAAAAAAAAgwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABQAAAAACAAUAAAAAAAAFAAAAAAEAAwAAAAABAAMAAAAAAAADAAAAAAMAgwAAAAAAAAMAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAMADQAAAAAAAA0AAAAAAwANAAAAAAEAgwAAAAAAAIMAAAAAAAAFAAAAAAMAgwAAAAAAAIMAAAAAAAADAAAAAAIAgwAAAAAAAIMAAAAAAAADAAAAAAMAAwAAAAAAAAMAAAAAAwADAAAAAAMAAwAAAAABAA0AAAAAAQANAAAAAAAADQAAAAAAAIMAAAAAAAAFAAAAAAIABQAAAAABAIMAAAAAAAANAAAAAAAADQAAAAADAAMAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAMAAwAAAAABAAMAAAAAAQADAAAAAAMAAwAAAAAAAAMAAAAAAQCDAAAAAAAABQAAAAAAAAUAAAAAAQCDAAAAAAAADQAAAAABAA0AAAAAAAADAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAAAAAMAAAAAAgADAAAAAAEAgwAAAAAAAAUAAAAAAgAFAAAAAAIAgwAAAAAAAA0AAAAAAQANAAAAAAIAAwAAAAACAIMAAAAAAAADAAAAAAAAAwAAAAACAAMAAAAAAAADAAAAAAAAAwAAAAADAIMAAAAAAACDAAAAAAAAAwAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAwANAAAAAAEADQAAAAADAA== + tiles: DgAAAAABAA4AAAAAAQAEAAAAAAMABAAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAEAgwAAAAAAAB0AAAAAAgAdAAAAAAAAHQAAAAAAAB0AAAAAAwAdAAAAAAEAHQAAAAABAA4AAAAAAgAEAAAAAAAABAAAAAABAAQAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAdAAAAAAAAHQAAAAACAB0AAAAAAQAdAAAAAAIAHQAAAAADAB0AAAAAAAAOAAAAAAAABAAAAAACAAQAAAAAAgAEAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADgAAAAADAAQAAAAAAAAEAAAAAAMABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA4AAAAAAwAOAAAAAAMABAAAAAADAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA4AAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAgAFAAAAAAAAAwAAAAACAAMAAAAAAgADAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAMABQAAAAACAAMAAAAAAwADAAAAAAEAAwAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAEABQAAAAACAAUAAAAAAAADAAAAAAMAAwAAAAACAAMAAAAAAgCDAAAAAAAAgwAAAAAAAAMAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABQAAAAADAAUAAAAAAAAFAAAAAAEAAwAAAAADAAMAAAAAAwADAAAAAAMAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAMAAwAAAAAAAAMAAAAAAQADAAAAAAAAAwAAAAABAA0AAAAAAAANAAAAAAIADQAAAAAAAIMAAAAAAAAFAAAAAAMABQAAAAADAIMAAAAAAAANAAAAAAMADQAAAAABAAMAAAAAAwCDAAAAAAAAAwAAAAAAAAMAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAMAAwAAAAAAAAMAAAAAAQCDAAAAAAAABQAAAAADAAUAAAAAAgCDAAAAAAAADQAAAAABAA0AAAAAAAADAAAAAAIAgwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAABAAMAAAAAAgADAAAAAAMAAwAAAAADAAMAAAAAAAADAAAAAAIAgwAAAAAAAAUAAAAAAwAFAAAAAAEAgwAAAAAAAA0AAAAAAgANAAAAAAMAAwAAAAABAIMAAAAAAAADAAAAAAMAAwAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAABAIMAAAAAAACDAAAAAAAAAwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAABAA0AAAAAAAANAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAgANAAAAAAEADQAAAAABAA0AAAAAAwANAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAEADQAAAAADAA== version: 7 -4,-3: ind: -4,-3 - tiles: FQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAACoAAAAAAgAqAAAAAAAAKQAAAAAAACoAAAAAAACDAAAAAAAADgAAAAACAA4AAAAAAwAOAAAAAAMADgAAAAADAA4AAAAAAwAOAAAAAAMADgAAAAABABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAKgAAAAAAACkAAAAAAAApAAAAAAAADgAAAAACAA4AAAAAAwAOAAAAAAAADgAAAAACAA4AAAAAAwAOAAAAAAMADgAAAAADAA4AAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAACoAAAAAAAApAAAAAAAAKQAAAAAAAA4AAAAAAwAOAAAAAAIADgAAAAAAAA4AAAAAAwAOAAAAAAIADgAAAAADAA4AAAAAAgAOAAAAAAMAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAqAAAAAAAAKQAAAAAAACoAAAAAAACDAAAAAAAADgAAAAACAA4AAAAAAAAOAAAAAAEADgAAAAACAA4AAAAAAwAOAAAAAAIADgAAAAACABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAKgAAAAAAACkAAAAAAAAqAAAAAAcAgwAAAAAAAA4AAAAAAwAOAAAAAAMADgAAAAADAA4AAAAAAQAOAAAAAAEADgAAAAAAAA4AAAAAAQAVAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAACoAAAAAAAApAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAACoAAAAABAAqAAAAAAAAKQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAACACoAAAAAAAAqAAAAAAAAKQAAAAAAACkAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKQAAAAAAACoAAAAACgAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAgAKgAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAADAAMAAAAAAwADAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACkAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAwADAAAAAAIAAwAAAAAAAAMAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAACAAMAAAAAAQADAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAAAAAMAAAAAAgADAAAAAAIAAwAAAAADAAMAAAAAAAADAAAAAAIAAwAAAAADAAMAAAAAAQADAAAAAAAAAwAAAAABAAMAAAAAAwADAAAAAAIAAwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAwADAAAAAAEAAwAAAAAAAAMAAAAAAQADAAAAAAEAAwAAAAABAAMAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAAAAAQAAAAAAwAEAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAAAgwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAAADAAAAAAAAAwAAAAABAAMAAAAAAwAEAAAAAAIABAAAAAADAAMAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAMAAAAAAQCDAAAAAAAAgwAAAAAAAA== + tiles: BwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAgAAAAAAAAcAAAAAAACDAAAAAAAADgAAAAAAAA4AAAAAAgAOAAAAAAEADgAAAAAAAA4AAAAAAQAOAAAAAAMADgAAAAACAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAIAAAAAAAACAAAAAAAADgAAAAAAAA4AAAAAAQAOAAAAAAMADgAAAAACAA4AAAAAAQAOAAAAAAEADgAAAAAAAA4AAAAAAgAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAgABwAAAAADAAcAAAAAAAACAAAAAAAAAgAAAAAAAA4AAAAAAQAOAAAAAAAADgAAAAABAA4AAAAAAAAOAAAAAAMADgAAAAAAAA4AAAAAAwAOAAAAAAEABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAgAAAAAAAAcAAAAABQCDAAAAAAAADgAAAAAAAA4AAAAAAAAOAAAAAAAADgAAAAAAAA4AAAAAAQAOAAAAAAEADgAAAAACAAcAAAAAAAAHAAAAAAoABwAAAAADAAcAAAAAAAAHAAAAAAYABwAAAAAAAAIAAAAAAAAHAAAAAAAAgwAAAAAAAA4AAAAAAwAOAAAAAAIADgAAAAABAA4AAAAAAgAOAAAAAAAADgAAAAADAA4AAAAAAgAHAAAAAAcABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAIAAcAAAAAAQACAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAoABwAAAAAAAAcAAAAAAAAHAAAAAAAAAgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAsAAgAAAAAAAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAHAAAAAAUAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAgAAAAAAAAcAAAAABwAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAEABwAAAAAAAIMAAAAAAAADAAAAAAMAAwAAAAAAAAMAAAAAAQADAAAAAAEAAwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAABQCDAAAAAAAAAwAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAwADAAAAAAMAAwAAAAADAAMAAAAAAAADAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAACAAMAAAAAAgADAAAAAAEAAwAAAAACAAMAAAAAAgADAAAAAAIAAwAAAAABAAMAAAAAAAADAAAAAAMAAwAAAAABAAMAAAAAAgADAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQADAAAAAAAAAwAAAAADAAMAAAAAAQADAAAAAAEAAwAAAAADAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAACAAQAAAAAAwAEAAAAAAIABAAAAAAAAAQAAAAAAwAEAAAAAAIAgwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAADAAMAAAAAAAADAAAAAAIAAwAAAAACAAMAAAAAAAAEAAAAAAEABAAAAAABAAMAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAA== version: 7 -4,-4: ind: -4,-4 - tiles: EAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAACAAqAAAAAAAAKgAAAAAAAA0AAAAAAACDAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAEAIAAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAFgAAAAALABYAAAAAAAAWAAAAAAAADQAAAAADAIMAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAAAEAAAAAAMABAAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABYAAAAAAAAWAAAAAAMAFgAAAAAAAA0AAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAACAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAAAgwAAAAAAAAQAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAFgAAAAAAABYAAAAACQAWAAAAAAAABAAAAAADAAQAAAAAAwAEAAAAAAIABAAAAAABAAQAAAAAAwAEAAAAAAAABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAACAAQAAAAAAAAEAAAAAAMABAAAAAACAAQAAAAAAAADAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAABQAAAAABAAUAAAAAAgAFAAAAAAIABQAAAAABAAUAAAAAAwAEAAAAAAIABAAAAAADAAQAAAAAAwAEAAAAAAMABAAAAAABAAQAAAAAAQAEAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAwAFAAAAAAMABQAAAAABAAUAAAAAAgAFAAAAAAIABAAAAAACAAQAAAAAAAAEAAAAAAMABAAAAAADAIMAAAAAAAAEAAAAAAMAgwAAAAAAAIMAAAAAAAAFAAAAAAIABQAAAAAAAIMAAAAAAAAFAAAAAAEABQAAAAAAAAUAAAAAAwAFAAAAAAAABQAAAAACAAQAAAAAAgAEAAAAAAAABAAAAAABAAQAAAAAAQCDAAAAAAAABAAAAAACAAQAAAAAAgCDAAAAAAAABQAAAAADAAUAAAAAAAAFAAAAAAEABQAAAAABAAUAAAAAAAAFAAAAAAEABQAAAAACAAUAAAAAAAAEAAAAAAMABAAAAAACAAQAAAAAAgAEAAAAAAIAgwAAAAAAAAQAAAAAAgAEAAAAAAIAgwAAAAAAAAUAAAAAAwAFAAAAAAEABQAAAAAAAAUAAAAAAwAFAAAAAAEABQAAAAABAAUAAAAAAQAFAAAAAAMABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAMABQAAAAADAAUAAAAAAwAFAAAAAAIABQAAAAAAAAUAAAAAAwAFAAAAAAAABQAAAAADAAQAAAAAAwCDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAABQAAAAABAAUAAAAAAgAFAAAAAAEABQAAAAADAAUAAAAAAwAFAAAAAAMABQAAAAAAAAUAAAAAAgApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADgAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAApAAAAAAAAKQAAAAAAACoAAAAAAACDAAAAAAAADgAAAAABAA4AAAAAAQAOAAAAAAAADgAAAAAAAA4AAAAAAwAOAAAAAAMADgAAAAABAA== + tiles: EAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAIAAcAAAAAAAAHAAAAAAAABwAAAAAJAA0AAAAAAgCDAAAAAAAAIAAAAAAAACAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAMAIAAAAAAAACAAAAAAAAAgAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAeAAAAAAEADQAAAAABAIMAAAAAAAAgAAAAAAAAIAAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAMAHgAAAAAAAA0AAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAADAAQAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAHgAAAAAAAB4AAAAAAwCDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAIAgwAAAAAAAAQAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAHgAAAAAAAB4AAAAAAwAeAAAAAAIABAAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAADAAQAAAAAAgAEAAAAAAEABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAADAAQAAAAAAAAEAAAAAAMABAAAAAADAAQAAAAAAAADAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAABQAAAAABAAUAAAAAAwAFAAAAAAMABQAAAAAAAAUAAAAAAQAEAAAAAAMABAAAAAAAAAQAAAAAAwAEAAAAAAEABAAAAAAAAAQAAAAAAAAEAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAgAFAAAAAAAABQAAAAACAAUAAAAAAAAFAAAAAAAABAAAAAACAAQAAAAAAAAEAAAAAAMABAAAAAADAIMAAAAAAAAEAAAAAAEAgwAAAAAAAIMAAAAAAAAFAAAAAAMABQAAAAACAIMAAAAAAAAFAAAAAAAABQAAAAACAAUAAAAAAQAFAAAAAAAABQAAAAADAAQAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAQCDAAAAAAAABAAAAAAAAAQAAAAAAwCDAAAAAAAABQAAAAACAAUAAAAAAgAFAAAAAAAABQAAAAABAAUAAAAAAAAFAAAAAAMABQAAAAAAAAUAAAAAAgAEAAAAAAAABAAAAAABAAQAAAAAAgAEAAAAAAEAgwAAAAAAAAQAAAAAAgAEAAAAAAIAgwAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAACAAUAAAAAAQAFAAAAAAIABQAAAAACAAUAAAAAAQAFAAAAAAEABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAIABQAAAAACAAUAAAAAAgAFAAAAAAMABQAAAAAAAAUAAAAAAAAFAAAAAAIABQAAAAABAAQAAAAAAgCDAAAAAAAABwAAAAALAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAABQAAAAACAAUAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAwAFAAAAAAIABQAAAAACAAUAAAAAAwACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADgAAAAABAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAYABwAAAAAAAAcAAAAABwACAAAAAAAAAgAAAAAAAAcAAAAAAACDAAAAAAAADgAAAAACAA4AAAAAAwAOAAAAAAIADgAAAAABAA4AAAAAAAAOAAAAAAMADgAAAAADAA== version: 7 -5,-2: ind: -5,-2 - tiles: gwAAAAAAAAUAAAAAAgAFAAAAAAMABQAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACkAAAAAAACDAAAAAAAAEQAAAAADABEAAAAAAwARAAAAAAIAEQAAAAABABEAAAAAAwAEAAAAAAAABAAAAAAAAIMAAAAAAAAFAAAAAAEABQAAAAABAAUAAAAAAQCDAAAAAAAAKgAAAAAAACoAAAAAAAApAAAAAAAAgwAAAAAAABEAAAAAAAARAAAAAAIAEQAAAAABABEAAAAAAwARAAAAAAIABAAAAAABAAQAAAAAAwCDAAAAAAAABQAAAAABAAUAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKQAAAAAAAIMAAAAAAAARAAAAAAIAEQAAAAACABEAAAAAAwARAAAAAAMAEQAAAAABAAQAAAAAAAAEAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAIAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACkAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAMAgwAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAABAIMAAAAAAAADAAAAAAAAAwAAAAAAAIMAAAAAAAAqAAAAAAoAKgAAAAAAACoAAAAAAAApAAAAAAAAKgAAAAAAAIMAAAAAAAAFAAAAAAIABQAAAAACAAUAAAAAAwCDAAAAAAAABAAAAAACAAQAAAAAAgADAAAAAAEAAwAAAAACAAMAAAAAAwCDAAAAAAAAKQAAAAAAACoAAAAACQAqAAAAAAAAKQAAAAAAACoAAAAACACDAAAAAAAABQAAAAADAAUAAAAAAQAFAAAAAAIAgwAAAAAAAAQAAAAAAwAEAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACkAAAAAAAAqAAAAAAAAKgAAAAAAACkAAAAAAAAqAAAAAAAABQAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAACAAUAAAAAAwAEAAAAAAEABAAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAYAKgAAAAAAACoAAAAAAAAqAAAAAAgAKgAAAAAGAIMAAAAAAAADAAAAAAMAAwAAAAAAAAMAAAAAAACDAAAAAAAABAAAAAACAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAkAAAAAAAADAAAAAAEABAAAAAADAAQAAAAAAwAEAAAAAAIAgwAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAMAAwAAAAACAAQAAAAAAAAEAAAAAAMABAAAAAADAIMAAAAAAAAEAAAAAAMABAAAAAADAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACQAAAAAAAAMAAAAAAAAEAAAAAAIABAAAAAACAAQAAAAAAQCDAAAAAAAAgwAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAMABAAAAAADAAQAAAAAAAAEAAAAAAMABAAAAAACAAsAAAAAAAAEAAAAAAIABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAJAAAAAAAAAwAAAAACAAQAAAAAAwAEAAAAAAEABAAAAAAAAAQAAAAAAgCDAAAAAAAABAAAAAADAAQAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAApAAAAAAAAKgAAAAAAAAQAAAAAAAAEAAAAAAMABAAAAAAAAA== + tiles: gwAAAAAAAAUAAAAAAQAFAAAAAAIABQAAAAAAAIMAAAAAAAAHAAAAAAMABwAAAAAAAAIAAAAAAACDAAAAAAAAEQAAAAAAABEAAAAAAwARAAAAAAEAEQAAAAADABEAAAAAAAAEAAAAAAEABAAAAAAAAIMAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAQCDAAAAAAAABwAAAAAAAAcAAAAAAAACAAAAAAAAgwAAAAAAABEAAAAAAwARAAAAAAMAEQAAAAACABEAAAAAAQARAAAAAAAABAAAAAABAAQAAAAAAACDAAAAAAAABQAAAAABAAUAAAAAAwCDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAAAgAAAAAAAIMAAAAAAAARAAAAAAIAEQAAAAACABEAAAAAAgARAAAAAAMAEQAAAAACAAQAAAAAAAAEAAAAAAIAgwAAAAAAAAMAAAAAAQADAAAAAAEAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAMAgwAAAAAAAIMAAAAAAAAEAAAAAAEABAAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAACAIMAAAAAAAAHAAAAAAAABwAAAAADAAcAAAAAAAACAAAAAAAABwAAAAAAAIMAAAAAAAAFAAAAAAEABQAAAAACAAUAAAAAAwCDAAAAAAAABAAAAAADAAQAAAAAAAADAAAAAAIAAwAAAAACAAMAAAAAAwCDAAAAAAAAAgAAAAAAAAcAAAAAAAAHAAAAAAcAAgAAAAAAAAcAAAAAAACDAAAAAAAABQAAAAADAAUAAAAAAQAFAAAAAAIAgwAAAAAAAAQAAAAAAAAEAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAIAAAAAAAAHAAAAAAkABwAAAAAAAAIAAAAAAAAHAAAAAAAABQAAAAACAAMAAAAAAwADAAAAAAMAAwAAAAAAAAUAAAAAAgAEAAAAAAIABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAAADAAAAAAIAAwAAAAABAAMAAAAAAQCDAAAAAAAABAAAAAADAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAkAAAAAAAADAAAAAAMABAAAAAABAAQAAAAAAAAEAAAAAAIAgwAAAAAAAAQAAAAAAwAEAAAAAAMABAAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAMAAwAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAADAIMAAAAAAAAEAAAAAAEABAAAAAAAAAQAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACQAAAAAAAAMAAAAAAQAEAAAAAAEABAAAAAADAAQAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAQADAAAAAAAABAAAAAABAAQAAAAAAAAEAAAAAAEABAAAAAADAAsAAAAAAAAEAAAAAAIABAAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAJAAAAAAAAAwAAAAABAAQAAAAAAAAEAAAAAAIABAAAAAABAAQAAAAAAgCDAAAAAAAABAAAAAACAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAQAHAAAAAAAABwAAAAAAAAcAAAAAAAACAAAAAAAABwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAA== version: 7 -4,-2: ind: -4,-2 - tiles: AwAAAAABAAMAAAAAAwADAAAAAAIAAwAAAAAAAAMAAAAAAQAEAAAAAAIABAAAAAADAAMAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAwADAAAAAAEAAwAAAAACAAMAAAAAAQADAAAAAAMABAAAAAAAAAQAAAAAAQADAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAEABAAAAAABAAQAAAAAAAAEAAAAAAAABAAAAAACAAQAAAAAAgAEAAAAAAAAAwAAAAACAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACDAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAFABYAAAAAAAAEAAAAAAAABAAAAAABAIMAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAgwAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAADABYAAAAAAAAWAAAAAAAABAAAAAACAAQAAAAAAgADAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAMAAAAAAQAIAAAAAAAACAAAAAAAAAgAAAAAAAAWAAAAAAAAFgAAAAAMABYAAAAAAAAWAAAAAAAAFgAAAAAAAAQAAAAAAwAEAAAAAAEAgwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACDAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAADAAQAAAAAAgAEAAAAAAIABAAAAAACAAQAAAAAAAAEAAAAAAAABAAAAAACAIMAAAAAAACDAAAAAAAAAwAAAAACAAMAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAACAAMAAAAAAwADAAAAAAIABAAAAAABAAQAAAAAAQCDAAAAAAAABAAAAAABAAQAAAAAAwAEAAAAAAAABAAAAAACAAQAAAAAAAAEAAAAAAIABAAAAAABAIMAAAAAAAADAAAAAAEAAwAAAAACAAMAAAAAAAADAAAAAAMAAwAAAAAAAAQAAAAAAwAEAAAAAAAAAwAAAAAAAAQAAAAAAgAEAAAAAAMAAwAAAAADAAMAAAAAAwADAAAAAAIABAAAAAAAAAQAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAAAwAEAAAAAAIABAAAAAAAAAMAAAAAAAAEAAAAAAIABAAAAAACAAMAAAAAAgADAAAAAAIAAwAAAAADAAQAAAAAAQAEAAAAAAMAgwAAAAAAAIMAAAAAAAAEAAAAAAMABAAAAAAAAAQAAAAAAQCDAAAAAAAABAAAAAABAAQAAAAAAwADAAAAAAMABAAAAAADAAQAAAAAAgADAAAAAAMAAwAAAAABAAMAAAAAAgAEAAAAAAEAKgAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAACAAQAAAAAAgAEAAAAAAMABAAAAAABAAsAAAAAAAALAAAAAAAAgwAAAAAAAAQAAAAAAwAEAAAAAAMAAwAAAAACAAMAAAAAAwADAAAAAAAABAAAAAABACoAAAAAAACDAAAAAAAABAAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAADAAQAAAAAAwAEAAAAAAAABAAAAAAAAAQAAAAAAgAEAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAEABAAAAAADAAQAAAAAAwAEAAAAAAIABAAAAAAAAAQAAAAAAACDAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAEAKgAAAAAAACoAAAAAAQAqAAAAAAAAKgAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAACAIMAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAgAEAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAADAAQAAAAAAgAEAAAAAAIABAAAAAACAAQAAAAAAQAEAAAAAAIABAAAAAACAAQAAAAAAgAqAAAAAAgAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAEACoAAAAAAAAqAAAAAAAAKgAAAAAAAA== + tiles: AwAAAAADAAMAAAAAAwADAAAAAAAAAwAAAAADAAMAAAAAAwAEAAAAAAIABAAAAAABAAMAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAIAAwAAAAADAAMAAAAAAAADAAAAAAMABAAAAAAAAAQAAAAAAAADAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAMABAAAAAADAAQAAAAAAQAEAAAAAAMABAAAAAACAAQAAAAAAAAEAAAAAAEAAwAAAAACAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACDAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAKwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACsAAAAAAAAEAAAAAAIABAAAAAAAAIMAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAAgwAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAABAAAAAABAAQAAAAAAAADAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAAMAAAAAAwAIAAAAAAAACAAAAAAAAAgAAAAAAAArAAAAAAAAKwAAAAAAACsAAAAAAAArAAAAAAAAKwAAAAAAAAQAAAAAAwAEAAAAAAEAgwAAAAAAAA8AAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAACDAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAABAAQAAAAAAgAEAAAAAAIABAAAAAADAAQAAAAAAwAEAAAAAAMABAAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAACAAMAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAMAAwAAAAABAAMAAAAAAwADAAAAAAEABAAAAAABAAQAAAAAAwCDAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAMABAAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAABAIMAAAAAAAADAAAAAAIAAwAAAAADAAMAAAAAAAADAAAAAAEAAwAAAAADAAQAAAAAAgAEAAAAAAIAAwAAAAAAAAQAAAAAAAAEAAAAAAMAAwAAAAAAAAMAAAAAAwADAAAAAAIABAAAAAABAAQAAAAAAwADAAAAAAMAAwAAAAABAAMAAAAAAQADAAAAAAIAAwAAAAAAAAMAAAAAAAAEAAAAAAMABAAAAAABAAMAAAAAAwAEAAAAAAMABAAAAAACAAMAAAAAAQADAAAAAAEAAwAAAAABAAQAAAAAAAAEAAAAAAIAgwAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAACAAQAAAAAAACDAAAAAAAABAAAAAAAAAQAAAAAAwADAAAAAAMABAAAAAABAAQAAAAAAQADAAAAAAAAAwAAAAACAAMAAAAAAwAEAAAAAAMABwAAAAAAAIMAAAAAAAAEAAAAAAEABAAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAABAAsAAAAAAAALAAAAAAAAgwAAAAAAAAQAAAAAAwAEAAAAAAEAAwAAAAABAAMAAAAAAgADAAAAAAIABAAAAAABAAcAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAQAEAAAAAAIABAAAAAACAAQAAAAAAAAEAAAAAAAABAAAAAADAAQAAAAAAQAEAAAAAAMABAAAAAADAAQAAAAAAAAEAAAAAAMABAAAAAACAAcAAAAAAAAHAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAIABAAAAAABAAQAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAwCDAAAAAAAABAAAAAACAAQAAAAAAQAEAAAAAAMABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAIAIMAAAAAAAAEAAAAAAIABAAAAAACAIMAAAAAAAAEAAAAAAIABAAAAAABAAQAAAAAAQAEAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAABQAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAQABwAAAAAAAA== version: 7 -6,-2: ind: -6,-2 - tiles: BAAAAAACAAMAAAAAAAADAAAAAAMAAwAAAAADAAMAAAAAAwAEAAAAAAMAgwAAAAAAAAMAAAAAAQADAAAAAAIAAwAAAAACAIMAAAAAAAADAAAAAAIAAwAAAAADAAMAAAAAAAADAAAAAAMAAwAAAAAAAAQAAAAAAAADAAAAAAMAAwAAAAAAAAMAAAAAAgADAAAAAAEABAAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAgwAAAAAAAIMAAAAAAAAEAAAAAAEAAwAAAAADAAMAAAAAAgADAAAAAAAAAwAAAAABAAQAAAAAAQCDAAAAAAAAAwAAAAACAAMAAAAAAgADAAAAAAMAAwAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAACAAMAAAAAAgADAAAAAAMABAAAAAAAAAMAAAAAAQADAAAAAAIAAwAAAAABAAMAAAAAAAAEAAAAAAIAgwAAAAAAAAMAAAAAAgADAAAAAAIAAwAAAAAAAAMAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAABAAQAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAwADAAAAAAEABAAAAAADAAMAAAAAAwADAAAAAAIAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAIAAwAAAAAAAAMAAAAAAwAEAAAAAAMAAwAAAAACAAMAAAAAAgADAAAAAAEAAwAAAAABAAQAAAAAAQCDAAAAAAAAAwAAAAACAAMAAAAAAgADAAAAAAIAAwAAAAABAAMAAAAAAAADAAAAAAAAAwAAAAADAAMAAAAAAQADAAAAAAEABAAAAAACAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAMAgwAAAAAAAAMAAAAAAwADAAAAAAIAAwAAAAAAAAMAAAAAAQADAAAAAAIAAwAAAAABAAMAAAAAAQADAAAAAAEAAwAAAAACAAQAAAAAAwAEAAAAAAMAgwAAAAAAAAQAAAAAAQAEAAAAAAMABAAAAAABAIMAAAAAAACDAAAAAAAABAAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAEABAAAAAADAIMAAAAAAAAEAAAAAAEABAAAAAAAAAQAAAAAAQAEAAAAAAEABAAAAAAAAAQAAAAAAwAEAAAAAAEAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAABAAAAAACAAQAAAAAAgCDAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAABAAQAAAAAAQAEAAAAAAMABAAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAMABAAAAAACAAQAAAAAAgAEAAAAAAIABAAAAAACAAQAAAAAAAALAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAABAAAAAADAIMAAAAAAAAEAAAAAAEABAAAAAADAAQAAAAAAgAEAAAAAAIABAAAAAACAAQAAAAAAQAEAAAAAAMAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAABAAAAAADAAQAAAAAAQCDAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAABAAQAAAAAAgAEAAAAAAEABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAAEAAAAAAAABAAAAAAAAIMAAAAAAAAEAAAAAAMABAAAAAABAAQAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== + tiles: BAAAAAADAAMAAAAAAwADAAAAAAIAAwAAAAAAAAMAAAAAAAAEAAAAAAMAgwAAAAAAAAMAAAAAAwADAAAAAAIAAwAAAAACAIMAAAAAAAADAAAAAAMAAwAAAAACAAMAAAAAAAADAAAAAAIAAwAAAAADAAQAAAAAAQADAAAAAAEAAwAAAAAAAAMAAAAAAwADAAAAAAEABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAgwAAAAAAAIMAAAAAAAAEAAAAAAAAAwAAAAABAAMAAAAAAQADAAAAAAAAAwAAAAABAAQAAAAAAwCDAAAAAAAAAwAAAAADAAMAAAAAAQADAAAAAAIAAwAAAAACAAMAAAAAAQADAAAAAAAAAwAAAAABAAMAAAAAAQADAAAAAAAABAAAAAAAAAMAAAAAAQADAAAAAAIAAwAAAAADAAMAAAAAAAAEAAAAAAIAgwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAABAAMAAAAAAgADAAAAAAAAAwAAAAABAAMAAAAAAAADAAAAAAAAAwAAAAADAAQAAAAAAAADAAAAAAEAAwAAAAACAAMAAAAAAgADAAAAAAIABAAAAAADAAMAAAAAAAADAAAAAAEAAwAAAAABAAMAAAAAAwADAAAAAAIAAwAAAAACAAMAAAAAAgADAAAAAAEAAwAAAAABAAMAAAAAAgAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAABAAQAAAAAAwCDAAAAAAAAAwAAAAADAAMAAAAAAgADAAAAAAMAAwAAAAABAAMAAAAAAQADAAAAAAIAAwAAAAADAAMAAAAAAwADAAAAAAIABAAAAAABAAQAAAAAAAAEAAAAAAIABAAAAAACAAQAAAAAAwAEAAAAAAIAgwAAAAAAAAMAAAAAAQADAAAAAAIAAwAAAAADAAMAAAAAAAADAAAAAAEAAwAAAAADAAMAAAAAAgADAAAAAAMAAwAAAAADAAQAAAAAAAAEAAAAAAEAgwAAAAAAAAQAAAAAAgAEAAAAAAAABAAAAAACAIMAAAAAAACDAAAAAAAABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAwAEAAAAAAEABAAAAAADAAQAAAAAAAAEAAAAAAEAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAABAAAAAAAAAQAAAAAAwCDAAAAAAAABAAAAAABAAQAAAAAAwAEAAAAAAEABAAAAAACAAQAAAAAAgAEAAAAAAIABAAAAAABAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAAABAAAAAACAAQAAAAAAwAEAAAAAAIABAAAAAACAAQAAAAAAQALAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAABAAAAAADAIMAAAAAAAAEAAAAAAMABAAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAACAAQAAAAAAgAEAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAABAAAAAACAAQAAAAAAwCDAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAQAAAAAAQAEAAAAAAAABAAAAAABAAQAAAAAAgAEAAAAAAMABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAAEAAAAAAIABAAAAAADAIMAAAAAAAAEAAAAAAAABAAAAAABAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== version: 7 -5,-4: ind: -5,-4 - tiles: KgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAEAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAQAAAAAAAAEAAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAACACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAwAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAQANAAAAAAAAKgAAAAAAACoAAAAACQAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAAAAIMAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAABACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAADAA0AAAAAAQAqAAAAAAAAKgAAAAAAACoAAAAACAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAEAgwAAAAAAAAMAAAAAAQADAAAAAAMAgwAAAAAAAIMAAAAAAAANAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAAEAAAAAAAABAAAAAABAAQAAAAAAwAEAAAAAAEABAAAAAABAAQAAAAAAQAEAAAAAAIABAAAAAAAACkAAAAAAAApAAAAAAAAKgAAAAAAACoAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAgAEAAAAAAAABAAAAAACAAQAAAAAAAAEAAAAAAMABAAAAAACAAQAAAAAAgAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAACAAQAAAAAAwAEAAAAAAAABAAAAAACAAQAAAAAAwAEAAAAAAEAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAAAAIMAAAAAAAAEAAAAAAEABAAAAAABAAQAAAAAAAAEAAAAAAMABAAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAADAAQAAAAAAwCDAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAADAAQAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAMAgwAAAAAAAAMAAAAAAwADAAAAAAEAAwAAAAABAAQAAAAAAgAEAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAEABAAAAAADAC8AAAAAAAAvAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAABAAAAAACAIMAAAAAAAAvAAAAAAAALwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAABACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACkAAAAAAAApAAAAAAAALwAAAAAAAC8AAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAA== + tiles: BwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAQAAAAAAAAEAAAAAAAAAcAAAAAAwAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAQAHAAAAAAAABwAAAAAAAAcAAAAABwAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAQANAAAAAAEABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAADAIMAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAAADQAAAAABAAcAAAAADAAHAAAAAAAABwAAAAAIAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAADAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAADAA0AAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAIAgwAAAAAAAAMAAAAAAQADAAAAAAMAgwAAAAAAAIMAAAAAAAANAAAAAAEABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAAEAAAAAAMABAAAAAAAAAQAAAAAAwAEAAAAAAIABAAAAAABAAQAAAAAAAAEAAAAAAAABAAAAAACAAIAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAAAQALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAADAAQAAAAAAAAEAAAAAAIABAAAAAABAAQAAAAAAQAEAAAAAAAABAAAAAACAAQAAAAAAwAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAQAAAAAAwAEAAAAAAMABAAAAAADAAQAAAAAAgAEAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAAABwAAAAAAAAcAAAAACwAHAAAAAAAABwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAAAAIMAAAAAAAAEAAAAAAMABAAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAACDAAAAAAAABAAAAAACAAQAAAAAAQAEAAAAAAIABAAAAAADAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAIAgwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAQAAAAAAQAEAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAABAC8AAAAAAAAvAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAoABwAAAAAIAAcAAAAAAACDAAAAAAAABAAAAAACAIMAAAAAAAAvAAAAAAAALwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAIAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAIAAAAAAAACAAAAAAAALwAAAAADAC8AAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAkABwAAAAALAAcAAAAAAwAHAAAAAAgABwAAAAAAAA== version: 7 -6,-3: ind: -6,-3 - tiles: gwAAAAAAAAMAAAAAAgADAAAAAAAALAAAAAADACwAAAAAAAAsAAAAAAEALAAAAAADACwAAAAAAwAsAAAAAAIALAAAAAADAC8AAAAAAQAvAAAAAAAALwAAAAAKAC8AAAAAAAAvAAAAAAAALwAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAACAIMAAAAAAAAEAAAAAAIALAAAAAAAACwAAAAAAAAsAAAAAAEALAAAAAAAACwAAAAAAgAvAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAADAAQAAAAAAAAEAAAAAAMABAAAAAABAAQAAAAAAwAEAAAAAAEABAAAAAADAC8AAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAAAvAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAADAAQAAAAAAAAEAAAAAAAACwAAAAAAAAQAAAAAAgAEAAAAAAAABAAAAAADAAQAAAAAAgAEAAAAAAIABAAAAAADAAQAAAAAAQAEAAAAAAEABAAAAAABAAQAAAAAAQAEAAAAAAMABAAAAAACAAQAAAAAAwAEAAAAAAIABAAAAAADAAQAAAAAAgAEAAAAAAEABAAAAAAAAAQAAAAAAwAEAAAAAAMABAAAAAACAAQAAAAAAQAEAAAAAAEABAAAAAADAAQAAAAAAwAEAAAAAAIABAAAAAACAAQAAAAAAQAEAAAAAAEABAAAAAAAAAQAAAAAAQALAAAAAAAABAAAAAABAAQAAAAAAQAEAAAAAAIABAAAAAAAAAQAAAAAAwAEAAAAAAIABAAAAAADAAQAAAAAAgAEAAAAAAEAgwAAAAAAAC4AAAAAAgCDAAAAAAAABAAAAAAAAAQAAAAAAgAEAAAAAAAAgwAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAAAEAAAAAAAABAAAAAADAAQAAAAAAgAEAAAAAAEAgwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAACAIMAAAAAAAAcAAAAAAAABAAAAAABAAQAAAAAAQAEAAAAAAIABAAAAAACAAQAAAAAAQAEAAAAAAIABAAAAAABAAQAAAAAAAAEAAAAAAMABAAAAAABAAMAAAAAAwAEAAAAAAEABAAAAAADAAQAAAAAAAAuAAAAAAEAHAAAAAAAAAQAAAAAAQAEAAAAAAMABAAAAAABAAQAAAAAAQAEAAAAAAAAgwAAAAAAAAQAAAAAAwCDAAAAAAAABAAAAAABAAQAAAAAAwADAAAAAAEABAAAAAACAAQAAAAAAAAEAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAABAAQAAAAAAwAEAAAAAAEABAAAAAAAABEAAAAAAQARAAAAAAMAAwAAAAADAAQAAAAAAAAEAAAAAAMAAwAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAACAAQAAAAAAgAIAAAAAAAACAAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAADAAQAAAAAAQARAAAAAAAAEQAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAABAIMAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAwCDAAAAAAAAgwAAAAAAAC4AAAAAAQCDAAAAAAAAgwAAAAAAAAMAAAAAAQADAAAAAAMAAwAAAAACAIMAAAAAAAAFAAAAAAEABQAAAAACAAUAAAAAAQAFAAAAAAMABQAAAAACAAQAAAAAAwAEAAAAAAMABAAAAAABAAQAAAAAAAAEAAAAAAMABAAAAAADAIMAAAAAAAADAAAAAAMAAwAAAAACAAMAAAAAAgCDAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAMABQAAAAACAAUAAAAAAAAEAAAAAAIABAAAAAABAAQAAAAAAwAEAAAAAAIABAAAAAABAAQAAAAAAQAEAAAAAAIAAwAAAAACAAMAAAAAAAADAAAAAAIAgwAAAAAAAAUAAAAAAwAFAAAAAAEABQAAAAADAAUAAAAAAAAFAAAAAAEABAAAAAADAAMAAAAAAgADAAAAAAEAAwAAAAACAAMAAAAAAQAEAAAAAAMAgwAAAAAAAAMAAAAAAgADAAAAAAEAAwAAAAABAIMAAAAAAAAFAAAAAAIABQAAAAADAAUAAAAAAQAFAAAAAAMABQAAAAAAAA== + tiles: gwAAAAAAAAMAAAAAAAADAAAAAAAALAAAAAACACwAAAAAAwAsAAAAAAIALAAAAAADACwAAAAAAAAsAAAAAAAALAAAAAABAC8AAAAAAAAvAAAAAAsALwAAAAAAAC8AAAAAAAAvAAAAAAAALwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAABAIMAAAAAAAAEAAAAAAEALAAAAAACACwAAAAAAgAsAAAAAAAALAAAAAACACwAAAAAAwAvAAAAAAAALwAAAAAIAC8AAAAAAAAvAAAAAAAALwAAAAAAAC8AAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAACAAQAAAAAAgAEAAAAAAEABAAAAAABAAQAAAAAAgAEAAAAAAAABAAAAAABAC8AAAAAAQAvAAAAAAAALwAAAAAAAC8AAAAABgAvAAAAAAAABAAAAAADAAQAAAAAAAAEAAAAAAAABAAAAAACAAQAAAAAAAAEAAAAAAIACwAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAABAAQAAAAAAQAEAAAAAAAABAAAAAAAAAQAAAAAAgAEAAAAAAEABAAAAAAAAAQAAAAAAgAEAAAAAAEABAAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAACAAQAAAAAAAAEAAAAAAIABAAAAAACAAQAAAAAAwAEAAAAAAAABAAAAAACAAQAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAAAEAAAAAAEABAAAAAADAAQAAAAAAwAEAAAAAAIABAAAAAAAAAQAAAAAAwALAAAAAAAABAAAAAABAAQAAAAAAwAEAAAAAAMABAAAAAADAAQAAAAAAgAEAAAAAAEABAAAAAADAAQAAAAAAgAEAAAAAAEAgwAAAAAAAC4AAAAAAgCDAAAAAAAABAAAAAACAAQAAAAAAgAEAAAAAAIAgwAAAAAAABwAAAAAAAAEAAAAAAIABAAAAAABAAQAAAAAAwAEAAAAAAMABAAAAAAAAAQAAAAAAgAEAAAAAAIABAAAAAADAAQAAAAAAAAEAAAAAAEAgwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAABAIMAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAABAAQAAAAAAAAEAAAAAAMABAAAAAACAAQAAAAAAwAEAAAAAAEABAAAAAAAAAMAAAAAAgAEAAAAAAMABAAAAAAAAAQAAAAAAwAuAAAAAAMAHAAAAAAAAAQAAAAAAQAEAAAAAAEABAAAAAAAAAQAAAAAAgAEAAAAAAIAgwAAAAAAAAQAAAAAAQCDAAAAAAAABAAAAAACAAQAAAAAAgADAAAAAAAABAAAAAACAAQAAAAAAgAEAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAABAAQAAAAAAwAEAAAAAAIABAAAAAACABEAAAAAAQARAAAAAAMAAwAAAAABAAQAAAAAAAAEAAAAAAMAAwAAAAADAAQAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAwAEAAAAAAIABAAAAAADAAQAAAAAAQARAAAAAAIAEQAAAAADAAQAAAAAAQAEAAAAAAIABAAAAAADAIMAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAACAAQAAAAAAwCDAAAAAAAAgwAAAAAAAC4AAAAAAgCDAAAAAAAAgwAAAAAAAAMAAAAAAQADAAAAAAEAAwAAAAABAIMAAAAAAAAFAAAAAAAABQAAAAADAAUAAAAAAgAFAAAAAAAABQAAAAAAAAQAAAAAAAAEAAAAAAMABAAAAAADAAQAAAAAAQAEAAAAAAIABAAAAAABAIMAAAAAAAADAAAAAAMAAwAAAAACAAMAAAAAAgCDAAAAAAAABQAAAAADAAUAAAAAAAAFAAAAAAEABQAAAAADAAUAAAAAAQAEAAAAAAAABAAAAAADAAQAAAAAAgAEAAAAAAEABAAAAAABAAQAAAAAAAAEAAAAAAIAAwAAAAAAAAMAAAAAAgADAAAAAAMAgwAAAAAAAAUAAAAAAQAFAAAAAAEABQAAAAADAAUAAAAAAwAFAAAAAAMABAAAAAACAAMAAAAAAgADAAAAAAEAAwAAAAACAAMAAAAAAAAEAAAAAAMAgwAAAAAAAAMAAAAAAQADAAAAAAMAAwAAAAABAIMAAAAAAAAFAAAAAAEABQAAAAABAAUAAAAAAgAFAAAAAAAABQAAAAAAAA== version: 7 -5,-3: ind: -5,-3 - tiles: LwAAAAAAAC8AAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAADACoAAAAABQAqAAAAAAgAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAAC8AAAAAAAAvAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAvAAAAAAgALwAAAAAJAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAACgAqAAAAAAAAKgAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAALwAAAAAEAC8AAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAAC8AAAAAAAAvAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAACgAqAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAvAAAAAAwALwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAABUAAAAAAAAVAAAAAAAAFQAAAAAAABUAAAAAAAAVAAAAAAAABAAAAAACAAQAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAKACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAwAVAAAAAAAAFQAAAAAAAAQAAAAAAwAEAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAwAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAEAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACgAAAAAAAAQAAAAAAgAEAAAAAAEABAAAAAABAAQAAAAAAwAEAAAAAAAABAAAAAAAACkAAAAAAAApAAAAAAAAEQAAAAADABEAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAABAAQAAAAAAQAEAAAAAAIABAAAAAACAAQAAAAAAAApAAAAAAAAKQAAAAAAABEAAAAAAAARAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAAUAAAAAAQAFAAAAAAEABQAAAAACAAUAAAAAAQAEAAAAAAIAKQAAAAAAACkAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAIABQAAAAABAAUAAAAAAQAFAAAAAAAAgwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKQAAAAAAACoAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAACDAAAAAAAABQAAAAACAAUAAAAAAwAFAAAAAAAABQAAAAAAAIMAAAAAAAAEAAAAAAMABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAIAKgAAAAAIACoAAAAAAAApAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAEQAAAAACAIMAAAAAAAARAAAAAAIABAAAAAACAAQAAAAAAwCDAAAAAAAABQAAAAACAAUAAAAAAwAFAAAAAAEAgwAAAAAAACoAAAAAAAAqAAAAAAAAKQAAAAAAAIMAAAAAAAARAAAAAAAAEQAAAAABABEAAAAAAwARAAAAAAEAgwAAAAAAAAQAAAAAAwAEAAAAAAAABQAAAAABAAUAAAAAAwAFAAAAAAAABQAAAAACAIMAAAAAAAAqAAAAAAAAKgAAAAAIACkAAAAAAACDAAAAAAAAEQAAAAADABEAAAAAAQARAAAAAAIAEQAAAAAAABEAAAAAAQAEAAAAAAMABAAAAAACAA== + tiles: LwAAAAAEAC8AAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAUABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAC8AAAAAAAAvAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAYABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAvAAAAAAAALwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAQABwAAAAAAAAcAAAAAAAAHAAAAAAAALwAAAAAAAC8AAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAC8AAAAABAAvAAAAAAoAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAABAAcAAAAAAAAHAAAAAAAABwAAAAAJAAcAAAAABgAHAAAAAAUABwAAAAAAAAcAAAAAAgAvAAAAAAAALwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAgAHAAAAAAAABAAAAAAAAAQAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAgABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAQAAAAAAAAEAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACgAAAAAAAAoAAAAAAAAHAAAAAAAABwAAAAAGAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAEAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAIAAAAAAAACAAAAAAAAEQAAAAAAABEAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAACAAAAAAAAAgAAAAAAABEAAAAAAAARAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACgAAAAAAAAUAAAAAAwAFAAAAAAAABQAAAAAAAAUAAAAAAgAKAAAAAAAAAgAAAAAAAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAMABQAAAAACAAUAAAAAAQAFAAAAAAIAgwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAgAAAAAAAAcAAAAACQACAAAAAAAAAgAAAAAAAAIAAAAAAACDAAAAAAAABQAAAAADAAUAAAAAAQAFAAAAAAAABQAAAAADAIMAAAAAAAAEAAAAAAMABAAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAACAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAEQAAAAADAIMAAAAAAAARAAAAAAEABAAAAAAAAAQAAAAAAgCDAAAAAAAABQAAAAACAAUAAAAAAAAFAAAAAAIAgwAAAAAAAAcAAAAAAgAHAAAAAAAAAgAAAAAAAIMAAAAAAAARAAAAAAIAEQAAAAABABEAAAAAAwARAAAAAAIAgwAAAAAAAAQAAAAAAQAEAAAAAAMABQAAAAACAAUAAAAAAwAFAAAAAAEABQAAAAACAIMAAAAAAAAHAAAAAAgABwAAAAAAAAIAAAAAAACDAAAAAAAAEQAAAAACABEAAAAAAwARAAAAAAIAEQAAAAACABEAAAAAAwAEAAAAAAEABAAAAAAAAA== version: 7 -2,0: ind: -2,0 - tiles: gwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAABAAAAAACAAQAAAAAAgAEAAAAAAAABAAAAAACAIMAAAAAAAAEAAAAAAEABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAEAgwAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAACAAQAAAAAAQAEAAAAAAIABAAAAAABAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAEABAAAAAADAAQAAAAAAgAEAAAAAAMABAAAAAADAAQAAAAAAwAEAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAMABAAAAAABAAQAAAAAAgCDAAAAAAAABAAAAAABAAQAAAAAAQAEAAAAAAIABAAAAAADAAQAAAAAAgAEAAAAAAIABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAMABAAAAAADAAQAAAAAAwCDAAAAAAAABAAAAAADAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAADAIMAAAAAAACDAAAAAAAABAAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAAAQAAAAAAwAEAAAAAAIABAAAAAADAAQAAAAAAgAEAAAAAAIABAAAAAAAAAQAAAAAAwAEAAAAAAMABAAAAAABAIMAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAgwAAAAAAACoAAAAAAAAEAAAAAAIABAAAAAABAAQAAAAAAwAEAAAAAAMABAAAAAADAAQAAAAAAgAEAAAAAAIABAAAAAABAAQAAAAAAQCDAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAIMAAAAAAAAqAAAAAAAABAAAAAAAAAQAAAAAAgAEAAAAAAEABAAAAAAAAAQAAAAAAQAEAAAAAAMABAAAAAADAAQAAAAAAQAEAAAAAAIABAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAACDAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAAAAIMAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAgwAAAAAAACoAAAAABQAEAAAAAAMABAAAAAABAAQAAAAAAwAEAAAAAAAABAAAAAADAAQAAAAAAAAEAAAAAAEABAAAAAABAAQAAAAAAwCDAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAIMAAAAAAAAqAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAMABAAAAAAAAAQAAAAAAAAEAAAAAAMABAAAAAAAAAQAAAAAAQAEAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAAA== + tiles: gwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAMABAAAAAAAAIMAAAAAAAAEAAAAAAMABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAACAAQAAAAAAAAEAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAEABAAAAAABAAQAAAAAAAAEAAAAAAEABAAAAAACAAQAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAMABAAAAAACAAQAAAAAAQAEAAAAAAAABAAAAAACAAQAAAAAAwAEAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAEABAAAAAADAAQAAAAAAwCDAAAAAAAABAAAAAACAAQAAAAAAgAEAAAAAAAABAAAAAACAAQAAAAAAQAEAAAAAAEABAAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAAAAAQAAAAAAACDAAAAAAAABAAAAAAAAAQAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAEABAAAAAACAIMAAAAAAACDAAAAAAAABAAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAADAAQAAAAAAQAEAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAEABAAAAAABAIMAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAgwAAAAAAAAcAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAgAEAAAAAAMABAAAAAADAAQAAAAAAQAEAAAAAAEABAAAAAABAAQAAAAAAgCDAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAIMAAAAAAAAHAAAAAAAABAAAAAADAAQAAAAAAgAEAAAAAAEABAAAAAABAAQAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAwAEAAAAAAIABAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAEABAAAAAADAIMAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAgwAAAAAAAAcAAAAAAAAEAAAAAAAABAAAAAADAAQAAAAAAwAEAAAAAAAABAAAAAACAAQAAAAAAgAEAAAAAAEABAAAAAADAAQAAAAAAACDAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAIMAAAAAAAAHAAAAAAAABAAAAAACAAQAAAAAAAAEAAAAAAEABAAAAAABAAQAAAAAAQAEAAAAAAMABAAAAAADAAQAAAAAAgAEAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAA== version: 7 -2,-2: ind: -2,-2 - tiles: AwAAAAACAA0AAAAAAgANAAAAAAEADQAAAAAAAAsAAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAAADQAAAAABAAsAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAAANAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAQALAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAMADQAAAAADAA0AAAAAAAALAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAAAAAMAAAAAAwADAAAAAAMADQAAAAAAAA0AAAAAAgANAAAAAAIACwAAAAAAAAMAAAAAAgADAAAAAAMAAwAAAAAAAAMAAAAAAgADAAAAAAMACwAAAAAAAAMAAAAAAQADAAAAAAMAAwAAAAABAAMAAAAAAwCDAAAAAAAAgwAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAAAAIMAAAAAAAADAAAAAAMAAwAAAAAAAAMAAAAAAQADAAAAAAEAAwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAAAAA0AAAAAAAANAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAADAAMAAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAAAAIMAAAAAAAAoAAAAAAIAgwAAAAAAAIMAAAAAAAAqAAAAAAAAgwAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAAAAA0AAAAAAgADAAAAAAIADQAAAAABAA0AAAAAAwANAAAAAAAADQAAAAABAA0AAAAAAACDAAAAAAAAKAAAAAAAACgAAAAAAQAqAAAAAAYAKgAAAAAFAIMAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAgANAAAAAAMAgwAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAACAA0AAAAAAQANAAAAAAIAgwAAAAAAACgAAAAAAQAoAAAAAAAAKAAAAAADACgAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAACDAAAAAAAACwAAAAAAAIMAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAABAAQAAAAAAQAEAAAAAAMABAAAAAAAAAQAAAAAAgAEAAAAAAAABAAAAAAAAIMAAAAAAAAFAAAAAAIABQAAAAABAAUAAAAAAwAFAAAAAAEABQAAAAAAAIMAAAAAAAANAAAAAAIABAAAAAADAAQAAAAAAAAEAAAAAAIABAAAAAACAAQAAAAAAAAEAAAAAAMABAAAAAABAAQAAAAAAACDAAAAAAAABQAAAAACAAUAAAAAAQAFAAAAAAEABQAAAAACAAUAAAAAAgCDAAAAAAAADQAAAAABAAQAAAAAAgAEAAAAAAMABAAAAAABAAQAAAAAAgAEAAAAAAIABAAAAAADAAQAAAAAAwAEAAAAAAAAAwAAAAABAAUAAAAAAwAFAAAAAAAABQAAAAADAAUAAAAAAQAFAAAAAAAAgwAAAAAAAA0AAAAAAQAEAAAAAAIABAAAAAABAAQAAAAAAQAEAAAAAAEABAAAAAABAAQAAAAAAwAEAAAAAAAABAAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAACAAMAAAAAAQADAAAAAAMAAwAAAAABAIMAAAAAAACDAAAAAAAABAAAAAACAAQAAAAAAwAEAAAAAAMABAAAAAADAAQAAAAAAwAEAAAAAAEABAAAAAADAAQAAAAAAACDAAAAAAAAAwAAAAADAAMAAAAAAAADAAAAAAIAAwAAAAABAAMAAAAAAQCDAAAAAAAAgwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== + tiles: AwAAAAABAA0AAAAAAQANAAAAAAIADQAAAAACAAsAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAAAAAsAAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAwANAAAAAAIAgwAAAAAAAIMAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAgALAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAMADQAAAAACAA0AAAAAAAALAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAEADQAAAAACAAMAAAAAAgADAAAAAAIADQAAAAABAA0AAAAAAwANAAAAAAMACwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAADAAMAAAAAAQADAAAAAAEACwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAADAAMAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAACAAMAAAAAAAADAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAACAAMAAAAAAwANAAAAAAIADQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAADAIMAAAAAAAAoAAAAAAMAgwAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAAAAA0AAAAAAQADAAAAAAEADQAAAAABAA0AAAAAAgANAAAAAAIADQAAAAABAA0AAAAAAwCDAAAAAAAAKAAAAAABACgAAAAAAgAHAAAAAAAABwAAAAAAAIMAAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAQANAAAAAAIAgwAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAEAgwAAAAAAACgAAAAAAwAoAAAAAAEAKAAAAAABACgAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAACDAAAAAAAACwAAAAAAAIMAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAEABAAAAAABAAQAAAAAAQAEAAAAAAMABAAAAAACAAQAAAAAAgAEAAAAAAEABAAAAAACAIMAAAAAAAAFAAAAAAEABQAAAAAAAAUAAAAAAwAFAAAAAAIABQAAAAADAIMAAAAAAAANAAAAAAAABAAAAAAAAAQAAAAAAwAEAAAAAAMABAAAAAADAAQAAAAAAwAEAAAAAAEABAAAAAAAAAQAAAAAAgCDAAAAAAAABQAAAAADAAUAAAAAAAAFAAAAAAMABQAAAAADAAUAAAAAAgCDAAAAAAAADQAAAAADAAQAAAAAAAAEAAAAAAEABAAAAAACAAQAAAAAAgAEAAAAAAEABAAAAAADAAQAAAAAAAAEAAAAAAEAAwAAAAAAAAUAAAAAAgAFAAAAAAAABQAAAAADAAUAAAAAAwAFAAAAAAMAgwAAAAAAAA0AAAAAAAAEAAAAAAAABAAAAAABAAQAAAAAAgAEAAAAAAAABAAAAAADAAQAAAAAAAAEAAAAAAAABAAAAAADAIMAAAAAAAADAAAAAAEAAwAAAAAAAAMAAAAAAwADAAAAAAIAAwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAgAEAAAAAAEABAAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAAAAAQAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAQADAAAAAAAAAwAAAAABAAMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== version: 7 -2,-4: ind: -2,-4 - tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAEACoAAAAAAAAqAAAAAAEAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAALACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAwAqAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAKACoAAAAAAAAqAAAAAAMAKgAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAACAA0AAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAgwAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAADAIMAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAwANAAAAAAIADQAAAAADAA0AAAAAAgCDAAAAAAAADQAAAAACAA0AAAAAAgCDAAAAAAAAKgAAAAAAAIMAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAACDAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAEADQAAAAADAA0AAAAAAgANAAAAAAAAgwAAAAAAACoAAAAAAACDAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAMAgwAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAMADQAAAAADAIMAAAAAAAANAAAAAAIADQAAAAACAIMAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAAIMAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAgCDAAAAAAAACwAAAAAAAAMAAAAAAQCDAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAEAgwAAAAAAAA0AAAAAAAANAAAAAAMAgwAAAAAAACoAAAAACwCDAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAMAAwAAAAACAAsAAAAAAAADAAAAAAEAAwAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAMADQAAAAACAIMAAAAAAAAqAAAAAAYAAwAAAAADAA0AAAAAAwANAAAAAAMADQAAAAADAIMAAAAAAAALAAAAAAAAAwAAAAABAIMAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAQCDAAAAAAAADQAAAAAAAA0AAAAAAQCDAAAAAAAAKgAAAAAAAA== + tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAACwAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAIAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAQABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAACQAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAADAAHAAAAAAAABwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAADAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAADAA0AAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAACACDAAAAAAAAgwAAAAAAAA0AAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAACAIMAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAACAA0AAAAAAwCDAAAAAAAADQAAAAACAA0AAAAAAwCDAAAAAAAABwAAAAAAAIMAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAwCDAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAAAAA0AAAAAAAANAAAAAAMAgwAAAAAAAAcAAAAAAwCDAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAAAgwAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAAADQAAAAADAIMAAAAAAAANAAAAAAEADQAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAIADQAAAAAAAA0AAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAKAIMAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAACDAAAAAAAACwAAAAAAAAMAAAAAAACDAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAEAgwAAAAAAAA0AAAAAAQANAAAAAAAAgwAAAAAAAAcAAAAAAACDAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAIAAwAAAAADAAsAAAAAAAADAAAAAAIAAwAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAACAA0AAAAAAwANAAAAAAEADQAAAAABAIMAAAAAAAAHAAAAAAAAAwAAAAABAA0AAAAAAAANAAAAAAMADQAAAAABAIMAAAAAAAALAAAAAAAAAwAAAAABAIMAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAQCDAAAAAAAADQAAAAACAA0AAAAAAgCDAAAAAAAABwAAAAAAAA== version: 7 -2,-3: ind: -2,-3 - tiles: gwAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAgADAAAAAAIAAwAAAAABAAMAAAAAAAADAAAAAAAAgwAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAMAgwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAADAAQAAAAAAgAEAAAAAAIABAAAAAAAAIMAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAACAAQAAAAAAgAEAAAAAAMABAAAAAACAAQAAAAAAgAEAAAAAAMABAAAAAAAAAQAAAAAAgAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAQCDAAAAAAAABAAAAAAAAAQAAAAAAgAEAAAAAAIABAAAAAACAAQAAAAAAQAEAAAAAAMAgwAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAMAgwAAAAAAAAQAAAAAAwAEAAAAAAIABAAAAAADAAQAAAAAAgAEAAAAAAEABAAAAAABAIMAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACDAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAMADQAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAgAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAACDAAAAAAAAAwAAAAADAAMAAAAAAgCDAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAMAgwAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAADAIMAAAAAAACDAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAgwAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAIADQAAAAABAA0AAAAAAQCDAAAAAAAAgwAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAAAAIMAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAQCDAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAMAgwAAAAAAAIMAAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAgADAAAAAAAAAwAAAAACAAMAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAMAgwAAAAAAAAMAAAAAAwADAAAAAAAAgwAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAACAIMAAAAAAAANAAAAAAEADQAAAAABAA0AAAAAAgCDAAAAAAAAgwAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAAAAIMAAAAAAAADAAAAAAMAAwAAAAABAIMAAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAQANAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAwCDAAAAAAAAAwAAAAADAAMAAAAAAACDAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAAAgwAAAAAAAA0AAAAAAwANAAAAAAAADQAAAAABAIMAAAAAAACDAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAACAIMAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAABAIMAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAQANAAAAAAAAgwAAAAAAAA== + tiles: gwAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAwCDAAAAAAAABAAAAAACAAQAAAAAAAADAAAAAAMAAwAAAAABAAMAAAAAAAADAAAAAAIAgwAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAMAgwAAAAAAAAQAAAAAAQAEAAAAAAEABAAAAAAAAAQAAAAAAwAEAAAAAAEABAAAAAABAIMAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAABAAQAAAAAAAAEAAAAAAMABAAAAAADAAQAAAAAAQAEAAAAAAEABAAAAAADAAQAAAAAAwAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAACDAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAACAAQAAAAAAwAEAAAAAAEAgwAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAEAgwAAAAAAAAQAAAAAAwAEAAAAAAEABAAAAAACAAQAAAAAAAAEAAAAAAMABAAAAAABAIMAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAACDAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAMADQAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAgAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAACDAAAAAAAAAwAAAAACAAMAAAAAAwCDAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAIAgwAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAADAIMAAAAAAACDAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAIAgwAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAAAAA0AAAAAAQCDAAAAAAAAgwAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAADAIMAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAwCDAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAMAgwAAAAAAAIMAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAQADAAAAAAAAAwAAAAACAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAADAIMAAAAAAACDAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAEAgwAAAAAAAAMAAAAAAQADAAAAAAAAgwAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAABAIMAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAQCDAAAAAAAAgwAAAAAAAA0AAAAAAwANAAAAAAIADQAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAADAIMAAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAwANAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAgCDAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAMAgwAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAABAIMAAAAAAACDAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAABAIMAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAABAIMAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAMAgwAAAAAAAA== version: 7 -1,-3: ind: -1,-3 - tiles: KQAAAAAAACoAAAAAAAAqAAAAAAkAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApAAAAAAAAKgAAAAAAACoAAAAADAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAABACoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAQAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAMAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAALACoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAEABQAAAAADAAUAAAAAAwAFAAAAAAMABQAAAAABAIMAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAJAAAAAACAAUAAAAAAwAkAAAAAAEABQAAAAABACQAAAAAAQCDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAJAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAACQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAGAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAEABQAAAAADAAUAAAAAAAAFAAAAAAAABQAAAAABAIMAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAJAAAAAAEAAUAAAAAAwAkAAAAAAQABQAAAAABACQAAAAABACDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -1,-2: ind: -1,-2 - tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACQAAAAAAQAFAAAAAAEABQAAAAABACQAAAAAAACDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAJAAAAAABACQAAAAAAQAkAAAAAAMAgwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAkAKgAAAAAAACoAAAAAAAAqAAAAAAYAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAEACoAAAAACAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAMAKgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAMABAAAAAADAAQAAAAAAAAEAAAAAAMAAwAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAADAAMAAAAAAAADAAAAAAEAAwAAAAABAIMAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAAAAAMAAAAAAwCDAAAAAAAABAAAAAABAAQAAAAAAAAEAAAAAAIABAAAAAABAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAAEAAAAAAEABAAAAAABAAQAAAAAAgADAAAAAAIAgwAAAAAAAAQAAAAAAQAEAAAAAAMABAAAAAADAAQAAAAAAgAEAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAwAEAAAAAAAABAAAAAACAAQAAAAAAQAEAAAAAAIABAAAAAAAAAQAAAAAAQAEAAAAAAAABAAAAAADAAQAAAAAAwCDAAAAAAAAgwAAAAAAAA== + tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACQAAAAAAAAFAAAAAAMABQAAAAADACQAAAAAAQCDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAJAAAAAAGACQAAAAAAwAkAAAAAAMAgwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAABAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAIABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAABAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEABAAAAAADAAQAAAAAAQAEAAAAAAEAAwAAAAAAAIMAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAgADAAAAAAIAAwAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAQAAAAAAgAEAAAAAAAABAAAAAACAAMAAAAAAQCDAAAAAAAABAAAAAADAAQAAAAAAAAEAAAAAAAABAAAAAACAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgAEAAAAAAIABAAAAAACAAQAAAAAAgADAAAAAAIAgwAAAAAAAAQAAAAAAQAEAAAAAAMABAAAAAADAAQAAAAAAQAEAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAACAAQAAAAAAgAEAAAAAAAABAAAAAACAAQAAAAAAgAEAAAAAAAABAAAAAABAAQAAAAAAgAEAAAAAAAABAAAAAAAAAQAAAAAAACDAAAAAAAAgwAAAAAAAA== version: 7 -1,-4: ind: -1,-4 - tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkAAAAAAAAqAAAAAAkAgwAAAAAAACoAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApAAAAAAAAKgAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQAAAAAAACoAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkAAAAAAAAqAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApAAAAAAAAKgAAAAAAACoAAAAACgAqAAAAAAAAKgAAAAAAACoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAcAKgAAAAAAACoAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAGACoAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQAAAAAAACoAAAAAAAAqAAAAAAEAKgAAAAAAACoAAAAAAAAqAAAAAAMAKgAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAMAKgAAAAAAACoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAACAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQAAAAAAACoAAAAAAAAqAAAAAAcAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAALACoAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAcAKgAAAAAAACoAAAAAAQAqAAAAAAAAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQAAAAAAACoAAAAAAQAqAAAAAAAAKgAAAAACACoAAAAAAAAqAAAAAAAAKgAAAAAEACoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAHAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAABwAAAAABAIMAAAAAAAAHAAAAAAAABwAAAAAIAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAcAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAHAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAcAAAAADAAHAAAAAAYABwAAAAAHAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAEAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAQABwAAAAAAAAcAAAAAAAAHAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAEAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAJAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAADAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAcAAAAABgAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAwABwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAQABwAAAAAGAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAABwAAAAAMAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAEABwAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAACAAcAAAAACwAHAAAAAAIABwAAAAALAAcAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -7,-4: ind: -7,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAQAKgAAAAAAACoAAAAACAAqAAAAAAgAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAsAKgAAAAAAACoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAGACoAAAAAAAAqAAAAAAUAKgAAAAAAACoAAAAAAAAqAAAAAAAAAQAAAAAAAAEAAAAAAAAqAAAAAAMAKgAAAAAAACoAAAAAAQAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAAAAAAAAAAAqAAAAAAgAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAIACoAAAAAAgApAAAAAAAAKgAAAAAIACoAAAAACAAqAAAAAAAAKgAAAAACACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAABQAqAAAAAAAAKQAAAAAAACoAAAAAAAAqAAAAAAwAKgAAAAAAACoAAAAAAwAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAEwAAAAAAABMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAACAAqAAAAAAAAKgAAAAACACoAAAAAAAAqAAAAAAAAKgAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAAAAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKQAAAAAAACoAAAAAAAAqAAAAAAoAKgAAAAAAACoAAAAAAAAqAAAAAAQAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACkAAAAAAAAqAAAAAAAAKgAAAAAEACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAGACoAAAAAAAAqAAAAAAgAKgAAAAAAACoAAAAAAwApAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAHACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKQAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAABAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACkAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAcAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAApAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAoAKgAAAAAAAIMAAAAAAAAEAAAAAAAADgAAAAABAA4AAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKQAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAABAAAAAACAA4AAAAAAQAOAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACkAAAAAAAAqAAAAAAAAKgAAAAAEACoAAAAAAAAqAAAAAAAAgwAAAAAAAAQAAAAAAgAOAAAAAAAADgAAAAADAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAFAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAACQAHAAAAAAoABwAAAAADAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAACAACAAAAAAAABwAAAAAAAAcAAAAACwAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAAAgAAAAAAAAcAAAAAAAAHAAAAAAkABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAEwAAAAAAABMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAACAAcAAAAAAAAHAAAAAAEABwAAAAAIAAcAAAAAAAAHAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAoABwAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAwABwAAAAAAAAcAAAAAAQAHAAAAAAAABwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAACAAcAAAAAAAAHAAAAAAAAAgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAgAHAAAAAAAABwAAAAAFAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAIAAAAAAAAHAAAAAAEABwAAAAAEAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAwACAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAAAEAAAAAAIADgAAAAACAA4AAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAUAAgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAIAAcAAAAABwCDAAAAAAAABAAAAAADAA4AAAAAAgAOAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAAQAAAAAAAAOAAAAAAIADgAAAAAAAA== version: 7 -7,-3: ind: -7,-3 - tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACkAAAAAAAAqAAAAAAQAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAAQAAAAAAQAOAAAAAAMADgAAAAABAAsAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAQAAAAAAwAEAAAAAAIABAAAAAACACoAAAAAAAAqAAAAAAAAKgAAAAAHAIMAAAAAAAAEAAAAAAIADgAAAAACAA4AAAAAAQALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAABAAQAAAAAAQAEAAAAAAIAKgAAAAAAACoAAAAAAACDAAAAAAAABAAAAAACAIMAAAAAAACDAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAABAAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAACAAQAAAAAAAAEAAAAAAIABAAAAAACAAQAAAAAAQCDAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAEAAAAAAMABAAAAAACAAQAAAAAAwAEAAAAAAIABAAAAAADAAQAAAAAAQAEAAAAAAEACwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAABAAAAAACAAQAAAAAAQAqAAAAAAAAKgAAAAAAAAQAAAAAAwAEAAAAAAAABAAAAAABAIMAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAFAAQAAAAAAQAEAAAAAAAAKgAAAAAAAIMAAAAAAAAuAAAAAAEAGgAAAAAAABoAAAAAAAAaAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAEAAAAAAMABAAAAAAAACoAAAAAAACDAAAAAAAABAAAAAADAAQAAAAAAAAEAAAAAAMABAAAAAACAAQAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAABAAAAAACAAQAAAAAAgAEAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAADAAQAAAAAAwAEAAAAAAAAgwAAAAAAACoAAAAABQAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAJAAQAAAAAAAAEAAAAAAMABAAAAAABAIMAAAAAAAAEAAAAAAEABAAAAAABAAQAAAAAAgAEAAAAAAEABAAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAGACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAEAAAAAAIABAAAAAABACoAAAAAAACDAAAAAAAABAAAAAACAAQAAAAAAgAEAAAAAAMABAAAAAABAAQAAAAAAwCDAAAAAAAAKgAAAAAFACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAAABAAAAAADAAQAAAAAAwAEAAAAAAMAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAAQAAAAAAQAEAAAAAAEAKgAAAAAAAIMAAAAAAAAFAAAAAAEABQAAAAAAAAUAAAAAAACDAAAAAAAABAAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAEAAAAAAMABAAAAAADACoAAAAAAQCDAAAAAAAABQAAAAACAAUAAAAAAQAFAAAAAAEAgwAAAAAAAAQAAAAAAQADAAAAAAIAAwAAAAACAAMAAAAAAgCDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAABAAAAAACAAQAAAAAAAAqAAAAAAAAgwAAAAAAAAUAAAAAAwAFAAAAAAIABQAAAAAAAIMAAAAAAAAEAAAAAAMAAwAAAAACAAMAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAEAKQAAAAAAAIMAAAAAAAAEAAAAAAIAKgAAAAAAAIMAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAQCDAAAAAAAABAAAAAABAA== + tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAAQAAAAAAAAOAAAAAAEADgAAAAABAAsAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAcAAAAAAAAHAAAAAAgABwAAAAAAAIMAAAAAAAAEAAAAAAEADgAAAAADAA4AAAAAAwALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAABwAAAAAJAAcAAAAABQCDAAAAAAAABAAAAAABAIMAAAAAAACDAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAACDAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAACgAAAAAAAAoAAAAAAAAHAAAAAAkABwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAIMAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAoAAAAAAAAKAAAAAAAABwAAAAALAIMAAAAAAAAuAAAAAAMAGgAAAAAAABoAAAAAAAAaAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAKAAAAAAAACgAAAAAAAAcAAAAAAACDAAAAAAAABAAAAAACAAQAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAgwAAAAAAAAQAAAAAAwAEAAAAAAIABAAAAAACAAQAAAAAAAAEAAAAAAMAgwAAAAAAAAcAAAAACwAHAAAAAAAABwAAAAAAAAcAAAAACQAHAAAAAAAABwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAIMAAAAAAAAEAAAAAAEABAAAAAAAAAQAAAAAAgAEAAAAAAEABAAAAAACAIMAAAAAAAAHAAAAAAAABwAAAAAHAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAKAAAAAAAACgAAAAAAAAcAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAwAEAAAAAAEABAAAAAACAAQAAAAAAQCDAAAAAAAABwAAAAAAAAcAAAAACQAHAAAAAAUABwAAAAAAAAcAAAAAAACDAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAADAAQAAAAAAgAEAAAAAAAABwAAAAAAAAcAAAAACAAHAAAAAAgABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAoAAAAAAAAKAAAAAAAABwAAAAAFAIMAAAAAAAAFAAAAAAEABQAAAAAAAAUAAAAAAQCDAAAAAAAABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAKAAAAAAAACgAAAAAAAAcAAAAAAACDAAAAAAAABQAAAAADAAUAAAAAAgAFAAAAAAIAgwAAAAAAAAQAAAAAAQADAAAAAAMAAwAAAAACAAMAAAAAAgCDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAACgAAAAAAAAoAAAAAAAAHAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAAAAIMAAAAAAAAEAAAAAAAAAwAAAAABAAMAAAAAAgADAAAAAAEAgwAAAAAAAIMAAAAAAAAHAAAAAAAAAgAAAAAAAIMAAAAAAAAKAAAAAAAABwAAAAAAAIMAAAAAAAAFAAAAAAIABQAAAAACAAUAAAAAAwCDAAAAAAAABAAAAAABAA== version: 7 -7,-2: ind: -7,-2 - tiles: AwAAAAAAAAMAAAAAAwADAAAAAAIAAwAAAAADAAMAAAAAAgAqAAAAAAUAKgAAAAAAACkAAAAAAAApAAAAAAAAKgAAAAAAAIMAAAAAAAAFAAAAAAEABQAAAAAAAAUAAAAAAAAFAAAAAAMABQAAAAACAAMAAAAAAAADAAAAAAIAAwAAAAABAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAApAAAAAAAAKQAAAAAAACoAAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAgAFAAAAAAAABQAAAAABAAUAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAwAKQAAAAAAACkAAAAAAAAqAAAAAAAAgwAAAAAAAAUAAAAAAgAFAAAAAAEABQAAAAACAAUAAAAAAAAFAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAsAKgAAAAAAACkAAAAAAAApAAAAAAAAKgAAAAAAAIMAAAAAAAAFAAAAAAMABQAAAAABAAUAAAAAAQAFAAAAAAAABQAAAAADACkAAAAAAAApAAAAAAAAKQAAAAAAACoAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACoAAAAAAACDAAAAAAAABQAAAAABAAUAAAAAAgAFAAAAAAIABQAAAAADAAQAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAHAAQAAAAAAgApAAAAAAAAKgAAAAAAAIMAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAACDAAAAAAAABAAAAAADAAQAAAAAAgCDAAAAAAAABAAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAEAAAAAAAAKQAAAAAAACoAAAAAAACDAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAMAgwAAAAAAAAQAAAAAAgCDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAABAAAAAACAAQAAAAAAQAqAAAAAAAAgwAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAAAAAQAAAAAAAAEAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAAQAAAAAAAAEAAAAAAEAKgAAAAAAAIMAAAAAAAAEAAAAAAEABAAAAAACAAQAAAAAAwCDAAAAAAAABAAAAAADAAQAAAAAAgAEAAAAAAMABAAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAALAAAAAAAACwAAAAAAACoAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAwAEAAAAAAEAgwAAAAAAAAsAAAAAAAAEAAAAAAEABAAAAAADAAQAAAAAAwCDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAABAAAAAAAAAQAAAAAAgAEAAAAAAIAgwAAAAAAAAQAAAAAAAAEAAAAAAIAgwAAAAAAAIMAAAAAAAAEAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAAAQAAAAAAwAEAAAAAAIABAAAAAABAIMAAAAAAAAEAAAAAAMABAAAAAAAAIMAAAAAAAAEAAAAAAEABAAAAAABAAQAAAAAAQAEAAAAAAIABAAAAAAAAAQAAAAAAwCDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAABAAAAAAAAAQAAAAAAAAqAAAAAAkAKgAAAAAAACoAAAAAAQCDAAAAAAAABAAAAAAAAAQAAAAAAgAEAAAAAAEABAAAAAABAAQAAAAAAQAEAAAAAAAABAAAAAAAAIMAAAAAAAApAAAAAAAAKgAAAAAAAAQAAAAAAgApAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAADAAQAAAAAAAAEAAAAAAMABAAAAAACAAQAAAAAAwCDAAAAAAAAKQAAAAAAACoAAAAAAAApAAAAAAAAKQAAAAAAACoAAAAAAAAqAAAAAAIAKgAAAAAAACoAAAAAAACDAAAAAAAABAAAAAABAA== + tiles: AwAAAAACAAMAAAAAAQADAAAAAAEAAwAAAAACAAMAAAAAAgAHAAAAAAAABwAAAAALAAIAAAAAAAACAAAAAAAABwAAAAAAAIMAAAAAAAAFAAAAAAEABQAAAAADAAUAAAAAAQAFAAAAAAIABQAAAAABAAMAAAAAAwADAAAAAAIAAwAAAAADAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAACQACAAAAAAAAAgAAAAAAAAcAAAAAAACDAAAAAAAABQAAAAABAAUAAAAAAwAFAAAAAAEABQAAAAACAAUAAAAAAAADAAAAAAMAAwAAAAACAAMAAAAAAQCDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAgAAAAAAAAIAAAAAAAAHAAAAAAAAgwAAAAAAAAUAAAAAAgAFAAAAAAEABQAAAAAAAAUAAAAAAwAFAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAgAHAAAAAAAABwAAAAAAAAIAAAAAAAACAAAAAAAABwAAAAAHAIMAAAAAAAAFAAAAAAMABQAAAAAAAAUAAAAAAgAFAAAAAAAABQAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAcAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAcAAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAIABQAAAAADAAQAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAoAAAAAAAACAAAAAAAABwAAAAAAAIMAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAACDAAAAAAAABAAAAAAAAAQAAAAAAQCDAAAAAAAABAAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAACQAKAAAAAAAAAgAAAAAAAAcAAAAAAACDAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAMAgwAAAAAAAAQAAAAAAwCDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAACgAAAAAAAAoAAAAAAAAHAAAAAAAAgwAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAADAAQAAAAAAQAEAAAAAAEAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAGAAoAAAAAAAAKAAAAAAAABwAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAACAAQAAAAAAACDAAAAAAAABAAAAAADAAQAAAAAAQAEAAAAAAIABAAAAAABAIMAAAAAAAAHAAAAAAAABwAAAAACAAcAAAAAAAALAAAAAAAACwAAAAAAAAcAAAAAAACDAAAAAAAABAAAAAACAAQAAAAAAwAEAAAAAAMAgwAAAAAAAAsAAAAAAAAEAAAAAAEABAAAAAADAAQAAAAAAwCDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAIAgwAAAAAAAIMAAAAAAAAEAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAACAIMAAAAAAAAEAAAAAAIABAAAAAACAAQAAAAAAQAEAAAAAAMABAAAAAAAAAQAAAAAAQCDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAACgAAAAAAAAoAAAAAAAAHAAAAAAsABwAAAAABAAcAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAAAEAAAAAAAABAAAAAACAAQAAAAAAQAEAAAAAAMABAAAAAACAIMAAAAAAAACAAAAAAAABwAAAAAAAAoAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAAAEAAAAAAEABAAAAAACAAQAAAAAAwCDAAAAAAAAAgAAAAAAAAcAAAAAAAACAAAAAAAAAgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAABAAAAAACAA== version: 7 -7,-1: ind: -7,-1 - tiles: BAAAAAAAAAQAAAAAAQAEAAAAAAEABAAAAAAAAAQAAAAAAQCDAAAAAAAAKgAAAAAAACoAAAAAAAApAAAAAAAAKQAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAMACoAAAAAAAAEAAAAAAEABAAAAAAAAAQAAAAAAwAEAAAAAAEABAAAAAACAAQAAAAAAAAEAAAAAAEAgwAAAAAAACoAAAAAAAAqAAAAAAAAKQAAAAAAACkAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAACAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACoAAAAAAAAqAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACoAAAAABgCDAAAAAAAAKgAAAAADACoAAAAAAAApAAAAAAAAKQAAAAAAACoAAAAADAApAAAAAAAAKgAAAAAAACoAAAAAAQAqAAAAAAAAKgAAAAADACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAACwAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAAAsAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAgAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAoAKgAAAAAAACoAAAAAAAALAAAAAAAAKgAAAAAAACoAAAAAAwApAAAAAAAAKQAAAAAAACoAAAAAAAAqAAAAAAUAKgAAAAAAACoAAAAAAAAqAAAAAAAAFgAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAAqAAAAAAAAgwAAAAAAACoAAAAACAAqAAAAAAAAKQAAAAAAACkAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAFgAAAAAAABYAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAMAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACkAAAAAAAApAAAAAAAAKgAAAAAAACoAAAAABwAqAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAABAAAAAABAAQAAAAAAAAEAAAAAAAABAAAAAABAAQAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAABwApAAAAAAAAKQAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKQAAAAAAACkAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAABgAqAAAAAAAAFgAAAAAAABYAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACkAAAAAAAApAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAABYAAAAAAAAWAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAwApAAAAAAAABAAAAAACACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAEAgwAAAAAAACoAAAAAAAAqAAAAAAAABAAAAAACAAQAAAAAAgAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAcAKgAAAAAHAAQAAAAAAwAEAAAAAAMAKgAAAAAAACoAAAAAAACDAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAUAKgAAAAAAACoAAAAAAgCDAAAAAAAAKgAAAAAAAIMAAAAAAAAEAAAAAAMABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAA== + tiles: BAAAAAAAAAQAAAAAAgAEAAAAAAIABAAAAAADAAQAAAAAAACDAAAAAAAABwAAAAAJAAcAAAAAAAACAAAAAAAAAgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAKAAAAAAAACgAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAADAAQAAAAAAQAEAAAAAAEAgwAAAAAAAAcAAAAAAAAHAAAAAAAAAgAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAACwAHAAAAAAAABwAAAAAAAAoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAcAAAAAAAAHAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAcAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAACAAAAAAAAAgAAAAAAAAcAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAACgAHAAAAAAIABwAAAAAAAAcAAAAAAAAHAAAAAAMACwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAABQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAsAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAACgAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAALAAAAAAAABwAAAAAAAAcAAAAAAQACAAAAAAAAAgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAABAAcAAAAAAgAHAAAAAAAAFgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAHAAAAAAgAgwAAAAAAAAcAAAAABAAHAAAAAAAAAgAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAFgAAAAAAABYAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAMAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAIAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAABAAAAAABAAQAAAAAAgAEAAAAAAIABAAAAAADAAQAAAAAAwCDAAAAAAAABwAAAAAAAAcAAAAAAAACAAAAAAAAAgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAAAgAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAMAFgAAAAAKABYAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAoABwAAAAAAAAIAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAABYAAAAAAAAWAAAAAAYAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAACAAAAAAAACgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAMAgwAAAAAAAAcAAAAABwAHAAAAAAAACgAAAAAAAAoAAAAAAAAHAAAAAAwABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAoAAAAAAAAKAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAABwAAAAAGAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAABwAAAAADAIMAAAAAAAALAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAA== version: 7 -7,0: ind: -7,0 - tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAACDAAAAAAAAKgAAAAABACoAAAAAAAAEAAAAAAAABAAAAAAAACoAAAAAAACDAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAAqAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAkABAAAAAABAAQAAAAAAQApAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAKgAAAAAAAIMAAAAAAAAqAAAAAAwAKgAAAAAAAAQAAAAAAAAEAAAAAAEAKgAAAAAAAIMAAAAAAAADAAAAAAEAGgAAAAAAABoAAAAAAAAaAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAACoAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAEAAAAAAMABAAAAAABACoAAAAABACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAMAgwAAAAAAAIMAAAAAAAASAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAgwAAAAAAACoAAAAACAAqAAAAAAIABAAAAAAAAAQAAAAAAwApAAAAAAAAKQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAAQAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAAAQAAAAAAwAEAAAAAAMAKQAAAAAAACkAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABIAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAEAAAAAAMABAAAAAACACoAAAAAAAAqAAAAAAkAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAAqAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAAABAAAAAABAAQAAAAAAAAEAAAAAAEABAAAAAACAAQAAAAAAgASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAKgAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAAAQAAAAAAAAEAAAAAAMABAAAAAAAAAQAAAAAAQAEAAAAAAAABAAAAAAAAIMAAAAAAAAEAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAACoAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAEAAAAAAMABAAAAAADAAQAAAAAAQAEAAAAAAMABAAAAAADAAQAAAAAAQCDAAAAAAAAAwAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAgwAAAAAAACoAAAAAAAApAAAAAAAABAAAAAACAAQAAAAAAwAEAAAAAAEAKgAAAAAAACoAAAAAAAAEAAAAAAIAgwAAAAAAAAMAAAAAAwAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAAApAAAAAAAAKQAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAACAAQAAAAAAAAEAAAAAAIABAAAAAACAIMAAAAAAAADAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAEABAAAAAADAIMAAAAAAACDAAAAAAAABAAAAAABAAMAAAAAAgADAAAAAAEAAwAAAAABAAMAAAAAAQADAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAgAEAAAAAAIABAAAAAAAAAQAAAAAAwAEAAAAAAIAgwAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAACAAMAAAAAAQADAAAAAAMAAwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAABAAQAAAAAAgAEAAAAAAAABAAAAAACAIMAAAAAAAAEAAAAAAEAAwAAAAABAAMAAAAAAAADAAAAAAEAAwAAAAABAAMAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAABAAQAAAAAAQAEAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAIAIgAAAAABAA== + tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAACDAAAAAAAABwAAAAAGAAcAAAAAAAAKAAAAAAAACgAAAAAAAAcAAAAAAACDAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAAHAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAACgAAAAAAAAoAAAAAAAACAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAABwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAoAAAAAAAAKAAAAAAAABwAAAAAAAIMAAAAAAAADAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAcAAAAAAQCDAAAAAAAABwAAAAAAAAcAAAAAAAAKAAAAAAAACgAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAMAgwAAAAAAAIMAAAAAAAASAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAsACgAAAAAAAAoAAAAAAAACAAAAAAAAAgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAMAAQAAAAAAAAcAAAAAAAAHAAAAAAUABwAAAAAAAIMAAAAAAAAHAAAAAAcABwAAAAAAAAoAAAAAAAAKAAAAAAAAAgAAAAAAAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABIAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAKAAAAAAAACgAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAAHAAAAAAkAgwAAAAAAAAcAAAAAAAAHAAAAAAAACgAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAEAAAAAAIABAAAAAABAAQAAAAAAQASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAABwAAAAAMAIMAAAAAAAAHAAAAAAAABwAAAAAAAAoAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAEAAAAAAEABAAAAAACAIMAAAAAAAAEAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAcAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAKAAAAAAAACgAAAAAAAAoAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAQCDAAAAAAAAAwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAgAgwAAAAAAAAcAAAAAAAACAAAAAAAACgAAAAAAAAoAAAAAAAAEAAAAAAEABwAAAAAGAAcAAAAACgAEAAAAAAAAgwAAAAAAAAMAAAAAAwAHAAAAAAAABwAAAAAKAAcAAAAAAAAHAAAAAAAABwAAAAAFAIMAAAAAAAACAAAAAAAAAgAAAAAAAAoAAAAAAAAKAAAAAAAABAAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAAAAIMAAAAAAAADAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAEABAAAAAADAIMAAAAAAACDAAAAAAAABAAAAAAAAAMAAAAAAgADAAAAAAIAAwAAAAACAAMAAAAAAQADAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAQAEAAAAAAAABAAAAAABAAQAAAAAAgAEAAAAAAMAgwAAAAAAAIMAAAAAAAADAAAAAAMAAwAAAAADAAMAAAAAAwADAAAAAAMAAwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAADAIMAAAAAAAAEAAAAAAMAAwAAAAACAAMAAAAAAAADAAAAAAAAAwAAAAADAAMAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAACAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAMAIgAAAAABAA== version: 7 -9,-4: ind: -9,-4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACQAAAAAAgAFAAAAAAAABQAAAAAAAAUAAAAAAwCDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAJAAAAAABAAUAAAAAAwAkAAAAAAAAgwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAACDAAAAAAAABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAIAgwAAAAAAAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABQAAAAADAAUAAAAAAAAFAAAAAAMABQAAAAACAAUAAAAAAgCDAAAAAAAABAAAAAAAAIMAAAAAAAAEAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAwAjAAAAAAMAIwAAAAADACMAAAAAAgAFAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAAABQAAAAACAAUAAAAAAgAFAAAAAAMABQAAAAACAIMAAAAAAAAEAAAAAAIABAAAAAAAAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgCDAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAAAAwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAwAFAAAAAAMABQAAAAADAAUAAAAAAgAFAAAAAAIAgwAAAAAAAAQAAAAAAgAEAAAAAAEABAAAAAADAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACQAAAAABgAFAAAAAAEABQAAAAAAAAUAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAJAAAAAAFAAUAAAAAAAAkAAAAAAIAgwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgCDAAAAAAAABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAMAgwAAAAAAAAQAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABQAAAAACAAUAAAAAAAAFAAAAAAIABQAAAAADAAUAAAAAAwCDAAAAAAAABAAAAAACAIMAAAAAAAAEAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAAAjAAAAAAMAIwAAAAAAACMAAAAAAgAFAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAAABQAAAAADAAUAAAAAAgAFAAAAAAIABQAAAAADAIMAAAAAAAAEAAAAAAMABAAAAAABAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQCDAAAAAAAAgwAAAAAAAAQAAAAAAwAEAAAAAAEAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAMABQAAAAADAAUAAAAAAgAFAAAAAAIAgwAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAABAA== version: 7 -8,-2: ind: -8,-2 - tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAACkAAAAAAAApAAAAAAAAKgAAAAAAAIMAAAAAAAAMAAAAAAAAAwAAAAACAAMAAAAAAAADAAAAAAIAAwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAApAAAAAAAAKQAAAAAAACoAAAAACQCDAAAAAAAADAAAAAAAAAMAAAAAAACDAAAAAAAAAwAAAAADAAMAAAAAAQAHAAAAAAoABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAKQAAAAAAACkAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAwADAAAAAAEABwAAAAAAAAcAAAAABAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAACkAAAAAAAApAAAAAAAAKgAAAAAAACoAAAAAAgAqAAAAAAoAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAACACkAAAAAAAAqAAAAAAAAKgAAAAACACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAAADAAAAAAIAAwAAAAACAIMAAAAAAAAqAAAAAAAAKQAAAAAAACoAAAAAAACDAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAMAAwAAAAADAAMAAAAAAACDAAAAAAAAKgAAAAAAACkAAAAAAAAqAAAAAAAAgwAAAAAAAAQAAAAAAwAEAAAAAAEABAAAAAAAAAQAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAACoAAAAAAAApAAAAAAAAKgAAAAAAAAsAAAAAAAAEAAAAAAEABAAAAAAAAAQAAAAAAAAEAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAgADAAAAAAMAAwAAAAADAIMAAAAAAAAqAAAAAAkAKQAAAAAAACoAAAAAAACDAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAABAAAAAAAAAQAAAAAAgCDAAAAAAAAgwAAAAAAAAMAAAAAAQADAAAAAAAAAwAAAAAAAAMAAAAAAwCDAAAAAAAAKgAAAAAAACkAAAAAAAAqAAAAAAcAgwAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAAQAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAApAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAMAAwAAAAABAAMAAAAAAQADAAAAAAEAAwAAAAACAIMAAAAAAAAqAAAAAAAAKQAAAAAAACkAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAAAEAAAAAAIABAAAAAACAAQAAAAAAwAFAAAAAAEABQAAAAACAAUAAAAAAAAFAAAAAAEABQAAAAACAAUAAAAAAQCDAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAADAAQAAAAAAAAEAAAAAAMABQAAAAAAAAUAAAAAAwAFAAAAAAEABQAAAAACAAUAAAAAAQAFAAAAAAIAgwAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAAAsAAAAAAAAEAAAAAAEABAAAAAACAAQAAAAAAwAEAAAAAAMABAAAAAACAA== + tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAALAAIAAAAAAAACAAAAAAAABwAAAAAAAIMAAAAAAAAMAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAACAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAIABwAAAAAAAAcAAAAAAAACAAAAAAAAAgAAAAAAAAcAAAAAAACDAAAAAAAADAAAAAAAAAMAAAAAAQCDAAAAAAAAAwAAAAADAAMAAAAAAgAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAgAAAAAAAAIAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAMABwAAAAAKAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAIAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAJAAcAAAAAAAAHAAAAAAEABwAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAQAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAADAIMAAAAAAAAHAAAAAAAAAgAAAAAAAAcAAAAAAACDAAAAAAAABAAAAAADAAQAAAAAAAAEAAAAAAIABAAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAABAAMAAAAAAQCDAAAAAAAABwAAAAAAAAIAAAAAAAAHAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAADAAQAAAAAAwCDAAAAAAAAgwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAcAAAAAAAACAAAAAAAABwAAAAAAAAsAAAAAAAAEAAAAAAMABAAAAAADAAQAAAAAAQAEAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAADAAMAAAAAAQADAAAAAAEAAwAAAAABAIMAAAAAAAAHAAAAAAAAAgAAAAAAAAcAAAAABwCDAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAABAAAAAABAAQAAAAAAwCDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAADAAMAAAAAAwCDAAAAAAAABwAAAAAAAAIAAAAAAAAHAAAAAAAAgwAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAACAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAwADAAAAAAIAAwAAAAABAAMAAAAAAAADAAAAAAIAAwAAAAAAAIMAAAAAAAAHAAAAAAAAAgAAAAAAAAIAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAAAEAAAAAAAABAAAAAACAAQAAAAAAAAFAAAAAAMABQAAAAADAAUAAAAAAgAFAAAAAAIABQAAAAADAAUAAAAAAwCDAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgwAAAAAAAAQAAAAAAwAEAAAAAAAABAAAAAACAAQAAAAAAAAEAAAAAAMABQAAAAAAAAUAAAAAAgAFAAAAAAAABQAAAAAAAAUAAAAAAwAFAAAAAAEAgwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAsAAAAAAAAEAAAAAAAABAAAAAADAAQAAAAAAAAEAAAAAAEABAAAAAADAA== version: 7 -8,-1: ind: -8,-1 - tiles: BQAAAAADAAUAAAAAAQAFAAAAAAMABQAAAAAAAAUAAAAAAwAFAAAAAAEAgwAAAAAAACkAAAAAAAApAAAAAAAAKgAAAAAKAIMAAAAAAAAEAAAAAAIABAAAAAAAAAQAAAAAAwAEAAAAAAIABAAAAAAAAAUAAAAAAgAFAAAAAAEABQAAAAADAAUAAAAAAAAFAAAAAAMABQAAAAABAIMAAAAAAAAqAAAAAAAAKQAAAAAAACoAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAwADAAAAAAIAAwAAAAABAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAwAKgAAAAAAACoAAAAAAgApAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAABwApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAFACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAACgAqAAAAAAAAKgAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgCDAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAAABAAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAgwAAAAAAAAQAAAAAAgAEAAAAAAIABAAAAAACAAQAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAwADAAAAAAMAAwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAMAgwAAAAAAAAMAAAAAAwADAAAAAAMAAwAAAAAAAAMAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAAA== + tiles: BQAAAAABAAUAAAAAAQAFAAAAAAIABQAAAAACAAUAAAAAAgAFAAAAAAIAgwAAAAAAAAIAAAAAAAACAAAAAAAABwAAAAAHAIMAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAQAEAAAAAAEABAAAAAABAAUAAAAAAAAFAAAAAAAABQAAAAADAAUAAAAAAwAFAAAAAAAABQAAAAABAIMAAAAAAAAHAAAAAAAAAgAAAAAAAAcAAAAAAACDAAAAAAAAAwAAAAADAAMAAAAAAgADAAAAAAMAAwAAAAAAAAMAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAMABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAIAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAQCDAAAAAAAABAAAAAACAAQAAAAAAwAEAAAAAAIABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAIAgwAAAAAAAAQAAAAAAgAEAAAAAAAABAAAAAADAAQAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAQCDAAAAAAAAAwAAAAADAAMAAAAAAQADAAAAAAEAAwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAEAAwAAAAABAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAMAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAA== version: 7 -8,0: ind: -8,0 - tiles: gwAAAAAAAIMAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAgwAAAAAAABIAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAEABIAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAEgAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAAIMAAAAAAAASAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAACgAqAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAgwAAAAAAABIAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAABIAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAEgAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAAIMAAAAAAAASAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAAABAAAAAABAAQAAAAAAwAEAAAAAAAABAAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAABIAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAMABAAAAAACAAQAAAAAAAAEAAAAAAMABAAAAAADAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAACDAAAAAAAAAwAAAAACAAMAAAAAAAADAAAAAAMABAAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAAAAAQAAAAAAgADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAMABAAAAAAAAAQAAAAAAwAEAAAAAAEABAAAAAAAAAQAAAAAAAAEAAAAAAEAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== + tiles: gwAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAABIAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAABIAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAEgAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAAASAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAABIAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAABIAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAcAEgAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAAASAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAIABAAAAAABAAQAAAAAAwAEAAAAAAAABAAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAABIAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAACAAQAAAAAAQAEAAAAAAMABAAAAAACAAQAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAACDAAAAAAAAAwAAAAADAAMAAAAAAQADAAAAAAMABAAAAAAAAAQAAAAAAQAEAAAAAAAABAAAAAAAAAQAAAAAAgADAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAABAAQAAAAAAwAEAAAAAAMABAAAAAADAAQAAAAAAAAEAAAAAAEAAwAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== version: 7 -6,1: ind: -6,1 - tiles: BAAAAAAAACIAAAAAAAAEAAAAAAEABAAAAAABACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAQAAAAAAwAiAAAAAAIABAAAAAACAAQAAAAAAwAqAAAAAAAAKgAAAAAAACoAAAAAAgAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAEAAAAAAMAIgAAAAABAAQAAAAAAQAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAABAAAAAADACIAAAAAAgAEAAAAAAIAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAJAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAQAAAAAAwAKAAAAAAAABAAAAAADACoAAAAAAAAqAAAAAAkAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAEAAAAAAMACgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAABAAAAAABAAoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAwAKgAAAAAAACoAAAAACAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAQAAAAAAwAqAAAAAAAAKgAAAAALABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAEAAAAAAEAKgAAAAAGACoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAAQAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAABACoAAAAAAAAqAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAEAAAAAAEABAAAAAABAAQAAAAAAwCDAAAAAAAAgwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAADAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAEAAAAAAEABAAAAAACAAQAAAAAAQAEAAAAAAMABAAAAAAAAAMAAAAAAQCDAAAAAAAAAwAAAAAAAAMAAAAAAQADAAAAAAIAAwAAAAABAAMAAAAAAQCDAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAABAAAAAADAAQAAAAAAQAEAAAAAAMABAAAAAACAAQAAAAAAQADAAAAAAEAgwAAAAAAAAMAAAAAAQADAAAAAAIAAwAAAAADAAMAAAAAAAADAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAMABAAAAAAAAAQAAAAAAAAEAAAAAAIAAwAAAAADAIMAAAAAAAAFAAAAAAAABQAAAAACAAUAAAAAAAAFAAAAAAEABQAAAAADAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAEAAAAAAEABAAAAAAAAAQAAAAAAgAEAAAAAAIABAAAAAACAAMAAAAAAQCDAAAAAAAABQAAAAADAAUAAAAAAgAFAAAAAAMABQAAAAACAAUAAAAAAACDAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAMABQAAAAABAAUAAAAAAwAFAAAAAAIAgwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAA== + tiles: BAAAAAACACIAAAAAAQAEAAAAAAEACgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAADAAcAAAAAAAAHAAAAAAAABwAAAAAJAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAQAAAAAAAAiAAAAAAIACgAAAAAAAAoAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAABQAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAEAAAAAAMAIgAAAAABAAoAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAkAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAABAAAAAABACIAAAAAAQAKAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAGAAcAAAAAAAAHAAAAAAEABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAQAAAAAAwAKAAAAAAAACgAAAAAAAAcAAAAAAAAHAAAAAAEABwAAAAAAAAcAAAAABgAHAAAAAAAABwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAEAAAAAAMACgAAAAAAAAcAAAAAAwAHAAAAAAEABwAAAAALAAcAAAAACAAHAAAAAAgABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAABAAAAAAAAAoAAAAAAAAHAAAAAAEABwAAAAAFAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAgAHAAAAAAUAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAQAAAAAAgAHAAAAAAoABwAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAEAAAAAAEABwAAAAAAAAcAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAAQAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAABAAcAAAAACQAHAAAAAAYAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAEAAAAAAAABAAAAAADAAQAAAAAAgCDAAAAAAAAgwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAADAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAEAAAAAAMABAAAAAABAAQAAAAAAgAEAAAAAAMABAAAAAAAAAMAAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAMAAwAAAAAAAAMAAAAAAACDAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAABAAAAAADAAQAAAAAAAAEAAAAAAMABAAAAAADAAQAAAAAAAADAAAAAAMAgwAAAAAAAAMAAAAAAQADAAAAAAIAAwAAAAACAAMAAAAAAQADAAAAAAIAgwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAAAAAQAAAAAAQAEAAAAAAIAAwAAAAABAIMAAAAAAAAFAAAAAAAABQAAAAABAAUAAAAAAQAFAAAAAAIABQAAAAACAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAEAAAAAAMABAAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAACAAMAAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAwAFAAAAAAEABQAAAAADAAUAAAAAAACDAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAAAQAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAQAFAAAAAAMABQAAAAACAAUAAAAAAQAFAAAAAAMAgwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAA== version: 7 -6,2: ind: -6,2 - tiles: BAAAAAABAAQAAAAAAgAEAAAAAAAAAwAAAAACAAMAAAAAAQADAAAAAAMAgwAAAAAAAIMAAAAAAAAFAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAAgAEAAAAAAIABAAAAAAAAAMAAAAAAAADAAAAAAMAAwAAAAADAIMAAAAAAAAFAAAAAAMABQAAAAACAAUAAAAAAgAFAAAAAAIAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAEAAAAAAIABAAAAAABAAQAAAAAAgADAAAAAAIAAwAAAAAAAAMAAAAAAgCDAAAAAAAABQAAAAABAAUAAAAAAQAFAAAAAAEABQAAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAIAAwAAAAADAAMAAAAAAgADAAAAAAIAgwAAAAAAAAUAAAAAAQAFAAAAAAMABQAAAAAAAAUAAAAAAgABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAgwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: BAAAAAACAAQAAAAAAAAEAAAAAAIAAwAAAAADAAMAAAAAAQADAAAAAAEAgwAAAAAAAIMAAAAAAAAFAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAQAAAAAAQAEAAAAAAAABAAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAABAIMAAAAAAAAFAAAAAAAABQAAAAAAAAUAAAAAAQAFAAAAAAMAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAEAAAAAAIABAAAAAACAAQAAAAAAwADAAAAAAMAAwAAAAACAAMAAAAAAwCDAAAAAAAABQAAAAAAAAUAAAAAAAAFAAAAAAMABQAAAAACAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAABAAAAAABAAQAAAAAAwAEAAAAAAAAAwAAAAADAAMAAAAAAQADAAAAAAMAgwAAAAAAAAUAAAAAAgAFAAAAAAIABQAAAAADAAUAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAgwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -7,1: ind: -7,1 - tiles: BAAAAAABAAQAAAAAAwAEAAAAAAAABAAAAAABAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAADAAMAAAAAAgADAAAAAAAAAwAAAAABAAMAAAAAAQADAAAAAAEAAwAAAAADAAQAAAAAAQAEAAAAAAEABAAAAAADAAQAAAAAAgAEAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQADAAAAAAAAAwAAAAADAAMAAAAAAQADAAAAAAAAAwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAACABUAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAABQAWAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgAWAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAEAFgAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAIAgwAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAABAIMAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAwCDAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAEAgwAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAIAAwAAAAAAAA== + tiles: BAAAAAADAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAADAAMAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAQAAAAAAgAEAAAAAAIABAAAAAACAAQAAAAAAwAEAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgADAAAAAAEAAwAAAAADAAMAAAAAAAADAAAAAAAAAwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABABUAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAgAWAAAAAAkAFgAAAAAJAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAMAFgAAAAAAABYAAAAAAAAWAAAAAAYAFgAAAAAAABYAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAwADAAAAAAMAgwAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAACAIMAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAQCDAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAAAgwAAAAAAACUAAAAAAAAlAAAAAAAAJQAAAAAAACUAAAAAAAAlAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAMAAwAAAAACAA== version: 7 -7,2: ind: -7,2 - tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAIAAwAAAAADACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAIAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAHAIMAAAAAAACDAAAAAAAAAwAAAAADAAMAAAAAAQAqAAAAAAkAKgAAAAAAACoAAAAABQAqAAAAAAAAKgAAAAALACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAMAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAABACoAAAAAAAAqAAAAAAwAKgAAAAALACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAIAAwAAAAACAAcAAAAAAAAHAAAAAAAABwAAAAAMAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAACAAMAAAAAAAAHAAAAAAoABwAAAAAFAAcAAAAACAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAQADAAAAAAMABwAAAAAKAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAIAAwAAAAABAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAIAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAQAHAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -7,-5: ind: -7,-5 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAACoAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAAAAACoAAAAACQAqAAAAAAAAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAAAAACoAAAAABAAqAAAAAAoAKgAAAAAEACoAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAYAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAACACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAABwATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAACoAAAAABQAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAUAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAwAHAAAAAAUABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAcAAAAAAgAHAAAAAAAABwAAAAAFAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAAcAAAAAAAAHAAAAAAoABwAAAAAAAAcAAAAAAgAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAA== version: 7 -8,1: ind: -8,1 - tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAMABAAAAAACAAQAAAAAAwAEAAAAAAEABAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAEAAwAAAAACAAMAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAMAAwAAAAACAAMAAAAAAQCDAAAAAAAABAAAAAAAAAQAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAEAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAFQAAAAAAABUAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABUAAAAAAAAVAAAAAAAAKQAAAAAAACkAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAVAAAAAAAAFQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAYAAAAAAAAGQAAAAAAABkAAAAAAAAZAAAAAAAAGAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAGAAAAAAAABkAAAAAAAAZAAAAAAAAGQAAAAAAABgAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABgAAAAAAAAZAAAAAAAAGQAAAAAAABkAAAAAAAAYAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAQAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAAA== + tiles: gwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAABAAQAAAAAAgAEAAAAAAMABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAMAAwAAAAABAAMAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAAAAAMAAAAAAQCDAAAAAAAABAAAAAAAAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAgAHAAAAAAQABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAFQAAAAAAABUAAAAAAAAHAAAAAAoABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABUAAAAAAAAVAAAAAAAAAgAAAAAAAAIAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAVAAAAAAAAFQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAYAAAAAAAAGQAAAAAAABkAAAAAAAAZAAAAAAAAGAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAGAAAAAAAABkAAAAAAAAZAAAAAAAAGQAAAAAAABgAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABgAAAAAAAAZAAAAAAAAGQAAAAAAABkAAAAAAAAYAAAAAAAAgwAAAAAAAAcAAAAABAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAAA== version: 7 -8,2: ind: -8,2 - tiles: gwAAAAAAACoAAAAAAAAqAAAAAAYAKgAAAAACACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAABgAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAwAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAACQAqAAAAAAAAKgAAAAALACoAAAAAAAAqAAAAAAkAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAABgAqAAAAAAAAKgAAAAAAACoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAADACoAAAAAAAAqAAAAAAsAKgAAAAAAACoAAAAAAAAqAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: gwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAADAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAIABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAFAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAMAAcAAAAAAAAHAAAAAAkABwAAAAAAAAcAAAAAAAAHAAAAAAQABwAAAAAAAAcAAAAAAAAHAAAAAAIABwAAAAAAAAcAAAAABACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAABwAHAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAABAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAJAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAcABwAAAAAJAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -6,-5: ind: -6,-5 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAJACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAACoAAAAAAAAqAAAAAAYAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAAAAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAACAAqAAAAAAAAKgAAAAADACoAAAAAAAAqAAAAAAwAKgAAAAAGACoAAAAAAAAqAAAAAAcAKgAAAAACACoAAAAAAAAqAAAAAAMAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAsAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAACwAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAEAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAEAKgAAAAAAACoAAAAACwAqAAAAAAAAKgAAAAAAACoAAAAADAAqAAAAAAAAKgAAAAADACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAAANAAAAAAIADQAAAAADACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAABgAqAAAAAAAAKgAAAAAJACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAADQAAAAADAA0AAAAAAgANAAAAAAAADQAAAAACAA0AAAAAAAANAAAAAAMAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAHACoAAAAAAAAqAAAAAAAAKgAAAAADACoAAAAAAAAqAAAAAAAAKgAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAwANAAAAAAIAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAFACoAAAAAAAAqAAAAAAAAKgAAAAAHACoAAAAABAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAQAqAAAAAAEAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAACACoAAAAAAgAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAQAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAACoAAAAABQAqAAAAAAsAFgAAAAAMABYAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAgAWAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAYAKgAAAAAAACoAAAAAAAAeAAAAAAEAKgAAAAAAAIMAAAAAAAAqAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAABAAWAAAAAAAAFgAAAAAAABYAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAMAKgAAAAAAACoAAAAAAACDAAAAAAAAKgAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAACAAWAAAAAAEAKgAAAAABACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAACoAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAMAFgAAAAAJABYAAAAAAAAWAAAAAAAAFgAAAAAAACoAAAAACQAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAMABwAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAQAHAAAAAAUABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAIABwAAAAAAAAcAAAAABgAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAQAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAkABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAACQAHAAAAAAwABwAAAAAAAAcAAAAAAAAHAAAAAAIABwAAAAAAAAcAAAAAAAAHAAAAAAQABwAAAAAAAAcAAAAAAAAHAAAAAAMABwAAAAADAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAADAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAYABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAALAAcAAAAAAAAHAAAAAAAABwAAAAAGAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAMAAcAAAAAAQAHAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAABAA0AAAAAAQANAAAAAAEABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAQABwAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAACAA0AAAAAAwANAAAAAAAABwAAAAAAAAcAAAAAAQAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAEABwAAAAAAAAcAAAAABQAHAAAAAAAABwAAAAAAAAcAAAAACQAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAgABwAAAAAAAAcAAAAABgAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAgABwAAAAAAAAcAAAAACwAHAAAAAAkABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAABwAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAABQAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAIAAcAAAAAAAAHAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAAFgAAAAAAABYAAAAAAwAWAAAAAAAAFgAAAAAAABYAAAAACQAWAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAeAAAAAAIABwAAAAAAAIMAAAAAAAAHAAAAAAAAFgAAAAAEABYAAAAABgAWAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAHAAAAAAAABwAAAAAIAAcAAAAAAAAHAAAAAAAABwAAAAAEAAcAAAAAAACDAAAAAAAABwAAAAAAABYAAAAAAAAWAAAAAAAAFgAAAAAAABYAAAAAAAAWAAAAAAsAFgAAAAADABYAAAAACAAWAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAAcAAAAAAAAWAAAAAAAAFgAAAAACABYAAAAAAAAWAAAAAAgAFgAAAAAAABYAAAAAAAAWAAAAAAoAFgAAAAAEAAcAAAAAAAAHAAAAAAYABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAA== version: 7 -9,0: ind: -9,0 - tiles: AQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAJgAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAACgCDAAAAAAAAEgAAAAAAABIAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAACoAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACkAAAAAAACDAAAAAAAAKgAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAAqAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAABAApAAAAAAAAgwAAAAAAACoAAAAACQCDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAKgAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKQAAAAAAAIMAAAAAAAAqAAAAAAgAgwAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAACoAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACkAAAAAAACDAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAAAqAAAAAAEAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAApAAAAAAAAgwAAAAAAACoAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAKgAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAUAKQAAAAAAAIMAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACkAAAAAAACDAAAAAAAAKgAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAApAAAAAAAAgwAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAUAKQAAAAAAAIMAAAAAAAAqAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACkAAAAAAACDAAAAAAAAKgAAAAAMAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAApAAAAAAAAgwAAAAAAACoAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAAAAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKQAAAAAAAIMAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAGACkAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAA== + tiles: AQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAJgAAAAACAIMAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAcAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAIAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAAHAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAACAAAAAAAAgwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAABwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAgAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAIAAIAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAAAHAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAACAAAAAAAAgwAAAAAAAAcAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAABwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAGAAcAAAAAAAAHAAAAAAAAAgAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAABAAIAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAACAAAAAAAAgwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAAgAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAIAAAAAAACDAAAAAAAABwAAAAAIAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAABwACAAAAAAAAgwAAAAAAAAcAAAAABwCDAAAAAAAAEgAAAAAAABIAAAAAAAAAAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAAgAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAJAAIAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAA== version: 7 -9,-1: ind: -9,-1 - tiles: AQAAAAAAAIMAAAAAAAALAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAsAAAAAAACDAAAAAAAABwAAAAAAAAIAAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAgAFAAAAAAIAgwAAAAAAAAEAAAAAAACDAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAAgwAAAAAAAAcAAAAAAAACAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAACDAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAApAAAAAAAAKQAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAJgAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACYAAAAAAgAmAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAmAAAAAAAAJgAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAJgAAAAAAACYAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAA== + tiles: AQAAAAAAAIMAAAAAAAALAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAsAAAAAAACDAAAAAAAABwAAAAAAAAIAAAAAAACDAAAAAAAABQAAAAABAAUAAAAAAQAFAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAAgwAAAAAAAAcAAAAACAACAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAABAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAACDAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAACAAAAAAAAAgAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAJgAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACYAAAAAAgAmAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAmAAAAAAEAJgAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAJgAAAAABACYAAAAAAgCDAAAAAAAABwAAAAAMAAcAAAAAAwAHAAAAAAkABwAAAAAAAA== version: 7 -9,-2: ind: -9,-2 - tiles: gwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAAAAAAYAKgAAAAAEAIMAAAAAAACDAAAAAAAABwAAAAAHAAcAAAAAAAAHAAAAAAMABwAAAAAAAAcAAAAACQAHAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAADAAcAAAAAAAAHAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAAgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAAAHAAAAAAIABwAAAAAAAAcAAAAAAAACAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAwAHAAAAAAAAAgAAAAAAAIMAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAIAAAAAAACDAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAACAAAAAAAAgwAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAAAAAAAAAAAgwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAIMAAAAAAAAHAAAAAAAAAgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAALAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAsAAAAAAACDAAAAAAAABwAAAAAAAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAACwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAALAAAAAAAAgwAAAAAAAAcAAAAAAAACAAAAAAAAgwAAAAAAAAUAAAAAAwAFAAAAAAMABQAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAsAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAACwAAAAAAAIMAAAAAAAAHAAAAAAAAAgAAAAAAAIMAAAAAAAAFAAAAAAEABQAAAAADAAUAAAAAAgAFAAAAAAAAAQAAAAAAAIMAAAAAAAALAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAsAAAAAAACDAAAAAAAABwAAAAAAAAIAAAAAAACDAAAAAAAABQAAAAAAAAUAAAAAAgAFAAAAAAAAgwAAAAAAAA== + tiles: gwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAgCDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAADAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAABgAHAAAAAAMABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAAgAAAAAAAAcAAAAABQAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAJAAcAAAAAAAACAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAKAAcAAAAAAgAHAAAAAAAAAgAAAAAAAIMAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAABwAAAAAIAAcAAAAAAgCDAAAAAAAABwAAAAAAAAcAAAAAAQAHAAAAAAMABwAAAAAKAAIAAAAAAACDAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAACAAAAAAAAgwAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAAAAAAAAAAAgwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAACwAAAAAAAIMAAAAAAAAHAAAAAAAAAgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAALAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAsAAAAAAACDAAAAAAAABwAAAAAAAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAACwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAALAAAAAAAAgwAAAAAAAAcAAAAAAQACAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAEABQAAAAADAIMAAAAAAAABAAAAAAAAgwAAAAAAAAsAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAACwAAAAAAAIMAAAAAAAAHAAAAAAAAAgAAAAAAAIMAAAAAAAAFAAAAAAAABQAAAAACAAUAAAAAAgAFAAAAAAIAAQAAAAAAAIMAAAAAAAALAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAAsAAAAAAACDAAAAAAAABwAAAAAAAAIAAAAAAACDAAAAAAAABQAAAAABAAUAAAAAAQAFAAAAAAEAgwAAAAAAAA== version: 7 -9,1: ind: -9,1 - tiles: gwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAKgAAAAAAACkAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAACoAAAAAAAApAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAAqAAAAAAAAKQAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAKgAAAAAAACkAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAQAKgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAACoAAAAAAAApAAAAAAAAKgAAAAAKACoAAAAAAQAqAAAAAAAAKgAAAAAAACoAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKQAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABgAAAAAAAAYAAAAAAAAGAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAAAACAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAAAAACoAAAAACQAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAA== + tiles: gwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAABwAAAAADAAIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAcAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAAHAAAAAAAAAgAAAAAAAAcAAAAACQAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAMAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAABwAAAAAAAAIAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAABAAHAAAAAAAABwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAcAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAKAAcAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAQAAgAAAAAAAAcAAAAACwAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAwAHAAAAAAQABAAAAAAAAAQAAAAAAgAEAAAAAAMAgwAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAGAAAAAAAABgAAAAAAAAYAAAAAAAABAAAAAADAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAHABgAAAAAAAAYAAAAAAAAGAAAAAAAAAQAAAAAAwCDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAYAAAAAAAAGAAAAAAAABgAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAEAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAEABwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAA== version: 7 -10,-3: ind: -10,-3 - tiles: AAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAB8AAAAAAAASAAAAAAAAEgAAAAAAAAQAAAAAAQCDAAAAAAAAAwAAAAADAAMAAAAAAwADAAAAAAMAAwAAAAAAAAMAAAAAAgADAAAAAAIAAwAAAAADAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAAEAAAAAAIAgwAAAAAAAAQAAAAAAgAEAAAAAAEABAAAAAACAAQAAAAAAQAEAAAAAAMABAAAAAAAAAQAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAABAAAAAADAAQAAAAAAQAEAAAAAAIABAAAAAADAAQAAAAAAQAEAAAAAAIABAAAAAAAAAQAAAAAAwAEAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAAAQAAAAAAgCDAAAAAAAABAAAAAADAAQAAAAAAwAEAAAAAAAABAAAAAADAAQAAAAAAAAEAAAAAAMABAAAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAfAAAAAAAAEgAAAAAAABIAAAAAAAAEAAAAAAEAgwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAABAAMAAAAAAQADAAAAAAEAAwAAAAADAAMAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAABAAMAAAAAAgADAAAAAAEAAwAAAAABAAMAAAAAAwADAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAB8AAAAAAAASAAAAAAAAEgAAAAAAAAQAAAAAAwCDAAAAAAAAAwAAAAABAAMAAAAAAQADAAAAAAEAAwAAAAABAAMAAAAAAwADAAAAAAAAAwAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAAEAAAAAAIAgwAAAAAAAAQAAAAAAQAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAABAAQAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAABAAAAAABAAQAAAAAAQAEAAAAAAIABAAAAAABAAQAAAAAAgAEAAAAAAMABAAAAAADAAQAAAAAAQAEAAAAAAIAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAAAQAAAAAAQCDAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAMABAAAAAACAAQAAAAAAAAEAAAAAAIABAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAfAAAAAAAAEgAAAAAAABIAAAAAAAAEAAAAAAEAgwAAAAAAAAMAAAAAAQADAAAAAAMAAwAAAAACAAMAAAAAAwADAAAAAAAAAwAAAAACAAMAAAAAAwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAIAAwAAAAABAAMAAAAAAgADAAAAAAEAAwAAAAADAAMAAAAAAwADAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAA== version: 7 -10,-1: ind: -10,-1 @@ -318,35 +318,35 @@ entities: version: 7 -8,-4: ind: -8,-4 - tiles: AAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAABMAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAATAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAEwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAEAAAAAAAATAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAEwAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAATAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAAwAAAAADAAMAAAAAAwADAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAAAEwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAIAAwAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAABMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAAADAAAAAAAADQAAAAACAA0AAAAAAACDAAAAAAAAAwAAAAAAAAMAAAAAAwADAAAAAAIAAwAAAAACAAMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAwCDAAAAAAAAgwAAAAAAAAMAAAAAAQAJAAAAAAAAAwAAAAACAA0AAAAAAAANAAAAAAAAgwAAAAAAAAMAAAAAAwAJAAAAAAAABAAAAAABAAkAAAAAAAADAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAMABAAAAAABAAQAAAAAAwANAAAAAAEADQAAAAABAA0AAAAAAwANAAAAAAMADQAAAAABAAQAAAAAAQADAAAAAAIABAAAAAACAAQAAAAAAQAEAAAAAAMAAwAAAAABAIMAAAAAAAAEAAAAAAMABAAAAAACAAQAAAAAAwAEAAAAAAEADQAAAAACAA0AAAAAAwANAAAAAAIADQAAAAABAA0AAAAAAwCDAAAAAAAAAwAAAAABAAkAAAAAAAAEAAAAAAEACQAAAAAAAAMAAAAAAQCDAAAAAAAAgwAAAAAAAAQAAAAAAACDAAAAAAAAgwAAAAAAAA0AAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAAANAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAQADAAAAAAIABAAAAAABAAQAAAAAAQAEAAAAAAMABAAAAAABAIMAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAQADAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAABMAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAATAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAEwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAABMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAEAAAAAAAATAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAEwAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAABMAAAAAAAATAAAAAAAAEwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAATAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAgADAAAAAAEAgwAAAAAAAAAAAAAAAAABAAAAAAAAEwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAMAAAAAAQADAAAAAAMAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAABAAMAAAAAAACDAAAAAAAAAwAAAAADAAMAAAAAAwADAAAAAAMADQAAAAAAAA0AAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAgADAAAAAAEAAwAAAAABAAMAAAAAAgCDAAAAAAAAgwAAAAAAAAMAAAAAAQCDAAAAAAAAgwAAAAAAAAMAAAAAAgAJAAAAAAAAAwAAAAADAA0AAAAAAQANAAAAAAEAgwAAAAAAAAMAAAAAAwAJAAAAAAAABAAAAAAAAAkAAAAAAAADAAAAAAEAgwAAAAAAAAQAAAAAAgAEAAAAAAMABAAAAAADAAQAAAAAAgANAAAAAAEADQAAAAABAA0AAAAAAwANAAAAAAMADQAAAAAAAAQAAAAAAAADAAAAAAIABAAAAAADAAQAAAAAAgAEAAAAAAEAAwAAAAACAIMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAwAEAAAAAAMADQAAAAACAA0AAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAQCDAAAAAAAAAwAAAAAAAAkAAAAAAAAEAAAAAAEACQAAAAAAAAMAAAAAAgCDAAAAAAAAgwAAAAAAAAQAAAAAAgCDAAAAAAAAgwAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAEAgwAAAAAAAAMAAAAAAwADAAAAAAAAAwAAAAACAAMAAAAAAgADAAAAAAMABAAAAAABAAQAAAAAAQAEAAAAAAEABAAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAADAAMAAAAAAwADAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAACwAAAAAAAAsAAAAAAAALAAAAAAAAgwAAAAAAAA== version: 7 -8,-3: ind: -8,-3 - tiles: IwAAAAABACMAAAAAAAAjAAAAAAIABAAAAAABAIMAAAAAAAAEAAAAAAMABAAAAAAAAAQAAAAAAwAEAAAAAAIABAAAAAADAAQAAAAAAwAEAAAAAAIABAAAAAADAAQAAAAAAgAEAAAAAAEABAAAAAADAB8AAAAAAwAfAAAAAAIAIwAAAAAAAAQAAAAAAwCDAAAAAAAABAAAAAABACMAAAAAAQAjAAAAAAEAIwAAAAACACMAAAAAAgAjAAAAAAIAIwAAAAAAACMAAAAAAwAjAAAAAAIAIwAAAAADAAQAAAAAAgAfAAAAAAAAHwAAAAAAACMAAAAAAAAEAAAAAAEABAAAAAACAAQAAAAAAAAjAAAAAAIAHwAAAAADAB8AAAAAAgAfAAAAAAIAHwAAAAAAAB8AAAAAAwAfAAAAAAIAHwAAAAADACMAAAAAAwAEAAAAAAMAHwAAAAABAB8AAAAAAAAjAAAAAAEABAAAAAAAAIMAAAAAAAAEAAAAAAAAIwAAAAAAACMAAAAAAwAjAAAAAAEAIwAAAAAAACMAAAAAAgAjAAAAAAEAIwAAAAACACMAAAAAAAAjAAAAAAEABAAAAAADACMAAAAAAwAjAAAAAAMAIwAAAAACAAQAAAAAAwCDAAAAAAAABAAAAAAAAAQAAAAAAwAEAAAAAAMABAAAAAABAAQAAAAAAQAEAAAAAAEABAAAAAABAAQAAAAAAQAEAAAAAAAABAAAAAACAAQAAAAAAAAEAAAAAAAABAAAAAADAAQAAAAAAgAEAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAACAAMAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAABAAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAADAIMAAAAAAAAEAAAAAAIABAAAAAACAAQAAAAAAgAEAAAAAAEABAAAAAABAA0AAAAAAAANAAAAAAMADQAAAAAAAA0AAAAAAQCDAAAAAAAADQAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAABAA0AAAAAAACDAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAADAAQAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAgANAAAAAAIABAAAAAAAAAQAAAAAAgAEAAAAAAIABAAAAAACAAQAAAAAAQAEAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAADAIMAAAAAAAADAAAAAAEAAwAAAAABAAMAAAAAAQANAAAAAAMADQAAAAADAIMAAAAAAAAEAAAAAAMABAAAAAACAAQAAAAAAQAEAAAAAAMABAAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAACDAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAADQAAAAAAAA0AAAAAAgCDAAAAAAAABAAAAAADAAQAAAAAAQAEAAAAAAAABAAAAAAAAAQAAAAAAQASAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAACAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAApAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAABAAqAAAAAAUAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAMAKQAAAAAAACoAAAAAAAAqAAAAAAUAKgAAAAAAACoAAAAACgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACkAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAQADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKgAAAAAAAIMAAAAAAAAMAAAAAAAAAwAAAAABAIMAAAAAAAADAAAAAAAAAwAAAAADAA== + tiles: IwAAAAADACMAAAAAAwAjAAAAAAEABAAAAAAAAIMAAAAAAAAEAAAAAAEABAAAAAABAAQAAAAAAgAEAAAAAAAABAAAAAACAAQAAAAAAwAEAAAAAAEABAAAAAAAAAQAAAAAAgAEAAAAAAEABAAAAAABAB8AAAAAAQAfAAAAAAIAIwAAAAAAAAQAAAAAAQCDAAAAAAAABAAAAAADACMAAAAAAAAjAAAAAAIAIwAAAAAAACMAAAAAAQAjAAAAAAIAIwAAAAACACMAAAAAAAAjAAAAAAEAIwAAAAAAAAQAAAAAAgAfAAAAAAMAHwAAAAADACMAAAAAAQAEAAAAAAIABAAAAAADAAQAAAAAAAAjAAAAAAEAHwAAAAADAB8AAAAAAQAfAAAAAAIAHwAAAAABAB8AAAAAAAAfAAAAAAIAHwAAAAABACMAAAAAAAAEAAAAAAMAHwAAAAABAB8AAAAAAwAjAAAAAAIABAAAAAABAIMAAAAAAAAEAAAAAAMAIwAAAAABACMAAAAAAwAjAAAAAAIAIwAAAAACACMAAAAAAAAjAAAAAAAAIwAAAAACACMAAAAAAgAjAAAAAAIABAAAAAACACMAAAAAAwAjAAAAAAAAIwAAAAABAAQAAAAAAgCDAAAAAAAABAAAAAACAAQAAAAAAgAEAAAAAAAABAAAAAACAAQAAAAAAAAEAAAAAAAABAAAAAACAAQAAAAAAgAEAAAAAAIABAAAAAABAAQAAAAAAQAEAAAAAAAABAAAAAACAAQAAAAAAwAEAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAIAAwAAAAABAAMAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAABAAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAMADQAAAAACAIMAAAAAAAAEAAAAAAMABAAAAAADAAQAAAAAAgAEAAAAAAMABAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAAAAA0AAAAAAACDAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAAADQAAAAABAA0AAAAAAQCDAAAAAAAABAAAAAADAAQAAAAAAgAEAAAAAAAABAAAAAACAAQAAAAAAQANAAAAAAEADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAEADQAAAAABAA0AAAAAAgANAAAAAAEABAAAAAACAAQAAAAAAwAEAAAAAAAABAAAAAAAAAQAAAAAAQAEAAAAAAAADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAAAAIMAAAAAAAADAAAAAAAAAwAAAAACAAMAAAAAAwANAAAAAAEADQAAAAADAIMAAAAAAAAEAAAAAAIABAAAAAABAAQAAAAAAgAEAAAAAAMABAAAAAABABIAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAACDAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAADQAAAAACAA0AAAAAAgCDAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAEABAAAAAADAAQAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAADQAAAAACAAsAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAwABwAAAAAAAAcAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAYABwAAAAAJAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAgAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAMABwAAAAAAAAIAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAQADAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABwAAAAAAAIMAAAAAAAAMAAAAAAAAAwAAAAACAIMAAAAAAAADAAAAAAMAAwAAAAABAA== version: 7 -9,-3: ind: -9,-3 - tiles: gwAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAAABQAAAAACAAUAAAAAAgAFAAAAAAEAgwAAAAAAAAQAAAAAAQAjAAAAAAEAIwAAAAACAIMAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAEABQAAAAACAAUAAAAAAAAFAAAAAAEABQAAAAADAIMAAAAAAAAEAAAAAAMAIwAAAAABAB8AAAAAAQAEAAAAAAEABAAAAAABAAQAAAAAAAADAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAACAAQAAAAAAwAEAAAAAAEABAAAAAABAAQAAAAAAQAEAAAAAAEABAAAAAAAACMAAAAAAgAfAAAAAAMAgwAAAAAAAAQAAAAAAwAEAAAAAAEAAwAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAMAEgAAAAAAABIAAAAAAAASAAAAAAAAgwAAAAAAAAQAAAAAAAAjAAAAAAAAHwAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAADAAMAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAADABIAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAAAEAAAAAAMAIwAAAAACACMAAAAAAwCDAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAADAAQAAAAAAQAEAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAADAAMAAAAAAgADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAIADQAAAAACAA0AAAAAAAANAAAAAAIADQAAAAABAIMAAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAQANAAAAAAAADQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAAAAA0AAAAAAgCDAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAMADQAAAAACACMAAAAAAQAjAAAAAAEAIwAAAAACAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAMAgwAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAADAA0AAAAAAAANAAAAAAEAgwAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAIADQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== + tiles: gwAAAAAAAAQAAAAAAQAEAAAAAAIAAwAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAAUAAAAAAAAFAAAAAAEABQAAAAAAAAUAAAAAAwAFAAAAAAMAgwAAAAAAAAQAAAAAAwAjAAAAAAAAIwAAAAABAIMAAAAAAAAEAAAAAAEABAAAAAAAAAMAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAAAFAAAAAAIABQAAAAADAAUAAAAAAAAFAAAAAAMABQAAAAAAAIMAAAAAAAAEAAAAAAEAIwAAAAABAB8AAAAAAAAEAAAAAAEABAAAAAACAAQAAAAAAAADAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAAAEAAAAAAIABAAAAAAAAAQAAAAAAwAEAAAAAAEABAAAAAADACMAAAAAAwAfAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAwAEAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAgwAAAAAAAAQAAAAAAQAjAAAAAAMAHwAAAAACAIMAAAAAAAAEAAAAAAEABAAAAAABAAMAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAADABIAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAAAEAAAAAAIAIwAAAAABACMAAAAAAwCDAAAAAAAABAAAAAABAAQAAAAAAwADAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAACAAQAAAAAAgAEAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAwADAAAAAAIAAwAAAAABAAMAAAAAAgADAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAEADQAAAAAAAIMAAAAAAAANAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAIADQAAAAACAA0AAAAAAwCDAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAMADQAAAAACAA0AAAAAAgANAAAAAAAADQAAAAAAACMAAAAAAAAjAAAAAAMAIwAAAAACAA0AAAAAAwANAAAAAAEADQAAAAAAAA0AAAAAAgANAAAAAAIAgwAAAAAAAA0AAAAAAQANAAAAAAIADQAAAAACAA0AAAAAAgANAAAAAAIAgwAAAAAAAA0AAAAAAgANAAAAAAAADQAAAAACAA0AAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABIAAAAAAAASAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== version: 7 -3,1: ind: -3,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAACoAAAAAAACDAAAAAAAABAAAAAACAAQAAAAAAQAEAAAAAAMABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAAqAAAAAAAAgwAAAAAAAAQAAAAAAwAEAAAAAAEABAAAAAABAAQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAADAAQAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAACAAQAAAAAAwAEAAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAwAEAAAAAAEABAAAAAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAAAEAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAAAAAAAAKgAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAcAAAAAAgCDAAAAAAAABAAAAAABAAQAAAAAAAAEAAAAAAEABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAADAAQAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAADAAQAAAAAAwAEAAAAAAMABAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAADAAQAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAAAEAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAoABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -2,1: ind: -2,1 - tiles: BAAAAAABAAQAAAAAAwAEAAAAAAIABAAAAAACAAQAAAAAAAAEAAAAAAMABAAAAAAAAAQAAAAAAQAEAAAAAAAAAwAAAAABABoAAAAAAAAaAAAAAAAAAwAAAAADAAMAAAAAAAAqAAAAAAYAKgAAAAAAAAQAAAAAAwAEAAAAAAAABAAAAAADAAQAAAAAAAAEAAAAAAMABAAAAAADAAQAAAAAAwAEAAAAAAIABAAAAAACAAMAAAAAAwAaAAAAAAAAGgAAAAAAAAMAAAAAAQADAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAMABAAAAAAAAAQAAAAAAAADAAAAAAIAGgAAAAAAABoAAAAAAAADAAAAAAEAAwAAAAADACoAAAAABQAqAAAAAAAABAAAAAACAAQAAAAAAgAEAAAAAAAABAAAAAABAAQAAAAAAAAEAAAAAAEABAAAAAACAAQAAAAAAwAEAAAAAAIAgwAAAAAAABoAAAAAAAAaAAAAAAAAAwAAAAAAAAMAAAAAAwAqAAAAAAAAKgAAAAAAAAQAAAAAAQAEAAAAAAIABAAAAAADAAQAAAAAAAAEAAAAAAIABAAAAAABAAQAAAAAAQAEAAAAAAEABAAAAAABAAQAAAAAAgAaAAAAAAAAGgAAAAAAAAMAAAAAAwADAAAAAAIAKgAAAAADACoAAAAAAAAEAAAAAAAABAAAAAACAAQAAAAAAwAEAAAAAAAABAAAAAACAAQAAAAAAwAEAAAAAAIABAAAAAADAAQAAAAAAgCDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAABQAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAMAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAsAKgAAAAAAACoAAAAAAwAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAADACoAAAAABACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAIAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: BAAAAAADAAQAAAAAAAAEAAAAAAEABAAAAAACAAQAAAAAAgAEAAAAAAAABAAAAAADAAQAAAAAAAAEAAAAAAAAAwAAAAABABoAAAAAAAAaAAAAAAAAAwAAAAADAAMAAAAAAAAHAAAAAAAABwAAAAAAAAQAAAAAAwAEAAAAAAAABAAAAAACAAQAAAAAAAAEAAAAAAEABAAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAADAAMAAAAAAQAaAAAAAAAAGgAAAAAAAAMAAAAAAAADAAAAAAMABwAAAAAAAAcAAAAACQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAACAAQAAAAAAwADAAAAAAAAGgAAAAAAABoAAAAAAAADAAAAAAIAAwAAAAADAAcAAAAAAAAHAAAAAAAABAAAAAADAAQAAAAAAwAEAAAAAAIABAAAAAAAAAQAAAAAAwAEAAAAAAIABAAAAAACAAQAAAAAAgAEAAAAAAEAgwAAAAAAABoAAAAAAAAaAAAAAAAAAwAAAAADAAMAAAAAAQAHAAAAAAAABwAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAACAAQAAAAAAwAEAAAAAAIABAAAAAACAAQAAAAAAwAEAAAAAAMABAAAAAABAAQAAAAAAAAaAAAAAAAAGgAAAAAAAAMAAAAAAAADAAAAAAIABwAAAAAAAAcAAAAAAAAEAAAAAAEABAAAAAAAAAQAAAAAAAAEAAAAAAIABAAAAAADAAQAAAAAAwAEAAAAAAAABAAAAAADAAQAAAAAAwCDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAwAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAACAAHAAAAAAcABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAADAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAQABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAABAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -1,1: ind: -1,1 - tiles: KgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAEACoAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAAAqAAAAAAAAKgAAAAAKACoAAAAAAAAqAAAAAAAAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAEACoAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAACoAAAAAAAAqAAAAAAkAKgAAAAAAACoAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAACAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAACoAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: BwAAAAAAAAcAAAAAAgAHAAAAAAAABwAAAAAAAAcAAAAACQAHAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAcAAAAABQAHAAAAAAAABwAAAAAAAAcAAAAABgAHAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAYABwAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAABwAAAAACAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAAcAAAAABQAHAAAAAAAABwAAAAAGAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAAEAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAAQAAAAAAAAcAAAAAAAAHAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -9,2: ind: -9,2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAUAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAFACoAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAIAKgAAAAAAACoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAABAAqAAAAAAAAKgAAAAAAACoAAAAACwAqAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAAAAAAAAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAAAQAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAUABwAAAAAEAAcAAAAABQAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAEAAcAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAcABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -2,-5: ind: -2,-5 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAAqAAAAAAEAKgAAAAAIACoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAAAAAAAAKgAAAAACACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAKgAAAAAAACoAAAAACgAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAJACoAAAAAAAAqAAAAAAAAKgAAAAABACoAAAAAAAAqAAAAAAAAKgAAAAAIACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAABgAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAHACoAAAAABgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAgAKgAAAAAAACoAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAgAKgAAAAAAACoAAAAABgAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAIABAAAAAADAIMAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAACAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAYAAAAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAABQAHAAAAAAAABwAAAAAIAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAwABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAGAAcAAAAACAAHAAAAAAoABwAAAAAAAAcAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAQABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAFAAcAAAAAAAAHAAAAAAIABwAAAAADAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAEAAcAAAAACQCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAMABAAAAAACAIMAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAYAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAAAAAQAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAQAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAA== version: 7 0,-1: ind: 0,-1 @@ -354,7 +354,7 @@ entities: version: 7 -4,-5: ind: -4,-5 - tiles: KgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAABwAqAAAAAAkAKgAAAAAAACoAAAAAAgAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAwAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAACAAqAAAAAAAAKgAAAAAIACoAAAAAAAAqAAAAAAsAKgAAAAAAACoAAAAACwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAIAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAABQAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAACgAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAUAKgAAAAAMACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAgAqAAAAAAkAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAACQAqAAAAAAAAKgAAAAAAACoAAAAAAAAnAAAAAAAAJwAAAAABACcAAAAAAgAnAAAAAAAAKgAAAAAJACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAGACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAwAnAAAAAAIAJwAAAAACACcAAAAAAAAnAAAAAAEAJwAAAAAAACoAAAAAAAAqAAAAAAIAKgAAAAABACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAcAKgAAAAAAACoAAAAAAAAqAAAAAAAAJwAAAAAAACcAAAAAAAAnAAAAAAMAJwAAAAADACcAAAAAAAAqAAAAAAoAKgAAAAAAACoAAAAAAAAqAAAAAAMAKgAAAAAAACoAAAAABAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAnAAAAAAAAJwAAAAAAACcAAAAAAgAnAAAAAAEAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAABAAqAAAAAAAAKgAAAAAAACoAAAAABgAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAJACoAAAAAAAAqAAAAAAAAKgAAAAALACoAAAAAAAAqAAAAAAIAKgAAAAABACoAAAAAAAAqAAAAAAAAKgAAAAADACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAUAKgAAAAALACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAEAKgAAAAAAACoAAAAAAAAqAAAAAAoAKgAAAAAAACoAAAAACAAqAAAAAAMAKgAAAAAAACoAAAAAAAAqAAAAAAsAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAACQAqAAAAAAAAKgAAAAAEACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKQAAAAAAACkAAAAAAAApAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAsAKgAAAAAAACoAAAAAAAAqAAAAAAcAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAwAKgAAAAAAACoAAAAAAQAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAADAAqAAAAAAAAKgAAAAAAAA== + tiles: BwAAAAABAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAgABwAAAAAEAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAABQAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAYAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAQABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAEABwAAAAAAAAcAAAAAAAAHAAAAAAcABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAFAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAwAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAMAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAACwAHAAAAAAAABwAAAAADAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAYABwAAAAAJAAcAAAAABAAHAAAAAAUABwAAAAAAAAcAAAAABgAHAAAAAAAABwAAAAAAAAcAAAAAAAAnAAAAAAAAJwAAAAACACcAAAAAAQAnAAAAAAMABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAEABwAAAAAAAAcAAAAAAAAnAAAAAAEAJwAAAAADACcAAAAAAwAnAAAAAAAAJwAAAAAAAAcAAAAAAAAHAAAAAAwABwAAAAAAAAcAAAAAAgAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAJwAAAAAAACcAAAAAAQAnAAAAAAMAJwAAAAABACcAAAAAAgAHAAAAAAAABwAAAAAHAAcAAAAAAAAHAAAAAAMABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAgABwAAAAAAAAcAAAAAAAAnAAAAAAAAJwAAAAABACcAAAAAAgAnAAAAAAMABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAIABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAABAAHAAAAAAcABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAACwAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAUABwAAAAAAAAcAAAAACAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAACgAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAwABwAAAAAAAAcAAAAAAAAHAAAAAAEABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABwAAAAAAAAcAAAAACgAHAAAAAAEABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAACgAHAAAAAAAABwAAAAACAAcAAAAAAAAHAAAAAAYABwAAAAAAAA== version: 7 -10,0: ind: -10,0 @@ -366,15 +366,15 @@ entities: version: 7 -3,-5: ind: -3,-5 - tiles: KgAAAAAAACoAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAUAKgAAAAAGACoAAAAAAAAqAAAAAAAAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAABACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAMAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAgAKgAAAAAAACoAAAAACgCDAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAcAgwAAAAAAABIAAAAAAAAMAAAAAAAAEgAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAACACoAAAAAAAAhAAAAAAIAIQAAAAADACEAAAAAAwCDAAAAAAAAKgAAAAABAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAGACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAEACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAKgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAACDAAAAAAAAGgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAAAgwAAAAAAABoAAAAAAAAaAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAAKgAAAAAAAIMAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAgwAAAAAAAIMAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAACoAAAAAAACDAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABoAAAAAAAAaAAAAAAAAgwAAAAAAAAQAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAAAqAAAAAAQAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAEABAAAAAACAAQAAAAAAwCDAAAAAAAAKgAAAAAMAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAABAAQAAAAAAgAEAAAAAAEAgwAAAAAAAA== + tiles: BwAAAAAAAAcAAAAAAAAHAAAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAcAAAAACwAHAAAAAAAABwAAAAAGAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAcABwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAACgAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAEAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAACDAAAAAAAAEgAAAAAAABIAAAAAAAASAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAABIAAAAAAAAMAAAAAAAAEgAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAABAAhAAAAAAIAIQAAAAACACEAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAACDAAAAAAAABwAAAAAAAAcAAAAAAgAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAMAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAABwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAACDAAAAAAAAGgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAAAgwAAAAAAABoAAAAAAAAaAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAALAAAAAAAACwAAAAAAAAsAAAAAAACDAAAAAAAABwAAAAAAAIMAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAgwAAAAAAAIMAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAcAAAAAAACDAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABoAAAAAAAAaAAAAAAAAgwAAAAAAAAQAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAAAHAAAAAAYAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAgCDAAAAAAAABwAAAAAKAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABAAAAAADAAQAAAAAAQAEAAAAAAEAgwAAAAAAAA== version: 7 -4,-6: ind: -4,-6 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAAAGACoAAAAACAAqAAAAAAAAKgAAAAADACoAAAAAAgAqAAAAAAAAKgAAAAAAACoAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAABwAHAAAAAAAABwAAAAABAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAABQAHAAAAAAAABwAAAAAAAAcAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -5,-6: ind: -5,-6 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoAAAAABQAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAADACoAAAAAAAAqAAAAAAAAAAAAAAAAACoAAAAAAAAqAAAAAAAAKgAAAAACACoAAAAAAAAqAAAAAAAAKgAAAAAAACoAAAAAAAAqAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAKgAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAACAAHAAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAACAAHAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAABwAAAAAAAA== version: 7 -1,-5: ind: -1,-5 @@ -398,11 +398,11 @@ entities: version: 7 -8,-5: ind: -8,-5 - tiles: AAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAQADAAAAAAAAAwAAAAABAAwAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAMAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAADAAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAAwAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAMAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAADAAMAAAAAAQADAAAAAAMADAAAAAAAAAMAAAAAAwAMAAAAAAAADAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAwADAAAAAAAAAwAAAAADAAwAAAAAAAADAAAAAAEAAwAAAAADAAMAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAMADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAADAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAADAAMAAAAAAQADAAAAAAAADAAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAQADAAAAAAEAAwAAAAADAAwAAAAAAAADAAAAAAAADAAAAAAAAAwAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAMAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAMADAAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAABMAAAAAAAATAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAADAAwAAAAAAAADAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAQAMAAAAAAAAAwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAIADAAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== + tiles: AAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAADAAwAAAAAAAADAAAAAAMAAwAAAAADAAMAAAAAAwCDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAMAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAGgAAAAAAABoAAAAAAAAaAAAAAAAADAAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABoAAAAAAAAaAAAAAAAAGgAAAAAAAAwAAAAAAAAaAAAAAAAAGgAAAAAAABoAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAMAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAACAAMAAAAAAgADAAAAAAIADAAAAAAAAAMAAAAAAwAMAAAAAAAADAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAADAAwAAAAAAAADAAAAAAMAAwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAADAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABAAMAAAAAAAADAAAAAAEADAAAAAAAAAMAAAAAAwADAAAAAAEAAwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAADAAAAAAEAAwAAAAADAAwAAAAAAAADAAAAAAIADAAAAAAAAAwAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAMAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEADAAAAAAAAAMAAAAAAgADAAAAAAIAAwAAAAABAIMAAAAAAACDAAAAAAAAgwAAAAAAABMAAAAAAAATAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAAAwAAAAAAAADAAAAAAMAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAwAMAAAAAAAAAwAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAMADAAAAAAAAAMAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAABMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAA== version: 7 -8,-6: ind: -8,-6 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAAwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAwADAAAAAAIAAwAAAAACAAMAAAAAAQADAAAAAAEAAwAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAIAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAABABIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAASAAAAAAAAAwAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAwASAAAAAAAAgwAAAAAAAAwAAAAAAACDAAAAAAAAEgAAAAAAAAMAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAEgAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABIAAAAAAAADAAAAAAEAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAADABIAAAAAAACDAAAAAAAADAAAAAAAAIMAAAAAAAASAAAAAAAAAwAAAAADAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAAASAAAAAAAAEgAAAAAAAAwAAAAAAAASAAAAAAAAEgAAAAAAAAMAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAA== + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAgwAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAABAAAAAAAAgwAAAAAAAAAAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAIAAwAAAAABAAMAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgADAAAAAAIAAwAAAAABAAMAAAAAAQADAAAAAAMAAwAAAAACAAMAAAAAAgCDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAEAEgAAAAAAABIAAAAAAAASAAAAAAAAEgAAAAAAABIAAAAAAAADAAAAAAIAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAACABIAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAASAAAAAAAAAwAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgASAAAAAAAAgwAAAAAAAAwAAAAAAACDAAAAAAAAEgAAAAAAAAMAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAACDAAAAAAAAgwAAAAAAAIMAAAAAAAADAAAAAAAAEgAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABIAAAAAAAADAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAQAAAAAAAIMAAAAAAAAAAAAAAAAAgwAAAAAAAIMAAAAAAACDAAAAAAAAAwAAAAAAABIAAAAAAACDAAAAAAAADAAAAAAAAIMAAAAAAAASAAAAAAAAAwAAAAACAIMAAAAAAACDAAAAAAAAgwAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAIMAAAAAAACDAAAAAAAAgwAAAAAAAAMAAAAAAgASAAAAAAAAEgAAAAAAAAwAAAAAAAASAAAAAAAAEgAAAAAAAAMAAAAAAQCDAAAAAAAAgwAAAAAAAIMAAAAAAAAAAAAAAAAAAQAAAAAAAA== version: 7 -9,-5: ind: -9,-5 @@ -1693,6 +1693,7 @@ entities: 1609: -23,-15 1610: -25,-13 1611: -20,-16 + 1622: -50,-62 2130: -109,5 2131: -113,5 2141: -109,11 @@ -1723,6 +1724,7 @@ entities: 1612: -21,-13 1613: -19,-13 1614: -19,-16 + 1623: -45,-61 2132: -110,5 2140: -108,10 2146: -112,11 @@ -1832,6 +1834,8 @@ entities: 1465: -108,-9 1466: -112,-12 1606: -36,-16 + 1616: -51,-59 + 1624: -48,-59 2128: -108,0 2129: -108,3 2152: -132,2 @@ -1876,6 +1880,8 @@ entities: 1490: -119,-22 1493: -119,-25 1600: -26,-13 + 1617: -49,-61 + 1618: -49,-59 1635: -104,-49 2137: -108,-1 2142: -111,11 @@ -1985,6 +1991,7 @@ entities: 1486: -119,-15 1591: -38,-16 1592: -39,-13 + 1621: -46,-62 2143: -114,9 2151: -132,0 2890: -97,-56 @@ -2024,6 +2031,8 @@ entities: 1475: -127,-13 1598: -32,-16 1603: -25,-15 + 1619: -47,-60 + 1620: -48,-61 2138: -108,6 2148: -127,-1 2155: -132,6 @@ -2087,17 +2096,41 @@ entities: id: Bushg4 decals: 2843: -109,29 + 7741: -63.170547,-27.069342 + - node: + color: '#FFFFFFFF' + id: Bushh2 + decals: + 7743: -63.248672,-28.850592 + - node: + color: '#FFFFFFFF' + id: Bushh3 + decals: + 7742: -60.889297,-28.631842 - node: color: '#FFFFFFFF' id: Bushi1 decals: + 1289: -61.930435,-28.141062 2845: -110,31 + 7739: -63.998672,-27.944342 + - node: + color: '#FFFFFFFF' + id: Bushi2 + decals: + 7738: -64.1393,-28.944342 + 7744: -60.701797,-27.131842 + 7746: -59.904922,-28.991215 - node: color: '#FFFFFFFF' id: Bushi3 decals: + 1285: -63.03974,-28.297312 + 1287: -60.961617,-29.062937 2844: -111,29 2846: -108,31 + 7740: -63.983047,-26.928717 + 7745: -60.014297,-27.928715 - node: color: '#FFFFFFFF' id: Bushj1 @@ -2362,6 +2395,7 @@ entities: 8412: -95,-24 8413: -97,-24 8414: -96,-25 + 8434: -96,-35 8435: -92,-38 8446: -85,-40 8447: -86,-39 @@ -3284,6 +3318,7 @@ entities: 3424: -92,-26 3428: -94,-27 3430: -96,-27 + 3433: -96,-28 3434: -95,-28 3435: -94,-28 3437: -91,-28 @@ -3307,6 +3342,7 @@ entities: 3458: -95,-32 3459: -96,-32 3462: -94,-34 + 3463: -92,-34 3464: -91,-34 3465: -90,-35 3466: -91,-35 @@ -3580,6 +3616,7 @@ entities: 3883: -66,-31 3884: -66,-32 3885: -66,-33 + 3886: -65,-29 3889: -64,-25 3890: -64,-24 3894: -61,-24 @@ -3984,6 +4021,7 @@ entities: 4451: -32,21 4452: -34,20 4453: -33,20 + 4454: -28,19 4455: -25,19 4456: -25,17 4457: -25,15 @@ -4014,6 +4052,7 @@ entities: 4482: -25,14 4483: -24,13 4484: -26,12 + 4485: -28,12 4486: -31,10 4487: -22,12 4497: -25,12 @@ -5382,250 +5421,6 @@ entities: 8259: -100,-21 8305: -91,-45 8306: -96,-44 - 8644: -104,11 - 8645: -104,10 - 8646: -103,10 - 8647: -104,9 - 8648: -103,9 - 8649: -102,9 - 8650: -102,8 - 8651: -101,8 - 8652: -103,8 - 8653: -104,8 - 8654: -104,7 - 8655: -103,7 - 8656: -102,7 - 8657: -101,7 - 8658: -100,7 - 8659: -103,6 - 8660: -104,6 - 8661: -104,5 - 8662: -104,3 - 8663: -104,2 - 8664: -104,1 - 8665: -104,0 - 8666: -103,0 - 8667: -103,1 - 8668: -103,2 - 8669: -103,3 - 8670: -103,4 - 8671: -104,4 - 8672: -103,5 - 8673: -104,-2 - 8674: -104,-3 - 8675: -103,-2 - 8676: -103,-3 - 8677: -103,-4 - 8678: -104,-18 - 8679: -104,-19 - 8680: -103,-19 - 8681: -103,-20 - 8682: -104,-20 - 8683: -105,-20 - 8684: -105,-21 - 8685: -104,-21 - 8686: -103,-21 - 8687: -105,-22 - 8688: -104,-22 - 8689: -104,-23 - 8690: -104,-24 - 8691: -105,-23 - 8692: -105,-24 - 8693: -105,-25 - 8694: -105,-26 - 8695: -105,-34 - 8696: -105,-35 - 8697: -105,-36 - 8698: -104,-36 - 8699: -104,-35 - 8700: -104,-34 - 8701: -104,-33 - 8702: -105,-37 - 8703: -104,-37 - 8704: -104,-38 - 8705: -105,-38 - 8706: -105,-39 - 8707: -104,-39 - 8708: -103,-39 - 8709: -103,-40 - 8710: -104,-40 - 8711: -105,-40 - 8712: -105,-41 - 8713: -105,-42 - 8714: -105,-43 - 8715: -105,-44 - 8716: -105,-45 - 8717: -106,-45 - 8718: -106,-46 - 8719: -105,-46 - 8720: -106,-47 - 8721: -105,-47 - 8722: -104,-47 - 8723: -104,-46 - 8724: -104,-45 - 8725: -104,-44 - 8726: -104,-43 - 8727: -104,-42 - 8728: -104,-41 - 8729: -103,-45 - 8730: -103,-46 - 8731: -103,-44 - 8732: -102,-45 - 8733: -102,-44 - 8734: -101,-45 - 8735: -101,-44 - 8736: -101,-43 - 8737: -100,-43 - 8738: -100,-44 - 8739: -100,-45 - 8740: -99,-45 - 8741: -99,-44 - 8742: -99,-43 - 8798: -96,-35 - 8799: -92,-35 - 8800: -96,-28 - 8801: -46,-15 - 8802: -47,-15 - 8803: -48,-15 - 8804: -49,-15 - 8805: -50,-15 - 8806: -52,-15 - 8807: -53,-15 - 8808: -54,-15 - 8809: -55,-15 - 8810: -55,-14 - 8811: -55,-13 - 8812: -54,-13 - 8813: -54,-12 - 8814: -54,-14 - 8815: -53,-14 - 8816: -53,-13 - 8817: -52,-13 - 8818: -52,-14 - 8819: -51,-14 - 8820: -51,-13 - 8821: -50,-12 - 8822: -50,-13 - 8823: -50,-14 - 8824: -49,-14 - 8825: -49,-13 - 8826: -48,-13 - 8827: -48,-14 - 8828: -47,-14 - 8829: -47,-13 - 8830: -46,-13 - 8831: -46,-14 - 8832: -56,-13 - 8833: -56,-14 - 8834: -56,-15 - 8835: -56,-16 - 8836: -57,-16 - 8837: -57,-15 - 8838: -57,-14 - 8839: -57,-13 - 8840: -58,-16 - 8841: -58,-15 - 8842: -59,-15 - 8843: -59,-15 - 8844: -59,-16 - 8845: -60,-16 - 8846: -61,-16 - 8847: -61,-15 - 8848: -60,-15 - 8849: -62,-15 - 8850: -62,-16 - 8851: -63,-16 - 8852: -64,-16 - 8853: -65,-16 - 8854: -66,-16 - 8855: -66,-15 - 8856: -65,-15 - 8857: -64,-15 - 8858: -63,-15 - 8859: -67,-16 - 8860: -68,-16 - 8861: -69,-16 - 8862: -69,-15 - 8863: -68,-15 - 8864: -67,-15 - 8865: -67,-14 - 8866: -69,-14 - 8867: -69,-14 - 8868: -69,-13 - 8869: -68,-13 - 8870: -68,-14 - 8871: -67,-13 - 8872: -70,-13 - 8873: -71,-13 - 8874: -72,-13 - 8875: -73,-13 - 8876: -73,-14 - 8877: -72,-14 - 8878: -70,-14 - 8879: -71,-14 - 8880: -70,-15 - 8881: -71,-15 - 8882: -72,-15 - 8883: -73,-15 - 8884: -66,-17 - 8885: -67,-17 - 8886: -65,-17 - 8887: -64,-17 - 8888: -63,-17 - 8889: -61,-17 - 8890: -62,-17 - 8891: -60,-17 - 8892: -59,-17 - 8893: -58,-17 - 8894: -57,-17 - 8895: -94,-16 - 8896: -95,-16 - 8897: -96,-16 - 8898: -97,-16 - 8899: -98,-16 - 8900: -97,-15 - 8901: -96,-15 - 8902: -95,-15 - 8903: -93,16 - 8904: -93,17 - 8905: -94,17 - 8906: -94,18 - 8907: -94,19 - 8908: -94,20 - 8909: -93,14 - 8917: -31,-16 - 8918: -30,-16 - 8919: -29,-16 - 8920: -29,-15 - 8921: -28,-15 - 8922: -27,-15 - 8923: -27,-14 - 8924: -26,-14 - 8925: -25,-14 - 8926: -27,-13 - 8927: -28,-13 - 8928: -28,-14 - 8929: -29,-14 - 8930: -29,-13 - 8931: -29,-12 - 8932: -30,-12 - 8933: -31,-12 - 8934: -31,-13 - 8935: -30,-13 - 8936: -30,-14 - 8937: -36,-14 - 8938: -31,-14 - 8939: -33,-14 - 8940: -32,-14 - 8941: -34,-14 - 8942: -35,-15 - 8943: -35,-14 - 8944: -33,-15 - 8945: -33,-15 - 8946: -31,-15 - 8947: -30,-15 - 8948: -32,-15 - 8949: -34,-15 - node: color: '#52B4E996' id: FullTileOverlayGreyscale @@ -5717,6 +5512,27 @@ entities: 2603: -122,-40 6930: -126,-54 6931: -127,-54 + - node: + color: '#D4D4D496' + id: HalfTileOverlayGreyscale + decals: + 416: -33,12 + 417: -32,12 + 418: -31,12 + 419: -31,12 + 420: -30,12 + 421: -29,12 + 422: -28,12 + 423: -27,12 + 424: -33,17 + 425: -32,17 + 426: -31,17 + 427: -31,17 + 428: -30,17 + 429: -29,17 + 430: -29,17 + 431: -27,17 + 439: -28,17 - node: color: '#DE3A3A96' id: HalfTileOverlayGreyscale @@ -5777,6 +5593,24 @@ entities: 2593: -120,-42 6929: -126,-56 6932: -127,-56 + - node: + color: '#D4D4D496' + id: HalfTileOverlayGreyscale180 + decals: + 409: -33,14 + 410: -32,14 + 411: -31,14 + 412: -30,14 + 413: -29,14 + 414: -28,14 + 415: -27,14 + 432: -33,19 + 433: -32,19 + 434: -31,19 + 435: -30,19 + 436: -29,19 + 437: -28,19 + 438: -27,19 - node: color: '#DE3A3A96' id: HalfTileOverlayGreyscale180 @@ -5999,41 +5833,6 @@ entities: 7559: -96,2 7560: -95,2 7561: -94,2 - 8564: -33,12 - 8565: -32,12 - 8566: -31,12 - 8567: -30,12 - 8568: -29,12 - 8569: -28,12 - 8570: -27,12 - 8571: -27,17 - 8572: -28,17 - 8573: -29,17 - 8574: -30,17 - 8575: -31,17 - 8576: -32,17 - 8577: -33,17 - 8602: -55,-13 - 8603: -53,-13 - 8604: -52,-13 - 8605: -51,-13 - 8606: -49,-13 - 8607: -48,-13 - 8608: -47,-13 - 8609: -46,-13 - 8636: -73,-13 - 8637: -72,-13 - 8638: -71,-13 - 8639: -70,-13 - 8763: -97,-26 - 8764: -97,-24 - 8765: -97,-23 - 8789: -96,-33 - 8790: -96,-32 - 8791: -96,-31 - 8792: -96,-30 - 8793: -96,-29 - 8795: -96,-27 - node: color: '#A4610696' id: QuarterTileOverlayGreyscale @@ -6167,39 +5966,6 @@ entities: 6505: -94,27 6506: -93,27 6507: -92,27 - - node: - color: '#9FED5896' - id: QuarterTileOverlayGreyscale180 - decals: - 8578: -33,19 - 8579: -32,19 - 8580: -31,19 - 8581: -30,19 - 8582: -29,19 - 8583: -28,19 - 8584: -27,19 - 8585: -27,14 - 8586: -28,14 - 8587: -29,14 - 8588: -30,14 - 8589: -31,14 - 8590: -32,14 - 8591: -33,14 - 8592: -46,-15 - 8593: -47,-15 - 8594: -48,-15 - 8595: -49,-15 - 8596: -50,-15 - 8597: -51,-15 - 8598: -52,-15 - 8599: -53,-15 - 8600: -54,-15 - 8601: -55,-15 - 8640: -73,-15 - 8641: -72,-15 - 8642: -71,-15 - 8643: -70,-15 - 8796: -97,-26 - node: color: '#A4610696' id: QuarterTileOverlayGreyscale180 @@ -6259,9 +6025,11 @@ entities: 7752: -26,4 7753: -25,4 7754: -24,4 + 8016: -92,-35 8017: -93,-35 8018: -94,-35 8019: -95,-35 + 8020: -96,-35 8274: -95,-25 8275: -95,-24 8276: -95,-23 @@ -6303,10 +6071,6 @@ entities: 1189: -56,-23 1190: -56,-24 1191: -56,-25 - 8783: -91,-35 - 8785: -93,-35 - 8786: -94,-35 - 8787: -95,-35 - node: color: '#A4610696' id: QuarterTileOverlayGreyscale270 @@ -6328,6 +6092,7 @@ entities: id: QuarterTileOverlayGreyscale270 decals: 8004: -96,-27 + 8005: -96,-28 8006: -96,-29 8007: -96,-30 8008: -96,-31 @@ -6341,35 +6106,6 @@ entities: 8295: -94,-45 8296: -93,-45 8297: -92,-45 - 8536: -33,19 - 8537: -32,19 - 8538: -31,19 - 8539: -30,19 - 8540: -29,19 - 8541: -28,19 - 8542: -27,19 - 8543: -27,14 - 8544: -28,14 - 8545: -30,14 - 8546: -29,14 - 8547: -31,14 - 8548: -32,14 - 8549: -33,14 - 8618: -55,-15 - 8619: -54,-15 - 8620: -53,-15 - 8621: -52,-15 - 8622: -51,-15 - 8623: -50,-15 - 8624: -49,-15 - 8625: -48,-15 - 8626: -47,-15 - 8627: -46,-15 - 8628: -73,-15 - 8629: -72,-15 - 8630: -71,-15 - 8631: -70,-15 - 8797: -96,-26 - node: color: '#EFB34196' id: QuarterTileOverlayGreyscale270 @@ -6395,23 +6131,6 @@ entities: 1216: -50,-25 1217: -50,-24 1218: -50,-23 - 8766: -95,-23 - 8767: -95,-24 - 8768: -95,-25 - 8769: -95,-26 - 8770: -94,-26 - 8771: -93,-26 - 8772: -92,-26 - 8773: -91,-26 - 8774: -91,-27 - 8775: -91,-28 - 8776: -91,-29 - 8777: -91,-30 - 8778: -91,-31 - 8779: -91,-32 - 8780: -91,-33 - 8781: -91,-34 - 8782: -91,-35 - node: color: '#A4610696' id: QuarterTileOverlayGreyscale90 @@ -6439,32 +6158,6 @@ entities: 8286: -91,-39 8288: -91,-41 8289: -91,-42 - 8550: -33,17 - 8551: -32,17 - 8552: -31,17 - 8553: -30,17 - 8554: -29,17 - 8555: -28,17 - 8556: -27,17 - 8557: -27,12 - 8558: -28,12 - 8559: -29,12 - 8560: -30,12 - 8561: -31,12 - 8562: -32,12 - 8563: -33,12 - 8610: -55,-13 - 8611: -53,-13 - 8612: -52,-13 - 8613: -51,-13 - 8614: -49,-13 - 8615: -48,-13 - 8616: -47,-13 - 8617: -46,-13 - 8632: -73,-13 - 8633: -72,-13 - 8634: -71,-13 - 8635: -70,-13 - node: color: '#FFFFFFFF' id: Remains @@ -6489,40 +6182,40 @@ entities: decals: 7902: -103,-25 - node: - color: '#FFFFFFFF' + color: '#D3BA99FF' id: SpaceStationSign1 decals: - 8911: -65,-16 + 5945: -65,-16 - node: - color: '#FFFFFFFF' + color: '#D3BA99FF' id: SpaceStationSign2 decals: - 8912: -64,-16 + 5946: -64,-16 - node: - color: '#FFFFFFFF' + color: '#D3BA99FF' id: SpaceStationSign3 decals: - 8913: -63,-16 + 5947: -63,-16 - node: - color: '#FFFFFFFF' + color: '#D3BA99FF' id: SpaceStationSign4 decals: - 8910: -62,-16 + 5948: -62,-16 - node: - color: '#FFFFFFFF' + color: '#D3BA99FF' id: SpaceStationSign5 decals: - 8914: -61,-16 + 5949: -61,-16 - node: - color: '#FFFFFFFF' + color: '#D3BA99FF' id: SpaceStationSign6 decals: - 8915: -60,-16 + 5950: -60,-16 - node: - color: '#FFFFFFFF' + color: '#D3BA99FF' id: SpaceStationSign7 decals: - 8916: -59,-16 + 5951: -59,-16 - node: angle: -1.5707963267948966 rad color: '#FFFFFFFF' @@ -7804,21 +7497,6 @@ entities: 5459: -134,0 5460: -134,1 5461: -134,-5 - - node: - color: '#FFFFFFFF' - id: bushsnowa3 - decals: - 8743: -63.812737,-27.188072 - - node: - color: '#FFFFFFFF' - id: bushsnowb1 - decals: - 8744: -63.375237,-27.922447 - - node: - color: '#FFFFFFFF' - id: grasssnow13 - decals: - 8755: -50.97059,-60.18703 - node: color: '#FFFFFFFF' id: grasssnowa1 @@ -7826,8 +7504,6 @@ entities: 2915: -110,20 2920: -112,21 7610: -98,-5 - 8752: -60.23461,-28.781822 - 8757: -47.923714,-60.765156 - node: color: '#FFFFFFFF' id: grasssnowa2 @@ -7842,20 +7518,12 @@ entities: id: grasssnowa3 decals: 2921: -112,22 - 8745: -63.875237,-28.219322 - 8753: -60.093987,-27.141197 - 8754: -49.517464,-61.858906 - node: color: '#FFFFFFFF' id: grasssnowb1 decals: 2919: -108,22 7601: -89,-63 - 8746: -64.01586,-29.063072 - 8747: -62.718987,-27.891197 - 8758: -47.84559,-59.12453 - 8761: -44.986214,-59.921406 - 8762: -50.392464,-60.890156 - node: color: '#FFFFFFFF' id: grasssnowb2 @@ -7867,14 +7535,11 @@ entities: id: grasssnowb3 decals: 7609: -92,-8 - 8750: -60.95336,-27.953697 - 8760: -46.079964,-60.62453 - node: color: '#FFFFFFFF' id: grasssnowc1 decals: 7605: -98,-9 - 8748: -63.125237,-27.328697 - node: color: '#FFFFFFFF' id: grasssnowc3 @@ -7884,10 +7549,6 @@ entities: 7599: -91,-63 7606: -96,-8 7608: -93,-10 - 8749: -60.73461,-27.203697 - 8751: -60.10961,-27.828697 - 8756: -49.28309,-59.827656 - 8759: -46.25184,-59.43703 - node: cleanable: True color: '#B02E26FF' @@ -9574,8 +9235,7 @@ entities: -30,6: 1: 46079 -30,7: - 1: 16312 - 3: 32768 + 1: 49080 -33,8: 1: 52360 -31,9: @@ -9699,8 +9359,7 @@ entities: -35,-6: 1: 61448 -34,-7: - 1: 26223 - 9: 128 + 1: 26351 -34,-6: 1: 26214 -34,-9: @@ -10235,11 +9894,6 @@ entities: temperature: 293.15 moles: Nitrogen: 6666.982 - - volume: 2500 - temperature: 293.15 - moles: - Oxygen: 21.6852 - Nitrogen: 81.57766 chunkSize: 4 - type: GasTileOverlay - type: RadiationGridResistance @@ -10247,6 +9901,8 @@ entities: id: Plasma - type: ImplicitRoof - type: NavMap + - type: TileHistory + chunkHistory: {} - type: ExplosionAirtightGrid - proto: AccordionInstrument entities: @@ -14968,7 +14624,7 @@ entities: pos: -131.5,-45.5 parent: 2 - type: Door - secondsUntilStateChange: -64586.55 + secondsUntilStateChange: -62983.973 state: Opening - type: DeviceLinkSource lastSignals: @@ -16464,14 +16120,11 @@ entities: - uid: 4410 components: - type: MetaData - name: Telecommunications East APC + name: Telecommunications APC - type: Transform rot: 3.141592653589793 rad pos: -84.5,-10.5 parent: 2 - - type: AccessReader - accessListsOriginal: - - - Engineering - type: Fixtures fixtures: {} - uid: 4419 @@ -16829,19 +16482,6 @@ entities: parent: 2 - type: Fixtures fixtures: {} - - uid: 16798 - components: - - type: MetaData - name: Telecommunications West APC - - type: Transform - rot: 3.141592653589793 rad - pos: -88.5,-9.5 - parent: 2 - - type: AccessReader - accessListsOriginal: - - - Engineering - - type: Fixtures - fixtures: {} - uid: 16994 components: - type: MetaData @@ -17107,6 +16747,14 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 24471 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -88.5,-9.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 25110 components: - type: MetaData @@ -24909,18 +24557,6 @@ entities: - type: Transform pos: -118.34879,31.563398 parent: 2 -- proto: BaseChemistryEmptyVial - entities: - - uid: 881 - components: - - type: Transform - pos: -94.74149,-71.37663 - parent: 2 - - uid: 2159 - components: - - type: Transform - pos: -94.53837,-71.20476 - parent: 2 - proto: BaseComputer entities: - uid: 2712 @@ -26752,11 +26388,6 @@ entities: - type: Transform pos: -138.5,-46.5 parent: 2 - - uid: 1728 - components: - - type: Transform - pos: -29.5,-36.5 - parent: 2 - uid: 1754 components: - type: Transform @@ -27507,51 +27138,21 @@ entities: - type: Transform pos: -21.5,-2.5 parent: 2 - - uid: 3511 - components: - - type: Transform - pos: -29.5,-40.5 - parent: 2 - uid: 3513 components: - type: Transform pos: -86.5,-49.5 parent: 2 - - uid: 3515 - components: - - type: Transform - pos: -29.5,-35.5 - parent: 2 - - uid: 3519 - components: - - type: Transform - pos: -29.5,-33.5 - parent: 2 - uid: 3527 components: - type: Transform pos: -17.5,-2.5 parent: 2 - - uid: 3530 - components: - - type: Transform - pos: -29.5,-37.5 - parent: 2 - - uid: 3533 - components: - - type: Transform - pos: -29.5,-34.5 - parent: 2 - uid: 3541 components: - type: Transform pos: -133.5,-39.5 parent: 2 - - uid: 3544 - components: - - type: Transform - pos: -29.5,-39.5 - parent: 2 - uid: 3548 components: - type: Transform @@ -27562,16 +27163,6 @@ entities: - type: Transform pos: -18.5,-2.5 parent: 2 - - uid: 3558 - components: - - type: Transform - pos: -28.5,-33.5 - parent: 2 - - uid: 3563 - components: - - type: Transform - pos: -29.5,-38.5 - parent: 2 - uid: 3576 components: - type: Transform @@ -33252,11 +32843,6 @@ entities: - type: Transform pos: -15.5,-3.5 parent: 2 - - uid: 16856 - components: - - type: Transform - pos: -88.5,-9.5 - parent: 2 - uid: 16947 components: - type: Transform @@ -40527,6 +40113,11 @@ entities: - type: Transform pos: -104.5,-25.5 parent: 2 + - uid: 26405 + components: + - type: Transform + pos: -88.5,-9.5 + parent: 2 - uid: 26430 components: - type: Transform @@ -53095,26 +52686,6 @@ entities: - type: Transform pos: -45.5,-44.5 parent: 2 - - uid: 16861 - components: - - type: Transform - pos: -88.5,-9.5 - parent: 2 - - uid: 16868 - components: - - type: Transform - pos: -88.5,-8.5 - parent: 2 - - uid: 16872 - components: - - type: Transform - pos: -87.5,-8.5 - parent: 2 - - uid: 16907 - components: - - type: Transform - pos: -86.5,-8.5 - parent: 2 - uid: 16960 components: - type: Transform @@ -53230,11 +52801,6 @@ entities: - type: Transform pos: -15.5,-63.5 parent: 2 - - uid: 17797 - components: - - type: Transform - pos: -85.5,-8.5 - parent: 2 - uid: 17835 components: - type: Transform @@ -53275,11 +52841,6 @@ entities: - type: Transform pos: -85.5,-18.5 parent: 2 - - uid: 17990 - components: - - type: Transform - pos: -84.5,-8.5 - parent: 2 - uid: 18106 components: - type: Transform @@ -56150,6 +55711,36 @@ entities: - type: Transform pos: -122.5,-69.5 parent: 2 + - uid: 26499 + components: + - type: Transform + pos: -88.5,-9.5 + parent: 2 + - uid: 26500 + components: + - type: Transform + pos: -88.5,-8.5 + parent: 2 + - uid: 26501 + components: + - type: Transform + pos: -87.5,-8.5 + parent: 2 + - uid: 26502 + components: + - type: Transform + pos: -86.5,-8.5 + parent: 2 + - uid: 26503 + components: + - type: Transform + pos: -85.5,-8.5 + parent: 2 + - uid: 26504 + components: + - type: Transform + pos: -84.5,-8.5 + parent: 2 - proto: CableMVStack entities: - uid: 4379 @@ -57885,11 +57476,6 @@ entities: - type: Transform pos: -21.5,2.5 parent: 2 - - uid: 3566 - components: - - type: Transform - pos: -67.5,-42.5 - parent: 2 - uid: 4114 components: - type: Transform @@ -58547,11 +58133,6 @@ entities: rot: 1.5707963267948966 rad pos: -140.5,-27.5 parent: 2 - - uid: 7544 - components: - - type: Transform - pos: -93.5,-5.5 - parent: 2 - uid: 7619 components: - type: Transform @@ -62231,6 +61812,11 @@ entities: - type: Transform pos: -15.5,6.5 parent: 2 + - uid: 23885 + components: + - type: Transform + pos: -67.5,-42.5 + parent: 2 - uid: 23886 components: - type: Transform @@ -65204,6 +64790,18 @@ entities: - type: Transform pos: -36.404404,-30.261925 parent: 2 +- proto: ChemistryEmptyVial + entities: + - uid: 881 + components: + - type: Transform + pos: -94.74149,-71.37663 + parent: 2 + - uid: 2159 + components: + - type: Transform + pos: -94.53837,-71.20476 + parent: 2 - proto: ChemistryHotplate entities: - uid: 3949 @@ -66143,41 +65741,6 @@ entities: - type: Transform pos: -24.954203,-70.19411 parent: 2 -- proto: ClothingHeadHatSantahat - entities: - - uid: 2552 - components: - - type: Transform - parent: 9711 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 3557 - components: - - type: Transform - pos: -93.06444,-27.321 - parent: 2 - - uid: 3559 - components: - - type: Transform - pos: -93.70506,-27.305374 - parent: 2 - - uid: 3560 - components: - - type: Transform - pos: -93.40819,-27.321 - parent: 2 - - uid: 16797 - components: - - type: Transform - pos: -131.4578,28.890064 - parent: 2 - - type: Clothing - equippedPrefix: nobeard - - type: Foldable - folded: True - - type: Item - heldPrefix: nobeard - proto: ClothingHeadHatTacticalMaidHeadband entities: - uid: 13542 @@ -66364,30 +65927,6 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage -- proto: ClothingOuterSanta - entities: - - uid: 2539 - components: - - type: Transform - parent: 9711 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 3526 - components: - - type: Transform - pos: -93.11131,-27.60225 - parent: 2 - - uid: 3528 - components: - - type: Transform - pos: -93.68944,-27.60225 - parent: 2 - - uid: 3529 - components: - - type: Transform - pos: -93.39256,-27.60225 - parent: 2 - proto: ClothingOuterVestHazard entities: - uid: 25848 @@ -66433,23 +65972,6 @@ entities: - type: Transform pos: -66.47555,-40.507927 parent: 2 -- proto: ClothingShoesSkates - entities: - - uid: 3564 - components: - - type: Transform - pos: -67.79936,-42.5382 - parent: 2 - - uid: 3565 - components: - - type: Transform - pos: -67.48686,-42.5382 - parent: 2 - - uid: 3567 - components: - - type: Transform - pos: -67.17436,-42.522575 - parent: 2 - proto: ClothingUnderSocksCoder entities: - uid: 9657 @@ -66634,6 +66156,12 @@ entities: rot: 1.5707963267948966 rad pos: -63.5,-23.5 parent: 2 + - uid: 2552 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -61.5,-24.5 + parent: 2 - uid: 2632 components: - type: Transform @@ -68351,18 +67879,18 @@ entities: immutable: False temperature: 293.14673 moles: - Oxygen: 1.8856695 - Nitrogen: 7.0937095 + Oxygen: 1.7459903 + Nitrogen: 6.568249 - type: ContainerContainer containers: entity_storage: !type:Container showEnts: False occludes: True ents: + - 24438 - 24434 - - 24432 - 24433 - - 24438 + - 24432 paper_label: !type:ContainerSlot showEnts: False occludes: True @@ -68374,26 +67902,6 @@ entities: - type: Transform pos: -116.5,31.5 parent: 2 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14673 - moles: - Oxygen: 1.7459903 - Nitrogen: 6.568249 - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 2539 - - 2552 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - proto: CrateGenericSteel entities: - uid: 3368 @@ -68655,17 +68163,6 @@ entities: - type: Transform pos: -44.5,-58.5 parent: 2 - - type: ContainerContainer - containers: - entity_storage: !type:Container - showEnts: False - occludes: True - ents: - - 3510 - paper_label: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - proto: CrateSecurityTrackingMindshieldImplants entities: - uid: 22987 @@ -78518,12 +78015,12 @@ entities: - uid: 24439 components: - type: Transform - pos: -129.72116,-28.599983 + pos: -129.67844,-28.442205 parent: 2 - uid: 24448 components: - type: Transform - pos: -129.40866,-28.724983 + pos: -129.38156,-28.58283 parent: 2 - proto: DrinkCanPack entities: @@ -83435,11 +82932,6 @@ entities: - 26265 - proto: Fireplace entities: - - uid: 3672 - components: - - type: Transform - pos: -61.5,-22.5 - parent: 2 - uid: 8655 components: - type: Transform @@ -83910,6 +83402,11 @@ entities: - type: Transform pos: -80.5,-68.5 parent: 2 + - uid: 1728 + components: + - type: Transform + pos: -59.5,-46.5 + parent: 2 - uid: 1776 components: - type: Transform @@ -83930,6 +83427,16 @@ entities: - type: Transform pos: -80.5,-67.5 parent: 2 + - uid: 2522 + components: + - type: Transform + pos: -65.5,-41.5 + parent: 2 + - uid: 2539 + components: + - type: Transform + pos: -68.5,-42.5 + parent: 2 - uid: 3419 components: - type: Transform @@ -83942,6 +83449,301 @@ entities: rot: 1.5707963267948966 rad pos: -50.5,-18.5 parent: 2 + - uid: 3510 + components: + - type: Transform + pos: -63.5,-41.5 + parent: 2 + - uid: 3511 + components: + - type: Transform + pos: -63.5,-42.5 + parent: 2 + - uid: 3512 + components: + - type: Transform + pos: -63.5,-43.5 + parent: 2 + - uid: 3515 + components: + - type: Transform + pos: -68.5,-43.5 + parent: 2 + - uid: 3516 + components: + - type: Transform + pos: -62.5,-41.5 + parent: 2 + - uid: 3517 + components: + - type: Transform + pos: -62.5,-42.5 + parent: 2 + - uid: 3518 + components: + - type: Transform + pos: -62.5,-45.5 + parent: 2 + - uid: 3519 + components: + - type: Transform + pos: -62.5,-44.5 + parent: 2 + - uid: 3520 + components: + - type: Transform + pos: -62.5,-43.5 + parent: 2 + - uid: 3521 + components: + - type: Transform + pos: -63.5,-45.5 + parent: 2 + - uid: 3524 + components: + - type: Transform + pos: -66.5,-43.5 + parent: 2 + - uid: 3525 + components: + - type: Transform + pos: -66.5,-44.5 + parent: 2 + - uid: 3526 + components: + - type: Transform + pos: -66.5,-45.5 + parent: 2 + - uid: 3528 + components: + - type: Transform + pos: -67.5,-42.5 + parent: 2 + - uid: 3529 + components: + - type: Transform + pos: -65.5,-42.5 + parent: 2 + - uid: 3530 + components: + - type: Transform + pos: -65.5,-43.5 + parent: 2 + - uid: 3531 + components: + - type: Transform + pos: -66.5,-42.5 + parent: 2 + - uid: 3532 + components: + - type: Transform + pos: -65.5,-44.5 + parent: 2 + - uid: 3533 + components: + - type: Transform + pos: -65.5,-45.5 + parent: 2 + - uid: 3534 + components: + - type: Transform + pos: -64.5,-41.5 + parent: 2 + - uid: 3535 + components: + - type: Transform + pos: -64.5,-42.5 + parent: 2 + - uid: 3536 + components: + - type: Transform + pos: -64.5,-43.5 + parent: 2 + - uid: 3537 + components: + - type: Transform + pos: -64.5,-44.5 + parent: 2 + - uid: 3538 + components: + - type: Transform + pos: -64.5,-45.5 + parent: 2 + - uid: 3540 + components: + - type: Transform + pos: -61.5,-43.5 + parent: 2 + - uid: 3543 + components: + - type: Transform + pos: -61.5,-42.5 + parent: 2 + - uid: 3544 + components: + - type: Transform + pos: -61.5,-44.5 + parent: 2 + - uid: 3547 + components: + - type: Transform + pos: -60.5,-44.5 + parent: 2 + - uid: 3554 + components: + - type: Transform + pos: -60.5,-45.5 + parent: 2 + - uid: 3555 + components: + - type: Transform + pos: -61.5,-45.5 + parent: 2 + - uid: 3557 + components: + - type: Transform + pos: -61.5,-46.5 + parent: 2 + - uid: 3558 + components: + - type: Transform + pos: -62.5,-47.5 + parent: 2 + - uid: 3559 + components: + - type: Transform + pos: -63.5,-46.5 + parent: 2 + - uid: 3560 + components: + - type: Transform + pos: -62.5,-46.5 + parent: 2 + - uid: 3561 + components: + - type: Transform + pos: -63.5,-47.5 + parent: 2 + - uid: 3562 + components: + - type: Transform + pos: -64.5,-47.5 + parent: 2 + - uid: 3563 + components: + - type: Transform + pos: -65.5,-47.5 + parent: 2 + - uid: 3564 + components: + - type: Transform + pos: -66.5,-47.5 + parent: 2 + - uid: 3565 + components: + - type: Transform + pos: -64.5,-46.5 + parent: 2 + - uid: 3566 + components: + - type: Transform + pos: -65.5,-46.5 + parent: 2 + - uid: 3567 + components: + - type: Transform + pos: -66.5,-46.5 + parent: 2 + - uid: 3568 + components: + - type: Transform + pos: -67.5,-46.5 + parent: 2 + - uid: 3569 + components: + - type: Transform + pos: -67.5,-45.5 + parent: 2 + - uid: 3570 + components: + - type: Transform + pos: -67.5,-43.5 + parent: 2 + - uid: 3572 + components: + - type: Transform + pos: -68.5,-45.5 + parent: 2 + - uid: 3573 + components: + - type: Transform + pos: -68.5,-44.5 + parent: 2 + - uid: 3575 + components: + - type: Transform + pos: -67.5,-44.5 + parent: 2 + - uid: 3583 + components: + - type: Transform + pos: -68.5,-46.5 + parent: 2 + - uid: 3584 + components: + - type: Transform + pos: -67.5,-47.5 + parent: 2 + - uid: 3663 + components: + - type: Transform + pos: -61.5,-41.5 + parent: 2 + - uid: 3664 + components: + - type: Transform + pos: -60.5,-41.5 + parent: 2 + - uid: 3665 + components: + - type: Transform + pos: -60.5,-42.5 + parent: 2 + - uid: 3666 + components: + - type: Transform + pos: -60.5,-43.5 + parent: 2 + - uid: 3667 + components: + - type: Transform + pos: -59.5,-42.5 + parent: 2 + - uid: 3668 + components: + - type: Transform + pos: -59.5,-43.5 + parent: 2 + - uid: 3669 + components: + - type: Transform + pos: -59.5,-44.5 + parent: 2 + - uid: 3670 + components: + - type: Transform + pos: -59.5,-45.5 + parent: 2 + - uid: 3671 + components: + - type: Transform + pos: -60.5,-46.5 + parent: 2 + - uid: 3672 + components: + - type: Transform + pos: -61.5,-47.5 + parent: 2 - uid: 4271 components: - type: Transform @@ -84036,6 +83838,11 @@ entities: rot: -1.5707963267948966 rad pos: -107.5,28.5 parent: 2 + - uid: 13807 + components: + - type: Transform + pos: -60.5,-47.5 + parent: 2 - uid: 16329 components: - type: Transform @@ -84046,6 +83853,50 @@ entities: - type: Transform pos: -79.5,-50.5 parent: 2 + - uid: 16861 + components: + - type: Transform + pos: -45.5,-61.5 + parent: 2 + - type: Edible + edible: Drink + utensil: Spoon + trash: [] + destroyOnEmpty: False + solution: pool + - uid: 16868 + components: + - type: Transform + pos: -44.5,-61.5 + parent: 2 + - type: Edible + edible: Drink + utensil: Spoon + trash: [] + destroyOnEmpty: False + solution: pool + - uid: 16872 + components: + - type: Transform + pos: -46.5,-61.5 + parent: 2 + - type: Edible + edible: Drink + utensil: Spoon + trash: [] + destroyOnEmpty: False + solution: pool + - uid: 16907 + components: + - type: Transform + pos: -44.5,-60.5 + parent: 2 + - type: Edible + edible: Drink + utensil: Spoon + trash: [] + destroyOnEmpty: False + solution: pool - uid: 17621 components: - type: Transform @@ -84091,6 +83942,11 @@ entities: - type: Transform pos: -78.5,-43.5 parent: 2 + - uid: 20536 + components: + - type: Transform + pos: -63.5,-44.5 + parent: 2 - uid: 21442 components: - type: Transform @@ -84099,62 +83955,41 @@ entities: parent: 2 - proto: FloraTree entities: - - uid: 25474 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -110.04935,28.039627 - parent: 2 - - uid: 25475 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -109.7056,30.274002 - parent: 2 - - uid: 25477 + - uid: 7544 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -108.03694,30.711279 + pos: -61.54146,-27.099918 parent: 2 -- proto: FloraTreeChristmas01 - entities: - - uid: 2522 + - uid: 9637 components: - type: Transform - pos: -61.48461,-27.344322 + pos: -45.4908,-60.47104 parent: 2 - - uid: 3569 + - uid: 16856 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -85.52136,24.381989 + pos: -49.051697,-58.97104 parent: 2 - - uid: 3663 + - uid: 25474 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -54.62584,-48.68827 + rot: -1.5707963267948966 rad + pos: -110.04935,28.039627 parent: 2 - - uid: 3666 + - uid: 25475 components: - type: Transform - pos: -127.59616,-26.724983 + rot: -1.5707963267948966 rad + pos: -109.7056,30.274002 parent: 2 -- proto: FloraTreeChristmas02 - entities: - - uid: 3584 + - uid: 25477 components: - type: Transform - pos: -93.551544,-5.729492 + rot: -1.5707963267948966 rad + pos: -108.03694,30.711279 parent: 2 - proto: FloraTreeConifer entities: - - uid: 9637 - components: - - type: Transform - pos: -98.582794,-7.666992 - parent: 2 - uid: 9659 components: - type: Transform @@ -84174,18 +84009,6 @@ entities: - type: Transform pos: -81.52086,-46.351692 parent: 2 -- proto: FloraTreeSnow - entities: - - uid: 3575 - components: - - type: Transform - pos: -49.59559,-58.640156 - parent: 2 - - uid: 3583 - components: - - type: Transform - pos: -46.09559,-60.608906 - parent: 2 - proto: FoamCutlass entities: - uid: 24565 @@ -84605,6 +84428,15 @@ entities: parent: 2 missingComponents: - GasMiner + - uid: 21476 + components: + - type: MetaData + desc: A plasma gas miner - gutted of components and mothballed by Nanotrasen. It's not mining plasma any time soon. + - type: Transform + pos: -93.5,-5.5 + parent: 2 + missingComponents: + - GasMiner - uid: 21477 components: - type: MetaData @@ -130514,24 +130346,6 @@ entities: - type: Transform pos: -45.562256,-4.394846 parent: 2 - - uid: 3535 - components: - - type: Transform - pos: -129.33054,-28.271858 - parent: 2 - - type: Paper - stampState: paper_stamp-warden - stampedBy: - - stampedColor: '#5B0000FF' - stampedName: Aussec - content: >- - [italic]Blimey, yah never had an aussie christmas before? - - - Down unda', instead of snugglin' up to a fireplace, we go outside, start up the barbie and enjoy the blazin' heat. - - - Why don'tcha give it a try? - uid: 6296 components: - type: Transform @@ -132467,6 +132281,11 @@ entities: - type: Transform pos: -55.5,-54.5 parent: 2 + - uid: 26085 + components: + - type: Transform + pos: -54.5,-48.5 + parent: 2 - proto: PottedPlantRandomPlastic entities: - uid: 9400 @@ -132945,11 +132764,6 @@ entities: - type: Transform pos: -52.5,-26.5 parent: 2 - - uid: 3670 - components: - - type: Transform - pos: -129.5,-26.5 - parent: 2 - uid: 4218 components: - type: Transform @@ -134207,6 +134021,18 @@ entities: rot: 3.141592653589793 rad pos: -84.5,-9.5 parent: 2 + - uid: 16797 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -102.5,-11.5 + parent: 2 + - uid: 16798 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -98.5,-11.5 + parent: 2 - uid: 16905 components: - type: Transform @@ -134581,14 +134407,6 @@ entities: - type: Transform pos: -30.5,-76.5 parent: 2 -- proto: PoweredlightGreen - entities: - - uid: 3664 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -102.5,-11.5 - parent: 2 - proto: PoweredlightLED entities: - uid: 14185 @@ -134609,14 +134427,6 @@ entities: - type: Transform pos: -62.5,-38.5 parent: 2 -- proto: PoweredlightRed - entities: - - uid: 3665 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -98.5,-11.5 - parent: 2 - proto: PoweredSmallLight entities: - uid: 70 @@ -135531,145 +135341,6 @@ entities: - type: Transform pos: -100.5,-27.5 parent: 2 -- proto: PresentRandom - entities: - - uid: 3510 - components: - - type: Transform - parent: 9305 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 3512 - components: - - type: Transform - pos: -107.36072,20.344444 - parent: 2 - - uid: 3516 - components: - - type: Transform - pos: -80.46301,-63.427414 - parent: 2 - - uid: 3517 - components: - - type: Transform - pos: -84.92434,24.131989 - parent: 2 - - uid: 3518 - components: - - type: Transform - pos: -91.421814,-60.460304 - parent: 2 - - uid: 3520 - components: - - type: Transform - pos: -71.49494,-63.521164 - parent: 2 - - uid: 3521 - components: - - type: Transform - pos: -104.49365,-63.50718 - parent: 2 - - uid: 3524 - components: - - type: Transform - pos: -86.26809,24.397614 - parent: 2 - - uid: 3525 - components: - - type: Transform - pos: -12.473198,-39.450516 - parent: 2 - - uid: 3531 - components: - - type: Transform - pos: -92.29253,-31.591526 - parent: 2 - - uid: 3534 - components: - - type: Transform - pos: -110.671936,31.590458 - parent: 2 - - uid: 3537 - components: - - type: Transform - pos: -45.55381,-67.34235 - parent: 2 - - uid: 3538 - components: - - type: Transform - pos: -31.479712,-74.5623 - parent: 2 - - uid: 3540 - components: - - type: Transform - pos: -11.520073,-35.494156 - parent: 2 - - uid: 3543 - components: - - type: Transform - pos: -11.520073,-33.44467 - parent: 2 - - uid: 3547 - components: - - type: Transform - pos: -14.587326,-66.45772 - parent: 2 - - uid: 3554 - components: - - type: Transform - pos: -93.45506,-31.247776 - parent: 2 - - uid: 3555 - components: - - type: Transform - pos: -93.29881,-31.685276 - parent: 2 - - uid: 3561 - components: - - type: Transform - pos: -93.68944,-31.607151 - parent: 2 - - uid: 3562 - components: - - type: Transform - pos: -93.04881,-31.216526 - parent: 2 - - uid: 3568 - components: - - type: Transform - pos: -86.04934,24.038239 - parent: 2 - - uid: 3570 - components: - - type: Transform - pos: -85.627464,23.866364 - parent: 2 - - uid: 3573 - components: - - type: Transform - pos: -126.330536,-28.287483 - parent: 2 - - uid: 3667 - components: - - type: Transform - pos: -92.5894,-31.263401 - parent: 2 - - uid: 3668 - components: - - type: Transform - pos: -92.74565,-31.685276 - parent: 2 - - uid: 3669 - components: - - type: Transform - pos: -126.59616,-28.615608 - parent: 2 - - uid: 3671 - components: - - type: Transform - pos: -126.736786,-28.271858 - parent: 2 - proto: Protolathe entities: - uid: 9781 @@ -144041,19 +143712,6 @@ entities: fixtures: {} - proto: SignSecureMed entities: - - uid: 3572 - components: - - type: MetaData - desc: Whatever could that mean? - name: upside-down warning sign - - type: Transform - pos: -123.5,-28.5 - parent: 2 - - type: Fixtures - fixtures: {} - - type: ScaleVisuals - scale: 1,-1 - - type: Appearance - uid: 25361 components: - type: Transform @@ -146462,18 +146120,6 @@ entities: - type: Transform pos: -68.5,-26.5 parent: 2 -- proto: SpawnMobPenguin - entities: - - uid: 3532 - components: - - type: Transform - pos: -113.5,22.5 - parent: 2 - - uid: 3536 - components: - - type: Transform - pos: -113.5,20.5 - parent: 2 - proto: SpawnMobPollyParrot entities: - uid: 16489 @@ -146881,6 +146527,11 @@ entities: - type: Transform pos: -66.5,-15.5 parent: 2 + - uid: 22117 + components: + - type: Transform + pos: -61.5,-24.5 + parent: 2 - uid: 22119 components: - type: Transform @@ -148840,6 +148491,16 @@ entities: - SurveillanceCameraGeneral nameSet: True id: Dorm East + - uid: 23709 + components: + - type: Transform + pos: -66.5,-49.5 + parent: 2 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraGeneral + nameSet: True + id: Pool South - uid: 23727 components: - type: Transform @@ -149037,6 +148698,17 @@ entities: - SurveillanceCameraGeneral nameSet: True id: West Hallway + - uid: 26225 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -57.5,-42.5 + parent: 2 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraGeneral + nameSet: True + id: Pool East - proto: SurveillanceCameraMedical entities: - uid: 8625 @@ -149818,6 +149490,17 @@ entities: - SurveillanceCameraService nameSet: True id: Theatre + - uid: 26224 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -66.5,-37.5 + parent: 2 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraService + nameSet: True + id: Bar Outdoor - proto: SurveillanceCameraSupply entities: - uid: 23760 @@ -152446,11 +152129,23 @@ entities: rot: 3.141592653589793 rad pos: -78.5,-33.5 parent: 2 + - uid: 17797 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -62.5,-23.5 + parent: 2 - uid: 17860 components: - type: Transform pos: -70.5,-35.5 parent: 2 + - uid: 17990 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -61.5,-23.5 + parent: 2 - uid: 18195 components: - type: Transform @@ -152504,6 +152199,12 @@ entities: rot: -1.5707963267948966 rad pos: -61.5,-31.5 parent: 2 + - uid: 21087 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -60.5,-23.5 + parent: 2 - uid: 21474 components: - type: Transform @@ -152983,13 +152684,6 @@ entities: - type: Transform pos: -35.631615,-5.6210203 parent: 2 -- proto: TowelColorOrange - entities: - - uid: 26405 - components: - - type: Transform - pos: -86.3342,-46.265816 - parent: 2 - proto: TowelColorWhite entities: - uid: 9843 @@ -154471,6 +154165,15 @@ entities: parent: 2 - type: Fixtures fixtures: {} +- proto: WallmountTelevision + entities: + - uid: 23944 + components: + - type: Transform + pos: -61.5,-21.5 + parent: 2 + - type: Fixtures + fixtures: {} - proto: WallReinforced entities: - uid: 8 @@ -171105,7 +170808,7 @@ entities: lastSignals: DoorStatus: True - type: Door - secondsUntilStateChange: -264693.3 + secondsUntilStateChange: -263090.72 state: Opening - type: Airlock autoClose: False @@ -172356,16 +172059,6 @@ entities: - type: Transform pos: -125.5,21.5 parent: 2 -- proto: WrappedParcelHumanoid - entities: - - uid: 13807 - components: - - type: MetaData - desc: All I want for christmas... - name: You-rist McPresent - - type: Transform - pos: -97.543884,-4.4971104 - parent: 2 - proto: Wrench entities: - uid: 2447 From c36fffcc1861fe386ce1aa7f28a3012dd1fdc3a2 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 7 Feb 2026 07:03:03 +0000 Subject: [PATCH 265/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 06c79a57aab..351131c3c20 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Absotively - changes: - - message: Air alarms will not replace the number you're currently typing - type: Tweak - id: 8989 - time: '2025-09-20T18:55:34.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40338 - author: Absotively changes: - message: Hand labeler's set text now displays on examine. @@ -3999,3 +3992,10 @@ id: 9495 time: '2026-02-07T01:46:53.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42819 +- author: Velken + changes: + - message: Plasma finally got the memo that Christmas is over. + type: Tweak + id: 9496 + time: '2026-02-07T07:01:55.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42822 From 3efa385f5cae1e6ed9ba7bc9ebc5fc512d99748c Mon Sep 17 00:00:00 2001 From: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> Date: Sat, 7 Feb 2026 02:10:58 -0800 Subject: [PATCH 266/603] Add CL for 42813 (#42824) empty commit From fd870f3e77b9047af276c846eb3eb82f733bec94 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 7 Feb 2026 10:12:06 +0000 Subject: [PATCH 267/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 351131c3c20..f67789d74ee 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Absotively - changes: - - message: Hand labeler's set text now displays on examine. - type: Tweak - id: 8990 - time: '2025-09-20T19:00:22.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40334 - author: PJB3005 changes: - message: Fixed stuff like camera views causing your computer to melt, explode, @@ -3999,3 +3992,10 @@ id: 9496 time: '2026-02-07T07:01:55.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42822 +- author: InsoPL + changes: + - message: Optical Thermal Scanners can now be found in the Engi-Vend. + type: Add + id: 9497 + time: '2026-02-07T10:10:58.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42824 From d72a59f6b75d35eec95f2fff084937c8767afc05 Mon Sep 17 00:00:00 2001 From: slarticodefast <161409025+slarticodefast@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:17:20 +0100 Subject: [PATCH 268/603] Predict holoprojectors and add an integration test for them (#41569) * cleanup * fix fixtures * prediction * fix test * review * fix svalinn visuals * fix chargers * fix portable recharger and its unlit visuals * fix borgs * oomba review * fix examination prediction * predict holosign --- .../Tests/Holosign/HolosignProjectorTest.cs | 113 ++++++++++++++++++ .../Tests/Movement/MovementTest.cs | 21 +++- .../Holosign/HolosignProjectorComponent.cs | 19 --- .../Holosign/HolosignProjectorComponent.cs | 31 +++++ .../Holosign/HolosignSystem.cs | 28 ++--- .../Objects/Devices/holoprojectors.yml | 50 ++++---- .../Structures/Holographic/projections.yml | 40 +++---- 7 files changed, 218 insertions(+), 84 deletions(-) create mode 100644 Content.IntegrationTests/Tests/Holosign/HolosignProjectorTest.cs delete mode 100644 Content.Server/Holosign/HolosignProjectorComponent.cs create mode 100644 Content.Shared/Holosign/HolosignProjectorComponent.cs rename {Content.Server => Content.Shared}/Holosign/HolosignSystem.cs (56%) diff --git a/Content.IntegrationTests/Tests/Holosign/HolosignProjectorTest.cs b/Content.IntegrationTests/Tests/Holosign/HolosignProjectorTest.cs new file mode 100644 index 00000000000..2fc1ce6401c --- /dev/null +++ b/Content.IntegrationTests/Tests/Holosign/HolosignProjectorTest.cs @@ -0,0 +1,113 @@ +#nullable enable +using Content.IntegrationTests.Tests.Movement; +using Content.Shared.Holosign; +using Content.Shared.PowerCell; +using Robust.Shared.Maths; +using Robust.Shared.Prototypes; +using Robust.Shared.Spawners; + +namespace Content.IntegrationTests.Tests.Holosign; + +/// +/// Tests for different devices using . +/// +[TestOf(typeof(HolosignProjectorComponent))] +public sealed class HolosignProjectorTest : MovementTest +{ + private static readonly EntProtoId HoloBarrierProjectorProtoId = "HoloprojectorSecurity"; + private static readonly EntProtoId HoloSignProjectorProtoId = "Holoprojector"; + + /// + /// Tests the janitors holosign projector. + /// + [Test] + public async Task HoloSignTest() + { + var projector = await PlaceInHands(HoloSignProjectorProtoId); + var projectorComp = Comp(projector); + var signProtoId = projectorComp.SignProto; + + // No holosigns before using the item. + await AssertEntityLookup((WallPrototype, 2)); + + var powerCellSystem = SEntMan.System(); + var initialUses = powerCellSystem.GetRemainingUses(ToServer(projector), projectorComp.ChargeUse); + Assert.That(initialUses, Is.GreaterThan(0), "Holoprojector spawned without usable charges."); + + // Click on the tile next to the player. + await Interact(null, TargetCoords); + + // We should have one charge less. + var remainingUses = powerCellSystem.GetRemainingUses(ToServer(projector), projectorComp.ChargeUse); + Assert.That(remainingUses, Is.EqualTo(initialUses - 1), "Holoprojector did not use the right amount of charge when used."); + + // We should have spawned exactly one holosign. + await AssertEntityLookup( + (signProtoId, 1), + (WallPrototype, 2)); + + // Try spawn more holosigns than we have charge. + for (var i = 0; i < initialUses; i++) + { + await Interact(null, TargetCoords); + } + + // The total should be the same as the initial charges. + await AssertEntityLookup( + (signProtoId, initialUses), + (WallPrototype, 2)); + + // We should have no charges left. + remainingUses = powerCellSystem.GetRemainingUses(ToServer(projector), projectorComp.ChargeUse); + Assert.That(remainingUses, Is.Zero, "Holoprojector did not use up all charges."); + } + + /// + /// Tests the security holo barrier projector and the barrier. + /// + [Test] + public async Task HoloBarrierTest() + { + var projector = await PlaceInHands(HoloBarrierProjectorProtoId); + var holoBarrierProtoId = Comp(projector).SignProto; + // No holobarriers before using the item. + await AssertEntityLookup((WallPrototype, 2)); + + // Click on the tile next to the player. + await Interact(null, TargetCoords); + + // We should have spawned exactly one holobarrier. + await AssertEntityLookup( + (holoBarrierProtoId, 1), + (WallPrototype, 2)); + Target = FromServer(await FindEntity(holoBarrierProtoId)); + var timeRemaining = Comp(Target).Lifetime; + + // Check that the barrier is at the location we clicked at. + AssertLocation(Target, TargetCoords); + + // Try moving past the barrier. + Assert.That(Delta(), Is.GreaterThan(0.5), "Player was not located west of the holobarrier."); + await Move(DirectionFlag.East, 0.5f); + Assert.That(Delta(), Is.GreaterThan(0.5), "Player was able to walk through a holobarrier."); + + // Try to climb the barrier. + await Interact(Target, TargetCoords, altInteract: true); + + // We should be able to move past the barrier now. + await Move(DirectionFlag.East, 0.5f); + Assert.That(Delta(), Is.LessThan(-0.5), "Player was not able to climb over a holobarrier."); + + // We should not be able to walk back without climbing again. + await Move(DirectionFlag.West, 0.5f); + Assert.That(Delta(), Is.LessThan(-0.5), "Player was able to walk through a holobarrier."); + + // Wait until the barrier despawns. + await RunSeconds(timeRemaining); + AssertDeleted(Target); + + // We should be able to walk back now. + await Move(DirectionFlag.West, 0.5f); + Assert.That(DeltaCoordinates(), Is.GreaterThan(0.5), "Player was able to walk past a deleted holobarrier."); + } +} diff --git a/Content.IntegrationTests/Tests/Movement/MovementTest.cs b/Content.IntegrationTests/Tests/Movement/MovementTest.cs index 44ef02043e8..ee9d1f77ea6 100644 --- a/Content.IntegrationTests/Tests/Movement/MovementTest.cs +++ b/Content.IntegrationTests/Tests/Movement/MovementTest.cs @@ -2,6 +2,8 @@ using System.Numerics; using Content.IntegrationTests.Tests.Interaction; using Robust.Shared.GameObjects; +using Robust.Shared.Map; +using Robust.Shared.Prototypes; namespace Content.IntegrationTests.Tests.Movement; @@ -13,6 +15,7 @@ namespace Content.IntegrationTests.Tests.Movement; public abstract class MovementTest : InteractionTest { protected override string PlayerPrototype => "MobHuman"; + protected static readonly EntProtoId WallPrototype = "WallSolid"; /// /// Number of tiles to add either side of the player. @@ -47,8 +50,8 @@ public override async Task Setup() if (AddWalls) { - var sWallLeft = await SpawnEntity("WallSolid", pCoords.Offset(new Vector2(-Tiles, 0))); - var sWallRight = await SpawnEntity("WallSolid", pCoords.Offset(new Vector2(Tiles, 0))); + var sWallLeft = await SpawnEntity(WallPrototype, pCoords.Offset(new Vector2(-Tiles, 0))); + var sWallRight = await SpawnEntity(WallPrototype, pCoords.Offset(new Vector2(Tiles, 0))); WallLeft = SEntMan.GetNetEntity(sWallLeft); WallRight = SEntMan.GetNetEntity(sWallRight); @@ -59,7 +62,7 @@ public override async Task Setup() } /// - /// Get the relative horizontal between two entities. Defaults to using the target & player entity. + /// Get the relative horizontal between two entities. Defaults to using the target & player entity. /// protected float Delta(NetEntity? target = null, NetEntity? other = null) { @@ -73,5 +76,17 @@ protected float Delta(NetEntity? target = null, NetEntity? other = null) var delta = Transform.GetWorldPosition(SEntMan.GetEntity(target.Value)) - Transform.GetWorldPosition(SEntMan.GetEntity(other ?? Player)); return delta.X; } + + /// + /// Get the relative horizontal between a set of coordinates and an entity. Defaults to using the target coordinates and the player entity. + /// + protected float DeltaCoordinates(NetCoordinates? coords = null, NetEntity? other = null) + { + other ??= Player; + coords ??= TargetCoords; + + var delta = Transform.ToWorldPosition(ToServer(coords.Value)) - Transform.GetWorldPosition(ToServer(other.Value)); + return delta.X; + } } diff --git a/Content.Server/Holosign/HolosignProjectorComponent.cs b/Content.Server/Holosign/HolosignProjectorComponent.cs deleted file mode 100644 index bdc826f1304..00000000000 --- a/Content.Server/Holosign/HolosignProjectorComponent.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; - -namespace Content.Server.Holosign -{ - [RegisterComponent] - public sealed partial class HolosignProjectorComponent : Component - { - [ViewVariables(VVAccess.ReadWrite)] - [DataField("signProto", customTypeSerializer:typeof(PrototypeIdSerializer))] - public string SignProto = "HolosignWetFloor"; - - /// - /// How much charge a single use expends. - /// - [ViewVariables(VVAccess.ReadWrite), DataField("chargeUse")] - public float ChargeUse = 50f; - } -} diff --git a/Content.Shared/Holosign/HolosignProjectorComponent.cs b/Content.Shared/Holosign/HolosignProjectorComponent.cs new file mode 100644 index 00000000000..532e80fbd84 --- /dev/null +++ b/Content.Shared/Holosign/HolosignProjectorComponent.cs @@ -0,0 +1,31 @@ +using Robust.Shared.Prototypes; +using Robust.Shared.GameStates; + +namespace Content.Shared.Holosign; + +/// +/// Added to an item and allows it to spawn a specified prototype at the location you click on, using charge from a power cell. +/// Used for holosigns, holofans and holobarriers. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class HolosignProjectorComponent : Component +{ + /// + /// The prototype to spawn on use. + /// + [DataField, AutoNetworkedField] + public EntProtoId SignProto = "HolosignWetFloor"; + + /// + /// How much charge a single use expends, in watts. + /// + [DataField, AutoNetworkedField] + public float ChargeUse = 50f; + + /// + /// Whether or not to use predictive spawning. + /// At the moment this does not support entities with animated sprites, so set this to false in that case. + /// + [DataField, AutoNetworkedField] + public bool PredictedSpawn; +} diff --git a/Content.Server/Holosign/HolosignSystem.cs b/Content.Shared/Holosign/HolosignSystem.cs similarity index 56% rename from Content.Server/Holosign/HolosignSystem.cs rename to Content.Shared/Holosign/HolosignSystem.cs index 7d01ffb9752..730ac1140a2 100644 --- a/Content.Server/Holosign/HolosignSystem.cs +++ b/Content.Shared/Holosign/HolosignSystem.cs @@ -1,29 +1,30 @@ using Content.Shared.Examine; -using Content.Shared.Coordinates.Helpers; -using Content.Shared.PowerCell; using Content.Shared.Interaction; +using Content.Shared.PowerCell; using Content.Shared.Storage; +using Robust.Shared.Network; -namespace Content.Server.Holosign; +namespace Content.Shared.Holosign; public sealed class HolosignSystem : EntitySystem { [Dependency] private readonly PowerCellSystem _powerCell = default!; - [Dependency] private readonly SharedTransformSystem _transform = default!; + [Dependency] private readonly INetManager _net = default!; public override void Initialize() { base.Initialize(); + SubscribeLocalEvent(OnBeforeInteract); SubscribeLocalEvent(OnExamine); } - private void OnExamine(EntityUid uid, HolosignProjectorComponent component, ExaminedEvent args) + private void OnExamine(Entity ent, ref ExaminedEvent args) { // TODO: This should probably be using an itemstatus // TODO: I'm too lazy to do this rn but it's literally copy-paste from emag. - var charges = _powerCell.GetRemainingUses(uid, component.ChargeUse); - var maxCharges = _powerCell.GetMaxUses(uid, component.ChargeUse); + var charges = _powerCell.GetRemainingUses(ent.Owner, ent.Comp.ChargeUse); + var maxCharges = _powerCell.GetMaxUses(ent.Owner, ent.Comp.ChargeUse); using (args.PushGroup(nameof(HolosignProjectorComponent))) { @@ -36,23 +37,18 @@ private void OnExamine(EntityUid uid, HolosignProjectorComponent component, Exam } } - private void OnBeforeInteract(EntityUid uid, HolosignProjectorComponent component, BeforeRangedInteractEvent args) + private void OnBeforeInteract(Entity ent, ref BeforeRangedInteractEvent args) { - if (args.Handled || !args.CanReach // prevent placing out of range || HasComp(args.Target) // if it's a storage component like a bag, we ignore usage so it can be stored - || !_powerCell.TryUseCharge(uid, component.ChargeUse, user: args.User) // if no battery or no charge, doesn't work + || !_powerCell.TryUseCharge(ent.Owner, ent.Comp.ChargeUse, user: args.User, predicted: true) // if no battery or no charge, doesn't work ) return; - // places the holographic sign at the click location, snapped to grid. // overlapping of the same holo on one tile remains allowed to allow holofan refreshes - var holoUid = Spawn(component.SignProto, args.ClickLocation.SnapToGrid(EntityManager)); - var xform = Transform(holoUid); - // TODO: Just make the prototype anchored - if (!xform.Anchored) - _transform.AnchorEntity(holoUid, xform); // anchor to prevent any tempering with (don't know what could even interact with it) + if (ent.Comp.PredictedSpawn || _net.IsServer) + PredictedSpawnAtPosition(ent.Comp.SignProto, args.ClickLocation); args.Handled = true; } diff --git a/Resources/Prototypes/Entities/Objects/Devices/holoprojectors.yml b/Resources/Prototypes/Entities/Objects/Devices/holoprojectors.yml index e1a15b74935..e7b057ba5a0 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/holoprojectors.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/holoprojectors.yml @@ -23,7 +23,7 @@ state: icon - type: Tag tags: - - HolosignProjector + - HolosignProjector - type: entity parent: Holoprojector @@ -87,7 +87,7 @@ state: icon - type: Tag tags: - - HolofanProjector + - HolofanProjector - type: StaticPrice price: 50 - type: GuideHelp @@ -126,17 +126,17 @@ name: force field projector description: Creates an impassable forcefield that won't let anything through. Close proximity may or may not cause cancer. components: - - type: HolosignProjector - signProto: HolosignForcefield - chargeUse: 120 - - type: Sprite - sprite: Objects/Devices/Holoprojectors/field.rsi - state: icon - - type: Tag - tags: - - HolofanProjector - - type: StaticPrice - price: 130 + - type: HolosignProjector + signProto: HolosignForcefield + chargeUse: 120 + - type: Sprite + sprite: Objects/Devices/Holoprojectors/field.rsi + state: icon + - type: Tag + tags: + - HolofanProjector + - type: StaticPrice + price: 130 - type: entity parent: HoloprojectorField @@ -154,18 +154,18 @@ name: holobarrier projector description: Creates a solid but fragile holographic barrier. components: - - type: HolosignProjector - signProto: HolosignSecurity - chargeUse: 90 - - type: Sprite - sprite: Objects/Devices/Holoprojectors/security.rsi - state: icon - - type: Tag - tags: - - HolofanProjector - - SecBeltEquip - - type: StaticPrice - price: 50 + - type: HolosignProjector + signProto: HolosignSecurity + chargeUse: 90 + - type: Sprite + sprite: Objects/Devices/Holoprojectors/security.rsi + state: icon + - type: Tag + tags: + - HolofanProjector + - SecBeltEquip + - type: StaticPrice + price: 50 - type: entity parent: HoloprojectorSecurity diff --git a/Resources/Prototypes/Entities/Structures/Holographic/projections.yml b/Resources/Prototypes/Entities/Structures/Holographic/projections.yml index 4867fc84d80..ba51f12e3e3 100644 --- a/Resources/Prototypes/Entities/Structures/Holographic/projections.yml +++ b/Resources/Prototypes/Entities/Structures/Holographic/projections.yml @@ -15,16 +15,17 @@ state: icon - type: TimedDespawn lifetime: 90 + - type: Clickable - type: Damageable damageContainer: Inorganic - type: Destructible thresholds: - - trigger: - !type:DamageTrigger - damage: 30 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 30 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: entity id: HoloFan @@ -74,15 +75,14 @@ - SlipLayer - type: TimedDespawn lifetime: 30 - - type: Clickable - type: Destructible thresholds: - - trigger: - !type:DamageTrigger - damage: 10 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 10 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] - type: entity id: HolosignSecurity @@ -113,7 +113,6 @@ radius: 3 color: red - type: Climbable - - type: Clickable - type: entity id: HolosignForcefield @@ -143,14 +142,13 @@ enabled: true radius: 3 color: blue - - type: Clickable - type: ContainmentField throwForce: 0 - type: Destructible thresholds: - - trigger: - !type:DamageTrigger - damage: 60 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] + - trigger: + !type:DamageTrigger + damage: 60 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] From ff3076aa13a5183b3e347ef2a2bcdd4e8b75eb05 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Sat, 7 Feb 2026 17:20:38 +0700 Subject: [PATCH 269/603] fixing firelocks (#37523) * fixing fire locks * ouch * Revert "fixing fire locks" This reverts commit d7c8f9a6e58daf4ba0ec58c38b951613574294bb. * lol * opts --------- Co-authored-by: Dmitry <57028746+dimm00n@users.noreply.github.com> Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> --- Content.Server/Doors/Systems/FirelockSystem.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Content.Server/Doors/Systems/FirelockSystem.cs b/Content.Server/Doors/Systems/FirelockSystem.cs index 5fd0bf7e97a..be0c0250690 100644 --- a/Content.Server/Doors/Systems/FirelockSystem.cs +++ b/Content.Server/Doors/Systems/FirelockSystem.cs @@ -1,5 +1,6 @@ using Content.Server.Atmos.Components; using Content.Server.Atmos.EntitySystems; +using Content.Server.Atmos.Monitor.Components; using Content.Server.Atmos.Monitor.Systems; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; @@ -22,6 +23,8 @@ public sealed class FirelockSystem : SharedFirelockSystem [Dependency] private readonly SharedMapSystem _mapping = default!; [Dependency] private readonly PointLightSystem _pointLight = default!; + private EntityQuery _atmosAlarmQuery; + private const int UpdateInterval = 30; private int _accumulatedTicks; @@ -30,9 +33,9 @@ public override void Initialize() base.Initialize(); SubscribeLocalEvent(OnAtmosAlarm); - SubscribeLocalEvent(PowerChanged); + _atmosAlarmQuery = GetEntityQuery(); } private void PowerChanged(EntityUid uid, FirelockComponent component, ref PowerChangedEvent args) @@ -57,6 +60,14 @@ public override void Update(float frameTime) var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var firelock, out var door)) { + if (_atmosAlarmQuery.TryComp(uid, out var alarmable) + && alarmable.LastAlarmState == AtmosAlarmType.Danger + && this.IsPowered(uid, EntityManager) + && door.State == DoorState.Open) + { + EmergencyPressureStop(uid, firelock, door); + } + // only bother to check pressure on doors that are some variation of closed. if (door.State != DoorState.Closed && door.State != DoorState.Welded From c1c0e59a8164741abdd6f7448f7852d4ebb693ac Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 7 Feb 2026 10:37:04 +0000 Subject: [PATCH 270/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index f67789d74ee..b8aa0cc81cd 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: PJB3005 - changes: - - message: Fixed stuff like camera views causing your computer to melt, explode, - and then collapse into a black hole. - type: Fix - id: 8991 - time: '2025-09-21T05:16:17.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40181 - author: cmorley191 changes: - message: Improved reliability of cleanade/grenade launcher rounds and other collision-triggered @@ -3999,3 +3991,11 @@ id: 9497 time: '2026-02-07T10:10:58.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42824 +- author: DIMMoon1 + changes: + - message: Firelocks now automatically re-close if they have a danger signal and + they're powered. + type: Fix + id: 9498 + time: '2026-02-07T10:35:56.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/37523 From 1e7d50ebf03754cfcecb5db4dbea41b945f9257a Mon Sep 17 00:00:00 2001 From: qwerltaz <69696513+qwerltaz@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:25:52 +0100 Subject: [PATCH 271/603] scale ammonia and nitrous oxide damage with gas quantity (#39591) buff ammonia and nitrous oxide damage --- Resources/Prototypes/Reagents/botany.yml | 3 ++- Resources/Prototypes/Reagents/gases.yml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Reagents/botany.yml b/Resources/Prototypes/Reagents/botany.yml index 9f5fbe38ead..7885702a9fb 100644 --- a/Resources/Prototypes/Reagents/botany.yml +++ b/Resources/Prototypes/Reagents/botany.yml @@ -228,9 +228,10 @@ reagent: Ammonia min: 1 ignoreResistances: true + scaling: true damage: types: - Poison: 0.25 + Poison: 1 - !type:Vomit probability: 0.12 conditions: diff --git a/Resources/Prototypes/Reagents/gases.yml b/Resources/Prototypes/Reagents/gases.yml index 8b7b62155dd..cd50698a376 100644 --- a/Resources/Prototypes/Reagents/gases.yml +++ b/Resources/Prototypes/Reagents/gases.yml @@ -324,9 +324,10 @@ type: [ Slime ] inverted: true ignoreResistances: true + scaling: true damage: types: - Poison: 0.25 + Poison: 1 - type: reagent id: Frezon From 980cb75ef57a7449f76d99eadb88589b15d166a2 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 7 Feb 2026 10:53:05 +0000 Subject: [PATCH 272/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index b8aa0cc81cd..e7d6013c79c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: cmorley191 - changes: - - message: Improved reliability of cleanade/grenade launcher rounds and other collision-triggered - devices and spells. - type: Fix - id: 8992 - time: '2025-09-21T15:23:37.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40428 - author: ToastEnjoyer changes: - message: Changed the description to the corpsman antagonist. @@ -3999,3 +3991,11 @@ id: 9498 time: '2026-02-07T10:35:56.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/37523 +- author: qwerltaz + changes: + - message: Ammonia and Nitrous Oxide now do more damage according to the concentration + of gas in the atmosphere. + type: Tweak + id: 9499 + time: '2026-02-07T10:51:57.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/39591 From 993c316b6ca28d0e4893de9d1fa8ea5e40ab796b Mon Sep 17 00:00:00 2001 From: Super <84590915+SuperGDPWYL@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:46:59 +0000 Subject: [PATCH 273/603] Emitters now give alerts if interfered with. (#39513) * tesloose alert * forgot to remove this when I removed naming the unlocker * and these too... * migrate to Entity and clarify emitter lines --------- Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> --- .../EntitySystems/EmitterSystem.cs | 45 +++++++++++++++++++ .../Components/SharedEmitterComponent.cs | 7 +++ .../components/emitter-component.ftl | 5 +++ .../Power/Generation/Singularity/emitter.yml | 4 ++ 4 files changed, 61 insertions(+) diff --git a/Content.Server/Singularity/EntitySystems/EmitterSystem.cs b/Content.Server/Singularity/EntitySystems/EmitterSystem.cs index a953fb1036a..84a2307f589 100644 --- a/Content.Server/Singularity/EntitySystems/EmitterSystem.cs +++ b/Content.Server/Singularity/EntitySystems/EmitterSystem.cs @@ -4,9 +4,14 @@ using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Server.Projectiles; +using Content.Server.Pinpointer; +using Content.Server.Radio.EntitySystems; using Content.Server.Weapons.Ranged.Systems; +using Content.Shared.Construction; using Content.Shared.Database; +using Content.Shared.Destructible; using Content.Shared.DeviceLinking.Events; +using Content.Shared.Emag.Systems; using Content.Shared.Interaction; using Content.Shared.Lock; using Content.Shared.Popups; @@ -33,6 +38,8 @@ public sealed class EmitterSystem : SharedEmitterSystem [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly ProjectileSystem _projectile = default!; [Dependency] private readonly GunSystem _gun = default!; + [Dependency] private readonly RadioSystem _radio = default!; + [Dependency] private readonly NavMapSystem _navMap = default!; public override void Initialize() { @@ -43,6 +50,9 @@ public override void Initialize() SubscribeLocalEvent(OnActivate); SubscribeLocalEvent(OnAnchorStateChanged); SubscribeLocalEvent(OnSignalReceived); + SubscribeLocalEvent(OnDestructionAttempted); + SubscribeLocalEvent(OnDeconstructed); // you shouldn't be able to deconstruct locked emitters but out of scope to fix + SubscribeLocalEvent(OnLockToggled); } private void OnAnchorStateChanged(EntityUid uid, EmitterComponent component, ref AnchorStateChangedEvent args) @@ -164,6 +174,8 @@ public void PowerOff(EntityUid uid, EmitterComponent component) return; } + AlertRadio((uid, component), "unpowered"); + component.IsPowered = false; // Must be set while emitter powered. @@ -284,5 +296,38 @@ private void OnSignalReceived(EntityUid uid, EmitterComponent component, ref Sig component.BoltType = boltType; } } + + private void OnDestructionAttempted(Entity ent, ref DestructionAttemptEvent args) + { + // warn engineering their containment engine needs IMMEDIATE repairs + // this doesn't change much for natural loosing through emitter destruction given any meteor warning serves the same purpose + // can also be used to scare engineering though given it broadcasts its location you need a renamed station beacon to really scare them + AlertRadio(ent, "destroyed"); + } + + private void OnDeconstructed(Entity ent, ref MachineDeconstructedEvent args) + { + // right now you don't even need to unlock the emitter to deconstruct it. that's almost certainly a bug but even without it it probably still needs an alert + AlertRadio(ent, "deconstructed"); + } + + private void AlertRadio(Entity ent, string type) + { + if (!ent.Comp.AlertRadio || !ent.Comp.IsOn || !ent.Comp.IsPowered) + return; // APEs do not need to scream over engineering radio, and an emitter that is off is probably not going to be alerting radios + + var message = Loc.GetString("emitter-" + type + "-broadcast", + ("location", FormattedMessage.RemoveMarkupOrThrow(_navMap.GetNearestBeaconString(ent.Owner))) + ); + _radio.SendRadioMessage(ent.Owner, message, ent.Comp.RadioChannel, ent.Owner); + } + + private void OnLockToggled(Entity ent, ref LockToggledEvent args) + { + if (args.Locked) + return; + + AlertRadio(ent, "unlocked"); + } } } diff --git a/Content.Shared/Singularity/Components/SharedEmitterComponent.cs b/Content.Shared/Singularity/Components/SharedEmitterComponent.cs index d1817579689..b3ea3a644f1 100644 --- a/Content.Shared/Singularity/Components/SharedEmitterComponent.cs +++ b/Content.Shared/Singularity/Components/SharedEmitterComponent.cs @@ -1,5 +1,6 @@ using System.Threading; using Content.Shared.DeviceLinking; +using Content.Shared.Radio; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; @@ -96,6 +97,12 @@ public sealed partial class EmitterComponent : Component /// [DataField] public Dictionary, EntProtoId> SetTypePorts = new(); + + [DataField] + public ProtoId RadioChannel = "Engineering"; + + [DataField] + public bool AlertRadio = false; // is this emitter critical to the station to the point a radio channel should be alerted if anything happens to it (i.e. emitters near singularity/tesla containment) } [NetSerializable, Serializable] diff --git a/Resources/Locale/en-US/singularity/components/emitter-component.ftl b/Resources/Locale/en-US/singularity/components/emitter-component.ftl index 5b15154d30f..b077c63d0f3 100644 --- a/Resources/Locale/en-US/singularity/components/emitter-component.ftl +++ b/Resources/Locale/en-US/singularity/components/emitter-component.ftl @@ -13,3 +13,8 @@ comp-emitter-not-anchored = The {$target} isn't anchored to the ground! emitter-component-current-type = The current selected type is: [color=yellow]{$type}[/color]. emitter-component-type-set = Type set to: {$type} + +emitter-destroyed-broadcast = A powered emitter {$location} has been destroyed. +emitter-deconstructed-broadcast = A powered {$location} has been deconstructed. +emitter-unlocked-broadcast = A powered {$location} has been unlocked. +emitter-unpowered-broadcast = A powered {$location} has lost power. diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/emitter.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/emitter.yml index 110cbbf5dce..7647fe8d6a4 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/emitter.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/emitter.yml @@ -36,6 +36,7 @@ visible: false map: ["enum.LockVisualLayers.Lock"] - type: Emitter + alertRadio: true - type: Gun showExamineText: false fireRate: 10 #just has to be fast enough to keep up with upgrades @@ -55,6 +56,9 @@ - type: Damageable damageContainer: StructuralInorganic damageModifierSet: StructuralMetallicStrong + - type: ActiveRadio + channels: + - Engineering - type: Destructible thresholds: - trigger: From ba2b8338009f39e6309c4968d8e4a611c043652c Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 7 Feb 2026 12:03:35 +0000 Subject: [PATCH 274/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index e7d6013c79c..b853b1d1444 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: ToastEnjoyer - changes: - - message: Changed the description to the corpsman antagonist. - type: Tweak - id: 8993 - time: '2025-09-21T19:27:53.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40486 - author: Nyxilath changes: - message: Posters now have proper damage resistances and values, instead of acting @@ -3999,3 +3992,11 @@ id: 9499 time: '2026-02-07T10:51:57.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/39591 +- author: SuperGDPWYL + changes: + - message: Emitters now alert the Engineering radio channel if they are destroyed, + deconstructed, lose power or are unlocked, when powered. + type: Add + id: 9500 + time: '2026-02-07T12:02:24.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/39513 From 45a5d5b1d9eadaefec27dd04cd212db6b85a4533 Mon Sep 17 00:00:00 2001 From: Matt Idzik Date: Sat, 7 Feb 2026 06:39:07 -0600 Subject: [PATCH 275/603] Fixed containment fields dying even when one side still had power (#41006) * Containment fields only die if both sides lose power Currently, if either side of a containment field loses power, the field dies, even if the other side is still powered. This commit changes the behavior to only destroy the field if neither side of the field has enough power. * discard --------- Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> --- .../ContainmentFieldGeneratorSystem.cs | 65 ++++++++++++++----- 1 file changed, 49 insertions(+), 16 deletions(-) diff --git a/Content.Server/Singularity/EntitySystems/ContainmentFieldGeneratorSystem.cs b/Content.Server/Singularity/EntitySystems/ContainmentFieldGeneratorSystem.cs index 3c698e11b94..f6ea77d88c6 100644 --- a/Content.Server/Singularity/EntitySystems/ContainmentFieldGeneratorSystem.cs +++ b/Content.Server/Singularity/EntitySystems/ContainmentFieldGeneratorSystem.cs @@ -12,6 +12,7 @@ using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Events; +using Robust.Shared.Utility; namespace Content.Server.Singularity.EntitySystems; @@ -152,32 +153,62 @@ private void OnComponentRemoved(Entity gener /// /// Deletes the fields and removes the respective connections for the generators. + /// If a predicate is provided, only remove fields and connections if the predicate returns true. /// - private void RemoveConnections(Entity generator) + /// The field generator component + /// An optional predicate that takes in this generator entity and the other generator entity. + /// It should return true if the connection should be removed, and false otherwise. + /// If a predicate isn't provided, all connections will be removed. + private void RemoveConnections( + Entity generator, + Func, Entity, bool>? removePredicate = null) { var (uid, component) = generator; - foreach (var (direction, value) in component.Connections) + var anyFieldsRemoved = false; + + foreach (var (direction, (otherGen, fields)) in component.Connections) { - foreach (var field in value.Item2) + if (removePredicate is not null && !removePredicate(generator, otherGen)) + { + // Do not delete a connection only if the provided predicate says not to. + continue; + } + + anyFieldsRemoved = true; + + foreach (var field in fields) { QueueDel(field); } - value.Item1.Comp.Connections.Remove(direction.GetOpposite()); - if (value.Item1.Comp.Connections.Count == 0) //Change isconnected only if there's no more connections + component.Connections.Remove(direction); + + otherGen.Comp.Connections.Remove(direction.GetOpposite()); + + if (otherGen.Comp.Connections.Count == 0) //Change isconnected only if there's no more connections { - value.Item1.Comp.IsConnected = false; - ChangeOnLightVisualizer(value.Item1); + otherGen.Comp.IsConnected = false; + ChangeOnLightVisualizer(otherGen); } - ChangeFieldVisualizer(value.Item1); + ChangeFieldVisualizer(otherGen); + } + + if (!anyFieldsRemoved) + { + // No fields were removed, so no logging or other updates are necessary. + return; + } + + _popupSystem.PopupEntity(Loc.GetString("comp-containment-disconnected"), uid, PopupType.LargeCaution); + + if (component.Connections.Count == 0) + { + component.IsConnected = false; + ChangeOnLightVisualizer(generator); } - component.Connections.Clear(); - if (component.IsConnected) - _popupSystem.PopupEntity(Loc.GetString("comp-containment-disconnected"), uid, PopupType.LargeCaution); - component.IsConnected = false; - ChangeOnLightVisualizer(generator); ChangeFieldVisualizer(generator); + _adminLogger.Add(LogType.FieldGeneration, LogImpact.Medium, $"{ToPrettyString(uid)} lost field connections"); // Ideally LogImpact would depend on if there is a singulo nearby } @@ -199,7 +230,7 @@ public void ReceivePower(int power, Entity g if (component.PowerBuffer >= component.PowerMinimum) { var directions = Enum.GetValues().Length; - for (int i = 0; i < directions-1; i+=2) + for (int i = 0; i < directions - 1; i += 2) { var dir = (Direction)i; @@ -220,7 +251,9 @@ public void LosePower(Entity generator, int if (component.PowerBuffer < component.PowerMinimum && component.Connections.Count != 0) { - RemoveConnections(generator); + // Only remove connections if the generators on BOTH sides of the field don't have enough power. + // Since we only run this code if we know this gen doesn't have enough power, we only have to check the other gen. + RemoveConnections(generator, (_, otherGen) => otherGen.Comp.PowerBuffer < otherGen.Comp.PowerMinimum); } ChangePowerVisualizer(power, generator); @@ -393,7 +426,7 @@ private void ChangeFieldVisualizer(Entity ge { _visualizer.SetData(generator, ContainmentFieldGeneratorVisuals.FieldLight, generator.Comp.Connections.Count switch { - >1 => FieldLevelVisuals.MultipleFields, + > 1 => FieldLevelVisuals.MultipleFields, 1 => FieldLevelVisuals.OneField, _ => generator.Comp.Enabled ? FieldLevelVisuals.On : FieldLevelVisuals.NoLevel }); From ebebc428f8f2b86ea1b0d35eaf52279a881f4a72 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 7 Feb 2026 12:55:23 +0000 Subject: [PATCH 276/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index b853b1d1444..bd03dacc186 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Nyxilath - changes: - - message: Posters now have proper damage resistances and values, instead of acting - like they were made out of metal. - type: Fix - id: 8994 - time: '2025-09-21T20:40:58.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40489 - author: beck-thompson changes: - message: Shuttle UI is now fixed. You won't go into pilot mode when not having @@ -4000,3 +3992,10 @@ id: 9500 time: '2026-02-07T12:02:24.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/39513 +- author: MidZik + changes: + - message: Fixed containment fields dying even when one side still had power. + type: Fix + id: 9501 + time: '2026-02-07T12:54:14.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/41006 From e4edf7d92e640fd3bcca9bf522fed232bf7f6a3d Mon Sep 17 00:00:00 2001 From: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> Date: Sat, 7 Feb 2026 05:02:53 -0800 Subject: [PATCH 277/603] fix cl (#42831) --- Resources/Changelog/Changelog.yml | 17 +++++------------ Resources/Changelog/Maps.yml | 7 +++++++ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index bd03dacc186..fd17f733dea 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -3954,18 +3954,11 @@ id: 9495 time: '2026-02-07T01:46:53.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42819 -- author: Velken - changes: - - message: Plasma finally got the memo that Christmas is over. - type: Tweak - id: 9496 - time: '2026-02-07T07:01:55.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/42822 - author: InsoPL changes: - message: Optical Thermal Scanners can now be found in the Engi-Vend. type: Add - id: 9497 + id: 9496 time: '2026-02-07T10:10:58.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42824 - author: DIMMoon1 @@ -3973,7 +3966,7 @@ - message: Firelocks now automatically re-close if they have a danger signal and they're powered. type: Fix - id: 9498 + id: 9497 time: '2026-02-07T10:35:56.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/37523 - author: qwerltaz @@ -3981,7 +3974,7 @@ - message: Ammonia and Nitrous Oxide now do more damage according to the concentration of gas in the atmosphere. type: Tweak - id: 9499 + id: 9498 time: '2026-02-07T10:51:57.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/39591 - author: SuperGDPWYL @@ -3989,13 +3982,13 @@ - message: Emitters now alert the Engineering radio channel if they are destroyed, deconstructed, lose power or are unlocked, when powered. type: Add - id: 9500 + id: 9499 time: '2026-02-07T12:02:24.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/39513 - author: MidZik changes: - message: Fixed containment fields dying even when one side still had power. type: Fix - id: 9501 + id: 9500 time: '2026-02-07T12:54:14.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/41006 diff --git a/Resources/Changelog/Maps.yml b/Resources/Changelog/Maps.yml index 75208d90da6..6c0251513fa 100644 --- a/Resources/Changelog/Maps.yml +++ b/Resources/Changelog/Maps.yml @@ -994,4 +994,11 @@ id: 121 time: '2026-01-14T20:19:18.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42385 +- author: Velken + changes: + - message: Plasma finally got the memo that Christmas is over. + type: Tweak + id: 122 + time: '2026-02-07T07:01:55.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42822 Order: 2 From 9170e26bb80c8003ccc7c4eb790bc0b6d955510d Mon Sep 17 00:00:00 2001 From: PAFFhassoocks Date: Sat, 7 Feb 2026 15:56:42 +0300 Subject: [PATCH 278/603] Make nukie infiltrator shuttle pinpointer universal (#42101) replaces pinpointer with universal pinpointer --- Resources/Maps/Shuttles/infiltrator.yml | 1854 +++++++++++------------ 1 file changed, 906 insertions(+), 948 deletions(-) diff --git a/Resources/Maps/Shuttles/infiltrator.yml b/Resources/Maps/Shuttles/infiltrator.yml index 0730d648c28..b80e0dcacbd 100644 --- a/Resources/Maps/Shuttles/infiltrator.yml +++ b/Resources/Maps/Shuttles/infiltrator.yml @@ -1,10 +1,10 @@ meta: format: 7 category: Grid - engineVersion: 266.0.0 + engineVersion: 270.0.0 forkId: "" forkVersion: "" - time: 08/25/2025 16:10:34 + time: 12/26/2025 13:27:43 entityCount: 828 maps: [] grids: @@ -161,63 +161,19 @@ entities: - volume: 2500 temperature: 293.15 moles: - - 21.824879 - - 82.10312 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 + Oxygen: 21.824879 + Nitrogen: 82.10312 - volume: 2500 immutable: True - moles: - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 + moles: {} - volume: 2500 temperature: 293.15 moles: - - 6666.982 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 + Oxygen: 6666.982 - volume: 2500 temperature: 293.15 moles: - - 0 - - 6666.982 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 + Nitrogen: 6666.982 chunkSize: 4 - type: DecalGrid chunkCollection: @@ -562,9 +518,10 @@ entities: - type: SpreaderGrid - type: GridPathfinding - type: ImplicitRoof + - type: ExplosionAirtightGrid - proto: AirlockExternalGlassShuttleSyndicateLocked entities: - - uid: 8 + - uid: 2 components: - type: Transform rot: 1.5707963267948966 rad @@ -572,12 +529,12 @@ entities: parent: 1 - type: DeviceLinkSource linkedPorts: - 13: + 9: - - DoorStatus - Close - type: DeviceLinkSink invokeCounter: 1 - - uid: 10 + - uid: 3 components: - type: Transform rot: -1.5707963267948966 rad @@ -585,24 +542,24 @@ entities: parent: 1 - type: DeviceLinkSource linkedPorts: - 3: + 5: - - DoorStatus - Close - type: DeviceLinkSink invokeCounter: 1 - proto: AirlockExternalSyndicateLocked entities: - - uid: 2 + - uid: 4 components: - type: Transform pos: -0.5,-25.5 parent: 1 - type: DeviceLinkSource linkedPorts: - 14: + 10: - - DoorStatus - DoorBolt - - uid: 3 + - uid: 5 components: - type: Transform pos: -5.5,-16.5 @@ -611,40 +568,40 @@ entities: invokeCounter: 1 - type: DeviceLinkSource linkedPorts: - 10: + 3: - - DoorStatus - Close - - uid: 7 + - uid: 6 components: - type: Transform pos: -4.5,-14.5 parent: 1 - type: DeviceLinkSource linkedPorts: - 12: + 8: - - DoorStatus - DoorBolt - - uid: 9 + - uid: 7 components: - type: Transform pos: 3.5,-14.5 parent: 1 - type: DeviceLinkSource linkedPorts: - 22: + 11: - - DoorStatus - DoorBolt - - uid: 12 + - uid: 8 components: - type: Transform pos: -4.5,-10.5 parent: 1 - type: DeviceLinkSource linkedPorts: - 7: + 6: - - DoorStatus - DoorBolt - - uid: 13 + - uid: 9 components: - type: Transform pos: 4.5,-16.5 @@ -653,59 +610,59 @@ entities: invokeCounter: 1 - type: DeviceLinkSource linkedPorts: - 8: + 2: - - DoorStatus - Close - - uid: 14 + - uid: 10 components: - type: Transform pos: -0.5,-22.5 parent: 1 - type: DeviceLinkSource linkedPorts: - 2: + 4: - - DoorStatus - DoorBolt - - uid: 22 + - uid: 11 components: - type: Transform pos: 3.5,-10.5 parent: 1 - type: DeviceLinkSource linkedPorts: - 9: + 7: - - DoorStatus - DoorBolt - proto: AirlockSyndicateGlassLocked entities: - - uid: 4 + - uid: 12 components: - type: Transform pos: -0.5,-7.5 parent: 1 - - uid: 5 + - uid: 13 components: - type: Transform pos: 3.5,-22.5 parent: 1 - - uid: 6 + - uid: 14 components: - type: Transform pos: -0.5,-18.5 parent: 1 - - uid: 17 + - uid: 15 components: - type: Transform pos: -2.5,-20.5 parent: 1 - proto: AirlockSyndicateLocked entities: - - uid: 15 + - uid: 16 components: - type: Transform pos: -0.5,-14.5 parent: 1 - - uid: 16 + - uid: 17 components: - type: Transform pos: 2.5,-5.5 @@ -729,1100 +686,1100 @@ entities: fixtures: {} - proto: AtmosFixNitrogenMarker entities: - - uid: 25 + - uid: 20 components: - type: Transform pos: 5.5,-26.5 parent: 1 - - uid: 26 + - uid: 21 components: - type: Transform pos: 5.5,-27.5 parent: 1 - proto: AtmosFixOxygenMarker entities: - - uid: 27 + - uid: 22 components: - type: Transform pos: 3.5,-26.5 parent: 1 - - uid: 28 + - uid: 23 components: - type: Transform pos: 3.5,-27.5 parent: 1 - proto: BannerSyndicate entities: - - uid: 29 + - uid: 24 components: - type: Transform pos: 2.5,-15.5 parent: 1 - - uid: 30 + - uid: 25 components: - type: Transform pos: -3.5,-15.5 parent: 1 - proto: Bed entities: - - uid: 31 + - uid: 26 components: - type: Transform pos: 3.5,-3.5 parent: 1 - proto: BedsheetSyndie entities: - - uid: 32 + - uid: 27 components: - type: Transform pos: 3.5,-3.5 parent: 1 - proto: BorgCharger entities: - - uid: 612 + - uid: 28 components: - type: Transform pos: -4.5,-27.5 parent: 1 - proto: BoxEncryptionKeySyndie entities: - - uid: 34 + - uid: 30 components: - type: Transform - parent: 33 + parent: 29 - type: Physics canCollide: False - type: InsideEntityStorage - proto: BoxFlashbang entities: - - uid: 42 + - uid: 38 components: - type: Transform pos: 0.49331844,-13.366474 parent: 1 - proto: BoxFolderNuclearCodes entities: - - uid: 510 + - uid: 39 components: - type: Transform pos: -2.5286522,-11.44479 parent: 1 - proto: BoxHandcuff entities: - - uid: 43 + - uid: 40 components: - type: Transform pos: 1.4510483,-2.399527 parent: 1 - proto: CableApcExtension entities: - - uid: 51 + - uid: 41 components: - type: Transform pos: -3.5,-18.5 parent: 1 - - uid: 52 + - uid: 42 components: - type: Transform pos: -3.5,-17.5 parent: 1 - - uid: 53 + - uid: 43 components: - type: Transform pos: -3.5,-16.5 parent: 1 - - uid: 54 + - uid: 44 components: - type: Transform pos: -4.5,-16.5 parent: 1 - - uid: 55 + - uid: 45 components: - type: Transform pos: -5.5,-16.5 parent: 1 - - uid: 56 + - uid: 46 components: - type: Transform pos: -6.5,-16.5 parent: 1 - - uid: 57 + - uid: 47 components: - type: Transform pos: -7.5,-16.5 parent: 1 - - uid: 58 + - uid: 48 components: - type: Transform pos: -8.5,-16.5 parent: 1 - - uid: 59 + - uid: 49 components: - type: Transform pos: -6.5,-15.5 parent: 1 - - uid: 60 + - uid: 50 components: - type: Transform pos: -6.5,-17.5 parent: 1 - - uid: 61 + - uid: 51 components: - type: Transform pos: -4.5,-15.5 parent: 1 - - uid: 62 + - uid: 52 components: - type: Transform pos: -4.5,-14.5 parent: 1 - - uid: 63 + - uid: 53 components: - type: Transform pos: -4.5,-13.5 parent: 1 - - uid: 64 + - uid: 54 components: - type: Transform pos: -4.5,-12.5 parent: 1 - - uid: 65 + - uid: 55 components: - type: Transform pos: -4.5,-11.5 parent: 1 - - uid: 66 + - uid: 56 components: - type: Transform pos: -4.5,-10.5 parent: 1 - - uid: 67 + - uid: 57 components: - type: Transform pos: -5.5,-12.5 parent: 1 - - uid: 68 + - uid: 58 components: - type: Transform pos: -6.5,-12.5 parent: 1 - - uid: 69 + - uid: 59 components: - type: Transform pos: -2.5,-16.5 parent: 1 - - uid: 70 + - uid: 60 components: - type: Transform pos: -1.5,-16.5 parent: 1 - - uid: 71 + - uid: 61 components: - type: Transform pos: -0.5,-16.5 parent: 1 - - uid: 72 + - uid: 62 components: - type: Transform pos: 0.5,-16.5 parent: 1 - - uid: 73 + - uid: 63 components: - type: Transform pos: 1.5,-16.5 parent: 1 - - uid: 74 + - uid: 64 components: - type: Transform pos: 2.5,-16.5 parent: 1 - - uid: 75 + - uid: 65 components: - type: Transform pos: 3.5,-16.5 parent: 1 - - uid: 76 + - uid: 66 components: - type: Transform pos: 4.5,-16.5 parent: 1 - - uid: 77 + - uid: 67 components: - type: Transform pos: 5.5,-16.5 parent: 1 - - uid: 78 + - uid: 68 components: - type: Transform pos: 5.5,-15.5 parent: 1 - - uid: 79 + - uid: 69 components: - type: Transform pos: 5.5,-17.5 parent: 1 - - uid: 80 + - uid: 70 components: - type: Transform pos: 6.5,-16.5 parent: 1 - - uid: 81 + - uid: 71 components: - type: Transform pos: 7.5,-16.5 parent: 1 - - uid: 82 + - uid: 72 components: - type: Transform pos: 3.5,-15.5 parent: 1 - - uid: 83 + - uid: 73 components: - type: Transform pos: 3.5,-14.5 parent: 1 - - uid: 84 + - uid: 74 components: - type: Transform pos: 3.5,-13.5 parent: 1 - - uid: 85 + - uid: 75 components: - type: Transform pos: 3.5,-12.5 parent: 1 - - uid: 86 + - uid: 76 components: - type: Transform pos: 3.5,-11.5 parent: 1 - - uid: 87 + - uid: 77 components: - type: Transform pos: 3.5,-11.5 parent: 1 - - uid: 88 + - uid: 78 components: - type: Transform pos: 3.5,-10.5 parent: 1 - - uid: 89 + - uid: 79 components: - type: Transform pos: 4.5,-12.5 parent: 1 - - uid: 90 + - uid: 80 components: - type: Transform pos: 5.5,-12.5 parent: 1 - - uid: 91 + - uid: 81 components: - type: Transform pos: -0.5,-6.5 parent: 1 - - uid: 92 + - uid: 82 components: - type: Transform pos: -0.5,-7.5 parent: 1 - - uid: 93 + - uid: 83 components: - type: Transform pos: -0.5,-8.5 parent: 1 - - uid: 94 + - uid: 84 components: - type: Transform pos: -0.5,-9.5 parent: 1 - - uid: 95 + - uid: 85 components: - type: Transform pos: -0.5,-10.5 parent: 1 - - uid: 96 + - uid: 86 components: - type: Transform pos: -0.5,-11.5 parent: 1 - - uid: 97 + - uid: 87 components: - type: Transform pos: -0.5,-12.5 parent: 1 - - uid: 98 + - uid: 88 components: - type: Transform pos: -0.5,-13.5 parent: 1 - - uid: 99 + - uid: 89 components: - type: Transform pos: -0.5,-14.5 parent: 1 - - uid: 100 + - uid: 90 components: - type: Transform pos: -1.5,-12.5 parent: 1 - - uid: 101 + - uid: 91 components: - type: Transform pos: 0.5,-12.5 parent: 1 - - uid: 102 + - uid: 92 components: - type: Transform pos: -0.5,-5.5 parent: 1 - - uid: 103 + - uid: 93 components: - type: Transform pos: 0.5,-5.5 parent: 1 - - uid: 104 + - uid: 94 components: - type: Transform pos: 1.5,-5.5 parent: 1 - - uid: 105 + - uid: 95 components: - type: Transform pos: 2.5,-5.5 parent: 1 - - uid: 106 + - uid: 96 components: - type: Transform pos: 3.5,-5.5 parent: 1 - - uid: 107 + - uid: 97 components: - type: Transform pos: 3.5,-4.5 parent: 1 - - uid: 108 + - uid: 98 components: - type: Transform pos: -0.5,-4.5 parent: 1 - - uid: 109 + - uid: 99 components: - type: Transform pos: -0.5,-3.5 parent: 1 - - uid: 110 + - uid: 100 components: - type: Transform pos: -0.5,-2.5 parent: 1 - - uid: 111 + - uid: 101 components: - type: Transform pos: 0.5,-2.5 parent: 1 - - uid: 112 + - uid: 102 components: - type: Transform pos: 1.5,-2.5 parent: 1 - - uid: 113 + - uid: 103 components: - type: Transform pos: -1.5,-2.5 parent: 1 - - uid: 114 + - uid: 104 components: - type: Transform pos: -2.5,-2.5 parent: 1 - - uid: 115 + - uid: 105 components: - type: Transform pos: -1.5,-4.5 parent: 1 - - uid: 116 + - uid: 106 components: - type: Transform pos: -3.5,-4.5 parent: 1 - - uid: 117 + - uid: 107 components: - type: Transform pos: -2.5,-4.5 parent: 1 - - uid: 118 + - uid: 108 components: - type: Transform pos: -4.5,-4.5 parent: 1 - - uid: 119 + - uid: 109 components: - type: Transform pos: -5.5,-4.5 parent: 1 - - uid: 120 + - uid: 110 components: - type: Transform pos: -5.5,-5.5 parent: 1 - - uid: 121 + - uid: 111 components: - type: Transform pos: -5.5,-6.5 parent: 1 - - uid: 122 + - uid: 112 components: - type: Transform pos: -5.5,-3.5 parent: 1 - - uid: 123 + - uid: 113 components: - type: Transform pos: 4.5,-4.5 parent: 1 - - uid: 124 + - uid: 114 components: - type: Transform pos: 4.5,-3.5 parent: 1 - - uid: 125 + - uid: 115 components: - type: Transform pos: 3.5,-6.5 parent: 1 - - uid: 126 + - uid: 116 components: - type: Transform pos: -0.5,-17.5 parent: 1 - - uid: 127 + - uid: 117 components: - type: Transform pos: -3.5,-20.5 parent: 1 - - uid: 128 + - uid: 118 components: - type: Transform pos: -3.5,-19.5 parent: 1 - - uid: 129 + - uid: 119 components: - type: Transform pos: -3.5,-21.5 parent: 1 - - uid: 130 + - uid: 120 components: - type: Transform pos: -4.5,-21.5 parent: 1 - - uid: 131 + - uid: 121 components: - type: Transform pos: -4.5,-22.5 parent: 1 - - uid: 132 + - uid: 122 components: - type: Transform pos: -4.5,-23.5 parent: 1 - - uid: 133 + - uid: 123 components: - type: Transform pos: -4.5,-24.5 parent: 1 - - uid: 134 + - uid: 124 components: - type: Transform pos: -4.5,-25.5 parent: 1 - - uid: 135 + - uid: 125 components: - type: Transform pos: -4.5,-25.5 parent: 1 - - uid: 136 + - uid: 126 components: - type: Transform pos: -4.5,-26.5 parent: 1 - - uid: 137 + - uid: 127 components: - type: Transform pos: -4.5,-27.5 parent: 1 - - uid: 138 + - uid: 128 components: - type: Transform pos: -5.5,-27.5 parent: 1 - - uid: 139 + - uid: 129 components: - type: Transform pos: -6.5,-27.5 parent: 1 - - uid: 140 + - uid: 130 components: - type: Transform pos: -6.5,-26.5 parent: 1 - - uid: 141 + - uid: 131 components: - type: Transform pos: -6.5,-25.5 parent: 1 - - uid: 142 + - uid: 132 components: - type: Transform pos: -6.5,-24.5 parent: 1 - - uid: 143 + - uid: 133 components: - type: Transform pos: -6.5,-23.5 parent: 1 - - uid: 144 + - uid: 134 components: - type: Transform pos: -6.5,-22.5 parent: 1 - - uid: 145 + - uid: 135 components: - type: Transform pos: -2.5,-20.5 parent: 1 - - uid: 146 + - uid: 136 components: - type: Transform pos: -1.5,-20.5 parent: 1 - - uid: 147 + - uid: 137 components: - type: Transform pos: -0.5,-20.5 parent: 1 - - uid: 148 + - uid: 138 components: - type: Transform pos: -0.5,-21.5 parent: 1 - - uid: 149 + - uid: 139 components: - type: Transform pos: -0.5,-23.5 parent: 1 - - uid: 150 + - uid: 140 components: - type: Transform pos: -0.5,-22.5 parent: 1 - - uid: 151 + - uid: 141 components: - type: Transform pos: -0.5,-24.5 parent: 1 - - uid: 152 + - uid: 142 components: - type: Transform pos: -0.5,-25.5 parent: 1 - - uid: 153 + - uid: 143 components: - type: Transform pos: -0.5,-19.5 parent: 1 - - uid: 154 + - uid: 144 components: - type: Transform pos: 0.5,-20.5 parent: 1 - - uid: 155 + - uid: 145 components: - type: Transform pos: 1.5,-20.5 parent: 1 - - uid: 156 + - uid: 146 components: - type: Transform pos: 2.5,-20.5 parent: 1 - - uid: 157 + - uid: 147 components: - type: Transform pos: 3.5,-20.5 parent: 1 - - uid: 158 + - uid: 148 components: - type: Transform pos: 4.5,-20.5 parent: 1 - - uid: 159 + - uid: 149 components: - type: Transform pos: 3.5,-21.5 parent: 1 - - uid: 160 + - uid: 150 components: - type: Transform pos: 3.5,-22.5 parent: 1 - - uid: 161 + - uid: 151 components: - type: Transform pos: 3.5,-23.5 parent: 1 - - uid: 162 + - uid: 152 components: - type: Transform pos: 3.5,-24.5 parent: 1 - - uid: 163 + - uid: 153 components: - type: Transform pos: 3.5,-25.5 parent: 1 - - uid: 164 + - uid: 154 components: - type: Transform pos: 3.5,-26.5 parent: 1 - - uid: 165 + - uid: 155 components: - type: Transform pos: 3.5,-27.5 parent: 1 - - uid: 166 + - uid: 156 components: - type: Transform pos: 4.5,-27.5 parent: 1 - - uid: 167 + - uid: 157 components: - type: Transform pos: 5.5,-27.5 parent: 1 - - uid: 168 + - uid: 158 components: - type: Transform pos: 5.5,-26.5 parent: 1 - - uid: 169 + - uid: 159 components: - type: Transform pos: 5.5,-25.5 parent: 1 - - uid: 170 + - uid: 160 components: - type: Transform pos: 5.5,-24.5 parent: 1 - - uid: 171 + - uid: 161 components: - type: Transform pos: 5.5,-23.5 parent: 1 - - uid: 172 + - uid: 162 components: - type: Transform pos: 0.5,-8.5 parent: 1 - - uid: 173 + - uid: 163 components: - type: Transform pos: 1.5,-26.5 parent: 1 - - uid: 174 + - uid: 164 components: - type: Transform pos: 1.5,-8.5 parent: 1 - - uid: 175 + - uid: 165 components: - type: Transform pos: -0.5,-26.5 parent: 1 - - uid: 176 + - uid: 166 components: - type: Transform pos: -1.5,-26.5 parent: 1 - - uid: 177 + - uid: 167 components: - type: Transform pos: 0.5,-26.5 parent: 1 - - uid: 178 + - uid: 168 components: - type: Transform pos: -2.5,-26.5 parent: 1 - - uid: 179 + - uid: 169 components: - type: Transform pos: -2.5,-27.5 parent: 1 - - uid: 180 + - uid: 170 components: - type: Transform pos: 1.5,-27.5 parent: 1 - - uid: 181 + - uid: 171 components: - type: Transform pos: -6.5,-28.5 parent: 1 - - uid: 182 + - uid: 172 components: - type: Transform pos: -6.5,-29.5 parent: 1 - - uid: 183 + - uid: 173 components: - type: Transform pos: -2.5,-28.5 parent: 1 - - uid: 184 + - uid: 174 components: - type: Transform pos: -2.5,-29.5 parent: 1 - - uid: 185 + - uid: 175 components: - type: Transform pos: -2.5,-30.5 parent: 1 - - uid: 186 + - uid: 176 components: - type: Transform pos: -3.5,-30.5 parent: 1 - - uid: 187 + - uid: 177 components: - type: Transform pos: -4.5,-30.5 parent: 1 - - uid: 188 + - uid: 178 components: - type: Transform pos: -5.5,-30.5 parent: 1 - - uid: 189 + - uid: 179 components: - type: Transform pos: 1.5,-28.5 parent: 1 - - uid: 190 + - uid: 180 components: - type: Transform pos: 1.5,-29.5 parent: 1 - - uid: 191 + - uid: 181 components: - type: Transform pos: 1.5,-30.5 parent: 1 - - uid: 192 + - uid: 182 components: - type: Transform pos: 2.5,-30.5 parent: 1 - - uid: 193 + - uid: 183 components: - type: Transform pos: 3.5,-30.5 parent: 1 - - uid: 194 + - uid: 184 components: - type: Transform pos: 4.5,-30.5 parent: 1 - - uid: 195 + - uid: 185 components: - type: Transform pos: 5.5,-28.5 parent: 1 - - uid: 196 + - uid: 186 components: - type: Transform pos: 5.5,-29.5 parent: 1 - proto: CableHV entities: - - uid: 197 + - uid: 187 components: - type: Transform pos: -2.5,-21.5 parent: 1 - - uid: 198 + - uid: 188 components: - type: Transform pos: -4.5,-26.5 parent: 1 - - uid: 199 + - uid: 189 components: - type: Transform pos: -4.5,-27.5 parent: 1 - - uid: 200 + - uid: 190 components: - type: Transform pos: -5.5,-27.5 parent: 1 - - uid: 201 + - uid: 191 components: - type: Transform pos: -6.5,-27.5 parent: 1 - - uid: 202 + - uid: 192 components: - type: Transform pos: -5.5,-23.5 parent: 1 - - uid: 203 + - uid: 193 components: - type: Transform pos: -5.5,-22.5 parent: 1 - - uid: 204 + - uid: 194 components: - type: Transform pos: -5.5,-20.5 parent: 1 - - uid: 205 + - uid: 195 components: - type: Transform pos: -4.5,-20.5 parent: 1 - - uid: 206 + - uid: 196 components: - type: Transform pos: -5.5,-19.5 parent: 1 - - uid: 207 + - uid: 197 components: - type: Transform pos: -4.5,-19.5 parent: 1 - - uid: 208 + - uid: 198 components: - type: Transform pos: -3.5,-19.5 parent: 1 - - uid: 209 + - uid: 199 components: - type: Transform pos: -5.5,-21.5 parent: 1 - - uid: 210 + - uid: 200 components: - type: Transform pos: -6.5,-26.5 parent: 1 - - uid: 211 + - uid: 201 components: - type: Transform pos: -6.5,-25.5 parent: 1 - - uid: 212 + - uid: 202 components: - type: Transform pos: -6.5,-24.5 parent: 1 - - uid: 213 + - uid: 203 components: - type: Transform pos: -4.5,-23.5 parent: 1 - - uid: 214 + - uid: 204 components: - type: Transform pos: -2.5,-20.5 parent: 1 - - uid: 215 + - uid: 205 components: - type: Transform pos: -2.5,-19.5 parent: 1 - - uid: 216 + - uid: 206 components: - type: Transform pos: -4.5,-25.5 parent: 1 - - uid: 217 + - uid: 207 components: - type: Transform pos: -6.5,-23.5 parent: 1 - - uid: 218 + - uid: 208 components: - type: Transform pos: -6.5,-20.5 parent: 1 - - uid: 219 + - uid: 209 components: - type: Transform pos: -4.5,-24.5 parent: 1 - - uid: 220 + - uid: 210 components: - type: Transform pos: -5.5,-18.5 parent: 1 - - uid: 221 + - uid: 211 components: - type: Transform pos: -4.5,-18.5 parent: 1 - - uid: 222 + - uid: 212 components: - type: Transform pos: -3.5,-18.5 parent: 1 - - uid: 223 + - uid: 213 components: - type: Transform pos: -3.5,-21.5 parent: 1 - - uid: 224 + - uid: 214 components: - type: Transform pos: -4.5,-21.5 parent: 1 - proto: CableMV entities: - - uid: 225 + - uid: 215 components: - type: Transform pos: -3.5,-19.5 parent: 1 - - uid: 226 + - uid: 216 components: - type: Transform pos: -3.5,-18.5 parent: 1 - - uid: 227 + - uid: 217 components: - type: Transform pos: -3.5,-17.5 parent: 1 - - uid: 228 + - uid: 218 components: - type: Transform pos: -3.5,-16.5 parent: 1 - - uid: 229 + - uid: 219 components: - type: Transform pos: -2.5,-16.5 parent: 1 - - uid: 230 + - uid: 220 components: - type: Transform pos: -0.5,-16.5 parent: 1 - - uid: 231 + - uid: 221 components: - type: Transform pos: -1.5,-16.5 parent: 1 - - uid: 232 + - uid: 222 components: - type: Transform pos: -0.5,-15.5 parent: 1 - - uid: 233 + - uid: 223 components: - type: Transform pos: -0.5,-14.5 parent: 1 - - uid: 234 + - uid: 224 components: - type: Transform pos: -0.5,-13.5 parent: 1 - - uid: 235 + - uid: 225 components: - type: Transform pos: -0.5,-12.5 parent: 1 - - uid: 236 + - uid: 226 components: - type: Transform pos: -0.5,-11.5 parent: 1 - - uid: 237 + - uid: 227 components: - type: Transform pos: -0.5,-10.5 parent: 1 - - uid: 238 + - uid: 228 components: - type: Transform pos: -0.5,-9.5 parent: 1 - - uid: 239 + - uid: 229 components: - type: Transform pos: -0.5,-8.5 parent: 1 - - uid: 240 + - uid: 230 components: - type: Transform pos: -3.5,-20.5 parent: 1 - - uid: 241 + - uid: 231 components: - type: Transform pos: -3.5,-21.5 parent: 1 - - uid: 242 + - uid: 232 components: - type: Transform pos: -4.5,-21.5 parent: 1 - - uid: 243 + - uid: 233 components: - type: Transform pos: -4.5,-22.5 parent: 1 - - uid: 244 + - uid: 234 components: - type: Transform pos: -4.5,-23.5 parent: 1 - - uid: 245 + - uid: 235 components: - type: Transform pos: -4.5,-24.5 parent: 1 - - uid: 246 + - uid: 236 components: - type: Transform pos: -4.5,-25.5 parent: 1 - - uid: 247 + - uid: 237 components: - type: Transform pos: -4.5,-26.5 parent: 1 - - uid: 248 + - uid: 238 components: - type: Transform pos: -4.5,-27.5 parent: 1 - - uid: 249 + - uid: 239 components: - type: Transform pos: 1.5,-8.5 parent: 1 - - uid: 250 + - uid: 240 components: - type: Transform pos: 0.5,-8.5 parent: 1 - proto: CableTerminal entities: - - uid: 251 + - uid: 241 components: - type: Transform rot: 3.141592653589793 rad @@ -1832,7 +1789,7 @@ entities: canCollide: False - type: Fixtures fixtures: {} - - uid: 252 + - uid: 242 components: - type: Transform rot: 3.141592653589793 rad @@ -1844,13 +1801,13 @@ entities: fixtures: {} - proto: Carpet entities: - - uid: 253 + - uid: 243 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,-5.5 parent: 1 - - uid: 254 + - uid: 244 components: - type: Transform rot: -1.5707963267948966 rad @@ -1858,230 +1815,230 @@ entities: parent: 1 - proto: Catwalk entities: - - uid: 255 + - uid: 245 components: - type: Transform pos: -2.5,-26.5 parent: 1 - - uid: 256 + - uid: 246 components: - type: Transform pos: -2.5,-28.5 parent: 1 - - uid: 257 + - uid: 247 components: - type: Transform pos: -8.5,-16.5 parent: 1 - - uid: 258 + - uid: 248 components: - type: Transform pos: -1.5,-16.5 parent: 1 - - uid: 259 + - uid: 249 components: - type: Transform pos: -2.5,-16.5 parent: 1 - - uid: 260 + - uid: 250 components: - type: Transform pos: 4.5,-24.5 parent: 1 - - uid: 261 + - uid: 251 components: - type: Transform pos: 5.5,-24.5 parent: 1 - - uid: 262 + - uid: 252 components: - type: Transform pos: -6.5,-16.5 parent: 1 - - uid: 263 + - uid: 253 components: - type: Transform pos: -7.5,-16.5 parent: 1 - - uid: 264 + - uid: 254 components: - type: Transform pos: -4.5,-13.5 parent: 1 - - uid: 265 + - uid: 255 components: - type: Transform pos: -4.5,-12.5 parent: 1 - - uid: 266 + - uid: 256 components: - type: Transform pos: -4.5,-11.5 parent: 1 - - uid: 267 + - uid: 257 components: - type: Transform pos: 3.5,-13.5 parent: 1 - - uid: 268 + - uid: 258 components: - type: Transform pos: 3.5,-12.5 parent: 1 - - uid: 269 + - uid: 259 components: - type: Transform pos: 3.5,-11.5 parent: 1 - - uid: 270 + - uid: 260 components: - type: Transform pos: 5.5,-16.5 parent: 1 - - uid: 271 + - uid: 261 components: - type: Transform pos: 6.5,-16.5 parent: 1 - - uid: 272 + - uid: 262 components: - type: Transform pos: -0.5,-24.5 parent: 1 - - uid: 273 + - uid: 263 components: - type: Transform pos: -0.5,-23.5 parent: 1 - - uid: 274 + - uid: 264 components: - type: Transform pos: -0.5,-16.5 parent: 1 - - uid: 275 + - uid: 265 components: - type: Transform pos: 5.5,-9.5 parent: 1 - - uid: 276 + - uid: 266 components: - type: Transform pos: 3.5,-9.5 parent: 1 - - uid: 277 + - uid: 267 components: - type: Transform pos: 0.5,-16.5 parent: 1 - - uid: 278 + - uid: 268 components: - type: Transform pos: 0.5,-26.5 parent: 1 - - uid: 279 + - uid: 269 components: - type: Transform pos: 1.5,-27.5 parent: 1 - - uid: 280 + - uid: 270 components: - type: Transform pos: -2.5,-27.5 parent: 1 - - uid: 281 + - uid: 271 components: - type: Transform pos: -2.5,-29.5 parent: 1 - - uid: 282 + - uid: 272 components: - type: Transform pos: 1.5,-26.5 parent: 1 - - uid: 283 + - uid: 273 components: - type: Transform pos: 4.5,-9.5 parent: 1 - - uid: 284 + - uid: 274 components: - type: Transform pos: -0.5,-26.5 parent: 1 - - uid: 285 + - uid: 275 components: - type: Transform pos: 1.5,-28.5 parent: 1 - - uid: 286 + - uid: 276 components: - type: Transform pos: 1.5,-29.5 parent: 1 - - uid: 287 + - uid: 277 components: - type: Transform pos: -1.5,-26.5 parent: 1 - - uid: 288 + - uid: 278 components: - type: Transform pos: -3.5,-9.5 parent: 1 - - uid: 289 + - uid: 279 components: - type: Transform pos: 1.5,-16.5 parent: 1 - - uid: 290 + - uid: 280 components: - type: Transform pos: 2.5,-9.5 parent: 1 - - uid: 291 + - uid: 281 components: - type: Transform pos: -6.5,-9.5 parent: 1 - - uid: 292 + - uid: 282 components: - type: Transform pos: -5.5,-9.5 parent: 1 - - uid: 293 + - uid: 283 components: - type: Transform pos: -4.5,-9.5 parent: 1 - - uid: 294 + - uid: 284 components: - type: Transform pos: 7.5,-16.5 parent: 1 - - uid: 295 + - uid: 285 components: - type: Transform pos: -0.5,-13.5 parent: 1 - - uid: 296 + - uid: 286 components: - type: Transform pos: -0.5,-12.5 parent: 1 - - uid: 297 + - uid: 287 components: - type: Transform pos: -0.5,-11.5 parent: 1 - proto: Chair entities: - - uid: 298 + - uid: 288 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,-21.5 parent: 1 - - uid: 299 + - uid: 289 components: - type: Transform rot: 1.5707963267948966 rad @@ -2089,7 +2046,7 @@ entities: parent: 1 - proto: ChairOfficeDark entities: - - uid: 300 + - uid: 290 components: - type: Transform rot: 1.5707963267948966 rad @@ -2097,69 +2054,69 @@ entities: parent: 1 - proto: ChairPilotSeat entities: - - uid: 301 + - uid: 291 components: - type: Transform rot: 1.5707963267948966 rad pos: -1.5,-21.5 parent: 1 - - uid: 302 + - uid: 292 components: - type: Transform rot: 1.5707963267948966 rad pos: -1.5,-8.5 parent: 1 - - uid: 303 + - uid: 293 components: - type: Transform rot: 1.5707963267948966 rad pos: -1.5,-9.5 parent: 1 - - uid: 304 + - uid: 294 components: - type: Transform rot: 1.5707963267948966 rad pos: -1.5,-10.5 parent: 1 - - uid: 305 + - uid: 295 components: - type: Transform rot: -1.5707963267948966 rad pos: 0.5,-8.5 parent: 1 - - uid: 306 + - uid: 296 components: - type: Transform rot: -1.5707963267948966 rad pos: 0.5,-10.5 parent: 1 - - uid: 307 + - uid: 297 components: - type: Transform rot: -1.5707963267948966 rad pos: 0.5,-9.5 parent: 1 - - uid: 308 + - uid: 298 components: - type: Transform pos: -2.5,-15.5 parent: 1 - - uid: 309 + - uid: 299 components: - type: Transform pos: -1.5,-15.5 parent: 1 - - uid: 310 + - uid: 300 components: - type: Transform pos: 0.5,-15.5 parent: 1 - - uid: 311 + - uid: 301 components: - type: Transform pos: 1.5,-15.5 parent: 1 - - uid: 312 + - uid: 302 components: - type: Transform rot: 3.141592653589793 rad @@ -2167,108 +2124,127 @@ entities: parent: 1 - proto: ClothingBackpackDuffelSyndicateAmmoFilled entities: - - uid: 49 + - uid: 303 components: - type: Transform pos: 1.4468282,-11.670399 parent: 1 + - type: GroupExamine + group: + - hoverMessage: "" + contextText: verb-examine-group-other + icon: /Textures/Interface/examine-star.png + components: + - Armor + - ClothingSpeedModifier + entries: + - message: >- + It provides the following protection: + + - [color=orange]Explosion[/color] damage [color=white]to contents[/color] reduced by [color=lightblue]90%[/color]. + priority: 0 + component: Armor + - message: This decreases your running speed by [color=yellow]10%[/color]. + priority: 0 + component: ClothingSpeedModifier + title: null - proto: ClothingBackpackDuffelSyndicateFilledMedical entities: - - uid: 314 + - uid: 304 components: - type: Transform pos: -5.6167116,-4.2485933 parent: 1 - proto: ClothingHeadHatSyndie entities: - - uid: 315 + - uid: 305 components: - type: Transform pos: -3.0420556,-17.469692 parent: 1 - proto: ClothingHeadHatSyndieMAA entities: - - uid: 35 + - uid: 31 components: - type: Transform - parent: 33 + parent: 29 - type: Physics canCollide: False - type: InsideEntityStorage - proto: ClothingHeadPyjamaSyndicateRed entities: - - uid: 36 + - uid: 32 components: - type: Transform - parent: 33 + parent: 29 - type: Physics canCollide: False - type: InsideEntityStorage - proto: ClothingHeadsetAltSyndicate entities: - - uid: 316 + - uid: 306 components: - type: Transform pos: 1.3157192,-13.513277 parent: 1 - proto: ClothingMaskGasSyndicate entities: - - uid: 317 + - uid: 307 components: - type: Transform pos: 0.94071925,-13.482027 parent: 1 - proto: ClothingNeckMantleHOS entities: - - uid: 37 + - uid: 33 components: - type: MetaData desc: Looted from a fallen enemy, the commander earned this in battle. name: commander mantle - type: Transform - parent: 33 + parent: 29 - type: Physics canCollide: False - type: InsideEntityStorage - proto: ClothingOuterCoatSyndieCap entities: - - uid: 38 + - uid: 34 components: - type: Transform - parent: 33 + parent: 29 - type: Physics canCollide: False - type: InsideEntityStorage - proto: ClothingUniformJumpskirtSyndieFormalDress entities: - - uid: 39 + - uid: 35 components: - type: Transform - parent: 33 + parent: 29 - type: Physics canCollide: False - type: InsideEntityStorage - proto: ClothingUniformJumpsuitPyjamaSyndicateRed entities: - - uid: 40 + - uid: 36 components: - type: Transform - parent: 33 + parent: 29 - type: Physics canCollide: False - type: InsideEntityStorage - proto: ClothingUniformJumpsuitSyndieFormal entities: - - uid: 41 + - uid: 37 components: - type: Transform - parent: 33 + parent: 29 - type: Physics canCollide: False - type: InsideEntityStorage - proto: ComfyChair entities: - - uid: 318 + - uid: 308 components: - type: Transform rot: -1.5707963267948966 rad @@ -2276,7 +2252,7 @@ entities: parent: 1 - proto: computerBodyScanner entities: - - uid: 319 + - uid: 309 components: - type: Transform rot: 1.5707963267948966 rad @@ -2284,7 +2260,7 @@ entities: parent: 1 - proto: ComputerIFFSyndicate entities: - - uid: 320 + - uid: 310 components: - type: Transform rot: -1.5707963267948966 rad @@ -2292,7 +2268,7 @@ entities: parent: 1 - proto: ComputerPowerMonitoring entities: - - uid: 321 + - uid: 311 components: - type: Transform rot: -1.5707963267948966 rad @@ -2300,28 +2276,28 @@ entities: parent: 1 - proto: ComputerRadar entities: - - uid: 322 + - uid: 312 components: - type: Transform pos: 0.5,-2.5 parent: 1 - proto: ComputerShuttleSyndie entities: - - uid: 323 + - uid: 313 components: - type: Transform pos: -0.5,-2.5 parent: 1 - proto: CrowbarRed entities: - - uid: 324 + - uid: 314 components: - type: Transform pos: -3.492848,-22.485775 parent: 1 - proto: DisposalBend entities: - - uid: 325 + - uid: 315 components: - type: Transform rot: 1.5707963267948966 rad @@ -2329,7 +2305,7 @@ entities: parent: 1 - proto: DisposalJunction entities: - - uid: 326 + - uid: 316 components: - type: Transform rot: -1.5707963267948966 rad @@ -2337,123 +2313,123 @@ entities: parent: 1 - proto: DisposalPipe entities: - - uid: 327 + - uid: 317 components: - type: Transform rot: 1.5707963267948966 rad pos: 0.5,-6.5 parent: 1 - - uid: 328 + - uid: 318 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,-19.5 parent: 1 - - uid: 329 + - uid: 319 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,-19.5 parent: 1 - - uid: 330 + - uid: 320 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,-19.5 parent: 1 - - uid: 331 + - uid: 321 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,-19.5 parent: 1 - - uid: 332 + - uid: 322 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,-19.5 parent: 1 - - uid: 333 + - uid: 323 components: - type: Transform rot: -1.5707963267948966 rad pos: -6.5,-19.5 parent: 1 - - uid: 334 + - uid: 324 components: - type: Transform pos: -0.5,-18.5 parent: 1 - - uid: 335 + - uid: 325 components: - type: Transform pos: -0.5,-17.5 parent: 1 - - uid: 336 + - uid: 326 components: - type: Transform pos: -0.5,-16.5 parent: 1 - - uid: 337 + - uid: 327 components: - type: Transform pos: -0.5,-15.5 parent: 1 - - uid: 338 + - uid: 328 components: - type: Transform pos: -0.5,-14.5 parent: 1 - - uid: 339 + - uid: 329 components: - type: Transform pos: -0.5,-13.5 parent: 1 - - uid: 340 + - uid: 330 components: - type: Transform pos: -0.5,-12.5 parent: 1 - - uid: 341 + - uid: 331 components: - type: Transform pos: -0.5,-11.5 parent: 1 - - uid: 342 + - uid: 332 components: - type: Transform pos: -0.5,-10.5 parent: 1 - - uid: 343 + - uid: 333 components: - type: Transform pos: -0.5,-9.5 parent: 1 - - uid: 344 + - uid: 334 components: - type: Transform pos: -0.5,-8.5 parent: 1 - - uid: 345 + - uid: 335 components: - type: Transform pos: -0.5,-7.5 parent: 1 - proto: DisposalTrunk entities: - - uid: 346 + - uid: 336 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-6.5 parent: 1 - - uid: 347 + - uid: 337 components: - type: Transform rot: 1.5707963267948966 rad pos: -7.5,-19.5 parent: 1 - - uid: 348 + - uid: 338 components: - type: Transform rot: -1.5707963267948966 rad @@ -2461,133 +2437,133 @@ entities: parent: 1 - proto: DisposalUnit entities: - - uid: 349 + - uid: 339 components: - type: Transform pos: 1.5,-6.5 parent: 1 - - uid: 350 + - uid: 340 components: - type: Transform pos: 0.5,-19.5 parent: 1 - proto: DoubleEmergencyOxygenTankFilled entities: - - uid: 351 + - uid: 341 components: - type: Transform pos: -1.6924903,-23.407444 parent: 1 - - uid: 352 + - uid: 342 components: - type: Transform pos: -1.4112403,-23.458082 parent: 1 - - uid: 353 + - uid: 343 components: - type: Transform pos: 5.390987,-17.346693 parent: 1 - - uid: 354 + - uid: 344 components: - type: Transform pos: -6.6334953,-17.346693 parent: 1 - proto: DrinkGlass entities: - - uid: 355 + - uid: 345 components: - type: Transform pos: 2.0779252,-19.21155 parent: 1 - - uid: 356 + - uid: 346 components: - type: Transform pos: 2.3123002,-19.21155 parent: 1 - proto: DrinkMugDog entities: - - uid: 357 + - uid: 347 components: - type: Transform pos: 2.2843437,-19.542192 parent: 1 - proto: DrinkMugMetal entities: - - uid: 358 + - uid: 348 components: - type: Transform pos: 2.0968437,-19.526567 parent: 1 - proto: DrinkMugRed entities: - - uid: 359 + - uid: 349 components: - type: Transform pos: 1.9918958,-17.588755 parent: 1 - proto: DrinkVacuumFlask entities: - - uid: 360 + - uid: 350 components: - type: Transform pos: 5.6435027,-21.180143 parent: 1 - - uid: 361 + - uid: 351 components: - type: Transform pos: 5.7372527,-21.398893 parent: 1 - proto: ExtendedEmergencyOxygenTankFilled entities: - - uid: 362 + - uid: 352 components: - type: Transform pos: -5.678572,-12.319441 parent: 1 - - uid: 363 + - uid: 353 components: - type: Transform pos: 4.305803,-12.272566 parent: 1 - proto: FireAxeFlaming entities: - - uid: 23 + - uid: 354 components: - type: Transform pos: -1.5018963,-3.4569345 parent: 1 - proto: FoodBoxDonkpocketPizza entities: - - uid: 364 + - uid: 355 components: - type: Transform pos: 2.7185502,-19.320925 parent: 1 - proto: FoodBoxDonut entities: - - uid: 365 + - uid: 356 components: - type: Transform pos: 5.5401826,-21.187487 parent: 1 - proto: FoodPizzaDonkpocket entities: - - uid: 366 + - uid: 357 components: - type: Transform pos: 1.4776825,-21.296862 parent: 1 - proto: FoodSnackSyndi entities: - - uid: 367 + - uid: 358 components: - type: Transform pos: 1.5361897,-17.367903 parent: 1 - proto: GasMinerNitrogen entities: - - uid: 368 + - uid: 359 components: - type: Transform rot: 3.141592653589793 rad @@ -2595,7 +2571,7 @@ entities: parent: 1 - proto: GasMinerOxygen entities: - - uid: 369 + - uid: 360 components: - type: Transform rot: 3.141592653589793 rad @@ -2603,7 +2579,7 @@ entities: parent: 1 - proto: GasMixer entities: - - uid: 370 + - uid: 361 components: - type: MetaData name: O2+N2 mixer @@ -2618,19 +2594,19 @@ entities: color: '#0335FCFF' - proto: GasPassiveVent entities: - - uid: 371 + - uid: 362 components: - type: Transform rot: 3.141592653589793 rad pos: 3.5,-26.5 parent: 1 - - uid: 372 + - uid: 363 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,-26.5 parent: 1 - - uid: 373 + - uid: 364 components: - type: Transform rot: -1.5707963267948966 rad @@ -2638,7 +2614,7 @@ entities: parent: 1 - proto: GasPipeBend entities: - - uid: 374 + - uid: 365 components: - type: Transform rot: 1.5707963267948966 rad @@ -2646,19 +2622,19 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 375 + - uid: 366 components: - type: Transform pos: 5.5,-24.5 parent: 1 - - uid: 376 + - uid: 367 components: - type: Transform pos: 3.5,-20.5 parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 377 + - uid: 368 components: - type: Transform rot: 1.5707963267948966 rad @@ -2666,7 +2642,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 378 + - uid: 369 components: - type: Transform rot: -1.5707963267948966 rad @@ -2674,7 +2650,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 379 + - uid: 370 components: - type: Transform rot: 1.5707963267948966 rad @@ -2682,14 +2658,14 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 380 + - uid: 371 components: - type: Transform pos: 0.5,-8.5 parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 381 + - uid: 372 components: - type: Transform rot: 3.141592653589793 rad @@ -2697,7 +2673,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 382 + - uid: 373 components: - type: Transform rot: -1.5707963267948966 rad @@ -2705,7 +2681,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 383 + - uid: 374 components: - type: Transform rot: -1.5707963267948966 rad @@ -2715,28 +2691,28 @@ entities: color: '#FF1212FF' - proto: GasPipeFourway entities: - - uid: 384 + - uid: 375 components: - type: Transform pos: 3.5,-23.5 parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 385 + - uid: 376 components: - type: Transform pos: -0.5,-20.5 parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 386 + - uid: 377 components: - type: Transform pos: -0.5,-16.5 parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 387 + - uid: 378 components: - type: Transform pos: 0.5,-17.5 @@ -2745,39 +2721,39 @@ entities: color: '#FF1212FF' - proto: GasPipeStraight entities: - - uid: 388 + - uid: 379 components: - type: Transform rot: 3.141592653589793 rad pos: 3.5,-25.5 parent: 1 - - uid: 389 + - uid: 380 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,-25.5 parent: 1 - - uid: 390 + - uid: 381 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,-24.5 parent: 1 - - uid: 391 + - uid: 382 components: - type: Transform pos: 3.5,-22.5 parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 392 + - uid: 383 components: - type: Transform pos: 3.5,-21.5 parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 393 + - uid: 384 components: - type: Transform rot: -1.5707963267948966 rad @@ -2785,7 +2761,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 394 + - uid: 385 components: - type: Transform rot: -1.5707963267948966 rad @@ -2793,7 +2769,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 395 + - uid: 386 components: - type: Transform rot: -1.5707963267948966 rad @@ -2801,7 +2777,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 396 + - uid: 387 components: - type: Transform rot: -1.5707963267948966 rad @@ -2809,7 +2785,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 397 + - uid: 388 components: - type: Transform rot: -1.5707963267948966 rad @@ -2817,7 +2793,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 398 + - uid: 389 components: - type: Transform rot: -1.5707963267948966 rad @@ -2825,98 +2801,98 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 399 + - uid: 390 components: - type: Transform pos: -0.5,-19.5 parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 400 + - uid: 391 components: - type: Transform pos: -0.5,-18.5 parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 401 + - uid: 392 components: - type: Transform pos: -0.5,-17.5 parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 402 + - uid: 393 components: - type: Transform pos: -0.5,-15.5 parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 403 + - uid: 394 components: - type: Transform pos: -0.5,-14.5 parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 404 + - uid: 395 components: - type: Transform pos: -0.5,-13.5 parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 405 + - uid: 396 components: - type: Transform pos: -0.5,-12.5 parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 406 + - uid: 397 components: - type: Transform pos: -0.5,-10.5 parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 407 + - uid: 398 components: - type: Transform pos: -0.5,-9.5 parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 408 + - uid: 399 components: - type: Transform pos: -0.5,-8.5 parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 409 + - uid: 400 components: - type: Transform pos: -0.5,-7.5 parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 410 + - uid: 401 components: - type: Transform pos: -0.5,-6.5 parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 411 + - uid: 402 components: - type: Transform pos: 0.5,-18.5 parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 412 + - uid: 403 components: - type: Transform rot: -1.5707963267948966 rad @@ -2924,7 +2900,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 413 + - uid: 404 components: - type: Transform rot: -1.5707963267948966 rad @@ -2932,7 +2908,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 414 + - uid: 405 components: - type: Transform rot: -1.5707963267948966 rad @@ -2940,7 +2916,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 415 + - uid: 406 components: - type: Transform rot: -1.5707963267948966 rad @@ -2948,7 +2924,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 416 + - uid: 407 components: - type: Transform rot: -1.5707963267948966 rad @@ -2956,7 +2932,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 417 + - uid: 408 components: - type: Transform rot: -1.5707963267948966 rad @@ -2964,13 +2940,13 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 418 + - uid: 409 components: - type: Transform rot: -1.5707963267948966 rad pos: 5.5,-19.5 parent: 1 - - uid: 419 + - uid: 410 components: - type: Transform rot: 1.5707963267948966 rad @@ -2978,7 +2954,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 420 + - uid: 411 components: - type: Transform rot: -1.5707963267948966 rad @@ -2986,7 +2962,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 421 + - uid: 412 components: - type: Transform rot: 3.141592653589793 rad @@ -2994,7 +2970,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 422 + - uid: 413 components: - type: Transform rot: -1.5707963267948966 rad @@ -3002,7 +2978,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 423 + - uid: 414 components: - type: Transform rot: -1.5707963267948966 rad @@ -3010,7 +2986,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 424 + - uid: 415 components: - type: Transform rot: -1.5707963267948966 rad @@ -3018,7 +2994,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 425 + - uid: 416 components: - type: Transform rot: -1.5707963267948966 rad @@ -3026,7 +3002,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 426 + - uid: 417 components: - type: Transform rot: -1.5707963267948966 rad @@ -3034,7 +3010,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 427 + - uid: 418 components: - type: Transform rot: -1.5707963267948966 rad @@ -3042,7 +3018,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 428 + - uid: 419 components: - type: Transform rot: 3.141592653589793 rad @@ -3050,7 +3026,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 429 + - uid: 420 components: - type: Transform rot: 3.141592653589793 rad @@ -3058,7 +3034,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 430 + - uid: 421 components: - type: Transform rot: 3.141592653589793 rad @@ -3066,7 +3042,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 431 + - uid: 422 components: - type: Transform rot: 3.141592653589793 rad @@ -3074,28 +3050,28 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 432 + - uid: 423 components: - type: Transform pos: 0.5,-11.5 parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 433 + - uid: 424 components: - type: Transform pos: 0.5,-10.5 parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 434 + - uid: 425 components: - type: Transform pos: 0.5,-9.5 parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 435 + - uid: 426 components: - type: Transform rot: -1.5707963267948966 rad @@ -3103,7 +3079,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 436 + - uid: 427 components: - type: Transform rot: 3.141592653589793 rad @@ -3111,14 +3087,14 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 437 + - uid: 428 components: - type: Transform pos: 0.5,-20.5 parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 438 + - uid: 429 components: - type: Transform rot: -1.5707963267948966 rad @@ -3126,7 +3102,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 439 + - uid: 430 components: - type: Transform rot: -1.5707963267948966 rad @@ -3134,7 +3110,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 440 + - uid: 431 components: - type: Transform rot: -1.5707963267948966 rad @@ -3142,7 +3118,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 441 + - uid: 432 components: - type: Transform rot: 3.141592653589793 rad @@ -3150,7 +3126,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 442 + - uid: 433 components: - type: Transform rot: 3.141592653589793 rad @@ -3160,7 +3136,7 @@ entities: color: '#0335FCFF' - proto: GasPipeTJunction entities: - - uid: 443 + - uid: 434 components: - type: Transform rot: 1.5707963267948966 rad @@ -3168,14 +3144,14 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 444 + - uid: 435 components: - type: Transform pos: 2.5,-19.5 parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 445 + - uid: 436 components: - type: Transform rot: 1.5707963267948966 rad @@ -3183,7 +3159,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 446 + - uid: 437 components: - type: Transform rot: 1.5707963267948966 rad @@ -3193,7 +3169,7 @@ entities: color: '#FF1212FF' - proto: GasPort entities: - - uid: 447 + - uid: 438 components: - type: Transform rot: 1.5707963267948966 rad @@ -3203,7 +3179,7 @@ entities: color: '#0335FCFF' - proto: GasPressurePump entities: - - uid: 448 + - uid: 439 components: - type: MetaData name: waste pump @@ -3215,7 +3191,7 @@ entities: color: '#FF1212FF' - proto: GasVentPump entities: - - uid: 449 + - uid: 440 components: - type: Transform rot: -1.5707963267948966 rad @@ -3223,7 +3199,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 450 + - uid: 441 components: - type: Transform rot: 3.141592653589793 rad @@ -3231,7 +3207,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 451 + - uid: 442 components: - type: Transform rot: -1.5707963267948966 rad @@ -3239,7 +3215,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 452 + - uid: 443 components: - type: Transform rot: 3.141592653589793 rad @@ -3247,7 +3223,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 453 + - uid: 444 components: - type: Transform rot: 1.5707963267948966 rad @@ -3255,7 +3231,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 454 + - uid: 445 components: - type: Transform rot: -1.5707963267948966 rad @@ -3263,7 +3239,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 455 + - uid: 446 components: - type: Transform pos: 0.5,-3.5 @@ -3272,7 +3248,7 @@ entities: color: '#0335FCFF' - proto: GasVentScrubber entities: - - uid: 456 + - uid: 447 components: - type: Transform rot: -1.5707963267948966 rad @@ -3280,7 +3256,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 457 + - uid: 448 components: - type: Transform rot: -1.5707963267948966 rad @@ -3288,7 +3264,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 458 + - uid: 449 components: - type: Transform rot: 3.141592653589793 rad @@ -3296,7 +3272,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 459 + - uid: 450 components: - type: Transform rot: 1.5707963267948966 rad @@ -3304,7 +3280,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 460 + - uid: 451 components: - type: Transform rot: 1.5707963267948966 rad @@ -3312,7 +3288,7 @@ entities: parent: 1 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 461 + - uid: 452 components: - type: Transform pos: -0.5,-3.5 @@ -3321,247 +3297,247 @@ entities: color: '#FF1212FF' - proto: GeneratorBasic15kW entities: - - uid: 462 + - uid: 453 components: - type: Transform pos: -4.5,-26.5 parent: 1 - - uid: 463 + - uid: 454 components: - type: Transform pos: -4.5,-25.5 parent: 1 - - uid: 464 + - uid: 455 components: - type: Transform pos: -4.5,-24.5 parent: 1 - - uid: 465 + - uid: 456 components: - type: Transform pos: -6.5,-24.5 parent: 1 - - uid: 466 + - uid: 457 components: - type: Transform pos: -6.5,-25.5 parent: 1 - - uid: 467 + - uid: 458 components: - type: Transform pos: -6.5,-26.5 parent: 1 - proto: GeneratorWallmountAPU entities: - - uid: 468 + - uid: 459 components: - type: Transform pos: -6.5,-20.5 parent: 1 - proto: GravityGeneratorMini entities: - - uid: 469 + - uid: 460 components: - type: Transform pos: -5.5,-22.5 parent: 1 - proto: Grille entities: - - uid: 470 + - uid: 461 components: - type: Transform pos: 2.5,-12.5 parent: 1 - - uid: 471 + - uid: 462 components: - type: Transform pos: -3.5,-12.5 parent: 1 - - uid: 472 + - uid: 463 components: - type: Transform rot: 1.5707963267948966 rad pos: -1.5,-7.5 parent: 1 - - uid: 473 + - uid: 464 components: - type: Transform pos: -2.5,-1.5 parent: 1 - - uid: 474 + - uid: 465 components: - type: Transform pos: -0.5,-1.5 parent: 1 - - uid: 475 + - uid: 466 components: - type: Transform pos: -4.5,-2.5 parent: 1 - - uid: 476 + - uid: 467 components: - type: Transform pos: -6.5,-4.5 parent: 1 - - uid: 477 + - uid: 468 components: - type: Transform pos: 3.5,-2.5 parent: 1 - - uid: 478 + - uid: 469 components: - type: Transform pos: -1.5,-1.5 parent: 1 - - uid: 479 + - uid: 470 components: - type: Transform pos: 5.5,-4.5 parent: 1 - - uid: 480 + - uid: 471 components: - type: Transform pos: 0.5,-1.5 parent: 1 - - uid: 481 + - uid: 472 components: - type: Transform pos: 1.5,-9.5 parent: 1 - - uid: 482 + - uid: 473 components: - type: Transform pos: -2.5,-9.5 parent: 1 - - uid: 483 + - uid: 474 components: - type: Transform pos: 1.5,-1.5 parent: 1 - - uid: 484 + - uid: 475 components: - type: Transform pos: -2.5,-21.5 parent: 1 - - uid: 485 + - uid: 476 components: - type: Transform pos: -2.5,-19.5 parent: 1 - - uid: 486 + - uid: 477 components: - type: Transform pos: 2.5,-22.5 parent: 1 - - uid: 487 + - uid: 478 components: - type: Transform pos: 4.5,-22.5 parent: 1 - - uid: 488 + - uid: 479 components: - type: Transform pos: -1.5,-18.5 parent: 1 - - uid: 489 + - uid: 480 components: - type: Transform pos: 0.5,-7.5 parent: 1 - - uid: 490 + - uid: 481 components: - type: Transform pos: 3.5,-25.5 parent: 1 - - uid: 491 + - uid: 482 components: - type: Transform pos: 5.5,-25.5 parent: 1 - - uid: 492 + - uid: 483 components: - type: Transform rot: 1.5707963267948966 rad pos: 5.5,-19.5 parent: 1 - - uid: 493 + - uid: 484 components: - type: Transform pos: 0.5,-18.5 parent: 1 - proto: Gyroscope entities: - - uid: 494 + - uid: 485 components: - type: Transform pos: -5.5,-13.5 parent: 1 - - uid: 495 + - uid: 486 components: - type: Transform pos: 4.5,-13.5 parent: 1 - proto: HospitalCurtainsOpen entities: - - uid: 496 + - uid: 487 components: - type: Transform pos: 3.5,-3.5 parent: 1 - proto: JetpackBlackFilled entities: - - uid: 313 + - uid: 489 components: - type: Transform - parent: 45 + parent: 488 - type: Physics canCollide: False - type: InsideEntityStorage - - uid: 501 + - uid: 490 components: - type: Transform - parent: 45 + parent: 488 - type: Physics canCollide: False - type: InsideEntityStorage - - uid: 502 + - uid: 491 components: - type: Transform - parent: 45 + parent: 488 - type: Physics canCollide: False - type: InsideEntityStorage - - uid: 511 + - uid: 492 components: - type: Transform - parent: 45 + parent: 488 - type: Physics canCollide: False - type: InsideEntityStorage - - uid: 512 + - uid: 493 components: - type: Transform - parent: 45 + parent: 488 - type: Physics canCollide: False - type: InsideEntityStorage - proto: KnifePlastic entities: - - uid: 498 + - uid: 494 components: - type: Transform pos: 5.3509636,-21.445768 parent: 1 - proto: Lamp entities: - - uid: 499 + - uid: 495 components: - type: Transform pos: -1.483297,-2.2444057 parent: 1 - proto: LockerSyndicatePersonal entities: - - uid: 33 + - uid: 29 components: - type: Transform pos: 4.5,-5.5 @@ -3572,37 +3548,27 @@ entities: immutable: False temperature: 293.1496 moles: - - 1.7459903 - - 6.568249 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 + Oxygen: 1.7459903 + Nitrogen: 6.568249 - type: ContainerContainer containers: entity_storage: !type:Container showEnts: False occludes: True ents: - - 37 - - 39 - - 36 - - 40 - - 41 - - 38 + - 33 - 35 + - 32 + - 36 + - 37 - 34 + - 31 + - 30 paper_label: !type:ContainerSlot showEnts: False occludes: True ent: null - - uid: 45 + - uid: 488 components: - type: Transform pos: -1.5,-17.5 @@ -3613,43 +3579,33 @@ entities: immutable: False temperature: 293.14673 moles: - - 1.7459903 - - 6.568249 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 + Oxygen: 1.7459903 + Nitrogen: 6.568249 - type: ContainerContainer containers: entity_storage: !type:Container showEnts: False occludes: True ents: - - 313 - - 501 - - 502 - - 511 - - 512 + - 489 + - 490 + - 491 + - 492 + - 493 paper_label: !type:ContainerSlot showEnts: False occludes: True ent: null - proto: MedicalBed entities: - - uid: 500 + - uid: 496 components: - type: Transform pos: -4.5,-3.5 parent: 1 - proto: Mirror entities: - - uid: 503 + - uid: 497 components: - type: Transform pos: 4.5,-3.5 @@ -3658,131 +3614,133 @@ entities: fixtures: {} - proto: Multitool entities: - - uid: 504 + - uid: 498 components: - type: Transform pos: -3.383473,-22.548275 parent: 1 - proto: NitrogenTankFilled entities: - - uid: 505 + - uid: 499 components: - type: Transform pos: 4.633928,-12.616316 parent: 1 - - uid: 506 + - uid: 500 components: - type: Transform pos: -5.397322,-12.569441 parent: 1 - - uid: 507 + - uid: 501 components: - type: Transform pos: -6.3522453,-17.549818 parent: 1 - - uid: 508 + - uid: 502 components: - type: Transform pos: 5.6633797,-17.565443 parent: 1 - proto: NuclearBombUnanchored entities: - - uid: 509 + - uid: 503 components: - type: Transform pos: -2.5,-12.5 parent: 1 - proto: NukeOpsGrenadeSpawner entities: - - uid: 44 + - uid: 504 components: - type: Transform pos: 1.5,-12.5 parent: 1 - proto: NukeOpsLootSpawner entities: - - uid: 46 + - uid: 505 components: - type: Transform pos: -3.5,-17.5 parent: 1 - proto: NukeOpsMedkitBruteSpawner entities: - - uid: 48 + - uid: 506 components: - type: Transform pos: -3.5,-3.5 parent: 1 - - uid: 50 + - uid: 507 components: - type: Transform pos: -3.5,-6.5 parent: 1 - proto: NukeOpsMedkitSpawner entities: - - uid: 47 + - uid: 508 components: - type: Transform pos: -3.5,-4.5 parent: 1 - proto: OperatingTable entities: - - uid: 513 + - uid: 509 components: - type: Transform pos: -5.5,-4.5 parent: 1 - proto: OxygenCanister entities: - - uid: 514 + - uid: 510 components: - type: Transform pos: -1.5,-24.5 parent: 1 - proto: OxygenTankFilled entities: - - uid: 515 + - uid: 511 components: - type: Transform pos: -5.600447,-12.569441 parent: 1 - - uid: 516 + - uid: 512 components: - type: Transform pos: 4.399553,-12.522566 parent: 1 - - uid: 517 + - uid: 513 components: - type: Transform pos: 5.5227547,-17.440443 parent: 1 - - uid: 518 + - uid: 514 components: - type: Transform pos: -6.4928703,-17.440443 parent: 1 -- proto: PinpointerNuclear +- proto: PinpointerUniversal entities: - - uid: 519 + - uid: 515 components: + - type: MetaData + desc: A handheld tracking device. Change targets by clicking on an object while the pinpointer is off. Keep upright to retain accuracy. - type: Transform - pos: -2.4942985,-13.37949 + pos: -2.5,-13.5 parent: 1 - proto: PlasmaReinforcedWindowDirectional entities: - - uid: 520 + - uid: 516 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,-4.5 parent: 1 - - uid: 521 + - uid: 517 components: - type: Transform rot: -1.5707963267948966 rad pos: -2.5,-6.5 parent: 1 - - uid: 522 + - uid: 518 components: - type: Transform rot: -1.5707963267948966 rad @@ -3790,14 +3748,14 @@ entities: parent: 1 - proto: PlushieNuke entities: - - uid: 523 + - uid: 519 components: - type: Transform pos: -2.4227936,-2.3320491 parent: 1 - proto: PosterContrabandC20r entities: - - uid: 524 + - uid: 520 components: - type: Transform pos: 1.5,-14.5 @@ -3806,7 +3764,7 @@ entities: fixtures: {} - proto: PosterContrabandCC64KAd entities: - - uid: 525 + - uid: 521 components: - type: Transform pos: -5.5,-18.5 @@ -3815,7 +3773,7 @@ entities: fixtures: {} - proto: PosterContrabandCybersun600 entities: - - uid: 526 + - uid: 522 components: - type: Transform pos: 2.5,-6.5 @@ -3824,7 +3782,7 @@ entities: fixtures: {} - proto: PosterContrabandDonk entities: - - uid: 527 + - uid: 523 components: - type: Transform rot: 3.141592653589793 rad @@ -3834,7 +3792,7 @@ entities: fixtures: {} - proto: PosterContrabandDonutCorp entities: - - uid: 528 + - uid: 524 components: - type: Transform rot: 3.141592653589793 rad @@ -3844,7 +3802,7 @@ entities: fixtures: {} - proto: PosterContrabandEnergySwords entities: - - uid: 529 + - uid: 525 components: - type: Transform pos: 2.5,-18.5 @@ -3853,7 +3811,7 @@ entities: fixtures: {} - proto: PosterContrabandEnlistGorlex entities: - - uid: 530 + - uid: 526 components: - type: Transform rot: 3.141592653589793 rad @@ -3863,7 +3821,7 @@ entities: fixtures: {} - proto: PosterContrabandFreeSyndicateEncryptionKey entities: - - uid: 531 + - uid: 527 components: - type: Transform pos: -2.5,-8.5 @@ -3872,7 +3830,7 @@ entities: fixtures: {} - proto: PosterContrabandInterdyne entities: - - uid: 532 + - uid: 528 components: - type: Transform rot: 3.141592653589793 rad @@ -3882,7 +3840,7 @@ entities: fixtures: {} - proto: PosterContrabandKosmicheskayaStantsiya entities: - - uid: 533 + - uid: 529 components: - type: Transform pos: -2.5,-22.5 @@ -3891,14 +3849,14 @@ entities: fixtures: {} - proto: PosterContrabandMoth entities: - - uid: 534 + - uid: 530 components: - type: Transform pos: -2.5,-14.5 parent: 1 - type: Fixtures fixtures: {} - - uid: 535 + - uid: 531 components: - type: Transform pos: 2.5,-3.5 @@ -3907,7 +3865,7 @@ entities: fixtures: {} - proto: PosterContrabandNuclearDeviceInformational entities: - - uid: 536 + - uid: 532 components: - type: Transform rot: 3.141592653589793 rad @@ -3915,7 +3873,7 @@ entities: parent: 1 - type: Fixtures fixtures: {} - - uid: 537 + - uid: 533 components: - type: Transform pos: 0.5,-14.5 @@ -3924,7 +3882,7 @@ entities: fixtures: {} - proto: PosterContrabandSyndicatePistol entities: - - uid: 538 + - uid: 534 components: - type: Transform pos: 1.5,-10.5 @@ -3933,7 +3891,7 @@ entities: fixtures: {} - proto: PosterContrabandSyndicateRecruitment entities: - - uid: 539 + - uid: 535 components: - type: Transform pos: -1.5,-14.5 @@ -3942,7 +3900,7 @@ entities: fixtures: {} - proto: PosterContrabandWaffleCorp entities: - - uid: 540 + - uid: 536 components: - type: Transform rot: 3.141592653589793 rad @@ -3952,7 +3910,7 @@ entities: fixtures: {} - proto: Poweredlight entities: - - uid: 541 + - uid: 537 components: - type: Transform rot: 1.5707963267948966 rad @@ -3960,7 +3918,7 @@ entities: parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 542 + - uid: 538 components: - type: Transform rot: -1.5707963267948966 rad @@ -3968,7 +3926,7 @@ entities: parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 543 + - uid: 539 components: - type: Transform rot: 1.5707963267948966 rad @@ -3976,7 +3934,7 @@ entities: parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 544 + - uid: 540 components: - type: Transform rot: 1.5707963267948966 rad @@ -3984,14 +3942,14 @@ entities: parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 545 + - uid: 541 components: - type: Transform pos: -4.5,-19.5 parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 546 + - uid: 542 components: - type: Transform rot: 3.141592653589793 rad @@ -3999,7 +3957,7 @@ entities: parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 547 + - uid: 543 components: - type: Transform rot: 3.141592653589793 rad @@ -4007,7 +3965,7 @@ entities: parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 548 + - uid: 544 components: - type: Transform rot: 3.141592653589793 rad @@ -4015,21 +3973,21 @@ entities: parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 549 + - uid: 545 components: - type: Transform pos: 2.5,-15.5 parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 550 + - uid: 546 components: - type: Transform pos: -3.5,-15.5 parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 551 + - uid: 547 components: - type: Transform rot: 3.141592653589793 rad @@ -4037,7 +3995,7 @@ entities: parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 552 + - uid: 548 components: - type: Transform rot: -1.5707963267948966 rad @@ -4045,7 +4003,7 @@ entities: parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 553 + - uid: 549 components: - type: Transform rot: -1.5707963267948966 rad @@ -4055,7 +4013,7 @@ entities: powerLoad: 0 - proto: PoweredSmallLight entities: - - uid: 554 + - uid: 550 components: - type: Transform rot: 3.141592653589793 rad @@ -4063,7 +4021,7 @@ entities: parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 555 + - uid: 551 components: - type: Transform rot: 3.141592653589793 rad @@ -4071,7 +4029,7 @@ entities: parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 556 + - uid: 552 components: - type: Transform rot: 3.141592653589793 rad @@ -4079,7 +4037,7 @@ entities: parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 557 + - uid: 553 components: - type: Transform rot: -1.5707963267948966 rad @@ -4087,7 +4045,7 @@ entities: parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 558 + - uid: 554 components: - type: Transform rot: 3.141592653589793 rad @@ -4095,7 +4053,7 @@ entities: parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 559 + - uid: 555 components: - type: Transform rot: 1.5707963267948966 rad @@ -4103,31 +4061,31 @@ entities: parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 560 + - uid: 556 components: - type: Transform pos: -6.5,-15.5 parent: 1 - - uid: 561 + - uid: 557 components: - type: Transform pos: 5.5,-15.5 parent: 1 - - uid: 562 + - uid: 558 components: - type: Transform pos: 2.5,-19.5 parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 563 + - uid: 559 components: - type: Transform pos: -1.5,-26.5 parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 564 + - uid: 560 components: - type: Transform rot: 3.141592653589793 rad @@ -4135,7 +4093,7 @@ entities: parent: 1 - type: ApcPowerReceiver powerLoad: 0 - - uid: 565 + - uid: 561 components: - type: Transform rot: 3.141592653589793 rad @@ -4145,260 +4103,260 @@ entities: powerLoad: 0 - proto: Rack entities: - - uid: 566 + - uid: 562 components: - type: Transform pos: -3.5,-22.5 parent: 1 - - uid: 567 + - uid: 563 components: - type: Transform pos: 5.5,-23.5 parent: 1 - - uid: 568 + - uid: 564 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,-12.5 parent: 1 - - uid: 569 + - uid: 565 components: - type: Transform rot: 3.141592653589793 rad pos: -5.5,-12.5 parent: 1 - - uid: 570 + - uid: 566 components: - type: Transform pos: -1.5,-23.5 parent: 1 - - uid: 571 + - uid: 567 components: - type: Transform pos: -6.5,-17.5 parent: 1 - - uid: 572 + - uid: 568 components: - type: Transform pos: 5.5,-17.5 parent: 1 - proto: ReinforcedPlasmaWindow entities: - - uid: 573 + - uid: 569 components: - type: Transform pos: 3.5,-2.5 parent: 1 - - uid: 574 + - uid: 570 components: - type: Transform rot: 1.5707963267948966 rad pos: 5.5,-19.5 parent: 1 - - uid: 575 + - uid: 571 components: - type: Transform pos: -0.5,-1.5 parent: 1 - - uid: 576 + - uid: 572 components: - type: Transform pos: -6.5,-4.5 parent: 1 - - uid: 577 + - uid: 573 components: - type: Transform pos: -2.5,-1.5 parent: 1 - - uid: 578 + - uid: 574 components: - type: Transform pos: -4.5,-2.5 parent: 1 - - uid: 579 + - uid: 575 components: - type: Transform pos: 5.5,-4.5 parent: 1 - - uid: 580 + - uid: 576 components: - type: Transform pos: -1.5,-1.5 parent: 1 - - uid: 581 + - uid: 577 components: - type: Transform pos: 0.5,-1.5 parent: 1 - - uid: 582 + - uid: 578 components: - type: Transform pos: 1.5,-1.5 parent: 1 - - uid: 583 + - uid: 579 components: - type: Transform pos: -1.5,-7.5 parent: 1 - - uid: 584 + - uid: 580 components: - type: Transform pos: 4.5,-22.5 parent: 1 - - uid: 585 + - uid: 581 components: - type: Transform pos: 2.5,-22.5 parent: 1 - - uid: 586 + - uid: 582 components: - type: Transform pos: -2.5,-21.5 parent: 1 - - uid: 587 + - uid: 583 components: - type: Transform pos: -2.5,-19.5 parent: 1 - - uid: 588 + - uid: 584 components: - type: Transform pos: -2.5,-9.5 parent: 1 - - uid: 589 + - uid: 585 components: - type: Transform pos: 1.5,-9.5 parent: 1 - - uid: 590 + - uid: 586 components: - type: Transform pos: 0.5,-18.5 parent: 1 - - uid: 591 + - uid: 587 components: - type: Transform pos: 3.5,-25.5 parent: 1 - - uid: 592 + - uid: 588 components: - type: Transform pos: 5.5,-25.5 parent: 1 - - uid: 593 + - uid: 589 components: - type: Transform pos: 2.5,-12.5 parent: 1 - - uid: 594 + - uid: 590 components: - type: Transform pos: -3.5,-12.5 parent: 1 - - uid: 595 + - uid: 591 components: - type: Transform pos: 0.5,-7.5 parent: 1 - - uid: 596 + - uid: 592 components: - type: Transform pos: -1.5,-18.5 parent: 1 - proto: ShuttersNormalOpen entities: - - uid: 597 + - uid: 593 components: - type: Transform pos: -6.5,-4.5 parent: 1 - - uid: 598 + - uid: 594 components: - type: Transform pos: 5.5,-4.5 parent: 1 - - uid: 599 + - uid: 595 components: - type: Transform pos: 1.5,-9.5 parent: 1 - - uid: 600 + - uid: 596 components: - type: Transform pos: -2.5,-9.5 parent: 1 - - uid: 601 + - uid: 597 components: - type: Transform pos: -4.5,-2.5 parent: 1 - - uid: 602 + - uid: 598 components: - type: Transform pos: 3.5,-2.5 parent: 1 - - uid: 603 + - uid: 599 components: - type: Transform pos: 1.5,-1.5 parent: 1 - - uid: 604 + - uid: 600 components: - type: Transform pos: -0.5,-1.5 parent: 1 - - uid: 605 + - uid: 601 components: - type: Transform pos: 5.5,-19.5 parent: 1 - - uid: 606 + - uid: 602 components: - type: Transform pos: -1.5,-1.5 parent: 1 - - uid: 607 + - uid: 603 components: - type: Transform pos: 0.5,-1.5 parent: 1 - - uid: 608 + - uid: 604 components: - type: Transform pos: -2.5,-1.5 parent: 1 - proto: SignalButton entities: - - uid: 609 + - uid: 605 components: - type: Transform pos: -2.5,-10.5 parent: 1 - type: DeviceLinkSource linkedPorts: - 600: + 596: - - Pressed - Toggle - 599: + 595: - - Pressed - Toggle - type: Fixtures fixtures: {} - - uid: 611 + - uid: 606 components: - type: Transform pos: 5.5,-20.5 parent: 1 - type: DeviceLinkSource linkedPorts: - 605: + 601: - - Pressed - Toggle - type: Fixtures fixtures: {} - proto: SignalButtonDirectional entities: - - uid: 20 + - uid: 607 components: - type: Transform rot: 1.5707963267948966 rad @@ -4406,15 +4364,15 @@ entities: parent: 1 - type: DeviceLinkSource linkedPorts: - 602: + 598: - - Pressed - Toggle - 598: + 594: - - Pressed - Toggle - type: Fixtures fixtures: {} - - uid: 21 + - uid: 608 components: - type: Transform rot: 3.141592653589793 rad @@ -4422,39 +4380,39 @@ entities: parent: 1 - type: DeviceLinkSource linkedPorts: - 597: + 593: - - Pressed - Toggle - 601: + 597: - - Pressed - Toggle - 608: + 604: - - Pressed - Toggle - 606: + 602: - - Pressed - Toggle - 604: + 600: - - Pressed - Toggle - 607: + 603: - - Pressed - Toggle - 603: + 599: - - Pressed - Toggle - type: Fixtures fixtures: {} - proto: SignDirectionalEvac entities: - - uid: 613 + - uid: 609 components: - type: Transform pos: 0.5,-22.5 parent: 1 - type: Fixtures fixtures: {} - - uid: 614 + - uid: 610 components: - type: Transform rot: 1.5707963267948966 rad @@ -4462,7 +4420,7 @@ entities: parent: 1 - type: Fixtures fixtures: {} - - uid: 615 + - uid: 611 components: - type: Transform rot: 3.141592653589793 rad @@ -4470,7 +4428,7 @@ entities: parent: 1 - type: Fixtures fixtures: {} - - uid: 616 + - uid: 612 components: - type: Transform rot: 3.141592653589793 rad @@ -4478,7 +4436,7 @@ entities: parent: 1 - type: Fixtures fixtures: {} - - uid: 617 + - uid: 613 components: - type: Transform rot: -1.5707963267948966 rad @@ -4488,7 +4446,7 @@ entities: fixtures: {} - proto: SignElectricalMed entities: - - uid: 618 + - uid: 614 components: - type: Transform pos: -2.5,-18.5 @@ -4497,7 +4455,7 @@ entities: fixtures: {} - proto: SignNosmoking entities: - - uid: 619 + - uid: 615 components: - type: Transform pos: 5.5,-22.5 @@ -4506,21 +4464,21 @@ entities: fixtures: {} - proto: SignSecureSmallRed entities: - - uid: 620 + - uid: 616 components: - type: Transform pos: -3.5,-11.5 parent: 1 - type: Fixtures fixtures: {} - - uid: 621 + - uid: 617 components: - type: Transform pos: 4.5,-17.5 parent: 1 - type: Fixtures fixtures: {} - - uid: 622 + - uid: 618 components: - type: Transform pos: 2.5,-11.5 @@ -4529,187 +4487,187 @@ entities: fixtures: {} - proto: SMESBasic entities: - - uid: 623 + - uid: 619 components: - type: Transform pos: -5.5,-19.5 parent: 1 - - uid: 624 + - uid: 620 components: - type: Transform pos: -4.5,-19.5 parent: 1 - proto: SoapSyndie entities: - - uid: 625 + - uid: 621 components: - type: Transform pos: 2.4424396,-17.430403 parent: 1 - proto: SodaDispenser entities: - - uid: 626 + - uid: 622 components: - type: Transform pos: 1.5,-19.5 parent: 1 - proto: StorageCanister entities: - - uid: 627 + - uid: 623 components: - type: Transform pos: 2.5,-23.5 parent: 1 - proto: SubstationBasic entities: - - uid: 628 + - uid: 624 components: - type: Transform pos: -3.5,-19.5 parent: 1 - proto: SuitStorageEVASyndicate entities: - - uid: 629 + - uid: 625 components: - type: Transform pos: 0.5,-24.5 parent: 1 - - uid: 630 + - uid: 626 components: - type: Transform pos: 0.5,-23.5 parent: 1 - - uid: 631 + - uid: 627 components: - type: Transform pos: 3.5,-17.5 parent: 1 - - uid: 632 + - uid: 628 components: - type: Transform pos: -4.5,-17.5 parent: 1 - proto: SyndicateMicrowave entities: - - uid: 497 + - uid: 629 components: - type: Transform pos: 3.5,-19.5 parent: 1 - proto: Table entities: - - uid: 637 + - uid: 630 components: - type: Transform pos: 5.5,-21.5 parent: 1 - - uid: 638 + - uid: 631 components: - type: Transform rot: 3.141592653589793 rad pos: 1.5,-21.5 parent: 1 - - uid: 639 + - uid: 632 components: - type: Transform pos: 3.5,-19.5 parent: 1 - - uid: 640 + - uid: 633 components: - type: Transform pos: 2.5,-19.5 parent: 1 - - uid: 641 + - uid: 634 components: - type: Transform pos: 1.5,-19.5 parent: 1 - proto: TablePlasmaGlass entities: - - uid: 642 + - uid: 635 components: - type: Transform pos: -3.5,-4.5 parent: 1 - - uid: 643 + - uid: 636 components: - type: Transform pos: -3.5,-6.5 parent: 1 - - uid: 644 + - uid: 637 components: - type: Transform pos: -3.5,-3.5 parent: 1 - proto: TableReinforced entities: - - uid: 645 + - uid: 638 components: - type: Transform pos: -2.5,-11.5 parent: 1 - - uid: 646 + - uid: 639 components: - type: Transform pos: -2.5,-13.5 parent: 1 - - uid: 647 + - uid: 640 components: - type: Transform pos: -1.5,-3.5 parent: 1 - - uid: 648 + - uid: 641 components: - type: Transform pos: -2.5,-2.5 parent: 1 - - uid: 649 + - uid: 642 components: - type: Transform pos: 0.5,-13.5 parent: 1 - - uid: 650 + - uid: 643 components: - type: Transform pos: 1.5,-13.5 parent: 1 - - uid: 651 + - uid: 644 components: - type: Transform pos: 1.5,-12.5 parent: 1 - - uid: 652 + - uid: 645 components: - type: Transform pos: 1.5,-11.5 parent: 1 - - uid: 653 + - uid: 646 components: - type: Transform pos: 2.5,-17.5 parent: 1 - - uid: 654 + - uid: 647 components: - type: Transform pos: 1.5,-17.5 parent: 1 - - uid: 655 + - uid: 648 components: - type: Transform pos: -2.5,-17.5 parent: 1 - - uid: 656 + - uid: 649 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,-2.5 parent: 1 - - uid: 657 + - uid: 650 components: - type: Transform pos: -3.5,-17.5 parent: 1 - - uid: 658 + - uid: 651 components: - type: Transform rot: -1.5707963267948966 rad @@ -4717,59 +4675,59 @@ entities: parent: 1 - proto: Thruster entities: - - uid: 659 + - uid: 652 components: - type: Transform pos: -6.5,-2.5 parent: 1 - - uid: 660 + - uid: 653 components: - type: Transform pos: 5.5,-2.5 parent: 1 - - uid: 661 + - uid: 654 components: - type: Transform rot: 1.5707963267948966 rad pos: -5.5,-7.5 parent: 1 - - uid: 662 + - uid: 655 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,-7.5 parent: 1 - - uid: 663 + - uid: 656 components: - type: Transform rot: 1.5707963267948966 rad pos: -7.5,-13.5 parent: 1 - - uid: 664 + - uid: 657 components: - type: Transform rot: -1.5707963267948966 rad pos: 6.5,-13.5 parent: 1 - - uid: 665 + - uid: 658 components: - type: Transform rot: 3.141592653589793 rad pos: -5.5,-30.5 parent: 1 - - uid: 666 + - uid: 659 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,-30.5 parent: 1 - - uid: 667 + - uid: 660 components: - type: Transform rot: 3.141592653589793 rad pos: 4.5,-30.5 parent: 1 - - uid: 668 + - uid: 661 components: - type: Transform rot: 3.141592653589793 rad @@ -4777,825 +4735,825 @@ entities: parent: 1 - proto: ToolboxSyndicate entities: - - uid: 669 + - uid: 662 components: - type: Transform pos: -2.468854,-17.396727 parent: 1 - proto: VendingMachineTankDispenserEVA entities: - - uid: 671 + - uid: 663 components: - type: Transform pos: 5.5,-15.5 parent: 1 - - uid: 672 + - uid: 664 components: - type: MetaData name: tank dispenser - type: Transform pos: 2.5,-24.5 parent: 1 - - uid: 673 + - uid: 665 components: - type: Transform pos: -6.5,-15.5 parent: 1 - proto: VendingMachineYouTool entities: - - uid: 674 + - uid: 666 components: - type: Transform pos: -3.5,-24.5 parent: 1 - proto: WallPlastitanium entities: - - uid: 11 + - uid: 667 components: - type: Transform pos: -1.5,-25.5 parent: 1 - - uid: 675 + - uid: 668 components: - type: Transform pos: 2.5,-2.5 parent: 1 - - uid: 676 + - uid: 669 components: - type: Transform pos: 4.5,-3.5 parent: 1 - - uid: 677 + - uid: 670 components: - type: Transform pos: -3.5,-11.5 parent: 1 - - uid: 678 + - uid: 671 components: - type: Transform pos: 2.5,-14.5 parent: 1 - - uid: 679 + - uid: 672 components: - type: Transform pos: 4.5,-14.5 parent: 1 - - uid: 680 + - uid: 673 components: - type: Transform pos: -2.5,-14.5 parent: 1 - - uid: 681 + - uid: 674 components: - type: Transform pos: 2.5,-18.5 parent: 1 - - uid: 682 + - uid: 675 components: - type: Transform pos: 1.5,-25.5 parent: 1 - - uid: 683 + - uid: 676 components: - type: Transform pos: 1.5,-18.5 parent: 1 - - uid: 684 + - uid: 677 components: - type: Transform pos: 7.5,-17.5 parent: 1 - - uid: 685 + - uid: 678 components: - type: Transform pos: -3.5,-26.5 parent: 1 - - uid: 686 + - uid: 679 components: - type: Transform rot: 1.5707963267948966 rad pos: 3.5,-7.5 parent: 1 - - uid: 687 + - uid: 680 components: - type: Transform pos: 2.5,-13.5 parent: 1 - - uid: 688 + - uid: 681 components: - type: Transform pos: -3.5,-28.5 parent: 1 - - uid: 689 + - uid: 682 components: - type: Transform pos: 2.5,-10.5 parent: 1 - - uid: 690 + - uid: 683 components: - type: Transform pos: 4.5,-18.5 parent: 1 - - uid: 691 + - uid: 684 components: - type: Transform pos: -2.5,-10.5 parent: 1 - - uid: 692 + - uid: 685 components: - type: Transform pos: -3.5,-10.5 parent: 1 - - uid: 693 + - uid: 686 components: - type: Transform pos: -6.5,-11.5 parent: 1 - - uid: 694 + - uid: 687 components: - type: Transform pos: 4.5,-10.5 parent: 1 - - uid: 695 + - uid: 688 components: - type: Transform pos: 4.5,-2.5 parent: 1 - - uid: 696 + - uid: 689 components: - type: Transform rot: 1.5707963267948966 rad pos: -4.5,-7.5 parent: 1 - - uid: 697 + - uid: 690 components: - type: Transform pos: -6.5,-6.5 parent: 1 - - uid: 698 + - uid: 691 components: - type: Transform pos: -5.5,-6.5 parent: 1 - - uid: 699 + - uid: 692 components: - type: Transform pos: 4.5,-6.5 parent: 1 - - uid: 700 + - uid: 693 components: - type: Transform pos: -6.5,-5.5 parent: 1 - - uid: 701 + - uid: 694 components: - type: Transform rot: 1.5707963267948966 rad pos: -2.5,-8.5 parent: 1 - - uid: 702 + - uid: 695 components: - type: Transform rot: 1.5707963267948966 rad pos: 1.5,-7.5 parent: 1 - - uid: 703 + - uid: 696 components: - type: Transform rot: 1.5707963267948966 rad pos: 1.5,-8.5 parent: 1 - - uid: 704 + - uid: 697 components: - type: Transform pos: 2.5,-11.5 parent: 1 - - uid: 705 + - uid: 698 components: - type: Transform pos: 5.5,-18.5 parent: 1 - - uid: 706 + - uid: 699 components: - type: Transform pos: -8.5,-15.5 parent: 1 - - uid: 707 + - uid: 700 components: - type: Transform pos: -8.5,-17.5 parent: 1 - - uid: 708 + - uid: 701 components: - type: Transform pos: -7.5,-17.5 parent: 1 - - uid: 709 + - uid: 702 components: - type: Transform pos: -5.5,-10.5 parent: 1 - - uid: 710 + - uid: 703 components: - type: Transform pos: -3.5,-13.5 parent: 1 - - uid: 711 + - uid: 704 components: - type: Transform pos: 3.5,-18.5 parent: 1 - - uid: 712 + - uid: 705 components: - type: Transform rot: 1.5707963267948966 rad pos: -4.5,-6.5 parent: 1 - - uid: 713 + - uid: 706 components: - type: Transform rot: 1.5707963267948966 rad pos: -3.5,-7.5 parent: 1 - - uid: 714 + - uid: 707 components: - type: Transform rot: 1.5707963267948966 rad pos: -3.5,-8.5 parent: 1 - - uid: 715 + - uid: 708 components: - type: Transform pos: 5.5,-14.5 parent: 1 - - uid: 716 + - uid: 709 components: - type: Transform pos: 7.5,-15.5 parent: 1 - - uid: 717 + - uid: 710 components: - type: Transform pos: -6.5,-19.5 parent: 1 - - uid: 718 + - uid: 711 components: - type: Transform pos: -6.5,-18.5 parent: 1 - - uid: 719 + - uid: 712 components: - type: Transform pos: -3.5,-25.5 parent: 1 - - uid: 720 + - uid: 713 components: - type: Transform pos: 2.5,-25.5 parent: 1 - - uid: 721 + - uid: 714 components: - type: Transform pos: 2.5,-27.5 parent: 1 - - uid: 722 + - uid: 715 components: - type: Transform pos: 4.5,-17.5 parent: 1 - - uid: 723 + - uid: 716 components: - type: Transform pos: -7.5,-21.5 parent: 1 - - uid: 724 + - uid: 717 components: - type: Transform pos: -7.5,-27.5 parent: 1 - - uid: 725 + - uid: 718 components: - type: Transform pos: -7.5,-24.5 parent: 1 - - uid: 726 + - uid: 719 components: - type: Transform pos: 6.5,-21.5 parent: 1 - - uid: 727 + - uid: 720 components: - type: Transform pos: 6.5,-24.5 parent: 1 - - uid: 728 + - uid: 721 components: - type: Transform pos: 6.5,-26.5 parent: 1 - - uid: 729 + - uid: 722 components: - type: Transform rot: 1.5707963267948966 rad pos: 2.5,-3.5 parent: 1 - - uid: 730 + - uid: 723 components: - type: Transform pos: 1.5,-10.5 parent: 1 - - uid: 731 + - uid: 724 components: - type: Transform pos: -3.5,-27.5 parent: 1 - - uid: 732 + - uid: 725 components: - type: Transform pos: -6.5,-12.5 parent: 1 - - uid: 733 + - uid: 726 components: - type: Transform pos: 5.5,-12.5 parent: 1 - - uid: 734 + - uid: 727 components: - type: Transform pos: 5.5,-11.5 parent: 1 - - uid: 735 + - uid: 728 components: - type: Transform pos: -5.5,-11.5 parent: 1 - - uid: 736 + - uid: 729 components: - type: Transform pos: -6.5,-20.5 parent: 1 - - uid: 737 + - uid: 730 components: - type: Transform pos: 0.5,-14.5 parent: 1 - - uid: 738 + - uid: 731 components: - type: Transform pos: -1.5,-14.5 parent: 1 - - uid: 739 + - uid: 732 components: - type: Transform pos: 5.5,-20.5 parent: 1 - - uid: 740 + - uid: 733 components: - type: Transform pos: -5.5,-14.5 parent: 1 - - uid: 741 + - uid: 734 components: - type: Transform pos: 6.5,-17.5 parent: 1 - - uid: 742 + - uid: 735 components: - type: Transform pos: -3.5,-14.5 parent: 1 - - uid: 743 + - uid: 736 components: - type: Transform pos: -2.5,-18.5 parent: 1 - - uid: 744 + - uid: 737 components: - type: Transform pos: 2.5,-26.5 parent: 1 - - uid: 745 + - uid: 738 components: - type: Transform pos: 2.5,-28.5 parent: 1 - - uid: 746 + - uid: 739 components: - type: Transform pos: 6.5,-25.5 parent: 1 - - uid: 747 + - uid: 740 components: - type: Transform pos: 6.5,-22.5 parent: 1 - - uid: 748 + - uid: 741 components: - type: Transform pos: -7.5,-23.5 parent: 1 - - uid: 749 + - uid: 742 components: - type: Transform pos: -7.5,-26.5 parent: 1 - - uid: 750 + - uid: 743 components: - type: Transform pos: -7.5,-22.5 parent: 1 - - uid: 751 + - uid: 744 components: - type: Transform pos: -7.5,-20.5 parent: 1 - - uid: 752 + - uid: 745 components: - type: Transform pos: 4.5,-15.5 parent: 1 - - uid: 753 + - uid: 746 components: - type: Transform pos: 6.5,-28.5 parent: 1 - - uid: 754 + - uid: 747 components: - type: Transform pos: 6.5,-27.5 parent: 1 - - uid: 755 + - uid: 748 components: - type: Transform pos: 6.5,-23.5 parent: 1 - - uid: 756 + - uid: 749 components: - type: Transform pos: 6.5,-20.5 parent: 1 - - uid: 757 + - uid: 750 components: - type: Transform pos: -7.5,-25.5 parent: 1 - - uid: 758 + - uid: 751 components: - type: Transform pos: -7.5,-28.5 parent: 1 - - uid: 759 + - uid: 752 components: - type: Transform rot: 3.141592653589793 rad pos: -5.5,-15.5 parent: 1 - - uid: 760 + - uid: 753 components: - type: Transform pos: -5.5,-18.5 parent: 1 - - uid: 761 + - uid: 754 components: - type: Transform pos: -5.5,-3.5 parent: 1 - - uid: 762 + - uid: 755 components: - type: Transform pos: 5.5,-5.5 parent: 1 - - uid: 763 + - uid: 756 components: - type: Transform pos: -3.5,-2.5 parent: 1 - - uid: 764 + - uid: 757 components: - type: Transform pos: -6.5,-3.5 parent: 1 - - uid: 765 + - uid: 758 components: - type: Transform rot: 1.5707963267948966 rad pos: -2.5,-7.5 parent: 1 - - uid: 766 + - uid: 759 components: - type: Transform pos: -3.5,-18.5 parent: 1 - - uid: 767 + - uid: 760 components: - type: Transform pos: -3.5,-1.5 parent: 1 - - uid: 768 + - uid: 761 components: - type: Transform pos: 2.5,-1.5 parent: 1 - - uid: 769 + - uid: 762 components: - type: Transform pos: -6.5,-14.5 parent: 1 - - uid: 770 + - uid: 763 components: - type: Transform pos: -5.5,-2.5 parent: 1 - - uid: 771 + - uid: 764 components: - type: Transform pos: 5.5,-6.5 parent: 1 - - uid: 772 + - uid: 765 components: - type: Transform rot: 1.5707963267948966 rad pos: 2.5,-7.5 parent: 1 - - uid: 773 + - uid: 766 components: - type: Transform rot: 1.5707963267948966 rad pos: 2.5,-8.5 parent: 1 - - uid: 774 + - uid: 767 components: - type: Transform pos: 4.5,-11.5 parent: 1 - - uid: 775 + - uid: 768 components: - type: Transform pos: -6.5,-13.5 parent: 1 - - uid: 776 + - uid: 769 components: - type: Transform pos: -3.5,-30.5 parent: 1 - - uid: 777 + - uid: 770 components: - type: Transform pos: 6.5,-15.5 parent: 1 - - uid: 778 + - uid: 771 components: - type: Transform pos: 5.5,-13.5 parent: 1 - - uid: 779 + - uid: 772 components: - type: Transform pos: -7.5,-15.5 parent: 1 - - uid: 780 + - uid: 773 components: - type: Transform pos: 1.5,-14.5 parent: 1 - - uid: 781 + - uid: 774 components: - type: Transform pos: -4.5,-18.5 parent: 1 - - uid: 782 + - uid: 775 components: - type: Transform pos: -2.5,-25.5 parent: 1 - - uid: 783 + - uid: 776 components: - type: Transform pos: 0.5,-25.5 parent: 1 - - uid: 785 + - uid: 777 components: - type: Transform pos: -1.5,-22.5 parent: 1 - - uid: 786 + - uid: 778 components: - type: Transform pos: 0.5,-22.5 parent: 1 - - uid: 787 + - uid: 779 components: - type: Transform pos: 1.5,-24.5 parent: 1 - - uid: 788 + - uid: 780 components: - type: Transform pos: 1.5,-23.5 parent: 1 - - uid: 789 + - uid: 781 components: - type: Transform pos: 1.5,-22.5 parent: 1 - - uid: 790 + - uid: 782 components: - type: Transform pos: -2.5,-24.5 parent: 1 - - uid: 791 + - uid: 783 components: - type: Transform pos: -2.5,-23.5 parent: 1 - - uid: 792 + - uid: 784 components: - type: Transform pos: -2.5,-22.5 parent: 1 - - uid: 793 + - uid: 785 components: - type: Transform pos: 5.5,-22.5 parent: 1 - - uid: 794 + - uid: 786 components: - type: Transform pos: -7.5,-14.5 parent: 1 - - uid: 795 + - uid: 787 components: - type: Transform pos: -7.5,-18.5 parent: 1 - - uid: 796 + - uid: 788 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,-28.5 parent: 1 - - uid: 797 + - uid: 789 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,-28.5 parent: 1 - - uid: 798 + - uid: 790 components: - type: Transform rot: -1.5707963267948966 rad pos: -6.5,-28.5 parent: 1 - - uid: 799 + - uid: 791 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,-28.5 parent: 1 - - uid: 800 + - uid: 792 components: - type: Transform rot: -1.5707963267948966 rad pos: 4.5,-28.5 parent: 1 - - uid: 801 + - uid: 793 components: - type: Transform rot: -1.5707963267948966 rad pos: 5.5,-28.5 parent: 1 - - uid: 802 + - uid: 794 components: - type: Transform rot: -1.5707963267948966 rad pos: 2.5,-6.5 parent: 1 - - uid: 803 + - uid: 795 components: - type: Transform pos: 4.5,-27.5 parent: 1 - - uid: 804 + - uid: 796 components: - type: Transform pos: 4.5,-26.5 parent: 1 - - uid: 805 + - uid: 797 components: - type: Transform pos: 4.5,-25.5 parent: 1 - - uid: 806 + - uid: 798 components: - type: Transform pos: 2.5,-4.5 parent: 1 - - uid: 807 + - uid: 799 components: - type: Transform pos: 3.5,-6.5 parent: 1 - - uid: 808 + - uid: 800 components: - type: Transform pos: 2.5,-30.5 parent: 1 - - uid: 809 + - uid: 801 components: - type: Transform rot: 3.141592653589793 rad pos: -5.5,-17.5 parent: 1 - - uid: 810 + - uid: 802 components: - type: Transform pos: 3.5,-29.5 parent: 1 - - uid: 811 + - uid: 803 components: - type: Transform pos: -5.5,-29.5 parent: 1 - - uid: 812 + - uid: 804 components: - type: Transform pos: 4.5,-29.5 parent: 1 - - uid: 813 + - uid: 805 components: - type: Transform pos: -4.5,-29.5 parent: 1 - - uid: 814 + - uid: 806 components: - type: Transform pos: 5.5,-29.5 parent: 1 - - uid: 815 + - uid: 807 components: - type: Transform pos: -3.5,-29.5 parent: 1 - - uid: 816 + - uid: 808 components: - type: Transform pos: 2.5,-29.5 parent: 1 - - uid: 817 + - uid: 809 components: - type: Transform pos: 6.5,-14.5 parent: 1 - - uid: 818 + - uid: 810 components: - type: Transform pos: 6.5,-18.5 parent: 1 - - uid: 819 + - uid: 811 components: - type: Transform pos: 5.5,-3.5 parent: 1 - - uid: 820 + - uid: 812 components: - type: Transform pos: -6.5,-29.5 parent: 1 - - uid: 821 + - uid: 813 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,-30.5 parent: 1 - - uid: 822 + - uid: 814 components: - type: Transform rot: 3.141592653589793 rad pos: 5.5,-30.5 parent: 1 - - uid: 823 + - uid: 815 components: - type: Transform pos: 8.5,-15.5 parent: 1 - - uid: 824 + - uid: 816 components: - type: Transform pos: 8.5,-17.5 parent: 1 - - uid: 825 + - uid: 817 components: - type: Transform pos: -9.5,-17.5 parent: 1 - - uid: 826 + - uid: 818 components: - type: Transform pos: -9.5,-15.5 parent: 1 - proto: WarningN2 entities: - - uid: 827 + - uid: 819 components: - type: Transform pos: 4.5,-25.5 @@ -5604,7 +5562,7 @@ entities: fixtures: {} - proto: WarningO2 entities: - - uid: 828 + - uid: 820 components: - type: Transform pos: 2.5,-25.5 @@ -5613,7 +5571,7 @@ entities: fixtures: {} - proto: WarningWaste entities: - - uid: 829 + - uid: 821 components: - type: Transform pos: 4.5,-18.5 @@ -5622,26 +5580,26 @@ entities: fixtures: {} - proto: WaterCooler entities: - - uid: 830 + - uid: 822 components: - type: Transform pos: 0.5,-17.5 parent: 1 - proto: WeaponTurretSyndicate entities: - - uid: 24 + - uid: 823 components: - type: Transform pos: -2.5,-6.5 parent: 1 - - uid: 610 + - uid: 824 components: - type: Transform pos: -1.5,-19.5 parent: 1 - proto: WindoorSecure entities: - - uid: 831 + - uid: 825 components: - type: Transform rot: -1.5707963267948966 rad @@ -5649,17 +5607,17 @@ entities: parent: 1 - proto: Wrench entities: - - uid: 832 + - uid: 826 components: - type: Transform pos: 5.4749,-23.512577 parent: 1 - - uid: 833 + - uid: 827 components: - type: Transform pos: 5.63115,-23.481327 parent: 1 - - uid: 834 + - uid: 828 components: - type: Transform pos: 1.6061028,-13.284962 From 3a202be2227c825db0ae7cd6fec791a213746d27 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 7 Feb 2026 13:18:57 +0000 Subject: [PATCH 279/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index fd17f733dea..c9564bfed35 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -3992,3 +3992,10 @@ id: 9500 time: '2026-02-07T12:54:14.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/41006 +- author: PAFFhassoocks + changes: + - message: The nukie infiltrator ship now starts with a universal pinpointer. + type: Tweak + id: 9501 + time: '2026-02-07T13:17:49.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42101 From 2221df17c36964a6e6d53eb6b8fa73fea16db0d8 Mon Sep 17 00:00:00 2001 From: SlamBamActionman <83650252+SlamBamActionman@users.noreply.github.com> Date: Sat, 7 Feb 2026 14:03:42 +0100 Subject: [PATCH 280/603] Make conveyors stack items that stop (#42829) * Initial commit * formatting --------- Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> --- .../Physics/Controllers/SharedConveyorController.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Content.Shared/Physics/Controllers/SharedConveyorController.cs b/Content.Shared/Physics/Controllers/SharedConveyorController.cs index e8b22b410c6..74b1a5026dc 100644 --- a/Content.Shared/Physics/Controllers/SharedConveyorController.cs +++ b/Content.Shared/Physics/Controllers/SharedConveyorController.cs @@ -4,6 +4,7 @@ using Content.Shared.Movement.Components; using Content.Shared.Movement.Events; using Content.Shared.Movement.Systems; +using Content.Shared.Stacks; using Robust.Shared.Collections; using Robust.Shared.Map; using Robust.Shared.Physics; @@ -24,6 +25,7 @@ public abstract class SharedConveyorController : VirtualController [Dependency] private readonly FixtureSystem _fixtures = default!; [Dependency] private readonly SharedGravitySystem _gravity = default!; [Dependency] private readonly SharedMoverController _mover = default!; + [Dependency] private readonly SharedStackSystem _stack = default!; protected const string ConveyorFixture = "conveyor"; @@ -164,7 +166,15 @@ public override void UpdateBeforeSolve(bool prediction, float frameTime) if (ent.Result) { - SetConveying(ent.Entity.Owner, ent.Entity.Comp1, targetDir.LengthSquared() > 0f); + if (targetDir.LengthSquared() > 0f) + { + SetConveying(ent.Entity.Owner, ent.Entity.Comp1, true); + } + else if (ent.Entity.Comp1.Conveying) + { + SetConveying(ent.Entity.Owner, ent.Entity.Comp1, false); + _stack.TryMergeToContacts(ent.Entity.Owner); + } // We apply friction here so when we push items towards the center of the conveyor they don't go overspeed. // We also don't want this to apply to mobs as they apply their own friction and otherwise From 6369aae8051776369294d2d62058067ff99bc26b Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 7 Feb 2026 13:35:15 +0000 Subject: [PATCH 281/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index c9564bfed35..5718916b41d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: beck-thompson - changes: - - message: Shuttle UI is now fixed. You won't go into pilot mode when not having - access - type: Fix - id: 8995 - time: '2025-09-22T06:40:14.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40491 - author: hoshizora-sayo changes: - message: Fixed fire helmets alone giving you full temperature protection @@ -3999,3 +3991,10 @@ id: 9501 time: '2026-02-07T13:17:49.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42101 +- author: SlamBamActionman + changes: + - message: Stackables items now merge when stopping on/after a conveyor belt. + type: Add + id: 9502 + time: '2026-02-07T13:34:08.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42829 From 6714a2fc3742528405c779227e93110ef17d28f1 Mon Sep 17 00:00:00 2001 From: Rachel Lowe <60523642+11BelowStudio@users.noreply.github.com> Date: Sat, 7 Feb 2026 15:15:11 +0000 Subject: [PATCH 282/603] Solved #42803 - Syndie contra explicitly has no allowed departments or jobs. (#42820) Solved #42803 Syndie contra explicitly has no allowed departments or jobs. --- Resources/Prototypes/Entities/Objects/base_contraband.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/Prototypes/Entities/Objects/base_contraband.yml b/Resources/Prototypes/Entities/Objects/base_contraband.yml index 8db8e12cd45..bfea4b8c8a8 100644 --- a/Resources/Prototypes/Entities/Objects/base_contraband.yml +++ b/Resources/Prototypes/Entities/Objects/base_contraband.yml @@ -30,6 +30,8 @@ components: - type: Contraband severity: Syndicate + allowedDepartments: [ ] + allowedJobs: [ ] # minor contraband not departmentally restricted -- improvised weapons etc - type: entity From 48cb7eafaeb47003f0c78ff4f2fcb8ef9acd7732 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 7 Feb 2026 15:31:31 +0000 Subject: [PATCH 283/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 5718916b41d..fa3c3bfe64d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: hoshizora-sayo - changes: - - message: Fixed fire helmets alone giving you full temperature protection - type: Fix - id: 8996 - time: '2025-09-23T17:02:50.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40481 - author: aada changes: - message: Circuit tiles and faux tiles have been moved to the cutter machine. @@ -3998,3 +3991,11 @@ id: 9502 time: '2026-02-07T13:34:08.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42829 +- author: 11BelowStudio + changes: + - message: Closed the legal loophole which technically allowed engineers to open-carry + the syndicate fire axe. + type: Fix + id: 9503 + time: '2026-02-07T15:30:24.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42820 From 1db05a6567c9735ce70b91e5279861b37255501b Mon Sep 17 00:00:00 2001 From: Aearo-Deepwater <77557990+Aearo-Deepwater@users.noreply.github.com> Date: Sat, 7 Feb 2026 11:21:28 -0700 Subject: [PATCH 284/603] Empty Crayon Box (#42837) Add prototype for empty crayon box --- .../Entities/Objects/Fun/crayons.yml | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/Resources/Prototypes/Entities/Objects/Fun/crayons.yml b/Resources/Prototypes/Entities/Objects/Fun/crayons.yml index 2652a8c1177..7a67993df76 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/crayons.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/crayons.yml @@ -270,7 +270,7 @@ - type: entity parent: BoxCardboard - id: CrayonBox + id: CrayonBoxEmpty name: crayon box description: It's a box of crayons. components: @@ -287,18 +287,6 @@ shape: - 0,0,1,1 heldPrefix: box - - type: EntityTableContainerFill - containers: - storagebase: !type:AllSelector - children: - - id: CrayonRed - - id: CrayonOrange - - id: CrayonYellow - - id: CrayonGreen - - id: CrayonBlue - - id: CrayonPurple - - id: CrayonBlack - - id: CrayonWhite - type: ItemMapper mapLayers: black_box: @@ -334,3 +322,21 @@ tags: - CrayonWhite - type: Appearance + +- type: entity + parent: CrayonBoxEmpty + id: CrayonBox + suffix: Filled + components: + - type: EntityTableContainerFill + containers: + storagebase: !type:AllSelector + children: + - id: CrayonRed + - id: CrayonOrange + - id: CrayonYellow + - id: CrayonGreen + - id: CrayonBlue + - id: CrayonPurple + - id: CrayonBlack + - id: CrayonWhite From bbe00d6cd69d0d00c0ac4a121140ba5653514761 Mon Sep 17 00:00:00 2001 From: kosticia Date: Sun, 8 Feb 2026 01:23:28 +0300 Subject: [PATCH 285/603] Fix some locale that sometimes get ignored by gitignore (#42834) fix --- Resources/Locale/en-US/artifacts/artifact-crusher.ftl | 3 --- .../en-US/entity-systems/{bin => bin-system}/bin-system.ftl | 0 Resources/Locale/en-US/xenoarchaeology/artifact-crusher.ftl | 3 +++ 3 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 Resources/Locale/en-US/artifacts/artifact-crusher.ftl rename Resources/Locale/en-US/entity-systems/{bin => bin-system}/bin-system.ftl (100%) diff --git a/Resources/Locale/en-US/artifacts/artifact-crusher.ftl b/Resources/Locale/en-US/artifacts/artifact-crusher.ftl deleted file mode 100644 index d9f10f43344..00000000000 --- a/Resources/Locale/en-US/artifacts/artifact-crusher.ftl +++ /dev/null @@ -1,3 +0,0 @@ -artifact-crusher-examine-no-autolocks = The machine's autolocks are [color=green]disabled[/color]. -artifact-crusher-examine-autolocks = The machine's autolocks are [color=red]enabled[/color]. -artifact-crusher-autolocks-enable = The machine's locks snap shut! diff --git a/Resources/Locale/en-US/entity-systems/bin/bin-system.ftl b/Resources/Locale/en-US/entity-systems/bin-system/bin-system.ftl similarity index 100% rename from Resources/Locale/en-US/entity-systems/bin/bin-system.ftl rename to Resources/Locale/en-US/entity-systems/bin-system/bin-system.ftl diff --git a/Resources/Locale/en-US/xenoarchaeology/artifact-crusher.ftl b/Resources/Locale/en-US/xenoarchaeology/artifact-crusher.ftl index d16918bb950..9294928bb56 100644 --- a/Resources/Locale/en-US/xenoarchaeology/artifact-crusher.ftl +++ b/Resources/Locale/en-US/xenoarchaeology/artifact-crusher.ftl @@ -1 +1,4 @@ artifact-crusher-verb-start-crushing = Start crushing +artifact-crusher-examine-no-autolocks = The machine's autolocks are [color=green]disabled[/color]. +artifact-crusher-examine-autolocks = The machine's autolocks are [color=red]enabled[/color]. +artifact-crusher-autolocks-enable = The machine's locks snap shut! From ff417132a20430d326427f6e0d6232eb0981fb18 Mon Sep 17 00:00:00 2001 From: Mora <46364955+TrixxedHeart@users.noreply.github.com> Date: Sat, 7 Feb 2026 19:24:03 -0600 Subject: [PATCH 286/603] Animated Vox Tails (#40925) * Added Animated Vox Tails * Extra cleanup * Missing Pixels * Missing Pixels * fix * Update vox.yml * Update vox_parts.yml * Update vox_parts.yml --------- Co-authored-by: TrixxedHeart <46364955+TrixxedBit@users.noreply.github.com> --- Resources/Prototypes/Body/Species/vox.yml | 1 + .../Mobs/Customization/Markings/vox_parts.yml | 57 ++++- .../Customization/vox_parts.rsi/meta.json | 230 +++++++++++++++++- .../vox_parts.rsi/tail_animated.png | Bin 0 -> 4473 bytes .../vox_parts.rsi/tail_big_animated.png | Bin 0 -> 4660 bytes .../vox_parts.rsi/tail_docked_animated.png | Bin 0 -> 3980 bytes .../vox_parts.rsi/tail_short_animated.png | Bin 0 -> 4333 bytes .../vox_parts.rsi/tail_spikes_animated.png | Bin 0 -> 4828 bytes .../vox_parts.rsi/tail_split_animated.png | Bin 0 -> 4546 bytes 9 files changed, 286 insertions(+), 2 deletions(-) create mode 100644 Resources/Textures/Mobs/Customization/vox_parts.rsi/tail_animated.png create mode 100644 Resources/Textures/Mobs/Customization/vox_parts.rsi/tail_big_animated.png create mode 100644 Resources/Textures/Mobs/Customization/vox_parts.rsi/tail_docked_animated.png create mode 100644 Resources/Textures/Mobs/Customization/vox_parts.rsi/tail_short_animated.png create mode 100644 Resources/Textures/Mobs/Customization/vox_parts.rsi/tail_spikes_animated.png create mode 100644 Resources/Textures/Mobs/Customization/vox_parts.rsi/tail_split_animated.png diff --git a/Resources/Prototypes/Body/Species/vox.yml b/Resources/Prototypes/Body/Species/vox.yml index 08cf79685f4..9dbdfc7f5b2 100644 --- a/Resources/Prototypes/Body/Species/vox.yml +++ b/Resources/Prototypes/Body/Species/vox.yml @@ -229,6 +229,7 @@ damage: types: Slash: 5 # Reduce? + - type: Wagging - type: entity parent: OrganBase diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_parts.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_parts.yml index 2aaf87b5c67..ad0eda33e9e 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_parts.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_parts.yml @@ -176,6 +176,15 @@ - sprite: Mobs/Customization/vox_parts.rsi state: tail +- type: marking + id: VoxTailAnimated + bodyPart: Tail + groupWhitelist: [] + forcedColoring: true + sprites: + - sprite: Mobs/Customization/vox_parts.rsi + state: tail_animated + - type: marking id: VoxTailShort bodyPart: Tail @@ -185,6 +194,15 @@ - sprite: Mobs/Customization/vox_parts.rsi state: tail_short +- type: marking + id: VoxTailShortAnimated + bodyPart: Tail + groupWhitelist: [] + forcedColoring: true + sprites: + - sprite: Mobs/Customization/vox_parts.rsi + state: tail_short_animated + - type: marking id: VoxTailBig bodyPart: Tail @@ -194,6 +212,15 @@ - sprite: Mobs/Customization/vox_parts.rsi state: tail_big +- type: marking + id: VoxTailBigAnimated + bodyPart: Tail + groupWhitelist: [] + forcedColoring: true + sprites: + - sprite: Mobs/Customization/vox_parts.rsi + state: tail_big_animated + - type: marking id: VoxTailSpikes bodyPart: Tail @@ -203,6 +230,15 @@ - sprite: Mobs/Customization/vox_parts.rsi state: tail_spikes +- type: marking + id: VoxTailSpikesAnimated + bodyPart: Tail + groupWhitelist: [] + forcedColoring: true + sprites: + - sprite: Mobs/Customization/vox_parts.rsi + state: tail_spikes_animated + - type: marking id: VoxTailDocked bodyPart: Tail @@ -212,6 +248,16 @@ - sprite: Mobs/Customization/vox_parts.rsi state: tail_docked +- type: marking + id: VoxTailDockedAnimated + bodyPart: Tail + groupWhitelist: [] + forcedColoring: true + sprites: + - sprite: Mobs/Customization/vox_parts.rsi + state: tail_docked_animated + + - type: marking id: VoxTailSplit bodyPart: Tail @@ -219,4 +265,13 @@ forcedColoring: true sprites: - sprite: Mobs/Customization/vox_parts.rsi - state: tail_split \ No newline at end of file + state: tail_split + +- type: marking + id: VoxTailSplitAnimated + bodyPart: Tail + groupWhitelist: [] + forcedColoring: true + sprites: + - sprite: Mobs/Customization/vox_parts.rsi + state: tail_split_animated diff --git a/Resources/Textures/Mobs/Customization/vox_parts.rsi/meta.json b/Resources/Textures/Mobs/Customization/vox_parts.rsi/meta.json index b00bec9bf0c..6c24c08e3d0 100644 --- a/Resources/Textures/Mobs/Customization/vox_parts.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/vox_parts.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 02ff588d59b3c560c685d9ca75e882d32a72d8cb, modified by Bhijn, Errant, Flareguy, and TrixxedHeart. tail_big tail_short and tail_docked modified from tail by Flareguy, beak_shaved/squarecere/hooked modified from beak and tail_spiked modified from tail by TrixxedHeart", + "copyright": "Taken from https://github.com/vgstation-coders/vgstation13 at 02ff588d59b3c560c685d9ca75e882d32a72d8cb, modified by Bhijn, Errant, Flareguy, and TrixxedHeart. tail_big tail_short and tail_docked modified from tail by Flareguy, beak_shaved/squarecere/hooked modified from beak and tail_spiked and tail_split modified from tail by TrixxedHeart, Animated tails by TrixxedHeart inspired by Paradise Station https://github.com/ParadiseSS13/Paradise/blob/c6a2097e5804b14e84ec570499764ce003fcb909/icons/effects/species.dmi", "size": { "x": 32, "y": 32 @@ -63,25 +63,253 @@ "name": "tail_full", "directions": 4 }, + { + "name": "tail_animated", + "directions": 4, + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, { "name": "tail_short", "directions": 4 }, + { + "name": "tail_short_animated", + "directions": 4, + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, { "name": "tail_big", "directions": 4 }, + { + "name": "tail_big_animated", + "directions": 4, + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, { "name": "tail_spikes", "directions": 4 }, + { + "name": "tail_spikes_animated", + "directions": 4, + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, { "name": "tail_docked", "directions": 4 }, + { + "name": "tail_docked_animated", + "directions": 4, + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + }, { "name": "tail_split", "directions": 4 + }, + { + "name": "tail_split_animated", + "directions": 4, + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ], + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] } ] } diff --git a/Resources/Textures/Mobs/Customization/vox_parts.rsi/tail_animated.png b/Resources/Textures/Mobs/Customization/vox_parts.rsi/tail_animated.png new file mode 100644 index 0000000000000000000000000000000000000000..a6b23ae4b5be5fb6d7028b036968bc9beccac4b2 GIT binary patch literal 4473 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 RE-qggps(`)@>vTO{U5A!W&{8L literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/vox_parts.rsi/tail_short_animated.png b/Resources/Textures/Mobs/Customization/vox_parts.rsi/tail_short_animated.png new file mode 100644 index 0000000000000000000000000000000000000000..105dd69e3a4e84d6021767de6c9a26dcb7662d4a GIT binary patch literal 4333 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 U&9azp&;U?Ye5LSR&LZf)0HqxL)&Kwi literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/vox_parts.rsi/tail_split_animated.png b/Resources/Textures/Mobs/Customization/vox_parts.rsi/tail_split_animated.png new file mode 100644 index 0000000000000000000000000000000000000000..fc61aef5d15ecd5fb279264de7d7ea592aa184c4 GIT binary patch literal 4546 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 E01SkHtN;K2 literal 0 HcmV?d00001 From c4d439f67a4d836dc0d5299fafb4dc1bf110dde5 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 8 Feb 2026 01:40:02 +0000 Subject: [PATCH 287/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index fa3c3bfe64d..32f7ba1c998 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: aada - changes: - - message: Circuit tiles and faux tiles have been moved to the cutter machine. - type: Tweak - id: 8997 - time: '2025-09-24T00:12:45.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/37982 - author: Kittygyat changes: - message: Added 4 diagnostic huds to the engi-vend @@ -3999,3 +3992,10 @@ id: 9503 time: '2026-02-07T15:30:24.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42820 +- author: TrixxedHeart + changes: + - message: Vox can now wag their tails + type: Add + id: 9504 + time: '2026-02-08T01:38:54.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/40925 From 7e88e4efca4b27334b33c16065f263c163d0077f Mon Sep 17 00:00:00 2001 From: Liem <151177983+Liem161@users.noreply.github.com> Date: Sun, 8 Feb 2026 08:26:32 +0500 Subject: [PATCH 288/603] Fix-sprites-practice-disabler (#42838) --- .../Battery/practice_disabler.rsi/inhand-left.png | Bin 0 -> 813 bytes .../practice_disabler.rsi/inhand-right.png | Bin 0 -> 860 bytes .../Guns/Battery/practice_disabler.rsi/meta.json | 10 +++++++++- 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 Resources/Textures/Objects/Weapons/Guns/Battery/practice_disabler.rsi/inhand-left.png create mode 100644 Resources/Textures/Objects/Weapons/Guns/Battery/practice_disabler.rsi/inhand-right.png diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/practice_disabler.rsi/inhand-left.png b/Resources/Textures/Objects/Weapons/Guns/Battery/practice_disabler.rsi/inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..f573821870edeceeef0b64d10d30737ad6fa8cfa GIT binary patch literal 813 zcmV+|1JeA7P)wfAcYxp-AjBEQS~;d$TZ;rl)yM+$1u>Ip%yWSg<2u#!lo6!#k* z`WQkcm{u)gAsUU)b-o{v#Cbn0vbw+fcLp{zO9jaT1XaVdK?(tpP1_K>3yi3_^ae=B zK)_5SQy|?4J=5e@!PzE%3O3`hMUX|NlI`G32dg==2=Wx*FBU3lYaj6wuU1-J0mguF zEMhDXMj=CmJOyl~$y0(ZzL|z^nKBA0WelpA_|jJO2tN-4}*x6iiwD5 zIy;iqt(Z$Peu`dYeE=P;Td}+@sA+Dr*%mJiAq*nkYzu0d8!fL3(zpY-Dt6b-3$zEItJNB8!`{mC>E#anmerYVaA|B#WCGd`36P;-*HI r(SOR~rbe03pJj1V$mjq70ASN60@&?jKRUfo00000NkvXXu0mjfM=Elt literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/practice_disabler.rsi/inhand-right.png b/Resources/Textures/Objects/Weapons/Guns/Battery/practice_disabler.rsi/inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..bd79e55645c4de600b2f27be23ddc14b4d755bb7 GIT binary patch literal 860 zcmV-i1Ec(jP)wfAcYxp-AjBEQS~;d$TZ;rl)yM+$1u>Ip%yWSg<2u#!lo6!#k* z`WQkcm{u)gAsUU)b-o{v#Cbn0vbw+fcLp{zO9jaT1XaVdK?(tpP1_K>3yi3_^ae=B zK)_5SQy|?4J=5e@!PzE%3O3`hMUX|NlI`G32dg==2=Wx*FBU3lYaj6wuU1-J0mguF zEMhDXMj=CmJOyl~$y0(ZzL|z^nKBA0WelpAf>0C&@PjK!W3L@tk%5^Q99>A@4Gf9Kh0)0;;2n%l(llLKn+{EkX|xYO zbY{Ab(9@xzLF+%R)Qb6jBg5sKb1#ta5di=I000000Km5}3^miR*mHgU?^;xNuFs}n zaTtc0(gLPoanp8K<1PzP=k!|9g%&BTPl!5e+~ub2@S&P3yB2aBn}~>RYZH<((Her( zCV6HJL7J3_c3Ybe5s~BAdpGXa08GQ;UO%8XUQ&C}A}NznG`>m7L~Acv6vs>I^@HP1 zuW48ubOLVL4i9<2Le$re(50V(Y<;F-u@H40@_?JR!$Bw5|2TNA&ruYuHNUxNnWS}R zhY&^4?w9&}I{TSe+WfW1_BEf*w)dv%dSyHsm-e%Fi0Aq|9*tSo^{p>{0000000000 z006i&%0cI~_=|8>`5*bo@pDeuz_v)a29S-PpPuiiTD_sym$%QttJ-qkG_cJoBDTwY z0`kVsr%HGJ;r@~4AMa}ouO#uQLr{JMl;Y={Jl9`~>bF@*I$xA`Qv9soq66F9@w0-` m1hz-T&({v|GXMYpl+71nUE;G?!Z}_50000 Date: Sun, 8 Feb 2026 03:42:28 +0000 Subject: [PATCH 289/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 32f7ba1c998..db0cde8f090 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Kittygyat - changes: - - message: Added 4 diagnostic huds to the engi-vend - type: Add - id: 8998 - time: '2025-09-24T04:19:38.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40461 - author: RedBookcase changes: - message: Rechargers can now charge power cells again. @@ -3999,3 +3992,10 @@ id: 9504 time: '2026-02-08T01:38:54.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/40925 +- author: Liem161 + changes: + - message: Added sprites for holding practice disabler in both hands. + type: Add + id: 9505 + time: '2026-02-08T03:41:21.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42838 From 15dbf80e3c41687cbd4793eac486f750bade796a Mon Sep 17 00:00:00 2001 From: salarua <104225819+salarua@users.noreply.github.com> Date: Sat, 7 Feb 2026 20:23:04 -0800 Subject: [PATCH 290/603] Change warfarin to heparin (#42847) --- Resources/Locale/en-US/reagents/meta/medicine.ftl | 4 ++-- Resources/Prototypes/Reagents/medicine.yml | 8 ++++---- Resources/Prototypes/Recipes/Reactions/medicine.yml | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Resources/Locale/en-US/reagents/meta/medicine.ftl b/Resources/Locale/en-US/reagents/meta/medicine.ftl index 2bc7f4af28f..8ff827f4082 100644 --- a/Resources/Locale/en-US/reagents/meta/medicine.ftl +++ b/Resources/Locale/en-US/reagents/meta/medicine.ftl @@ -154,5 +154,5 @@ reagent-desc-potassium-iodide = Will reduce the damaging effects of radiation by reagent-name-haloperidol = haloperidol reagent-desc-haloperidol = Removes most stimulating and hallucinogenic drugs. Reduces druggy effects and jitteriness. Causes drowsiness. -reagent-name-warfarin = warfarin -reagent-desc-warfarin = Commonly used as an anticoagulant medication. Causes blood to have difficulty forming clots. Can cause internal bleeding when overdosed. +reagent-name-heparin = heparin +reagent-desc-heparin = Commonly used as an anticoagulant medication. Causes blood to have difficulty forming clots. Can cause internal bleeding when overdosed. diff --git a/Resources/Prototypes/Reagents/medicine.yml b/Resources/Prototypes/Reagents/medicine.yml index f6a6bdf9ed5..597b1013925 100644 --- a/Resources/Prototypes/Reagents/medicine.yml +++ b/Resources/Prototypes/Reagents/medicine.yml @@ -1522,10 +1522,10 @@ amount: -3.0 - type: reagent - id: Warfarin - name: reagent-name-warfarin + id: Heparin + name: reagent-name-heparin group: Medicine - desc: reagent-desc-warfarin + desc: reagent-desc-heparin physicalDesc: reagent-physical-desc-thin allowedDepartments: - Medical @@ -1541,6 +1541,6 @@ - !type:ModifyBleed conditions: - !type:ReagentCondition - reagent: Warfarin + reagent: Heparin min: 15 amount: 0.25 diff --git a/Resources/Prototypes/Recipes/Reactions/medicine.yml b/Resources/Prototypes/Recipes/Reactions/medicine.yml index feb1d965281..335f1e0ed32 100644 --- a/Resources/Prototypes/Recipes/Reactions/medicine.yml +++ b/Resources/Prototypes/Recipes/Reactions/medicine.yml @@ -677,7 +677,7 @@ Haloperidol: 5 - type: reaction - id: Warfarin + id: Heparin reactants: SulfuricAcid: amount: 1 @@ -686,12 +686,12 @@ Sodium: amount: 1 products: - Warfarin: 2 + Heparin: 2 - type: reaction id: Hemorrhinol reactants: - Warfarin: + Heparin: amount: 2 Razorium: amount: 2 From 6f79e1d744c6dbbdb8a95b5ed172662ea6301be2 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 8 Feb 2026 04:39:17 +0000 Subject: [PATCH 291/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index db0cde8f090..da573f5a97a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: RedBookcase - changes: - - message: Rechargers can now charge power cells again. - type: Tweak - id: 8999 - time: '2025-09-24T20:33:45.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/38138 - author: Nox38, BurgerMoth changes: - message: Added descriptions to .20 ammo boxes, magazines, and cartridges. @@ -3999,3 +3992,10 @@ id: 9505 time: '2026-02-08T03:41:21.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42838 +- author: salarua + changes: + - message: Warfarin is now named heparin. + type: Fix + id: 9506 + time: '2026-02-08T04:38:09.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42847 From 41dddf4d99d30839730011a8c64d1203cdedddbf Mon Sep 17 00:00:00 2001 From: Kittygyat <202250949+Kittygyat@users.noreply.github.com> Date: Sun, 8 Feb 2026 07:32:00 +0000 Subject: [PATCH 292/603] Fixed vox cigarette smoking sprites (#42584) Fixed vox cigarette sprites --- .../cigarette.rsi/lit-equipped-MASK-vox.png | Bin 0 -> 1043 bytes .../Cigarettes/cigarette.rsi/meta.json | 54 +++++++++++++++++- .../cigarette.rsi/unlit-equipped-MASK-vox.png | Bin 0 -> 210 bytes 3 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/cigarette.rsi/lit-equipped-MASK-vox.png create mode 100644 Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/cigarette.rsi/unlit-equipped-MASK-vox.png diff --git a/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/cigarette.rsi/lit-equipped-MASK-vox.png b/Resources/Textures/Objects/Consumable/Smokeables/Cigarettes/cigarette.rsi/lit-equipped-MASK-vox.png new file mode 100644 index 0000000000000000000000000000000000000000..56b43ef13e95b6fd43fc213388da5405a3cf5f3a GIT binary patch literal 1043 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE4M+yv$zcaloCO|{#S9GGLLkg|>2BR01_tJ% zo-U3d6>)Fx9xP-s*1mr#k1)%gVmD^#y-D z?WbK*f|?Guh9bsnfepR|!nwENC$Z(%+urqYZOb=adn^Oyt}0fYu<&P*!L&rCvb45~+&+-7gB#qV_Mm&lMXPyh z;+SWwQM{z+&~U(=HE;UkEpw_g?$&em_x%ry`9B97-f%q>Gd`?4ut#abmi=W)`D;6S z{;pg2{k_A1b!TKv0y$YY_9#qvx^lW|zxaziQ{eVGR5ezbSO45P|F6^@`G5D!|Lyt* zjI+D__jmp?TQKqOf8+Y)`~Ld>XPl~l6sAaNg={A)%sx=$f8cyIch&P3>zeL8dQ{7O zV@j?BFcn^4Sv0RLu&~s2VMC(FjVTj@j2e_nqt^m0jo`lGJagLRvOV9$xccqyrwT;< z-*ejDsBZUZ1*1CNb^E{X>2^np2D06U&zu80m`bQ1T=*X3I>cGRZ1*j2A#)&?qTqB L^>bP0l+XkK-WW4y literal 0 HcmV?d00001 From 9c23b4a6d8d3188b8027ae5c0042a31455e31e03 Mon Sep 17 00:00:00 2001 From: pathetic meowmeow Date: Sun, 8 Feb 2026 13:30:09 -0500 Subject: [PATCH 293/603] Documents all the public APIs for Nubody & markings code (#42857) --- Content.Client/Humanoid/MarkingsViewModel.cs | 117 +++++++++++++++++- Content.Shared/Body/BodyComponent.cs | 5 + .../Body/BodySystem.Compatibility.cs | 11 ++ Content.Shared/Body/BodySystem.Relay.cs | 18 ++- Content.Shared/Body/BodySystem.cs | 11 ++ Content.Shared/Body/GibbableOrganComponent.cs | 5 + Content.Shared/Body/HandOrganComponent.cs | 9 ++ Content.Shared/Body/InitialBodyComponent.cs | 4 + Content.Shared/Body/OrganComponent.cs | 4 + .../Body/SharedVisualBodySystem.Modifiers.cs | 47 +++++++ Content.Shared/Body/SharedVisualBodySystem.cs | 17 +-- Content.Shared/Body/VisualBodyComponent.cs | 3 + Content.Shared/Body/VisualOrganComponent.cs | 13 +- .../Body/VisualOrganMarkingsComponent.cs | 7 +- .../Humanoid/Markings/MarkingManager.cs | 48 ++++++- 15 files changed, 297 insertions(+), 22 deletions(-) diff --git a/Content.Client/Humanoid/MarkingsViewModel.cs b/Content.Client/Humanoid/MarkingsViewModel.cs index 6305d5eea51..ed62c3d62d7 100644 --- a/Content.Client/Humanoid/MarkingsViewModel.cs +++ b/Content.Client/Humanoid/MarkingsViewModel.cs @@ -7,6 +7,9 @@ namespace Content.Client.Humanoid; +/// +/// View model for UIs manipulating a set of markings, responsible for applying markings logic and keeping state synchronized. +/// public sealed class MarkingsViewModel { [Dependency] private readonly MarkingManager _marking = default!; @@ -14,6 +17,10 @@ public sealed class MarkingsViewModel private bool _enforceLimits = true; + /// + /// Whether the markings view model will enforce limitations on how many markings an organ can have + /// + /// public bool EnforceLimits { get => _enforceLimits; @@ -29,6 +36,10 @@ public bool EnforceLimits private bool _enforceGroupAndSexRestrictions = true; + /// + /// Whether the markings view model will enforce restrictions on the group and sex of markings for an organ + /// + /// public bool EnforceGroupAndSexRestrictions { get => _enforceGroupAndSexRestrictions; @@ -44,10 +55,18 @@ public bool EnforceGroupAndSexRestrictions private bool AnyEnforcementsLifted => !_enforceLimits || !_enforceGroupAndSexRestrictions; + /// + /// Raised whenever the view model is enforcing a different set of constraints on possible markings than before + /// + /// + /// public event Action? EnforcementsChanged; private Dictionary, OrganProfileData> _organProfileData = new(); + /// + /// The organ profile data this view model is concerned with. + /// public Dictionary, OrganProfileData> OrganProfileData { get => _organProfileData; @@ -58,6 +77,10 @@ public Dictionary, OrganProfileData> OrganProfil } } + /// + /// Sets the sex of all organ profiles in the view model. + /// + /// The new sex public void SetOrganSexes(Sex sex) { foreach (var (organ, data) in _organProfileData) @@ -67,6 +90,10 @@ public void SetOrganSexes(Sex sex) OrganProfileDataChanged?.Invoke(true); } + /// + /// Sets the skin color of all organ profiles in the view model. + /// + /// The new skin color public void SetOrganSkinColor(Color skinColor) { foreach (var (organ, data) in _organProfileData) @@ -76,6 +103,10 @@ public void SetOrganSkinColor(Color skinColor) OrganProfileDataChanged?.Invoke(false); } + /// + /// Sets the eye color of all organ profiles in the view model. + /// + /// The new eye color public void SetOrganEyeColor(Color eyeColor) { foreach (var (organ, data) in _organProfileData) @@ -85,10 +116,21 @@ public void SetOrganEyeColor(Color eyeColor) OrganProfileDataChanged?.Invoke(false); } + /// + /// Raised whenever the organ profile data changes. + /// The boolean value represents whether the set of possible markings may have changed. + /// + /// + /// + /// + /// public event Action? OrganProfileDataChanged; private Dictionary, Dictionary>> _markings = new(); + /// + /// The currently applied set of markings + /// public Dictionary, Dictionary>> Markings { get => _markings; @@ -104,12 +146,21 @@ public Dictionary, Dictionary + /// Raised whenever the set of markings has fully changed and requires a UI reload + /// public event Action? MarkingsReset; + /// + /// Raised whenever a specific layer's markings have changed + /// public event Action, HumanoidVisualLayers>? MarkingsChanged; private Dictionary, OrganMarkingData> _organData = new(); + /// + /// The organ marking data the view model is concerned with. + /// public Dictionary, OrganMarkingData> OrganData { @@ -125,15 +176,25 @@ public Dictionary, OrganMarkingData> } } + /// + /// Raised whenever the organ data within the view model is changed. + /// public event Action? OrganDataChanged; - private Dictionary, List> _previousColors = new(); + private readonly Dictionary, List> _previousColors = new(); public MarkingsViewModel() { IoCManager.InjectDependencies(this); } + /// + /// Returns whether the given marking is currently selected in the model + /// + /// The organ to check for the marking within + /// The layer within the organ to check for the marking within + /// The marking ID to check for + /// Whether the marking is currently present within the set of selected markings public bool IsMarkingSelected(ProtoId organ, HumanoidVisualLayers layer, ProtoId markingId) @@ -141,6 +202,11 @@ public bool IsMarkingSelected(ProtoId organ, return GetMarking(organ, layer, markingId) is not null; } + /// + /// Returns whether the marking at the given location can have its color customized by the user + /// + /// + /// Whether the marking is capable of having its color customized by the user public bool IsMarkingColorCustomizable(ProtoId organ, HumanoidVisualLayers layer, ProtoId markingId) @@ -163,6 +229,11 @@ public bool IsMarkingColorCustomizable(ProtoId organ, return !appearance.MatchSkin; } + /// + /// Returns the currently applied marking by its ID, if it exists + /// + /// + /// The marking currently applied if it exists, otherwise null public Marking? GetMarking(ProtoId organ, HumanoidVisualLayers layer, ProtoId markingId) @@ -176,6 +247,11 @@ public bool IsMarkingColorCustomizable(ProtoId organ, return markings.FirstOrNull(it => it.MarkingId == markingId); } + /// + /// Attempts to add a marking to the current set of markings + /// + /// + /// Whether the marking was successfully added to the set of markings public bool TrySelectMarking(ProtoId organ, HumanoidVisualLayers layer, ProtoId markingId) @@ -230,6 +306,12 @@ public bool TrySelectMarking(ProtoId organ, return false; } + /// + /// Returns the list of currently selected markings for the layer on the given organ + /// + /// The organ to look up the layer within + /// The layer within the organ to look up + /// The set of markings for the provided organ if it has any, or null public List? SelectedMarkings(ProtoId organ, HumanoidVisualLayers layer) { @@ -238,6 +320,11 @@ public bool TrySelectMarking(ProtoId organ, : organMarkings.GetValueOrDefault(layer); } + /// + /// Attempts to remove a marking from the current set of markings + /// + /// + /// Whether the marking was successfully removed from the set of markings public bool TryDeselectMarking(ProtoId organ, HumanoidVisualLayers layer, ProtoId markingId) @@ -275,6 +362,12 @@ public bool TryDeselectMarking(ProtoId organ, return true; } + /// + /// Attempts to set the color of the specified marking at the given index + /// + /// + /// The index within the marking's color array to set + /// The new color to set public void TrySetMarkingColor(ProtoId organ, HumanoidVisualLayers layer, ProtoId markingId, @@ -295,6 +388,9 @@ public void TrySetMarkingColor(ProtoId organ, MarkingsChanged?.Invoke(organ, layer); } + /// + /// Ensures the markings within the model are valid. + /// public void ValidateMarkings() { foreach (var (organ, organData) in _organData) @@ -318,6 +414,14 @@ public void ValidateMarkings() MarkingsReset?.Invoke(); } + /// + /// Gets the count data for an organ layer. + /// + /// The organ to look up count data for + /// The layer within the organ to look up count data for + /// Whether this layer requires at least one marking to be selected + /// The maximum amount of markings that can be selected for this layer + /// The currently selected amount of markings public void GetMarkingCounts(ProtoId organ, HumanoidVisualLayers layer, out bool isRequired, out int count, out int selected) { isRequired = false; @@ -348,6 +452,14 @@ public void GetMarkingCounts(ProtoId organ, HumanoidVisu selected = layerMarkings.Count; } + /// + /// Reorders the specified marking ID to the index and position relative to its index + /// + /// The organ to reorder the markings of + /// The layer to reorder the markings of + /// The marking to reorder + /// Whether the marking should be moved to before or after the given index + /// The new position index of the marking public void ChangeMarkingOrder(ProtoId organ, HumanoidVisualLayers layer, ProtoId markingId, @@ -381,6 +493,9 @@ int positionIndex } } +/// +/// Specifies whether an item in a list will be moved to before or after a corresponding index +/// public enum CandidatePosition { Before, diff --git a/Content.Shared/Body/BodyComponent.cs b/Content.Shared/Body/BodyComponent.cs index 0b32657f2ec..1e0776739d8 100644 --- a/Content.Shared/Body/BodyComponent.cs +++ b/Content.Shared/Body/BodyComponent.cs @@ -3,6 +3,11 @@ namespace Content.Shared.Body; +/// +/// Component on the entity that "has" a body, and that oversees entities with the inside it. +/// +/// +/// [RegisterComponent, NetworkedComponent] [Access(typeof(BodySystem))] public sealed partial class BodyComponent : Component diff --git a/Content.Shared/Body/BodySystem.Compatibility.cs b/Content.Shared/Body/BodySystem.Compatibility.cs index c6dd2bc2ba5..82d1b6a7eb4 100644 --- a/Content.Shared/Body/BodySystem.Compatibility.cs +++ b/Content.Shared/Body/BodySystem.Compatibility.cs @@ -1,8 +1,19 @@ +using JetBrains.Annotations; + namespace Content.Shared.Body; public sealed partial class BodySystem { + /// + /// Returns a list of organs with a given component in the body. + /// This is only provided to ease migration from the older BodySystem and should not be used in new code. + /// + /// The body to query. + /// The set of organs with the given component. + /// The component to test for. + /// Whether any organs were returned. [Obsolete("Use an event-relay based approach instead")] + [PublicAPI] public bool TryGetOrgansWithComponent(Entity ent, out List> organs) where TComp : Component { organs = new(); diff --git a/Content.Shared/Body/BodySystem.Relay.cs b/Content.Shared/Body/BodySystem.Relay.cs index 82587aa737d..68dbe4f22a7 100644 --- a/Content.Shared/Body/BodySystem.Relay.cs +++ b/Content.Shared/Body/BodySystem.Relay.cs @@ -2,11 +2,13 @@ using Content.Shared.Gibbing; using Content.Shared.Humanoid; using Content.Shared.Medical; +using JetBrains.Annotations; namespace Content.Shared.Body; public sealed partial class BodySystem { + // Refrain from adding an infinite block of relays here - consuming systems can use RelayEvent private void InitializeRelay() { SubscribeLocalEvent(RefRelayBodyEvent); @@ -28,6 +30,13 @@ private void RelayBodyEvent(EntityUid uid, BodyComponent component, T args) w RelayEvent((uid, component), args); } + /// + /// Relays the given event to organs within a body. + /// + /// The body to relay the event within + /// The event to relay + /// The type of the event + [PublicAPI] public void RelayEvent(Entity ent, ref T args) where T : struct { var ev = new BodyRelayedEvent(ent, args); @@ -38,6 +47,13 @@ public void RelayEvent(Entity ent, ref T args) where T : struc args = ev.Args; } + /// + /// Relays the given event to organs within a body. + /// + /// The body to relay the event within + /// The event to relay + /// The type of the event + [PublicAPI] public void RelayEvent(Entity ent, T args) where T : class { var ev = new BodyRelayedEvent(ent, args); @@ -49,7 +65,7 @@ public void RelayEvent(Entity ent, T args) where T : class } /// -/// Event wrapper for relayed events. +/// Event wrapper for events being relayed to organs within a body. /// [ByRefEvent] public record struct BodyRelayedEvent(Entity Body, TEvent Args); diff --git a/Content.Shared/Body/BodySystem.cs b/Content.Shared/Body/BodySystem.cs index c53ab22452e..4cd5a4e7924 100644 --- a/Content.Shared/Body/BodySystem.cs +++ b/Content.Shared/Body/BodySystem.cs @@ -3,6 +3,17 @@ namespace Content.Shared.Body; +/// +/// System responsible for coordinating entities with and their entities with . +/// This system is primarily responsible for event relaying and the relationships between a body and its organs. +/// It is not responsible for player-facing body features, e.g. "blood" or "breathing." +/// Such features should be implemented in systems relying on the various events raised by this class. +/// +/// +/// +/// +/// +/// public sealed partial class BodySystem : EntitySystem { [Dependency] private readonly SharedContainerSystem _container = default!; diff --git a/Content.Shared/Body/GibbableOrganComponent.cs b/Content.Shared/Body/GibbableOrganComponent.cs index fd813049092..0ac2025facb 100644 --- a/Content.Shared/Body/GibbableOrganComponent.cs +++ b/Content.Shared/Body/GibbableOrganComponent.cs @@ -1,7 +1,12 @@ +using Content.Shared.Gibbing; using Robust.Shared.GameStates; namespace Content.Shared.Body; +/// +/// Component that causes this entity to become gibs when the body it's in is gibbed +/// +/// [RegisterComponent, NetworkedComponent] [Access(typeof(GibbableOrganSystem))] public sealed partial class GibbableOrganComponent : Component; diff --git a/Content.Shared/Body/HandOrganComponent.cs b/Content.Shared/Body/HandOrganComponent.cs index 78cdea4a698..a9de7ecdaa9 100644 --- a/Content.Shared/Body/HandOrganComponent.cs +++ b/Content.Shared/Body/HandOrganComponent.cs @@ -3,13 +3,22 @@ namespace Content.Shared.Body; +/// +/// Organs with this component provide a hand with the given ID and data to the body when inserted. +/// [RegisterComponent, NetworkedComponent] [Access(typeof(HandOrganSystem))] public sealed partial class HandOrganComponent : Component { + /// + /// The hand ID used by on the body + /// [DataField(required: true)] public string HandID; + /// + /// The data used to create the hand + /// [DataField(required: true)] public Hand Data; } diff --git a/Content.Shared/Body/InitialBodyComponent.cs b/Content.Shared/Body/InitialBodyComponent.cs index cfb7a26b5d8..a27e5c092c5 100644 --- a/Content.Shared/Body/InitialBodyComponent.cs +++ b/Content.Shared/Body/InitialBodyComponent.cs @@ -4,11 +4,15 @@ namespace Content.Shared.Body; /// /// On map initialization, spawns the given organs into the body. +/// Liable to change as the body becomes more complex. /// [RegisterComponent] [Access(typeof(InitialBodySystem))] public sealed partial class InitialBodyComponent : Component { + /// + /// The organs to spawn based on their category. + /// [DataField(required: true)] public Dictionary, EntProtoId> Organs; } diff --git a/Content.Shared/Body/OrganComponent.cs b/Content.Shared/Body/OrganComponent.cs index 4126c192fb9..cad2ad86da7 100644 --- a/Content.Shared/Body/OrganComponent.cs +++ b/Content.Shared/Body/OrganComponent.cs @@ -3,6 +3,10 @@ namespace Content.Shared.Body; +/// +/// Marks an entity as being able to be inserted into an entity with . +/// +/// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] [Access(typeof(BodySystem))] public sealed partial class OrganComponent : Component diff --git a/Content.Shared/Body/SharedVisualBodySystem.Modifiers.cs b/Content.Shared/Body/SharedVisualBodySystem.Modifiers.cs index 0eb0d103b9a..6273b0640bf 100644 --- a/Content.Shared/Body/SharedVisualBodySystem.Modifiers.cs +++ b/Content.Shared/Body/SharedVisualBodySystem.Modifiers.cs @@ -6,6 +6,7 @@ using Content.Shared.Humanoid.Markings; using Content.Shared.Preferences; using Content.Shared.Verbs; +using JetBrains.Annotations; using Robust.Shared.Containers; using Robust.Shared.Prototypes; using Robust.Shared.Utility; @@ -47,6 +48,26 @@ private void OnGetVerbs(Entity ent, ref GetVerbsEvent }); } + /// + /// Copies the appearance of organs from one body to another + /// + /// The body whose organs to copy the appearance from + /// The body whose organs to copy the appearance to + [PublicAPI] + public void CopyAppearanceFrom(Entity source, Entity target) + { + if (!Resolve(source, ref source.Comp) || !Resolve(target, ref target.Comp)) + return; + + var sourceOrgans = _container.EnsureContainer(source, BodyComponent.ContainerID); + + foreach (var sourceOrgan in sourceOrgans.ContainedEntities) + { + var evt = new OrganCopyAppearanceEvent(sourceOrgan); + RaiseLocalEvent(target, ref evt); + } + } + /// /// Gathers all the markings-relevant data from this entity /// @@ -111,6 +132,12 @@ private void OnSetModifiers(Entity ent, ref HumanoidMarking RaiseLocalEvent(ent, ref markingsEvt); } + /// + /// Applies the given set of markings to the body. + /// + /// The body whose organs to apply markings to. + /// A dictionary of organ categories to markings information. Organs not included in this dictionary will remain unaffected. + [PublicAPI] public void ApplyMarkings(EntityUid ent, Dictionary, Dictionary>> markings) { var markingsEvt = new ApplyOrganMarkingsEvent(markings); @@ -134,17 +161,37 @@ private void ApplyAppearanceTo(Entity ent, HumanoidCharact RaiseLocalEvent(ent, ref markingsEvt); } + /// + /// Applies the information contained with a to a visual body's appearance. + /// This sets the profile data and markings of all organs contained within the profile. + /// + /// The body to apply the profile to + /// The profile to apply + [PublicAPI] public void ApplyProfileTo(Entity ent, HumanoidCharacterProfile profile) { ApplyAppearanceTo(ent, profile.Appearance, profile.Sex); } + /// + /// Applies profile data to all visual organs within the body. + /// + /// The body to apply the organ profile to + /// The profile to apply + [PublicAPI] public void ApplyProfile(EntityUid ent, OrganProfileData profile) { var profileEvt = new ApplyOrganProfileDataEvent(profile, null); RaiseLocalEvent(ent, ref profileEvt); } + /// + /// Applies profile data to the specified visual organs within the body. + /// Organs not specified are left unchanged. + /// + /// The body to apply the organ profiles to. + /// The profiles to apply. + [PublicAPI] public void ApplyProfiles(EntityUid ent, Dictionary, OrganProfileData> profiles) { var profileEvt = new ApplyOrganProfileDataEvent(null, profiles); diff --git a/Content.Shared/Body/SharedVisualBodySystem.cs b/Content.Shared/Body/SharedVisualBodySystem.cs index 8254586abef..553dbe838e3 100644 --- a/Content.Shared/Body/SharedVisualBodySystem.cs +++ b/Content.Shared/Body/SharedVisualBodySystem.cs @@ -7,6 +7,9 @@ namespace Content.Shared.Body; +/// +/// Class responsible for managing the appearance of an entity with via its organs with +/// public abstract partial class SharedVisualBodySystem : EntitySystem { [Dependency] private readonly IPrototypeManager _prototype = default!; @@ -84,20 +87,6 @@ protected virtual void SetOrganMarkings(Entity ent Dirty(ent); } - public void CopyAppearanceFrom(Entity source, Entity target) - { - if (!Resolve(source, ref source.Comp) || !Resolve(target, ref target.Comp)) - return; - - var sourceOrgans = _container.EnsureContainer(source, BodyComponent.ContainerID); - - foreach (var sourceOrgan in sourceOrgans.ContainedEntities) - { - var evt = new OrganCopyAppearanceEvent(sourceOrgan); - RaiseLocalEvent(target, ref evt); - } - } - private void OnVisualOrganCopyAppearance(Entity ent, ref BodyRelayedEvent args) { if (!TryComp(args.Args.Organ, out var other)) diff --git a/Content.Shared/Body/VisualBodyComponent.cs b/Content.Shared/Body/VisualBodyComponent.cs index 030b2876c0d..96c3920a248 100644 --- a/Content.Shared/Body/VisualBodyComponent.cs +++ b/Content.Shared/Body/VisualBodyComponent.cs @@ -2,6 +2,9 @@ namespace Content.Shared.Body; +/// +/// Component on an entity with that modifies its appearance based on contained organs with +/// [RegisterComponent, NetworkedComponent] [Access(typeof(SharedVisualBodySystem))] public sealed partial class VisualBodyComponent : Component; diff --git a/Content.Shared/Body/VisualOrganComponent.cs b/Content.Shared/Body/VisualOrganComponent.cs index 9ca2c363746..6427c8f0e3a 100644 --- a/Content.Shared/Body/VisualOrganComponent.cs +++ b/Content.Shared/Body/VisualOrganComponent.cs @@ -4,28 +4,35 @@ namespace Content.Shared.Body; +/// +/// Defines an organ that applies a sprite to the specified within the body +/// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] [Access(typeof(SharedVisualBodySystem))] public sealed partial class VisualOrganComponent : Component { /// - /// The layer on the entity that this contributes to + /// The sprite layer on the entity that this contributes to /// [DataField(required: true)] public Enum Layer; /// - /// The data for the layer + /// The sprite data for the layer /// [DataField(required: true), AutoNetworkedField, AlwaysPushInheritance] public PrototypeLayerData Data; /// - /// When applying a profile, if the sex is present in this dictionary, overrides the state of the data. + /// When applying a profile, if the sex is present in this dictionary, overrides the state of the sprite data. + /// Used for e.g. male vs female torsoes. /// [DataField] public Dictionary? SexStateOverrides; + /// + /// The current profile data of this organ, used for alternate sprite selection and colouration. + /// [DataField, AutoNetworkedField] public OrganProfileData Profile = new(); } diff --git a/Content.Shared/Body/VisualOrganMarkingsComponent.cs b/Content.Shared/Body/VisualOrganMarkingsComponent.cs index a0af5a6a16e..af79fd1830a 100644 --- a/Content.Shared/Body/VisualOrganMarkingsComponent.cs +++ b/Content.Shared/Body/VisualOrganMarkingsComponent.cs @@ -6,18 +6,21 @@ namespace Content.Shared.Body; +/// +/// Defines an organ that applies markings on top of the layer specified in +/// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState(raiseAfterAutoHandleState: true, fieldDeltas: true)] [Access(typeof(SharedVisualBodySystem))] public sealed partial class VisualOrganMarkingsComponent : Component { /// - /// What markings this organ can take + /// Defines the type of markings this organ can take /// [DataField(required: true), AlwaysPushInheritance] public OrganMarkingData MarkingData = default!; /// - /// The list of markings to apply to the entity + /// The list of markings this organ is currently providing to the entity /// [DataField, AutoNetworkedField] public Dictionary> Markings = new(); diff --git a/Content.Shared/Humanoid/Markings/MarkingManager.cs b/Content.Shared/Humanoid/Markings/MarkingManager.cs index 175d1f978b9..74eb5600337 100644 --- a/Content.Shared/Humanoid/Markings/MarkingManager.cs +++ b/Content.Shared/Humanoid/Markings/MarkingManager.cs @@ -7,6 +7,9 @@ namespace Content.Shared.Humanoid.Markings; +/// +/// Manager responsible for sharing the logic of markings between in-simulation bodies and out-of-simulation profile editing +/// public sealed class MarkingManager { [Dependency] private readonly IComponentFactory _component = default!; @@ -81,6 +84,12 @@ public IReadOnlyDictionary MarkingsByLayerAndGroupAndS return res; } + /// + /// Gets the marking prototype associated with the marking. + /// + /// The marking to look up + /// When this method returns; will contain the marking prototype corresponding to the one specified by the marking if it exists. + /// Whether a marking prototype exists for the given marking public bool TryGetMarking(Marking marking, [NotNullWhen(true)] out MarkingPrototype? markingResult) { return _markings.TryGetValue(marking.MarkingId, out markingResult); @@ -92,7 +101,13 @@ private void OnPrototypeReload(PrototypesReloadedEventArgs args) CachePrototypes(); } - + /// + /// Determines if a marking prototype can be applied to something with the given markings group and sex. + /// + /// The markings group to test + /// The sex to test + /// The prototype to reference against + /// True if a marking with the prototype could be applied public bool CanBeApplied(ProtoId group, Sex sex, MarkingPrototype prototype) { var groupProto = _prototype.Index(group); @@ -223,6 +238,11 @@ public void EnsureValidLimits(Dictionary> ma } } + /// + /// Returns the expected set of organs for a species to have. + /// + /// The species to look up. + /// A dictionary of organ categories to their usual organs within a species. public Dictionary, EntProtoId> GetOrgans(ProtoId species) { var speciesPrototype = _prototype.Index(species); @@ -234,6 +254,11 @@ public Dictionary, EntProtoId> G return initialBody.Organs; } + /// + /// Looks up the expected set of for the species to have + /// + /// The species to look up the usual organs of. + /// A dictionary of organ categories to their usual organ marking data within a species. public Dictionary, OrganMarkingData> GetMarkingData(ProtoId species) { var ret = new Dictionary, OrganMarkingData>(); @@ -249,6 +274,15 @@ public Dictionary, OrganMarkingData> GetMarkingD return ret; } + /// + /// Expands the provided profile data into all the categories for a species. + /// + /// The species the returned dictionary should be comprehensive for. + /// The sex to apply to all organs + /// The skin color to apply to all organs + /// The eye color to apply to all organs + /// + /// public Dictionary, OrganProfileData> GetProfileData(ProtoId species, Sex sex, Color skinColor, @@ -269,6 +303,12 @@ public Dictionary, OrganProfileData> GetProfileD return ret; } + /// + /// Gets the for the entity prototype corresponding to an organ + /// + /// The ID of the organ entity prototype to look up + /// The marking data for the organ if it exists + /// Whether the provided entity prototype ID corresponded to organ marking data that could be returned public bool TryGetMarkingData(EntProtoId organ, [NotNullWhen(true)] out OrganMarkingData? organData) { organData = null; @@ -284,6 +324,12 @@ public bool TryGetMarkingData(EntProtoId organ, [NotNullWhen(true)] out OrganMar return true; } + /// + /// Converts a legacy flat list of markings to a structured markings dictionary for a given species + /// + /// A flat list of markings + /// The species to convert the markings for + /// A dictionary with the provided markings categorized appropriately for the species public Dictionary, Dictionary>> ConvertMarkings(List markings, ProtoId species) { From 43c8dc711a25c98a89a1d131df0294afbcd5c0d5 Mon Sep 17 00:00:00 2001 From: Kyle Tyo <36606155+VerinSenpai@users.noreply.github.com> Date: Sun, 8 Feb 2026 18:47:43 -0500 Subject: [PATCH 294/603] Fix(Humanoid): Prevent skin color verification failures due to precision loss (#42836) port over uberrations fixes. --- .../Humanoid/SkinColorationPrototype.cs | 101 +++++-- .../Preferences/Humanoid/SkinTonesTest.cs | 276 +++++++++++++++++- 2 files changed, 348 insertions(+), 29 deletions(-) diff --git a/Content.Shared/Humanoid/SkinColorationPrototype.cs b/Content.Shared/Humanoid/SkinColorationPrototype.cs index e37265cea10..afb90bf39aa 100644 --- a/Content.Shared/Humanoid/SkinColorationPrototype.cs +++ b/Content.Shared/Humanoid/SkinColorationPrototype.cs @@ -1,3 +1,4 @@ +using System; using System.Numerics; using JetBrains.Annotations; using Robust.Shared.Prototypes; @@ -22,7 +23,7 @@ public sealed partial class SkinColorationPrototype : IPrototype } /// -/// The type of input taken by a +/// The type of input taken by a /// [Serializable, NetSerializable] public enum SkinColorationStrategyInput @@ -151,10 +152,12 @@ public Color FromUnary(float color) if (rangeOffset <= 0) { + // First 20 values adjust hue. hue += Math.Abs(rangeOffset); } else { + // Remaining 80 values adjust saturation and value. sat += rangeOffset; val -= rangeOffset; } @@ -182,14 +185,15 @@ public float ToUnary(Color color) } /// -/// Unary coloration strategy that clamps the color within the HSV colorspace +/// Coloration strategy that clamps the color within the HSV colorspace. /// [DataDefinition] [Serializable, NetSerializable] public sealed partial class ClampedHsvColoration : ISkinColorationStrategy { /// - /// The (min, max) of the hue channel. + /// Defines the valid (min, max) range for the hue channel (0.0 to 1.0). + /// If min > max, the range wraps around 1.0 (e.g., for reds). /// [DataField] public (float, float)? Hue; @@ -212,13 +216,13 @@ public bool VerifySkinColor(Color color) { var hsv = Color.ToHsv(color); - if (Hue is (var minHue, var maxHue) && (hsv.X < minHue || hsv.X > maxHue)) + if (Hue is (var minHue, var maxHue) && !SkinColorationUtils.IsHueInRange(hsv.X, minHue, maxHue)) return false; - if (Saturation is (var minSaturation, var maxSaturation) && (hsv.Y < minSaturation || hsv.Y > maxSaturation)) + if (Saturation is (var minSat, var maxSat) && (hsv.Y < minSat - SkinColorationUtils.Epsilon || hsv.Y > maxSat + SkinColorationUtils.Epsilon)) return false; - if (Value is (var minValue, var maxValue) && (hsv.Z < minValue || hsv.Z > maxValue)) + if (Value is (var minVal, var maxVal) && (hsv.Z < minVal - SkinColorationUtils.Epsilon || hsv.Z > maxVal + SkinColorationUtils.Epsilon)) return false; return true; @@ -229,27 +233,26 @@ public Color ClosestSkinColor(Color color) var hsv = Color.ToHsv(color); if (Hue is (var minHue, var maxHue)) - hsv.X = Math.Clamp(hsv.X, minHue, maxHue); - - if (Saturation is (var minSaturation, var maxSaturation)) - hsv.Y = Math.Clamp(hsv.Y, minSaturation, maxSaturation); - - if (Value is (var minValue, var maxValue)) - hsv.Z = Math.Clamp(hsv.Z, minValue, maxValue); + hsv.X = SkinColorationUtils.ClampHue(hsv.X, minHue, maxHue); + if (Saturation is (var minSat, var maxSat)) + hsv.Y = Math.Clamp(hsv.Y, minSat, maxSat); + if (Value is (var minVal, var maxVal)) + hsv.Z = Math.Clamp(hsv.Z, minVal, maxVal); return Color.FromHsv(hsv); } } /// -/// Unary coloration strategy that clamps the color within the HSL colorspace +/// Coloration strategy that clamps the color within the HSL colorspace. /// [DataDefinition] [Serializable, NetSerializable] public sealed partial class ClampedHslColoration : ISkinColorationStrategy { /// - /// The (min, max) of the hue channel. + /// Defines the valid (min, max) range for the hue channel (0.0 to 1.0). + /// If min > max, the range wraps around 1.0 (e.g., for reds). /// [DataField] public (float, float)? Hue; @@ -272,13 +275,13 @@ public bool VerifySkinColor(Color color) { var hsl = Color.ToHsl(color); - if (Hue is (var minHue, var maxHue) && (hsl.X < minHue || hsl.X > maxHue)) + if (Hue is (var minHue, var maxHue) && !SkinColorationUtils.IsHueInRange(hsl.X, minHue, maxHue)) return false; - if (Saturation is (var minSaturation, var maxSaturation) && (hsl.Y < minSaturation || hsl.Y > maxSaturation)) + if (Saturation is (var minSat, var maxSat) && (hsl.Y < minSat - SkinColorationUtils.Epsilon || hsl.Y > maxSat + SkinColorationUtils.Epsilon)) return false; - if (Lightness is (var minValue, var maxValue) && (hsl.Z < minValue || hsl.Z > maxValue)) + if (Lightness is (var minLight, var maxLight) && (hsl.Z < minLight - SkinColorationUtils.Epsilon || hsl.Z > maxLight + SkinColorationUtils.Epsilon)) return false; return true; @@ -289,14 +292,64 @@ public Color ClosestSkinColor(Color color) var hsl = Color.ToHsl(color); if (Hue is (var minHue, var maxHue)) - hsl.X = Math.Clamp(hsl.X, minHue, maxHue); + hsl.X = SkinColorationUtils.ClampHue(hsl.X, minHue, maxHue); + if (Saturation is (var minSat, var maxSat)) + hsl.Y = Math.Clamp(hsl.Y, minSat, maxSat); + if (Lightness is (var minLight, var maxLight)) + hsl.Z = Math.Clamp(hsl.Z, minLight, maxLight); - if (Saturation is (var minSaturation, var maxSaturation)) - hsl.Y = Math.Clamp(hsl.Y, minSaturation, maxSaturation); + return Color.FromHsl(hsl); + } +} - if (Lightness is (var minValue, var maxValue)) - hsl.Z = Math.Clamp(hsl.Z, minValue, maxValue); +/// +/// Contains shared utility methods for handling color manipulations in skin coloration strategies. +/// +internal static class SkinColorationUtils +{ + /// + /// An empirically determined epsilon to account for floating-point drift during RGB -> HSL/HSV -> RGB conversions. + /// Based on high-iteration testing (50M+ samples) which showed a max drift of ~4.9E-6 for HSL. + /// A value of 1E-5f provides a robust safety margin. + /// + public const float Epsilon = 1e-5f; // 0.00001 - return Color.FromHsl(hsl); + /// + /// Checks if a hue value is within a specified range, correctly handling ranges that wrap around 1.0 (e.g., reds). + /// + /// The hue value to check (0.0 to 1.0). + /// The minimum bound of the hue range. + /// The maximum bound of the hue range. + /// True if the hue is within the range; otherwise, false. + public static bool IsHueInRange(float hue, float minHue, float maxHue) + { + if (minHue > maxHue) // Wraps around 1.0 (e.g., reds) + return hue >= minHue - Epsilon || hue <= maxHue + Epsilon; + return hue >= minHue - Epsilon && hue <= maxHue + Epsilon; + } + + /// + /// Clamps a hue value to the closest boundary of a given range, correctly handling ranges that wrap around 1.0. + /// + /// The hue value to clamp (0.0 to 1.0). + /// The minimum bound of the hue range. + /// The maximum bound of the hue range. + /// The clamped hue value, adjusted to the nearest boundary if it was outside the valid range. + public static float ClampHue(float hue, float minHue, float maxHue) + { + if (minHue > maxHue) // Wraps around 1.0 + { + // If it's already in the valid range, do nothing. + if (hue >= minHue || hue <= maxHue) + return hue; + + // It's in the "invalid" gap between maxHue and minHue. Find the closest boundary. + var mid = (maxHue + minHue) / 2f; + if (hue > mid) + return minHue; + return maxHue; + } + + return Math.Clamp(hue, minHue, maxHue); } } diff --git a/Content.Tests/Shared/Preferences/Humanoid/SkinTonesTest.cs b/Content.Tests/Shared/Preferences/Humanoid/SkinTonesTest.cs index 63cefac812b..82ef82c5d42 100644 --- a/Content.Tests/Shared/Preferences/Humanoid/SkinTonesTest.cs +++ b/Content.Tests/Shared/Preferences/Humanoid/SkinTonesTest.cs @@ -1,28 +1,294 @@ +using System; +using System.Numerics; using Content.Shared.Humanoid; using NUnit.Framework; +using Robust.Shared.Maths; +using Robust.Shared.Random; namespace Content.Tests.Shared.Preferences.Humanoid; [TestFixture] +[TestOf(typeof(HumanTonedSkinColoration))] +[TestOf(typeof(ClampedHslColoration))] +[TestOf(typeof(ClampedHsvColoration))] public sealed class SkinTonesTest { + // These fields will track the maximum observed floating-point drift across all tests. + // This is for monitoring, even if tests pass due to a sufficiently large Epsilon in production code. + private static float _maxHslDrift; + private static float _maxHsvDrift; + + [OneTimeTearDown] + public void OneTimeTearDown() + { + // After all tests in this fixture run, print the final results. + // This gives insight into the actual precision loss, even if VerifySkinColor passes. + TestContext.Out.WriteLine("\n--- FINAL DRIFT SUMMARY FOR ALL CLAMPING TESTS ---"); + TestContext.Out.WriteLine($"Maximum observed HSL drift: {_maxHslDrift:E}"); // Scientific notation for precision + TestContext.Out.WriteLine($"Maximum observed HSV drift: {_maxHsvDrift:E}"); + TestContext.Out.WriteLine("This indicates the actual max floating-point error observed. Production code's Epsilon should be >= this value."); + TestContext.Out.WriteLine("--------------------------------------------------"); + } + + /// + /// Checks that colors generated by HumanTonedSkinColoration.FromUnary pass verification. + /// [Test] - public void TestHumanSkinToneValidity() + public void TestHumanSkinTonesFromUnaryAreValid() { var strategy = new HumanTonedSkinColoration(); - for (var i = 0; i <= 100; i++) + // Testing across a finer range to hit more edge cases + for (var i = 0; i <= 10000; i++) { - var color = strategy.FromUnary(i); - Assert.That(strategy.VerifySkinColor(color)); + var unaryInput = i / 100f; // Test values like 0.0, 0.01, ..., 100.0 + var color = strategy.FromUnary(unaryInput); + Assert.That(strategy.VerifySkinColor(color), $"Color {color} from unary value {unaryInput} failed verification."); } } + /// + /// Checks that converting a unary value to a color and back results in a similar unary value. + /// [Test] - public void TestDefaultSkinToneValid() + public void TestHumanTonedSkinColoration_RoundTrip() { var strategy = new HumanTonedSkinColoration(); + // Test values across the full range, including transition points + for (var i = 0; i <= 10000; i++) + { + var originalUnary = i / 100f; + var color = strategy.FromUnary(originalUnary); + var resultUnary = strategy.ToUnary(color); + // A small tolerance is expected due to float precision and the nature of HSV conversions + // as well as the rounding logic in ToUnary. + Assert.That(resultUnary, Is.EqualTo(originalUnary).Within(1e-2f), // 1e-2f (0.01) is 1% of the unary range, which is reasonable for rounding and float error. + $"Round trip failed for unary {originalUnary}. Got {resultUnary} back."); + } + } + + /// + /// Checks that the default human skin tone is considered valid. + /// + [Test] + public void TestDefaultHumanSkinToneValid() + { + var strategy = new HumanTonedSkinColoration(); Assert.That(strategy.VerifySkinColor(strategy.ValidHumanSkinTone)); } + + /// + /// Checks that clamping random colors with a low-saturation, high-lightness HSL strategy produces valid colors. + /// This was the primary test case that originally revealed the precision bug. + /// + [Test] + public void TestTintedHuesValidHsl() + { + var random = new RobustRandom(); + var strategy = new ClampedHslColoration() + { + Saturation = (0.0f, 0.1f), + Lightness = (0.85f, 1.0f), + }; + + for (var i = 0; i <= 10000; i++) + { + var color = new Color(random.NextFloat(), random.NextFloat(), random.NextFloat()); + var skinColor = strategy.ClosestSkinColor(color); + LogDriftIfGreater(strategy, color, skinColor, TestContext.CurrentContext.Test.Name); // Monitor drift + + Assert.That(strategy.VerifySkinColor(skinColor), + $"Color {skinColor} (from input {color}) failed verification in {TestContext.CurrentContext.Test.Name} on iteration {i}"); + } + } + + /// + /// Checks that clamping random colors with a low-saturation, high-value HSV strategy produces valid colors. + /// + [Test] + public void TestTintedHuesValidHsv() + { + var random = new RobustRandom(); + var strategy = new ClampedHsvColoration() + { + Saturation = (0.0f, 0.1f), + Value = (0.85f, 1.0f), + }; + + for (var i = 0; i <= 10000; i++) + { + var color = new Color(random.NextFloat(), random.NextFloat(), random.NextFloat()); + var skinColor = strategy.ClosestSkinColor(color); + LogDriftIfGreater(strategy, color, skinColor, TestContext.CurrentContext.Test.Name); // Monitor drift + + Assert.That(strategy.VerifySkinColor(skinColor), + $"Color {skinColor} (from input {color}) failed verification in {TestContext.CurrentContext.Test.Name} on iteration {i}"); + } + } + + /// + /// Checks that clamping random colors with an HSL strategy that limits all three channels produces valid colors. + /// + [Test] + public void TestClampedHslWithAllChannels() + { + var random = new RobustRandom(); + var strategy = new ClampedHslColoration() + { + Hue = (0.1f, 0.3f), + Saturation = (0.2f, 0.8f), + Lightness = (0.3f, 0.7f), + }; + + for (var i = 0; i <= 10000; i++) + { + var color = new Color(random.NextFloat(), random.NextFloat(), random.NextFloat()); + var skinColor = strategy.ClosestSkinColor(color); + LogDriftIfGreater(strategy, color, skinColor, TestContext.CurrentContext.Test.Name); // Monitor drift + + Assert.That(strategy.VerifySkinColor(skinColor), + $"Color {skinColor} (from input {color}) failed verification in {TestContext.CurrentContext.Test.Name} on iteration {i}"); + } + } + + /// + /// Checks that clamping random colors with an HSV strategy that limits all three channels produces valid colors. + /// + [Test] + public void TestClampedHsvWithAllChannels() + { + var random = new RobustRandom(); + var strategy = new ClampedHsvColoration() + { + Hue = (0.1f, 0.3f), + Saturation = (0.2f, 0.8f), + Value = (0.3f, 0.7f), + }; + + for (var i = 0; i <= 10000; i++) + { + var color = new Color(random.NextFloat(), random.NextFloat(), random.NextFloat()); + var skinColor = strategy.ClosestSkinColor(color); + LogDriftIfGreater(strategy, color, skinColor, TestContext.CurrentContext.Test.Name); // Monitor drift + + Assert.That(strategy.VerifySkinColor(skinColor), + $"Color {skinColor} (from input {color}) failed verification in {TestContext.CurrentContext.Test.Name} on iteration {i}"); + } + } + + /// + /// Checks that clamping works correctly for HSL strategies where the hue range wraps around the 0-1 boundary. + /// + [Test] + public void TestClampedHslWithCircularHue() + { + var random = new RobustRandom(); + var strategy = new ClampedHslColoration() + { + Hue = (0.9f, 0.1f), // A range that wraps around 1.0 (e.g., reds) + Saturation = (0.5f, 1.0f), + Lightness = (0.5f, 1.0f), + }; + + for (var i = 0; i <= 10000; i++) + { + var color = new Color(random.NextFloat(), random.NextFloat(), random.NextFloat()); + var skinColor = strategy.ClosestSkinColor(color); + LogDriftIfGreater(strategy, color, skinColor, TestContext.CurrentContext.Test.Name); // Monitor drift + + Assert.That(strategy.VerifySkinColor(skinColor), + $"Color {skinColor} (from input {color}) with circular hue failed verification in {TestContext.CurrentContext.Test.Name} on iteration {i}"); + } + } + + /// + /// Checks that a color that is already valid is not modified. + /// + [Test] + public void TestClosestSkinColorReturnsValidColor() + { + var strategy = new ClampedHslColoration() + { + Saturation = (0.0f, 1.0f), + Lightness = (0.0f, 1.0f), + }; + + var validColor = Color.FromHsl(new Vector4(0.5f, 0.5f, 0.5f, 1.0f)); + var result = strategy.ClosestSkinColor(validColor); + + Assert.That(strategy.VerifySkinColor(result), Is.True); + } + + /// + /// Checks that a color outside the valid range is correctly clamped to a valid color. + /// + [Test] + public void TestClosestSkinColorClampsInvalidColor() + { + var strategy = new ClampedHslColoration() + { + Saturation = (0.0f, 0.1f), + Lightness = (0.85f, 1.0f), + }; + + // This color has high saturation and low lightness, should be clamped + var invalidColor = Color.FromHsl(new Vector4(0.5f, 0.9f, 0.2f, 1.0f)); + var result = strategy.ClosestSkinColor(invalidColor); + + Assert.That(strategy.VerifySkinColor(result), Is.True); + Assert.That(result, Is.Not.EqualTo(invalidColor)); + } + + /// + /// Helper method to calculate and log the maximum floating-point drift observed during clamping. + /// This is for monitoring the behavior of the clamping, not for causing test failures directly. + /// + private void LogDriftIfGreater(ISkinColorationStrategy strategy, Color original, Color clamped, string testName) + { + if (strategy is ClampedHslColoration hslStrategy) + { + var hsl = Color.ToHsl(clamped); + var (minSat, maxSat) = hslStrategy.Saturation ?? (0f, 1f); + var (minLight, maxLight) = hslStrategy.Lightness ?? (0f, 1f); + + // Re-calculate the drift from the original bounds *without* applying Epsilon + // This shows the pure floating-point error relative to the intended boundaries. + var satDrift = Math.Max(minSat - hsl.Y, hsl.Y - maxSat); + var lightDrift = Math.Max(minLight - hsl.Z, hsl.Z - maxLight); + var currentDrift = Math.Max(satDrift, lightDrift); + + if (currentDrift > _maxHslDrift) + { + TestContext.Out.WriteLine($"--- NEW MAX HSL DRIFT DETECTED in {testName} ---"); + TestContext.Out.WriteLine($"Max HSL Drift: {currentDrift:E} (previously {_maxHslDrift:E})"); + TestContext.Out.WriteLine($"Original RGB: {original}"); + TestContext.Out.WriteLine($"Clamped RGB: {clamped}"); + TestContext.Out.WriteLine($"Result HSL: H={hsl.X:F8}, S={hsl.Y:F8}, L={hsl.Z:F8}"); + TestContext.Out.WriteLine($"Bounds: S=({minSat:F8}, {maxSat:F8}), L=({minLight:F8}, {maxLight:F8})"); + _maxHslDrift = currentDrift; + } + } + else if (strategy is ClampedHsvColoration hsvStrategy) + { + var hsv = Color.ToHsv(clamped); + var (minSat, maxSat) = hsvStrategy.Saturation ?? (0f, 1f); + var (minValue, maxValue) = hsvStrategy.Value ?? (0f, 1f); + + var satDrift = Math.Max(minSat - hsv.Y, hsv.Y - maxSat); + var valueDrift = Math.Max(minValue - hsv.Z, hsv.Z - maxValue); + var currentDrift = Math.Max(satDrift, valueDrift); + + if (currentDrift > _maxHsvDrift) + { + TestContext.Out.WriteLine($"--- NEW MAX HSV DRIFT DETECTED in {testName} ---"); + TestContext.Out.WriteLine($"Max HSV Drift: {currentDrift:E} (previously {_maxHsvDrift:E})"); + TestContext.Out.WriteLine($"Original RGB: {original}"); + TestContext.Out.WriteLine($"Clamped RGB: {clamped}"); + TestContext.Out.WriteLine($"Result HSV: H={hsv.X:F8}, S={hsv.Y:F8}, V={hsv.Z:F8}"); + TestContext.Out.WriteLine($"Bounds: S=({minSat:F8}, {maxSat:F8}), V=({minValue:F8}, {maxValue:F8})"); + _maxHsvDrift = currentDrift; + } + } + } } From 63af4dd3b430f3b2595ca122c9f0567dc1d0f1dc Mon Sep 17 00:00:00 2001 From: TriviaSolari <154280615+TriviaSolari@users.noreply.github.com> Date: Sun, 8 Feb 2026 19:57:08 -0500 Subject: [PATCH 295/603] Fix RCD not being able to place hull tiles in space (#42740) Fall back on player's grid if RCD is clicked on empty space --- Content.Shared/RCD/Systems/RCDSystem.cs | 59 +++++++++++++++++-------- Resources/Prototypes/Tiles/plating.yml | 1 + 2 files changed, 41 insertions(+), 19 deletions(-) diff --git a/Content.Shared/RCD/Systems/RCDSystem.cs b/Content.Shared/RCD/Systems/RCDSystem.cs index 2f1f058a1b7..86977eea3bf 100644 --- a/Content.Shared/RCD/Systems/RCDSystem.cs +++ b/Content.Shared/RCD/Systems/RCDSystem.cs @@ -136,7 +136,13 @@ private void OnAfterInteract(EntityUid uid, RCDComponent component, AfterInterac if (!location.IsValid(EntityManager)) return; - var gridUid = _transform.GetGrid(location); + // Get grid corresponding to user's click location. + // If that doesn't exist, try using the one they're standing on. + // In the future we might want to also check adjacent spaces for grids, + // in case the user is floating in space for whatever reason. + var clickGridUid = _transform.GetGrid(location); + var userGridUid = _transform.GetGrid(user); + var gridUid = clickGridUid.HasValue ? clickGridUid : userGridUid; if (!TryComp(gridUid, out var mapGrid)) { @@ -208,9 +214,14 @@ private void OnAfterInteract(EntityUid uid, RCDComponent component, AfterInterac #endregion // Try to start the do after - var effect = Spawn(effectPrototype, location); - var ev = new RCDDoAfterEvent(GetNetCoordinates(location), component.ConstructionDirection, component.ProtoId, cost, GetNetEntity(effect)); - + var effect = Spawn(effectPrototype, _mapSystem.ToCenterCoordinates(tile, mapGrid)); + var ev = new RCDDoAfterEvent( + GetNetCoordinates(location), + GetNetEntity(gridUid.Value), + component.ConstructionDirection, + component.ProtoId, + cost, + GetNetEntity(effect)); var doAfterArgs = new DoAfterArgs(EntityManager, user, delay, ev, uid, target: args.Target, used: uid) { BreakOnDamage = true, @@ -240,9 +251,7 @@ private void OnDoAfterAttempt(EntityUid uid, RCDComponent component, DoAfterAtte } // Ensure the RCD operation is still valid - var location = GetCoordinates(args.Event.Location); - - var gridUid = _transform.GetGrid(location); + var gridUid = GetEntity(args.Event.TargetGridId); if (!TryComp(gridUid, out var mapGrid)) { @@ -250,11 +259,11 @@ private void OnDoAfterAttempt(EntityUid uid, RCDComponent component, DoAfterAtte return; } + var location = GetCoordinates(args.Event.Location); + var tile = _mapSystem.GetTileRef(gridUid, mapGrid, location); + var position = _mapSystem.TileIndicesFor(gridUid, mapGrid, location); - var tile = _mapSystem.GetTileRef(gridUid.Value, mapGrid, location); - var position = _mapSystem.TileIndicesFor(gridUid.Value, mapGrid, location); - - if (!IsRCDOperationStillValid(uid, component, gridUid.Value, mapGrid, tile, position, args.Event.Direction, args.Event.Target, args.Event.User)) + if (!IsRCDOperationStillValid(uid, component, gridUid, mapGrid, tile, position, args.Event.Direction, args.Event.Target, args.Event.User)) args.Cancel(); } @@ -273,22 +282,23 @@ private void OnDoAfter(EntityUid uid, RCDComponent component, RCDDoAfterEvent ar args.Handled = true; - var location = GetCoordinates(args.Location); - - var gridUid = _transform.GetGrid(location); + var gridUid = GetEntity(args.TargetGridId); if (!TryComp(gridUid, out var mapGrid)) return; - var tile = _mapSystem.GetTileRef(gridUid.Value, mapGrid, location); - var position = _mapSystem.TileIndicesFor(gridUid.Value, mapGrid, location); + var location = GetCoordinates(args.Location); + var tile = _mapSystem.GetTileRef(gridUid, mapGrid, location); + var position = _mapSystem.TileIndicesFor(gridUid, mapGrid, location); // Ensure the RCD operation is still valid - if (!IsRCDOperationStillValid(uid, component, gridUid.Value, mapGrid, tile, position, args.Direction, args.Target, args.User)) + if (!IsRCDOperationStillValid(uid, component, gridUid, mapGrid, tile, position, args.Direction, args.Target, args.User)) + { return; + } // Finalize the operation (this should handle prediction properly) - FinalizeRCDOperation(uid, component, gridUid.Value, mapGrid, tile, position, args.Direction, args.Target, args.User); + FinalizeRCDOperation(uid, component, gridUid, mapGrid, tile, position, args.Direction, args.Target, args.User); // Play audio and consume charges _audio.PlayPredicted(component.SuccessSound, uid, args.User); @@ -643,6 +653,9 @@ public sealed partial class RCDDoAfterEvent : DoAfterEvent [DataField(required: true)] public NetCoordinates Location { get; private set; } + [DataField(required: true)] + public NetEntity TargetGridId {get ; private set; } + [DataField] public Direction Direction { get; private set; } @@ -657,9 +670,17 @@ public sealed partial class RCDDoAfterEvent : DoAfterEvent private RCDDoAfterEvent() { } - public RCDDoAfterEvent(NetCoordinates location, Direction direction, ProtoId startingProtoId, int cost, NetEntity? effect = null) + public RCDDoAfterEvent( + NetCoordinates location, + NetEntity targetGridId, + Direction direction, + ProtoId + startingProtoId, + int cost, + NetEntity? effect = null) { Location = location; + TargetGridId = targetGridId; Direction = direction; StartingProtoId = startingProtoId; Cost = cost; diff --git a/Resources/Prototypes/Tiles/plating.yml b/Resources/Prototypes/Tiles/plating.yml index e6b9a251111..5f231625802 100644 --- a/Resources/Prototypes/Tiles/plating.yml +++ b/Resources/Prototypes/Tiles/plating.yml @@ -21,6 +21,7 @@ parent: Plating name: tiles-rcd-plating baseWhitelist: + - Space - TrainLattice - FloorPlanetDirt - FloorDesert From 545223af9bdbf411dae601e056c2544de3a4d1dd Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 9 Feb 2026 01:13:28 +0000 Subject: [PATCH 296/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index da573f5a97a..8f6efa71ee5 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,13 +1,4 @@ Entries: -- author: Nox38, BurgerMoth - changes: - - message: Added descriptions to .20 ammo boxes, magazines, and cartridges. - type: Add - - message: Changed the descriptions of the Lecter, Estoc DMR, and M90GL. - type: Tweak - id: 9000 - time: '2025-09-24T21:48:34.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/36496 - author: Keer-Sar changes: - message: Added two new markings for lizard snouts, "Lizard Visage (Round)" & "Lizard @@ -3999,3 +3990,11 @@ id: 9506 time: '2026-02-08T04:38:09.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42847 +- author: TriviaSolari + changes: + - message: RCDs can once again be used to construct hull tiles in space without + requiring lattices first + type: Fix + id: 9507 + time: '2026-02-09T01:12:17.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42740 From 676492e667978b1546e893217a1d2a67b86b1a95 Mon Sep 17 00:00:00 2001 From: InsoPL Date: Mon, 9 Feb 2026 02:06:46 +0100 Subject: [PATCH 297/603] Thermal vision overlay for admins (#42812) * revert of the revert * tests * changes * more fun * test * ccvvvar * works but bad * now its better * more fixes * more cleanup * cleaning * last fixes before move to glasses activ * x * glasses only * working * fix toolbox * cleanup * ThermalByte added * small fix * small optimalisations * float bux fix * comments add * more comments * more comments * last fix * revert cvar delete * wrong blue shades * cvar refactor * Update Content.Shared/Atmos/EntitySystems/SharedGasTileOverlaySystem.cs Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> * Update Content.Client/Atmos/Overlays/GasTileDangerousTemperatureOverlay.cs Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> * tweak to TryGetTemperature comment * Factors are now const * renames * Interface for ThermalByte * admin button * cleanup * sandoboxenabled --------- Co-authored-by: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> --- Content.Client/Sandbox/SandboxSystem.cs | 5 +++++ .../Systems/Sandbox/SandboxUIController.cs | 3 ++- .../Systems/Sandbox/Windows/SandboxWindow.xaml | 3 ++- Content.Server/Sandbox/SandboxSystem.cs | 17 ++++++++++++++++- Content.Shared/Sandbox/SharedSandboxSystem.cs | 5 ++++- .../Locale/en-US/sandbox/sandbox-manager.ftl | 1 + 6 files changed, 30 insertions(+), 4 deletions(-) diff --git a/Content.Client/Sandbox/SandboxSystem.cs b/Content.Client/Sandbox/SandboxSystem.cs index 99a84fa23ba..039f2fed69e 100644 --- a/Content.Client/Sandbox/SandboxSystem.cs +++ b/Content.Client/Sandbox/SandboxSystem.cs @@ -83,6 +83,11 @@ public void Suicide() RaiseNetworkEvent(new MsgSandboxSuicide()); } + public void ToggleThermalVision() + { + RaiseNetworkEvent(new MsgSandboxThermalVision()); + } + public bool Copy(ICommonSession? session, EntityCoordinates coords, EntityUid uid) { if (!SandboxAllowed) diff --git a/Content.Client/UserInterface/Systems/Sandbox/SandboxUIController.cs b/Content.Client/UserInterface/Systems/Sandbox/SandboxUIController.cs index 8315ad1ded0..425e5576c86 100644 --- a/Content.Client/UserInterface/Systems/Sandbox/SandboxUIController.cs +++ b/Content.Client/UserInterface/Systems/Sandbox/SandboxUIController.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Client.Administration.Managers; using Content.Client.Gameplay; using Content.Client.Sandbox; @@ -137,6 +137,7 @@ private void EnsureWindow() _window.ToggleSubfloorButton.OnPressed += _ => _sandbox.ToggleSubFloor(); _window.ShowMarkersButton.OnPressed += _ => _sandbox.ShowMarkers(); _window.ShowBbButton.OnPressed += _ => _sandbox.ShowBb(); + _window.ToggleThermalVisionButton.OnToggled += _ => _sandbox.ToggleThermalVision(); } private void CheckSandboxVisibility() diff --git a/Content.Client/UserInterface/Systems/Sandbox/Windows/SandboxWindow.xaml b/Content.Client/UserInterface/Systems/Sandbox/Windows/SandboxWindow.xaml index bec1d6b4d6f..5a7e940302f 100644 --- a/Content.Client/UserInterface/Systems/Sandbox/Windows/SandboxWindow.xaml +++ b/Content.Client/UserInterface/Systems/Sandbox/Windows/SandboxWindow.xaml @@ -1,4 +1,4 @@ - public HumanoidCharacterProfile? Profile; - private List _species = new(); - - private List<(string, RequirementsSelector)> _jobPriorities = new(); - - private readonly Dictionary _jobCategories; - private Direction _previewRotation = Direction.North; - private ColorSelectorSliders _rgbSkinColorSelector; - private bool _isDirty; - private static readonly ProtoId DefaultSpeciesGuidebook = "Species"; + public bool IsDirty + { + get => _isDirty; + set + { + if (_isDirty == value) + return; - public event Action>>? OnOpenGuidebook; + _isDirty = value; + UpdateSaveButton(); + } + } private ISawmill _sawmill; @@ -160,7 +130,7 @@ public HumanoidProfileEditor( ResetButton.OnPressed += args => { - SetProfile((HumanoidCharacterProfile?) _preferencesManager.Preferences?.SelectedCharacter, _preferencesManager.Preferences?.SelectedCharacterIndex); + SetProfile((HumanoidCharacterProfile?)_preferencesManager.Preferences?.SelectedCharacter, _preferencesManager.Preferences?.SelectedCharacterIndex); }; SaveButton.OnPressed += args => @@ -189,7 +159,7 @@ public HumanoidProfileEditor( SexButton.OnItemSelected += args => { SexButton.SelectId(args.Id); - SetSex((Sex) args.Id); + SetSex((Sex)args.Id); }; #endregion Sex @@ -208,15 +178,15 @@ public HumanoidProfileEditor( #region Gender - PronounsButton.AddItem(Loc.GetString("humanoid-profile-editor-pronouns-male-text"), (int) Gender.Male); - PronounsButton.AddItem(Loc.GetString("humanoid-profile-editor-pronouns-female-text"), (int) Gender.Female); - PronounsButton.AddItem(Loc.GetString("humanoid-profile-editor-pronouns-epicene-text"), (int) Gender.Epicene); - PronounsButton.AddItem(Loc.GetString("humanoid-profile-editor-pronouns-neuter-text"), (int) Gender.Neuter); + PronounsButton.AddItem(Loc.GetString("humanoid-profile-editor-pronouns-male-text"), (int)Gender.Male); + PronounsButton.AddItem(Loc.GetString("humanoid-profile-editor-pronouns-female-text"), (int)Gender.Female); + PronounsButton.AddItem(Loc.GetString("humanoid-profile-editor-pronouns-epicene-text"), (int)Gender.Epicene); + PronounsButton.AddItem(Loc.GetString("humanoid-profile-editor-pronouns-neuter-text"), (int)Gender.Neuter); PronounsButton.OnItemSelected += args => { PronounsButton.SelectId(args.Id); - SetGender((Gender) args.Id); + SetGender((Gender)args.Id); }; #endregion Gender @@ -250,13 +220,13 @@ public HumanoidProfileEditor( foreach (var value in Enum.GetValues()) { - SpawnPriorityButton.AddItem(Loc.GetString($"humanoid-profile-editor-preference-spawn-priority-{value.ToString().ToLower()}"), (int) value); + SpawnPriorityButton.AddItem(Loc.GetString($"humanoid-profile-editor-preference-spawn-priority-{value.ToString().ToLower()}"), (int)value); } SpawnPriorityButton.OnItemSelected += args => { SpawnPriorityButton.SelectId(args.Id); - SetSpawnPriority((SpawnPriorityPreference) args.Id); + SetSpawnPriority((SpawnPriorityPreference)args.Id); }; #endregion SpawnPriority @@ -283,16 +253,16 @@ public HumanoidProfileEditor( PreferenceUnavailableButton.AddItem( Loc.GetString("humanoid-profile-editor-preference-unavailable-stay-in-lobby-button"), - (int) PreferenceUnavailableMode.StayInLobby); + (int)PreferenceUnavailableMode.StayInLobby); PreferenceUnavailableButton.AddItem( Loc.GetString("humanoid-profile-editor-preference-unavailable-spawn-as-overflow-button", ("overflowJob", Loc.GetString(SharedGameTicker.FallbackOverflowJobName))), - (int) PreferenceUnavailableMode.SpawnAsOverflow); + (int)PreferenceUnavailableMode.SpawnAsOverflow); PreferenceUnavailableButton.OnItemSelected += args => { PreferenceUnavailableButton.SelectId(args.Id); - Profile = Profile?.WithPreferenceUnavailable((PreferenceUnavailableMode) args.Id); + Profile = Profile?.WithPreferenceUnavailable((PreferenceUnavailableMode)args.Id); SetDirty(); }; @@ -346,246 +316,6 @@ public HumanoidProfileEditor( IsDirty = false; } - /// - /// Refreshes the flavor text editor status. - /// - public void RefreshFlavorText() - { - if (_allowFlavorText) - { - if (_flavorText != null) - return; - - _flavorText = new FlavorText.FlavorText(); - TabContainer.AddChild(_flavorText); - TabContainer.SetTabTitle(TabContainer.ChildCount - 1, Loc.GetString("humanoid-profile-editor-flavortext-tab")); - _flavorTextEdit = _flavorText.CFlavorTextInput; - - _flavorText.OnFlavorTextChanged += OnFlavorTextChange; - } - else - { - if (_flavorText == null) - return; - - TabContainer.RemoveChild(_flavorText); - _flavorText.OnFlavorTextChanged -= OnFlavorTextChange; - _flavorText.Dispose(); - _flavorTextEdit?.Dispose(); - _flavorTextEdit = null; - _flavorText = null; - } - } - - /// - /// Refreshes traits selector - /// - public void RefreshTraits() - { - TraitsList.RemoveAllChildren(); - - var traits = _prototypeManager.EnumeratePrototypes().OrderBy(t => Loc.GetString(t.Name)).ToList(); - TabContainer.SetTabTitle(3, Loc.GetString("humanoid-profile-editor-traits-tab")); - - if (traits.Count < 1) - { - TraitsList.AddChild(new Label - { - Text = Loc.GetString("humanoid-profile-editor-no-traits"), - FontColorOverride = Color.Gray, - }); - return; - } - - // Setup model - Dictionary> traitGroups = new(); - List defaultTraits = new(); - traitGroups.Add(TraitCategoryPrototype.Default, defaultTraits); - - foreach (var trait in traits) - { - if (trait.Category == null) - { - defaultTraits.Add(trait.ID); - continue; - } - - if (!_prototypeManager.HasIndex(trait.Category)) - continue; - - var group = traitGroups.GetOrNew(trait.Category); - group.Add(trait.ID); - } - - // Create UI view from model - foreach (var (categoryId, categoryTraits) in traitGroups) - { - TraitCategoryPrototype? category = null; - - if (categoryId != TraitCategoryPrototype.Default) - { - category = _prototypeManager.Index(categoryId); - // Label - TraitsList.AddChild(new Label - { - Text = Loc.GetString(category.Name), - Margin = new Thickness(0, 10, 0, 0), - StyleClasses = { StyleClass.LabelHeading }, - }); - } - - List selectors = new(); - var selectionCount = 0; - - foreach (var traitProto in categoryTraits) - { - var trait = _prototypeManager.Index(traitProto); - var selector = new TraitPreferenceSelector(trait); - - selector.Preference = Profile?.TraitPreferences.Contains(trait.ID) == true; - if (selector.Preference) - selectionCount += trait.Cost; - - selector.PreferenceChanged += preference => - { - if (preference) - { - Profile = Profile?.WithTraitPreference(trait.ID, _prototypeManager); - } - else - { - Profile = Profile?.WithoutTraitPreference(trait.ID, _prototypeManager); - } - - SetDirty(); - RefreshTraits(); // If too many traits are selected, they will be reset to the real value. - }; - selectors.Add(selector); - } - - // Selection counter - if (category is { MaxTraitPoints: >= 0 }) - { - TraitsList.AddChild(new Label - { - Text = Loc.GetString("humanoid-profile-editor-trait-count-hint", ("current", selectionCount) ,("max", category.MaxTraitPoints)), - FontColorOverride = Color.Gray - }); - } - - foreach (var selector in selectors) - { - if (selector == null) - continue; - - if (category is { MaxTraitPoints: >= 0 } && - selector.Cost + selectionCount > category.MaxTraitPoints) - { - selector.Checkbox.Label.FontColorOverride = Color.Red; - } - - TraitsList.AddChild(selector); - } - } - } - - /// - /// Refreshes the species selector. - /// - public void RefreshSpecies() - { - SpeciesButton.Clear(); - _species.Clear(); - - _species.AddRange(_prototypeManager.EnumeratePrototypes().Where(o => o.RoundStart)); - _species.Sort((a, b) => string.Compare(a.Name, b.Name, StringComparison.CurrentCultureIgnoreCase)); - var speciesIds = _species.Select(o => o.ID).ToList(); - - for (var i = 0; i < _species.Count; i++) - { - var name = Loc.GetString(_species[i].Name); - SpeciesButton.AddItem(name, i); - - if (Profile?.Species.Equals(_species[i].ID) == true) - { - SpeciesButton.SelectId(i); - } - } - - // If our species isn't available then reset it to default. - if (Profile != null) - { - if (!speciesIds.Contains(Profile.Species)) - { - SetSpecies(HumanoidCharacterProfile.DefaultSpecies); - } - } - } - - public void RefreshAntags() - { - AntagList.RemoveAllChildren(); - var items = new[] - { - ("humanoid-profile-editor-antag-preference-yes-button", 0), - ("humanoid-profile-editor-antag-preference-no-button", 1) - }; - - foreach (var antag in _prototypeManager.EnumeratePrototypes().OrderBy(a => Loc.GetString(a.Name))) - { - if (!antag.SetPreference) - continue; - - var antagContainer = new BoxContainer() - { - Orientation = LayoutOrientation.Horizontal, - }; - - var selector = new RequirementsSelector() - { - Margin = new Thickness(3f, 3f, 3f, 0f), - }; - selector.OnOpenGuidebook += OnOpenGuidebook; - - var title = Loc.GetString(antag.Name); - var description = Loc.GetString(antag.Objective); - selector.Setup(items, title, 250, description, guides: antag.Guides); - selector.Select(Profile?.AntagPreferences.Contains(antag.ID) == true ? 0 : 1); - - if (!_requirements.IsAllowed( - antag, - (HumanoidCharacterProfile?)_preferencesManager.Preferences?.SelectedCharacter, - out var reason)) - { - selector.LockRequirements(reason); - Profile = Profile?.WithAntagPreference(antag.ID, false); - SetDirty(); - } - else - { - selector.UnlockRequirements(); - } - - selector.OnSelected += preference => - { - Profile = Profile?.WithAntagPreference(antag.ID, preference == 0); - SetDirty(); - }; - - antagContainer.AddChild(selector); - - antagContainer.AddChild(new Button() - { - Disabled = true, - Text = Loc.GetString("loadout-window"), - HorizontalAlignment = HAlignment.Right, - Margin = new Thickness(3f, 0f, 0f, 0f), - }); - - AntagList.AddChild(antagContainer); - } - } - private void SetDirty() { // If it equals default then reset the button. @@ -599,14 +329,6 @@ private void SetDirty() IsDirty = true; } - /// - /// Refresh all loadouts. - /// - public void RefreshLoadouts() - { - _loadoutWindow?.Dispose(); - } - /// /// Reloads the entire dummy entity for preview. /// @@ -630,7 +352,7 @@ private void ReloadPreview() public void ResetToDefault() { SetProfile( - (HumanoidCharacterProfile?) _preferencesManager.Preferences?.SelectedCharacter, + (HumanoidCharacterProfile?)_preferencesManager.Preferences?.SelectedCharacter, _preferencesManager.Preferences?.SelectedCharacterIndex); } @@ -665,7 +387,7 @@ public void SetProfile(HumanoidCharacterProfile? profile, int? slot) if (Profile != null) { - PreferenceUnavailableButton.SelectId((int) Profile.PreferenceUnavailable); + PreferenceUnavailableButton.SelectId((int)Profile.PreferenceUnavailable); } } @@ -683,336 +405,6 @@ private void ReloadProfilePreview() SetDirty(); } - private void OnSpeciesInfoButtonPressed(BaseButton.ButtonEventArgs args) - { - // TODO GUIDEBOOK - // make the species guide book a field on the species prototype. - // I.e., do what jobs/antags do. - - var guidebookController = UserInterfaceManager.GetUIController(); - var species = Profile?.Species ?? HumanoidCharacterProfile.DefaultSpecies; - var page = DefaultSpeciesGuidebook; - if (_prototypeManager.HasIndex(species)) - page = new ProtoId(species.Id); // Gross. See above todo comment. - - if (_prototypeManager.Resolve(DefaultSpeciesGuidebook, out var guideRoot)) - { - var dict = new Dictionary, GuideEntry>(); - dict.Add(DefaultSpeciesGuidebook, guideRoot); - //TODO: Don't close the guidebook if its already open, just go to the correct page - guidebookController.OpenGuidebook(dict, includeChildren:true, selected: page); - } - } - - /// - /// Refreshes all job selectors. - /// - public void RefreshJobs() - { - JobList.RemoveAllChildren(); - _jobCategories.Clear(); - _jobPriorities.Clear(); - var firstCategory = true; - - // Get all displayed departments - var departments = new List(); - foreach (var department in _prototypeManager.EnumeratePrototypes()) - { - if (department.EditorHidden) - continue; - - departments.Add(department); - } - - departments.Sort(DepartmentUIComparer.Instance); - - var items = new[] - { - ("humanoid-profile-editor-job-priority-never-button", (int) JobPriority.Never), - ("humanoid-profile-editor-job-priority-low-button", (int) JobPriority.Low), - ("humanoid-profile-editor-job-priority-medium-button", (int) JobPriority.Medium), - ("humanoid-profile-editor-job-priority-high-button", (int) JobPriority.High), - }; - - foreach (var department in departments) - { - var departmentName = Loc.GetString(department.Name); - - if (!_jobCategories.TryGetValue(department.ID, out var category)) - { - category = new BoxContainer - { - Orientation = LayoutOrientation.Vertical, - Name = department.ID, - ToolTip = Loc.GetString("humanoid-profile-editor-jobs-amount-in-department-tooltip", - ("departmentName", departmentName)) - }; - - if (firstCategory) - { - firstCategory = false; - } - else - { - category.AddChild(new Control - { - MinSize = new Vector2(0, 23), - }); - } - - category.AddChild(new PanelContainer - { - PanelOverride = new StyleBoxFlat {BackgroundColor = Color.FromHex("#464966")}, - Children = - { - new Label - { - Text = Loc.GetString("humanoid-profile-editor-department-jobs-label", - ("departmentName", departmentName)), - Margin = new Thickness(5f, 0, 0, 0) - } - } - }); - - _jobCategories[department.ID] = category; - JobList.AddChild(category); - } - - var jobs = department.Roles.Select(jobId => _prototypeManager.Index(jobId)) - .Where(job => job.SetPreference) - .ToArray(); - - Array.Sort(jobs, JobUIComparer.Instance); - - foreach (var job in jobs) - { - var jobContainer = new BoxContainer() - { - Orientation = LayoutOrientation.Horizontal, - }; - - var selector = new RequirementsSelector() - { - Margin = new Thickness(3f, 3f, 3f, 0f), - }; - selector.OnOpenGuidebook += OnOpenGuidebook; - - var icon = new TextureRect - { - TextureScale = new Vector2(2, 2), - VerticalAlignment = VAlignment.Center - }; - var jobIcon = _prototypeManager.Index(job.Icon); - icon.Texture = _sprite.Frame0(jobIcon.Icon); - selector.Setup(items, job.LocalizedName, 200, job.LocalizedDescription, icon, job.Guides); - - if (!_requirements.IsAllowed(job, (HumanoidCharacterProfile?)_preferencesManager.Preferences?.SelectedCharacter, out var reason)) - { - selector.LockRequirements(reason); - } - else - { - selector.UnlockRequirements(); - } - - selector.OnSelected += selectedPrio => - { - var selectedJobPrio = (JobPriority) selectedPrio; - Profile = Profile?.WithJobPriority(job.ID, selectedJobPrio); - - foreach (var (jobId, other) in _jobPriorities) - { - // Sync other selectors with the same job in case of multiple department jobs - if (jobId == job.ID) - { - other.Select(selectedPrio); - continue; - } - - if (selectedJobPrio != JobPriority.High || (JobPriority) other.Selected != JobPriority.High) - continue; - - // Lower any other high priorities to medium. - other.Select((int)JobPriority.Medium); - Profile = Profile?.WithJobPriority(jobId, JobPriority.Medium); - } - - // TODO: Only reload on high change (either to or from). - ReloadPreview(); - - UpdateJobPriorities(); - SetDirty(); - }; - - var loadoutWindowBtn = new Button() - { - Text = Loc.GetString("loadout-window"), - HorizontalAlignment = HAlignment.Right, - VerticalAlignment = VAlignment.Center, - Margin = new Thickness(3f, 3f, 0f, 0f), - }; - - var collection = IoCManager.Instance!; - var protoManager = collection.Resolve(); - - // If no loadout found then disabled button - if (!protoManager.TryIndex(LoadoutSystem.GetJobPrototype(job.ID), out var roleLoadoutProto)) - { - loadoutWindowBtn.Disabled = true; - } - // else - else - { - loadoutWindowBtn.OnPressed += args => - { - RoleLoadout? loadout = null; - - // Clone so we don't modify the underlying loadout. - Profile?.Loadouts.TryGetValue(LoadoutSystem.GetJobPrototype(job.ID), out loadout); - loadout = loadout?.Clone(); - - if (loadout == null) - { - loadout = new RoleLoadout(roleLoadoutProto.ID); - loadout.SetDefault(Profile, _playerManager.LocalSession, _prototypeManager); - } - - OpenLoadout(job, loadout, roleLoadoutProto); - }; - } - - _jobPriorities.Add((job.ID, selector)); - jobContainer.AddChild(selector); - jobContainer.AddChild(loadoutWindowBtn); - category.AddChild(jobContainer); - } - } - - UpdateJobPriorities(); - } - - private void OpenLoadout(JobPrototype? jobProto, RoleLoadout roleLoadout, RoleLoadoutPrototype roleLoadoutProto) - { - _loadoutWindow?.Dispose(); - _loadoutWindow = null; - var collection = IoCManager.Instance; - - if (collection == null || _playerManager.LocalSession == null || Profile == null) - return; - - JobOverride = jobProto; - var session = _playerManager.LocalSession; - - _loadoutWindow = new LoadoutWindow(Profile, roleLoadout, roleLoadoutProto, _playerManager.LocalSession, collection) - { - Title = Loc.GetString("loadout-window-title-loadout", ("job", $"{jobProto?.LocalizedName}")), - }; - - // Refresh the buttons etc. - _loadoutWindow.RefreshLoadouts(roleLoadout, session, collection); - _loadoutWindow.OpenCenteredLeft(); - - _loadoutWindow.OnNameChanged += name => - { - roleLoadout.EntityName = name; - Profile = Profile.WithLoadout(roleLoadout); - SetDirty(); - }; - - _loadoutWindow.OnLoadoutPressed += (loadoutGroup, loadoutProto) => - { - roleLoadout.AddLoadout(loadoutGroup, loadoutProto, _prototypeManager); - _loadoutWindow.RefreshLoadouts(roleLoadout, session, collection); - Profile = Profile?.WithLoadout(roleLoadout); - ReloadPreview(); - }; - - _loadoutWindow.OnLoadoutUnpressed += (loadoutGroup, loadoutProto) => - { - roleLoadout.RemoveLoadout(loadoutGroup, loadoutProto, _prototypeManager); - _loadoutWindow.RefreshLoadouts(roleLoadout, session, collection); - Profile = Profile?.WithLoadout(roleLoadout); - ReloadPreview(); - }; - - JobOverride = jobProto; - ReloadPreview(); - - _loadoutWindow.OnClose += () => - { - JobOverride = null; - ReloadPreview(); - }; - - if (Profile is null) - return; - - UpdateJobPriorities(); - } - - private void OnFlavorTextChange(string content) - { - if (Profile is null) - return; - - Profile = Profile.WithFlavorText(content); - SetDirty(); - } - - private void OnMarkingChange() - { - if (Profile is null) - return; - - Profile = Profile.WithCharacterAppearance(Profile.Appearance.WithMarkings(_markingsModel.Markings)); - ReloadProfilePreview(); - SetDirty(); - } - - private void OnSkinColorOnValueChanged() - { - if (Profile is null) return; - - var skin = _prototypeManager.Index(Profile.Species).SkinColoration; - var strategy = _prototypeManager.Index(skin).Strategy; - - switch (strategy.InputType) - { - case SkinColorationStrategyInput.Unary: - { - if (!Skin.Visible) - { - Skin.Visible = true; - RgbSkinColorContainer.Visible = false; - } - - var color = strategy.FromUnary(Skin.Value); - - _markingsModel.SetOrganSkinColor(color); - Profile = Profile.WithCharacterAppearance(Profile.Appearance.WithSkinColor(color)); - - break; - } - case SkinColorationStrategyInput.Color: - { - if (!RgbSkinColorContainer.Visible) - { - Skin.Visible = false; - RgbSkinColorContainer.Visible = true; - } - - var color = strategy.ClosestSkinColor(_rgbSkinColorSelector.Color); - - _markingsModel.SetOrganSkinColor(color); - Profile = Profile.WithCharacterAppearance(Profile.Appearance.WithSkinColor(color)); - - break; - } - } - - ReloadProfilePreview(); - } - protected override void Dispose(bool disposing) { base.Dispose(disposing); @@ -1029,248 +421,6 @@ protected override void EnteredTree() ReloadPreview(); } - private void SetAge(int newAge) - { - Profile = Profile?.WithAge(newAge); - ReloadPreview(); - } - - private void SetSex(Sex newSex) - { - Profile = Profile?.WithSex(newSex); - // for convenience, default to most common gender when new sex is selected - switch (newSex) - { - case Sex.Male: - Profile = Profile?.WithGender(Gender.Male); - break; - case Sex.Female: - Profile = Profile?.WithGender(Gender.Female); - break; - default: - Profile = Profile?.WithGender(Gender.Epicene); - break; - } - - UpdateGenderControls(); - _markingsModel.SetOrganSexes(newSex); - ReloadPreview(); - } - - private void SetGender(Gender newGender) - { - Profile = Profile?.WithGender(newGender); - ReloadPreview(); - } - - private void SetSpecies(string newSpecies) - { - Profile = Profile?.WithSpecies(newSpecies); - OnSkinColorOnValueChanged(); // Species may have special color prefs, make sure to update it. - _markingsModel.OrganData = _markingManager.GetMarkingData(newSpecies); - _markingsModel.ValidateMarkings(); - // In case there's job restrictions for the species - RefreshJobs(); - // In case there's species restrictions for loadouts - RefreshLoadouts(); - UpdateSexControls(); // update sex for new species - UpdateSpeciesGuidebookIcon(); - ReloadPreview(); - } - - private void SetName(string newName) - { - Profile = Profile?.WithName(newName); - SetDirty(); - - if (!IsDirty) - return; - - SpriteView.SetName(newName); - } - - private void SetSpawnPriority(SpawnPriorityPreference newSpawnPriority) - { - Profile = Profile?.WithSpawnPriorityPreference(newSpawnPriority); - SetDirty(); - } - - public bool IsDirty - { - get => _isDirty; - set - { - if (_isDirty == value) - return; - - _isDirty = value; - UpdateSaveButton(); - } - } - - private void UpdateNameEdit() - { - NameEdit.Text = Profile?.Name ?? ""; - } - - private void UpdateFlavorTextEdit() - { - if (_flavorTextEdit != null) - { - _flavorTextEdit.TextRope = new Rope.Leaf(Profile?.FlavorText ?? ""); - } - } - - private void UpdateAgeEdit() - { - AgeEdit.Text = Profile?.Age.ToString() ?? ""; - } - - /// - /// Updates selected job priorities to the profile's. - /// - private void UpdateJobPriorities() - { - foreach (var (jobId, prioritySelector) in _jobPriorities) - { - var priority = Profile?.JobPriorities.GetValueOrDefault(jobId, JobPriority.Never) ?? JobPriority.Never; - prioritySelector.Select((int) priority); - } - } - - private void UpdateSexControls() - { - if (Profile == null) - return; - - SexButton.Clear(); - - var sexes = new List(); - - // add species sex options, default to just none if we are in bizzaro world and have no species - if (_prototypeManager.Resolve(Profile.Species, out var speciesProto)) - { - foreach (var sex in speciesProto.Sexes) - { - sexes.Add(sex); - } - } - else - { - sexes.Add(Sex.Unsexed); - } - - // add button for each sex - foreach (var sex in sexes) - { - SexButton.AddItem(Loc.GetString($"humanoid-profile-editor-sex-{sex.ToString().ToLower()}-text"), (int) sex); - } - - if (sexes.Contains(Profile.Sex)) - SexButton.SelectId((int) Profile.Sex); - else - SexButton.SelectId((int) sexes[0]); - } - - private void UpdateSkinColor() - { - if (Profile == null) - return; - - var skin = _prototypeManager.Index(Profile.Species).SkinColoration; - var strategy = _prototypeManager.Index(skin).Strategy; - - switch (strategy.InputType) - { - case SkinColorationStrategyInput.Unary: - { - if (!Skin.Visible) - { - Skin.Visible = true; - RgbSkinColorContainer.Visible = false; - } - - Skin.Value = strategy.ToUnary(Profile.Appearance.SkinColor); - - break; - } - case SkinColorationStrategyInput.Color: - { - if (!RgbSkinColorContainer.Visible) - { - Skin.Visible = false; - RgbSkinColorContainer.Visible = true; - } - - _rgbSkinColorSelector.Color = strategy.ClosestSkinColor(Profile.Appearance.SkinColor); - - break; - } - } - } - - public void UpdateSpeciesGuidebookIcon() - { - SpeciesInfoButton.StyleClasses.Clear(); - - var species = Profile?.Species; - if (species is null) - return; - - if (!_prototypeManager.Resolve(species, out var speciesProto)) - return; - - // Don't display the info button if no guide entry is found - if (!_prototypeManager.HasIndex(species)) - return; - - const string style = "SpeciesInfoDefault"; - SpeciesInfoButton.StyleIdentifier = style; - } - - private void UpdateMarkings() - { - if (Profile == null) - { - return; - } - - _markingsModel.OrganData = _markingManager.GetMarkingData(Profile.Species); - _markingsModel.OrganProfileData = _markingManager.GetProfileData(Profile.Species, Profile.Sex, Profile.Appearance.SkinColor, Profile.Appearance.EyeColor); - _markingsModel.Markings = Profile.Appearance.Markings; - } - - private void UpdateGenderControls() - { - if (Profile == null) - { - return; - } - - PronounsButton.SelectId((int) Profile.Gender); - } - - private void UpdateSpawnPriorityControls() - { - if (Profile == null) - { - return; - } - - SpawnPriorityButton.SelectId((int) Profile.SpawnPriority); - } - - private void UpdateEyePickers() - { - if (Profile == null) - { - return; - } - - _markingsModel.SetOrganEyeColor(Profile.Appearance.EyeColor); - EyeColorPicker.SetData(Profile.Appearance.EyeColor); - } - private void UpdateSaveButton() { SaveButton.Disabled = Profile is null || !IsDirty; @@ -1279,112 +429,7 @@ private void UpdateSaveButton() private void SetPreviewRotation(Direction direction) { - SpriteView.OverrideDirection = (Direction) ((int) direction % 4 * 2); - } - - private void RandomizeEverything() - { - Profile = HumanoidCharacterProfile.Random(); - SetProfile(Profile, CharacterSlot); - SetDirty(); - } - - private void RandomizeName() - { - if (Profile == null) return; - var name = HumanoidCharacterProfile.GetName(Profile.Species, Profile.Gender); - SetName(name); - UpdateNameEdit(); - } - - private async void ExportImage() - { - if (_imaging) - return; - - var dir = SpriteView.OverrideDirection ?? Direction.South; - - // I tried disabling the button but it looks sorta goofy as it only takes a frame or two to save - _imaging = true; - await _entManager.System().Export(SpriteView.PreviewDummy, dir, includeId: false); - _imaging = false; - } - - private async void ImportProfile() - { - if (_exporting || CharacterSlot == null || Profile == null) - return; - - StartExport(); - await using var file = await _dialogManager.OpenFile(new FileDialogFilters(new FileDialogFilters.Group("yml")), FileAccess.Read); - - if (file == null) - { - EndExport(); - return; - } - - try - { - var profile = HumanoidCharacterProfile.FromStream(file, _playerManager.LocalSession!); - var oldProfile = Profile; - SetProfile(profile, CharacterSlot); - - IsDirty = !profile.MemberwiseEquals(oldProfile); - } - catch (Exception exc) - { - _sawmill.Error($"Error when importing profile\n{exc.StackTrace}"); - } - finally - { - EndExport(); - } - } - - private async void ExportProfile() - { - if (Profile == null || _exporting) - return; - - StartExport(); - var file = await _dialogManager.SaveFile(new FileDialogFilters(new FileDialogFilters.Group("yml"))); - - if (file == null) - { - EndExport(); - return; - } - - try - { - var dataNode = Profile.ToDataNode(); - await using var writer = new StreamWriter(file.Value.fileStream); - dataNode.Write(writer); - } - catch (Exception exc) - { - _sawmill.Error($"Error when exporting profile\n{exc.StackTrace}"); - } - finally - { - EndExport(); - await file.Value.fileStream.DisposeAsync(); - } - } - - private void StartExport() - { - _exporting = true; - ImportButton.Disabled = true; - ExportButton.Disabled = true; - } - - private void EndExport() - { - _exporting = false; - ImportButton.Disabled = false; - ExportButton.Disabled = false; + SpriteView.OverrideDirection = (Direction)((int)direction % 4 * 2); } } } From 94070d2962c21dce4569af25310fcb777a03317d Mon Sep 17 00:00:00 2001 From: TytosB <54259736+TytosB@users.noreply.github.com> Date: Mon, 9 Feb 2026 14:18:54 -0600 Subject: [PATCH 308/603] serpentcrest hotfix (#42863) hotfix --- Resources/Maps/serpentcrest.yml | 3843 +++++++++++--------- Resources/Prototypes/Maps/serpentcrest.yml | 2 +- 2 files changed, 2155 insertions(+), 1690 deletions(-) diff --git a/Resources/Maps/serpentcrest.yml b/Resources/Maps/serpentcrest.yml index 362749dcb12..1614f21f96e 100644 --- a/Resources/Maps/serpentcrest.yml +++ b/Resources/Maps/serpentcrest.yml @@ -4,8 +4,8 @@ meta: engineVersion: 272.0.0 forkId: "" forkVersion: "" - time: 02/05/2026 07:21:52 - entityCount: 28838 + time: 02/09/2026 19:34:11 + entityCount: 28847 maps: - 1 grids: @@ -113,7 +113,7 @@ entities: version: 7 0,-2: ind: 0,-2 - tiles: BAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAABAADAAAAAAAAAgAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAGAAMAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAGAAMAAAAAAAADAAAAAAUAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAABAAMAAAAACAADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAEAAMAAAAAAAADAAAAAAkAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAAFAAMAAAAAAAADAAAAAAoAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAMAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAACAAMAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAACQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAADAAAAAAUAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAYAAwAAAAALAAMAAAAACwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAABAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAYAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAgAAwAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAFAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAABwADAAAAAAwABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAABwAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAA== + tiles: BAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAABAADAAAAAAAAAgAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAGAAMAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAGAAMAAAAAAAADAAAAAAUAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAABAAMAAAAACAADAAAAAAAAAwAAAAAAAAMAAAAAAgADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAEAAMAAAAAAAADAAAAAAkAAwAAAAAAAAMAAAAAAAADAAAAAAIAAwAAAAAFAAMAAAAAAAADAAAAAAoAAwAAAAAAAAMAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAMAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAACAAMAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAACQADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAJAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAAAAAAAAAADAAAAAAUAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAYAAwAAAAALAAMAAAAACwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAwADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAABAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAYAAwAAAAAAAAMAAAAAAAADAAAAAAAAAAAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAAAAwAAAAAAAAMAAAAAAAADAAAAAAgAAwAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAAwAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAFAAMAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAMAAAAABwADAAAAAAwABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAADAAAAAAAAAwAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAwAAAAAAAAMAAAAABwAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAA== version: 7 -2,0: ind: -2,0 @@ -193,7 +193,7 @@ entities: version: 7 1,2: ind: 1,2 - tiles: AwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAADABEAAAAAAwARAAAAAAAAEQAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAwARAAAAAAAAEQAAAAAAABEAAAAAAwACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAEAEQAAAAADABEAAAAAAwARAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAACABEAAAAAAAARAAAAAAMAEQAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAABEAAAAAAAARAAAAAAMAEQAAAAADABEAAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAIAEQAAAAABABEAAAAAAgARAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAEQAAAAABABEAAAAAAgARAAAAAAEAEQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAACABEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAARAAAAAAAAEQAAAAABABEAAAAAAgARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAADAAAAAAAAAAAAAAAAAAAAEQAAAAADABEAAAAAAQARAAAAAAMAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAMADQAAAAAAAA0AAAAAAAASAAAAAAAAEgAAAAADAA0AAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAwANAAAAAAEADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAgANAAAAAAIADQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAABAA0AAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAQASAAAAAAEAEgAAAAACAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAACABIAAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAAAIAAAAAAEACAAAAAACAAgAAAAAAwAIAAAAAAAACAAAAAABAAgAAAAAAwAIAAAAAAEACAAAAAADAAAAAAAAAAAIAAAAAAIACAAAAAABAA== + tiles: AwAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAADABEAAAAAAwARAAAAAAAAEQAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAwARAAAAAAAAEQAAAAAAABEAAAAAAwACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAEAEQAAAAADABEAAAAAAwARAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAACABEAAAAAAAARAAAAAAMAEQAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAABEAAAAAAAARAAAAAAMAEQAAAAADABEAAAAAAQACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAIAEQAAAAABABEAAAAAAgARAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAEQAAAAABABEAAAAAAgARAAAAAAEAEQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAARAAAAAAAAEQAAAAACABEAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAARAAAAAAAAEQAAAAABABEAAAAAAgARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEQAAAAADAAAAAAAAAAAAAAAAAAAAEQAAAAADABEAAAAAAQARAAAAAAMAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAMADQAAAAABAA0AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAIADQAAAAADAA0AAAAAAwANAAAAAAMADQAAAAAAAA0AAAAAAAASAAAAAAAAEgAAAAADAA0AAAAAAAANAAAAAAAADQAAAAABAA0AAAAAAQANAAAAAAEADQAAAAABAA0AAAAAAgANAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAMADQAAAAABAA0AAAAAAwANAAAAAAEADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAEADQAAAAADAA0AAAAAAQANAAAAAAEADQAAAAADAA0AAAAAAgANAAAAAAIADQAAAAACAA0AAAAAAwANAAAAAAAADQAAAAABAA0AAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAQANAAAAAAAADQAAAAABAA0AAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAwANAAAAAAMADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAABAA0AAAAAAQASAAAAAAEAEgAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAACABIAAAAAAwANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAwAIAAAAAAAACAAAAAABAAgAAAAAAwAIAAAAAAEACAAAAAADAAAAAAAAAAAIAAAAAAIACAAAAAABAA== version: 7 0,2: ind: 0,2 @@ -213,15 +213,15 @@ entities: version: 7 -1,3: ind: -1,3 - tiles: DQAAAAADABIAAAAAAgANAAAAAAAAEgAAAAADAA0AAAAAAQANAAAAAAAADQAAAAAAAAAAAAAAAAAIAAAAAAMACAAAAAAAAAgAAAAAAwAIAAAAAAAACAAAAAADAAgAAAAAAwAIAAAAAAEACAAAAAAAAA0AAAAAAAASAAAAAAEADQAAAAADABIAAAAAAwANAAAAAAMADQAAAAACAA0AAAAAAAAAAAAAAAAACAAAAAADAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAEAAAAAAAAAAAgAAAAAAAAIAAAAAAIACAAAAAACAAgAAAAAAAAIAAAAAAAACAAAAAACAAgAAAAAAwAIAAAAAAMADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAEADQAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAIACAAAAAAAAAgAAAAAAAAIAAAAAAIACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAQAAAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAMACAAAAAAAAAgAAAAAAgAIAAAAAAMACAAAAAAAAAgAAAAAAQACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAIAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAACAAgAAAAAAgAIAAAAAAIACAAAAAADAAgAAAAAAQAIAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAACAAgAAAAAAgAIAAAAAAAACAAAAAAAAAgAAAAAAgAIAAAAAAEACAAAAAACAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACAAgAAAAAAAAIAAAAAAEACAAAAAABAAgAAAAAAAAIAAAAAAIACAAAAAAAAAgAAAAAAgACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAACAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAACAAYAAAAAAAAGAAAAAAIABwAAAAAAAAYAAAAAAAAGAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAABAAYAAAAAAgAGAAAAAAMABgAAAAABAAcAAAAAAAAGAAAAAAIABgAAAAACAA== + tiles: DQAAAAADABIAAAAAAgANAAAAAAAAEgAAAAADAA0AAAAAAQANAAAAAAAADQAAAAAAAAAAAAAAAAAIAAAAAAMACAAAAAAAAAgAAAAAAwAIAAAAAAAACAAAAAADAAgAAAAAAwAIAAAAAAEACAAAAAAAAA0AAAAAAAASAAAAAAEADQAAAAADABIAAAAAAwANAAAAAAMADQAAAAACAA0AAAAAAAAAAAAAAAAACAAAAAADAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAwANAAAAAAAADQAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAACAA0AAAAAAAANAAAAAAEAAAAAAAAAAAgAAAAAAAAIAAAAAAIACAAAAAACAAgAAAAAAAAIAAAAAAAACAAAAAACAAgAAAAAAwAIAAAAAAMADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAADAA0AAAAAAAANAAAAAAEADQAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAIACAAAAAAAAAgAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAADAA0AAAAAAQAAAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAMACAAAAAAAAAgAAAAAAgAIAAAAAAMADQAAAAAAAA0AAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAwANAAAAAAIAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAACAAgAAAAAAgAIAAAAAAIACAAAAAADAA0AAAAAAAANAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAACAAgAAAAAAgAIAAAAAAAACAAAAAAAAAgAAAAAAgANAAAAAAAADQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAACAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAACAAYAAAAAAAAGAAAAAAIABwAAAAAAAAYAAAAAAAAGAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAABAAYAAAAAAgAGAAAAAAMABgAAAAABAAcAAAAAAAAGAAAAAAIABgAAAAACAA== version: 7 0,3: ind: 0,3 - tiles: AAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAACAA0AAAAAAwANAAAAAAIAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACABcAAAAAAAANAAAAAAMADQAAAAABAAAAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAwAXAAAAAAAADQAAAAADAA0AAAAAAQAAAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAAAFwAAAAAAAA0AAAAAAQANAAAAAAIAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADABcAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAwAXAAAAAAAADQAAAAACAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAAGAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABgAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: AAAAAAAAAA0AAAAAAgANAAAAAAIADQAAAAACAA0AAAAAAwANAAAAAAIAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAACABcAAAAAAAANAAAAAAMADQAAAAABAAAAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAABAA0AAAAAAwAXAAAAAAAADQAAAAADAA0AAAAAAQAAAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAAAFwAAAAAAAA0AAAAAAQANAAAAAAIAAAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAAcAAAAAAAAHAAAAAAAABwAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADABcAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAcAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAADQAAAAACAA0AAAAAAwAXAAAAAAAADQAAAAACAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAEADQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAAGAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAABgAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 1,3: ind: 1,3 - tiles: EgAAAAAAABIAAAAAAAAAAAAAAAAADQAAAAAAAA0AAAAAAQAIAAAAAAMACAAAAAADAAgAAAAAAgAIAAAAAAMACAAAAAABAAgAAAAAAgAIAAAAAAMACAAAAAABAAAAAAAAAAAIAAAAAAAACAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgANAAAAAAIACAAAAAACAAgAAAAAAQAIAAAAAAEACAAAAAABAAgAAAAAAwAIAAAAAAMACAAAAAABAAgAAAAAAgAIAAAAAAEACAAAAAABAAgAAAAAAwACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAAAAAgAAAAAAwAIAAAAAAEACAAAAAACAAgAAAAAAQAIAAAAAAAACAAAAAADAAgAAAAAAgAIAAAAAAIAAAAAAAAAAAgAAAAAAgAIAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== + tiles: EgAAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAgAIAAAAAAMACAAAAAABAAgAAAAAAgAIAAAAAAMACAAAAAABAAAAAAAAAAAIAAAAAAAACAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAACAAAAAABAAgAAAAAAwAIAAAAAAMACAAAAAABAAgAAAAAAgAIAAAAAAEACAAAAAABAAgAAAAAAwACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAIAAAAAAAAAAAAAAAAAAAANAAAAAAAADQAAAAAAAAgAAAAAAQAIAAAAAAAACAAAAAADAAgAAAAAAgAIAAAAAAIAAAAAAAAAAAgAAAAAAgAIAAAAAAMAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAABAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAA== version: 7 -3,1: ind: -3,1 @@ -309,11 +309,11 @@ entities: version: 7 -3,-3: ind: -3,-3 - tiles: AAAAAAAAAA0AAAAAAAANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAQAPAAAAAAAADwAAAAADAA8AAAAAAwAIAAAAAAIACAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAMACAAAAAAAAAgAAAAAAgAAAAAAAAAAAAAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAIADwAAAAAAAAgAAAAAAQAIAAAAAAMAGQAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAQAIAAAAAAEACAAAAAACAAgAAAAAAQAIAAAAAAIACAAAAAACABkAAAAAAwAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAADAAgAAAAAAgAIAAAAAAAACAAAAAADAAgAAAAAAAAIAAAAAAEACAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAgAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAIAAAAAAAAA0AAAAAAwASAAAAAAIADQAAAAABAA0AAAAAAgANAAAAAAEAGgAAAAABABoAAAAAAAAaAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMAEgAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAMADQAAAAABAAgAAAAAAQAIAAAAAAAACAAAAAABAAgAAAAAAQAAAAAAAAAADQAAAAAAABIAAAAAAQANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAADAAgAAAAAAgAIAAAAAAIAAAAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAADAAAAAAAAAAAnAAAAAAAAJwAAAAAAACcAAAAAAAAnAAAAAAAAAAAAAAAAACYAAAAAAAAmAAAAAAAACAAAAAABAAgAAAAAAwAIAAAAAAEACAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAgAAAAAAAAAAJwAAAAAAACcAAAAAAAAnAAAAAAAAJwAAAAAAAAAAAAAAAAAmAAAAAAAAJgAAAAAAAA== + tiles: AAAAAAAAAA0AAAAAAAANAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAQAPAAAAAAAADwAAAAADAA8AAAAAAwAIAAAAAAIACAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAMACAAAAAAAAAgAAAAAAgAAAAAAAAAAAAAAAAAAAA0AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAA8AAAAAAAAPAAAAAAIADwAAAAAAAAgAAAAAAQAIAAAAAAMAGQAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAQAIAAAAAAEACAAAAAACAAgAAAAAAQAIAAAAAAIACAAAAAACABkAAAAAAwAAAAAAAAAAAAAAAAAAACQAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAADAAgAAAAAAgAIAAAAAAAACAAAAAADAAgAAAAAAAAIAAAAAAEACAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAADQAAAAADAA0AAAAAAwANAAAAAAIADQAAAAADAA0AAAAAAAANAAAAAAMADQAAAAADAA0AAAAAAgANAAAAAAEADQAAAAAAAA0AAAAAAgAkAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAIAAAAAAAAA0AAAAAAwASAAAAAAIADQAAAAABAA0AAAAAAgANAAAAAAEAGgAAAAABABoAAAAAAAAaAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAIAJAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAMAEgAAAAAAAA0AAAAAAQANAAAAAAEADQAAAAAAAA0AAAAAAAANAAAAAAAADQAAAAACAA0AAAAAAwANAAAAAAMADQAAAAABAAgAAAAAAQAIAAAAAAAACAAAAAABAAgAAAAAAQAAAAAAAAAADQAAAAAAABIAAAAAAQANAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAADAAgAAAAAAgAIAAAAAAIAAAAAAAAAAA0AAAAAAgANAAAAAAMADQAAAAADAAAAAAAAAAAnAAAAAAAAJwAAAAAAACcAAAAAAAAnAAAAAAAAAAAAAAAAACYAAAAAAAAmAAAAAAAACAAAAAABAAgAAAAAAwAIAAAAAAEACAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAA0AAAAAAgAAAAAAAAAAJwAAAAAAACcAAAAAAAAnAAAAAAAAJwAAAAAAAAAAAAAAAAAmAAAAAAAAJgAAAAAAAA== version: 7 -4,-3: ind: -4,-3 - tiles: AgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABABkAAAAABAAIAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAAAgAAAAAAQAAAAAAAAAAGQAAAAABAAAAAAAAAAAZAAAAAAMAGQAAAAAGAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAADAAgAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAABkAAAAAAQAIAAAAAAEACAAAAAAAABkAAAAAAwAZAAAAAAAAGQAAAAAFAAgAAAAAAgAZAAAAAAAACAAAAAABABkAAAAAAAAIAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAIAAAAAAMAGQAAAAAGAAgAAAAAAQAZAAAAAAMACAAAAAAAAAgAAAAAAwAIAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAGQAAAAACAAgAAAAAAgAZAAAAAAUACAAAAAADAAgAAAAAAQAIAAAAAAIAGQAAAAAEAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAABkAAAAAAQAZAAAAAAIACAAAAAADABkAAAAAAQAZAAAAAAAACAAAAAADAAgAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAMACAAAAAACAAgAAAAAAwAZAAAAAAQAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAHgAAAAACAB4AAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAABgAIAAAAAAMAGQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAACAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAZAAAAAAIAHgAAAAABAAAAAAAAAAAeAAAAAAEAAAAAAAAAAAAAAAAAAAAeAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAACAAAAAABABkAAAAAAQAZAAAAAAEAAAAAAAAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAwAIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAIADQAAAAADAAIAAAAAAAACAAAAAAAAAQAAAAAAAAEAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAgACAAAAAAAAAgAAAAAAAAEAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABABkAAAAABAAIAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAANAAAAAAAAAAAAAAAAAAgAAAAAAQAAAAAAAAAAGQAAAAABAAAAAAAAAAAZAAAAAAMAGQAAAAAGAAIAAAAAAAACAAAAAAAAAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAADAAgAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAABkAAAAAAQAIAAAAAAEACAAAAAAAABkAAAAAAwAZAAAAAAAAGQAAAAAFAAgAAAAAAgAZAAAAAAAACAAAAAABABkAAAAAAAAIAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAIAAAAAAMAGQAAAAAGAAgAAAAAAQAZAAAAAAMACAAAAAAAAAgAAAAAAwAIAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAGQAAAAACAAgAAAAAAgAZAAAAAAUACAAAAAADAAgAAAAAAQAIAAAAAAIAGQAAAAAEAAAAAAAAAAAkAAAAAAAAJAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAABkAAAAAAQAZAAAAAAIACAAAAAADABkAAAAAAQAZAAAAAAAACAAAAAADAAgAAAAAAAAAAAAAAAAAJAAAAAAAACQAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAMACAAAAAACAAgAAAAAAwAZAAAAAAQAAAAAAAAAACQAAAAAAAAkAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAAHgAAAAACAB4AAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAABgAIAAAAAAMAGQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHgAAAAACAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAZAAAAAAIAHgAAAAABAAAAAAAAAAAeAAAAAAEAAAAAAAAAAAAAAAAAAAAeAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAACAAAAAABABkAAAAAAQAZAAAAAAEAAAAAAAAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAwAIAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAA== version: 7 3,2: ind: 3,2 @@ -345,7 +345,7 @@ entities: version: 7 -5,-1: ind: -5,-1 - tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAADAAYAAAAAAgAGAAAAAAIAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAgAGAAAAAAEABgAAAAADAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAGAAAAAAIABgAAAAAAAAYAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAACAAYAAAAAAAAGAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAgAGAAAAAAMABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAABgAAAAACAAYAAAAAAQAAAAAAAAAABgAAAAADAAYAAAAAAgAGAAAAAAIABgAAAAACAAYAAAAAAQAGAAAAAAEABgAAAAAAAAYAAAAAAAAGAAAAAAEABgAAAAAAAAYAAAAAAQAGAAAAAAMABgAAAAABAAYAAAAAAAAGAAAAAAAABgAAAAADAAYAAAAAAQAGAAAAAAAABgAAAAACAAYAAAAAAgAGAAAAAAIABgAAAAACAAYAAAAAAQAGAAAAAAIABgAAAAADAAYAAAAAAgAGAAAAAAAABgAAAAACAAYAAAAAAwAGAAAAAAIABgAAAAADAAYAAAAAAQAGAAAAAAEABgAAAAACAAYAAAAAAAAGAAAAAAAABgAAAAABAAYAAAAAAgAGAAAAAAAABgAAAAACAAYAAAAAAgAGAAAAAAAABgAAAAABAAYAAAAAAAAGAAAAAAMABgAAAAABAAYAAAAAAgAGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAABAAgAAAAAAgAIAAAAAAAACAAAAAACABkAAAAABgAIAAAAAAAACAAAAAADAAgAAAAAAAAZAAAAAAMACAAAAAABAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAACAAAAAAAABkAAAAAAAAZAAAAAAUACAAAAAABAAgAAAAAAAAIAAAAAAEACAAAAAABABkAAAAAAwAIAAAAAAIACAAAAAADAAgAAAAAAwAAAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAgAAAAAAAAZAAAAAAAACAAAAAABAAgAAAAAAAAIAAAAAAIACAAAAAAAAAgAAAAAAwAIAAAAAAEACAAAAAAAAAgAAAAAAwAIAAAAAAEAAAAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACABkAAAAAAQAIAAAAAAEACAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAgAAAAAAQAIAAAAAAMACAAAAAAAABkAAAAAAgAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAABABkAAAAAAAAAAAAAAAAAAAAAAAAAAA== + tiles: AgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAADAAYAAAAAAgAGAAAAAAIAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAgAGAAAAAAEABgAAAAADAAAAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAAAGAAAAAAIABgAAAAAAAAYAAAAAAAAAAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAAAAAAAAAAABgAAAAACAAYAAAAAAAAGAAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAAAAAAAAAAYAAAAAAgAGAAAAAAMABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAABgAAAAACAAYAAAAAAQAAAAAAAAAABgAAAAADAAYAAAAAAgAGAAAAAAIABgAAAAACAAYAAAAAAQAGAAAAAAEABgAAAAAAAAYAAAAAAAAGAAAAAAEABgAAAAAAAAYAAAAAAQAGAAAAAAMABgAAAAABAAYAAAAAAAAGAAAAAAAABgAAAAADAAYAAAAAAQAGAAAAAAAABgAAAAACAAYAAAAAAgAGAAAAAAIABgAAAAACAAYAAAAAAQAGAAAAAAIABgAAAAADAAYAAAAAAgAGAAAAAAAABgAAAAACAAYAAAAAAwAGAAAAAAIABgAAAAADAAYAAAAAAQAGAAAAAAEABgAAAAACAAYAAAAAAAAGAAAAAAAABgAAAAABAAYAAAAAAgAGAAAAAAAABgAAAAACAAYAAAAAAgAGAAAAAAAABgAAAAABAAYAAAAAAAAGAAAAAAMABgAAAAABAAYAAAAAAgAGAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAABAAgAAAAAAgAZAAAAAAAACAAAAAACAAAAAAAAAAAIAAAAAAAACAAAAAADAAgAAAAAAAAZAAAAAAMACAAAAAABAAAAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAAAAAAAAAAACAAAAAAAABkAAAAAAAAZAAAAAAUACAAAAAABAAgAAAAAAAAAAAAAAAAACAAAAAABABkAAAAAAwAIAAAAAAIACAAAAAADAAgAAAAAAwAAAAAAAAAAAQAAAAAAAAIAAAAAAAABAAAAAAAAAAAAAAAAAAgAAAAAAAAZAAAAAAAACAAAAAABAAgAAAAAAAAIAAAAAAIAAAAAAAAAAAgAAAAAAwAIAAAAAAEACAAAAAAAAAgAAAAAAwAIAAAAAAEAAAAAAAAAAAEAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACABkAAAAAAQAIAAAAAAEACAAAAAAAAAAAAAAAAAABAAAAAAAAAgAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAQAAAAAAAAEAAAAAAAABAAAAAAAAAAAAAAAAAAgAAAAAAQAIAAAAAAMACAAAAAAAABkAAAAAAgAAAAAAAAAAAQAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAgAAAAAAAAIAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAAAIAAAAAAAACAAAAAABABkAAAAAAAAAAAAAAAAAAAAAAAAAAA== version: 7 -1,-5: ind: -1,-5 @@ -761,6 +761,11 @@ entities: 3342: 45,41 3343: 45,43 3344: 45,45 + 4593: 5,-20 + 4594: 6,-20 + 4595: 7,-20 + 4597: 9,-20 + 4598: 8,-20 - node: cleanable: True color: '#FFFFFFFF' @@ -817,11 +822,6 @@ entities: 1785: 11,-20 1786: 11,-21 1787: 11,-22 - 1788: 9,-21 - 1789: 7,-21 - 1790: 8,-21 - 1791: 6,-21 - 1792: 5,-21 1797: 4,-17 - node: angle: 4.71238898038469 rad @@ -2860,6 +2860,10 @@ entities: 3348: 42,41 3349: 42,40 3512: 37,-43 + 4589: 5,-19 + 4590: 7,-19 + 4591: 8,-19 + 4592: 9,-19 - node: cleanable: True color: '#FFFFFFFF' @@ -2890,15 +2894,6 @@ entities: 1865: -64,30 1866: -64,31 1867: -64,32 - - node: - angle: 3.141592653589793 rad - color: '#FFFFFFFF' - id: Delivery - decals: - 1793: 5,-20 - 1794: 9,-20 - 1795: 8,-20 - 1796: 7,-20 - node: color: '#FFFFFFFF' id: Dirt @@ -4464,14 +4459,21 @@ entities: 1030: 56,-4 1031: 57,-4 1032: 58,-4 + - node: + color: '#FFFFFFFF' + id: WoodTrimThinCornerSe + decals: + 4600: 23,49 + - node: + color: '#FFFFFFFF' + id: WoodTrimThinCornerSw + decals: + 4603: -2,51 - node: color: '#FFFFFFFF' id: WoodTrimThinLineE decals: - 3491: 20,47 - 3492: 20,50 - 3493: 20,49 - 3494: 20,48 + 4602: 23,50 - node: color: '#FFFFFFFF' id: WoodTrimThinLineS @@ -4479,6 +4481,15 @@ entities: 3495: 0,37 3496: 1,37 3497: 2,37 + 4601: 22,49 + 4607: -1,51 + - node: + color: '#FFFFFFFF' + id: WoodTrimThinLineW + decals: + 4604: -2,52 + 4605: -2,53 + 4606: -2,54 - node: color: '#000000FF' id: e @@ -5030,7 +5041,8 @@ entities: 5,2: 0: 30591 5,3: - 0: 2993 + 0: 945 + 3: 2048 5,-1: 0: 61627 6,0: @@ -5104,14 +5116,14 @@ entities: -9,0: 0: 255 -8,2: - 3: 4352 + 4: 4352 -9,2: - 3: 2184 + 4: 2184 0: 819 -8,3: - 3: 4369 + 4: 4369 -8,4: - 3: 4369 + 4: 4369 -7,0: 0: 8959 -7,1: @@ -5223,24 +5235,24 @@ entities: 8,7: 0: 4093 -8,5: - 3: 4369 + 4: 4369 -8,6: - 3: 61713 + 4: 61713 -9,6: - 3: 65280 - 4: 7 + 4: 65280 + 5: 7 -8,7: 0: 12400 - 3: 34952 + 4: 34952 -9,7: 0: 65520 -8,8: 0: 13107 - 3: 34952 + 4: 34952 -7,7: - 3: 12561 + 4: 12561 -7,8: - 3: 62259 + 4: 62259 4,-5: 0: 2188 5,-6: @@ -5295,21 +5307,21 @@ entities: -5,-6: 0: 25668 8,1: - 3: 8 + 4: 8 8,2: - 3: 8 + 4: 8 8,3: - 3: 8 + 4: 8 9,0: 0: 255 9,1: - 3: 7 + 4: 7 0: 2048 9,2: - 3: 7 + 4: 7 0: 2048 9,3: - 3: 7 + 4: 7 0: 2048 9,-1: 0: 61440 @@ -5423,29 +5435,29 @@ entities: 0: 65535 -10,0: 0: 12543 - 3: 16384 + 4: 16384 -10,3: 0: 4369 - 3: 17476 + 4: 17476 -10,-1: 0: 63711 -10,1: - 3: 8934 + 4: 8934 0: 32768 -10,2: - 3: 546 + 4: 546 0: 2184 -10,4: 0: 4369 - 3: 17476 + 4: 17476 -9,1: - 3: 35056 + 4: 35056 0: 12288 -9,3: - 5: 1799 + 6: 1799 -9,4: - 6: 7 - 5: 1792 + 7: 7 + 6: 1792 -12,-4: 0: 36983 2: 24576 @@ -5457,7 +5469,7 @@ entities: 0: 65535 -13,-3: 0: 65339 - 7: 128 + 3: 128 -12,-2: 0: 48031 -13,-2: @@ -5752,7 +5764,8 @@ entities: 8,10: 0: 65535 8,11: - 0: 61695 + 0: 53503 + 8: 8192 0,8: 0: 30576 0,9: @@ -5772,7 +5785,8 @@ entities: 1,9: 0: 65535 1,10: - 0: 61695 + 8: 1 + 0: 61694 1,11: 0: 4095 1,12: @@ -5792,14 +5806,14 @@ entities: 3,12: 0: 4411 -4,8: - 3: 240 + 4: 240 -5,8: - 3: 29888 + 4: 29888 -4,9: 0: 65528 -5,9: 0: 65024 - 3: 22 + 4: 22 -4,10: 0: 65535 -5,10: @@ -5811,7 +5825,7 @@ entities: -4,12: 0: 65535 -3,8: - 3: 48 + 4: 48 0: 24576 -3,9: 0: 30583 @@ -5839,65 +5853,65 @@ entities: 0: 65535 -8,9: 0: 51 - 3: 63624 + 4: 63624 -9,9: 0: 255 - 3: 61440 + 4: 61440 -8,10: - 3: 143 + 4: 143 -9,10: - 3: 4383 + 4: 4383 -7,10: - 3: 17524 + 4: 17524 -7,9: - 3: 49152 + 4: 49152 -7,11: - 3: 17484 + 4: 17484 -7,12: - 3: 3140 + 4: 3140 -6,8: - 3: 61440 + 4: 61440 -6,9: - 3: 30993 + 4: 30993 -6,10: - 3: 18 + 4: 18 0: 61128 -6,11: 0: 52974 - 3: 4096 + 4: 4096 -6,12: - 3: 12098 + 4: 12098 0: 8 -5,12: 0: 3839 - 3: 4096 + 4: 4096 -6,13: - 3: 35042 + 4: 35042 -5,13: - 3: 62532 + 4: 62532 -4,13: - 3: 63488 + 4: 63488 0: 8 -3,13: 0: 103 -4,14: - 3: 2184 + 4: 2184 -3,14: - 3: 7936 + 4: 7936 -3,15: - 3: 4369 + 4: 4369 0: 34816 -3,16: - 3: 4369 + 4: 4369 0: 33856 -2,13: 0: 65535 -2,14: - 3: 6928 + 4: 6928 0: 17472 -2,15: 0: 60724 - 3: 1 + 4: 1 -2,16: 0: 45567 -1,13: @@ -5906,15 +5920,15 @@ entities: 0: 65314 -1,14: 0: 8738 - 3: 2048 + 4: 2048 -1,16: 0: 62207 0,14: 0: 4368 - 3: 11808 + 4: 11808 0,15: 0: 48417 - 3: 2 + 4: 2 0,13: 0: 28398 0,16: @@ -5922,36 +5936,36 @@ entities: 1,13: 0: 59 1,14: - 3: 4383 + 4: 4383 1,15: - 3: 4369 + 4: 4369 2,13: 0: 1 - 3: 32768 + 4: 32768 2,14: - 3: 15 + 4: 15 2,15: - 3: 51200 + 4: 51200 2,16: - 3: 310 + 4: 310 3,13: - 3: 40720 + 4: 40720 3,15: - 3: 306 + 4: 306 3,14: - 3: 25800 + 4: 25800 4,13: - 3: 3840 + 4: 3840 5,13: - 3: 3857 + 4: 3857 6,13: - 3: 3840 + 4: 3840 7,13: - 3: 3874 + 4: 3874 8,12: 0: 511 8,13: - 3: 3840 + 4: 3840 -13,4: 0: 56587 -12,5: @@ -5978,17 +5992,17 @@ entities: 0: 48059 -10,5: 0: 4369 - 3: 17476 + 4: 17476 -10,6: 0: 20753 - 3: 35908 + 4: 35908 -10,7: 0: 65489 -10,8: 0: 65535 -9,5: - 5: 7 - 8: 1792 + 6: 7 + 9: 1792 -12,9: 0: 30704 -13,9: @@ -5998,60 +6012,60 @@ entities: -13,10: 0: 4095 -12,11: - 3: 8784 + 4: 8784 0: 160 -13,11: - 3: 8912 + 4: 8912 0: 39 -12,12: 0: 2 - 3: 8749 + 4: 8749 -11,9: 0: 61688 -11,10: 0: 15 - 3: 7936 + 4: 7936 -11,11: - 3: 26231 + 4: 26231 -11,12: 0: 10 - 3: 58981 + 4: 58981 -10,9: 0: 12543 - 3: 32768 + 4: 32768 -10,10: 0: 4099 - 3: 61320 + 4: 61320 -10,11: 0: 4369 - 3: 8738 + 4: 8738 -10,12: 0: 4369 - 3: 8738 + 4: 8738 -16,8: 0: 35771 -16,7: 0: 49072 -17,8: 0: 3327 - 3: 4096 + 4: 4096 -16,9: - 3: 4369 + 4: 4369 0: 52416 -17,9: - 3: 36623 + 4: 36623 -16,10: - 3: 4369 + 4: 4369 0: 3276 -17,10: - 3: 34952 + 4: 34952 -16,11: - 3: 8817 + 4: 8817 0: 142 -17,11: - 3: 136 + 4: 136 -16,12: - 3: 8738 + 4: 8738 -15,8: 0: 65535 -15,9: @@ -6060,18 +6074,18 @@ entities: 0: 1911 -15,11: 0: 23 - 3: 13280 + 4: 13280 -15,7: 0: 65532 -15,12: - 3: 13117 + 4: 13117 0: 2 -14,9: 0: 65268 -14,10: 0: 32767 -14,11: - 3: 8912 + 4: 8912 0: 32 -14,8: 0: 61166 @@ -6079,12 +6093,12 @@ entities: 0: 61408 -14,12: 0: 2 - 3: 8749 + 4: 8749 -13,8: 0: 30583 -13,12: 0: 28674 - 3: 557 + 4: 557 -16,4: 0: 48059 -16,3: @@ -6175,10 +6189,10 @@ entities: 0: 48059 -16,-8: 0: 32975 - 3: 256 + 4: 256 -17,-8: 0: 12 - 3: 3843 + 4: 3843 -16,-7: 0: 65528 -16,-6: @@ -6208,7 +6222,7 @@ entities: -8,-16: 0: 48048 -8,-17: - 3: 4375 + 4: 4375 -9,-16: 0: 56784 -8,-15: @@ -6317,14 +6331,14 @@ entities: 0: 63965 4,-17: 0: 60928 - 3: 2 + 4: 2 5,-16: 0: 36816 5,-15: 0: 48059 5,-14: 0: 61595 - 9: 32 + 10: 32 5,-17: 0: 64544 6,-16: @@ -6335,7 +6349,7 @@ entities: 0: 61695 6,-17: 0: 62208 - 3: 130 + 4: 130 7,-15: 0: 3549 7,-14: @@ -6343,7 +6357,7 @@ entities: 7,-16: 0: 34952 7,-17: - 3: 35578 + 4: 35578 8,-15: 0: 4369 8,-14: @@ -6372,24 +6386,24 @@ entities: 0: 65535 14,-8: 0: 58912 - 3: 200 + 4: 200 14,-7: 0: 742 - 3: 2056 + 4: 2056 14,-4: 0: 61199 14,-9: - 3: 34959 + 4: 34959 15,-8: - 3: 4113 + 4: 4113 15,-7: - 3: 34945 + 4: 34945 15,-6: 0: 65395 15,-5: 0: 65535 15,-9: - 3: 4369 + 4: 4369 15,-4: 0: 56591 16,-5: @@ -6422,7 +6436,7 @@ entities: 0: 13107 17,3: 0: 13059 - 3: 32768 + 4: 32768 16,4: 0: 48056 17,4: @@ -6430,42 +6444,42 @@ entities: 18,1: 0: 3856 18,3: - 3: 61440 + 4: 61440 18,0: - 3: 4369 + 4: 4369 18,-1: - 3: 4593 + 4: 4593 18,4: - 3: 4369 + 4: 4369 19,1: 0: 260 - 3: 36488 + 4: 36488 19,3: - 3: 63624 + 4: 63624 0: 68 19,0: 0: 17476 - 3: 34952 + 4: 34952 19,-1: 0: 16384 - 3: 35056 + 4: 35056 19,2: 0: 17476 - 3: 34952 + 4: 34952 20,0: 0: 21845 - 3: 34952 + 4: 34952 20,1: 0: 5 - 3: 36744 + 4: 36744 20,2: 0: 21845 - 3: 34952 + 4: 34952 20,3: 0: 85 - 3: 61576 + 4: 61576 16,-3: - 3: 224 + 4: 224 15,-3: 0: 65477 16,-2: @@ -6475,18 +6489,18 @@ entities: 15,-1: 0: 56569 17,-3: - 3: 240 + 4: 240 17,-2: 0: 4369 17,-1: 0: 273 - 3: 192 + 4: 192 18,-3: - 3: 4368 + 4: 4368 18,-2: - 3: 4369 + 4: 4369 20,-1: - 3: 33008 + 4: 33008 0: 20480 12,7: 0: 61166 @@ -6549,38 +6563,38 @@ entities: 18,7: 0: 28784 12,-12: - 3: 272 + 4: 272 0: 61440 11,-12: - 3: 196 + 4: 196 0: 61712 12,-11: 0: 15 - 3: 272 + 4: 272 11,-11: 0: 4383 - 3: 19456 + 4: 19456 12,-10: - 3: 15 + 4: 15 0: 28160 11,-10: - 3: 12 + 4: 12 0: 65297 13,-12: 0: 61440 - 3: 3584 + 4: 3584 13,-11: 0: 15 - 3: 224 + 4: 224 13,-10: - 3: 15 + 4: 15 0: 30464 14,-12: - 3: 4352 + 4: 4352 14,-11: - 3: 17 + 4: 17 14,-10: - 3: 8739 + 4: 8739 8,-12: 0: 61154 9,-12: @@ -6600,41 +6614,41 @@ entities: 10,-13: 0: 4369 11,-13: - 3: 17476 + 4: 17476 8,-16: - 3: 49152 + 4: 49152 9,-16: - 3: 61713 + 4: 61713 9,-14: 0: 65535 9,-17: - 3: 4336 + 4: 4336 0: 3855 9,-15: - 3: 273 + 4: 273 10,-16: - 3: 61986 + 4: 61986 10,-14: 0: 4369 - 3: 3072 + 4: 3072 10,-17: - 3: 8432 + 4: 8432 0: 3855 10,-15: - 3: 3618 + 4: 3618 11,-16: - 3: 29764 + 4: 29764 11,-15: - 3: 8960 + 4: 8960 11,-14: - 3: 18210 + 4: 18210 11,-17: - 3: 17524 + 4: 17524 0: 257 -12,-16: - 3: 35064 + 4: 35064 -13,-16: - 3: 4592 + 4: 4592 -12,-15: 0: 65520 -12,-14: @@ -6646,7 +6660,7 @@ entities: -12,-12: 0: 56343 -12,-17: - 3: 34952 + 4: 34952 -11,-15: 0: 24016 -11,-14: @@ -6656,7 +6670,7 @@ entities: -11,-12: 0: 65291 -11,-17: - 3: 17476 + 4: 17476 -11,-16: 0: 34944 -10,-16: @@ -6688,21 +6702,21 @@ entities: -10,-10: 0: 65359 -16,-12: - 3: 1100 + 4: 1100 -16,-13: - 3: 17476 + 4: 17476 -15,-12: - 3: 1 + 4: 1 0: 52428 -16,-11: - 3: 8 + 4: 8 -15,-11: 0: 52960 -15,-10: 0: 61133 -15,-13: 0: 49152 - 3: 34 + 4: 34 -14,-12: 0: 56793 -14,-11: @@ -6735,32 +6749,32 @@ entities: 0: 63799 14,11: 0: 141 - 3: 8704 + 4: 8704 14,9: 0: 26350 14,12: - 3: 57890 + 4: 57890 15,9: 0: 56797 15,10: 0: 65421 15,11: 0: 1 - 3: 17472 + 4: 17472 15,12: - 3: 29772 + 4: 29772 16,9: 0: 64443 16,10: 0: 1 - 3: 40960 + 4: 40960 9,9: 0: 46079 9,10: 0: 48059 9,11: 0: 187 - 3: 32768 + 4: 32768 10,9: 0: 62719 10,10: @@ -6768,57 +6782,57 @@ entities: 10,11: 0: 255 9,12: - 3: 35048 + 4: 35048 11,12: 0: 8 - 3: 48 + 4: 48 9,13: - 3: 36744 + 4: 36744 10,12: - 3: 240 + 4: 240 9,14: - 3: 34952 + 4: 34952 10,13: - 3: 61440 + 4: 61440 0: 3584 9,15: - 3: 34952 + 4: 34952 9,16: - 3: 34952 + 4: 34952 10,15: - 3: 61440 + 4: 61440 0: 3598 10,14: 0: 3598 - 3: 57344 + 4: 57344 10,16: 0: 3598 - 3: 57344 + 4: 57344 11,13: 0: 1792 - 3: 61440 + 4: 61440 11,14: 0: 1799 - 3: 61440 + 4: 61440 11,15: 0: 1799 - 3: 61440 + 4: 61440 11,16: 0: 1799 - 3: 61440 + 4: 61440 12,13: 0: 3073 - 3: 61712 + 4: 61712 12,14: - 3: 61713 + 4: 61713 0: 3084 12,15: - 3: 61713 + 4: 61713 0: 3084 13,-3: 0: 65327 13,-2: - 3: 112 + 4: 112 0: 28672 13,-1: 0: 65319 @@ -6827,7 +6841,7 @@ entities: 14,-3: 0: 65294 14,-2: - 3: 112 + 4: 112 0: 28672 14,-1: 0: 63271 @@ -6842,110 +6856,110 @@ entities: 14,2: 0: 65535 -16,13: - 3: 8738 + 4: 8738 0: 8 -16,14: - 3: 8742 + 4: 8742 0: 17600 -16,15: - 3: 226 + 4: 226 0: 4 -15,13: - 3: 13117 + 4: 13117 0: 2 -15,14: - 3: 62269 + 4: 62269 0: 2 -15,15: - 3: 240 + 4: 240 -14,13: - 3: 8749 + 4: 8749 0: 2 -14,14: - 3: 53805 + 4: 53805 0: 8194 -14,15: - 3: 240 + 4: 240 -13,13: 0: 119 - 3: 8712 + 4: 8712 -13,14: - 3: 61997 + 4: 61997 0: 2 -13,15: - 3: 240 + 4: 240 -12,13: - 3: 8749 + 4: 8749 0: 2 -12,14: - 3: 53805 + 4: 53805 0: 8194 -12,15: - 3: 240 + 4: 240 -11,13: - 3: 26213 + 4: 26213 0: 2 -11,14: - 3: 13925 + 4: 13925 0: 16514 -11,15: - 3: 240 + 4: 240 -10,13: 0: 4369 - 3: 8738 + 4: 8738 -10,14: 0: 4369 - 3: 8738 + 4: 8738 -10,15: 0: 1 - 3: 50 + 4: 50 -20,-3: 0: 65280 -21,-3: 0: 65152 -20,-2: 0: 15 - 3: 30464 + 4: 30464 -21,-2: 0: 14 - 3: 65280 + 4: 65280 -20,-1: - 3: 7509 + 4: 7509 -20,0: - 3: 3857 + 4: 3857 -19,-3: 0: 65344 -19,-2: 0: 65295 -19,-1: 0: 15 - 3: 3840 + 4: 3840 -18,-3: 0: 65280 -18,-2: 0: 65327 -18,-1: 0: 34959 - 3: 8960 + 4: 8960 -18,0: - 3: 8994 + 4: 8994 0: 2184 -17,-4: 0: 30583 -17,-5: 0: 30583 -4,-18: - 3: 306 + 4: 306 0: 34952 -5,-18: - 3: 240 + 4: 240 -4,-20: 0: 57568 -4,-21: - 3: 8736 + 4: 8736 0: 34944 -4,-19: - 3: 8736 + 4: 8736 0: 34944 -3,-20: 0: 62451 @@ -6958,35 +6972,35 @@ entities: -2,-20: 0: 4112 -2,-19: - 3: 4368 + 4: 4368 -2,-18: - 3: 4369 + 4: 4369 -2,-21: - 3: 4368 + 4: 4368 2,-20: 0: 63736 2,-21: - 3: 4368 + 4: 4368 0: 52424 2,-19: - 3: 4368 + 4: 4368 0: 52424 2,-18: - 3: 4369 + 4: 4369 0: 52428 3,-20: 0: 61937 3,-19: 0: 13105 - 3: 34944 + 4: 34944 3,-18: 0: 13107 - 3: 34952 + 4: 34952 3,-21: 0: 13105 - 3: 34944 + 4: 34944 4,-18: - 3: 12288 + 4: 12288 -20,4: 0: 61166 -20,3: @@ -6997,27 +7011,27 @@ entities: 0: 3310 -19,4: 0: 30583 - 3: 2048 + 4: 2048 -19,5: 0: 30583 -19,6: 0: 887 - 3: 8 + 4: 8 -19,3: 0: 30583 - 3: 8 + 4: 8 -18,4: - 3: 10018 + 4: 10018 -18,6: - 3: 13111 + 4: 13111 -18,7: - 3: 13171 + 4: 13171 -18,8: - 3: 55091 + 4: 55091 -18,3: - 3: 8743 + 4: 8743 -18,5: - 3: 8738 + 4: 8738 -17,4: 0: 30583 -17,3: @@ -7027,47 +7041,47 @@ entities: -20,2: 0: 61166 -19,0: - 3: 12032 + 4: 12032 -19,1: 0: 30576 - 3: 2050 + 4: 2050 -19,2: 0: 30583 -18,1: - 3: 10018 + 4: 10018 -18,2: - 3: 8738 + 4: 8738 -17,2: 0: 30583 -20,-8: - 3: 36751 + 4: 36751 -21,-8: - 3: 7950 + 4: 7950 -20,-6: 0: 4095 -21,-6: 0: 36606 -20,-9: - 3: 34954 + 4: 34954 0: 1365 -19,-8: - 3: 3855 + 4: 3855 -20,-7: - 3: 2184 + 4: 2184 -19,-6: 0: 20479 -19,-9: - 3: 34954 + 4: 34954 0: 1365 -18,-8: - 3: 36751 + 4: 36751 -18,-6: 0: 4095 -18,-9: - 3: 34954 + 4: 34954 0: 1365 -18,-7: - 3: 2184 + 4: 2184 0,17: 0: 65038 -1,17: @@ -7084,16 +7098,16 @@ entities: 0: 274 1,16: 0: 272 - 3: 51200 + 4: 51200 1,17: 0: 4354 - 3: 68 + 4: 68 1,18: 0: 8209 1,19: 0: 18 -3,17: - 3: 273 + 4: 273 0: 52234 -3,18: 0: 41164 @@ -7110,39 +7124,39 @@ entities: -1,20: 0: 30847 -23,-7: - 3: 52416 + 4: 52416 -23,-6: - 3: 52428 + 4: 52428 -23,-5: - 3: 52428 + 4: 52428 -23,-4: - 3: 52428 + 4: 52428 -22,-7: - 3: 8184 + 4: 8184 -22,-6: - 3: 4369 + 4: 4369 0: 3308 -22,-8: - 3: 34952 + 4: 34952 -22,-9: - 3: 34816 + 4: 34816 -21,-7: - 3: 273 + 4: 273 -21,-9: - 3: 35227 + 4: 35227 0: 1092 -23,-3: - 3: 52428 + 4: 52428 -23,-2: - 3: 52428 + 4: 52428 -22,-3: - 3: 4368 + 4: 4368 0: 60416 -22,-2: - 3: 65297 + 4: 65297 0: 12 -18,9: - 3: 3857 + 4: 3857 -4,-22: 0: 57568 -4,-23: @@ -7164,240 +7178,240 @@ entities: 3,-22: 0: 61937 12,16: - 3: 61713 + 4: 61713 0: 3084 13,13: 0: 3840 - 3: 61440 + 4: 61440 13,14: 0: 3855 - 3: 61440 + 4: 61440 13,15: 0: 3855 - 3: 61440 + 4: 61440 13,16: 0: 3855 - 3: 61440 + 4: 61440 14,13: - 3: 12834 + 4: 12834 14,15: - 3: 12834 + 4: 12834 14,14: - 3: 8738 + 4: 8738 14,16: - 3: 8738 + 4: 8738 16,12: - 3: 1 + 4: 1 5,-18: - 3: 57344 + 4: 57344 6,-18: - 3: 61440 + 4: 61440 7,-18: - 3: 47850 + 4: 47850 7,-20: - 3: 43754 + 4: 43754 7,-21: - 3: 41696 + 4: 41696 7,-19: - 3: 43690 + 4: 43690 8,-20: - 3: 240 + 4: 240 0: 3598 8,-19: - 3: 240 + 4: 240 0: 3598 8,-18: - 3: 240 + 4: 240 0: 3598 8,-17: - 3: 240 + 4: 240 0: 3598 -8,-18: - 3: 4592 + 4: 4592 -9,-18: - 3: 61440 + 4: 61440 -7,-18: - 3: 48 + 4: 48 -6,-18: - 3: 192 + 4: 192 17,9: 0: 1911 16,11: - 3: 8 + 4: 8 17,11: - 3: 1 + 4: 1 18,9: - 3: 28672 + 4: 28672 18,10: - 3: 17476 + 4: 17476 18,11: - 3: 1092 + 4: 1092 21,0: 0: 21845 - 3: 34952 + 4: 34952 21,1: 0: 5 - 3: 36744 + 4: 36744 21,2: 0: 21845 - 3: 34952 + 4: 34952 21,3: 0: 85 - 3: 61576 + 4: 61576 21,-1: 0: 20480 - 3: 33008 + 4: 33008 22,0: 0: 21845 - 3: 34952 + 4: 34952 22,1: 0: 5 - 3: 36744 + 4: 36744 22,2: 0: 21845 - 3: 34952 + 4: 34952 22,3: 0: 85 - 3: 63624 + 4: 63624 22,-1: 0: 20480 - 3: 35056 + 4: 35056 23,0: 0: 4369 - 3: 58436 + 4: 58436 23,1: 0: 1 - 3: 1792 + 4: 1792 23,2: 0: 4369 - 3: 17632 + 4: 17632 23,3: 0: 17 - 3: 29764 + 4: 29764 23,-1: 0: 4096 - 3: 17520 + 4: 17520 24,0: - 3: 4096 + 4: 4096 24,2: - 3: 17 + 4: 17 -20,-12: - 3: 33008 + 4: 33008 0: 20480 -21,-12: - 3: 39408 + 4: 39408 0: 16384 -20,-11: 0: 21845 - 3: 35464 + 4: 35464 -21,-11: - 3: 39833 + 4: 39833 0: 17476 -20,-10: 0: 21845 - 3: 34952 + 4: 34952 -21,-10: - 3: 39321 + 4: 39321 0: 17476 -19,-12: - 3: 35056 + 4: 35056 0: 20480 -19,-11: 0: 21845 - 3: 35464 + 4: 35464 -19,-10: 0: 21845 - 3: 34952 + 4: 34952 -18,-12: - 3: 48 + 4: 48 0: 4096 -18,-11: 0: 21841 - 3: 35464 + 4: 35464 -18,-10: 0: 21845 - 3: 34952 + 4: 34952 -17,-11: 0: 4352 -17,-10: 0: 4369 -17,-9: 0: 273 - 3: 1094 + 4: 1094 8,-21: - 3: 3632 + 4: 3632 9,17: - 3: 34952 + 4: 34952 10,17: - 3: 63616 + 4: 63616 0: 14 11,17: 0: 7 - 3: 12288 + 4: 12288 11,18: - 3: 14 + 4: 14 12,18: - 3: 15 + 4: 15 12,17: - 3: 33041 + 4: 33041 0: 12 13,17: 0: 15 - 3: 61984 + 4: 61984 14,17: - 3: 12834 + 4: 12834 9,-20: 0: 3855 - 3: 4336 + 4: 4336 9,-19: 0: 3855 - 3: 4336 + 4: 4336 9,-18: 0: 3855 - 3: 4336 + 4: 4336 9,-21: - 3: 7936 + 4: 7936 10,-20: 0: 3855 - 3: 8432 + 4: 8432 10,-19: 0: 3855 - 3: 8432 + 4: 8432 10,-18: 0: 3855 - 3: 8432 + 4: 8432 10,-21: - 3: 12032 + 4: 12032 11,-20: 0: 257 - 3: 17524 + 4: 17524 11,-19: 0: 257 - 3: 17492 + 4: 17492 11,-18: 0: 257 - 3: 17492 + 4: 17492 11,-21: - 3: 18176 + 4: 18176 24,1: - 3: 4369 + 4: 4369 -12,-18: - 3: 32768 + 4: 32768 -11,-18: - 3: 61440 + 4: 61440 -10,-18: - 3: 61440 + 4: 61440 -16,-14: - 3: 19456 + 4: 19456 -15,-14: - 3: 12032 + 4: 12032 -14,-14: - 3: 3840 + 4: 3840 -13,-14: - 3: 273 + 4: 273 0: 1536 -13,-15: - 3: 4375 + 4: 4375 uniqueMixes: - volume: 2500 temperature: 293.15 @@ -7414,6 +7428,11 @@ entities: moles: Oxygen: 21.6852 Nitrogen: 81.57766 + - volume: 2500 + temperature: 293.15 + moles: + Oxygen: 21.813705 + Nitrogen: 82.06108 - volume: 2500 immutable: True moles: {} @@ -7429,10 +7448,10 @@ entities: moles: Plasma: 6666.982 - volume: 2500 - temperature: 293.15 + temperature: 293.14975 moles: - Oxygen: 21.813705 - Nitrogen: 82.06108 + Oxygen: 20.078888 + Nitrogen: 75.53487 - volume: 2500 temperature: 293.15 moles: @@ -7867,6 +7886,15 @@ entities: - type: Action originalIconColor: '#FFFFFFFF' container: 10514 + - uid: 14302 + mapInit: true + paused: true + components: + - type: Transform + parent: 10309 + - type: Action + originalIconColor: '#FFFFFFFF' + container: 10309 - uid: 24233 mapInit: true paused: true @@ -8051,6 +8079,22 @@ entities: - 19759 - type: Fixtures fixtures: {} + - uid: 4136 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 21.5,47.5 + parent: 2 + - type: DeviceList + devices: + - 20262 + - 802 + - 20261 + - 19637 + - 10325 + - 20258 + - type: Fixtures + fixtures: {} - uid: 7398 components: - type: Transform @@ -8080,6 +8124,21 @@ entities: - 18072 - type: Fixtures fixtures: {} + - uid: 8537 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -46.5,-34.5 + parent: 2 + - type: DeviceList + devices: + - 20273 + - 805 + - 19153 + - 18027 + - 20673 + - type: Fixtures + fixtures: {} - uid: 9506 components: - type: Transform @@ -8140,27 +8199,6 @@ entities: - 1140 - type: Fixtures fixtures: {} - - uid: 13210 - components: - - type: Transform - pos: 4.5,-15.5 - parent: 2 - - type: DeviceList - devices: - - 21009 - - 21008 - - 2059 - - 3628 - - 17568 - - 2063 - - 19787 - - 18270 - - 2116 - - 18273 - - 19788 - - 12823 - - type: Fixtures - fixtures: {} - uid: 13288 components: - type: Transform @@ -8537,21 +8575,19 @@ entities: parent: 2 - type: DeviceList devices: - - 20670 - - 19577 - - 19295 - - 19294 - - 20094 - - 19136 - - 19138 - - 19134 - - 19135 - 19729 - 19730 - 19731 + - 19134 + - 19135 + - 19293 - 19268 - 19292 - - 19293 + - 19294 + - 19295 + - 19577 + - 15761 + - 22031 - type: Fixtures fixtures: {} - uid: 20499 @@ -8630,7 +8666,7 @@ entities: - 19577 - 19295 - 19294 - - 20094 + - 15761 - 19136 - 19138 - 19134 @@ -8646,6 +8682,11 @@ entities: rot: 1.5707963267948966 rad pos: -69.5,-1.5 parent: 2 + - type: DeviceList + devices: + - 15761 + - 1167 + - 20093 - type: Fixtures fixtures: {} - uid: 20504 @@ -9254,28 +9295,22 @@ entities: parent: 2 - type: DeviceList devices: + - 15762 + - 21016 + - 21461 + - 21462 - 21005 - - 21009 - - 11145 - - 20472 - - 21013 - - 21011 - - 20471 - 19982 - 19981 - 19980 - - 2063 + - 21027 - 1884 - - 20446 - - 20447 - - 20029 - - 20030 - - 20031 - 21017 - - 21027 - - 21461 - - 21462 - - 21463 + - 804 + - 20031 + - 20030 + - 20029 + - 21766 - type: Fixtures fixtures: {} - uid: 20532 @@ -9554,14 +9589,6 @@ entities: - 20107 - type: Fixtures fixtures: {} - - uid: 20548 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -46.5,-35.5 - parent: 2 - - type: Fixtures - fixtures: {} - uid: 20549 components: - type: Transform @@ -9718,6 +9745,28 @@ entities: - 19240 - type: Fixtures fixtures: {} + - uid: 20564 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 7.5,-23.5 + parent: 2 + - type: DeviceList + devices: + - 804 + - 21008 + - 2059 + - 3628 + - 17568 + - 15762 + - 18270 + - 2116 + - 18273 + - 19788 + - 12823 + - 10926 + - type: Fixtures + fixtures: {} - uid: 20566 components: - type: Transform @@ -10075,7 +10124,7 @@ entities: - 20605 - 20606 - 20262 - - 20259 + - 802 - 20050 - 20049 - 20048 @@ -10100,7 +10149,6 @@ entities: - 18313 - 20268 - 20269 - - 4557 - 20718 - 20717 - type: Fixtures @@ -10197,22 +10245,6 @@ entities: - 22741 - type: Fixtures fixtures: {} - - uid: 20597 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 21.5,46.5 - parent: 2 - - type: DeviceList - devices: - - 20262 - - 20259 - - 20261 - - 19637 - - 18306 - - 20258 - - type: Fixtures - fixtures: {} - uid: 20598 components: - type: Transform @@ -10498,7 +10530,6 @@ entities: parent: 2 - type: DeviceList devices: - - 21009 - 3391 - 1152 - 2316 @@ -11156,6 +11187,12 @@ entities: parent: 2 - proto: AirlockCommandLocked entities: + - uid: 614 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 18.5,47.5 + parent: 2 - uid: 9256 components: - type: Transform @@ -11186,12 +11223,6 @@ entities: rot: 1.5707963267948966 rad pos: 14.5,40.5 parent: 2 - - uid: 21601 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,56.5 - parent: 2 - uid: 21602 components: - type: Transform @@ -11204,6 +11235,12 @@ entities: rot: 3.141592653589793 rad pos: -2.5,47.5 parent: 2 + - uid: 21939 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,55.5 + parent: 2 - proto: AirlockDetectiveLocked entities: - uid: 3121 @@ -12197,20 +12234,22 @@ entities: parent: 2 - proto: AirlockHeadOfPersonnelLocked entities: - - uid: 8095 + - uid: 6144 components: - type: Transform - pos: 29.5,49.5 + rot: -1.5707963267948966 rad + pos: 21.5,48.5 parent: 2 - - uid: 21783 + - uid: 8095 components: - type: Transform - pos: 18.5,47.5 + pos: 29.5,49.5 parent: 2 - - uid: 21786 + - uid: 21481 components: - type: Transform - pos: 20.5,46.5 + rot: 1.5707963267948966 rad + pos: 22.5,46.5 parent: 2 - proto: AirlockHeadOfSecurityGlassLocked entities: @@ -12233,11 +12272,10 @@ entities: - type: Transform pos: 3.5,-15.5 parent: 2 - - uid: 21698 + - uid: 4887 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-22.5 + pos: 2.5,-21.5 parent: 2 - proto: AirlockHydroponicsLocked entities: @@ -12269,11 +12307,10 @@ entities: parent: 2 - proto: AirlockLawyerLocked entities: - - uid: 21691 + - uid: 21786 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -48.5,-35.5 + pos: -48.5,-34.5 parent: 2 - proto: AirlockMaint entities: @@ -12305,6 +12342,13 @@ entities: - type: Transform pos: 4.5,-60.5 parent: 2 +- proto: AirlockMaintCommandLocked + entities: + - uid: 8405 + components: + - type: Transform + pos: 20.5,46.5 + parent: 2 - proto: AirlockMaintEngiLocked entities: - uid: 21894 @@ -12490,9 +12534,11 @@ entities: - uid: 22031 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -70.5,-6.5 + pos: -69.5,-6.5 parent: 2 + - type: DeviceNetwork + deviceLists: + - 20498 - uid: 22032 components: - type: Transform @@ -13170,6 +13216,11 @@ entities: - type: Transform pos: 10.5,-33.5 parent: 2 + - uid: 13945 + components: + - type: Transform + pos: -70.5,-4.5 + parent: 2 - uid: 20148 components: - type: Transform @@ -13671,6 +13722,9 @@ entities: - type: Transform pos: -0.5,-14.5 parent: 2 + - type: DeviceNetwork + deviceLists: + - 20531 - uid: 21767 components: - type: Transform @@ -13902,6 +13956,15 @@ entities: - type: DeviceNetwork deviceLists: - 367 + - uid: 15762 + components: + - type: Transform + pos: 7.5,-17.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 20531 + - 20564 - uid: 17451 components: - type: Transform @@ -13953,7 +14016,6 @@ entities: - type: DeviceNetwork deviceLists: - 20502 - - 20498 - uid: 20671 components: - type: Transform @@ -13973,6 +14035,7 @@ entities: deviceLists: - 20506 - 20546 + - 8537 - uid: 20675 components: - type: Transform @@ -14424,17 +14487,7 @@ entities: - type: DeviceNetwork deviceLists: - 20629 - - 13210 - - uid: 21009 - components: - - type: Transform - pos: 7.5,-18.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20531 - - 20628 - - 13210 + - 20564 - uid: 21010 components: - type: Transform @@ -14457,7 +14510,6 @@ entities: - 20532 - 20530 - 20534 - - 20531 - 12308 - uid: 21012 components: @@ -14479,7 +14531,6 @@ entities: - 20532 - 20530 - 20534 - - 20531 - 12308 - uid: 21014 components: @@ -14509,6 +14560,7 @@ entities: deviceLists: - 20530 - 20529 + - 20531 - uid: 21017 components: - type: Transform @@ -15780,7 +15832,7 @@ entities: - uid: 18285 components: - type: Transform - pos: -4.9571533,52.941425 + pos: -5.05616,51.35117 parent: 2 - uid: 22473 components: @@ -18628,11 +18680,17 @@ entities: - Arsenal - Experimental - CivilianServices - - uid: 6153 + - uid: 12573 components: - type: Transform - pos: 7.5,-19.5 + pos: 7.5,-18.5 parent: 2 + - type: TechnologyDatabase + supportedDisciplines: + - Industrial + - Arsenal + - Experimental + - CivilianServices - proto: BlastDoor entities: - uid: 1867 @@ -19224,11 +19282,6 @@ entities: - type: Transform pos: -44.5,-29.5 parent: 2 - - uid: 10316 - components: - - type: Transform - pos: -44.5,-30.5 - parent: 2 - uid: 10753 components: - type: Transform @@ -19248,11 +19301,6 @@ entities: parent: 2 - proto: BoozeDispenser entities: - - uid: 390 - components: - - type: Transform - pos: -0.5,55.5 - parent: 2 - uid: 6190 components: - type: Transform @@ -19271,6 +19319,11 @@ entities: rot: 3.141592653589793 rad pos: -53.5,-42.5 parent: 2 + - uid: 14295 + components: + - type: Transform + pos: -0.5,54.5 + parent: 2 - proto: BorgCharger entities: - uid: 1605 @@ -19403,7 +19456,7 @@ entities: - uid: 10927 components: - type: Transform - pos: -70.501915,-3.384408 + pos: -71.495346,-3.4876332 parent: 2 - proto: BoxFlare entities: @@ -19459,11 +19512,6 @@ entities: - type: Transform pos: 52.625668,-33.126396 parent: 2 - - uid: 8074 - components: - - type: Transform - pos: 24.534595,50.526836 - parent: 2 - uid: 10822 components: - type: Transform @@ -19476,6 +19524,12 @@ entities: parent: 2 - proto: BoxFolderClipboardThreePapers entities: + - uid: 1085 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 35.13011,49.5 + parent: 2 - uid: 28631 components: - type: Transform @@ -19508,7 +19562,7 @@ entities: - uid: 8617 components: - type: Transform - pos: 1.697041,55.296627 + pos: 1.3403914,54.66256 parent: 2 - uid: 10424 components: @@ -19629,7 +19683,7 @@ entities: - uid: 10311 components: - type: Transform - pos: -49.475304,-33.291367 + pos: -49.627438,-33.48442 parent: 2 - uid: 12505 components: @@ -19683,12 +19737,12 @@ entities: - uid: 10235 components: - type: Transform - pos: 5.2871656,-18.772892 + pos: 5.3118687,-17.862646 parent: 2 - uid: 10236 components: - type: Transform - pos: 5.7559156,-18.679142 + pos: 5.6712437,-17.643896 parent: 2 - proto: BurnAutoInjector entities: @@ -19939,6 +19993,11 @@ entities: - type: Transform pos: 1.5,18.5 parent: 2 + - uid: 856 + components: + - type: Transform + pos: -69.5,-6.5 + parent: 2 - uid: 958 components: - type: Transform @@ -19959,6 +20018,16 @@ entities: - type: Transform pos: -59.5,-9.5 parent: 2 + - uid: 1086 + components: + - type: Transform + pos: -69.5,-4.5 + parent: 2 + - uid: 1093 + components: + - type: Transform + pos: -69.5,-5.5 + parent: 2 - uid: 1248 components: - type: Transform @@ -19984,11 +20053,31 @@ entities: - type: Transform pos: -49.5,29.5 parent: 2 + - uid: 1578 + components: + - type: Transform + pos: -45.5,-33.5 + parent: 2 + - uid: 1581 + components: + - type: Transform + pos: -47.5,-33.5 + parent: 2 - uid: 1643 components: - type: Transform pos: 42.5,20.5 parent: 2 + - uid: 1699 + components: + - type: Transform + pos: -46.5,-33.5 + parent: 2 + - uid: 1721 + components: + - type: Transform + pos: 16.5,46.5 + parent: 2 - uid: 1779 components: - type: Transform @@ -20024,6 +20113,11 @@ entities: - type: Transform pos: -35.5,35.5 parent: 2 + - uid: 1957 + components: + - type: Transform + pos: 22.5,48.5 + parent: 2 - uid: 1971 components: - type: Transform @@ -20034,6 +20128,11 @@ entities: - type: Transform pos: 60.5,-5.5 parent: 2 + - uid: 2534 + components: + - type: Transform + pos: -5.5,55.5 + parent: 2 - uid: 2557 components: - type: Transform @@ -20094,6 +20193,11 @@ entities: - type: Transform pos: 40.5,42.5 parent: 2 + - uid: 3081 + components: + - type: Transform + pos: -7.5,55.5 + parent: 2 - uid: 3255 components: - type: Transform @@ -20679,6 +20783,11 @@ entities: - type: Transform pos: 39.5,-20.5 parent: 2 + - uid: 8400 + components: + - type: Transform + pos: 17.5,47.5 + parent: 2 - uid: 8581 components: - type: Transform @@ -21934,26 +22043,6 @@ entities: - type: Transform pos: -68.5,-4.5 parent: 2 - - uid: 14301 - components: - - type: Transform - pos: -68.5,-5.5 - parent: 2 - - uid: 14302 - components: - - type: Transform - pos: -69.5,-5.5 - parent: 2 - - uid: 14303 - components: - - type: Transform - pos: -70.5,-5.5 - parent: 2 - - uid: 14304 - components: - - type: Transform - pos: -70.5,-6.5 - parent: 2 - uid: 14305 components: - type: Transform @@ -23429,36 +23518,11 @@ entities: - type: Transform pos: -48.5,-32.5 parent: 2 - - uid: 14621 - components: - - type: Transform - pos: -48.5,-34.5 - parent: 2 - - uid: 14622 - components: - - type: Transform - pos: -47.5,-34.5 - parent: 2 - - uid: 14623 - components: - - type: Transform - pos: -44.5,-34.5 - parent: 2 - - uid: 14624 - components: - - type: Transform - pos: -46.5,-34.5 - parent: 2 - uid: 14625 components: - type: Transform pos: -48.5,-33.5 parent: 2 - - uid: 14626 - components: - - type: Transform - pos: -45.5,-34.5 - parent: 2 - uid: 14627 components: - type: Transform @@ -28324,36 +28388,6 @@ entities: - type: Transform pos: 22.5,47.5 parent: 2 - - uid: 15654 - components: - - type: Transform - pos: 21.5,47.5 - parent: 2 - - uid: 15655 - components: - - type: Transform - pos: 20.5,47.5 - parent: 2 - - uid: 15656 - components: - - type: Transform - pos: 19.5,47.5 - parent: 2 - - uid: 15657 - components: - - type: Transform - pos: 20.5,48.5 - parent: 2 - - uid: 15658 - components: - - type: Transform - pos: 20.5,49.5 - parent: 2 - - uid: 15659 - components: - - type: Transform - pos: 21.5,49.5 - parent: 2 - uid: 15660 components: - type: Transform @@ -28424,11 +28458,6 @@ entities: - type: Transform pos: 23.5,51.5 parent: 2 - - uid: 15674 - components: - - type: Transform - pos: 21.5,51.5 - parent: 2 - uid: 15691 components: - type: Transform @@ -28769,21 +28798,6 @@ entities: - type: Transform pos: -6.5,55.5 parent: 2 - - uid: 15761 - components: - - type: Transform - pos: -6.5,56.5 - parent: 2 - - uid: 15762 - components: - - type: Transform - pos: -7.5,56.5 - parent: 2 - - uid: 15763 - components: - - type: Transform - pos: -5.5,56.5 - parent: 2 - uid: 15764 components: - type: Transform @@ -34289,6 +34303,11 @@ entities: - type: Transform pos: -40.5,12.5 parent: 2 + - uid: 18434 + components: + - type: Transform + pos: 17.5,46.5 + parent: 2 - uid: 18489 components: - type: Transform @@ -35494,11 +35513,6 @@ entities: - type: Transform pos: 23.5,45.5 parent: 2 - - uid: 23834 - components: - - type: Transform - pos: 25.5,45.5 - parent: 2 - uid: 23835 components: - type: Transform @@ -35514,11 +35528,6 @@ entities: - type: Transform pos: 28.5,45.5 parent: 2 - - uid: 23838 - components: - - type: Transform - pos: 24.5,45.5 - parent: 2 - uid: 23839 components: - type: Transform @@ -44576,11 +44585,6 @@ entities: - type: Transform pos: 0.5,-21.5 parent: 2 - - uid: 22053 - components: - - type: Transform - pos: 0.5,-22.5 - parent: 2 - uid: 22071 components: - type: Transform @@ -46517,6 +46521,16 @@ entities: - type: Transform pos: -52.5,30.5 parent: 2 + - uid: 4144 + components: + - type: Transform + pos: 22.5,45.5 + parent: 2 + - uid: 4166 + components: + - type: Transform + pos: 22.5,46.5 + parent: 2 - uid: 4217 components: - type: Transform @@ -46552,6 +46566,11 @@ entities: - type: Transform pos: -22.5,2.5 parent: 2 + - uid: 4406 + components: + - type: Transform + pos: 22.5,47.5 + parent: 2 - uid: 5806 components: - type: Transform @@ -51507,26 +51526,6 @@ entities: - type: Transform pos: 20.5,44.5 parent: 2 - - uid: 13945 - components: - - type: Transform - pos: 20.5,46.5 - parent: 2 - - uid: 13946 - components: - - type: Transform - pos: 20.5,47.5 - parent: 2 - - uid: 13947 - components: - - type: Transform - pos: 20.5,48.5 - parent: 2 - - uid: 13948 - components: - - type: Transform - pos: 20.5,45.5 - parent: 2 - uid: 13949 components: - type: Transform @@ -51562,11 +51561,6 @@ entities: - type: Transform pos: 22.5,48.5 parent: 2 - - uid: 13956 - components: - - type: Transform - pos: 21.5,48.5 - parent: 2 - uid: 13957 components: - type: Transform @@ -53801,10 +53795,29 @@ entities: - type: Transform pos: 13.5,-8.5 parent: 2 - - uid: 25665 + - uid: 6148 components: - type: Transform - pos: -5.5,53.5 + rot: 3.141592653589793 rad + pos: -6.5,49.5 + parent: 2 + - uid: 8089 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,49.5 + parent: 2 + - uid: 8171 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,49.5 + parent: 2 + - uid: 8289 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,49.5 parent: 2 - uid: 25666 components: @@ -53821,11 +53834,6 @@ entities: - type: Transform pos: -5.5,50.5 parent: 2 - - uid: 25669 - components: - - type: Transform - pos: -4.5,53.5 - parent: 2 - uid: 25670 components: - type: Transform @@ -53841,11 +53849,6 @@ entities: - type: Transform pos: -3.5,52.5 parent: 2 - - uid: 25673 - components: - - type: Transform - pos: -3.5,53.5 - parent: 2 - uid: 25674 components: - type: Transform @@ -53866,11 +53869,6 @@ entities: - type: Transform pos: -6.5,51.5 parent: 2 - - uid: 25679 - components: - - type: Transform - pos: -6.5,53.5 - parent: 2 - uid: 25680 components: - type: Transform @@ -58395,11 +58393,6 @@ entities: rot: 1.5707963267948966 rad pos: 21.5,32.5 parent: 2 - - uid: 4357 - components: - - type: Transform - pos: 1.5,-22.5 - parent: 2 - uid: 4360 components: - type: Transform @@ -58546,6 +58539,23 @@ entities: - type: Transform pos: -70.5,2.5 parent: 2 + - uid: 5192 + components: + - type: Transform + pos: 1.5,-21.5 + parent: 2 + - uid: 5200 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,-21.5 + parent: 2 + - uid: 5476 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 3.5,-21.5 + parent: 2 - uid: 5535 components: - type: Transform @@ -59271,50 +59281,16 @@ entities: - type: Transform pos: 39.5,-19.5 parent: 2 - - uid: 6144 - components: - - type: Transform - pos: 8.5,-22.5 - parent: 2 - - uid: 6145 - components: - - type: Transform - pos: 2.5,-22.5 - parent: 2 - - uid: 6146 - components: - - type: Transform - pos: 3.5,-22.5 - parent: 2 - - uid: 6147 - components: - - type: Transform - pos: 4.5,-22.5 - parent: 2 - - uid: 6148 - components: - - type: Transform - pos: 5.5,-22.5 - parent: 2 - - uid: 6149 - components: - - type: Transform - pos: 7.5,-22.5 - parent: 2 - - uid: 6150 - components: - - type: Transform - pos: 6.5,-22.5 - parent: 2 - - uid: 6158 + - uid: 6138 components: - type: Transform - pos: 9.5,-22.5 + pos: 20.5,48.5 parent: 2 - - uid: 6159 + - uid: 6153 components: - type: Transform - pos: 10.5,-22.5 + rot: 1.5707963267948966 rad + pos: 7.5,-21.5 parent: 2 - uid: 6248 components: @@ -59613,6 +59589,11 @@ entities: rot: 1.5707963267948966 rad pos: -55.5,-23.5 parent: 2 + - uid: 8401 + components: + - type: Transform + pos: 2.5,-21.5 + parent: 2 - uid: 8413 components: - type: Transform @@ -59638,6 +59619,11 @@ entities: - type: Transform pos: 46.5,-44.5 parent: 2 + - uid: 8564 + components: + - type: Transform + pos: 20.5,49.5 + parent: 2 - uid: 8625 components: - type: Transform @@ -62256,6 +62242,12 @@ entities: - type: Transform pos: -60.5,-50.5 parent: 2 + - uid: 10166 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,-21.5 + parent: 2 - uid: 10171 components: - type: Transform @@ -62286,6 +62278,24 @@ entities: - type: Transform pos: -57.5,-52.5 parent: 2 + - uid: 10316 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 8.5,-21.5 + parent: 2 + - uid: 10317 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 9.5,-21.5 + parent: 2 + - uid: 10318 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 10.5,-21.5 + parent: 2 - uid: 10381 components: - type: Transform @@ -63802,6 +63812,11 @@ entities: rot: 3.141592653589793 rad pos: -66.5,-31.5 parent: 2 + - uid: 12130 + components: + - type: Transform + pos: 20.5,47.5 + parent: 2 - uid: 12133 components: - type: Transform @@ -64283,6 +64298,11 @@ entities: - type: Transform pos: -43.5,-62.5 parent: 2 + - uid: 17048 + components: + - type: Transform + pos: 19.5,47.5 + parent: 2 - uid: 17057 components: - type: Transform @@ -65102,6 +65122,11 @@ entities: rot: 1.5707963267948966 rad pos: 16.5,-53.5 parent: 2 + - uid: 21449 + components: + - type: Transform + pos: 20.5,46.5 + parent: 2 - uid: 21499 components: - type: Transform @@ -65262,6 +65287,12 @@ entities: - type: Transform pos: -48.5,-61.5 parent: 2 + - uid: 21698 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,-21.5 + parent: 2 - uid: 21876 components: - type: Transform @@ -68603,12 +68634,6 @@ entities: parent: 2 - proto: ChairOfficeDark entities: - - uid: 220 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -46.381554,-33.33824 - parent: 2 - uid: 806 components: - type: Transform @@ -68698,6 +68723,12 @@ entities: rot: -1.5707963267948966 rad pos: 66.57445,24.798231 parent: 2 + - uid: 20082 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -46.412685,-32.40442 + parent: 2 - uid: 21803 components: - type: Transform @@ -68845,29 +68876,11 @@ entities: rot: -1.5707963267948966 rad pos: -12.4181,-17.403904 parent: 2 - - uid: 614 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.588417,52.157803 - parent: 2 - - uid: 802 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5352783,51.003925 - parent: 2 - - uid: 804 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5040283,53.3008 - parent: 2 - - uid: 1721 + - uid: 2867 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -3.6602783,52.9883 + rot: 3.141592653589793 rad + pos: -4.946785,48.63242 parent: 2 - uid: 3304 components: @@ -68887,6 +68900,11 @@ entities: rot: 1.5707963267948966 rad pos: -7.5929513,-18.42781 parent: 2 + - uid: 4801 + components: + - type: Transform + pos: -5.02491,53.554295 + parent: 2 - uid: 5734 components: - type: Transform @@ -68898,6 +68916,42 @@ entities: - type: Transform pos: 18.918533,-9.459717 parent: 2 + - uid: 6133 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.384285,49.69492 + parent: 2 + - uid: 6134 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.509285,52.38242 + parent: 2 + - uid: 6136 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.353035,51.06992 + parent: 2 + - uid: 6137 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.49366,49.773045 + parent: 2 + - uid: 6145 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.509285,51.085545 + parent: 2 + - uid: 6149 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.36866,52.429295 + parent: 2 - uid: 6224 components: - type: Transform @@ -68996,17 +69050,11 @@ entities: rot: 1.5707963267948966 rad pos: -43.449844,-7.664156 parent: 2 - - uid: 8080 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 21.113884,49.611374 - parent: 2 - - uid: 8081 + - uid: 8090 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 20.832634,48.72075 + rot: 3.141592653589793 rad + pos: 22.57148,49.702744 parent: 2 - uid: 9101 components: @@ -69020,12 +69068,6 @@ entities: rot: 3.141592653589793 rad pos: -23.587034,-33.29139 parent: 2 - - uid: 10164 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -3.5352783,51.58205 - parent: 2 - uid: 10247 components: - type: Transform @@ -69082,15 +69124,11 @@ entities: - type: Transform pos: 14.637596,-11.459144 parent: 2 - - uid: 10317 - components: - - type: Transform - pos: -46.733116,-31.275742 - parent: 2 - - uid: 10318 + - uid: 11048 components: - type: Transform - pos: -45.74874,-31.252304 + rot: -1.5707963267948966 rad + pos: 23.524605,50.515244 parent: 2 - uid: 12346 components: @@ -69098,21 +69136,20 @@ entities: rot: -1.5707963267948966 rad pos: -22.462034,-32.424202 parent: 2 - - uid: 24438 + - uid: 15687 components: - type: Transform - pos: -47.493378,-43.553085 + pos: -46.739853,-30.103804 parent: 2 - - uid: 25651 + - uid: 15763 components: - type: Transform - rot: 3.141592653589793 rad - pos: -4.9415283,49.64455 + pos: -45.786728,-30.025679 parent: 2 - - uid: 25654 + - uid: 24438 components: - type: Transform - pos: -4.9727783,54.691425 + pos: -47.493378,-43.553085 parent: 2 - proto: CheapLighter entities: @@ -69152,6 +69189,18 @@ entities: - type: Transform pos: -21.678143,-58.72908 parent: 2 +- proto: ChemistryBottleEpinephrine + entities: + - uid: 14621 + components: + - type: Transform + pos: -7.618408,-38.307014 + parent: 2 + - uid: 17635 + components: + - type: Transform + pos: -7.305908,-38.432014 + parent: 2 - proto: ChemistryBottleEthanol entities: - uid: 7433 @@ -69173,7 +69222,7 @@ entities: - uid: 5973 components: - type: Transform - pos: 6.320582,-19.508772 + pos: 6.7181187,-18.565771 parent: 2 - proto: ChemistryHotplate entities: @@ -70062,6 +70111,11 @@ entities: isPlaceable: True - proto: ClosetMaintenanceFilledRandom entities: + - uid: 220 + components: + - type: Transform + pos: -45.5,-35.5 + parent: 2 - uid: 7373 components: - type: Transform @@ -70102,11 +70156,6 @@ entities: - type: Transform pos: -50.5,-40.5 parent: 2 - - uid: 12130 - components: - - type: Transform - pos: -45.5,-36.5 - parent: 2 - uid: 12131 components: - type: Transform @@ -71065,7 +71114,7 @@ entities: - type: Transform pos: 30.723843,35.485783 parent: 2 -- proto: ClothingHeadHelmetEVALarge +- proto: ClothingHeadHelmetEVA entities: - uid: 4121 components: @@ -71075,6 +71124,14 @@ entities: canCollide: False - type: InsideEntityStorage storage: 4120 + - uid: 7100 + components: + - type: Transform + parent: 3639 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 3639 - proto: ClothingHeadHelmetRiot entities: - uid: 6333 @@ -71450,7 +71507,7 @@ entities: - uid: 8211 components: - type: Transform - pos: 8.491026,38.525154 + pos: 8.531741,38.530777 parent: 2 - proto: ClothingNeckChameleon entities: @@ -71504,8 +71561,7 @@ entities: - uid: 10320 components: - type: Transform - rot: 3.141592653589793 rad - pos: -44.99874,-32.541367 + pos: -45.24081,-31.43567 parent: 2 - proto: ClothingNeckScarfStripedLesbianLong entities: @@ -71799,6 +71855,14 @@ entities: canCollide: False - type: InsideEntityStorage storage: 4120 + - uid: 18803 + components: + - type: Transform + parent: 3639 + - type: Physics + canCollide: False + - type: InsideEntityStorage + storage: 3639 - proto: ClothingOuterHoodieChaplain entities: - uid: 25646 @@ -72106,7 +72170,7 @@ entities: components: - type: MetaData desc: looks like an (un)lucky shot blew out the mini jetpack - name: Broken blood-redd magboots + name: Broken blood-red magboots - type: Transform pos: 22.250744,-64.840576 parent: 2 @@ -72367,7 +72431,7 @@ entities: desc: a red suit bearing the logo of Cybersun, worn by its professional legal team name: Cybersun lawyer's suit - type: Transform - pos: -49.39767,-33.467945 + pos: -49.674313,-33.32817 parent: 2 - uid: 24434 components: @@ -72375,7 +72439,7 @@ entities: desc: a red suit bearing the logo of Cybersun, worn by its professional legal team name: Cybersun lawyer's suit - type: Transform - pos: -49.61642,-33.38982 + pos: -49.393063,-33.35942 parent: 2 - proto: ClothingUniformJumpsuitMercenary entities: @@ -73036,6 +73100,11 @@ entities: rot: 1.5707963267948966 rad pos: -16.5,47.5 parent: 2 + - uid: 23565 + components: + - type: Transform + pos: 9.5,-2.5 + parent: 2 - proto: ComputerComms entities: - uid: 1654 @@ -73659,6 +73728,19 @@ entities: parent: 2 - proto: CrateCommandSecure entities: + - uid: 1709 + components: + - type: Transform + pos: 33.5,47.5 + parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + Oxygen: 1.7459903 + Nitrogen: 6.568249 - uid: 4120 components: - type: MetaData @@ -73673,8 +73755,8 @@ entities: immutable: False temperature: 293.14673 moles: - Oxygen: 1.8856695 - Nitrogen: 7.0937095 + Oxygen: 1.8968438 + Nitrogen: 7.1357465 - type: Lock locked: False - type: ContainerContainer @@ -73683,18 +73765,13 @@ entities: showEnts: False occludes: True ents: - - 4123 - 4121 + - 4123 - 4122 paper_label: !type:ContainerSlot showEnts: False occludes: True ent: null - - uid: 8405 - components: - - type: Transform - pos: 27.5,50.5 - parent: 2 - uid: 8406 components: - type: Transform @@ -73994,6 +74071,13 @@ entities: - type: Transform pos: 49.5,48.5 parent: 2 +- proto: CrateEvaKit + entities: + - uid: 19104 + components: + - type: Transform + pos: 42.5,45.5 + parent: 2 - proto: CrateFilledSpawner entities: - uid: 895 @@ -75310,7 +75394,7 @@ entities: - uid: 8616 components: - type: Transform - pos: 1.5668383,54.67516 + pos: 1.7310164,54.553185 parent: 2 - proto: CybersunFlippo entities: @@ -75908,6 +75992,12 @@ entities: rot: -1.5707963267948966 rad pos: -8.5,-11.5 parent: 2 + - uid: 3867 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 24.5,49.5 + parent: 2 - uid: 4647 components: - type: Transform @@ -75944,6 +76034,12 @@ entities: rot: 1.5707963267948966 rad pos: -17.5,-11.5 parent: 2 + - uid: 8080 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 22.5,49.5 + parent: 2 - uid: 9785 components: - type: Transform @@ -76292,6 +76388,11 @@ entities: - type: Transform pos: -21.5,-46.5 parent: 2 + - uid: 4112 + components: + - type: Transform + pos: 0.5,-22.5 + parent: 2 - uid: 4998 components: - type: Transform @@ -76314,11 +76415,6 @@ entities: - type: Transform pos: -51.5,3.5 parent: 2 - - uid: 12573 - components: - - type: Transform - pos: 0.5,-22.5 - parent: 2 - uid: 12603 components: - type: Transform @@ -76362,6 +76458,12 @@ entities: rot: -1.5707963267948966 rad pos: 7.5,0.5 parent: 2 + - uid: 6158 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 22.5,44.5 + parent: 2 - uid: 7126 components: - type: Transform @@ -76435,12 +76537,6 @@ entities: rot: 1.5707963267948966 rad pos: -3.5,44.5 parent: 2 - - uid: 12650 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 20.5,44.5 - parent: 2 - uid: 12662 components: - type: Transform @@ -76535,12 +76631,6 @@ entities: rot: 3.141592653589793 rad pos: 7.5,-0.5 parent: 2 - - uid: 1093 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 20.5,45.5 - parent: 2 - uid: 1165 components: - type: Transform @@ -78556,12 +78646,6 @@ entities: rot: 1.5707963267948966 rad pos: 21.5,44.5 parent: 2 - - uid: 5478 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 22.5,44.5 - parent: 2 - uid: 5479 components: - type: Transform @@ -78812,6 +78896,23 @@ entities: rot: -1.5707963267948966 rad pos: -40.5,-36.5 parent: 2 + - uid: 6154 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 20.5,44.5 + parent: 2 + - uid: 6155 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 23.5,49.5 + parent: 2 + - uid: 6159 + components: + - type: Transform + pos: 22.5,48.5 + parent: 2 - uid: 6416 components: - type: Transform @@ -79627,6 +79728,21 @@ entities: rot: -1.5707963267948966 rad pos: -20.5,-42.5 parent: 2 + - uid: 8074 + components: + - type: Transform + pos: 22.5,46.5 + parent: 2 + - uid: 8078 + components: + - type: Transform + pos: 22.5,47.5 + parent: 2 + - uid: 8081 + components: + - type: Transform + pos: 22.5,45.5 + parent: 2 - uid: 8352 components: - type: Transform @@ -80019,12 +80135,6 @@ entities: rot: 1.5707963267948966 rad pos: -6.5,48.5 parent: 2 - - uid: 10980 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 20.5,46.5 - parent: 2 - uid: 10981 components: - type: Transform @@ -80153,24 +80263,6 @@ entities: rot: -1.5707963267948966 rad pos: -4.5,44.5 parent: 2 - - uid: 11004 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 20.5,48.5 - parent: 2 - - uid: 11005 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 20.5,47.5 - parent: 2 - - uid: 11006 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 20.5,49.5 - parent: 2 - uid: 11011 components: - type: Transform @@ -81075,11 +81167,6 @@ entities: - type: Transform pos: 35.5,45.5 parent: 2 - - uid: 12643 - components: - - type: Transform - pos: 20.5,50.5 - parent: 2 - uid: 12644 components: - type: Transform @@ -81115,6 +81202,11 @@ entities: rot: 1.5707963267948966 rad pos: -12.5,-64.5 parent: 2 + - uid: 19709 + components: + - type: Transform + pos: 24.5,50.5 + parent: 2 - uid: 24007 components: - type: Transform @@ -81156,6 +81248,11 @@ entities: - type: Transform pos: -54.5,35.5 parent: 2 + - uid: 1942 + components: + - type: Transform + pos: 24.5,50.5 + parent: 2 - uid: 2709 components: - type: Transform @@ -81171,11 +81268,6 @@ entities: - type: Transform pos: 59.5,8.5 parent: 2 - - uid: 2867 - components: - - type: Transform - pos: 20.5,50.5 - parent: 2 - uid: 3327 components: - type: Transform @@ -81448,11 +81540,6 @@ entities: - type: Transform pos: 52.5,-36.5 parent: 2 - - uid: 8078 - components: - - type: Transform - pos: 19.5,48.5 - parent: 2 - uid: 8235 components: - type: Transform @@ -81468,6 +81555,11 @@ entities: - type: Transform pos: 11.5,-54.5 parent: 2 + - uid: 19710 + components: + - type: Transform + pos: 25.5,50.5 + parent: 2 - uid: 25647 components: - type: Transform @@ -81721,14 +81813,14 @@ entities: - uid: 25664 components: - type: Transform - pos: -1.4331169,52.06457 + pos: -1.4101012,51.744972 parent: 2 - proto: DrinkDevilsKiss entities: - uid: 25655 components: - type: Transform - pos: -4.3080797,55.581543 + pos: -4.3476014,54.744972 parent: 2 - proto: DrinkFlask entities: @@ -81744,15 +81836,10 @@ entities: - type: Transform pos: 34.38086,27.746704 parent: 2 - - uid: 25661 - components: - - type: Transform - pos: -1.5268669,53.642696 - parent: 2 - uid: 25663 components: - type: Transform - pos: -1.6206169,52.65832 + pos: -1.7538512,52.276222 parent: 2 - uid: 27676 components: @@ -81954,7 +82041,7 @@ entities: - uid: 25652 components: - type: Transform - pos: -4.6049547,55.815918 + pos: -4.6757264,54.682472 parent: 2 - proto: DrinkRumBottleFull entities: @@ -82019,29 +82106,29 @@ entities: - uid: 25656 components: - type: Transform - pos: -1.6362419,54.90832 + pos: -1.2851012,54.260597 parent: 2 - uid: 25657 components: - type: Transform - pos: -1.2768669,54.90832 + pos: -1.6601012,53.963722 parent: 2 - uid: 25658 components: - type: Transform - pos: -1.4799919,54.75207 + pos: -1.3319762,53.932472 parent: 2 - uid: 25659 components: - type: Transform - pos: -1.3237419,54.62707 + pos: -1.4882262,54.057472 parent: 2 - proto: DrinkSodaWaterBottleFull entities: - uid: 1909 components: - type: Transform - pos: -5.0352783,52.285175 + pos: -5.009285,50.804295 parent: 2 - proto: DrinkSoyMilkCarton entities: @@ -82076,27 +82163,27 @@ entities: - uid: 801 components: - type: Transform - pos: -4.4415283,52.9883 + pos: -4.49366,52.56992 parent: 2 - uid: 1956 components: - type: Transform - pos: -5.5665283,53.566425 + pos: -5.39991,49.773045 parent: 2 - uid: 17417 components: - type: Transform - pos: -5.5665283,51.8633 + pos: -5.571785,51.116795 parent: 2 - uid: 17535 components: - type: Transform - pos: -4.3946533,51.2383 + pos: -4.46241,50.66367 parent: 2 - uid: 18417 components: - type: Transform - pos: -5.1290283,50.8633 + pos: -5.259285,52.22617 parent: 2 - proto: DrinkWhiskeyBottleFull entities: @@ -82167,7 +82254,7 @@ entities: - uid: 25662 components: - type: Transform - pos: -1.2612419,53.15832 + pos: -1.3788512,52.854347 parent: 2 - proto: Dropper entities: @@ -83275,6 +83362,11 @@ entities: name: Captain's office - proto: filingCabinetDrawerRandom entities: + - uid: 1714 + components: + - type: Transform + pos: 27.328705,50.5 + parent: 2 - uid: 5013 components: - type: Transform @@ -83305,16 +83397,6 @@ entities: - type: Transform pos: 31.5,47.5 parent: 2 - - uid: 8088 - components: - - type: Transform - pos: 22.5,50.5 - parent: 2 - - uid: 8091 - components: - - type: Transform - pos: 23.5,50.5 - parent: 2 - uid: 8604 components: - type: Transform @@ -83330,18 +83412,23 @@ entities: - type: Transform pos: -9.5,53.5 parent: 2 - - uid: 10327 + - uid: 10328 components: - type: Transform - pos: -44.5,-34.5 + pos: -44.5,-33.5 parent: 2 - - uid: 10328 + - uid: 20094 components: - type: Transform - pos: -44.5,-33.5 + pos: -44.5,-32.5 parent: 2 - proto: filingCabinetRandom entities: + - uid: 6151 + components: + - type: Transform + pos: 27.859955,50.5 + parent: 2 - uid: 7027 components: - type: Transform @@ -83372,26 +83459,6 @@ entities: - type: Transform pos: -6.2700534,41.5 parent: 2 - - uid: 8400 - components: - - type: Transform - pos: 22.995958,50.5 - parent: 2 - - uid: 8401 - components: - - type: Transform - pos: 22.011583,50.5 - parent: 2 - - uid: 8403 - components: - - type: Transform - pos: 21.620958,50.5 - parent: 2 - - uid: 8404 - components: - - type: Transform - pos: 21.230333,50.5 - parent: 2 - proto: filingCabinetTallRandom entities: - uid: 8541 @@ -83750,6 +83817,33 @@ entities: deviceLists: - 20526 - 20609 + - uid: 802 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 22.5,46.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 4136 + - 20589 + - uid: 804 + components: + - type: Transform + pos: 2.5,-21.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 20531 + - 20564 + - uid: 805 + components: + - type: Transform + pos: -48.5,-34.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 8537 - uid: 1004 components: - type: Transform @@ -83795,6 +83889,7 @@ entities: - type: DeviceNetwork deviceLists: - 20487 + - 20503 - uid: 1274 components: - type: Transform @@ -84006,7 +84101,7 @@ entities: - type: DeviceNetwork deviceLists: - 20628 - - 13210 + - 20564 - uid: 2062 components: - type: Transform @@ -84017,16 +84112,6 @@ entities: deviceLists: - 20626 - 20532 - - uid: 2063 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-22.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20531 - - 13210 - uid: 2065 components: - type: Transform @@ -84044,7 +84129,7 @@ entities: - type: DeviceNetwork deviceLists: - 20629 - - 13210 + - 20564 - uid: 2228 components: - type: Transform @@ -84276,7 +84361,7 @@ entities: - type: DeviceNetwork deviceLists: - 20628 - - 13210 + - 20564 - uid: 3729 components: - type: Transform @@ -84365,14 +84450,6 @@ entities: deviceLists: - 20511 - 20512 - - uid: 4557 - components: - - type: Transform - pos: -2.5,56.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20590 - uid: 5651 components: - type: Transform @@ -84556,6 +84633,16 @@ entities: - 9506 - 18630 - 13980 + - uid: 15761 + components: + - type: Transform + pos: -69.5,-6.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 20502 + - 20503 + - 20498 - uid: 17030 components: - type: Transform @@ -84614,7 +84701,13 @@ entities: - type: DeviceNetwork deviceLists: - 20628 - - 13210 + - 20564 + - uid: 17637 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,55.5 + parent: 2 - uid: 18007 components: - type: Transform @@ -86060,16 +86153,9 @@ entities: rot: -1.5707963267948966 rad pos: -64.5,-1.5 parent: 2 - - uid: 20094 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -70.5,-6.5 - parent: 2 - type: DeviceNetwork deviceLists: - - 20502 - - 20498 + - 20503 - uid: 20096 components: - type: Transform @@ -87192,17 +87278,8 @@ entities: parent: 2 - type: DeviceNetwork deviceLists: - - 20597 - 20598 - - uid: 20259 - components: - - type: Transform - pos: 20.5,46.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20597 - - 20589 + - 4136 - uid: 20261 components: - type: Transform @@ -87210,8 +87287,8 @@ entities: parent: 2 - type: DeviceNetwork deviceLists: - - 20597 - 20596 + - 4136 - uid: 20262 components: - type: Transform @@ -87219,8 +87296,8 @@ entities: parent: 2 - type: DeviceNetwork deviceLists: - - 20597 - 20589 + - 4136 - uid: 20263 components: - type: Transform @@ -87284,11 +87361,6 @@ entities: deviceLists: - 28610 - 28620 - - uid: 20272 - components: - - type: Transform - pos: -48.5,-35.5 - parent: 2 - uid: 20273 components: - type: Transform @@ -87297,6 +87369,7 @@ entities: - type: DeviceNetwork deviceLists: - 20505 + - 8537 - uid: 20274 components: - type: Transform @@ -87563,15 +87636,6 @@ entities: - type: DeviceNetwork deviceLists: - 20531 - - uid: 21463 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-19.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20531 - uid: 21623 components: - type: Transform @@ -87791,10 +87855,10 @@ entities: - 28620 - proto: Fireplace entities: - - uid: 2534 + - uid: 8093 components: - type: Transform - pos: 19.5,49.5 + pos: 22.5,50.5 parent: 2 - uid: 8236 components: @@ -87882,7 +87946,7 @@ entities: - uid: 10947 components: - type: Transform - pos: -67.32955,-0.35879278 + pos: -67.783295,-0.42270923 parent: 2 - proto: Floodlight entities: @@ -88223,15 +88287,16 @@ entities: - type: Transform pos: -3.5,28.5 parent: 2 - - uid: 6131 + - uid: 12730 components: - type: Transform - pos: 6.5,-23.5 + pos: 14.5,26.5 parent: 2 - - uid: 12730 + - uid: 12785 components: - type: Transform - pos: 14.5,26.5 + rot: 1.5707963267948966 rad + pos: 6.5,-22.5 parent: 2 - uid: 22913 components: @@ -88301,11 +88366,6 @@ entities: - type: Transform pos: -0.2519157,1.2434468 parent: 2 - - uid: 1731 - components: - - type: Transform - pos: 9.596768,-22.970316 - parent: 2 - uid: 3127 components: - type: Transform @@ -88658,15 +88718,25 @@ entities: - type: Transform pos: 2.5502074,65.39018 parent: 2 - - uid: 10323 + - uid: 15674 components: - type: Transform - pos: -46.80343,-32.353867 + pos: -46.89706,-31.326296 parent: 2 - - uid: 10324 + - uid: 19711 + components: + - type: Transform + pos: -0.5843272,49.575054 + parent: 2 + - uid: 20604 components: - type: Transform - pos: -46.52218,-32.471054 + pos: -0.31870222,49.34068 + parent: 2 + - uid: 23583 + components: + - type: Transform + pos: -46.61581,-31.576294 parent: 2 - proto: FoodBanana entities: @@ -89382,6 +89452,37 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 4979 + components: + - type: Transform + pos: 3.5,-21.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 5762 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,-22.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 6130 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 0.5,-21.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 6131 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 0.5,-22.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 6555 components: - type: Transform @@ -89432,11 +89533,15 @@ entities: rot: -1.5707963267948966 rad pos: 2.5,3.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 8479 components: - type: Transform pos: 35.5,41.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 9366 components: - type: Transform @@ -89452,11 +89557,50 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 10071 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,54.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 10233 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,-41.5 + parent: 2 + - uid: 10319 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,54.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 10326 + components: + - type: Transform + pos: 3.5,-18.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 10327 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,-19.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 11094 components: - type: Transform pos: 34.5,42.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 12312 components: - type: Transform @@ -89480,12 +89624,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 12889 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,55.5 - parent: 2 - uid: 13364 components: - type: Transform @@ -89500,6 +89638,8 @@ entities: rot: 3.141592653589793 rad pos: -50.5,-24.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 14293 components: - type: Transform @@ -89508,12 +89648,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 14295 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -2.5,-41.5 - parent: 2 - uid: 17003 components: - type: Transform @@ -90012,14 +90146,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 18389 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,55.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 18426 components: - type: Transform @@ -90697,45 +90823,61 @@ entities: rot: 3.141592653589793 rad pos: -4.5,75.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20956 components: - type: Transform pos: -2.5,75.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20969 components: - type: Transform pos: 2.5,71.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20970 components: - type: Transform rot: 3.141592653589793 rad pos: 2.5,70.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20971 components: - type: Transform rot: -1.5707963267948966 rad pos: -6.5,70.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20972 components: - type: Transform rot: 1.5707963267948966 rad pos: -6.5,71.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 23850 components: - type: Transform rot: 3.141592653589793 rad pos: 50.5,3.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 24052 components: - type: Transform pos: 26.5,-39.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 24142 components: - type: Transform @@ -90765,12 +90907,16 @@ entities: rot: 3.141592653589793 rad pos: 7.5,14.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 25879 components: - type: Transform rot: 1.5707963267948966 rad pos: 50.5,5.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - proto: GasPipeBendAlt1 entities: - uid: 3762 @@ -90829,6 +90975,22 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 9870 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,53.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 10323 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -4.5,53.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 19042 components: - type: Transform @@ -90900,22 +91062,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19709 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -4.5,54.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19711 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -2.5,54.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19746 components: - type: Transform @@ -90937,35 +91083,47 @@ entities: rot: -1.5707963267948966 rad pos: 2.5,71.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20990 components: - type: Transform rot: 1.5707963267948966 rad pos: 2.5,72.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20991 components: - type: Transform rot: 3.141592653589793 rad pos: -6.5,71.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20992 components: - type: Transform pos: -6.5,72.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20999 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,75.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 21002 components: - type: Transform rot: 1.5707963267948966 rad pos: -2.5,75.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 21020 components: - type: Transform @@ -91122,7 +91280,7 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 9442 + - uid: 10310 components: - type: Transform pos: -0.5,-22.5 @@ -91134,6 +91292,8 @@ entities: - type: Transform pos: 6.5,-19.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 17088 components: - type: Transform @@ -91148,13 +91308,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17307 - components: - - type: Transform - pos: 1.5,-19.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 17322 components: - type: Transform @@ -91251,11 +91404,15 @@ entities: - type: Transform pos: -2.5,71.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 22700 components: - type: Transform pos: 50.5,4.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - proto: GasPipeFourwayAlt1 entities: - uid: 20980 @@ -91263,6 +91420,8 @@ entities: - type: Transform pos: -2.5,71.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - proto: GasPipeManifold entities: - uid: 3848 @@ -92188,6 +92347,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 5478 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,-21.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 5940 components: - type: Transform @@ -92196,6 +92363,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 6129 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,-21.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 6179 components: - type: Transform @@ -92369,6 +92544,8 @@ entities: - type: Transform pos: 34.5,41.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 6822 components: - type: Transform @@ -92504,6 +92681,20 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 9442 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,-41.5 + parent: 2 + - uid: 10164 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -4.5,54.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 10674 components: - type: Transform @@ -92517,6 +92708,22 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 11004 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,55.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' + - uid: 11005 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,54.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 11009 components: - type: Transform @@ -92569,6 +92776,8 @@ entities: rot: -1.5707963267948966 rad pos: 34.5,41.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 13977 components: - type: Transform @@ -92665,12 +92874,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 16892 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-41.5 - parent: 2 - uid: 16960 components: - type: Transform @@ -93077,6 +93280,8 @@ entities: rot: 1.5707963267948966 rad pos: -2.5,-52.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 17148 components: - type: Transform @@ -93091,16 +93296,22 @@ entities: rot: 1.5707963267948966 rad pos: -0.5,-52.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 17150 components: - type: Transform pos: -50.5,-23.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 17152 components: - type: Transform pos: -52.5,-24.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 17153 components: - type: Transform @@ -93123,6 +93334,8 @@ entities: rot: 1.5707963267948966 rad pos: -32.5,1.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 17158 components: - type: Transform @@ -93358,6 +93571,8 @@ entities: rot: 1.5707963267948966 rad pos: -31.5,1.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 17200 components: - type: Transform @@ -94070,6 +94285,8 @@ entities: rot: 1.5707963267948966 rad pos: -30.5,1.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 17305 components: - type: Transform @@ -95158,6 +95375,8 @@ entities: - type: Transform pos: -50.5,-22.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 17464 components: - type: Transform @@ -95989,6 +96208,8 @@ entities: rot: 1.5707963267948966 rad pos: -1.5,-52.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 17591 components: - type: Transform @@ -96296,30 +96517,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17635 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 0.5,-22.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17636 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 1.5,-22.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 17637 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-22.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 17638 components: - type: Transform @@ -96344,14 +96541,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 17641 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,-22.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 17642 components: - type: Transform @@ -97523,6 +97712,8 @@ entities: - type: Transform pos: -52.5,-23.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 17813 components: - type: Transform @@ -98590,16 +98781,22 @@ entities: rot: -1.5707963267948966 rad pos: 21.5,-50.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 17980 components: - type: Transform pos: -11.5,-43.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 17981 components: - type: Transform pos: -11.5,-42.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 17992 components: - type: Transform @@ -98685,11 +98882,15 @@ entities: - type: Transform pos: 44.5,-22.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 18018 components: - type: Transform pos: -0.5,-52.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 18022 components: - type: Transform @@ -100088,69 +100289,70 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 18434 - components: - - type: Transform - pos: -5.5,54.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 18435 components: - type: Transform rot: 1.5707963267948966 rad - pos: -4.5,55.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - - uid: 18437 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,55.5 + pos: 2.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#0335FCFF' + color: '#FF1212FF' - uid: 18438 components: - type: Transform pos: -2.5,56.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 18439 components: - type: Transform pos: -2.5,57.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 18440 components: - type: Transform pos: -2.5,58.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 18441 components: - type: Transform pos: -2.5,59.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 18442 components: - type: Transform pos: -2.5,62.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 18443 components: - type: Transform pos: -2.5,61.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 18444 components: - type: Transform pos: -2.5,63.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 18445 components: - type: Transform pos: -2.5,60.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 18449 components: - type: Transform @@ -100199,14 +100401,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 18456 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 23.5,49.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 18457 components: - type: Transform @@ -103777,6 +103971,8 @@ entities: - type: Transform pos: -11.5,-44.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 19238 components: - type: Transform @@ -106291,37 +106487,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19791 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 3.5,-19.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19792 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-19.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19793 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-20.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19794 - components: - - type: Transform - pos: 1.5,-18.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19796 components: - type: Transform @@ -106697,6 +106862,8 @@ entities: - type: Transform pos: 43.5,-21.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 19873 components: - type: Transform @@ -106937,6 +107104,8 @@ entities: rot: 3.141592653589793 rad pos: 26.5,-40.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 19926 components: - type: Transform @@ -107493,118 +107662,160 @@ entities: - type: Transform pos: -2.5,64.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20945 components: - type: Transform pos: -2.5,66.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20946 components: - type: Transform pos: -2.5,67.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20947 components: - type: Transform pos: -2.5,65.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20948 components: - type: Transform pos: -2.5,68.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20949 components: - type: Transform pos: -2.5,70.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20950 components: - type: Transform pos: -2.5,72.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20951 components: - type: Transform pos: -2.5,74.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20952 components: - type: Transform pos: -2.5,73.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20953 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,75.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20954 components: - type: Transform rot: 3.141592653589793 rad pos: -4.5,76.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20959 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,71.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20960 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,71.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20961 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,71.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20962 components: - type: Transform rot: -1.5707963267948966 rad pos: -8.5,70.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20963 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,70.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20964 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,71.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20965 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,71.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20966 components: - type: Transform rot: -1.5707963267948966 rad pos: 0.5,71.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20967 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,71.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 20968 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,70.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 21145 components: - type: Transform @@ -107681,6 +107892,8 @@ entities: - type: Transform pos: 35.5,35.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 22786 components: - type: Transform @@ -107695,12 +107908,16 @@ entities: rot: 3.141592653589793 rad pos: 49.5,6.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 22811 components: - type: Transform rot: 3.141592653589793 rad pos: 49.5,5.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 22812 components: - type: Transform @@ -107794,6 +108011,8 @@ entities: - type: Transform pos: 34.5,35.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 23853 components: - type: Transform @@ -107808,18 +108027,24 @@ entities: rot: -1.5707963267948966 rad pos: 27.5,-40.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 24051 components: - type: Transform rot: -1.5707963267948966 rad pos: 28.5,-40.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 24053 components: - type: Transform rot: -1.5707963267948966 rad pos: 26.5,-40.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 24132 components: - type: Transform @@ -107934,6 +108159,8 @@ entities: rot: -1.5707963267948966 rad pos: -5.5,-9.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 24554 components: - type: Transform @@ -108019,6 +108246,8 @@ entities: rot: -1.5707963267948966 rad pos: -8.5,-40.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 27006 components: - type: Transform @@ -108173,6 +108402,22 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 9157 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,54.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 10324 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.5,53.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 17381 components: - type: Transform @@ -108510,69 +108755,69 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19708 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,53.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - - uid: 19710 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,54.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19712 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,57.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 19713 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,58.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 19714 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,59.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 19715 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,60.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 19716 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,61.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 19717 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,56.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 19718 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,62.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 19727 components: - type: Transform pos: -2.5,55.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20056 components: - type: Transform @@ -108640,125 +108885,169 @@ entities: - type: Transform pos: -2.5,63.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20974 components: - type: Transform pos: -2.5,65.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20975 components: - type: Transform pos: -2.5,66.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20976 components: - type: Transform pos: -2.5,67.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20977 components: - type: Transform pos: -2.5,68.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20978 components: - type: Transform pos: -2.5,64.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20981 components: - type: Transform pos: -2.5,70.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20982 components: - type: Transform rot: -1.5707963267948966 rad pos: -1.5,71.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20983 components: - type: Transform rot: -1.5707963267948966 rad pos: 0.5,71.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20984 components: - type: Transform rot: -1.5707963267948966 rad pos: 1.5,71.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20985 components: - type: Transform rot: -1.5707963267948966 rad pos: -0.5,71.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20986 components: - type: Transform rot: -1.5707963267948966 rad pos: -3.5,71.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20987 components: - type: Transform rot: -1.5707963267948966 rad pos: -4.5,71.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20988 components: - type: Transform rot: -1.5707963267948966 rad pos: -5.5,71.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20993 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,72.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20994 components: - type: Transform rot: -1.5707963267948966 rad pos: -8.5,72.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20995 components: - type: Transform rot: -1.5707963267948966 rad pos: 3.5,72.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20996 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,72.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20997 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,73.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 20998 components: - type: Transform rot: 3.141592653589793 rad pos: -2.5,74.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 21000 components: - type: Transform pos: -0.5,76.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 21001 components: - type: Transform rot: 1.5707963267948966 rad pos: -1.5,75.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 21022 components: - type: Transform @@ -109456,6 +109745,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 10229 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.5,-19.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 10881 components: - type: Transform @@ -109471,6 +109768,22 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 10980 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,-18.5 + parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' + - uid: 11006 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -5.5,50.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 11077 components: - type: Transform @@ -109820,14 +110133,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 13218 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,50.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 13882 components: - type: Transform @@ -110344,6 +110649,8 @@ entities: rot: 1.5707963267948966 rad pos: 43.5,-22.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 18166 components: - type: Transform @@ -111184,6 +111491,8 @@ entities: rot: 3.141592653589793 rad pos: 49.5,4.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 19674 components: - type: Transform @@ -111252,6 +111561,8 @@ entities: rot: 1.5707963267948966 rad pos: 44.5,-21.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 19862 components: - type: Transform @@ -111342,6 +111653,8 @@ entities: rot: -1.5707963267948966 rad pos: -2.5,69.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 22397 components: - type: Transform @@ -111355,6 +111668,8 @@ entities: - type: Transform pos: 8.5,14.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - uid: 27517 components: - type: Transform @@ -111369,6 +111684,8 @@ entities: rot: -1.5707963267948966 rad pos: 7.5,15.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - proto: GasPipeTJunctionAlt1 entities: - uid: 3865 @@ -111439,6 +111756,8 @@ entities: rot: 1.5707963267948966 rad pos: -2.5,69.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - proto: GasPipeTJunctionAlt2 entities: - uid: 18692 @@ -111754,6 +112073,17 @@ entities: - 20490 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 10325 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 23.5,49.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 4136 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 12641 components: - type: Transform @@ -111997,6 +112327,9 @@ entities: rot: 3.141592653589793 rad pos: -48.5,-32.5 parent: 2 + - type: DeviceNetwork + deviceLists: + - 8537 - type: AtmosPipeColor color: '#0335FCFF' - uid: 18032 @@ -112650,7 +112983,7 @@ entities: parent: 2 - type: DeviceNetwork deviceLists: - - 13210 + - 20564 - type: AtmosPipeColor color: '#0335FCFF' - uid: 18273 @@ -112662,7 +112995,7 @@ entities: - type: DeviceNetwork deviceLists: - 20629 - - 13210 + - 20564 - type: AtmosPipeColor color: '#0335FCFF' - uid: 18286 @@ -112720,17 +113053,6 @@ entities: - 20598 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 18306 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 22.5,49.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 20597 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 18307 components: - type: Transform @@ -112881,7 +113203,6 @@ entities: - type: DeviceNetwork deviceLists: - 20502 - - 20498 - type: AtmosPipeColor color: '#0335FCFF' - uid: 19149 @@ -113343,9 +113664,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' - - type: DeviceNetwork - deviceLists: - - 20531 - uid: 20468 components: - type: Transform @@ -113378,7 +113696,6 @@ entities: - type: DeviceNetwork deviceLists: - 20529 - - 20531 - uid: 20472 components: - type: Transform @@ -113389,7 +113706,6 @@ entities: - type: DeviceNetwork deviceLists: - 20529 - - 20531 - uid: 20600 components: - type: Transform @@ -113426,6 +113742,8 @@ entities: - type: Transform pos: -4.5,77.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - type: DeviceNetwork deviceLists: - 20736 @@ -113435,6 +113753,8 @@ entities: rot: -1.5707963267948966 rad pos: 4.5,70.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - type: DeviceNetwork deviceLists: - 20738 @@ -113444,6 +113764,8 @@ entities: rot: 1.5707963267948966 rad pos: -9.5,70.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - type: DeviceNetwork deviceLists: - 20737 @@ -113453,6 +113775,8 @@ entities: rot: 1.5707963267948966 rad pos: -3.5,69.5 parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - type: DeviceNetwork deviceLists: - 28610 @@ -113496,6 +113820,8 @@ entities: rot: 3.141592653589793 rad pos: 12.5,-6.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - type: DeviceNetwork deviceLists: - 20626 @@ -113521,6 +113847,8 @@ entities: rot: -1.5707963267948966 rad pos: 51.5,3.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - type: DeviceNetwork deviceLists: - 20578 @@ -113551,6 +113879,8 @@ entities: rot: 3.141592653589793 rad pos: -22.5,0.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - type: DeviceNetwork deviceLists: - 20526 @@ -113579,6 +113909,8 @@ entities: rot: 1.5707963267948966 rad pos: 1.5,3.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - type: DeviceNetwork deviceLists: - 20529 @@ -113592,6 +113924,15 @@ entities: - 22739 - type: AtmosPipeColor color: '#FF1212FF' + - uid: 10926 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 6.5,-20.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 20564 - uid: 11145 components: - type: Transform @@ -113603,7 +113944,6 @@ entities: - type: DeviceNetwork deviceLists: - 20529 - - 20531 - uid: 12451 components: - type: Transform @@ -113620,9 +113960,11 @@ entities: - type: Transform pos: 6.5,-18.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - type: DeviceNetwork deviceLists: - - 13210 + - 20564 - uid: 17784 components: - type: Transform @@ -113663,6 +114005,8 @@ entities: rot: -1.5707963267948966 rad pos: 51.5,4.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - type: DeviceNetwork deviceLists: - 20578 @@ -113950,7 +114294,6 @@ entities: - type: DeviceNetwork deviceLists: - 20502 - - 20498 - type: AtmosPipeColor color: '#FF1212FF' - uid: 19153 @@ -113959,6 +114302,9 @@ entities: rot: 3.141592653589793 rad pos: -46.5,-31.5 parent: 2 + - type: DeviceNetwork + deviceLists: + - 8537 - type: AtmosPipeColor color: '#FF1212FF' - uid: 19160 @@ -114396,7 +114742,7 @@ entities: parent: 2 - type: DeviceNetwork deviceLists: - - 20597 + - 4136 - type: AtmosPipeColor color: '#FF1212FF' - uid: 19690 @@ -114591,17 +114937,6 @@ entities: - 20628 - type: AtmosPipeColor color: '#FF1212FF' - - uid: 19787 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 6.5,-21.5 - parent: 2 - - type: DeviceNetwork - deviceLists: - - 13210 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 19788 components: - type: Transform @@ -114611,7 +114946,7 @@ entities: - type: DeviceNetwork deviceLists: - 20629 - - 13210 + - 20564 - type: AtmosPipeColor color: '#FF1212FF' - uid: 19812 @@ -115119,9 +115454,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#FF1212FF' - - type: DeviceNetwork - deviceLists: - - 20531 - uid: 20467 components: - type: Transform @@ -115175,6 +115507,8 @@ entities: rot: -1.5707963267948966 rad pos: 44.5,-22.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - type: DeviceNetwork deviceLists: - 20521 @@ -115216,6 +115550,8 @@ entities: rot: 1.5707963267948966 rad pos: -9.5,72.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - type: DeviceNetwork deviceLists: - 20737 @@ -115227,6 +115563,8 @@ entities: rot: -1.5707963267948966 rad pos: 4.5,72.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - type: DeviceNetwork deviceLists: - 20738 @@ -115238,6 +115576,8 @@ entities: rot: -1.5707963267948966 rad pos: -1.5,69.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - type: DeviceNetwork deviceLists: - 28610 @@ -115248,6 +115588,8 @@ entities: - type: Transform pos: -0.5,77.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - type: DeviceNetwork deviceLists: - 20736 @@ -115305,6 +115647,8 @@ entities: rot: -1.5707963267948966 rad pos: 51.5,5.5 parent: 2 + - type: AtmosPipeColor + color: '#FF1212FF' - type: DeviceNetwork deviceLists: - 20578 @@ -115972,6 +116316,12 @@ entities: - type: Transform pos: -21.5,48.5 parent: 2 + - uid: 1084 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,55.5 + parent: 2 - uid: 1118 components: - type: Transform @@ -116707,24 +117057,12 @@ entities: rot: 3.141592653589793 rad pos: -35.5,-27.5 parent: 2 - - uid: 4136 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,56.5 - parent: 2 - uid: 4143 components: - type: Transform rot: 3.141592653589793 rad pos: -55.5,15.5 parent: 2 - - uid: 4166 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,56.5 - parent: 2 - uid: 4275 components: - type: Transform @@ -116752,6 +117090,12 @@ entities: - type: Transform pos: -18.5,-9.5 parent: 2 + - uid: 4800 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,55.5 + parent: 2 - uid: 4852 components: - type: Transform @@ -116777,12 +117121,6 @@ entities: - type: Transform pos: -68.5,32.5 parent: 2 - - uid: 4979 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,56.5 - parent: 2 - uid: 5004 components: - type: Transform @@ -116840,12 +117178,6 @@ entities: rot: -1.5707963267948966 rad pos: 14.5,-49.5 parent: 2 - - uid: 5476 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 21.5,51.5 - parent: 2 - uid: 5505 components: - type: Transform @@ -119015,6 +119347,12 @@ entities: rot: -1.5707963267948966 rad pos: 46.5,-42.5 parent: 2 + - uid: 20288 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -7.5,55.5 + parent: 2 - uid: 20335 components: - type: Transform @@ -119399,6 +119737,12 @@ entities: - type: Transform pos: -35.5,40.5 parent: 2 + - uid: 21777 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,57.5 + parent: 2 - uid: 21856 components: - type: Transform @@ -119417,6 +119761,12 @@ entities: rot: 3.141592653589793 rad pos: -42.5,-56.5 parent: 2 + - uid: 21871 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,57.5 + parent: 2 - uid: 21917 components: - type: Transform @@ -123507,10 +123857,10 @@ entities: parent: 2 - proto: HolopadServiceBotany entities: - - uid: 21863 + - uid: 22135 components: - type: Transform - pos: 8.5,-18.5 + pos: 8.5,-17.5 parent: 2 - proto: HolopadServiceBoxer entities: @@ -123623,72 +123973,91 @@ entities: - type: Transform pos: 11.5,-22.5 parent: 2 - - uid: 1942 + - uid: 9154 components: - type: Transform - pos: 9.5,-23.5 + rot: 1.5707963267948966 rad + pos: 10.5,-22.5 parent: 2 - - uid: 6129 + - uid: 9685 components: - type: Transform - pos: 8.5,-23.5 + pos: 67.5,19.5 parent: 2 - - uid: 6130 + - uid: 9686 components: - type: Transform - pos: 3.5,-23.5 + pos: 67.5,18.5 parent: 2 - - uid: 6132 + - uid: 9687 components: - type: Transform - pos: 7.5,-23.5 + pos: 67.5,17.5 parent: 2 - - uid: 6133 + - uid: 9689 components: - type: Transform - pos: 5.5,-23.5 + pos: 69.5,18.5 parent: 2 - - uid: 6134 + - uid: 9690 components: - type: Transform - pos: 4.5,-23.5 + pos: 69.5,17.5 parent: 2 - - uid: 9685 + - uid: 14304 components: - type: Transform - pos: 67.5,19.5 + rot: 1.5707963267948966 rad + pos: 5.5,-22.5 parent: 2 - - uid: 9686 + - uid: 14622 components: - type: Transform - pos: 67.5,18.5 + rot: 1.5707963267948966 rad + pos: 7.5,-22.5 parent: 2 - - uid: 9687 + - uid: 14623 components: - type: Transform - pos: 67.5,17.5 + rot: 1.5707963267948966 rad + pos: 8.5,-22.5 parent: 2 - - uid: 9689 + - uid: 14624 components: - type: Transform - pos: 69.5,18.5 + rot: 1.5707963267948966 rad + pos: 9.5,-22.5 parent: 2 - - uid: 9690 + - uid: 15656 components: - type: Transform - pos: 69.5,17.5 + rot: 1.5707963267948966 rad + pos: 3.5,-22.5 + parent: 2 + - uid: 17641 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,-22.5 parent: 2 - proto: hydroponicsTray entities: - - uid: 2112 + - uid: 181 components: - type: Transform - pos: 11.5,-21.5 + rot: 3.141592653589793 rad + pos: 5.5,-19.5 parent: 2 - - uid: 4406 + - uid: 1082 components: - type: Transform - pos: 5.5,-20.5 + rot: 3.141592653589793 rad + pos: 7.5,-19.5 + parent: 2 + - uid: 2112 + components: + - type: Transform + pos: 11.5,-21.5 parent: 2 - uid: 6014 components: @@ -123715,21 +124084,6 @@ entities: - type: Transform pos: 12.5,3.5 parent: 2 - - uid: 6136 - components: - - type: Transform - pos: 6.5,-20.5 - parent: 2 - - uid: 6137 - components: - - type: Transform - pos: 7.5,-20.5 - parent: 2 - - uid: 6138 - components: - - type: Transform - pos: 8.5,-20.5 - parent: 2 - uid: 6139 components: - type: Transform @@ -123765,10 +124119,11 @@ entities: - type: Transform pos: 11.5,-19.5 parent: 2 - - uid: 10233 + - uid: 17636 components: - type: Transform - pos: 9.5,-20.5 + rot: 3.141592653589793 rad + pos: 6.5,-19.5 parent: 2 - uid: 18576 components: @@ -123776,6 +124131,18 @@ entities: rot: -1.5707963267948966 rad pos: 15.5,-18.5 parent: 2 + - uid: 19792 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 9.5,-19.5 + parent: 2 + - uid: 20548 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 8.5,-19.5 + parent: 2 - proto: IDComputerCircuitboard entities: - uid: 8218 @@ -123988,10 +124355,10 @@ entities: - type: InsideEntityStorage - proto: IntercomAll entities: - - uid: 805 + - uid: 16892 components: - type: Transform - rot: 3.141592653589793 rad + rot: -1.5707963267948966 rad pos: -4.5,51.5 parent: 2 - type: Fixtures @@ -126654,6 +127021,16 @@ entities: - type: Transform pos: -25.5,-5.5 parent: 2 + - uid: 13947 + components: + - type: Transform + pos: 3.5,-24.5 + parent: 2 + - uid: 13948 + components: + - type: Transform + pos: 10.5,-24.5 + parent: 2 - uid: 14057 components: - type: Transform @@ -128135,6 +128512,11 @@ entities: - type: Transform pos: -20.5,22.5 parent: 2 + - uid: 13956 + components: + - type: Transform + pos: 9.5,-24.5 + parent: 2 - uid: 14506 components: - type: Transform @@ -128386,10 +128768,10 @@ entities: - type: Transform pos: 50.5,6.5 parent: 2 - - uid: 12785 + - uid: 22174 components: - type: Transform - pos: 6.5,-19.5 + pos: 6.5,-18.5 parent: 2 - uid: 22765 components: @@ -128494,8 +128876,24 @@ entities: - uid: 10309 components: - type: Transform - pos: -47.34249,-32.002304 + pos: -47.58456,-31.40442 parent: 2 + - type: HandheldLight + toggleActionEntity: 14302 + - type: ContainerContainer + containers: + cell_slot: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + actions: !type:Container + showEnts: False + occludes: True + ents: + - 14302 + - type: Physics + canCollide: True + - type: ActionsContainer - uid: 10908 components: - type: Transform @@ -129431,6 +129829,26 @@ entities: - type: Transform pos: 4.5,40.5 parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + Oxygen: 1.7459903 + Nitrogen: 6.568249 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 18803 + - 7100 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null - proto: LockerHeadOfPersonnelFilled entities: - uid: 7860 @@ -130956,6 +131374,11 @@ entities: - type: Transform pos: 26.5,-36.5 parent: 2 + - uid: 13946 + components: + - type: Transform + pos: 7.5,-24.5 + parent: 2 - uid: 25361 components: - type: Transform @@ -130986,11 +131409,6 @@ entities: - type: Transform pos: -5.5,-27.5 parent: 2 - - uid: 25367 - components: - - type: Transform - pos: 6.5,-25.5 - parent: 2 - uid: 25368 components: - type: Transform @@ -131227,12 +131645,12 @@ entities: - uid: 8084 components: - type: Transform - pos: 23.2712,47.710175 + pos: 24.351818,47.780937 parent: 2 - uid: 24467 components: - type: Transform - pos: 23.682653,47.628212 + pos: 24.617443,47.687187 parent: 2 - proto: MaterialCloth1 entities: @@ -131255,7 +131673,7 @@ entities: - uid: 8085 components: - type: Transform - pos: 23.622763,47.452362 + pos: 24.492443,47.468437 parent: 2 - proto: MaterialDurathread1 entities: @@ -132048,11 +132466,6 @@ entities: - type: Transform pos: -63.5,8.5 parent: 2 - - uid: 5192 - components: - - type: Transform - pos: -46.5,-36.5 - parent: 2 - uid: 5194 components: - type: Transform @@ -132083,6 +132496,11 @@ entities: - type: Transform pos: -48.5,18.5 parent: 2 + - uid: 18389 + components: + - type: Transform + pos: -46.5,-35.5 + parent: 2 - uid: 24148 components: - type: Transform @@ -132321,14 +132739,6 @@ entities: canCollide: False - type: InsideEntityStorage storage: 7004 -- proto: Ointment - entities: - - uid: 10166 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -7.52244,-38.42003 - parent: 2 - proto: OperatingTable entities: - uid: 508 @@ -132554,11 +132964,6 @@ entities: - type: Transform pos: -63.5,7.5 parent: 2 - - uid: 5200 - components: - - type: Transform - pos: -47.5,-36.5 - parent: 2 - uid: 7310 components: - type: Transform @@ -132594,6 +132999,11 @@ entities: - type: Transform pos: -60.5,-28.5 parent: 2 + - uid: 19793 + components: + - type: Transform + pos: -47.5,-35.5 + parent: 2 - uid: 24147 components: - type: Transform @@ -132807,6 +133217,8 @@ entities: entities: - uid: 8185 components: + - type: MetaData + name: Written warning from Centcomm - type: Transform pos: 10.470434,46.51848 parent: 2 @@ -132893,6 +133305,20 @@ entities: also, have your ship ready to deploy at any time, we expect the enemy will arrive any day now. + - uid: 19270 + components: + - type: MetaData + name: Message to command staff + - type: Transform + pos: 42.52061,45.38573 + parent: 2 + - type: Paper + content: >- + Please replace the old syndicate eva suits with these as quickly as possible. more will be sent soon. + + + + -central command requisitions department. - uid: 24566 components: - type: Transform @@ -132926,20 +133352,20 @@ entities: - type: Transform pos: -9.5,50.5 parent: 2 - - uid: 9263 + - uid: 9155 components: - type: Transform - pos: 2.5,64.5 + pos: -47.5,-32.5 parent: 2 - - uid: 10325 + - uid: 9263 components: - type: Transform - pos: -47.5,-33.5 + pos: 2.5,64.5 parent: 2 - - uid: 10326 + - uid: 11057 components: - type: Transform - pos: -47.5,-33.5 + pos: -1.5,48.5 parent: 2 - uid: 24503 components: @@ -133090,7 +133516,7 @@ entities: - uid: 3475 components: - type: Transform - pos: 34.188107,49.461956 + pos: 34.551987,49.550156 parent: 2 - uid: 8253 components: @@ -133154,7 +133580,7 @@ entities: - uid: 10237 components: - type: Transform - pos: 3.3652906,-20.351017 + pos: 3.5287576,-19.317938 parent: 2 - proto: PhoneInstrument entities: @@ -133287,7 +133713,7 @@ entities: - uid: 10240 components: - type: Transform - pos: 3.6777906,-20.491642 + pos: 3.2975044,-19.370266 parent: 2 - proto: PlasmaCanister entities: @@ -134219,6 +134645,11 @@ entities: - type: Transform pos: -16.5,16.5 parent: 2 + - uid: 22872 + components: + - type: Transform + pos: 19.5,49.5 + parent: 2 - uid: 25398 components: - type: Transform @@ -134415,17 +134846,18 @@ entities: fixtures: {} - proto: PosterContrabandAmbrosiaVulgaris entities: - - uid: 27037 + - uid: 9149 components: - type: Transform - pos: 2.5,-58.5 + rot: 1.5707963267948966 rad + pos: 4.5,-23.5 parent: 2 - type: Fixtures fixtures: {} - - uid: 27068 + - uid: 27037 components: - type: Transform - pos: 4.5,-24.5 + pos: 2.5,-58.5 parent: 2 - type: Fixtures fixtures: {} @@ -135028,11 +135460,11 @@ entities: fixtures: {} - proto: PosterLegitIan entities: - - uid: 21481 + - uid: 17307 components: - type: Transform rot: 3.141592653589793 rad - pos: 22.5,46.5 + pos: 21.5,46.5 parent: 2 - type: Fixtures fixtures: {} @@ -135163,6 +135595,16 @@ entities: - type: Transform pos: 47.5,28.5 parent: 2 + - uid: 20272 + components: + - type: Transform + pos: 22.5,47.5 + parent: 2 + - uid: 22351 + components: + - type: Transform + pos: -7.5,54.5 + parent: 2 - uid: 22672 components: - type: Transform @@ -135218,21 +135660,11 @@ entities: - type: Transform pos: 55.5,8.5 parent: 2 - - uid: 24259 - components: - - type: Transform - pos: 21.5,47.5 - parent: 2 - uid: 24260 components: - type: Transform pos: 34.5,47.5 parent: 2 - - uid: 24261 - components: - - type: Transform - pos: -7.5,55.5 - parent: 2 - uid: 24262 components: - type: Transform @@ -135478,6 +135910,12 @@ entities: - type: Transform pos: -38.5,-60.5 parent: 2 + - uid: 1731 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 20.5,49.5 + parent: 2 - uid: 8343 components: - type: Transform @@ -135790,6 +136228,12 @@ entities: - type: Transform pos: -32.5,-28.5 parent: 2 + - uid: 6150 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 3.5,-22.5 + parent: 2 - uid: 6535 components: - type: Transform @@ -135862,6 +136306,12 @@ entities: rot: -1.5707963267948966 rad pos: -12.5,-17.5 parent: 2 + - uid: 15655 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -7.5,53.5 + parent: 2 - uid: 17849 components: - type: Transform @@ -135880,6 +136330,12 @@ entities: rot: 3.141592653589793 rad pos: 39.5,21.5 parent: 2 + - uid: 18306 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,53.5 + parent: 2 - uid: 18568 components: - type: Transform @@ -136203,12 +136659,6 @@ entities: - type: Transform pos: 9.5,-16.5 parent: 2 - - uid: 22095 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 3.5,-23.5 - parent: 2 - uid: 22096 components: - type: Transform @@ -137053,18 +137503,6 @@ entities: rot: 3.141592653589793 rad pos: -1.5,33.5 parent: 2 - - uid: 22350 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,55.5 - parent: 2 - - uid: 22351 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,55.5 - parent: 2 - uid: 22352 components: - type: Transform @@ -138263,13 +138701,6 @@ entities: rot: 1.5707963267948966 rad pos: 62.5,36.5 parent: 2 -- proto: PresentRandom - entities: - - uid: 5762 - components: - - type: Transform - pos: -67.84109,-0.47318685 - parent: 2 - proto: PresentRandomUnsafe entities: - uid: 26221 @@ -138279,11 +138710,6 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage - - uid: 28251 - components: - - type: Transform - pos: -5.420538,-14.4642515 - parent: 2 - proto: Protolathe entities: - uid: 27772 @@ -138947,6 +139373,11 @@ entities: - type: Transform pos: -7.5,-54.5 parent: 2 + - uid: 6132 + components: + - type: Transform + pos: -49.5,-33.5 + parent: 2 - uid: 6323 components: - type: Transform @@ -139250,11 +139681,6 @@ entities: rot: 1.5707963267948966 rad pos: -54.5,-1.5 parent: 2 - - uid: 10310 - components: - - type: Transform - pos: -49.5,-33.5 - parent: 2 - uid: 10368 components: - type: Transform @@ -139414,12 +139840,6 @@ entities: - type: Transform pos: -38.5,-53.5 parent: 2 - - uid: 10926 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -70.5,-3.5 - parent: 2 - uid: 11064 components: - type: Transform @@ -139619,6 +140039,11 @@ entities: rot: 3.141592653589793 rad pos: 42.5,42.5 parent: 2 + - uid: 14303 + components: + - type: Transform + pos: -71.5,-3.5 + parent: 2 - uid: 15480 components: - type: Transform @@ -139630,6 +140055,11 @@ entities: - type: Transform pos: 35.5,-41.5 parent: 2 + - uid: 19708 + components: + - type: Transform + pos: 24.5,47.5 + parent: 2 - uid: 21671 components: - type: Transform @@ -141021,6 +141451,11 @@ entities: rot: 1.5707963267948966 rad pos: -56.5,14.5 parent: 2 + - uid: 13218 + components: + - type: Transform + pos: 8.5,-23.5 + parent: 2 - uid: 25227 components: - type: Transform @@ -141112,11 +141547,6 @@ entities: - type: Transform pos: 16.5,-15.5 parent: 2 - - uid: 27067 - components: - - type: Transform - pos: 8.5,-24.5 - parent: 2 - uid: 27083 components: - type: Transform @@ -141373,6 +141803,11 @@ entities: parent: 2 - proto: RandomPosterLegit entities: + - uid: 1285 + components: + - type: Transform + pos: -49.5,-34.5 + parent: 2 - uid: 27044 components: - type: Transform @@ -141383,11 +141818,6 @@ entities: - type: Transform pos: -54.5,-26.5 parent: 2 - - uid: 27046 - components: - - type: Transform - pos: -49.5,-35.5 - parent: 2 - uid: 27047 components: - type: Transform @@ -141453,6 +141883,12 @@ entities: rot: 1.5707963267948966 rad pos: -59.5,-9.5 parent: 2 + - uid: 4557 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,52.5 + parent: 2 - uid: 5811 components: - type: Transform @@ -142609,11 +143045,6 @@ entities: - type: Transform pos: -53.5,-38.5 parent: 2 - - uid: 26275 - components: - - type: Transform - pos: -3.5,52.5 - parent: 2 - uid: 27568 components: - type: Transform @@ -142666,6 +143097,11 @@ entities: - type: Transform pos: -67.5,-16.5 parent: 2 + - uid: 19036 + components: + - type: Transform + pos: 28.5,-45.5 + parent: 2 - proto: RandomVendingDrinks entities: - uid: 604 @@ -142683,6 +143119,11 @@ entities: - type: Transform pos: 7.5,-66.5 parent: 2 + - uid: 19281 + components: + - type: Transform + pos: 5.5,4.5 + parent: 2 - proto: RandomVendingSnacks entities: - uid: 6247 @@ -142811,6 +143252,12 @@ entities: rot: 3.141592653589793 rad pos: -39.5,9.5 parent: 2 + - uid: 390 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,55.5 + parent: 2 - uid: 451 components: - type: Transform @@ -143043,12 +143490,6 @@ entities: rot: -1.5707963267948966 rad pos: -7.5,-16.5 parent: 2 - - uid: 4112 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -5.5,56.5 - parent: 2 - uid: 4133 components: - type: Transform @@ -143538,6 +143979,12 @@ entities: rot: -1.5707963267948966 rad pos: 13.5,-85.5 parent: 2 + - uid: 8403 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,55.5 + parent: 2 - uid: 8527 components: - type: Transform @@ -143719,12 +144166,6 @@ entities: rot: 3.141592653589793 rad pos: 9.5,-88.5 parent: 2 - - uid: 11048 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 21.5,51.5 - parent: 2 - uid: 11049 components: - type: Transform @@ -143767,18 +144208,6 @@ entities: rot: 1.5707963267948966 rad pos: 7.5,53.5 parent: 2 - - uid: 11057 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -6.5,56.5 - parent: 2 - - uid: 11058 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -7.5,56.5 - parent: 2 - uid: 11059 components: - type: Transform @@ -144305,6 +144734,12 @@ entities: rot: -1.5707963267948966 rad pos: -38.5,23.5 parent: 2 + - uid: 20597 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -7.5,55.5 + parent: 2 - uid: 21034 components: - type: Transform @@ -146647,6 +147082,18 @@ entities: - type: Transform pos: -81.5,-20.5 parent: 2 + - uid: 21009 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,57.5 + parent: 2 + - uid: 21292 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,57.5 + parent: 2 - uid: 21308 components: - type: Transform @@ -147592,15 +148039,15 @@ entities: - CivilianServices - proto: SeedExtractor entities: - - uid: 6022 + - uid: 1078 components: - type: Transform - pos: 17.5,3.5 + pos: 8.5,-18.5 parent: 2 - - uid: 6151 + - uid: 6022 components: - type: Transform - pos: 8.5,-19.5 + pos: 17.5,3.5 parent: 2 - proto: ShardGlassPlasma entities: @@ -148824,11 +149271,11 @@ entities: parent: 2 - proto: SignAi entities: - - uid: 856 + - uid: 21873 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -1.5,56.5 + rot: 1.5707963267948966 rad + pos: -1.5,55.5 parent: 2 - type: Fixtures fixtures: {} @@ -149598,6 +150045,22 @@ entities: parent: 2 - type: Fixtures fixtures: {} + - uid: 19278 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,22.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 19280 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 1.5,16.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 23603 components: - type: Transform @@ -150719,19 +151182,19 @@ entities: fixtures: {} - proto: SignHydro1 entities: - - uid: 8171 + - uid: 8172 components: - type: Transform rot: -1.5707963267948966 rad - pos: 2.5,-23.5 + pos: 2.5,-16.5 parent: 2 - type: Fixtures fixtures: {} - - uid: 8172 + - uid: 22678 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-16.5 + rot: 1.5707963267948966 rad + pos: 2.5,-22.5 parent: 2 - type: Fixtures fixtures: {} @@ -151375,6 +151838,12 @@ entities: - type: Transform pos: 1.5,41.5 parent: 2 + - uid: 11058 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,52.5 + parent: 2 - uid: 22436 components: - type: Transform @@ -151555,17 +152024,17 @@ entities: parent: 2 - proto: SodaDispenser entities: - - uid: 3081 - components: - - type: Transform - pos: -1.5,55.5 - parent: 2 - uid: 6188 components: - type: Transform rot: -1.5707963267948966 rad pos: 21.5,-3.5 parent: 2 + - uid: 8088 + components: + - type: Transform + pos: -1.5,54.5 + parent: 2 - uid: 9638 components: - type: Transform @@ -154406,10 +154875,10 @@ entities: parent: 2 - proto: SpawnPointLawyer entities: - - uid: 26923 + - uid: 19794 components: - type: Transform - pos: -45.5,-33.5 + pos: -45.5,-32.5 parent: 2 - uid: 26924 components: @@ -156098,6 +156567,17 @@ entities: - 5929 - proto: SurveillanceCameraCommand entities: + - uid: 8082 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 24.5,50.5 + parent: 2 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraCommand + nameSet: True + id: HOP's office - uid: 22538 components: - type: Transform @@ -156323,17 +156803,6 @@ entities: - SurveillanceCameraCommand nameSet: True id: AI core east - - uid: 22559 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 20.5,50.5 - parent: 2 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraCommand - nameSet: True - id: HOP office - uid: 22562 components: - type: Transform @@ -158280,6 +158749,13 @@ entities: parent: 26286 - proto: SyndieFlag entities: + - uid: 21691 + components: + - type: Transform + pos: 0.5,51.5 + parent: 2 + - type: Fixtures + fixtures: {} - uid: 25360 components: - type: Transform @@ -159153,12 +159629,6 @@ entities: rot: -1.5707963267948966 rad pos: 48.5,26.5 parent: 2 - - uid: 21450 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-19.5 - parent: 2 - uid: 21451 components: - type: Transform @@ -159452,12 +159922,6 @@ entities: rot: 1.5707963267948966 rad pos: -5.5,52.5 parent: 2 - - uid: 1957 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,53.5 - parent: 2 - uid: 8263 components: - type: Transform @@ -159473,11 +159937,17 @@ entities: - type: Transform pos: -4.5,52.5 parent: 2 - - uid: 15687 + - uid: 14301 components: - type: Transform rot: 3.141592653589793 rad - pos: -4.5,53.5 + pos: -4.5,49.5 + parent: 2 + - uid: 15654 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,49.5 parent: 2 - uid: 18418 components: @@ -159505,15 +159975,16 @@ entities: parent: 2 - proto: TableFrame entities: - - uid: 8563 + - uid: 8587 components: - type: Transform - pos: 2.5,55.5 + pos: 5.5,50.5 parent: 2 - - uid: 8587 + - uid: 21296 components: - type: Transform - pos: 5.5,50.5 + rot: 1.5707963267948966 rad + pos: 3.5,54.5 parent: 2 - proto: TableGlass entities: @@ -160084,22 +160555,6 @@ entities: - type: Transform pos: 25.5,47.5 parent: 2 - - uid: 8083 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 23.5,47.5 - parent: 2 - - uid: 8089 - components: - - type: Transform - pos: 24.5,50.5 - parent: 2 - - uid: 8090 - components: - - type: Transform - pos: 25.5,50.5 - parent: 2 - uid: 8094 components: - type: Transform @@ -160161,11 +160616,6 @@ entities: - type: Transform pos: 1.5,54.5 parent: 2 - - uid: 8564 - components: - - type: Transform - pos: 1.5,55.5 - parent: 2 - uid: 8565 components: - type: Transform @@ -160208,6 +160658,12 @@ entities: - type: Transform pos: -55.5,-14.5 parent: 2 + - uid: 15657 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,49.5 + parent: 2 - uid: 16961 components: - type: Transform @@ -160759,15 +161215,20 @@ entities: - type: Transform pos: 9.5,49.5 parent: 2 - - uid: 1264 + - uid: 1083 components: - type: Transform - pos: -19.5,-10.5 + pos: -45.5,-31.5 parent: 2 - - uid: 1285 + - uid: 1136 components: - type: Transform - pos: 3.5,-20.5 + pos: -44.5,-31.5 + parent: 2 + - uid: 1264 + components: + - type: Transform + pos: -19.5,-10.5 parent: 2 - uid: 1293 components: @@ -160853,11 +161314,6 @@ entities: rot: 1.5707963267948966 rad pos: 19.5,-13.5 parent: 2 - - uid: 3596 - components: - - type: Transform - pos: -1.5,55.5 - parent: 2 - uid: 3597 components: - type: Transform @@ -160948,10 +161404,15 @@ entities: - type: Transform pos: 8.5,-2.5 parent: 2 - - uid: 6154 + - uid: 6146 components: - type: Transform - pos: 6.5,-19.5 + pos: -47.5,-31.5 + parent: 2 + - uid: 6147 + components: + - type: Transform + pos: -46.5,-31.5 parent: 2 - uid: 6184 components: @@ -161227,30 +161688,6 @@ entities: rot: 3.141592653589793 rad pos: -47.5,-32.5 parent: 2 - - uid: 9153 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -46.5,-32.5 - parent: 2 - - uid: 9154 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -47.5,-33.5 - parent: 2 - - uid: 9155 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -45.5,-32.5 - parent: 2 - - uid: 9157 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -44.5,-32.5 - parent: 2 - uid: 9607 components: - type: Transform @@ -161363,15 +161800,27 @@ entities: - type: Transform pos: -36.5,-55.5 parent: 2 + - uid: 15658 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,54.5 + parent: 2 - uid: 18470 components: - type: Transform pos: -1.5,51.5 parent: 2 - - uid: 18805 + - uid: 20104 components: - type: Transform - pos: -0.5,55.5 + rot: -1.5707963267948966 rad + pos: -0.5,54.5 + parent: 2 + - uid: 22095 + components: + - type: Transform + pos: 6.5,-18.5 parent: 2 - uid: 22728 components: @@ -161397,10 +161846,11 @@ entities: rot: 3.141592653589793 rad pos: 36.5,30.5 parent: 2 - - uid: 25649 + - uid: 22965 components: - type: Transform - pos: -4.5,55.5 + rot: 1.5707963267948966 rad + pos: 3.5,-19.5 parent: 2 - uid: 26490 components: @@ -162039,7 +162489,7 @@ entities: - uid: 25660 components: - type: Transform - pos: -1.5581169,54.173946 + pos: -1.7069762,53.369972 parent: 2 - proto: ToyFigurineAtmosTech entities: @@ -162060,7 +162510,7 @@ entities: - uid: 6958 components: - type: Transform - pos: 6.164332,-19.290022 + pos: 6.2181187,-18.503271 parent: 2 - proto: ToyFigurineBoxer entities: @@ -162191,7 +162641,7 @@ entities: - uid: 10308 components: - type: Transform - pos: -44.670616,-32.23668 + pos: -44.756435,-31.43567 parent: 2 - proto: ToyFigurineLibrarian entities: @@ -162777,11 +163227,10 @@ entities: parent: 2 - proto: UniformPrinter entities: - - uid: 8082 + - uid: 15659 components: - type: Transform - rot: 3.141592653589793 rad - pos: 22.5,47.5 + pos: 23.5,47.5 parent: 2 - type: TechnologyDatabase supportedDisciplines: @@ -162856,15 +163305,15 @@ entities: parent: 2 - proto: VendingMachineBooze entities: - - uid: 20200 + - uid: 19791 components: - type: Transform - pos: 54.5,-17.5 + pos: -3.5,54.5 parent: 2 - - uid: 20604 + - uid: 20200 components: - type: Transform - pos: -3.5,55.5 + pos: 54.5,-17.5 parent: 2 - proto: VendingMachineBoozeSyndicate entities: @@ -162983,6 +163432,11 @@ entities: - type: Transform pos: -48.5,-5.5 parent: 2 + - uid: 19296 + components: + - type: Transform + pos: -44.5,-3.5 + parent: 2 - proto: VendingMachineCoffee entities: - uid: 5073 @@ -163129,6 +163583,9 @@ entities: - type: Transform pos: -15.5,-41.5 parent: 2 + - type: AccessReader + accessListsOriginal: + - - Medical - proto: VendingMachineMediDrobe entities: - uid: 6815 @@ -163138,10 +163595,10 @@ entities: parent: 2 - proto: VendingMachineNutri entities: - - uid: 6155 + - uid: 22134 components: - type: Transform - pos: 5.5,-19.5 + pos: 5.5,-18.5 parent: 2 - proto: VendingMachineRestockHotDrinks entities: @@ -163158,6 +163615,7 @@ entities: - uid: 10387 components: - type: MetaData + desc: slot into your department's Syndimed or Syndimedplus to dispense. handle with care. name: SyndiMed restock box - type: Transform pos: -7.505855,-55.391235 @@ -163213,10 +163671,10 @@ entities: parent: 2 - proto: VendingMachineSeeds entities: - - uid: 10229 + - uid: 21968 components: - type: Transform - pos: 9.5,-19.5 + pos: 9.5,-18.5 parent: 2 - proto: VendingMachineSeedsUnlocked entities: @@ -165064,11 +165522,6 @@ entities: - type: Transform pos: -8.5,55.5 parent: 2 - - uid: 1078 - components: - - type: Transform - pos: -4.5,56.5 - parent: 2 - uid: 1080 components: - type: Transform @@ -165081,31 +165534,6 @@ entities: rot: -1.5707963267948966 rad pos: 39.5,13.5 parent: 2 - - uid: 1082 - components: - - type: Transform - pos: -0.5,56.5 - parent: 2 - - uid: 1083 - components: - - type: Transform - pos: 1.5,56.5 - parent: 2 - - uid: 1084 - components: - - type: Transform - pos: 2.5,56.5 - parent: 2 - - uid: 1085 - components: - - type: Transform - pos: 3.5,56.5 - parent: 2 - - uid: 1086 - components: - - type: Transform - pos: 0.5,56.5 - parent: 2 - uid: 1087 components: - type: Transform @@ -165213,16 +165641,6 @@ entities: - type: Transform pos: 19.5,50.5 parent: 2 - - uid: 1111 - components: - - type: Transform - pos: 19.5,51.5 - parent: 2 - - uid: 1112 - components: - - type: Transform - pos: 20.5,51.5 - parent: 2 - uid: 1119 components: - type: Transform @@ -165730,11 +166148,6 @@ entities: rot: 1.5707963267948966 rad pos: 12.5,52.5 parent: 2 - - uid: 1578 - components: - - type: Transform - pos: 29.5,46.5 - parent: 2 - uid: 1579 components: - type: Transform @@ -165745,11 +166158,6 @@ entities: - type: Transform pos: 31.5,46.5 parent: 2 - - uid: 1581 - components: - - type: Transform - pos: 22.5,46.5 - parent: 2 - uid: 1583 components: - type: Transform @@ -166363,6 +166771,11 @@ entities: - type: Transform pos: -64.5,-24.5 parent: 2 + - uid: 2063 + components: + - type: Transform + pos: 21.5,51.5 + parent: 2 - uid: 2104 components: - type: Transform @@ -168042,6 +168455,12 @@ entities: - type: Transform pos: -41.5,34.5 parent: 2 + - uid: 3596 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 21.5,50.5 + parent: 2 - uid: 3603 components: - type: Transform @@ -168190,11 +168609,6 @@ entities: - type: Transform pos: -49.5,3.5 parent: 2 - - uid: 3867 - components: - - type: Transform - pos: -3.5,56.5 - parent: 2 - uid: 3868 components: - type: Transform @@ -168455,6 +168869,12 @@ entities: - type: Transform pos: -8.5,-31.5 parent: 2 + - uid: 4357 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 21.5,49.5 + parent: 2 - uid: 4420 components: - type: Transform @@ -168614,6 +169034,12 @@ entities: - type: Transform pos: -60.5,55.5 parent: 2 + - uid: 4802 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -4.5,55.5 + parent: 2 - uid: 4806 components: - type: Transform @@ -171196,12 +171622,6 @@ entities: rot: 1.5707963267948966 rad pos: -49.5,23.5 parent: 2 - - uid: 11056 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,56.5 - parent: 2 - uid: 11085 components: - type: Transform @@ -171428,6 +171848,12 @@ entities: - type: Transform pos: -42.5,43.5 parent: 2 + - uid: 14626 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 21.5,47.5 + parent: 2 - uid: 14636 components: - type: Transform @@ -171630,6 +172056,18 @@ entities: - type: Transform pos: -21.5,-21.5 parent: 2 + - uid: 18437 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,55.5 + parent: 2 + - uid: 18456 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,55.5 + parent: 2 - uid: 18523 components: - type: Transform @@ -171661,6 +172099,12 @@ entities: rot: -1.5707963267948966 rad pos: 38.5,38.5 parent: 2 + - uid: 18805 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,55.5 + parent: 2 - uid: 18813 components: - type: Transform @@ -172069,6 +172513,17 @@ entities: rot: -1.5707963267948966 rad pos: -35.5,-3.5 parent: 2 + - uid: 21450 + components: + - type: Transform + pos: 20.5,50.5 + parent: 2 + - uid: 21463 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 29.5,46.5 + parent: 2 - uid: 21491 components: - type: Transform @@ -172089,6 +172544,12 @@ entities: - type: Transform pos: -35.5,-16.5 parent: 2 + - uid: 21601 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,56.5 + parent: 2 - uid: 21631 components: - type: Transform @@ -172146,6 +172607,12 @@ entities: - type: Transform pos: 60.5,-24.5 parent: 2 + - uid: 22350 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,55.5 + parent: 2 - uid: 22428 components: - type: Transform @@ -172300,6 +172767,12 @@ entities: - type: Transform pos: -40.5,60.5 parent: 2 + - uid: 22987 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,55.5 + parent: 2 - uid: 22988 components: - type: Transform @@ -173612,11 +174085,6 @@ entities: - type: Transform pos: 2.5,-24.5 parent: 2 - - uid: 181 - components: - - type: Transform - pos: 2.5,-21.5 - parent: 2 - uid: 182 components: - type: Transform @@ -174177,16 +174645,21 @@ entities: - type: Transform pos: -23.5,-63.5 parent: 2 - - uid: 1114 + - uid: 1111 components: - type: Transform - rot: 3.141592653589793 rad - pos: -7.5,-43.5 + pos: -70.5,-5.5 parent: 2 - - uid: 1136 + - uid: 1112 components: - type: Transform - pos: -3.5,57.5 + pos: -70.5,-3.5 + parent: 2 + - uid: 1114 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -7.5,-43.5 parent: 2 - uid: 1146 components: @@ -175331,11 +175804,6 @@ entities: - type: Transform pos: -23.5,-60.5 parent: 2 - - uid: 1699 - components: - - type: Transform - pos: -45.5,-35.5 - parent: 2 - uid: 1700 components: - type: Transform @@ -175372,11 +175840,6 @@ entities: - type: Transform pos: 8.5,-43.5 parent: 2 - - uid: 1709 - components: - - type: Transform - pos: -49.5,-35.5 - parent: 2 - uid: 1710 components: - type: Transform @@ -175387,11 +175850,6 @@ entities: - type: Transform pos: -49.5,-34.5 parent: 2 - - uid: 1714 - components: - - type: Transform - pos: -47.5,-35.5 - parent: 2 - uid: 1722 components: - type: Transform @@ -177392,11 +177850,6 @@ entities: - type: Transform pos: 70.5,34.5 parent: 2 - - uid: 4144 - components: - - type: Transform - pos: -1.5,57.5 - parent: 2 - uid: 4157 components: - type: Transform @@ -177525,21 +177978,6 @@ entities: rot: 1.5707963267948966 rad pos: -56.5,-20.5 parent: 2 - - uid: 4800 - components: - - type: Transform - pos: 4.5,-24.5 - parent: 2 - - uid: 4801 - components: - - type: Transform - pos: 3.5,-24.5 - parent: 2 - - uid: 4802 - components: - - type: Transform - pos: 7.5,-24.5 - parent: 2 - uid: 4870 components: - type: Transform @@ -177566,11 +178004,6 @@ entities: - type: Transform pos: -44.5,-37.5 parent: 2 - - uid: 4887 - components: - - type: Transform - pos: -44.5,-35.5 - parent: 2 - uid: 4889 components: - type: Transform @@ -178476,6 +178909,12 @@ entities: - type: Transform pos: -64.5,15.5 parent: 2 + - uid: 8091 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -44.5,-34.5 + parent: 2 - uid: 8101 components: - type: Transform @@ -178536,11 +178975,6 @@ entities: - type: Transform pos: -64.5,11.5 parent: 2 - - uid: 8289 - components: - - type: Transform - pos: -69.5,-6.5 - parent: 2 - uid: 8290 components: - type: Transform @@ -178650,6 +179084,11 @@ entities: rot: 1.5707963267948966 rad pos: -56.5,-19.5 parent: 2 + - uid: 8404 + components: + - type: Transform + pos: -70.5,-6.5 + parent: 2 - uid: 8430 components: - type: Transform @@ -178711,6 +179150,11 @@ entities: - type: Transform pos: 20.5,-12.5 parent: 2 + - uid: 8563 + components: + - type: Transform + pos: 2.5,-19.5 + parent: 2 - uid: 8608 components: - type: Transform @@ -178903,11 +179347,10 @@ entities: - type: Transform pos: 67.5,32.5 parent: 2 - - uid: 9149 + - uid: 9153 components: - type: Transform - rot: 3.141592653589793 rad - pos: -46.5,-35.5 + pos: 8.5,-23.5 parent: 2 - uid: 9207 components: @@ -179321,11 +179764,6 @@ entities: - type: Transform pos: 15.5,-20.5 parent: 2 - - uid: 9870 - components: - - type: Transform - pos: 9.5,-24.5 - parent: 2 - uid: 9873 components: - type: Transform @@ -179438,11 +179876,6 @@ entities: rot: -1.5707963267948966 rad pos: 17.5,-15.5 parent: 2 - - uid: 10071 - components: - - type: Transform - pos: 10.5,-24.5 - parent: 2 - uid: 10098 components: - type: Transform @@ -179693,6 +180126,12 @@ entities: rot: 3.141592653589793 rad pos: 52.5,38.5 parent: 2 + - uid: 11056 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,-22.5 + parent: 2 - uid: 11137 components: - type: Transform @@ -179792,18 +180231,38 @@ entities: rot: 1.5707963267948966 rad pos: 32.5,31.5 parent: 2 + - uid: 12643 + components: + - type: Transform + pos: 6.5,-23.5 + parent: 2 + - uid: 12650 + components: + - type: Transform + pos: 5.5,-23.5 + parent: 2 - uid: 12731 components: - type: Transform rot: -1.5707963267948966 rad pos: -38.5,-17.5 parent: 2 + - uid: 12889 + components: + - type: Transform + pos: 4.5,-23.5 + parent: 2 - uid: 13208 components: - type: Transform rot: 1.5707963267948966 rad pos: -25.5,-43.5 parent: 2 + - uid: 13210 + components: + - type: Transform + pos: 3.5,-23.5 + parent: 2 - uid: 13211 components: - type: Transform @@ -179984,11 +180443,6 @@ entities: - type: Transform pos: 16.5,-16.5 parent: 2 - - uid: 17048 - components: - - type: Transform - pos: 8.5,-24.5 - parent: 2 - uid: 17053 components: - type: Transform @@ -180111,12 +180565,36 @@ entities: rot: 1.5707963267948966 rad pos: -27.5,-40.5 parent: 2 + - uid: 21783 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -45.5,-34.5 + parent: 2 + - uid: 21863 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -47.5,-34.5 + parent: 2 - uid: 21929 components: - type: Transform rot: 1.5707963267948966 rad pos: -56.5,-23.5 parent: 2 + - uid: 22027 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -44.5,-35.5 + parent: 2 + - uid: 22053 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -46.5,-34.5 + parent: 2 - uid: 22055 components: - type: Transform @@ -180242,11 +180720,6 @@ entities: - type: Transform pos: -9.5,-34.5 parent: 2 - - uid: 22987 - components: - - type: Transform - pos: 6.5,-24.5 - parent: 2 - uid: 23208 components: - type: Transform @@ -180468,10 +180941,15 @@ entities: - type: Transform pos: -42.5,-58.5 parent: 2 - - uid: 23565 + - uid: 23753 + components: + - type: Transform + pos: 9.5,-23.5 + parent: 2 + - uid: 23754 components: - type: Transform - pos: 5.5,-24.5 + pos: 7.5,-23.5 parent: 2 - uid: 23981 components: @@ -181138,13 +181616,6 @@ entities: - type: Transform pos: -4.5,-5.5 parent: 26470 -- proto: WardrobeBlackFilled - entities: - - uid: 7100 - components: - - type: Transform - pos: -43.5,-2.5 - parent: 2 - proto: WardrobeBlueFilled entities: - uid: 7069 @@ -181489,25 +181960,25 @@ entities: - type: Transform pos: 51.5,-29.5 parent: 2 - - uid: 8537 + - uid: 10562 components: - type: Transform - pos: -7.5,54.5 + pos: 45.5,12.5 parent: 2 - - uid: 10319 + - uid: 10569 components: - type: Transform - pos: -49.5,-32.5 + pos: -3.5,4.5 parent: 2 - - uid: 10562 + - uid: 20259 components: - type: Transform - pos: 45.5,12.5 + pos: -7.5,53.5 parent: 2 - - uid: 10569 + - uid: 22559 components: - type: Transform - pos: -3.5,4.5 + pos: -49.5,-32.5 parent: 2 - uid: 23011 components: @@ -181568,10 +182039,10 @@ entities: - type: Transform pos: -2.5,-24.5 parent: 2 - - uid: 21777 + - uid: 19787 components: - type: Transform - pos: 3.5,-21.5 + pos: 3.5,-20.5 parent: 2 - proto: WaterVaporCanister entities: @@ -181636,11 +182107,6 @@ entities: rot: 3.141592653589793 rad pos: 30.5,50.5 parent: 2 - - uid: 8093 - components: - - type: Transform - pos: 25.5,50.5 - parent: 2 - uid: 8592 components: - type: Transform @@ -181935,12 +182401,12 @@ entities: - uid: 10238 components: - type: Transform - pos: 3.6152906,-20.272892 + pos: 3.6568794,-19.495266 parent: 2 - uid: 10239 components: - type: Transform - pos: 3.3652906,-20.444767 + pos: 3.4193826,-19.583563 parent: 2 - proto: WehMedipen entities: @@ -181997,6 +182463,11 @@ entities: - type: Transform pos: -65.5,8.5 parent: 2 + - uid: 8083 + components: + - type: Transform + pos: 19.5,48.5 + parent: 2 - uid: 12317 components: - type: Transform @@ -182096,12 +182567,6 @@ entities: rot: 1.5707963267948966 rad pos: 2.5,-18.5 parent: 2 - - uid: 21449 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 2.5,-19.5 - parent: 2 - proto: WindoorKitchenHydroponicsLocked entities: - uid: 21701 diff --git a/Resources/Prototypes/Maps/serpentcrest.yml b/Resources/Prototypes/Maps/serpentcrest.yml index d34bc2cf9b5..f879444173e 100644 --- a/Resources/Prototypes/Maps/serpentcrest.yml +++ b/Resources/Prototypes/Maps/serpentcrest.yml @@ -2,7 +2,7 @@ id: Serpentcrest mapName: 'Serpentcrest' mapPath: /Maps/serpentcrest.yml - minPlayers: 40 + minPlayers: 50 stations: Serpentcrest: stationProto: StandardNanotrasenStation From 4abdcf7a733a1331bd69a6760592166489c48bc2 Mon Sep 17 00:00:00 2001 From: pathetic meowmeow Date: Mon, 9 Feb 2026 15:30:20 -0500 Subject: [PATCH 309/603] Ensure profile loading only returns valid species (#42842) * Ensure profile loading only returns valid species * punt conversion logic outside of the database --- .../Tests/Preferences/ServerDbSqliteTests.cs | 57 +++++- Content.Server/Database/ServerDbBase.cs | 180 +++--------------- Content.Server/Database/ServerDbManager.cs | 22 ++- Content.Server/Database/ServerDbPostgres.cs | 4 +- Content.Server/Database/ServerDbSqlite.cs | 4 +- .../Managers/ServerPreferencesManager.cs | 145 +++++++++++++- 6 files changed, 240 insertions(+), 172 deletions(-) diff --git a/Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs b/Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs index 9e90919ef41..9d237ef7f3c 100644 --- a/Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs +++ b/Content.IntegrationTests/Tests/Preferences/ServerDbSqliteTests.cs @@ -1,8 +1,11 @@ using System.Collections.Generic; using System.Linq; +using System.Threading; using Content.Server.Database; +using Content.Server.Preferences.Managers; using Content.Shared.GameTicking; using Content.Shared.Humanoid; +using Content.Shared.Humanoid.Prototypes; using Content.Shared.Preferences; using Content.Shared.Preferences.Loadouts; using Content.Shared.Preferences.Loadouts.Effects; @@ -14,6 +17,7 @@ using Robust.Shared.Log; using Robust.Shared.Maths; using Robust.Shared.Network; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization.Manager; using Robust.UnitTesting; @@ -58,13 +62,12 @@ private static ServerDbSqlite GetDb(RobustIntegrationTest.ServerIntegrationInsta { var cfg = server.ResolveDependency(); var serialization = server.ResolveDependency(); - var task = server.ResolveDependency(); var opsLog = server.ResolveDependency().GetSawmill("db.ops"); var builder = new DbContextOptionsBuilder(); var conn = new SqliteConnection("Data Source=:memory:"); conn.Open(); builder.UseSqlite(conn); - return new ServerDbSqlite(() => builder.Options, true, cfg, true, opsLog, task, serialization); + return new ServerDbSqlite(() => builder.Options, true, cfg, true, opsLog, serialization); } [Test] @@ -83,12 +86,14 @@ public async Task TestInitPrefs() { var pair = await PoolManager.GetServerClient(); var db = GetDb(pair.Server); + var preferences = (ServerPreferencesManager)pair.Server.ResolveDependency(); var username = new NetUserId(new Guid("640bd619-fc8d-4fe2-bf3c-4a5fb17d6ddd")); const int slot = 0; var originalProfile = CharlieCharlieson(); await db.InitPrefsAsync(username, originalProfile); var prefs = await db.GetPlayerPreferencesAsync(username); - Assert.That(prefs.Characters.Single(p => p.Key == slot).Value.MemberwiseEquals(originalProfile)); + var profile = preferences.ConvertProfiles(prefs!.Profiles.Find(p => p.Slot == slot)); + Assert.That(profile.MemberwiseEquals(originalProfile)); await pair.CleanReturnAsync(); } @@ -104,7 +109,7 @@ public async Task TestDeleteCharacter() await db.SaveSelectedCharacterIndexAsync(username, 1); await db.SaveCharacterSlotAsync(username, null, 1); var prefs = await db.GetPlayerPreferencesAsync(username); - Assert.That(!prefs.Characters.Any(p => p.Key != 0)); + Assert.That(prefs!.Profiles, Has.Count.EqualTo(1)); await pair.CleanReturnAsync(); } @@ -123,5 +128,49 @@ private static NetUserId NewUserId() { return new(Guid.NewGuid()); } + + private const string InvalidSpecies = "WingusDingus"; + + private static bool[] _trueFalse = [true, false]; + + [Test] + [TestCaseSource(nameof(_trueFalse))] + public async Task InvalidSpeciesConversion(bool legacy) + { + var pair = await PoolManager.GetServerClient(); + var server = pair.Server; + var db = GetDb(pair.Server); + var preferences = (ServerPreferencesManager)pair.Server.ResolveDependency(); + + var proto = server.ResolveDependency(); + Assert.That(!proto.HasIndex(InvalidSpecies), "You should not have added a species called WingusDingus, but change it in this test to something else I guess"); + + var bogus = new HumanoidCharacterProfile() + { + Species = InvalidSpecies, + }; + + var username = new NetUserId(new Guid("640bd619-fc8d-4fe2-bf3c-4a5fb17d6ddd")); + await db.InitPrefsAsync(username, new HumanoidCharacterProfile()); + await db.SaveCharacterSlotAsync(username, bogus, 0); + await db.SaveSelectedCharacterIndexAsync(username, 0); + + if (legacy) + await db.MakeCharacterSlotLegacyAsync(username, 0); + + var prefs = await db.GetPlayerPreferencesAsync(username, CancellationToken.None); + + Assert.That(prefs, Is.Not.Null); + await server.WaitAssertion(() => + { + var converted = preferences.ConvertPreferences(prefs); + + Assert.That(converted.Characters, Has.Count.EqualTo(1)); + Assert.That(converted.Characters[0].Species, Is.Not.EqualTo(InvalidSpecies)); + Assert.That(converted.Characters[0].Species, Is.EqualTo(HumanoidCharacterProfile.DefaultSpecies)); + }); + + await pair.CleanReturnAsync(); + } } } diff --git a/Content.Server/Database/ServerDbBase.cs b/Content.Server/Database/ServerDbBase.cs index eee17bdef87..f86c29e7d2a 100644 --- a/Content.Server/Database/ServerDbBase.cs +++ b/Content.Server/Database/ServerDbBase.cs @@ -9,18 +9,12 @@ using System.Threading.Tasks; using Content.Server.Administration.Logs; using Content.Shared.Administration.Logs; -using Content.Shared.Body; using Content.Shared.Construction.Prototypes; using Content.Shared.Database; using Content.Shared.Humanoid; -using Content.Shared.Humanoid.Markings; using Content.Shared.Preferences; -using Content.Shared.Preferences.Loadouts; using Content.Shared.Roles; -using Content.Shared.Traits; using Microsoft.EntityFrameworkCore; -using Robust.Shared.Asynchronous; -using Robust.Shared.Enums; using Robust.Shared.Network; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.Manager; @@ -32,25 +26,23 @@ public abstract class ServerDbBase { private readonly ISawmill _opsLog; public event Action? OnNotificationReceived; - private readonly ITaskManager _task; private readonly ISerializationManager _serialization; /// Sawmill to trace log database operations to. - public ServerDbBase(ISawmill opsLog, ITaskManager taskManager, ISerializationManager serialization) + public ServerDbBase(ISawmill opsLog, ISerializationManager serialization) { - _task = taskManager; _serialization = serialization; _opsLog = opsLog; } #region Preferences - public async Task GetPlayerPreferencesAsync( + public async Task GetPlayerPreferencesAsync( NetUserId userId, CancellationToken cancel = default) { await using var db = await GetDb(cancel); - var prefs = await db.DbContext + return await db.DbContext .Preference .Include(p => p.Profiles).ThenInclude(h => h.Jobs) .Include(p => p.Profiles).ThenInclude(h => h.Antags) @@ -61,29 +53,37 @@ public ServerDbBase(ISawmill opsLog, ITaskManager taskManager, ISerializationMan .ThenInclude(group => group.Loadouts) .AsSplitQuery() .SingleOrDefaultAsync(p => p.UserId == userId.UserId, cancel); + } - if (prefs is null) - return null; - - var maxSlot = prefs.Profiles.Max(p => p.Slot) + 1; - var profiles = new Dictionary(maxSlot); - foreach (var profile in prefs.Profiles) - { - profiles[profile.Slot] = await ConvertProfiles(profile); - } + public async Task SaveSelectedCharacterIndexAsync(NetUserId userId, int index) + { + await using var db = await GetDb(); - var constructionFavorites = new List>(prefs.ConstructionFavorites.Count); - foreach (var favorite in prefs.ConstructionFavorites) - constructionFavorites.Add(new ProtoId(favorite)); + await SetSelectedCharacterSlotAsync(userId, index, db.DbContext); - return new PlayerPreferences(profiles, prefs.SelectedCharacterSlot, Color.FromHex(prefs.AdminOOCColor), constructionFavorites); + await db.DbContext.SaveChangesAsync(); } - public async Task SaveSelectedCharacterIndexAsync(NetUserId userId, int index) + /// + /// Only intended for use in unit tests - drops the organ marking data from a profile in the given slot + /// + /// The user whose profile to modify + /// The slot index to modify + public async Task MakeCharacterSlotLegacyAsync(NetUserId userId, int slot) { await using var db = await GetDb(); - await SetSelectedCharacterSlotAsync(userId, index, db.DbContext); + var oldProfile = await db.DbContext.Profile + .Include(p => p.Preference) + .Where(p => p.Preference.UserId == userId.UserId) + .AsSplitQuery() + .SingleOrDefaultAsync(h => h.Slot == slot); + + if (oldProfile == null) + return; + + oldProfile.OrganMarkings = null; + oldProfile.Markings = JsonSerializer.SerializeToDocument(new List()); await db.DbContext.SaveChangesAsync(); } @@ -139,7 +139,7 @@ private static async Task DeleteCharacterSlot(ServerDbContext db, NetUserId user db.Profile.Remove(profile); } - public async Task InitPrefsAsync(NetUserId userId, HumanoidCharacterProfile defaultProfile) + public async Task InitPrefsAsync(NetUserId userId, HumanoidCharacterProfile defaultProfile) { await using var db = await GetDb(); @@ -158,7 +158,7 @@ public async Task InitPrefsAsync(NetUserId userId, HumanoidCh await db.DbContext.SaveChangesAsync(); - return new PlayerPreferences(new[] { new KeyValuePair(0, defaultProfile) }, 0, Color.FromHex(prefs.AdminOOCColor), []); + return prefs; } public async Task DeleteSlotAndSetSelectedIndex(NetUserId userId, int deleteSlot, int newSlot) @@ -203,130 +203,6 @@ private static async Task SetSelectedCharacterSlotAsync(NetUserId userId, int ne prefs.SelectedCharacterSlot = newSlot; } - private static TValue? TryDeserialize(JsonDocument document) where TValue : class - { - try - { - return document.Deserialize(); - } - catch (JsonException) - { - return null; - } - } - - private async Task ConvertProfiles(Profile profile) - { - - var jobs = profile.Jobs.ToDictionary(j => new ProtoId(j.JobName), j => (JobPriority) j.Priority); - var antags = profile.Antags.Select(a => new ProtoId(a.AntagName)); - var traits = profile.Traits.Select(t => new ProtoId(t.TraitName)); - - var sex = Sex.Male; - if (Enum.TryParse(profile.Sex, true, out var sexVal)) - sex = sexVal; - - var spawnPriority = (SpawnPriorityPreference) profile.SpawnPriority; - - var gender = sex == Sex.Male ? Gender.Male : Gender.Female; - if (Enum.TryParse(profile.Gender, true, out var genderVal)) - gender = genderVal; - - - var markings = - new Dictionary, Dictionary>>(); - - if (profile.OrganMarkings?.RootElement is { } element) - { - var data = element.ToDataNode(); - markings = _serialization - .Read, Dictionary>>>( - data, - notNullableOverride: true); - } - else if (profile.Markings is { } profileMarkings && TryDeserialize>(profileMarkings) is { } markingsRaw) - { - List markingsList = new(); - - foreach (var marking in markingsRaw) - { - var parsed = Marking.ParseFromDbString(marking); - - if (parsed is null) continue; - - markingsList.Add(parsed); - } - - if (Marking.ParseFromDbString($"{profile.HairName}@{profile.HairColor}") is { } facialMarking) - markingsList.Add(facialMarking); - - if (Marking.ParseFromDbString($"{profile.HairName}@{profile.HairColor}") is { } hairMarking) - markingsList.Add(hairMarking); - - var completion = new TaskCompletionSource(); - _task.RunOnMainThread(() => - { - var markingManager = IoCManager.Resolve(); - - try - { - markings = markingManager.ConvertMarkings(markingsList, profile.Species); - completion.SetResult(); - } - catch (Exception ex) - { - completion.TrySetException(ex); - } - }); - await completion.Task; - } - - var loadouts = new Dictionary(); - - foreach (var role in profile.Loadouts) - { - var loadout = new RoleLoadout(role.RoleName) - { - EntityName = role.EntityName, - }; - - foreach (var group in role.Groups) - { - var groupLoadouts = loadout.SelectedLoadouts.GetOrNew(group.GroupName); - foreach (var profLoadout in group.Loadouts) - { - groupLoadouts.Add(new Loadout() - { - Prototype = profLoadout.LoadoutName, - }); - } - } - - loadouts[role.RoleName] = loadout; - } - - return new HumanoidCharacterProfile( - profile.CharacterName, - profile.FlavorText, - profile.Species, - profile.Age, - sex, - gender, - new HumanoidCharacterAppearance - ( - Color.FromHex(profile.EyeColor), - Color.FromHex(profile.SkinColor), - markings - ), - spawnPriority, - jobs, - (PreferenceUnavailableMode) profile.PreferenceUnavailable, - antags.ToHashSet(), - traits.ToHashSet(), - loadouts - ); - } - private Profile ConvertProfiles(HumanoidCharacterProfile humanoid, int slot, Profile? profile = null) { profile ??= new Profile(); diff --git a/Content.Server/Database/ServerDbManager.cs b/Content.Server/Database/ServerDbManager.cs index 44479b133c0..96a83ce630d 100644 --- a/Content.Server/Database/ServerDbManager.cs +++ b/Content.Server/Database/ServerDbManager.cs @@ -16,7 +16,6 @@ using Microsoft.Extensions.Logging; using Npgsql; using Prometheus; -using Robust.Shared.Asynchronous; using Robust.Shared.Configuration; using Robust.Shared.ContentPack; using Robust.Shared.Network; @@ -36,13 +35,15 @@ public interface IServerDbManager Task HasPendingModelChanges(); #region Preferences - Task InitPrefsAsync( + Task InitPrefsAsync( NetUserId userId, HumanoidCharacterProfile defaultProfile, CancellationToken cancel); Task SaveSelectedCharacterIndexAsync(NetUserId userId, int index); + Task MakeCharacterSlotLegacyAsync(NetUserId userId, int slot); + Task SaveCharacterSlotAsync(NetUserId userId, HumanoidCharacterProfile? profile, int slot); Task SaveAdminOOCColorAsync(NetUserId userId, Color color); @@ -51,7 +52,7 @@ Task InitPrefsAsync( // Single method for two operations for transaction. Task DeleteSlotAndSetSelectedIndex(NetUserId userId, int deleteSlot, int newSlot); - Task GetPlayerPreferencesAsync(NetUserId userId, CancellationToken cancel); + Task GetPlayerPreferencesAsync(NetUserId userId, CancellationToken cancel); #endregion #region User Ids @@ -372,7 +373,6 @@ public sealed class ServerDbManager : IServerDbManager [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly IResourceManager _res = default!; [Dependency] private readonly ILogManager _logMgr = default!; - [Dependency] private readonly ITaskManager _task = default!; [Dependency] private readonly ISerializationManager _serialization = default!; private ServerDbBase _db = default!; @@ -405,11 +405,11 @@ public void Init() { case "sqlite": SetupSqlite(out var contextFunc, out var inMemory); - _db = new ServerDbSqlite(contextFunc, inMemory, _cfg, _synchronous, opsLog, _task, _serialization); + _db = new ServerDbSqlite(contextFunc, inMemory, _cfg, _synchronous, opsLog, _serialization); break; case "postgres": var (pgOptions, conString) = CreatePostgresOptions(); - _db = new ServerDbPostgres(pgOptions, conString, _cfg, opsLog, notifyLog, _task, _serialization); + _db = new ServerDbPostgres(pgOptions, conString, _cfg, opsLog, notifyLog, _serialization); break; default: throw new InvalidDataException($"Unknown database engine {engine}."); @@ -426,7 +426,7 @@ public void Shutdown() _db.Shutdown(); } - public Task InitPrefsAsync( + public Task InitPrefsAsync( NetUserId userId, HumanoidCharacterProfile defaultProfile, CancellationToken cancel) @@ -441,6 +441,12 @@ public Task SaveSelectedCharacterIndexAsync(NetUserId userId, int index) return RunDbCommand(() => _db.SaveSelectedCharacterIndexAsync(userId, index)); } + public Task MakeCharacterSlotLegacyAsync(NetUserId userId, int slot) + { + DbWriteOpsMetric.Inc(); + return RunDbCommand(() => _db.MakeCharacterSlotLegacyAsync(userId, slot)); + } + public Task SaveCharacterSlotAsync(NetUserId userId, HumanoidCharacterProfile? profile, int slot) { DbWriteOpsMetric.Inc(); @@ -465,7 +471,7 @@ public Task SaveConstructionFavoritesAsync(NetUserId userId, List _db.SaveConstructionFavoritesAsync(userId, constructionFavorites)); } - public Task GetPlayerPreferencesAsync(NetUserId userId, CancellationToken cancel) + public Task GetPlayerPreferencesAsync(NetUserId userId, CancellationToken cancel) { DbReadOpsMetric.Inc(); return RunDbCommand(() => _db.GetPlayerPreferencesAsync(userId, cancel)); diff --git a/Content.Server/Database/ServerDbPostgres.cs b/Content.Server/Database/ServerDbPostgres.cs index f0c56b72951..bea75fe941b 100644 --- a/Content.Server/Database/ServerDbPostgres.cs +++ b/Content.Server/Database/ServerDbPostgres.cs @@ -11,7 +11,6 @@ using Content.Shared.CCVar; using Content.Shared.Database; using Microsoft.EntityFrameworkCore; -using Robust.Shared.Asynchronous; using Robust.Shared.Configuration; using Robust.Shared.Network; using Robust.Shared.Serialization.Manager; @@ -33,9 +32,8 @@ public ServerDbPostgres(DbContextOptions options, IConfigurationManager cfg, ISawmill opsLog, ISawmill notifyLog, - ITaskManager taskManager, ISerializationManager serialization) - : base(opsLog, taskManager, serialization) + : base(opsLog, serialization) { var concurrency = cfg.GetCVar(CCVars.DatabasePgConcurrency); diff --git a/Content.Server/Database/ServerDbSqlite.cs b/Content.Server/Database/ServerDbSqlite.cs index 6bb1bea45fb..97e265dbff0 100644 --- a/Content.Server/Database/ServerDbSqlite.cs +++ b/Content.Server/Database/ServerDbSqlite.cs @@ -11,7 +11,6 @@ using Content.Shared.CCVar; using Content.Shared.Database; using Microsoft.EntityFrameworkCore; -using Robust.Shared.Asynchronous; using Robust.Shared.Configuration; using Robust.Shared.Network; using Robust.Shared.Serialization.Manager; @@ -39,9 +38,8 @@ public ServerDbSqlite( IConfigurationManager cfg, bool synchronous, ISawmill opsLog, - ITaskManager taskManager, ISerializationManager serialization) - : base(opsLog, taskManager, serialization) + : base(opsLog, serialization) { _options = options; diff --git a/Content.Server/Preferences/Managers/ServerPreferencesManager.cs b/Content.Server/Preferences/Managers/ServerPreferencesManager.cs index 4cde984254f..228b820e25a 100644 --- a/Content.Server/Preferences/Managers/ServerPreferencesManager.cs +++ b/Content.Server/Preferences/Managers/ServerPreferencesManager.cs @@ -1,16 +1,26 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; +using System.Text.Json; using System.Threading; using System.Threading.Tasks; using Content.Server.Database; +using Content.Shared.Body; using Content.Shared.CCVar; using Content.Shared.Construction.Prototypes; +using Content.Shared.Humanoid; +using Content.Shared.Humanoid.Markings; +using Content.Shared.Humanoid.Prototypes; using Content.Shared.Preferences; +using Content.Shared.Preferences.Loadouts; +using Content.Shared.Roles; +using Content.Shared.Traits; using Robust.Server.Player; using Robust.Shared.Configuration; +using Robust.Shared.Enums; using Robust.Shared.Network; using Robust.Shared.Player; using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.Manager; using Robust.Shared.Utility; namespace Content.Server.Preferences.Managers @@ -29,6 +39,8 @@ public sealed class ServerPreferencesManager : IServerPreferencesManager, IPostI [Dependency] private readonly ILogManager _log = default!; [Dependency] private readonly UserDbDataManager _userDb = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly MarkingManager _marking = default!; + [Dependency] private readonly ISerializationManager _serialization = default!; // Cache player prefs on the server so we don't need as much async hell related to them. private readonly Dictionary _cachedPlayerPrefs = @@ -48,6 +60,135 @@ public void Init() _sawmill = _log.GetSawmill("prefs"); } + private static TValue? TryDeserialize(JsonDocument document) where TValue : class + { + try + { + return document.Deserialize(); + } + catch (JsonException) + { + return null; + } + } + + internal PlayerPreferences ConvertPreferences(Preference prefs) + { + var maxSlot = prefs.Profiles.Max(p => p.Slot) + 1; + var profiles = new Dictionary(maxSlot); + foreach (var profile in prefs.Profiles) + { + profiles[profile.Slot] = ConvertProfiles(profile); + } + + var constructionFavorites = new List>(prefs.ConstructionFavorites.Count); + foreach (var favorite in prefs.ConstructionFavorites) + constructionFavorites.Add(new ProtoId(favorite)); + + return new PlayerPreferences(profiles, prefs.SelectedCharacterSlot, Color.FromHex(prefs.AdminOOCColor), constructionFavorites); + } + + internal HumanoidCharacterProfile ConvertProfiles(Profile profile) + { + + var jobs = profile.Jobs.ToDictionary(j => new ProtoId(j.JobName), j => (JobPriority) j.Priority); + var antags = profile.Antags.Select(a => new ProtoId(a.AntagName)); + var traits = profile.Traits.Select(t => new ProtoId(t.TraitName)); + + var sex = Sex.Male; + if (Enum.TryParse(profile.Sex, true, out var sexVal)) + sex = sexVal; + + var spawnPriority = (SpawnPriorityPreference) profile.SpawnPriority; + + var gender = sex == Sex.Male ? Gender.Male : Gender.Female; + if (Enum.TryParse(profile.Gender, true, out var genderVal)) + gender = genderVal; + + + var markings = + new Dictionary, Dictionary>>(); + + var species = profile.Species; + if (!_prototypeManager.HasIndex(species)) + species = HumanoidCharacterProfile.DefaultSpecies; + + if (profile.OrganMarkings?.RootElement is { } element) + { + var data = element.ToDataNode(); + markings = _serialization + .Read, Dictionary>>>( + data, + notNullableOverride: true); + } + else if (profile.Markings is { } profileMarkings && TryDeserialize>(profileMarkings) is { } markingsRaw) + { + List markingsList = new(); + + foreach (var marking in markingsRaw) + { + var parsed = Marking.ParseFromDbString(marking); + + if (parsed is null) continue; + + markingsList.Add(parsed); + } + + if (Marking.ParseFromDbString($"{profile.HairName}@{profile.HairColor}") is { } facialMarking) + markingsList.Add(facialMarking); + + if (Marking.ParseFromDbString($"{profile.HairName}@{profile.HairColor}") is { } hairMarking) + markingsList.Add(hairMarking); + + markings = _marking.ConvertMarkings(markingsList, species); + } + + var loadouts = new Dictionary(); + + foreach (var role in profile.Loadouts) + { + var loadout = new RoleLoadout(role.RoleName) + { + EntityName = role.EntityName, + }; + + foreach (var group in role.Groups) + { + var groupLoadouts = loadout.SelectedLoadouts.GetOrNew(group.GroupName); + foreach (var profLoadout in group.Loadouts) + { + groupLoadouts.Add(new Loadout() + { + Prototype = profLoadout.LoadoutName, + }); + } + } + + loadouts[role.RoleName] = loadout; + } + + return new HumanoidCharacterProfile( + profile.CharacterName, + profile.FlavorText, + species, + profile.Age, + sex, + gender, + new HumanoidCharacterAppearance + ( + Color.FromHex(profile.EyeColor), + Color.FromHex(profile.SkinColor), + markings + ), + spawnPriority, + jobs, + (PreferenceUnavailableMode) profile.PreferenceUnavailable, + antags.ToHashSet(), + traits.ToHashSet(), + loadouts + ); + } + private async void HandleSelectCharacterMessage(MsgSelectCharacter message) { var index = message.SelectedCharacterIndex; @@ -247,7 +388,7 @@ public async Task LoadData(ICommonSession session, CancellationToken cancel) async Task LoadPrefs() { var prefs = await GetOrCreatePreferencesAsync(session.UserId, cancel); - prefsData.Prefs = prefs; + prefsData.Prefs = ConvertPreferences(prefs); } } } @@ -329,7 +470,7 @@ public PlayerPreferences GetPreferences(NetUserId userId) return null; } - private async Task GetOrCreatePreferencesAsync(NetUserId userId, CancellationToken cancel) + private async Task GetOrCreatePreferencesAsync(NetUserId userId, CancellationToken cancel) { var prefs = await _db.GetPlayerPreferencesAsync(userId, cancel); if (prefs is null) From 8cee089522285277f8335c465ff899fdd27e6d7c Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 9 Feb 2026 20:35:10 +0000 Subject: [PATCH 310/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 4757b4fdf69..3a61f671798 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Hitlinemoss - changes: - - message: The autolathe and uniform printer can now produce towels. - type: Add - id: 9004 - time: '2025-09-25T21:53:15.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40160 - author: SirWarock changes: - message: Rollerbed sprites now don't stack when a patient is buckled to it! @@ -3996,3 +3989,11 @@ id: 9510 time: '2026-02-09T15:32:39.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42768 +- author: TytosB + changes: + - message: adjusted several rooms and added missing items on map serpentcrest. increased + min pop to 50. + type: Tweak + id: 9511 + time: '2026-02-09T20:34:02.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42863 From 752ff799eb43ead0aaaf48a270b8e25cbd601313 Mon Sep 17 00:00:00 2001 From: Vasilis The Pikachu Date: Mon, 9 Feb 2026 22:20:11 +0100 Subject: [PATCH 311/603] Me when rider does not commit my change --- Content.Server/Preferences/Managers/ServerPreferencesManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Server/Preferences/Managers/ServerPreferencesManager.cs b/Content.Server/Preferences/Managers/ServerPreferencesManager.cs index 228b820e25a..5511375e5f7 100644 --- a/Content.Server/Preferences/Managers/ServerPreferencesManager.cs +++ b/Content.Server/Preferences/Managers/ServerPreferencesManager.cs @@ -131,7 +131,7 @@ internal HumanoidCharacterProfile ConvertProfiles(Profile profile) if (parsed is null) continue; - markingsList.Add(parsed); + markingsList.Add(parsed.Value); } if (Marking.ParseFromDbString($"{profile.HairName}@{profile.HairColor}") is { } facialMarking) From 8c68824ad8c09baf95c516549a033a6916dc555a Mon Sep 17 00:00:00 2001 From: Aearo-Deepwater <77557990+Aearo-Deepwater@users.noreply.github.com> Date: Mon, 9 Feb 2026 18:32:52 -0700 Subject: [PATCH 312/603] Slat tiles and decals (#37832) * Add two varieties of steel vertical slat tiles * Add dark and white variants of vertical slat tiles * Add dirt decals * Add vertical overlay decals * Add single and double vertical slat decals * Add steel, dark and white horizontal slat tiles * Improve single vert slat decals * Add horizontal slat dirt decals * Add horizontal slat tile objects * Add horizontal tile cutter recipe * Add horizontal slat overlay decals * Fix inconsistent tile naming * Add horizontal single and double slat decals * Fix incorrect slat decal * Fix two off-color pixels on dark slat tiles * Change slat tile naming * Add single-slat overlays * Smooth tile borders and normalize palette * Update decals to match tile changes * Update attributions * Add missing stack locale lines * Fix and clean up merged file * Change slat footstep sounds to be consistent with other steel tiles As far as I can tell, regular steel tiles use FootstepFloor, (except when they don't,) and Dark and White variants use FootstepTile. * Fix confusing merge conflict mismerge * Remove merge conflict cruft I have no idea how I missed that. * Add tile stack prototypes * Fix slat tile stack localization string refs * Fix slat tile prototype indentation * Remove tiles that are identical under rotation * fix yaml header convention * Parent slat tiles to common steel tile parent * Whitespace fix * Un-de-normalize prototype field ordering * Fix whitespace * Re-fix indentation For some reason, I un-fixed this a little while back. No idea why. --------- Co-authored-by: Errant <35878406+Errant-4@users.noreply.github.com> --- Resources/Locale/en-US/stack/stacks.ftl | 9 + Resources/Locale/en-US/tiles/tiles.ftl | 9 + .../Prototypes/Decals/Overlays/grayscale.yml | 160 +++++++++++++++++ Resources/Prototypes/Decals/dirty.yml | 32 ++++ Resources/Prototypes/Decals/slats.yml | 167 ++++++++++++++++++ .../Entities/Objects/Misc/tiles.yml | 126 +++++++++++++ .../Prototypes/Recipes/Lathes/Packs/tiles.yml | 9 + Resources/Prototypes/Recipes/Lathes/tiles.yml | 45 +++++ Resources/Prototypes/Stacks/Tiles/steel.yml | 18 ++ .../Prototypes/Stacks/Tiles/steel_dark.yml | 18 ++ .../Prototypes/Stacks/Tiles/steel_white.yml | 18 ++ Resources/Prototypes/Tiles/floors.yml | 120 +++++++++++++ .../horizontalslats_bordered_full.png | Bin 0 -> 260 bytes .../horizontalslats_bordered_inner_n.png | Bin 0 -> 215 bytes .../horizontalslats_bordered_inner_s.png | Bin 0 -> 215 bytes .../horizontalslats_bordered_outer_n.png | Bin 0 -> 229 bytes .../horizontalslats_bordered_outer_s.png | Bin 0 -> 223 bytes .../horizontalslats_continuous_full.png | Bin 0 -> 223 bytes .../horizontalslats_continuous_inner_n.png | Bin 0 -> 213 bytes .../horizontalslats_continuous_inner_s.png | Bin 0 -> 213 bytes .../horizontalslats_continuous_outer_n.png | Bin 0 -> 207 bytes .../horizontalslats_continuous_outer_s.png | Bin 0 -> 213 bytes .../Decals/Overlays/greyscale.rsi/meta.json | 64 ++++++- .../verticalslats_bordered_full.png | Bin 0 -> 248 bytes .../verticalslats_bordered_inner_e.png | Bin 0 -> 237 bytes .../verticalslats_bordered_inner_w.png | Bin 0 -> 238 bytes .../verticalslats_bordered_outer_e.png | Bin 0 -> 224 bytes .../verticalslats_bordered_outer_w.png | Bin 0 -> 222 bytes .../verticalslats_continuous_full.png | Bin 0 -> 222 bytes .../verticalslats_continuous_inner_e.png | Bin 0 -> 225 bytes .../verticalslats_continuous_inner_w.png | Bin 0 -> 224 bytes .../verticalslats_continuous_outer_e.png | Bin 0 -> 222 bytes .../verticalslats_continuous_outer_w.png | Bin 0 -> 220 bytes .../dirty.rsi/dirtheavy-horizontal-slats.png | Bin 0 -> 1276 bytes .../dirty.rsi/dirtheavy-vertical-slats.png | Bin 0 -> 988 bytes .../dirty.rsi/dirtlight-horizontal-slats.png | Bin 0 -> 928 bytes .../dirty.rsi/dirtlight-vertical-slats.png | Bin 0 -> 950 bytes Resources/Textures/Decals/dirty.rsi/meta.json | 14 +- .../Decals/slats.rsi/double_dark_e.png | Bin 0 -> 495 bytes .../Decals/slats.rsi/double_dark_n.png | Bin 0 -> 468 bytes .../Decals/slats.rsi/double_dark_s.png | Bin 0 -> 439 bytes .../Decals/slats.rsi/double_dark_w.png | Bin 0 -> 500 bytes .../Decals/slats.rsi/double_steel_e.png | Bin 0 -> 524 bytes .../Decals/slats.rsi/double_steel_n.png | Bin 0 -> 502 bytes .../Decals/slats.rsi/double_steel_s.png | Bin 0 -> 479 bytes .../Decals/slats.rsi/double_steel_w.png | Bin 0 -> 486 bytes .../Decals/slats.rsi/double_white_e.png | Bin 0 -> 578 bytes .../Decals/slats.rsi/double_white_n.png | Bin 0 -> 430 bytes .../Decals/slats.rsi/double_white_s.png | Bin 0 -> 440 bytes .../Decals/slats.rsi/double_white_w.png | Bin 0 -> 553 bytes Resources/Textures/Decals/slats.rsi/meta.json | 83 +++++++++ .../Decals/slats.rsi/single_dark_e.png | Bin 0 -> 384 bytes .../Decals/slats.rsi/single_dark_n.png | Bin 0 -> 358 bytes .../Decals/slats.rsi/single_dark_s.png | Bin 0 -> 352 bytes .../Decals/slats.rsi/single_dark_w.png | Bin 0 -> 363 bytes .../Decals/slats.rsi/single_steel_e.png | Bin 0 -> 364 bytes .../Decals/slats.rsi/single_steel_n.png | Bin 0 -> 379 bytes .../Decals/slats.rsi/single_steel_s.png | Bin 0 -> 378 bytes .../Decals/slats.rsi/single_steel_w.png | Bin 0 -> 374 bytes .../Decals/slats.rsi/single_white_e.png | Bin 0 -> 415 bytes .../Decals/slats.rsi/single_white_n.png | Bin 0 -> 348 bytes .../Decals/slats.rsi/single_white_s.png | Bin 0 -> 359 bytes .../Decals/slats.rsi/single_white_w.png | Bin 0 -> 408 bytes .../Tiles/tile.rsi/dark-horizontal-slats.png | Bin 0 -> 435 bytes .../Tiles/tile.rsi/dark-vertical-slats.png | Bin 0 -> 498 bytes .../Textures/Objects/Tiles/tile.rsi/meta.json | 18 ++ .../Tiles/tile.rsi/steel-horizontal-slats.png | Bin 0 -> 510 bytes .../Tiles/tile.rsi/steel-vertical-slats.png | Bin 0 -> 583 bytes .../Tiles/tile.rsi/white-horizontal-slats.png | Bin 0 -> 497 bytes .../Tiles/tile.rsi/white-vertical-slats.png | Bin 0 -> 551 bytes Resources/Textures/Tiles/attributions.yml | 5 + .../Tiles/dark_horizontal_slats_bordered.png | Bin 0 -> 1439 bytes .../Textures/Tiles/dark_slats_continuous.png | Bin 0 -> 1556 bytes .../Tiles/dark_vertical_slats_bordered.png | Bin 0 -> 1530 bytes .../Tiles/steel_horizontal_slats_bordered.png | Bin 0 -> 1580 bytes .../Textures/Tiles/steel_slats_continuous.png | Bin 0 -> 1607 bytes .../Tiles/steel_vertical_slats_bordered.png | Bin 0 -> 1654 bytes .../Tiles/white_horizontal_slats_bordered.png | Bin 0 -> 1328 bytes .../Textures/Tiles/white_slats_continuous.png | Bin 0 -> 2073 bytes .../Tiles/white_vertical_slats_bordered.png | Bin 0 -> 1995 bytes 80 files changed, 912 insertions(+), 3 deletions(-) create mode 100644 Resources/Prototypes/Decals/slats.yml create mode 100644 Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_bordered_full.png create mode 100644 Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_bordered_inner_n.png create mode 100644 Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_bordered_inner_s.png create mode 100644 Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_bordered_outer_n.png create mode 100644 Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_bordered_outer_s.png create mode 100644 Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_continuous_full.png create mode 100644 Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_continuous_inner_n.png create mode 100644 Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_continuous_inner_s.png create mode 100644 Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_continuous_outer_n.png create mode 100644 Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_continuous_outer_s.png create mode 100644 Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_bordered_full.png create mode 100644 Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_bordered_inner_e.png create mode 100644 Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_bordered_inner_w.png create mode 100644 Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_bordered_outer_e.png create mode 100644 Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_bordered_outer_w.png create mode 100644 Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_continuous_full.png create mode 100644 Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_continuous_inner_e.png create mode 100644 Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_continuous_inner_w.png create mode 100644 Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_continuous_outer_e.png create mode 100644 Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_continuous_outer_w.png create mode 100644 Resources/Textures/Decals/dirty.rsi/dirtheavy-horizontal-slats.png create mode 100644 Resources/Textures/Decals/dirty.rsi/dirtheavy-vertical-slats.png create mode 100644 Resources/Textures/Decals/dirty.rsi/dirtlight-horizontal-slats.png create mode 100644 Resources/Textures/Decals/dirty.rsi/dirtlight-vertical-slats.png create mode 100644 Resources/Textures/Decals/slats.rsi/double_dark_e.png create mode 100644 Resources/Textures/Decals/slats.rsi/double_dark_n.png create mode 100644 Resources/Textures/Decals/slats.rsi/double_dark_s.png create mode 100644 Resources/Textures/Decals/slats.rsi/double_dark_w.png create mode 100644 Resources/Textures/Decals/slats.rsi/double_steel_e.png create mode 100644 Resources/Textures/Decals/slats.rsi/double_steel_n.png create mode 100644 Resources/Textures/Decals/slats.rsi/double_steel_s.png create mode 100644 Resources/Textures/Decals/slats.rsi/double_steel_w.png create mode 100644 Resources/Textures/Decals/slats.rsi/double_white_e.png create mode 100644 Resources/Textures/Decals/slats.rsi/double_white_n.png create mode 100644 Resources/Textures/Decals/slats.rsi/double_white_s.png create mode 100644 Resources/Textures/Decals/slats.rsi/double_white_w.png create mode 100644 Resources/Textures/Decals/slats.rsi/meta.json create mode 100644 Resources/Textures/Decals/slats.rsi/single_dark_e.png create mode 100644 Resources/Textures/Decals/slats.rsi/single_dark_n.png create mode 100644 Resources/Textures/Decals/slats.rsi/single_dark_s.png create mode 100644 Resources/Textures/Decals/slats.rsi/single_dark_w.png create mode 100644 Resources/Textures/Decals/slats.rsi/single_steel_e.png create mode 100644 Resources/Textures/Decals/slats.rsi/single_steel_n.png create mode 100644 Resources/Textures/Decals/slats.rsi/single_steel_s.png create mode 100644 Resources/Textures/Decals/slats.rsi/single_steel_w.png create mode 100644 Resources/Textures/Decals/slats.rsi/single_white_e.png create mode 100644 Resources/Textures/Decals/slats.rsi/single_white_n.png create mode 100644 Resources/Textures/Decals/slats.rsi/single_white_s.png create mode 100644 Resources/Textures/Decals/slats.rsi/single_white_w.png create mode 100644 Resources/Textures/Objects/Tiles/tile.rsi/dark-horizontal-slats.png create mode 100644 Resources/Textures/Objects/Tiles/tile.rsi/dark-vertical-slats.png create mode 100644 Resources/Textures/Objects/Tiles/tile.rsi/steel-horizontal-slats.png create mode 100644 Resources/Textures/Objects/Tiles/tile.rsi/steel-vertical-slats.png create mode 100644 Resources/Textures/Objects/Tiles/tile.rsi/white-horizontal-slats.png create mode 100644 Resources/Textures/Objects/Tiles/tile.rsi/white-vertical-slats.png create mode 100644 Resources/Textures/Tiles/dark_horizontal_slats_bordered.png create mode 100644 Resources/Textures/Tiles/dark_slats_continuous.png create mode 100644 Resources/Textures/Tiles/dark_vertical_slats_bordered.png create mode 100644 Resources/Textures/Tiles/steel_horizontal_slats_bordered.png create mode 100644 Resources/Textures/Tiles/steel_slats_continuous.png create mode 100644 Resources/Textures/Tiles/steel_vertical_slats_bordered.png create mode 100644 Resources/Textures/Tiles/white_horizontal_slats_bordered.png create mode 100644 Resources/Textures/Tiles/white_slats_continuous.png create mode 100644 Resources/Textures/Tiles/white_vertical_slats_bordered.png diff --git a/Resources/Locale/en-US/stack/stacks.ftl b/Resources/Locale/en-US/stack/stacks.ftl index 7a9898ea101..0d4c6e89881 100644 --- a/Resources/Locale/en-US/stack/stacks.ftl +++ b/Resources/Locale/en-US/stack/stacks.ftl @@ -134,28 +134,37 @@ stack-dark-tile = dark tile stack-dark-steel-diagonal-mini-tile = dark steel diagonal mini tile stack-dark-steel-diagonal-tile = dark steel diagonal tile stack-dark-steel-herringbone = dark steel herringbone +stack-dark-steel-horizontal-slats-tile-bordered = dark steel bordered horizontal slat tile stack-dark-steel-mini-tile = dark steel mini tile stack-dark-steel-mono-tile = dark steel mono tile stack-dark-steel-pavement = dark steel pavement stack-dark-steel-vertical-pavement = dark steel vertical pavement +stack-dark-steel-vertical-slats-tile-bordered = dark steel bordered vertical slat tile +stack-dark-steel-slats-tile-continuous = dark steel continuous slat tile stack-offset-dark-steel-tile = offset dark steel tile stack-offset-steel-tile = offset steel tile stack-steel-diagonal-mini-tile = steel diagonal mini tile stack-steel-diagonal-tile = steel diagonal tile stack-steel-herringbone = steel herringbone +stack-steel-horizontal-slats-tile-bordered = steel bordered horizontal slat tile stack-steel-mini-tile = steel mini tile stack-steel-mono-tile = steel mono tile stack-steel-pavement = steel pavement stack-steel-vertical-pavement = steel vertical pavement +stack-steel-vertical-slats-tile-bordered = steel bordered vertical slat tile +stack-steel-slats-tile-continuous = steel continuous slat tile stack-white-tile = white tile stack-offset-white-steel-tile = offset white steel tile stack-white-steel-diagonal-mini-tile = white steel diagonal mini tile stack-white-steel-diagonal-tile = white steel diagonal tile stack-white-steel-herringbone = white steel herringbone +stack-white-steel-horizontal-slats-tile-bordered = white steel bordered horizontal slat tile stack-white-steel-mini-tile = white steel mini tile stack-white-steel-mono-tile = white steel mono tile stack-white-steel-pavement = white steel pavement stack-white-steel-vertical-pavement = white steel vertical pavement +stack-white-steel-vertical-slats-tile-bordered = white steel bordered vertical slat tile +stack-white-steel-slats-tile-continuous = white steel continuous slat tile stack-steel-dark-checker-tile = steel dark checker tile stack-steel-light-checker-tile = steel light checker tile stack-steel-tile = steel tile diff --git a/Resources/Locale/en-US/tiles/tiles.ftl b/Resources/Locale/en-US/tiles/tiles.ftl index c4b30f57a27..1049e97a2b0 100644 --- a/Resources/Locale/en-US/tiles/tiles.ftl +++ b/Resources/Locale/en-US/tiles/tiles.ftl @@ -14,6 +14,9 @@ tiles-steel-floor-herringbone = steel herringbone tiles-steel-floor-diagonal-mini = steel diagonal mini-tile tiles-steel-floor-checker-dark = steel dark checker tile tiles-steel-floor-checker-light = steel light checker tile +tiles-steel-floor-slats-continuous = steel continuous slat tile +tiles-steel-floor-vertical-slats-bordered = steel vertical bordered slat tile +tiles-steel-floor-horizontal-slats-bordered = steel horizontal bordered slat tile tiles-plastic-floor = plastic tile tiles-wood = wood tiles-white-floor = white steel tile @@ -25,6 +28,9 @@ tiles-white-floor-mono = white steel mono tile tiles-white-floor-pavement-vertical = white steel vertical pavement tiles-white-floor-herringbone = white steel herringbone tiles-white-floor-diagonal-mini = white steel diagonal mini-tile +tiles-white-floor-slats-continuous = white steel continuous slat tile +tiles-white-floor-vertical-slats-bordered = white steel vertical bordered slat tile +tiles-white-floor-horizontal-slats-bordered = white steel horizontal bordered slat tile tiles-plastic-white-floor = white plastic tile tiles-dark-floor = dark steel tile tiles-dark-floor-mini = dark steel mini-tile @@ -35,6 +41,9 @@ tiles-dark-floor-mono = dark steel mono tile tiles-dark-floor-pavement-vertical = dark steel vertical pavement tiles-dark-floor-herringbone = dark steel herringbone tiles-dark-floor-diagonal-mini = dark steel diagonal mini-tile +tiles-dark-floor-slats-continuous = dark steel continuous slat tile +tiles-dark-floor-vertical-slats-bordered = dark steel vertical bordered slat tile +tiles-dark-floor-horizontal-slats-bordered = dark steel horizontal bordered slat tile tiles-plastic-dark-floor = dark plastic tile tiles-techmaint-floor = techmaint floor tiles-techmaint-floor-dark = dark techmaint floor diff --git a/Resources/Prototypes/Decals/Overlays/grayscale.yml b/Resources/Prototypes/Decals/Overlays/grayscale.yml index 50c8b4ade14..acedacb780f 100644 --- a/Resources/Prototypes/Decals/Overlays/grayscale.yml +++ b/Resources/Prototypes/Decals/Overlays/grayscale.yml @@ -446,6 +446,166 @@ sprite: Decals/Overlays/greyscale.rsi state: minitile_line_w +- type: decal + id: VerticalSlatContinuousFullOverlay + tags: ["station", "overlay"] + defaultCustomColor: true + sprite: + sprite: Decals/Overlays/greyscale.rsi + state: verticalslats_continuous_full + +- type: decal + id: VerticalSlatContinuousInnerOverlayW + tags: ["station", "overlay"] + defaultCustomColor: true + sprite: + sprite: Decals/Overlays/greyscale.rsi + state: verticalslats_continuous_inner_w + +- type: decal + id: VerticalSlatContinuousInnerOverlayE + tags: ["station", "overlay"] + defaultCustomColor: true + sprite: + sprite: Decals/Overlays/greyscale.rsi + state: verticalslats_continuous_inner_e + +- type: decal + id: VerticalSlatContinuousOuterOverlayW + tags: ["station", "overlay"] + defaultCustomColor: true + sprite: + sprite: Decals/Overlays/greyscale.rsi + state: verticalslats_continuous_outer_w + +- type: decal + id: VerticalSlatContinuousOuterOverlayE + tags: ["station", "overlay"] + defaultCustomColor: true + sprite: + sprite: Decals/Overlays/greyscale.rsi + state: verticalslats_continuous_outer_e + +- type: decal + id: VerticalSlatBorderedFullOverlay + tags: ["station", "overlay"] + defaultCustomColor: true + sprite: + sprite: Decals/Overlays/greyscale.rsi + state: verticalslats_bordered_full + +- type: decal + id: VerticalSlatBorderedInnerOverlayW + tags: ["station", "overlay"] + defaultCustomColor: true + sprite: + sprite: Decals/Overlays/greyscale.rsi + state: verticalslats_bordered_inner_w + +- type: decal + id: VerticalSlatBorderedInnerOverlayE + tags: ["station", "overlay"] + defaultCustomColor: true + sprite: + sprite: Decals/Overlays/greyscale.rsi + state: verticalslats_bordered_inner_e + +- type: decal + id: VerticalSlatBorderedOuterOverlayW + tags: ["station", "overlay"] + defaultCustomColor: true + sprite: + sprite: Decals/Overlays/greyscale.rsi + state: verticalslats_bordered_outer_w + +- type: decal + id: VerticalSlatBorderedOuterOverlayE + tags: ["station", "overlay"] + defaultCustomColor: true + sprite: + sprite: Decals/Overlays/greyscale.rsi + state: verticalslats_bordered_outer_e + +- type: decal + id: HorizontalSlatContinuousFullOverlay + tags: ["station", "overlay"] + defaultCustomColor: true + sprite: + sprite: Decals/Overlays/greyscale.rsi + state: horizontalslats_continuous_full + +- type: decal + id: HorizontalSlatContinuousOuterOverlayN + tags: ["station", "overlay"] + defaultCustomColor: true + sprite: + sprite: Decals/Overlays/greyscale.rsi + state: horizontalslats_continuous_outer_n + +- type: decal + id: HorizontalSlatContinuousOuterOverlayS + tags: ["station", "overlay"] + defaultCustomColor: true + sprite: + sprite: Decals/Overlays/greyscale.rsi + state: horizontalslats_continuous_outer_s + +- type: decal + id: HorizontalSlatContinuousInnerOverlayN + tags: ["station", "overlay"] + defaultCustomColor: true + sprite: + sprite: Decals/Overlays/greyscale.rsi + state: horizontalslats_continuous_inner_n + +- type: decal + id: HorizontalSlatContinuousInnerOverlayS + tags: ["station", "overlay"] + defaultCustomColor: true + sprite: + sprite: Decals/Overlays/greyscale.rsi + state: horizontalslats_continuous_inner_s + +- type: decal + id: HorizontalSlatBorderedFullOverlay + tags: ["station", "overlay"] + defaultCustomColor: true + sprite: + sprite: Decals/Overlays/greyscale.rsi + state: horizontalslats_bordered_full + +- type: decal + id: HorizontalSlatBorderedOuterOverlayN + tags: ["station", "overlay"] + defaultCustomColor: true + sprite: + sprite: Decals/Overlays/greyscale.rsi + state: horizontalslats_bordered_outer_n + +- type: decal + id: HorizontalSlatBorderedOuterOverlayS + tags: ["station", "overlay"] + defaultCustomColor: true + sprite: + sprite: Decals/Overlays/greyscale.rsi + state: horizontalslats_bordered_outer_s + +- type: decal + id: HorizontalSlatBorderedInnerOverlayN + tags: ["station", "overlay"] + defaultCustomColor: true + sprite: + sprite: Decals/Overlays/greyscale.rsi + state: horizontalslats_bordered_inner_n + +- type: decal + id: HorizontalSlatBorderedInnerOverlayS + tags: ["station", "overlay"] + defaultCustomColor: true + sprite: + sprite: Decals/Overlays/greyscale.rsi + state: horizontalslats_bordered_inner_s + - type: decal id: OffsetOverlay tags: ["station", "overlay"] diff --git a/Resources/Prototypes/Decals/dirty.yml b/Resources/Prototypes/Decals/dirty.yml index 034d1e2d643..a20feea26c5 100644 --- a/Resources/Prototypes/Decals/dirty.yml +++ b/Resources/Prototypes/Decals/dirty.yml @@ -40,6 +40,38 @@ sprite: Decals/dirty.rsi state: dirtheavy-mono +- type: decal + id: DirtLightVerticalSlats + tags: ["station", "dirty"] + defaultCleanable: true + sprite: + sprite: Decals/dirty.rsi + state: dirtlight-vertical-slats + +- type: decal + id: DirtHeavyVerticalSlats + tags: ["station", "dirty"] + defaultCleanable: true + sprite: + sprite: Decals/dirty.rsi + state: dirtheavy-vertical-slats + +- type: decal + id: DirtLightHorizontalSlats + tags: ["station", "dirty"] + defaultCleanable: true + sprite: + sprite: Decals/dirty.rsi + state: dirtlight-horizontal-slats + +- type: decal + id: DirtHeavyHorizontalSlats + tags: ["station", "dirty"] + defaultCleanable: true + sprite: + sprite: Decals/dirty.rsi + state: dirtheavy-horizontal-slats + - type: decal id: Damaged tags: ["station", "dirty"] diff --git a/Resources/Prototypes/Decals/slats.yml b/Resources/Prototypes/Decals/slats.yml new file mode 100644 index 00000000000..556fd7f6b77 --- /dev/null +++ b/Resources/Prototypes/Decals/slats.yml @@ -0,0 +1,167 @@ +- type: decal + id: SteelSlatSingleN + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: single_steel_n + +- type: decal + id: SteelSlatSingleS + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: single_steel_s + +- type: decal + id: SteelSlatSingleE + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: single_steel_e + +- type: decal + id: SteelSlatSingleW + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: single_steel_w + +- type: decal + id: DarkSlatSingleN + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: single_dark_n + +- type: decal + id: DarkSlatSingleS + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: single_dark_s + +- type: decal + id: DarkSlatSingleE + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: single_dark_e + +- type: decal + id: DarkSlatSingleW + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: single_dark_w + +- type: decal + id: WhiteSlatSingleN + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: single_white_n + +- type: decal + id: WhiteSlatSingleS + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: single_white_s + +- type: decal + id: WhiteSlatSingleE + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: single_white_e + +- type: decal + id: WhiteSlatSingleW + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: single_white_w + +- type: decal + id: SteelSlatDoubleN + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: double_steel_n + +- type: decal + id: SteelSlatDoubleS + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: double_steel_s + +- type: decal + id: SteelSlatDoubleE + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: double_steel_e + +- type: decal + id: SteelSlatDoubleW + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: double_steel_w + +- type: decal + id: DarkSlatDoubleN + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: double_dark_n + +- type: decal + id: DarkSlatDoubleS + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: double_dark_s + +- type: decal + id: DarkSlatDoubleE + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: double_dark_e + +- type: decal + id: DarkSlatDoubleW + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: double_dark_w + +- type: decal + id: WhiteSlatDoubleN + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: double_white_n + +- type: decal + id: WhiteSlatDoubleS + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: double_white_s + +- type: decal + id: WhiteSlatDoubleE + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: double_white_e + +- type: decal + id: WhiteSlatDoubleW + tags: ["station", "markings"] + sprite: + sprite: Decals/slats.rsi + state: double_white_w diff --git a/Resources/Prototypes/Entities/Objects/Misc/tiles.yml b/Resources/Prototypes/Entities/Objects/Misc/tiles.yml index 1bb7b8e626d..97865aef325 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/tiles.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/tiles.yml @@ -189,6 +189,48 @@ - type: Stack stackType: FloorTileDarkPavementVertical +- type: entity + parent: FloorTileItemDark + id: FloorTileItemDarkSlatsContinuous + name: dark steel continuous slat tile + components: + - type: Sprite + state: dark-vertical-slats + - type: FloorTile + outputs: + - Plating + - FloorDarkSlatsContinuous + - type: Stack + stackType: FloorTileDarkSlatsContinuous + +- type: entity + parent: FloorTileItemDark + id: FloorTileItemDarkVerticalSlatsBordered + name: dark steel bordered vertical slat tile + components: + - type: Sprite + state: dark-vertical-slats + - type: FloorTile + outputs: + - Plating + - FloorDarkVerticalSlatsBordered + - type: Stack + stackType: FloorTileDarkVerticalSlatsBordered + +- type: entity + parent: FloorTileItemDark + id: FloorTileItemDarkHorizontalSlatsBordered + name: dark steel bordered horizontal slat tile + components: + - type: Sprite + state: dark-horizontal-slats + - type: FloorTile + outputs: + - Plating + - FloorDarkHorizontalSlatsBordered + - type: Stack + stackType: FloorTileDarkHorizontalSlatsBordered + - type: entity name: offset dark steel tile parent: FloorTileItemDark @@ -264,6 +306,48 @@ - type: Stack stackType: FloorTileSteelDiagonal +- type: entity + parent: FloorTileItemSteel + id: FloorTileItemSteelSlatsContinuous + name: steel continuous slat tile + components: + - type: Sprite + state: steel-vertical-slats + - type: FloorTile + outputs: + - Plating + - FloorSteelSlatsContinuous + - type: Stack + stackType: FloorTileSteelSlatsContinuous + +- type: entity + parent: FloorTileItemSteel + id: FloorTileItemSteelVerticalSlatsBordered + name: steel vertical bordered slat tile + components: + - type: Sprite + state: steel-vertical-slats + - type: FloorTile + outputs: + - Plating + - FloorSteelVerticalSlatsBordered + - type: Stack + stackType: FloorTileSteelVerticalSlatsBordered + +- type: entity + parent: FloorTileItemSteel + id: FloorTileItemSteelHorizontalSlatsBordered + name: steel horizontal bordered slat tile + components: + - type: Sprite + state: steel-horizontal-slats + - type: FloorTile + outputs: + - Plating + - FloorSteelHorizontalSlatsBordered + - type: Stack + stackType: FloorTileSteelHorizontalSlatsBordered + - type: entity name: steel herringbone parent: FloorTileItemSteel @@ -465,6 +549,48 @@ - type: Stack stackType: FloorTileWhitePavementVertical +- type: entity + parent: FloorTileItemWhite + id: FloorTileItemWhiteVerticalSlatsBordered + name: white steel vertical bordered slat tile + components: + - type: Sprite + state: white-vertical-slats + - type: FloorTile + outputs: + - Plating + - FloorWhiteVerticalSlatsBordered + - type: Stack + stackType: FloorTileWhiteVerticalSlatsBordered + +- type: entity + parent: FloorTileItemWhite + id: FloorTileItemWhiteSlatsContinuous + name: white steel continuous slat tile + components: + - type: Sprite + state: white-vertical-slats + - type: FloorTile + outputs: + - Plating + - FloorWhiteSlatsContinuous + - type: Stack + stackType: FloorTileWhiteSlatsContinuous + +- type: entity + parent: FloorTileItemWhite + id: FloorTileItemWhiteHorizontalSlatsBordered + name: white steel horizontal bordered slat tile + components: + - type: Sprite + state: white-horizontal-slats + - type: FloorTile + outputs: + - Plating + - FloorWhiteHorizontalSlatsBordered + - type: Stack + stackType: FloorTileWhiteHorizontalSlatsBordered + - type: entity name: steel tile parent: FloorTileItemBase diff --git a/Resources/Prototypes/Recipes/Lathes/Packs/tiles.yml b/Resources/Prototypes/Recipes/Lathes/Packs/tiles.yml index 4be7fec27d5..2df2891b7c9 100644 --- a/Resources/Prototypes/Recipes/Lathes/Packs/tiles.yml +++ b/Resources/Prototypes/Recipes/Lathes/Packs/tiles.yml @@ -9,6 +9,9 @@ - FloorTileItemDarkHerringbone - FloorTileItemDarkMini - FloorTileItemDarkMono + - FloorTileItemDarkSlatsContinuous + - FloorTileItemDarkVerticalSlatsBordered + - FloorTileItemDarkHorizontalSlatsBordered - FloorTileItemDarkPavement - FloorTileItemDarkPavementVertical - FloorTileItemDarkOffset @@ -22,6 +25,9 @@ - FloorTileItemSteelDiagonal - FloorTileItemSteelHerringbone - FloorTileItemSteelMini + - FloorTileItemSteelSlatsContinuous + - FloorTileItemSteelVerticalSlatsBordered + - FloorTileItemSteelHorizontalSlatsBordered - FloorTileItemSteelMono - FloorTileItemSteelPavement - FloorTileItemSteelPavementVertical @@ -38,6 +44,9 @@ - FloorTileItemWhiteHerringbone - FloorTileItemWhiteMini - FloorTileItemWhiteMono + - FloorTileItemWhiteSlatsContinuous + - FloorTileItemWhiteVerticalSlatsBordered + - FloorTileItemWhiteHorizontalSlatsBordered - FloorTileItemWhitePavement - FloorTileItemWhitePavementVertical diff --git a/Resources/Prototypes/Recipes/Lathes/tiles.yml b/Resources/Prototypes/Recipes/Lathes/tiles.yml index e43e69e9348..e30174a6ae3 100644 --- a/Resources/Prototypes/Recipes/Lathes/tiles.yml +++ b/Resources/Prototypes/Recipes/Lathes/tiles.yml @@ -150,6 +150,21 @@ id: FloorTileItemSteelPavementVertical result: FloorTileItemSteelPavementVertical +- type: latheRecipe + parent: BaseSteelTileRecipe + id: FloorTileItemSteelSlatsContinuous + result: FloorTileItemSteelSlatsContinuous + +- type: latheRecipe + parent: BaseSteelTileRecipe + id: FloorTileItemSteelVerticalSlatsBordered + result: FloorTileItemSteelVerticalSlatsBordered + +- type: latheRecipe + parent: BaseSteelTileRecipe + id: FloorTileItemSteelHorizontalSlatsBordered + result: FloorTileItemSteelHorizontalSlatsBordered + # Dark tiles - type: latheRecipe parent: BaseDarkTileRecipe @@ -196,6 +211,21 @@ id: FloorTileItemDarkOffset result: FloorTileItemDarkOffset +- type: latheRecipe + parent: BaseDarkTileRecipe + id: FloorTileItemDarkSlatsContinuous + result: FloorTileItemDarkSlatsContinuous + +- type: latheRecipe + parent: BaseDarkTileRecipe + id: FloorTileItemDarkVerticalSlatsBordered + result: FloorTileItemDarkVerticalSlatsBordered + +- type: latheRecipe + parent: BaseDarkTileRecipe + id: FloorTileItemDarkHorizontalSlatsBordered + result: FloorTileItemDarkHorizontalSlatsBordered + - type: latheRecipe parent: BaseDarkTileRecipe id: FloorTileItemDarkSquiggly @@ -247,6 +277,21 @@ id: FloorTileItemWhitePavementVertical result: FloorTileItemWhitePavementVertical +- type: latheRecipe + parent: BaseWhiteTileRecipe + id: FloorTileItemWhiteSlatsContinuous + result: FloorTileItemWhiteSlatsContinuous + +- type: latheRecipe + parent: BaseWhiteTileRecipe + id: FloorTileItemWhiteVerticalSlatsBordered + result: FloorTileItemWhiteVerticalSlatsBordered + +- type: latheRecipe + parent: BaseWhiteTileRecipe + id: FloorTileItemWhiteHorizontalSlatsBordered + result: FloorTileItemWhiteHorizontalSlatsBordered + # Maints - type: latheRecipe parent: BaseMaintTileRecipe diff --git a/Resources/Prototypes/Stacks/Tiles/steel.yml b/Resources/Prototypes/Stacks/Tiles/steel.yml index 1e283d68f96..5126fee620c 100644 --- a/Resources/Prototypes/Stacks/Tiles/steel.yml +++ b/Resources/Prototypes/Stacks/Tiles/steel.yml @@ -53,3 +53,21 @@ id: FloorTileSteelPavementVertical name: stack-steel-vertical-pavement spawn: FloorTileItemSteelPavementVertical + +- type: stack + parent: BaseTileStack + id: FloorTileSteelVerticalSlatsBordered + name: stack-steel-vertical-slats-tile-bordered + spawn: FloorTileItemSteelVerticalSlatsBordered + +- type: stack + parent: BaseTileStack + id: FloorTileSteelSlatsContinuous + name: stack-steel-slats-tile-continuous + spawn: FloorTileItemSteelSlatsContinuous + +- type: stack + parent: BaseTileStack + id: FloorTileSteelHorizontalSlatsBordered + name: stack-steel-horizontal-slats-tile-bordered + spawn: FloorTileItemSteelHorizontalSlatsBordered diff --git a/Resources/Prototypes/Stacks/Tiles/steel_dark.yml b/Resources/Prototypes/Stacks/Tiles/steel_dark.yml index e1660a02992..eb9b609236a 100644 --- a/Resources/Prototypes/Stacks/Tiles/steel_dark.yml +++ b/Resources/Prototypes/Stacks/Tiles/steel_dark.yml @@ -53,3 +53,21 @@ id: FloorTileDarkOffset name: stack-offset-dark-steel-tile spawn: FloorTileItemDarkOffset + +- type: stack + parent: BaseTileStack + id: FloorTileDarkVerticalSlatsBordered + name: stack-dark-steel-vertical-slats-tile-bordered + spawn: FloorTileItemDarkVerticalSlatsBordered + +- type: stack + parent: BaseTileStack + id: FloorTileDarkSlatsContinuous + name: stack-dark-steel-slats-tile-continuous + spawn: FloorTileItemDarkSlatsContinuous + +- type: stack + parent: BaseTileStack + id: FloorTileDarkHorizontalSlatsBordered + name: stack-dark-steel-horizontal-slats-tile-bordered + spawn: FloorTileItemDarkHorizontalSlatsBordered diff --git a/Resources/Prototypes/Stacks/Tiles/steel_white.yml b/Resources/Prototypes/Stacks/Tiles/steel_white.yml index 75dd453abcc..b7b61d056f1 100644 --- a/Resources/Prototypes/Stacks/Tiles/steel_white.yml +++ b/Resources/Prototypes/Stacks/Tiles/steel_white.yml @@ -53,3 +53,21 @@ id: FloorTileWhitePavementVertical name: stack-white-steel-vertical-pavement spawn: FloorTileItemWhitePavementVertical + +- type: stack + parent: BaseTileStack + id: FloorTileWhiteVerticalSlatsBordered + name: stack-white-steel-vertical-slats-tile-bordered + spawn: FloorTileItemWhiteVerticalSlatsBordered + +- type: stack + parent: BaseTileStack + id: FloorTileWhiteSlatsContinuous + name: stack-white-steel-slats-tile-continuous + spawn: FloorTileItemWhiteSlatsContinuous + +- type: stack + parent: BaseTileStack + id: FloorTileWhiteHorizontalSlatsBordered + name: stack-white-steel-horizontal-slats-tile-bordered + spawn: FloorTileItemWhiteHorizontalSlatsBordered diff --git a/Resources/Prototypes/Tiles/floors.yml b/Resources/Prototypes/Tiles/floors.yml index 2d2a9ff3ea9..db502f48e5c 100644 --- a/Resources/Prototypes/Tiles/floors.yml +++ b/Resources/Prototypes/Tiles/floors.yml @@ -162,6 +162,46 @@ - 1.0 itemDrop: FloorTileItemSteelDiagonalMini +- type: tile + parent: BaseStationTile + id: FloorSteelSlatsContinuous + name: tiles-steel-floor-slats-continuous + sprite: /Textures/Tiles/steel_slats_continuous.png + variants: 4 + placementVariants: + - 1.0 + - 1.0 + - 1.0 + - 1.0 + itemDrop: FloorTileItemSteelSlatsContinuous + allowRotationMirror: true + +- type: tile + parent: BaseStationTile + id: FloorSteelVerticalSlatsBordered + name: tiles-steel-floor-vertical-slats-bordered + sprite: /Textures/Tiles/steel_vertical_slats_bordered.png + variants: 4 + placementVariants: + - 1.0 + - 1.0 + - 1.0 + - 1.0 + itemDrop: FloorTileItemSteelVerticalSlatsBordered + +- type: tile + parent: BaseStationTile + id: FloorSteelHorizontalSlatsBordered + name: tiles-steel-floor-horizontal-slats-bordered + sprite: /Textures/Tiles/steel_horizontal_slats_bordered.png + variants: 4 + placementVariants: + - 1.0 + - 1.0 + - 1.0 + - 1.0 + itemDrop: FloorTileItemSteelHorizontalSlatsBordered + - type: tile id: FloorBrassFilled parent: BaseStationTile @@ -240,6 +280,46 @@ collection: FootstepTile itemDrop: FloorTileItemWhiteMini +- type: tile + parent: BaseStationTile + id: FloorWhiteSlatsContinuous + name: tiles-white-floor-slats-continuous + sprite: /Textures/Tiles/white_slats_continuous.png + variants: 4 + placementVariants: + - 1.0 + - 1.0 + - 1.0 + - 1.0 + itemDrop: FloorTileItemWhiteSlatsContinuous + allowRotationMirror: true + +- type: tile + parent: BaseStationTile + id: FloorWhiteVerticalSlatsBordered + name: tiles-white-floor-vertical-slats-bordered + sprite: /Textures/Tiles/white_vertical_slats_bordered.png + variants: 4 + placementVariants: + - 1.0 + - 1.0 + - 1.0 + - 1.0 + itemDrop: FloorTileItemWhiteVerticalSlatsBordered + +- type: tile + parent: BaseStationTile + id: FloorWhiteHorizontalSlatsBordered + name: tiles-white-floor-horizontal-slats-bordered + sprite: /Textures/Tiles/white_horizontal_slats_bordered.png + variants: 4 + placementVariants: + - 1.0 + - 1.0 + - 1.0 + - 1.0 + itemDrop: FloorTileItemWhiteHorizontalSlatsBordered + - type: tile id: FloorWhitePavement parent: BaseStationTile @@ -384,6 +464,46 @@ collection: FootstepTile itemDrop: FloorTileItemDarkMini +- type: tile + parent: BaseStationTile + id: FloorDarkSlatsContinuous + name: tiles-dark-floor-slats-continuous + sprite: /Textures/Tiles/dark_slats_continuous.png + variants: 4 + placementVariants: + - 1.0 + - 1.0 + - 1.0 + - 1.0 + itemDrop: FloorTileItemDarkSlatsContinuous + allowRotationMirror: true + +- type: tile + parent: BaseStationTile + id: FloorDarkVerticalSlatsBordered + name: tiles-dark-floor-vertical-slats-bordered + sprite: /Textures/Tiles/dark_vertical_slats_bordered.png + variants: 4 + placementVariants: + - 1.0 + - 1.0 + - 1.0 + - 1.0 + itemDrop: FloorTileItemDarkVerticalSlatsBordered + +- type: tile + parent: BaseStationTile + id: FloorDarkHorizontalSlatsBordered + name: tiles-dark-floor-horizontal-slats-bordered + sprite: /Textures/Tiles/dark_horizontal_slats_bordered.png + variants: 4 + placementVariants: + - 1.0 + - 1.0 + - 1.0 + - 1.0 + itemDrop: FloorTileItemDarkHorizontalSlatsBordered + - type: tile id: FloorDarkPavement parent: BaseStationTile diff --git a/Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_bordered_full.png b/Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_bordered_full.png new file mode 100644 index 0000000000000000000000000000000000000000..c401bd1395e7661c4662bac6c16cb78647078c1e GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNpoJ*VE{O~iNP?V>OV@Sl|x6>8*7!-JzU;g|5 zd|}#z*N4u`J>=kT;v10mEK|X=wCrBTmdKI;Vst06(WvQvd(} literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_bordered_inner_n.png b/Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_bordered_inner_n.png new file mode 100644 index 0000000000000000000000000000000000000000..38cebc9184a8da75c8298406a20d9844e5c08acd GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qOaK}qxy<5d@+kglhTV@Sl|w^tkm84P%sHW>Y% zH?zlXmPEtjgFFSXx5{*FPTr1lU}T-A%)oH&_j^7TzQj#8KpGi5UHx3vIVCg!0A@cs A0RR91 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_bordered_inner_s.png b/Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_bordered_inner_s.png new file mode 100644 index 0000000000000000000000000000000000000000..d0c31d9160e4f7e9e70ec0aeb0d5e4e626455261 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qOaLCIqJy-q`*kglhTV@Sl|w^tkm84P%sHW>Y% zH?zlXmPEtjgFFlcvA4=}ZBE{fb6{khr_6Bf_snf9eCr==$^vR+@O1TaS?83{1OSUC BJU0LU literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_bordered_outer_n.png b/Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_bordered_outer_n.png new file mode 100644 index 0000000000000000000000000000000000000000..f2bbd67d2de6ce8d5344973689578ed9d2b8a9ec GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qN(TuUpIW5af!khQ0aV@Sl|x92trGB|KBId1$v z@8=1&C+R+U%EF8{%XB?1-SKq0erZbHX?OMWnUyvV*xBar1NAX96!W*#i7+WCWx0a5 Mp00i_>zopr0025aJ^%m! literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_bordered_outer_s.png b/Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_bordered_outer_s.png new file mode 100644 index 0000000000000000000000000000000000000000..48916e9bf6718f0285a7ffc04dc75ef9e088a2a9 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qN(lv(4?ky&y;AyZEm$B>A_Z!cWrWKa+|e4+dI z`W_)YDF|+NFWeDK5cxNSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNpoKs@A_Z?70KG8ph2-ca_( za=Af~kK2ONvsHrM_*ybFSS`2*w5fsr2b4JQUEad|oq+0}nrsoE0Sun5elF{r5}E*% CHa@=q literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_continuous_inner_n.png b/Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_continuous_inner_n.png new file mode 100644 index 0000000000000000000000000000000000000000..2e2295cabc362c431810adb566cd619e6b067943 GIT binary patch literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qOa#ge(>6>~69NZZrJF(l&f+bf2G3=AC1h6naP yS88r_IT+s_#(2MUQViRfuS`rVJ<1FW_o5H1VBwmR#IX;kjlt8^&t;ucLK6V5I5>F# literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_continuous_inner_s.png b/Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_continuous_inner_s.png new file mode 100644 index 0000000000000000000000000000000000000000..3088514ce322c462ec498fef86dd98fa99031961 GIT binary patch literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qOa#Zt7!ZW|L&NZZrJF(l&f+bf2G3=AC1h6naP xS88r_IT+s_#>jBLbW#l4nXgPtEIrB$_oAx{Sh!4lCV`y7;OXk;vd$@?2>^t+Hwyp& literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_continuous_outer_n.png b/Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_continuous_outer_n.png new file mode 100644 index 0000000000000000000000000000000000000000..7aaf7f01292af78e97de09240c0cb3e0523e5e35 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qN(Tvv9{mu8S1s-7;6ArXh)o-<@*VBla@*joQw qGMQf`VRA}W-YFKAS3uE*UF@vyS-2ui%}szB7(8A5T-G@yGywoW%rr~@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_continuous_outer_s.png b/Resources/Textures/Decals/Overlays/greyscale.rsi/horizontalslats_continuous_outer_s.png new file mode 100644 index 0000000000000000000000000000000000000000..6912f31a85a54372a58536af3b49ab9f860abd0f GIT binary patch literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qN(Tt{+GQ<*wYNZZrJF(l&f+bf2G3=AC1h6naP yS88r_IT+s_#>l{MzjRUz+nKLSOe|-9%SV`5uy7sQ=yn6Bjlt8^&t;ucLK6VA1USNSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qOQQJY^%gP*61V@Sl|x7V$?7!-I8TsZdo z{!Twuar+$|6MUM2?nfCJCkq{TBe&q(YV+Mcb@f&sT+Q#7_0fWniG@Qz!J&Zx%=nP}18?e4RT0-DU=>FVdQ&MBb@0F^vRDF6Tf literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_bordered_inner_e.png b/Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_bordered_inner_e.png new file mode 100644 index 0000000000000000000000000000000000000000..272b8e57e6cb3899f7d5eb440102571673bb0e26 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qOaK~3Soy(`H;A!kn)$B>A_Z?7NZWH8`haXkO8 z+D@9|hvd$@?2>=>nLoEOR literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_bordered_inner_w.png b/Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_bordered_inner_w.png new file mode 100644 index 0000000000000000000000000000000000000000..7a5c29c66f4c58bc5662100648d45438b580d606 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qOaLDkA^V%;sEkc+2_V@Sl|x7QuH7!-Jz4<7sf z-?Gj@(<7keZt?#JtvRB!bTVwGCnZhgblK?|q@34G93_$q6k&y>EK!%lbhwNQ|h Mr>mdKI;Vst0M?*Ch5!Hn literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_bordered_outer_e.png b/Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_bordered_outer_e.png new file mode 100644 index 0000000000000000000000000000000000000000..025c056c8b4b5085aac621635e871386c9284323 GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qOag_Zx)db4(*keR28V@Sl|x91iLG8phMZ`|?w z{Tsi48{8K!tDmY_mm9C|c}|BNs15-(@I}05;;Ch^TlHs(5lGn6)z4*}Q$iB}a+W(_ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_bordered_outer_w.png b/Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_bordered_outer_w.png new file mode 100644 index 0000000000000000000000000000000000000000..6654976cac33aeba4c198fd832a2431985d8c395 GIT binary patch literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qOag~d?os#Gpe$i&mdF(l&f+jEA33<^9f8|?ns w+H*NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qOQQHQrvw|5m#$i&mdF(l&f+j9#A84P%sH}3fT w{*7P24epDV)xBmdKI;Vst01qQOQ~&?~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_continuous_inner_e.png b/Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_continuous_inner_e.png new file mode 100644 index 0000000000000000000000000000000000000000..9638ee1478abba5dd84594d7a3fcdff19cdced03 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qOaLD%Y^$Cpb$A#+a`$B>A_Z_jPyWl#`c-pK#^ zy^NZJh=|EPv#uv+l5?wXO?vVz{<9@eDH3Sl?X72V=qXUi1_^q)`njxgN@xNA%#%Bo literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_continuous_inner_w.png b/Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_continuous_inner_w.png new file mode 100644 index 0000000000000000000000000000000000000000..d7625d4c649c857b02b703085c8fb6e4e2e808f5 GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qOaK}&1RzM?{)keR28V@Sl|x91iLGAIZzALRf0 yT}CTGfaANSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qOa#e%hB(sXs8kcp>@V@Sl|x91iLG8phMZ`|?w w{Tsi48{8K!tDmY_mm9C|c}|BNs16AfF!I*3I82ZT-UAZ!boFyt=akR{0J+IHs{jB1 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_continuous_outer_w.png b/Resources/Textures/Decals/Overlays/greyscale.rsi/verticalslats_continuous_outer_w.png new file mode 100644 index 0000000000000000000000000000000000000000..6cf7bcfcd6a332a8680b0ca8da807768e65d625e GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qOa#X{Bj&-V8~AtO&0$B>A_Z_gPDGAQt{Y_R)h sYtJRIQ?IjWN$zt+&u5#BPqUx`z1}_+2ft{e6F}Vzp00i_>zopr03mEQi~s-t literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/dirty.rsi/dirtheavy-horizontal-slats.png b/Resources/Textures/Decals/dirty.rsi/dirtheavy-horizontal-slats.png new file mode 100644 index 0000000000000000000000000000000000000000..57969cfeeceffe81e257419b2a425bbc740100a4 GIT binary patch literal 1276 zcmVz@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGi!2kdb!2!6DYwZ9400(qQO+^Rk1r`=652tczq5uE{ zQb|NXR9M5!m&Wk}@pz^^Hx~S5DlNzC2rZ5J^rfn+s_Xx&CsbwpmcLt9{Q$V9?=|31bAA44 zGvHU?7vM{v2W$ZQz|hHE0?WYrPIp&5KtEJv{1|u#m;$R3wzj2yEX4!hrS`o9_J9@O z3fR%!k;Vad3%CZ_z<0o=_MF=Rp(^7VK;5JvfFD<7T$Q50tL>5c2t3pGC9rOKHO9-< zO&aKob#K5Xu+YYZ=94=hIwgKSWk!vGj@DXECTQ=KjJT3xi@Hgp+_P7jZOn|p8DmB) zGSQeBdm~dfX)N76AcU%nUFOSGQG0CR;iIL`v`Ht;9#qHfZ;lx|9PF4|)?aX~YQNOEx$3gl`@&HGnD&tq0T-QArrY8zK;$?&I|yO7?gj2|izzlp@={~I3oMA*L&MULf7UkP*Jp!1%}>#>sW zp}gv5NoVbuW6%>p`~&|UxaaQKibzWeN4l1d!c}P9xWLfSma&CoJXGgy>|uNg>=eM6 zRVau3&Mnmq9b|3r8o2-jL&9sS?51*K7$j84(uu>jFS9Lux8$*JU6-^5&FFfQUsB(4 zMJ^QbYT^#J3g&yy8!-#X2=YgIU>}{|oNWHL9YEP;xlwIXWSMoE- zpX!j2i-K`OsGBsX%GeE68NXJRekgpOx-00*utS%GyP3DP|4PUhC;|h`ZEIi0u`0m0 zZqiTTzs7x4#+IYzedB?xtgfH9XZcj#KXOTEFX0t=)tAR}SFkLJjgFTUjbqI(1JeTd zK}u&LqYeEQz=4!bf$w!#bhROeS}&V3-k7Q%NrxrwdZ7t>w-vx~-K6Jtgs|gk`#4)Z z_?Pe-Pgs8)sxoft;JjwHWmLL@l-dse3pumo9xx+ie7c3)ZlEz1*AJv@0!->A9qBt{ zzlrc|*S0D{qOH|Uy3o}{pzWUPTXJ?2xDRZGs*JmqXmykNRT&>Rc54B@JA*$`AvxEc z1Hp3WoQdvFi!tc2id&&#H`5bg2b m>bR>yx{iRuH^Bq<{rE4ztd-@;&jz@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGi!2kdb!2!6DYwZ9400(qQO+^Rk1rh)h0hY!WO#lD` zGD$>1R9M5ES3PUnP!v5C0S&P+LKqR_!Gl2=+@WL&8u~jrb?*;pe@fPl9os=# z3o@KaBG1MfR#yETfCm7302g9V0^kvVE35wC_wsoFTXAfmbRYuoBo=D9l;@EbMZr$a zIXPRCVvu4s#L@Z0ulor66|(Y4o^_GO3;(0bI=SpZBE#ovQfx^BVCfAwXA4O>d0vy{ zEUi3mF)T|JJpfn%m=t-uh-6_()_W{$je{p%$o|C2?TBn8jfem|tB*bssZs>PNY1qe znO~nsMI0<3Mgvy9$YCH7Z%6i=t9Nhwj1B1Uda+8EE66+WtSgBzLmE zgG?x$%~6OgOr%PYGfI{zJX2J^04nW5HDN@0IPrm`s^k1ZO)#D-n0000< KMNUMnLSTaX`I4ak literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/dirty.rsi/dirtlight-horizontal-slats.png b/Resources/Textures/Decals/dirty.rsi/dirtlight-horizontal-slats.png new file mode 100644 index 0000000000000000000000000000000000000000..cc774d5e4e2e036b43d5bf4ead1fa5efe341b061 GIT binary patch literal 928 zcmV;R17G}!P)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGi!2kdb!2!6DYwZ9400(qQO+^Rk1r`<@9IDW{2><{B z_DMuRR9M5sm(5SxKoG@$4j;=$+oV7UP*uHDH3xd&?7yUcu+?J^Te-gWW|IGW%S_GS)+>+Qm z=ZO|ELrY@k%KT|o6jN;=iQN(~ta?5waM`BDng7%b)RWlNC%OUw1p_7zj9mjh0t63A z{C%JeG=NQ@5S#AIoNd4XS7KHtvZxFY+zQg)2iEof4R8q@YWxyd2pBZ4aeKrS9@z|p zl)F{1HQ2UxCe&g zqE+t<6=xVQYY0SXR$N!S`wZws({S0$Spa(DY_{r9(NjfcT74+pKoYwqu%%Pg%<1kF z`0KcOkY>eY$pPkohQ*SnVarsjb@Sfm5Ve*QCO1AAtdPT;yX zr^=N+)Hhgx@#8gJ)oQTDnX+n2x{sYlCHGVV=F+U_8vhI7#m=uw4gHl|Jc5g+QOn=-#BOKO3@n$h;btZsk?v?9unh&Sg)}P; z9=X?bRYTt&I*mVyf_;JWP9Q%4YH3!qJqz{(s8v-!Ux2J#2taLvdJG%9&kNT8xJt94 zoy2ZKz-}ncE6wZ7yeF&zTG(rpbwpv$o{!Ns=YfKrJ~A(~rtb&dN+b@&>rG$SFPg2H1*{${nl)@O%R?4?(EqL~;*vP)CoTiu z6(ABwJ3uGRijxWewzL_Hu$>9{bNVj0s`&2sxAqf%t{&*`ls?`70000z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGi!2kdb!2!6DYwZ9400(qQO+^Rk1rh)mI+A06Bme*d z3`s;mR9M56S50%%Fc5uK6GWP(v`uJJIC9Vc!!Vq6;lS`4;3x1yedYo~&4FW~P12S& zZN^Dsb6It^nq8^vjK{Jit)6$^ei+`_kBG!Od+440LgRPB{IjsnJNp@egni!G55nBo zJNpR$41ir>e+!_Y@ku;cR`oG}Z}d1tT593l8o+G;F!9cgyt6xO!7YGZM)3jNcO?q} z7}4Xgu(uCj833%ys-AMB^t|xSj+xSpXxyR4N;sSYs}-w^0)U1NT||qfWmW$H@YXxq zFROYT%`Y_5kc)zB2}^DPbiK2O2Ef`oI}#Sn>Hegw>TCMC0uPs#9To$e0Qki%uoe^q z4iw(mel%Cmm693VJIee<0MKWQ*Q6liEqiA)^D`cBOT;n^O0F^hT0sf7K%qoPAfcxF z3P52J2)CF53BZ=Xd`UV&nC{TWzcvr>XIobFjqu(i_VDDjO8M3R*bYe{KG-{Z0AMr2 zkJHTjJmK1*5zJ$l;vxA;B_@DSDn8l+aGe2g!a2ak`-yPv1L&7k{o6MaLgp0Ilc$%=lUBhFDO#P_Z zwNVOPDlSUNs|0{~Ag58{yan)>8k0iF6Uc<#FxNNS`6twSR_!_fc#CHL#|4o{92x<* zxogQ3f~}-Rg(a%iJNriHfPzJ48DKvGfR$nyUZ}Lrwn;Rs!-ts1M5g8?w3n%RtFo%U z19&P}=_`P!$oW1MrCbcytnBsDn+a07*qoM6N<$g7LAb7ytkO literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/dirty.rsi/meta.json b/Resources/Textures/Decals/dirty.rsi/meta.json index ac71522d444..fb36b97a6eb 100644 --- a/Resources/Textures/Decals/dirty.rsi/meta.json +++ b/Resources/Textures/Decals/dirty.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "tgstation at 606005645d3a14c4439e5ce14785650121b22678, dirtheavy-mono made by github user @Flareguy", + "copyright": "tgstation at 606005645d3a14c4439e5ce14785650121b22678, dirtheavy-mono made by github user @Flareguy, dirtlight/heavy-vertical/horizontal-slats made by SeaWyrm", "size": { "x": 32, "y": 32 @@ -22,6 +22,18 @@ { "name": "dirtheavy-mono" }, + { + "name": "dirtlight-vertical-slats" + }, + { + "name": "dirtheavy-vertical-slats" + }, + { + "name": "dirtlight-horizontal-slats" + }, + { + "name": "dirtheavy-horizontal-slats" + }, { "name": "damaged" }, diff --git a/Resources/Textures/Decals/slats.rsi/double_dark_e.png b/Resources/Textures/Decals/slats.rsi/double_dark_e.png new file mode 100644 index 0000000000000000000000000000000000000000..3bd133e015e1b5a91e50f9eaebdd846d9c030192 GIT binary patch literal 495 zcmVz@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGi!2kdb!2!6DYwZ9400(qQO+^Rk1sN3%Ag68{QUCw} zMM*?KR9M5sm$8zBFbIZ$xL5cTHoJ}Q|1xXiQ&?@nRyZ6cj&njTGif4*FYp@>;l`Nf znYV3&*YjC@{$3WCrm6YcS~3=B;Sxim2^} z2=Ub*m^rQ`v!ZLAz6R#nmj7jhv}88a0+@&nur2`h-|s9XpPc=w;W&=)UKSvtU-Rej lI5?GQQ-*f{NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvlw0L)i8de5J}pld$B>A_Z$ljWnhkhl+TXN> zH%$4WdG~+(bh%Gle%_avU!O4LWZV*@FUhIs^QI^L(S`4SNSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvl!xE0)1?z=AFrp2V@Sl|w_)C!jwo>Cv`$^_ z@vdIO*41qB;pja^t!EO>uGf;TmRyi&;>)B10Wm!r-tUglY}lT=drhS#D-VOu7n6l| z-!m|D2`aL5a5!CWuR8At1q4hL~vlS@## ze%Lr;_1>uDyNA|C^(M)PP2M_X`P=`U4S+A_!ZUg@NF->?36@ZvmPSW~K7 Z-_5w=mfuKV literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/slats.rsi/double_dark_w.png b/Resources/Textures/Decals/slats.rsi/double_dark_w.png new file mode 100644 index 0000000000000000000000000000000000000000..c52167124ccfbc9d0bc5fff1947b9dd5d18b01ea GIT binary patch literal 500 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvlvnrDClei@eO{g}jv*0;_l6s8Yf%vJZa5WO zA^JZ4b}`p%{WD=dF1RMzH(y?Gz_?P;xH)E;Yk}~+>NB5fcANPMUn^C$I>f->IiY3q zHwo{F-zFZhIe%jt@7_d)15(94PtIFz*t~7WGN%OohbEFqHhbe6O*?m}KM2ZL{eZ#2 z#o^PJkE^v7A7XUq5mcEiqQEIAS&S12!H8r z_{kXa`H%n79ig0pnWv`J3t#xNBTD~5S>44JUBjj$;*FOCugnTIZyJADG^zss5Kr?u{`njxgN@xNAm)*O$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/slats.rsi/double_steel_e.png b/Resources/Textures/Decals/slats.rsi/double_steel_e.png new file mode 100644 index 0000000000000000000000000000000000000000..8bd42498b1db4175bfb15fc78b65b7b56881ecf9 GIT binary patch literal 524 zcmV+n0`vWeP)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGi!2kdb!2!6DYwZ9400(qQO+^Rk1sN3*40FLM>;M1( zVo5|nR9M5kSIdrrFbs6_Kt`3!HNR*jERt z*|GMGnJ7f@G+Yy*Y83(sw~5Yk5U~(Vh=4@$X{ZYE&2yh)M?3_a0Ijv4wPyE3Ll7N| zf$}^ATsc-p2+*x`MkPsoWI(TIBHt6Ogj@SSvpT>5N#CU`G^vD0^zYzYcuniT)^2E| zZ@yIrA^@f&&m#k-q7ycm2RIROv!Eyg+(cxKPQy>JFR@^xvLJ8ChmPen&JU}ETWdj+ zd4QXU5b-q=gtZ8Ouge9z_h7nidCty(>AJUp#9I5Bio!bDN#gf>kNpAaWu`gKT1lh; O0000NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvRDk)SN9cc`eLkKpjv*0;--a0G9X8QZD+My|tdFF=_Sp!w5rpwf1A7&7zA{Pd2kPc(k`1NH`-= zeJ_XMLDm8B=ParjTjrU}=vv#kD4&a=WlF)kWO=1P*7RHv{+~$qx^(2Br?=L$JxvoLv=Y+u m_AY4*zQ1@81U#DfgL%utWzT~DuGI$yHG`+CpUXO@geCxm8Ocuo literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/slats.rsi/double_steel_s.png b/Resources/Textures/Decals/slats.rsi/double_steel_s.png new file mode 100644 index 0000000000000000000000000000000000000000..9926cbdba255be30383952f082bb6b749bb04848 GIT binary patch literal 479 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvR6uQ(PvZ`teWso+jv*0;--bEn9Z}$!^GLyU zZ{EMlclXWtlU^OG7`elCi^5}vS!Mh?4W@JCJU;l*f{_gZ{EnUe{q|d>TI0*NRkpf6 zrI^$h6c#OW_Ts$xZZ3280qgKL6DyOGCu(gIm!G*`n_+=f$YHj~{WpJ~+Fm|wYwD!d z19DYQs!p`OKU(?Rt5t@>v6OOLnb{O&6IpDd?%dOu?Dvj?>n}-Im+9J@2L( zL&cFDnKpaZeXE)#nGcZ;6jtx%aM=i~n6{-ouq z)^G2g@w3>we(Bcfch0ej9eh)3%PA|Uvhc%56*~pH6Q|;9b~d$@KR7mH!7)BR>@Gw^u!?f9dX1)?bfA R?*YSNSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvR8ZC^Ch{)OJ{wOL$B>A_XTziU4k-x8h&mLmD*3;rz8o*aSqiy(bzZ3WMrG{cFDqN#o;hpYjRU2T1(L_l?!El8r*aZ^JOWZ`zRklomv`i^=muNj}<$4mb9tLD!$uO967I>m zg<@~6GV8WzPOWk%7yA=4;mbSLHF7^P_RjpMbExU~uC&ValRwJ*mkqZrh@JL^d+Fb( aJq+117iol+>iYwOmci52&t;ucLK6U4LBTWt literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/slats.rsi/double_white_e.png b/Resources/Textures/Decals/slats.rsi/double_white_e.png new file mode 100644 index 0000000000000000000000000000000000000000..ada1fdf7a0977278c07a9a7b864fa8373fdcbb1f GIT binary patch literal 578 zcmV-I0=@l-P)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGi!2kdb!2!6DYwZ9400(qQO+^Rk1sN3;6ff)~eEAPjX0?y?V=)E}JGOH@t0RN6WJR%yR6Wl3Dq9Tp;o0&NvDU#bAb zkLPC_Hn76lw!MCx&+u_PM&}Pr1MmBN^8cTw6WBEXymQA4rmE)g%Q%AFZs+eB5ddJZ zrtAB^F;FzeeB%fJpc@7t=Wf=i0gxNUz7Y}77;wzsn4u@q1t2#JoqHqaW@emVLj^!3 zC=clm%~TcOqzN?uFNpKWV+?SDl_DAlGa{tC2mq<@TnGlD8-{cM1R{)OK~V}m=s}%Sd`Z%z^L{D59DWRG>b49Qw~6C^GD{@8OS;G<8t0; z3Gk5~5L;t4PoAp$(gBbDSgLAm;$5Ut6ja%T}Dr1SwLTN{IMW{g)cB+9@a>B>&b6yr^<4P~u*w zT8KP=SRq1Vq9D{OVfZe*7lu^;-gY}UG|gQN@bnz(iGZ0Gcf^gx^L&l{0>bXqgGBAA Q_5c6?07*qoM6N<$g2j>Hw*UYD literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/slats.rsi/double_white_n.png b/Resources/Textures/Decals/slats.rsi/double_white_n.png new file mode 100644 index 0000000000000000000000000000000000000000..a06a6e645d421dd82e8a487adeb693630fb8c25e GIT binary patch literal 430 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvR9KMnPI(E?J{C_G$B>A_Z$rJgnhiu`3>|Gf z4xZ-R+hFp@?FDP=y1Tc1H+JNT&oW!qX}I!=Z`#c7b3N~Q7v$bnmnk?^EOSX@`YyM? zX$5B;86Ft&Ff>%(mu^<_I-YPWz@SYy`TdWjGJ;EuqlJz$7?>%j$DeI5%xz9GtXp=< zf5+x^JGv&GahqDBE16Vu?dFr>dlS}nxu{R?d^kzV>Z(h$P}_XAAI$;>WpfTBPfJRT zE;wVf-0%*U<7JcGrUmO(edKat-|4%Uogwym?ayPEOZhLqQ`og}lkU1x!rJ$y6><6a zOxsXa-Ic6$Y(jk3?KgapD`!`*MvH6>OD<{_x)K4ebzcoLefOShM+Sy)rO} O7(8A5T-G@yGywqcXrNR8 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/slats.rsi/double_white_s.png b/Resources/Textures/Decals/slats.rsi/double_white_s.png new file mode 100644 index 0000000000000000000000000000000000000000..5b82a8a14f7ec8e297c179c211a8794938db6373 GIT binary patch literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvRM^z?{^X@V`}jOv977@wzYTHZYBms+_U(e!YctPa?TV8P8I$Io&3nWX00A3}`KEvVxiOou_Wt{@ z16Qjh7*@RgmHpvj)Scsk?%B_G{oUCxj!KB{!^P`Q|^p4%LoO4U;-cAkmuQ`vHmv1||_VvG@ a!@|C2e_v434-WNSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvR7AUBq6H(+zIsm=$B>A_N5dWSnhgZzyh&pJ zDnIp;`MHS|OhI-ME1&;aU@7uASHCc&r#X0|UzpROgohu`Rg~R~)teq~({b70!Hw_y z_iN?&UhK+i=XGTGaB*8kFQf5dQ?|8+n>`;!*2w;ri+^ssjg7IPqQ3q@ME9{fJROpkE%elUA6Kw*GE^Vs3D^~o{5GqLSFmo*<+BZn zyNYL@c91DlyJ93zKV^ovD)J-9&>_JnLn=c_FL|G@QuVi=ME8lo8DwW2c9rq2alh|f1bOn4CB2X6Hxt}TV3T@ zl57Wec&KvKZsC24IR2jQ%KkY2EqjsM6PGlF6>iQ-tz8lt1xl;ZOgBF&;98ROwfcte zw3-B8NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvl#i?C>Ls8V4A(qe977@w9}Pb!dQ^df`=H~k zztf8*MEyT$m-BYNX~7j{MU{>={^a}L_vPMxUAtD4wMpY$|K`P}3=E20W%EuKubO0C z+1Qbg!sBAFw_KM&J>JwY_5XW^OA;Pe9lW?14xE{m6EO46nW7km1TU*)3wRuS-aR?$ zF^l7=ZpSv`%`)OgUIjlp5c{`?VYT5LwL=_gtPM4McjhXTH%`9nCL*cv>eX=_iM|O& z6J9m_P+GQQ!S{LFC-uGxuWz1WslaX^^8U$VTa8y;{nwVYE?F^YpRUS$<`rB2?fuXA YIXBBDeMb9Mpbr^5UHx3vIVCg!0KTb^vj6}9 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/slats.rsi/single_dark_n.png b/Resources/Textures/Decals/slats.rsi/single_dark_n.png new file mode 100644 index 0000000000000000000000000000000000000000..212d8f9b2a2d83b70c609e716808f9d9c505ac91 GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvluLK-=0&f8LVG-2977@wznyHz*KEM!I^TI$ z0r!$6?hC)ib3aeeTEgrrvb2%u)eCc}-=F`kJ+b&bvv>s`bM9>;U*YoiJ69z#Iz`yF z2+WwSYHD(j&?= tE&1roOqZpvcX^)=2o!Mzqo?tE7#X^p{w?V!&jb2{!PC{xWt~$(696KHg>nD@ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/slats.rsi/single_dark_s.png b/Resources/Textures/Decals/slats.rsi/single_dark_s.png new file mode 100644 index 0000000000000000000000000000000000000000..88dce2a07fc13b2e8b9f42371d0d68a93762aa5b GIT binary patch literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvl-qJ&k^6O^&^AvO$B>A_Z>Lxb9ai9R3HK0P z-tb$VYyKf$o+T$vD9Q`Vh?`XL%1OL^#mvTY*Z_=X@EnzReTGG)#o%mBq!-u3IB>4nnDXLjV? zHf9vH6k4@)US8q)4cnyOX(X>*XMTUmB|V)p`ipG46Y l%U{|**n51}y6MM?*k^r+H$2~e%oykc22WQ%mvv4FO#t$AdWrx5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/slats.rsi/single_dark_w.png b/Resources/Textures/Decals/slats.rsi/single_dark_w.png new file mode 100644 index 0000000000000000000000000000000000000000..a55bb46ee234184c4fa8fc476271694715874cd6 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvl$T|L!x{&m&_PcZ$B>A_PeTv#wixhio~(E5 zpYsLBjAH!&?mLquI%|TSCZ8^h(K{{lBY11rn%7=75o`=9jzUNOzKBd^c#w8Hp=P<@ zji}jeYrmT?xw6^_c5qCX^TdAjCymB?)*i1!b{HqDVqyrmqsnz7<3McVnP8KvfBji} zSnOOknsB-^-E^xt9=~7>H{(ezw*Yf*)xzCOo&uh>0)j^JF+~q%YX{7GWbOOot;V$2 zgLyV5;{^l@jC0n?+S+!MUGOPj(AXNblCxg-T*!-D&f3#J&oFqp`njxgN@xNATzPr) literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/slats.rsi/single_steel_e.png b/Resources/Textures/Decals/slats.rsi/single_steel_e.png new file mode 100644 index 0000000000000000000000000000000000000000..03a82ad6d18892a1c721e61de186a0d99e3f1e8d GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvRM4U_qIVWh=#Zz2V@Sl|x6{1&4lD4uEU#H| zXO*YFUtegi&u$Oli(;Er_qymR>TG=Q@caYrx{U3ql`+qER_FVdQ&MBb@0Pg~O A@&Et; literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/slats.rsi/single_steel_n.png b/Resources/Textures/Decals/slats.rsi/single_steel_n.png new file mode 100644 index 0000000000000000000000000000000000000000..759e1b1c7e056f46494d767c7a7f280602d88431 GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvlwVtO`RCa{p^Kg_jv*0;-%fVqYcddUmDlz4 zDOfIkXi4J1s~;?MdcrTQRZLjT9o!_sBQX8*w9EhQ+g~=b48PjVd!_X3!-^+$y91}G zM%xB8q~B(`P}yI+?*4+UeJ*aA3|!eeW7dmY`}XSrql=xJ=B#zEvw!O_|6q}r)y_OE zAi`R@VAVEbwJ2}KDc62DK2pp|;<~qUh21s%T$Q;(|BdFYZg<$fCyklq{k0UOh^~xNSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvR6rzX_5}-|&;?Hy$B>A_Z>MbJYc}9MTUR}L% z=8bbk3?F&~Cvr^WI5X$<`nI5&4|2sEtLKTGdd~Nko$dX{h-uFAA4w~2XumY);st-8 P-xxey{an^LB{Ts5Xh@I$ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/slats.rsi/single_steel_w.png b/Resources/Textures/Decals/slats.rsi/single_steel_w.png new file mode 100644 index 0000000000000000000000000000000000000000..cc10724436ef981e6f46845b7defeeaa38723d86 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvRFG4nt#<)X=!~a}V@Sl|r_;UpnhkhdSm=>%$eN!o= zUeJX@=^N{lIWL_U6s9JHIdChidSSjY^%FDeN|9o&sD??OmvM-*yjmSAaN}}9UxUQC zzxUN*EZ1&{NQ3sH{Tjzf6bpS9G>of#}X{NLzLzopr0Ij)+WdHyG literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/slats.rsi/single_white_e.png b/Resources/Textures/Decals/slats.rsi/single_white_e.png new file mode 100644 index 0000000000000000000000000000000000000000..adeeec412dd1bdcc5442737b21ffb52850ee3e39 GIT binary patch literal 415 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvRFrv*{lZ;9p|74Ujv*0;&rUzh)$G9Ix?Y(5 z&2g@~B7ayG{*S(5k}1A6vF74b&&`)46ZyVBGYqpZT$lTMSLxk{|MtEQJghit4kJV7 ziEDC)KSX|JsOV9SxOy-2$h=sQ6PC)$Q`q^>Y8{jJu4W@8!mkoU_Dga(8YIRbxnc(;R`A}tS2;&GRnxl%R9&u#B?<; z?)+4NSk`Ro7)BvMp^J;ekMun5kYQ+eZj!reVK>tnF42uHdrW-KO!aa7mn?QBtc9^9 z#PNmBjos`m8XMRJje1TMWV$F7Rp_rd_s{nK*R#^>KVla-gao_+1^|PntDnm{r-UW| D!OWNc literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/slats.rsi/single_white_n.png b/Resources/Textures/Decals/slats.rsi/single_white_n.png new file mode 100644 index 0000000000000000000000000000000000000000..8f18adfca3d43ec6bc08a87330cb984c3c9e588c GIT binary patch literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvRLE54$f74ep-rAHjv*0;-%gI@YBmsParX(} z5BgB#q_429!gJyD4gIb;zZEhsPmt%Wo%7ysxAD!$NsspF=%*NbvDM4%zHO5{N9{?K z217-jG{b|9>pTOOe$^8@sL|y3WO09GNYwu;vv#pH)G}QEQ@}LwLBqGyXJ?+T_bGl+ z6t867d;U*`#MCUlt9OcxFWl5!bzxT!XL2-W?%8#wsXt{8*lmdKI;Vst02MfWL;wH) literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/slats.rsi/single_white_s.png b/Resources/Textures/Decals/slats.rsi/single_white_s.png new file mode 100644 index 0000000000000000000000000000000000000000..9357d6702ced7c338106c9333ec1efe7931d49e6 GIT binary patch literal 359 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvR9ICbqZug2u-DVYF(l&f+bO_5_YyWCQmb)t`Ma tjva`cedc7Z_rJz_5!pxyra+G{c)I$ztaD0e0sxbhgueg) literal 0 HcmV?d00001 diff --git a/Resources/Textures/Decals/slats.rsi/single_white_w.png b/Resources/Textures/Decals/slats.rsi/single_white_w.png new file mode 100644 index 0000000000000000000000000000000000000000..25215f25ce166e66a707fd196a92251fad7f8064 GIT binary patch literal 408 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^?;r>>?wFYU7AVMG;_2(k{*qNvR7BFlEwd3Q^v=`8F(l&f+v$dUhYWaJ)X5b^P-2gB{NZBbmo zYfBUv3g)SaOk~K?Jl{R%J^Rvzm0=9mVvny@=w$GgOL}6|r=h%se|n+HQ=g8&+lsZ%gRzwF}z?gJ<8EblNt7 z^XljMtPxMMxb!?ElBVouw`+Q#e}MOBn$u6IZK1mxPwZokQt)KmQIt^l@Fb(Tz*KRO w-8l!(H=M}j?pr?j%lrbd4X>-O3*KS))SYwN=IJ(epwAgRUHx3vIVCg!0Cvfg8~^|S literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Tiles/tile.rsi/dark-horizontal-slats.png b/Resources/Textures/Objects/Tiles/tile.rsi/dark-horizontal-slats.png new file mode 100644 index 0000000000000000000000000000000000000000..fbadd8105416107eb503c84635a6c6e1117e1cae GIT binary patch literal 435 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%C&rs6b?Si}mUKs7M+SzC z{oH>NSwSk3J%W507^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10g0sLQ zvY3H^TNs2H8D`Cq01C2~c>21szho5?(>2-9eVG{w z?&*Kq5>#;SeDV&thG54PbIxoDQdp!LBydsd!5fArMv9#$@3HP=S1WyRuXK8sf#iX; zxruYDXRrJ$cVd439(_a}khciDaxpr&j8HvqB2Qz0mxLj!T*!-XQj8AFo?>qnA{p1%B5vh^o Y?=f9!WPGO=7`O}!p00i_>zopr064v*#{d8T literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Tiles/tile.rsi/dark-vertical-slats.png b/Resources/Textures/Objects/Tiles/tile.rsi/dark-vertical-slats.png new file mode 100644 index 0000000000000000000000000000000000000000..6be36a54affe2e6047898d0370d628be726be124 GIT binary patch literal 498 zcmVz@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGf6951U69E94oEQKA00(qQO+^Rk1rY!l7*)1zE&u=l zNJ&INR9M69RzYsVAP}4d6i5C+dc*1ezr-#1fmO$gw-+zMj#5$^sfT(lHoItN7+3^w z;J|_Z4k}IX-pkhFA%tRmS0ewsUI74cnh-*O_Z|RXjlu1H$H(P@I890joj*fLBFvVR zSz|y%==(m67q${5Q6&@wXfY*Oll>&Jih!?SfHelg=cnj{@p#_eF&A9h!zfLJQr5Q0WGMO#uxzr&FPfl`VRnZ z-U_ZIK%pe(rh$kg%QdcJB7%r4MD1?FoPcKsbftMN&sVz#^3~>BqTe-<#;e@}T1@*~ z&p_V)%$x|-nQCpg-c#q?V$~Y|t@XRxaNTZsTUKwwyw90Ak+p4`avB@Q5k!=3#$E3L o5uvW@wq0>=z6TB*IPmBA2KZ{oJe69N*8l(j07*qoM6N<$f?*rPp8x;= literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Tiles/tile.rsi/meta.json b/Resources/Textures/Objects/Tiles/tile.rsi/meta.json index 52bc656cd4f..e7a62bb16da 100644 --- a/Resources/Textures/Objects/Tiles/tile.rsi/meta.json +++ b/Resources/Textures/Objects/Tiles/tile.rsi/meta.json @@ -25,6 +25,12 @@ { "name": "dark-mono" }, + { + "name": "dark-vertical-slats" + }, + { + "name": "dark-horizontal-slats" + }, { "name": "dark-pavement" }, @@ -263,6 +269,12 @@ { "name": "steel-pavement-vertical" }, + { + "name": "steel-vertical-slats" + }, + { + "name": "steel-horizontal-slats" + }, { "name": "silver" }, @@ -293,6 +305,12 @@ { "name": "white-mono" }, + { + "name": "white-vertical-slats" + }, + { + "name": "white-horizontal-slats" + }, { "name": "white-pavement" }, diff --git a/Resources/Textures/Objects/Tiles/tile.rsi/steel-horizontal-slats.png b/Resources/Textures/Objects/Tiles/tile.rsi/steel-horizontal-slats.png new file mode 100644 index 0000000000000000000000000000000000000000..51b153d304ea67904cfd2807dd43e4a21a20dc68 GIT binary patch literal 510 zcmVz@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGf6951U69E94oEQKA00(qQO+^Rk1r`=N2l{ZrfB*mi zR7pfZR9M69R?%+4Fbq7LSgH6cI-#*I9uv}dVxI&=R$N|^tnHYR!q6tI_tYwp?`)r~ z05fLH`0rShF0`vvcWdzX{k|CAmdKyiYXE?#f{7ri001V+_e2#T1T@U!5M4vsE46BY%$Y&P(*oJ^EUYhnwMFGK`O z=kmFT;Nx((zXge;Z@@&*ZwrmiYcbh`DRUZ4fktwjDB|yXAnk#asbhwQ@MRzL$5KN8 z0KDyX_X{9n282HL-o-IXXQ5|Kp5TX~fJ_j=XMdT&u_6EvV#XT1z|K|gi=u#pF literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Tiles/tile.rsi/steel-vertical-slats.png b/Resources/Textures/Objects/Tiles/tile.rsi/steel-vertical-slats.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f9929f33bc1422399d647a6447521a36b8b214 GIT binary patch literal 583 zcmV-N0=WH&P)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGf6951U69E94oEQKA00(qQO+^Rk1rQSvHs@uNr2qf{ zok>JNR9M69R?AMqFc2KCW3Y1VpCEpKR*0|egFE6+daBeWU3SgEjvE6~P%+{_MzRuX zSDwwzcoksAj2ZtOW-4L%@DQ#&e6!t7p5IK7KRrGI09X~9^%~373IO1U@bdbK`@1`^ zDnta&yB&u7gfLYEUGrs*2xKkx`+eRQhgyq{`CDgA7C_d5RWr#)vag`3;I6AvfU3e- z3x0b8jLAz?<9mVyF7e^LN(YF*A^;H(0=n}VAd1frvOicg?ujm|Mgh6)BA+@_cw$7z z-_(Ed7JLQoJ(#&9RLun)kH;cb#RD(~?&c=ynmmD#2OLrCk}+t#hczbVRFNPAAOvvI zoRSx;bJ+vYg*L}s)5QE**Dw?64{^FS$w}6Q9*A8>QCcX2DiP0+}5E1yctv3h8tsSo0cn*v) z$ZU2Ow&@pGizV9>9VzG!*a5NWArxTi{iCy~X|3C=Atd>jt&HsTJGiLlb-T`+* V>QkWbbcp}}002ovPDHLkV1jPJ?sWhF literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Tiles/tile.rsi/white-horizontal-slats.png b/Resources/Textures/Objects/Tiles/tile.rsi/white-horizontal-slats.png new file mode 100644 index 0000000000000000000000000000000000000000..5166c9a21dfc27d41647dbf1276cbe5ad9b76c2e GIT binary patch literal 497 zcmVz@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGf6951U69E94oEQKA00(qQO+^Rk1r`=MI8_ba`~Uy} zM@d9MR9M69R?BL`Fc6%sw8Ht=g!ThWDLw}R`Pcff(Yl93LN*CFWP5w8$K^3conh)zM2MY*TuE>KE8*Viz-9}%pC0^ zg2R6QcnLz<=c(7EDVYdFtJ>-QCJc^KhoTz4>ug&7eh<_M0a3-Ks&E>Hs0*Pqod}FE z(GCDj(>!MkQy~fsxv8oNv4CKgg{8<62+^k9Evhlf)E4ab=tZ^!OVapq9k>;3s{P-6 z55B0M_x`y$aBU3d;}*s;CHRyKoQ46N2vil!jK1$-?fExmjw%=kv~3G(EsQab-v`EV nq>tUsudVNr`#?cK!LQ>7;2^rQ1XhEc00000NkvXXu0mjf7KF&~ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Objects/Tiles/tile.rsi/white-vertical-slats.png b/Resources/Textures/Objects/Tiles/tile.rsi/white-vertical-slats.png new file mode 100644 index 0000000000000000000000000000000000000000..91a750c1c858295cccce5e49eb44813f46f04833 GIT binary patch literal 551 zcmV+?0@(eDP)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGf6951U69E94oEQKA00(qQO+^Rk1rY!k3&;~5u>b%8 zeMv+?R9M69R!eHbFc6)LCB==?V-#{Zhx8_ekh=xC4hVsFP5qfz(?vSMRw;2D(@p(0 zLK=JC8_fp+%$PCbzhiOhgI%8USm$s1{o)~YyFBN@IWC-IYc22coUOHNt>wZwJ{%6g zb~>H7`+eaY4-t=JglR-j#=!gW81`K#W1u1$zRt2~Qy_%&eYIs(0RX^L zn)Xs45PSFR;Wi}ip>5l%V# zjb}g?pLHE-AH3IfWq1f|rE$vNsh pz|8o%-L^0i55EUy%$V^P_yTzW><~&PL>&MC002ovPDHLkV1n%1*j)es literal 0 HcmV?d00001 diff --git a/Resources/Textures/Tiles/attributions.yml b/Resources/Textures/Tiles/attributions.yml index e1318a223e6..bd9edbcc863 100644 --- a/Resources/Textures/Tiles/attributions.yml +++ b/Resources/Textures/Tiles/attributions.yml @@ -56,6 +56,11 @@ copyright: "Created by github user @Flareguy, original, unedited base tiles modified from /tg/station at commit 6665eec76c98a4f3f89bebcd10b34b47dcc0b8ae and github user @moonheart08" source: "https://github.com/space-wizards/space-station-14/" +- files: [ "steel_vertical_slats_bordered.png", "steel_slats_continuous.png", "steel_horizontal_slats_bordered.png", "dark_vertical_slats_bordered.png", "dark_slats_continuous.png", "dark_horizontal_slats_bordered.png", "white_vertical_slats_bordered.png", "white_slats_continuous.png", "white_horizontal_slats_bordered.png" ] + license: "CC0-1.0" + copyright: "created by SeaWyrm (github Aearo-Deepwater)" + source: "https://github.com/space-wizards/space-station-14/pull/37832" + - files: [ "steel_dirty.png" ] license: "CC-BY-SA-3.0" copyright: "Originally created by github user @moonheart08, then modified by @Flareguy, then modified again by github user @moomoobeef." diff --git a/Resources/Textures/Tiles/dark_horizontal_slats_bordered.png b/Resources/Textures/Tiles/dark_horizontal_slats_bordered.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9356123faa364a14d47502d8ec5e1944c23a12 GIT binary patch literal 1439 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 g^1r(N(;uh*2k literal 0 HcmV?d00001 diff --git a/Resources/Textures/Tiles/steel_horizontal_slats_bordered.png b/Resources/Textures/Tiles/steel_horizontal_slats_bordered.png new file mode 100644 index 0000000000000000000000000000000000000000..aa55298821543099652723a24c16bffad5b9658c GIT binary patch literal 1580 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 FV1k^o532wG literal 0 HcmV?d00001 diff --git a/Resources/Textures/Tiles/steel_vertical_slats_bordered.png b/Resources/Textures/Tiles/steel_vertical_slats_bordered.png new file mode 100644 index 0000000000000000000000000000000000000000..b17c96d38708da2c77f67fb82903de933182277e GIT binary patch literal 1654 zcmV-+28sEJP)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGi!2kdb!2!6DYwZ9400(qQO+^Rk1sN0-FP|l+ZU6uU z%t=H+RCwC$TT61>I1FV-(XD)Tll#QU)~E8JdY{}Uvzx@~aLCLeh6)YgM@sF~RE1S4 zw_Ac90D>Ss>{pMEk3WMjzI^^1KHT4n_x^hSKK%XlYj}8gV4pdk&mz6`{y+FHgC9c( zVa_?EltKt0q?FdrFyK45=A6Ta`}-CAX<5R*KYpy&)3St~;lZDCzIvX+e_EFC&$n+Z zK9zyu(`Pt*_)GDz+;DlZvHbA27a!yY*)9F!_eXj&#~5;qoA2-_t*Q6vD5aXTI+g&J~n!4E!0}scSIzYq<@gz!{^2TYOU)^kQD5l z@R147Cb+bA^_^rOFo`1r(^33ODeHGpF|bi=Z1{7|8~j>pxRerdj3FvA!aKP6ODTmn z^SoIg5rl#p95Gm?G>MvZdJF;Rv6~-Nq6dEu|Lp+zN9jvzyYN|B3c$HQY5%}01k;ZW zVBW%)R-uP~%?nBN;JSM~iL^Ck!O$gqx@FKwhKaTG&l$%=Ekm;)NeOu6jjR9*ALG_q zLt})b_)|xG&}wz@FDV$)bN5q9S2C1Ru8hFK&pBW5pJUw2g;)Pn5785ZQ83OBFpXq| zT7X7*=+R=Ufzq(Er2~K zVh=tigO?ukj_D_EFX#4{BO-C?DI^7X_OX#P%)13i7?w^n*A2mILKzi}fh>Hlfk|l~ z=fUFbR^*tVVbl?J$S_vF=!95J@RiH)7O>}Z9d2cMB z8Stf)UwSa=9Y^rsl|SAp7@{#iO35AI?DYUIr97|vTy1|;evXy~;8Gof<1OMm6dqWF zS~W00nZShzjvl)_Zgo=pUL$NudgQGGSdq9kX&(Ny?Pst2G(DB(uWFS*oJZ1KGF5l5uJCr^(HFfRUB%siIl$^yab>z9q0H`|!wa z;U5_|j@+j*;O&nZ*CFQtdKKh#WxeH4pda-BlDyP4bM5L|8pA2)t74C58{#UEt}H+j z5Wm1vFV`l`T8Vozkx>sI6|(UER@F`G$9wqT=r5(Lfokm74k`XAXFdjasebnVnI67x zwQeQ>dj>57I6*qB6oNeXz5D|{mo2%^19$_mJ+Xk+kH;yf76{#nfB24DfjH=r=;2h) zNDai=lK1F;qL$H{!-9*V7C3b%-`kIeV1_#op>^Z10gd2aZGXa+qu~SYDd*5?4V9#6 z6rbvQDP_fw&LhxgC$IOj0tjy~(Q}?)G>_I&A&nk)!AAJ+$zVM3kyXdA^e)9HaHf!x z|0L7~rjg)_i+Vl%@R8t!8(gJ}2AS{f?%c-fsUuX>@Y4G6S|jS>tYc7Kwey(RXclz( zdQ!Z!8U$M9REZJG@-^jq@lQFkmh9<=Tln5IRWcB*m1}vx-tz#OhfbZH#Yu{0d!uNs zr#(`L*^>eunSV>XN(V}s((QyZfL1IrdLF{U*J7b4?Ik_KGx>Wb5tz0j>7)2KQiiSY5-iSQ92YW(HBT%oO@K7RZ;>RRCE$-is-!QYSn9~Qa45WSj0^#A|>07*qoM6N<$g2j>@ Ap8x;= literal 0 HcmV?d00001 diff --git a/Resources/Textures/Tiles/white_horizontal_slats_bordered.png b/Resources/Textures/Tiles/white_horizontal_slats_bordered.png new file mode 100644 index 0000000000000000000000000000000000000000..664db1becf43c4168d47daca00baa4b2ad9ed024 GIT binary patch literal 1328 zcmV-01<(44P)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGi!2kdb!2!6DYwZ9400(qQO+^Rk1sN11CAqCh!T3R{#KiyAA+gPYJGF)b%HE+roX@!m4e1dTETPcx>~;C~yA_ zhQFccDgJLE^!--)>1@`&^XT6jFX12QB9GMJl>Si$%wMyiW`BtePs$%xR{#K?695nH zF#;!GDopI-#!vgXZ&K&Q-^<%ukv^rd=qK@}-bekdJW~1R$pn<-;CNH^xA4ZTq70?Y zMrx&EdhcZ76ppe{My8zYS;ba;E$>S3#5!}6!P2buuX1M&?w4k&r*RWW8(-UHyiOmg zN6v)7M~SqfN{iOhDsH>hR=Bh)NCu7Xs4dWP_DMSyJ|?{K51kZJ{NahQq>11?D!E-G z+P}g9Ss$bcXB5{WjYLbmn;PgWvZehV`Ah5XmK*WU)x$!I`zAkcZa!da-?mMjo}SJ& z0e){b@N2n*k^lMlR{#LBjP1^H#$oK4CPlgg`_5*w!4W)1A3`8;dCLE?X^z5MYFK{> zzf7i z$*OfT_pW;^p5=&yNr2&F%K~20meLlArC+mAaLO0spqHL z-eq#uTIq9x!(;J3mHyOkD?*_7tJOfRG)YDFoIuh$Euf2nQw1RH@0<#yr!uOQs5Scy z;jdLqEi?ytfZPO$*XR@s@+iyg08(ULqI6mc5}%TvRu!#sSBiHcSa^6b_%R${fmqUa z-egTqLTCtoycnh&7LMC4wVJ5!w3UW$^>_`G<^#C1pR0d!x={3(Pf91%=dJp4HpTp< zY@nn+XXn_D{oLmPBYH5QqnH zNY~s;Rz$e~^^|Zh@}%w*koN&3!*Dl;HRo}6-l=l1)nQU}?1hy%PO=~XDoe-(Wgci~ z-Kn&a^g$j#f@zvzy#h&a%#+$3a%4#L_*}k{T`d1_VsWnb;)r$`XDY1*=^q{e05pUrv=*NX*g)@znVdT<`VOON?;57sL_2RNLOp|0x#-7$ZO)}p^;b8ZaE{*?bX m`XYIN`0vT*Y9s&Q{Qm(2z`>qkfxw6W0000RP)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGi!2kdb!2!6DYwZ9400(qQO+^Rk1sN124B`af?*IS? zZ%IT!RCwC8TT71QHVkE?R+am6jR13}$u$P(%^=$Wa+yBP09p492Gw?{q+}7(p=o|3 zm)k&)>9S=~{63NNZ}0E#|2z!?)KY+6W6to`k00>u^%Y`_kV4qpe|vj_KfZp2S_;%s zAjAj&0JRi&IGy0n@899u>njW?E%)#~egDhzGu*CM$h9tX==~ujcsQNlV;td}5&!^P z#&Mw!0C2lr0RWbFNc3wd%YBJH04#J$DXaZI4g=h-*JU4+K9}8;GdvE%LO;d`=agW| z8Bz!kVuZ^$iu5)4pHo_7jPm31$1B&mqL1=J8J|;H=&!VzYX#}z%E#;PpFfv>Kb%ew zVq7VjUX(%pjCBux!)KkCs5H<*uc zgb?E*Lr;FlKhj6Tz&%LLs$D^PITsNB+hda7zf9B0xVQi)4HSfR@%3nU=-tB{B`AG* zac`@oEKx&JLSg&j_c1DIa*5>kTOnWhznkk+;s0dC$>lB5jW6VIiR;3OXD zdQZs!0KYC5a~~~fKzlb&hji`ZFvux@F1GRzdfCK;NJE^pb_rF?BMSjHUXI3`D{T;s zNDHw50AY?2dlazu3M}ltJU#8E8AvpeQpm&Uq#6qTei_HL0pJU?2;c!lM5vmT7RP%N zLAbZ;)eK=0$f2|)`aE)NQq-KD(0Dxh5j5+5l9aUX$NeM|nAz>Fs#?>_fFPYB{h zj6LL>S1s+{qo4!lVJEk3x2R9aOoZ-30 zMx##9s!S^a9espr#TZluoIfjKA9_B~j)A?Aq*s{UKnXp9h6W5H8Q5o^9IQqd=fxUW z@tjy~2lrHuTEU2BAlW%L_tNg+EgFp!t(L$?-Zc8!K4Oer9aH|EVVR=@bA+2Z3@C-L**|Ypb6$EQpw<$XB3Y2E$ReUm=g>ls z)GVQdrOA|557)fHI?2%WQZyT!LX$U<5V0aa%R8i@Px?)PB#>g{ zSQ<99Jc#JOMFCm}{TN4cZ>@!_QHYTA9o*q6i@q9Wm~s|t0Hu`W9XvvZ77Ow`FtHCm zdQTMAcLGuf&B9Qrhx{oD=K|*It-aJzw(}5(D70T%W$t%ODGx$ z)XtEb?wYY->AQkG)jv%jMNoiOY|=bx4+hD#Zs!y3OfQ*y?6OBzI3z+NfwtdV>$VwG z7=Y?U(g^CjBFx^37+P;B<-f*@F_6-NA*Aji4c|w%bKUmwo!vxQ-nI%wCI~!YLnt^2 ziA%>H2^UPv8)yW;{}-WMj9o|#LmYV=?45Axopjr<{4lhUrkB;c_}8c4{!PNDW%28#81P#PoGAi zzYhTL`fM)094?D;9Db z1rE+ULl8bTrSx6QmNNu053m7&iG3}@m4zr)^E3_~c?6*Aw84Z*CU(yqAzPxUVG(?W zqw;e~?#HWEzV^D2UL^G94XE56hrvuKlhE!CMtAUE4N_ZV@!ysx00000NkvXXu0mjf D6tJ|W literal 0 HcmV?d00001 diff --git a/Resources/Textures/Tiles/white_vertical_slats_bordered.png b/Resources/Textures/Tiles/white_vertical_slats_bordered.png new file mode 100644 index 0000000000000000000000000000000000000000..36961865e51f5c9e8df33e9c29cf90c5e17e9d42 GIT binary patch literal 1995 zcmV;+2Q>JJP)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGi!2kdb!2!6DYwZ9400(qQO+^Rk1sN120i3m*QUCx4 zAxT6*RCwC$Tg`6VHV~eWmZNx`zD0q&T!3Bz_+kV_E&=+20ebcu*t^owWO}GZ7>(wK z&WP{v>1zr&Y@2ld+TpFY9gKYqZU-@b|We0_XW=X=lp zMgPB{9{>RE#u3J0fEXi;!vNzjY;MHg=;zDB!%Dp5yt)7Nd=}^5jpO>EgVM+U`SrVT zgcu{l7~%eK*wBAHpP}RoujezIrU{;3UUu~Pd^+wAhmGu1Q~IZATIEJQ_^|Yg zaw84tI@O^j|7n`w^?VlT-yaSe9peZ9urc7x?JeBg-fkxI?;%FfqwqQW`f;8im9o1} zq7h=;(bMQqenO0pN`WDSodS>ZY&vMk8HNy6**X82$;Gd~U+8IiiRAZG%I>})gbiQ( zdP)hVlvMt44nBwL59y_`1fHLU6Id*B>tZg!$~Smq;rD}`}`Qkq%> z^USqdqL$?eoyVgu@k902<3KITuJnB5S>qjbQ*z#5q`-|TMUZ54jd>}R7iWHC_wxwN z0_cRfW3MSO2*^Aq26W(bgCG@Q?T|uF%T&20%{baIgn?7!W>YG6r{ti zPbqCOALoHP4OcKmU~M{2jTwQ`pHmX&BmXs7a1*dRjY%myR-|+bCFfR;cj$Qv;7A|o zYtc^&L)LD@b6`scUiP^L@a)-!2F{p=kfn&GAWkae@IuI2q+nD)?=sdquV#s=<-d1i z0n}D!T*-TC*RpGQum_S_Kvc$#?BHnUxKV>pwYePm6|!8 z%yC(IE?Gu;@rSf~lK2=x5akHe>uc733Cws3@~-pf^OPV8V#ttEf=HSrty@746w^Xl zPloX3XVNRNbfeV)!ZI(!xb}NC4uBqGRltUZG^gE*zYmQmv&O-w47-jO`JPg0rtd{& zYt-)eBj8os<2!{eG-`Jp02?)4AAl3Is)yP(?HcRg&cls8JdfCD)Cp>hX=R{mZ{cb& z2Gs%Q&&t?W-JfXNz}8ICs?6dPlIRvRRA3m%!QOi3U^T)xFPaW(f>><_w^Wa6!HDJ{ z$=Nrz(r)1`8jTdKmOwj=7JW?)Jc-onP~&o*0s!DNO;^n}Ri$7rYM+nCY6L8KaH~UD zrRp9e%@3$}^Etn?8(Omy@ea^f^xq3xVy_#@X%wjtL?c1!wr$o8sa{VaM-u>By^;c3 z44|R%OSVy$Y~khx2O2`y$b7&z*YL-yK(#e$C2-l** z+R4!QQZ^f%LX&qQ$;*%vtBdgac_EIUVf37U22gXSQ34RH2H*ftN>ixBn)SM;lP$R!|Vyf1-RxLqnqVW`6L&VAeHP4U^eFl=oC52>TjiqT*TL%&S*BC%c zp{HpwWveY@O+tpG&)@-9SoYO0!<>>>1IRhA&)^w4)Oe5=fx~j3w0B3bi+Cm=PoYUT zRO%srio&^q`Fu;3lJovNgrgtci---idY%!aQ#}}XLkR2PUaOXnH4v!nA$Q$1LtyE> zf}ZN1rjRTcz$-Rs5!Hi1QYriM2^TIeX*rP6t1CPtLNkFTZz^Tq49W~ZwIXQ*bzTvs zw<3n#n{)oR@nRfEslgCZcaf&=YqxXV_VIn{D^+o@k4A9ol)Qrfh<-zKf$NE83^mpf5`_>2(3hCX7K5927m7_#glEc`&_KQf02 zA#CPy`bZb~klroiA3l)oQ8-IM=}Y>ja)%hZrIG*u002ovPDHLkV1nzOs`UT> literal 0 HcmV?d00001 From 3813758766e06e75c99ba5497153cfd8cbdd09ff Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 10 Feb 2026 01:49:12 +0000 Subject: [PATCH 313/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 3a61f671798..bd9abd0fd6d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: SirWarock - changes: - - message: Rollerbed sprites now don't stack when a patient is buckled to it! - type: Fix - id: 9005 - time: '2025-09-25T23:57:25.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40550 - author: Princess-Cheeseballs changes: - message: You can now put plushies in your cotton burgers. @@ -3997,3 +3990,11 @@ id: 9511 time: '2026-02-09T20:34:02.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42863 +- author: SeaWyrm + changes: + - message: Horizonal and vertical steel slat floor tiles, as well as their dark + and white variants, can now be created with a Cutter lathe. + type: Add + id: 9512 + time: '2026-02-10T01:48:01.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/37832 From 1f82b9eb8e58887e55d262baf5c4daf23ab135c2 Mon Sep 17 00:00:00 2001 From: ArtisticRoomba <145879011+ArtisticRoomba@users.noreply.github.com> Date: Tue, 10 Feb 2026 02:10:45 -0800 Subject: [PATCH 314/603] Fix gas filter always outputting 20C filtered gas (#42876) ingenious! --- .../Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs b/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs index b104cc834e9..ab8ae2e5e74 100644 --- a/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs +++ b/Content.Server/Atmos/Piping/Trinary/EntitySystems/GasFilterSystem.cs @@ -80,10 +80,12 @@ private void OnFilterUpdated(EntityUid uid, GasFilterComponent filter, ref Atmos var availableMoles = removed.GetMoles(filter.FilteredGas.Value); var filteredMoles = Math.Max(Math.Min(limitMolesFilter, availableMoles), 0); + var filteredGasMixture = new GasMixture { Temperature = removed.Temperature }; - filterNode.Air.AdjustMoles(filter.FilteredGas.Value, filteredMoles); - removed.SetMoles(filter.FilteredGas.Value, 0f); - inletNode.Air.AdjustMoles(filter.FilteredGas.Value, availableMoles - filteredMoles); + filteredGasMixture.SetMoles(filter.FilteredGas.Value, filteredMoles); + removed.AdjustMoles(filter.FilteredGas.Value, -filteredMoles); + + _atmosphereSystem.Merge(filterNode.Air, filteredGasMixture); _ambientSoundSystem.SetAmbience(uid, filteredMoles > 0f); } From 550d6a0f09dc258839af46e62bca6aec96d08b54 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 10 Feb 2026 10:27:11 +0000 Subject: [PATCH 315/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index bd9abd0fd6d..eb8bc7ebb19 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Princess-Cheeseballs - changes: - - message: You can now put plushies in your cotton burgers. - type: Fix - id: 9006 - time: '2025-09-26T04:22:41.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40276 - author: CraftyRenter changes: - message: Closet health reduced to 50 @@ -3998,3 +3991,11 @@ id: 9512 time: '2026-02-10T01:48:01.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/37832 +- author: ArtisticRoomba + changes: + - message: Fixed filters not transferring heat energy from the inlet to the filter + outlet while still transferring physical gas. + type: Fix + id: 9513 + time: '2026-02-10T10:26:03.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42876 From c086acbc346cb331e4f648531635a8d23c276ab3 Mon Sep 17 00:00:00 2001 From: B_Kirill <153602297+B-Kirill@users.noreply.github.com> Date: Wed, 11 Feb 2026 00:07:45 +1000 Subject: [PATCH 316/603] Cleanup warnings: CS0114, CS0414, CS9107 (#42859) * Cleanup warnings: CS0114, CS0414, CS9107 * I shouldn't trust IDE autocorrection --- Content.Client/FeedbackPopup/ClientFeedbackManager.cs | 3 +-- Content.Client/Lobby/LobbyUIController.cs | 11 +---------- .../Tests/Markings/MarkingsViewModelTests.cs | 4 ++-- 3 files changed, 4 insertions(+), 14 deletions(-) diff --git a/Content.Client/FeedbackPopup/ClientFeedbackManager.cs b/Content.Client/FeedbackPopup/ClientFeedbackManager.cs index a4cdf6a6172..dd390cc2d4f 100644 --- a/Content.Client/FeedbackPopup/ClientFeedbackManager.cs +++ b/Content.Client/FeedbackPopup/ClientFeedbackManager.cs @@ -1,5 +1,4 @@ using Content.Shared.FeedbackSystem; -using Robust.Shared.Network; using Robust.Shared.Prototypes; namespace Content.Client.FeedbackPopup; @@ -10,7 +9,7 @@ public sealed class ClientFeedbackManager : SharedFeedbackManager /// /// A read-only set representing the currently displayed feedback popups. /// - public IReadOnlySet> DisplayedPopups => _displayedPopups; + public override IReadOnlySet> DisplayedPopups => _displayedPopups; private readonly HashSet> _displayedPopups = []; diff --git a/Content.Client/Lobby/LobbyUIController.cs b/Content.Client/Lobby/LobbyUIController.cs index 29d1933f7ca..1a026a774f1 100644 --- a/Content.Client/Lobby/LobbyUIController.cs +++ b/Content.Client/Lobby/LobbyUIController.cs @@ -1,13 +1,7 @@ -using System.Linq; -using Content.Client.Body; using Content.Client.Guidebook; -using Content.Client.Inventory; using Content.Client.Lobby.UI; using Content.Client.Players.PlayTimeTracking; -using Content.Client.Station; using Content.Shared.CCVar; -using Content.Shared.Clothing; -using Content.Shared.GameTicking; using Content.Shared.Humanoid.Markings; using Content.Shared.Humanoid.Prototypes; using Content.Shared.Preferences; @@ -20,7 +14,6 @@ using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controllers; using Robust.Shared.Configuration; -using Robust.Shared.Map; using Robust.Shared.Prototypes; using Robust.Shared.Utility; @@ -37,8 +30,6 @@ public sealed class LobbyUIController : UIController, IOnStateEntered { - context.CurrentResult = inner.Execute(context); + context.CurrentResult = innerCommand.Execute(context); }) .Wait(); return context.CurrentResult; From 862ce388a74b5102eb5aaf14c0fc0d58fcdeb37d Mon Sep 17 00:00:00 2001 From: Rachel Lowe <60523642+11BelowStudio@users.noreply.github.com> Date: Tue, 10 Feb 2026 16:59:23 +0000 Subject: [PATCH 317/603] Regular bots are now repaired gradually, just like borgs (#42878) Instead of one long doafter, it's a bunch of smaller doafters. See https://discord.com/channels/310555209753690112/1470704102173315143 --- Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml index 7c1ad84ca29..a4d5e4100f6 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml @@ -17,8 +17,9 @@ allowed: - Electrocution - type: Repairable - doAfterDelay: 8 - fuelCost: 15 + damageValue: -15 # 8 seconds to repair from dead + doAfterDelay: 1 + fuelCost: 0.5 - type: Pullable - type: Tag tags: From 457cd6509c0b18daaf7157da2dfb3aa984dc5397 Mon Sep 17 00:00:00 2001 From: PJBot Date: Tue, 10 Feb 2026 17:16:09 +0000 Subject: [PATCH 318/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index eb8bc7ebb19..0700f5bc730 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,17 +1,4 @@ Entries: -- author: CraftyRenter - changes: - - message: Closet health reduced to 50 - type: Tweak - - message: Locker health increased to 75 - type: Tweak - - message: Secure locker health incresed to 150 - type: Tweak - - message: Secure lockers now make a sound when broken. - type: Add - id: 9007 - time: '2025-09-26T20:04:33.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/35671 - author: SlamBamActionman changes: - message: Nocturine now causes sleep after a 6 second delay. @@ -3999,3 +3986,11 @@ id: 9513 time: '2026-02-10T10:26:03.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42876 +- author: 11BelowStudio + changes: + - message: Regular bots are now repaired gradually (short incremental doafters) + instead of via one long doafter, for parity with borgs. + type: Tweak + id: 9514 + time: '2026-02-10T17:15:00.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42878 From 7009a061514eeabf5f6e6d0419d820bf833119c3 Mon Sep 17 00:00:00 2001 From: Tiniest Shark Date: Tue, 10 Feb 2026 17:10:59 -0500 Subject: [PATCH 319/603] Vulp Tail Wags + Tail Fixes (#42843) * Localization for Coyote * Wagging action un-commented * Species wagging action uncommented * Sprites added, meta adjusted. * Proper wag support --- Resources/Locale/en-US/markings/vulpkanin.ftl | 3 + Resources/Prototypes/Actions/types.yml | 19 +- .../Prototypes/Body/Species/vulpkanin.yml | 4 +- .../Markings/Vulpkanin/vulpkanin_tail.yml | 81 ++- .../tail_markings.rsi/coyote-wagging.png | Bin 0 -> 2121 bytes .../Vulpkanin/tail_markings.rsi/coyote.png | Bin 474 -> 3108 bytes .../tail_markings.rsi/fennec-wagging-tip.png | Bin 0 -> 1475 bytes .../tail_markings.rsi/fennec-wagging.png | Bin 0 -> 2684 bytes .../tail_markings.rsi/fluffy-wagging-tip.png | Bin 0 -> 1333 bytes .../tail_markings.rsi/fluffy-wagging.png | Bin 0 -> 3280 bytes .../tail_markings.rsi/husky-wagging-inner.png | Bin 0 -> 764 bytes .../tail_markings.rsi/husky-wagging-outer.png | Bin 0 -> 1957 bytes .../tail_markings.rsi/husky-wagging.png | Bin 0 -> 2272 bytes .../Vulpkanin/tail_markings.rsi/long-tip.png | Bin 329 -> 322 bytes .../tail_markings.rsi/long-wagging-tip.png | Bin 0 -> 1478 bytes .../tail_markings.rsi/long-wagging.png | Bin 0 -> 2499 bytes .../Vulpkanin/tail_markings.rsi/long.png | Bin 562 -> 554 bytes .../Vulpkanin/tail_markings.rsi/meta.json | 600 +++++++++++++++++- .../Vulpkanin/tail_markings.rsi/vulp-fade.png | Bin 398 -> 3239 bytes .../Vulpkanin/tail_markings.rsi/vulp-tip.png | Bin 316 -> 401 bytes .../tail_markings.rsi/vulp-wagging-fade.png | Bin 0 -> 3447 bytes .../tail_markings.rsi/vulp-wagging-tip.png | Bin 0 -> 1706 bytes .../tail_markings.rsi/vulp-wagging.png | Bin 0 -> 3011 bytes .../Vulpkanin/tail_markings.rsi/vulp.png | Bin 540 -> 664 bytes 24 files changed, 693 insertions(+), 14 deletions(-) create mode 100644 Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/coyote-wagging.png create mode 100644 Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/fennec-wagging-tip.png create mode 100644 Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/fennec-wagging.png create mode 100644 Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/fluffy-wagging-tip.png create mode 100644 Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/fluffy-wagging.png create mode 100644 Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/husky-wagging-inner.png create mode 100644 Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/husky-wagging-outer.png create mode 100644 Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/husky-wagging.png create mode 100644 Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/long-wagging-tip.png create mode 100644 Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/long-wagging.png create mode 100644 Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-wagging-fade.png create mode 100644 Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-wagging-tip.png create mode 100644 Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-wagging.png diff --git a/Resources/Locale/en-US/markings/vulpkanin.ftl b/Resources/Locale/en-US/markings/vulpkanin.ftl index b987fa65939..59b90aef8d8 100644 --- a/Resources/Locale/en-US/markings/vulpkanin.ftl +++ b/Resources/Locale/en-US/markings/vulpkanin.ftl @@ -120,6 +120,9 @@ marking-VulpTailVulpFade-vulp = Vulpkanin tail (Base) marking-VulpTailVulpFade-vulp-fade = Vulpkanin tail (Fade) marking-VulpTailVulpFade = Vulpkanin (Fade) +marking-VulpTailCoyote-coyote = Coyote Tail (Base) +marking-VulpTailCoyote = Vulpkanin Coyote + # Chest diff --git a/Resources/Prototypes/Actions/types.yml b/Resources/Prototypes/Actions/types.yml index 721508b905f..e0956a76f7a 100644 --- a/Resources/Prototypes/Actions/types.yml +++ b/Resources/Prototypes/Actions/types.yml @@ -415,16 +415,15 @@ useDelay: 1 itemIconStyle: BigAction -# TODO: Add back once we have animated tails again. Were removed due to the sprite rework, causing all of them to not fit anymore. -# - type: entity -# parent: ActionToggleWagging -# id: ActionToggleWaggingVulpkanin -# components: -# - type: Action -# icon: { sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi, state: tail-wag-icon } -# iconOn: { sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi, state: tail-wag-icon } -# itemIconStyle: NoItem -# useDelay: 1 # Prevents Emote Spam +- type: entity + parent: ActionToggleWagging + id: ActionToggleWaggingVulpkanin + components: + - type: Action + icon: { sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi, state: tail-wag-icon } + iconOn: { sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi, state: tail-wag-icon } + itemIconStyle: NoItem + useDelay: 1 # Prevents Emote Spam - type: entity parent: BaseAction diff --git a/Resources/Prototypes/Body/Species/vulpkanin.yml b/Resources/Prototypes/Body/Species/vulpkanin.yml index d2d094e31b4..4ef0fa25499 100644 --- a/Resources/Prototypes/Body/Species/vulpkanin.yml +++ b/Resources/Prototypes/Body/Species/vulpkanin.yml @@ -177,8 +177,8 @@ heatDamage: types: Heat: 2.5 # Per second, scales with temperature & other constants - # - type: Wagging TODO: Add back once we have animated tails again. Were removed due to the sprite rework, causing all of them to not fit anymore. - # action: ActionToggleWaggingVulpkanin + - type: Wagging + action: ActionToggleWaggingVulpkanin - type: TemperatureProtection heatingCoefficient: 1.2 coolingCoefficient: 0.3 diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/Vulpkanin/vulpkanin_tail.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/Vulpkanin/vulpkanin_tail.yml index 120000656a5..7e1587be7c3 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/Vulpkanin/vulpkanin_tail.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/Vulpkanin/vulpkanin_tail.yml @@ -59,4 +59,83 @@ - sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi state: vulp - sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi - state: vulp-fade \ No newline at end of file + state: vulp-fade + +- type: marking + id: VulpTailCoyote + bodyPart: Tail + groupWhitelist: [ Vulpkanin ] + sprites: + - sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi + state: coyote + +# Animated +- type: marking + id: VulpTailFennecAnimated + bodyPart: Tail + groupWhitelist: [] + sprites: + - sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi + state: fennec-wagging + - sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi + state: fennec-wagging-tip + +- type: marking + id: VulpTailFluffyAnimated + bodyPart: Tail + groupWhitelist: [] + sprites: + - sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi + state: fluffy-wagging + - sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi + state: fluffy-wagging-tip + +- type: marking + id: VulpTailHuskyAnimated + bodyPart: Tail + groupWhitelist: [] + sprites: + - sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi + state: husky-wagging + - sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi + state: husky-wagging-inner + - sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi + state: husky-wagging-outer + +- type: marking + id: VulpTailLongAnimated + bodyPart: Tail + groupWhitelist: [] + sprites: + - sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi + state: long-wagging + - sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi + state: long-wagging-tip + +- type: marking + id: VulpTailVulpAnimated + bodyPart: Tail + groupWhitelist: [] + sprites: + - sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi + state: vulp-wagging + - sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi + state: vulp-wagging-tip + +- type: marking + id: VulpTailVulpFadeAnimated + bodyPart: Tail + groupWhitelist: [] + sprites: + - sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi + state: vulp-wagging + - sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi + state: vulp-wagging-fade + +- type: marking + id: VulpTailCoyoteAnimated + bodyPart: Tail + groupWhitelist: [] + sprites: + - sprite: Mobs/Customization/Vulpkanin/tail_markings.rsi + state: coyote-wagging diff --git a/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/coyote-wagging.png b/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/coyote-wagging.png new file mode 100644 index 0000000000000000000000000000000000000000..2d73615df0a89c18d332e3cdb852f5531da0762a GIT binary patch literal 2121 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 P&j19Tu6{1-oD!M<@ZP_W diff --git a/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/fennec-wagging-tip.png b/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/fennec-wagging-tip.png new file mode 100644 index 0000000000000000000000000000000000000000..6761bcdd64d1737f5d2656bf6eae24a4003cfad4 GIT binary patch literal 1475 zcmaKsdofrb$@uhaXd>XoEvS+syw!p^p#d*5w%gv z{i>4@{8N%on)fOF@C0voCMR26O-0)W9799YnD;I zGOby)G$LBf7j{3UK3e7aG+xn`S~7xLLnfI_tm%zoK{7{0f;IUxEB88p)}L+;4Ak$A z5-DlYA$2C{RGUz#i6b<$YO*0LpBoKH8U>(pLUpUJo!UxUST)FefUgB)+tmO4{bM?Y_^U`6cE@^=Nav7uZU5K@#*P<24 zcB88ye82bh#Ed8zS%tG*j3cC4dj$HPX<(~P)o=~ll?ApL=L5e@JuKJDAJJ_ou$12^-Xbe#W0hVY zvr*|OE;ZT~Ssz>^sk~|<46+^Bi2iihqQo zr+Q49Y;r5HOepz4tqeP#b<5t9v0>wY++jv<1ViaRs1ePw?zbk_hy5Nltcx@KjOwfA z)=G+TVk*~%x4dmeH2?B%yOO%0YYgHe!i5^i!h9(<~$@7*nE*W%R*DdqUMdqzB zN^6DW6r*%W41V@Ul39tFyf6ntMMP;KEWtf>;+m$3e2F;M2Hc5v9zkZU1I^_ldqgg$ zIXieY{SG>*Zy{C^hw|aXSOfm{PL^DW_rM;nBqQ_G4Bbw|X{59(icqAD!v}EDnS(m` z+p~bosJm<|1#xZlyNV3f;*_mV$gvkG0J5y-0WBEw3>5hPihrIFOo#gzX){(_^J3c- zP>Z_oo4nN(L`C{d<=Z<{ z6{eJBy}tdv1H^njDYziooYYj}N6(BI>-vir%AU7**CS-tYQ(Gf?;UMcU1hTq&v2*% zxC4`m0ZGBI5cMHZTuE+))MT*YkrXjBCWjuCm4H)4+|&h)jy)GSINzRB+l+A}vZ>y+ zBkE#A6}&<1c^c8~Plw-zbdM0+ksC?757RjqQ;Zh7an_ySeUQ|8vbV(jG=RTVB zOz~3ODiQbmRg6hE9XjINCEganAveqxK1R3CprWwUBA?)t^D%^ a%=XHi>@cgF&I%URn0vT-xl}t{Ncb1XTEw*g literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/fennec-wagging.png b/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/fennec-wagging.png new file mode 100644 index 0000000000000000000000000000000000000000..298225bd23aca760728fb8fb1fbe2fd9b294dc70 GIT binary patch literal 2684 zcma)7doN*<*$DUXau!byzCj3UNhG^bJ+kL2Vvo|j1GH{uwiA;d{E$;c~% zlbKS67-=-qI(PrE*SGff$6jmiZ+|<@)x}-`0)+qo zpn!6)#R7oD76gdfWViA({rOKqA_{AN8ld&4&jSF&3}tI`KDLlo#EjrtDW&9(d$y|V zGxk-E?9?5R{dITZZhX0X%0*=-r5DnqO_gfdTS!MnD$e01<^F@Z8B4!JVT)p1Y}(Hr zf5+m(^JqlvU{CuWZzyP=>LM1O&Wn?2H8JpQq;fxxUeSGy$Z76%x4e$C?>DVb(B$+o zcr(u;)V;@wEjE7qcqx5*&Fce5Rk9x(Zr}^vt-&%{j#DEixLm*frp+~n66ij^%D{ro zcyQzBze3a6o@MIdIoP4-zsyj>cP%$y9oQp^H4tJ}e9GlO#@aMdHl_eH&itiGVn!kh%! zt1x^Eo`m3&x%|R+kqer2_riO+o%=_oeQ4`1-6aO16TY*W_~tcm(8eI#Ta|akb`D8? z9ujeLW@>Z_R)#Q=@u^sDjEQ)lH}Zw>BpGR;XufG8wN0I2=0Ov&N9omOXX(U#spKhiS&!SbNgkE+ow)Hjkh`&HfA@$hkae& z8gw9Nkm6fT9V^?mlBIkK8Qs$z@n^6bvU_U9F<@^O+=bl1J*sBOhaR3Hd~k_fJg7VFawp5!Q}rJDME66K(Ka))$i(l65U1y0}Ks8O?S2@e-c}URQ}&DXn{(4YWqDoV2`v<8Fx?w+*$1W6qtn zwSTtl===@qD>>z+e^6Z#Tu2U`Wx+7&Jyxbe&a4ha~?CP9O7hOG*^Xa5oQPfly=Gw+W?WoH1#!lAp#!OM$!l0yM|=V1g(tkc>l}m zxegZvBloO>8aiRh@{L`GeC*QdQVZOVxT(K2RwBo!fhZH%|{qiVo0Jn#|JV_6uFa~?#Q%Nvfo1p+K*`C!`n%{0=zU6_qp>yMF zc4JbMUBSHf!n_4gUL^PBak)o3>w-ioy<5<l#8*p8yOIPIYrx=*xT5;?++5kZ8IkgK z@xk5AXj>vEG{o^BCMN!m82C5RMsdbJn#yQj%DS>_H=usEXiUw>-gq-SQgU6QLeh?HKBe5`;l= zL&omEq!~#1nu(M(M^7&jY_iXfF|G21F7<7^K_KPP1f3o6n` zDK2<2|C>c&yx=)Qk}On1zYq5>$s4^C6vZ zz7l!&hdUZtXo=cE-Ku8Y?5a!^9fqHdpoS;LUhP5q;&<3y1VV_^MtW{`X!^j8qbNNi zoFr6)=?b2^1)A4vwjNf2%IK+z(SFSvT94>4JH6L?T?ltp^16cueb*oWzCjSs`YKQ`0t zM7!pykhyAp!pVc>DQHd%`qG&{(3B!Z2YIt(d7}Sql)38~bgWDIk8o|LpUOqqx!BT9 H``r2u>c{^% literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/fluffy-wagging-tip.png b/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/fluffy-wagging-tip.png new file mode 100644 index 0000000000000000000000000000000000000000..569827b862db1358a37a3f0470e902b232953bae GIT binary patch literal 1333 zcmZvaYgEz)7>EB}Qlz|8xM88`2`|i*tMa#9U$kb3u4Q-`!W?pcP zz$9Bq-f-4Y6cx*ccp1_%14VI#m%OBrF61IjKko8;_?`Eh_rrV6^Lz6{aEDF7JHP+{ zn4*IM@BpBqVQt^lV0QMkk761&F&;bWS$rbO$-7ZMIAV8e``_U>! z?uAOO3OtTn)wjBWjLGrm#M&`(Z5c-IVm7^Ho^eude@SvFE#;Xz(SaQFe2EC+G8<;O zapyl2M}p#iA2)6hc{mT83cDCWueM@TBOWD_&M0zqbH@PMU zLZGOV`VLC>32FC)7Tq3O{L5)aT&%lJ+`px2SVK(H_Ab*uoDQ%sRFeyXZ>bC5$W-mkZ^GnwYEn_mUDf%n zVx#-36Tw<{=X4)-G8!Po>@>8pHp|PaaJE%+6*Uv5V|hjk8&5MD5#njD<1ieAp;Suc z!=yqfV;+c&jny?1>Lc?NMa+k7xI*1z=aG4)4`mNM$RBj7BcXFiGpACiro~)%Hr{-1 zVj1+4MK{^YrjE<5i--1<9>|x2&(6Y;!5$)!D4cjc7!-eAng+{#{eiNG%7TAPnjH|Z z#C@$1H-tY@ePq<5>c8w_#Dzqu!|j_&oO`($1Yx!)S43v1S895Xl|_%XSQ7{Ym$eZT zHu@iha131Kzj#W$JW%)^ZCT3 z8VLgOEf+Si+_p-`gqQTlEh&!?8Lm0aGs;1nQ1nd6g%vqhc{g5j@?}5eC<|NhxEpY0 zN`mL6UN=xm#GgW9RO=)5e0^4lVSllgUVTI6hw^U<&cW8r!Xg~lZn_gPuOoEeQJ?i;AHoH&{o=0u4MS0XAOHXW literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/fluffy-wagging.png b/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/fluffy-wagging.png new file mode 100644 index 0000000000000000000000000000000000000000..4a84c17402402b1e35d1bee88825aa7657249a6b GIT binary patch literal 3280 zcmb7F`8N~{7aqi*g{+ljP)M@%Hi{-wvbOP~rK_J4>!W2;ZMR5TDIFtsvcGc-Y(Q+{~g7(*;?hE;EWdiTIyZ6|a z&1ereun(5?R=l1%NV3E%#u$rBC_U1&5hwPu5w`D4zmADGyXr#P^81hWsxDhq^MqK^ zg1?*n|0t@gs$#^hgkFq`Rf@A<^u*RvHhfQ4@YTaP2*16s`Ogw5X7UQ$VRIjXYh?9M z)yM^Fj#&U}ZllSqercOi!{RVY^$aVyj0S`3OLO*c_ysJ5Qjg8dL+SA6n3fW{up(Sw zEdkogU<6yr_G15Zka=CwKpSWGNEw0m`C?HhFmWaoUV~*9epJ(!shMnxhq^Dfi}FPp zVq;??>bCKc3JEej^=EB3!KeAICNA>-U=7)vH2*X)_Dw(mPR!gPc{V(Hs}PsWjX|TG zy;{Iyjgbwq3V%8E->8NUmsZYR|CATFY95_wd;v0JRpVS;ix0q^#y#g^nrmY(>2{UO zDAHeISbo5ptEgE{AK6&($j`gPgTsFypLR?SfNi7~n~z*wfCld}lQ@xD^?QEYa-P$& zULVtkNJUXM`q&j;piFFcc~^c%9pEiOK_d%xI*s;2f8sqZ@PmH?4AF+EKMOJ}{G1A^ zv;A?GxB^5%1OnHh)i{rwts6%Bha^n9)8-r;WPHx$yI;=gruA<;3Wp#e0z+Uf=;owrs3Uxt%MQNPR;!>_5rR z<}{3+wRBSkwqEGaL06t4qMlV%HM?#0JsdZh_G6UX`n~u6E5ow>&6y> z;P6Q5GOJU7lCHvO3hBEad-y>VNP1Gw(fHTQot^0Ly-1|P z(~rL4%$ABXwN7R0GIV;Qe?xw7OVZ;F{{}HE7VC+F7en%a+k#tN1T}qm*@XJD&()4) zOBRq$N3qW6$&wzx`q4pfA02^0oET%vI1YtU&nZi9H^1=EVLi1ggYo@^1cF+y42|}( z;v}Y~Ke$rI+uapsZ0%B$=R6)KJ#OuPQU`g)E-nwLF-%Y(YkU^UQ6s#(Tz+5qLq3BcN%Y={lc6s z72G!?(OuUf(nP)1ymV7mF*6l+r99c#^OJpiT-*U|@B|*OH}or})mB$9##T)aW8F{& z%6x>WzG6KwF`-P_yvS?u#M_A{Y1YMEOnGtxP&bPqXuNBb$!5I)(+KIrQ^U$7aazDv zjm3lK7cYyb$O?QWZ-RSz!p?tu@Jk4rP>x_d`2K0TN+-ejKn-{rOx@&pn84Jt zXX>hvR*PA#%K-f%=eCntU|O_P=#X2VZyXwJvS2|5mbZKR5NjFIu~Lj=OcFf5G}wPGFZ;^jt*GRbU|GVzI56eQviF zc$yPpr;!x^Z!9P#iCiX3cHme)n&XphBG#Yt=e>fp?$&qRaNEq&kk>N`T{t*eLYb@W zi$8vH0UI}NQ6DU@`ybIGdV)ozr%gRZ{9)~vN+_ARsl8y@PUg4f;@kW$F;jsEO$abv z(n#|OxdJqZ4Q8tKnIEd0w|4CF?p)%ZFC?1QUc}Dy>9|XFHl@7#7r#x_zLzx%DeE zS07DHP~%5J&7G_j44T6D1q2VoukC<%Z()5_0fBeSa~Z_+X`8&GW7?Faf<1P%dP8&)b6Ngal>9XhIb*H+lUZxPjUtr2NM;D9?Ivqt=7 zVww)`4J{sWKv7!^k%+U9PaeklF|&9owlT0P-Ojp=( zfx{iOSO#mRm8~VT0av$O>oT4-XPSOJK@~Q?y&bi2^|UmPf`z_9xNQhnu41chQ|c6? zXXt8q%Gw!4>mx78sY;oHSKe+`)-sS@5}JuO8R$%q&BligzeT)Dj?%$|?Bv{M8=@w{ z?uNaW7T$$~71oQc*(pIp_H;VEK43Z~)@Ucc(utK6N0e*X8&QJn7@=uhM#Ntgxw4h% z)^vD1n@lceOLJ*w5pt{_a!1Pq72T9x#A_W%i=O^Ero(H_m9_{J<13ZcUCfT;BEie;PyGhgY1 zO9=;qnAqj}Pt*Vj7mP%Tagdry38A&uy~X2$CWo)#)kzu%U7`@QNtFBje&SL4%sDGT z#NV@hVT{BIf|r}v&7H3!+seZFQQQdm;qfj#j*GM%Q_(hnHH#iU2RpA&fa(*Jj75^A ztPmI~MQN`nNo5-VxzGbj;ZHe+Pu?)mpUsmAx0(Bp<4!`^-0K)*8R5%M-QmKnbXc3& zkL{lpmylrep`DC(fKZp}JfV`sT1TI#UZTuED+A0ia=LpecX^-IE$=~EX{h#FgMiX} z+lp3`Q`&&H?-UD{}iJ%*Qwf|5X@uODGf8V@!CoEK$dPr_sciv zB-}qXO*o*rvcq&6`+GpHGlFxpXarO}!uf7kz72XaE2J literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/husky-wagging-inner.png b/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/husky-wagging-inner.png new file mode 100644 index 0000000000000000000000000000000000000000..147d7ba3edf8700176d5913133f0e523b25ebac7 GIT binary patch literal 764 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 F`!|Xf$g2PV literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/husky-wagging.png b/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/husky-wagging.png new file mode 100644 index 0000000000000000000000000000000000000000..4b74d52d64f9007311c16322133aa200e0eba317 GIT binary patch literal 2272 zcmZvcc~sI_8^<9nEMEb&tTeG4OD&8>(|nD^k<3iT_OvFKNn4x{wFGgYA8Ms(M&{Py z(qcMcMOlEkQ8O+XrD-ZE;=Uwm2!x`7zoGNK?>X-u-9PSq&U5cM_dd_}bH7*j`*;|v zFkJzGKny(h>^ca6K(!%+p|?ys4|90mH=q{|dbmNJHLV+mK=kf-?)v30EpJNvi_g#p zqc^hmUe8>MNEz=o-ZYL#kARSk;6Yp8CK@|OKX;Y4b~t;PkTywpG+X|4YuD3mzPD9i z=8Y>YI|3;b3Qy!z?_;3vBPO)sf58IsN z)UVNqDU29|y;NoKn6>%vkyTYD3A3}aPF#<8>5B||ZWHclB+I#Q*$#u$mo%wv)llHg zHieW>qW1Va9+ky{sxI~_<=27Gp83op>NARGh0*H5rU#%;HxyFtjfSiy;R`RUTD&jE zA{28ym1`l-fsaFL3%7KIeh4(CZ1ZW|b3~XK4(;vjtzDqpi&nE~2)wkhZ~L#bxVQ`H zg>sPaWqyV(9{{Q*hRwl)E$si*_QSRRPcPhUPWaZjl|6-RSMV~F@znC-fCjg?dhTTW zM@kA^T;h~MoFbfS_;>K&3pKBFv!E62 z+hyTsGRtwF#B=V8;3F;YFo9A@SISkSfr(u1fJE}X$benldJOq z=LRE@=T3k$>|#0}T%A!;QZmzA+Rh5w?=K8XE;_!7kY?A?SpIl0+Inbc=wXjoOpklQ zq?(x?+GQmuyWv8`c5WyCA>P9GFgtm`BDwvKjpyrYcY5TUx^J_>Hr4HwImMqBY^Cf3 zpC8z8Y5$SzIpQ7iB#U*kRtVdAgpQs*XkusUrPx-Jc!}{W?yY zra8wvu>(F|e@TX3zsgHS?b~BVCPvi>#k(b?{JrMVhbpl-111m&*xGlcN5LLAzUW;V z-(hl<3JugOga<+-71TJlEemc%=qtU+sc&(r^RL&9i#WL&6#<%@tITgiYpMFL% z_4jq}D^_57ulR*04^HvjPteD@x2HE!zdaPe)54ygnPhhl(9PDjbfz_2@-k&Gqp;8PrkyoN`z$M%n=p8DUf}s zxBNAgrA#Fe$@EVaw!d50Oq=|@$X8u%a8y?LB)Z^ncSHv~h;!W2UkLNvC|FpWqQ)Ub zCr8qx0=t;H^r4AD&S*|0o4iQz7f>r5)4)~iGXZ1VfhS8{d1|9D+><&PZm@%5$K&x< zTlmiCpudJQVMzhXuNBqR6hP-wvQs&D{)%rroiJq>ouU!vs>EE{wFI)+e5=I|zr*(= zdOGx{zjte3*O==}og_dPUai|wlh**ZXam+HcJ%6#*XwQ&mW2#Q!5osPnq{xYZX`o|Dwi4 zC8z0W4d)Z4l-8Q0u9jf(dvJ)KIM3+oM2-MmGSSWmHb=T`D};zW&%V~9jY^M!&a*65 zk7(N^HRx>W-5eyEqKOj>yhRaoy4~mTSDNE!lhZG7idhza z6r~^$*NFzLPO{aYALJV<0*kUXi2tC4q`Ic&Jq?@FMe4xEm$lltVWD;?M$8zdNlB<@ zAu2KhWAcDCUio11PDabwVS7lnN5h2fH5g+xJ3*K`pL@!7uoGe0SBiKdC&aouhbIr|)_e<$=5Vfl``AJ@yltQu2!_p;d9W(D>V@~_xxa^P~fEg)6N&g~PZ<{gl- zQr?CUFf>VyjW)m3A=3&np{y|1B?^E)WfU1R*uWMDnpP>#{Fsv5)V>mwlY|hIXGC${FqTKE&9Q4c7SMso8EogncjJtRCQLWqJ;~B zxwxj>+=AinBwW;ct4@ht#Y}iR(ig@UIrO{cL^K=z#m995+MmyN7V^z1S(_F3={yFI z3GxU!Usw~zsg?QTGiF#&*s+5OVtEZGq0cTeF7EWfqVC<4+Di^ZdD9nWrEpYDsJzVIydz&mbpADsqZL zPox3>&=+voy*5l<=Nlww?{fh0ZGo{|o$3A>om<|U$i^7_!PjUnp|7h8620&MF&Ebn zIHL*3d4x7en~|bL4tGB;ri71YsWa^$qABibf`-#Y>JjzFfK%E0Xbn&FH0zYD`+<~6 zSdDT?RTpXTmilN|gn%Hh7Y6E%6XWUPvH&(w+f(J;=tX*(vGZx^prw85kJ;c)B=-RLpsM(=e~aK%n*EaV_%&i$CycSg=2z zTf76vxbu_8?`YN}ol9LeZt?!y&&GN9LAt?N51>{E$Ukys)y%7MTifMaqfc0RUz&cw z&~5GOTP5eVPdgf=we(NLgTe~DWM4f2waQ9 delta 302 zcmX@abdqU;N(vqD!??97mxzKFZhrPhy*DRCeszSqpZcRxoIIoiQtIlA!Xoe!(k; z40wtvy>{hBhhN|Na#sGdgD%%gC-;1)^GmsOeetpS!kXFfp;I^C;|wfo&~uoU`uch0 zJo$fioeSq*)hTcK$tRE+`D@?%>DNE&@8pU6(!R%LxhK!-c+X2|*FcrnmbEf__X!?(b*ScYT;J@yj<$xP w)s}C~)ZI(lzh9RFVdQ&MBb@0P!Dyb^rhX diff --git a/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/long-wagging-tip.png b/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/long-wagging-tip.png new file mode 100644 index 0000000000000000000000000000000000000000..abf00715cad82a760d5dd94e536da89043cdb082 GIT binary patch literal 1478 zcmaiy|3A|S9LGP}@)*J?hnz3h;_wKoq|k7N^QDk)g*6n**hBMe8eQ+8vi~dX_HCPvlh_ zbg5~*d7OpUfwik?Wx9ZHLV2iulhAO8*1XMr5EkMP9=yK|eBoLU_)Ga$C(1DH{rQrr zOQufTm4+jj|q{F$gqq{(2wC^#cQz;a>8-XFIVk9@*9X0YPL>3F&A7F%?)U&p zhF6KUm#J*R)NsIHyz>^rSk<#CJKfb9uk*jIuMzch_tzRI*DK4=(}wp7OW_XF9ayJn z=1;Vt;QDp{d)6?qo3*05GR{m@heuhK$*=E8my+hKdA%&1F%480KQfgV01L#M_68dw z7LAd2pPViCXbM^Sesmm^P@1)-wK6pJ-TURC@oX`)8Min3SXJiUhoAU$u{&fxJ<%;7n-U$4T9i z>&ubcdG|P&N;bL8Dt}w?C`H1lcD1n_FoxIF-A|l9Uot+McFiZqVx-kxkLh!pI9$QI zj>|`a&cr;-+3GkmV}K)3It&#m=>mV~o$SzS@rHy@=C;FErPF=jPHs(t!gwaLVtgFK zmjV_<-P+Y6;n`VP#-R4o$;0xo^xDn{vmK7OlSH0{75|F4>be0xn{moBve@2N!u^+? zgl>e38(cF8sCIeAT1PDYR7m3B~e z6RfA5CT3+ds)=zyJQSPCo2=1p(6BgC+X+W<55xswW0kp)bPp@_YyR%HwIlYUSHs1u zixlTy(Czj3_Yuxr30o}As1J2_sr*SeEj#v@N$ZQuhmBW{*S-ahrkYsZi&rr_u2Mb3 zj+jJcdejM0XiMxEsBmeLxECXBEFpi|jJ9<%m{S{k^1)E#5>*L8>;2;v5PF}NoU0_a z0@^HFHgO39MlEbT8s_Yi_5|7ZL2k#%wmB}PeBlNgu13I-s)6EAg>M!lCx1(Q(vgI% ziZO22h$3ui<%FvSI6|~_Y@)()(h5nLRXJ3de+3c%h$gwwWFs-vv-P>_<+08@-TKHC zuRQV(D6;a`Ll+CDYTGoMAmcfw3wWdaWpH#^R=}{e5)XIL5L!<4rBE znUk8K%kCX4vlIQ8Y22T^)uCS8EUUpz?LSkQLrag9gMY`7utFz3``MySLt#xR(mvmj z3&Kc03BwD9H$<)?2}Tm2lLt?cg?{`X-Bi71GtwXtfE)fyK_-=_bdH#8&xI% zdSUJ0u4*(W`-tF3z(k9!V7dp1(WLhoAwD7?)gqG!6p^W-Sk~9%2BdbNA{1AW_f(x#>v6wodwIY31aQbT!e!$M)KQ109b~x#%H{dGDPSXbbj7} KUX6&@{Qm$`pR(ov literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/long-wagging.png b/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/long-wagging.png new file mode 100644 index 0000000000000000000000000000000000000000..11b0922e177321b0204ef8a6a273902ef96891db GIT binary patch literal 2499 zcma))`#aMM9LL8YE0;Fph4T)c zAduL<5rhWs`q!t4q@ROWoF~){)G(+v4+8B@yWnu{N>ce!#kqv><8s+!Z`v~w1KGQL z*=pAK!58;ppWjQg$b_A6+!bN#TPTTcqAZiUUPmox9a~+lZo+P zaa?BtKr0Ds)A$Impt+xHC_#AA@cb3G>dQx8m4-m%G|Q3OYrI=(m2~Xu`O}3{H-xYn zVsx-2w>qjrw&&8tqmH4Vwv25S@pMWOuyfi|2LmO-WpYB!8`|PDW9-!_&?(K2 zKmT+Q87tBZ0$E#Ir$3@x(8<*|pnmszZ}V?8q=t&dJ-mypR6SXr2wuh}*;GPmVZGGc zI-mM^9+DCbSB(Z{1~^MV&~GUd4-8OYr)Y8J6>h;^2KD84+9m%!a4V2OXn=n5}% zmpI%MxNh&s5u_CUOoGkZY-Ca&04Bt-4cWI~kne{?{{xnrGM$6FIg_a;I9sni#0{oE z4p0jX{0aR!J%CIwS@1PgY=4ZYBj(J$Th#3Mz{`bskJlNd2dm%uB`CyWQCU{?Q;j+Z z%qHbgJ~o+M0elR5%PIWzwo6NYr$=V%TRJV&_c3bGmtop+bXqCYIm^mR5D|bwVCXmE z!D}C=7=f8I`qN9-WA)_+jpv9+kMZaFX;~sAI@0#8c58%!n0k@t{f8tglU;^Fu!q;X150)=(`DDgI5!47;86bFH|L1?$pKAzKGnYN4u>+e?z9Qr9DXJajZ2V zcxkkJCE7>+DFC$dq`7pRFgo{|y(?!E+F;>vIHf`7#uE6VSCo%6HJcu9M96-Q3`dBRQ9jX8=Arq$^Fj<`)cf#&81FD zqb1x$AIh?}MShsBKcijso2rm8Ui;g4RY#t=ob4j|xBHZP|3dsx{47%Jx^CR`S_0h8 z(YTrPTmzV$~Sl5ntDl zs`0aY9ShEnv6i*gw<^4sp-pq~bKpTsV`y{Nx&-yGL$C+VbutFe=@jFqB86>=FGg}_Vk4HGC(Ly%h?V%n~91EWDal{c=UaDs?%> zVEf53v}c0i7>3{J@F>bjx|hp4n?FG5O6Yotg2luqF9P8X#zd|nZBJ@1WFr7g*bFhj z1n~t%PT~u;4rZMSOC9E+)1Q*m-jO<3%sf=5u%RHT>> zgDBJUAYHMb<*mx%@Vr8h1WvE=o{`$6MOI~Td630GirZS=2inx z(7|nEu$bd=^^Z*XR41{54I6!tKQ+zx><2~LDlsJ{&+6GaU*L>4S=60Vg=1wNXgE_#1avjNVGw^% z$WrzjTtYAc1J2^UmWlm{Mf_EO;uyB~vKZO3`P5FjWgn?!X2)9yiChlv1tzTX_x>kM zjbfEVxkJsJM$@YY2F=(5W!`pD!Ezm?%}k`T_!+DhvYC0io5&jL#Qu5*PpU}7^ECuC zx>3azYWaE`O)aSx=#gy;FfyC3`(DB3ZJb2ZaQ&0UK0O3_DXzw=tTcnIpy?z|$>+$6 z4@2zx-?tj#gnA+%AF!kae;JR$sSJKy2Uf%%+;{6XNaG(*y-O)qP@*ZS5Y%Bj3Dq3tk63OIDWPa9O`gCc#r#?I2(GBLUtZ3$TY3yFLiD zwrI-P(`MkTtR8zZHxJNI)o$UMbPASEspm4YS}lyI!(u#t5Lu@@!^N7snCo&k1kzC^ zm^zcL^e1>h|E6)+CGjbIoKb#!pxIeOr!qRici_0pQC>H$BEu!Ub`5&par5v(pRtnGTkENvAiS{F5P(Ni&cVYc~#$V!}^C%HdavJWL z0&>QnvHE^P0;@DkHv={fs|B<1=a=Nm1WIF)jiZW7Y{>PNgaOqI?VSerVUS1c-j9oC zS@txf>y@?GC}=P^-A*uJQ*fyuXuX)s~4h?qK?*0QoPu@WQ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/long.png b/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/long.png index 0e6d0cf8079bdca4bc55c5d863dc74b807e993ed..948a69a6ad679477794a0aa1c78bf2b69f77266f 100644 GIT binary patch delta 529 zcmV+s0`C2?1gZp(B!2;OQb$4nuFf3k0005xNkl$)z|1WD^kkSW*xZ0Hm_L1un3 z;ZyOw<6Aj(Cn!_(NbtSm0RR91000000000u2s5YAe@CCm(0G|Sg%DB*A<16fRdLR3 z@wS-ovM(STl`+OsT2rHuJ%yGY!fBnMS=cq8)~243cYj&%WWY>??kJ_ko4l~+)?T0P z%G6@6X}nR9?&S?LiqFW{_cT^(fUNwpBUgkPRRi)TEi){8@9^G})_Qj`xAu7LhFXhz zHl&7{#^!y%S?%f3g@OE delta 537 zcmV+!0_Ody1hNE>B!3BTNLh0L01FcU01FcV0GgZ_0005xNkl`IG+f9i-%1cm zas%dhexj#A3V#zcFd;O9LdmiW!UXwSFI_MsWDG+jOmvsMtKSJB%MifYEaMep8P}bl z-ANGNNGTp<-3aM)y|WRLp#(yf&^r{d6$UxP6G8|fgb+dqA%qYgIGIU(8k>`(@!~@$ zcj3~fy`KtVlz2l-I6M{Bbvm5T=BUi11~JNMa!4H^TYqJ!6ubslRoW6c%YqjJN}A~I z;%cn*1D{)WO55+oirLaw>j%Jnp+xb5`wJCIqd5oYnZI=OieO&*QpGS&;aI9V!MgQYQeACRj$n;OJ;C3EXLjY>y%<~{^)L(l%D&jC7iS4&VP|D{dQ bk(M7urxHqTZz2)~00000NkvXXu0mjf8(Hi+ diff --git a/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/meta.json b/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/meta.json index 04503abb6cf..c00c2839920 100644 --- a/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/DeltaV-Station/Delta-v/commit/65d35d0b3c20aa4e8a0e749a4de8392e53051e86. Fluffy created by Skarletto (Github). Modified by FairlySadPanda (Github/Discord)", + "copyright": "Taken from https://github.com/DeltaV-Station/Delta-v/commit/65d35d0b3c20aa4e8a0e749a4de8392e53051e86. Fluffy created by Skarletto (Github). Modified by FairlySadPanda and TiniestShark (Github/Discord). Wagging animations by TiniestShark (Github)", "size": {"x": 32, "y": 32}, "states": [ { @@ -58,6 +58,604 @@ { "name": "coyote", "directions": 4 + }, + { + "name": "fennec-wagging", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "fennec-wagging-tip", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "fluffy-wagging", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "fluffy-wagging-tip", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "husky-wagging", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "husky-wagging-inner", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "husky-wagging-outer", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "long-wagging", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "long-wagging-tip", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "vulp-wagging", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "vulp-wagging-fade", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "vulp-wagging-tip", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "coyote-wagging", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] } ] } diff --git a/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-fade.png b/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-fade.png index 17bcc6771253730f44c2ef1d9601d0fccc99f438..c48ef6a90bfc571b60928bd2c18623fc090e48ad 100644 GIT binary patch delta 3236 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 WbnJnRL|p6u0000 delta 372 zcmV-)0gL{p8IA*xBYyx1a7bBm000XU000XU0RWnu7ytkPKuJVFRCt{2+CgrEFc3gd zsConTTm`S;MwKeD=#|X6cQ7aLf}PJmJ#9=-8&D+2c2xZ*nScPzj1Ac^RRsV500000 z008c_uIu42#we}zcy>*W_-FUOL}zfKX&TkGZ8uF*e5Dcb{eL7J#!of@^E|7t?~|x< zPr~o`N0X592~f_tPFBH>gkj?1zov?At=;xZOu)VIqbH!Q>!VYnY|h@lM~ID|^iNRq zeP8caBe!7~ipB>30000000000o{iR8mChlTKeb95$+9dm)Xh8o5vfsX4Xrcb^LQs4 z=bZd}7Rf9VUu~l_OmyKmd>&WfgfV6;lUjOGo75<^`a>Dl{s8HsxI6*h-BkthODfbP zHSRk`wh6ctFBf&zTJ`?%rm|+3kkleIRX?w~3JWc^{*rwwiF8$D%rBc;HGTn61;~;3 S%r$NR0000GZx^prw85kJ7JzX3_D(1YsW!TqjAi{Ft{ndL1_7=1Kma<#F zzL9$egWjFOw*9<0tQNP9@LW7Mc|wrOpTrao6&)uR1lSUE)n0yUnB?)mAg`$GyMND# z26?qN@6(&H{+#7W%lP80)^m#6RZDaeBE>dd>#Ee4%Xsrbms zDM7_`*O~TwUp7T)g-}w@*`IgkGe&c2M02|Pyk^-u|H?5F<&x5)>kq6w7~ZfaQ&i?@ z&fMR>pPtMwxGKNM_WwVz1jZK(89EHI485!im=|nhC}A)WYv5}*#&m)4LIi^qgA}&| zyF)TqQ9iP&Ezf2z%$!wcfBy3tL$^1#&$LaMWGC0Z+}JGqz^>g+*B=M3=$P}4=cWm_ z!@IYYSB-DZ-rn&2-jg|@p{gwfub=8G2{{=YHdtZkw&(ly^W5K=pTsP?y?4j^`3ykd M>FVdQ&MBb@0H}hgdjJ3c delta 289 zcmbQpyoYImNU{_G1BR1%oGxHt-dkJ899kF!y#! zSZL_Aeudim?dx7o`YHaoWMaVetvrVX>LyHG^7B@G%N5(tY*SJ#<=tm4)7*1<|2u&X zC2#l6KmYxFoWJ9GUFikhI!|x^Im`QFLtA(F{Cjb;mff6^zmKKlbM>BH=NHe)Q|w@t zGBC_(|EmASxXV<3|M9uSH%$^_UteOFyXeG1&Zx&#Nhz5QGPysWs~x$Ov^Gm_;zi9a inQx6>rIvWe%-+qomM=Ntu#1E{$ShA+KbLh*2~7a7b9?Ck diff --git a/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-wagging-fade.png b/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-wagging-fade.png new file mode 100644 index 0000000000000000000000000000000000000000..5f07202bc77ecbdf8a528f596a19b9b94e692b08 GIT binary patch literal 3447 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 qo@D~2!2>K~>-4*0VpdwWR<1YU;hJ4!i}Z? literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-wagging-tip.png b/Resources/Textures/Mobs/Customization/Vulpkanin/tail_markings.rsi/vulp-wagging-tip.png new file mode 100644 index 0000000000000000000000000000000000000000..268c7fda01295b9c3cbf4d8917ea55602ccde304 GIT binary patch literal 1706 zcmaKsdo2y04MsrE7DOt8U8wt78#?+b#F++YyQWhn-rgRt0 zC7UN@MoJg95p9{uwMGgd*EY{|o^z@{p6C0=_k7Ozd_SK*-mmxjdu9*bdEtD$`2c{0 zE<2qF0Kk+bfDmxy-OK%Zt^o@pI6H!3p?*IAaI%Y&gB#=Wmv`v28USv^_bL;=_1Ua#qpXhKG zsjlediKNd$!e@gF>|ON!Ov2CTy`OnI!8?NvwO#NDYhi-Bm@TtfR97m^2rG7KkGeuJ zOCfy~t^cA+YTPQS*CDdsd5pfN2uPW=bT&_s8;1YD$T(3g8L0f|amqZjV`5FhFbz?a z!xitN799)fFBN-TBs`3`VslJiH%3}vI{9J$##GtPv&Jy8rq~=u#IJX!OLRyCta0|d zAY2@qo14X?`q+i(ey=kr_}1ZdRtTyltZv6Juj7}k~ML}yBL!+BpC=geqr>#t^{ft47hYxx0 zO^*=XZGCVt>}YTH&aWT|9e8e}vt@GtdwPWMyk)B=nK&S%u-$nB^VtKG<=Z`1x26{M z&HT>b_Mw+01>GCWPV12H>$8>8e>2J=q>=i91ql2dV)M8xs#sC^)G{S60bCjO;Y|^q zI^5#%aJ89AlJyUm3M|L7oX72HI^y@4rn^=N;6YxGuk{%>bzcu_wQ+IRSH3fx|8nfG z3!Gnd9T7JZgTCtH+sTM%cg}(VW-HM#df05#zJakJfkk+qCuIf`Cf;HK+ki`wQGeh7VA8v9S*( zLWE_tk@iKo(9qD3gdZ0Z)0>t{&Ix!TfDbC(RIdtNULpiWs-}JlEv2_DMCItSC-=<6 zr}Vs`t%j;5EM|9yX&An~fXO)Xs^TM(+v?l)32B&co_cQ=SKUz2%bN|YSi6fWJ;;*a zjV+R;G;gZA9iJorB;xCVI+Jiz!sRe?*=V){GbA)pH?d3FpE0w9tA2G~#Bp}+cC5=S z`70Pl4`kvD;K#R-b2jABtX4EJ;r8*)q+#l5QD{@9B^+*{7>+vEHa+4R-9wME!Rnu! ze)?JwoLy4UWO{r-zN^Zf4M~X33R<^=A=vWM;J;!5kj+f9=!C(hWjm&f{d4DnvTt-q zb)WEX*4=zex-BN3}PUiG;Gm}Q*Me;+Y!1i5iQLvoq zVQ-{skKWLD)|B7F-@uw%-Cr%y3LjRaAF*=H%V%H6_ywYNGu( zH3i6;>Y-#&c(86_En}#>9=(;|TspbNAAzD@gLkFvm089+Q+8(xJ-=5?#M19^*VJcW z#=QwxNx9!*;V8l8G8SIDg+eJF_s{7e5#O8-k^EpqFl_iYlsOV7u0C=vN zLTvy5bod1@T%3n-0blic(oVb*^-UrCUfW6e1<{l8|z; zPsw@j#b;B6Y9|>(5d<=PBfHn;Kt0b_SB3jSukXESw6SD!czx@N0LH^HzyjYg_}-M?^jzNQ)0g^5xfkOM zcnvDrtLEC*ByQB2px$sKKYF#c{|4x%`-#rRI)k719!?Ui-TzkUOGtrZu~|V@uj_P# zImHbZow2?*@|q1fa7QxO-&+?b?nt1<>X*KoMAuUj9IQpreb}ISb6|7QWrjqKco~6n z&I)h16`<;}xr0?^g9*UQpV*cpR%x|4e>kAV!fY6@6`x_CaSeq*7-36nR51hkBHZLoJ#Fs z>3Ckd`3ptc?j?tN-lvlvdn@6RZ|aP6lY-2vd}x*}5z3ZO`KhVklek{#c?uJze_{}B z*(b?{9hc?SUT30xnjznkZv0UhxB8%2@7=z_u2WNJ8bxI&_Lqb%o^Q@GtG}FA!ziOl z0MzA-K=464O3FHWh66mPGE@zgBM051S|HfLfVddfp>o(jK#`j?0H|}b1DN=S05GU> z8~{W)!GOUB0|4+k^%F!7ynm>z1Dfx6F6bWte|PEY0^ifu)#!T^Cf+qw5jvJ+u7%F)K_64!k znpjso!P3WpppzOGv;td1KR&C*06$K@m4ZH?2Q`x4loa*@s*Vg|H&%oJZ-ZC;TsatvSlAtB-Ut-m?fuv_=J_PKj=St?Q)#-7_PB)Z0pzp zVflS2(jhNivOTj&ed*Zm8l+n4b-vtVg(xiay&2=yhyvN<J*Ufk?mPNTLtf>3a^@b^1uaTteoh+MKW-XP*I3WU(vV@KqqCXjH=B+) zbp3i1aKe~(@e^x_c+&N;kn{1`+8VV=DNd-KXK@q>mg%l1VLl5fyP>y_m<5!+dvaj1 z;5}Q3M5%f`b-T;7w_M?qhLm)&h*Mbf+77H69YBl38{Xfyb)z|D%P0VF&l>ZRMCE{U zk%K34VrPB!@O53T5>0VbRQkFxow&f+3KPrbY~B70Cmy`%c~Sr(_@JuUPU}kCKn_&7 z*tWc~7!b(V-Ckjqj*pI#*RtCi4=VC8IzMpa38ke{=YT*tGXYuYu@;wgIgVFxu!CSI zZ`-RpSQWSAIzo?gb1@E?Q>dS^$Udx|;j;hW^LA7&@LOW4l=HT*Lll2vWyXFBQBUAC zhr-P%Wmp)nwj(L#=k)DCB&pRdzB|w0{w%%tETGloZ*Jy7bFr=QaQvfFp?+87;j@@4 zSVO&o{${~%)|?`d;$8VSv8#W-4SLGsi4g$bn!mjwOP)$U4^@BvA#vN*D6_JRkLC}m#4e# zNi3$bZ6iXb3#;)>9&5zUP&nOzrxb=ju75RaZOU;w<%8I$(CYCm+c>QxV3fTi2LIAi z9xZN~9+N8wT2lb~{%Sm;^udjKURv@8=NS&7kt~PxF)Qfh@N5tmkW9oqIwUPhaJZ2h ze)1h^&i(1jvU9iJSzNTN0V&f@kU`A54nRp97x=4&CO_AI`gmL*xUS`hkTYv>M_Rb= zFH`>?{5`|e1!&GIyBk*2siJ>_(|^eUhORpel`V_U$&1k>>`r3j!Vl+>S*u-m*NUlQ zZltb>Q7l-x!Ov^D}>?jNcs;{lVUGCRjjH1=qcn5bF(_mi|)7mva9-D?rV zJs25L_(IGcef0ei()a4lszyj#yzJz-OzFa1<<50d-i9Ax=>(zAqHD^aM5Gl^~K)hQKeHWD|Z(31pdLIQ(DHpg7zTd%Avp$Hq_JZq8XO-g5 z3yRFgA$Ci(LDgaRO=TxpBys!OwosAWpM~pNS~^d;u($JDAon^J=m1ST(MNejI7b!y zVzo|5%jn>-RlJ>`6 zAm{V&cU%!4iT?2qKBkW+W`BIzcrY3i;h3kky$P*1JVL(&S|dK(9hl#-|7-22NDofJD=F(Zm*$@y$ z*`Jhhr@bx}Za%SeA7NK*E~HoiZgl3s@|t%o&MA~2ppUX<&$Si+J$@*SP7jwtBp^DO*+T|)#2R=LVm7m{`SR#NR2!bF8f*=TjAP9mW2tDAO3*$J3 z+UtBBBj&8TJR$-BgnwZe6nx(u6@Q2C9CN?l z_ehvA#wyOFD<1aPwQ z<9xUO1&%@tXf2>MVnAyFtq}uS3uuiP&{{xi#DLZUT7M%3v=-1BF`%`8)`$VE1+?bR z8?d@9o^ESD9uM_;y-pRim)q?I&*$?^?^<7S(EvmY*4kp{<%$?%X02Llo7e0RYrbHbpj~ys=XlI&6^J{mJozhzKTNt<k|b5j5S002ovPDHLkV1mJY9FG71 delta 514 zcmV+d0{#7%1)KzsB!3BTNLh0L01FcU01FcV0GgZ_0005bNkl!Fz&~3YWfQbduGKoG%}#lpqxxBQ0W%6g z;GH0+MoiC2oPXhkFQs2}ivm66@W<1I<}9Mvc8dL>nV;9ET7vVGYC@rh9#Xw*c_z3!cy@+26~B*=QBZ zf#B05J_x^hgK(ZZu83rbK7R?&Glbpji}~ieNFf01JbU-r?YfroXT04Ah7ZD9cNjPN z)^ZKm2i!T1`NRAKz(4n(#>{(SK5!K@v70$kwPhdp^8@}o5eU1$)+vks0w6S_ zzSismUj>F=3mX0b;CM;R&I1Ht>o`qtu%`d}e Date: Tue, 10 Feb 2026 22:27:08 +0000 Subject: [PATCH 320/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 0700f5bc730..a96abd212a7 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: SlamBamActionman - changes: - - message: Nocturine now causes sleep after a 6 second delay. - type: Tweak - id: 9008 - time: '2025-09-26T20:05:34.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40231 - author: Princess-Cheeseballs changes: - message: Added the Vulpkanin Plushie @@ -3994,3 +3987,10 @@ id: 9514 time: '2026-02-10T17:15:00.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42878 +- author: TiniestShark + changes: + - message: Added the ability for Vulps to wag their tails. + type: Add + id: 9515 + time: '2026-02-10T22:26:00.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42843 From fc4a96faad438a23df1cba21ec2c2f1fcc185da0 Mon Sep 17 00:00:00 2001 From: alen <43865831+magnnusson@users.noreply.github.com> Date: Wed, 11 Feb 2026 12:46:53 -0700 Subject: [PATCH 321/603] Add Missing IntercomAssembly Components (#42821) * add missing components to assembly * use inheritance --- .../Structures/Wallmounts/WallmountMachines/intercom.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/intercom.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/intercom.yml index 6d04ada47c6..f1d182fa604 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/intercom.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/intercom.yml @@ -115,6 +115,7 @@ False: { visible: false } - type: entity + parent: BaseWallmountMetallic id: IntercomAssembly name: intercom assembly description: An intercom. It doesn't seem very helpful right now. From 5f126736a6da29ab98346acb387c7f237fbca3a1 Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 11 Feb 2026 20:02:54 +0000 Subject: [PATCH 322/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index a96abd212a7..00a7273834c 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: Princess-Cheeseballs - changes: - - message: Added the Vulpkanin Plushie - type: Add - id: 9009 - time: '2025-09-27T07:21:30.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40303 - author: Princess-Cheeseballs changes: - message: Meth, Hyperzine and other stimulants properly reduce Knockdown and Stun @@ -3994,3 +3987,10 @@ id: 9515 time: '2026-02-10T22:26:00.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42843 +- author: magnnusson + changes: + - message: Intercoms can now be constructed on walls. + type: Fix + id: 9516 + time: '2026-02-11T20:01:44.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42821 From 5a2da2679e11dd9cb5fb1f04c4fe83bf9eff8c45 Mon Sep 17 00:00:00 2001 From: Minemoder5000 Date: Wed, 11 Feb 2026 14:46:05 -0700 Subject: [PATCH 323/603] (Re)Add sneezing emote. (#41479) achoo --- Resources/Prototypes/Voice/disease_emotes.yml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Resources/Prototypes/Voice/disease_emotes.yml b/Resources/Prototypes/Voice/disease_emotes.yml index 47a203e1fd1..e977d86f69b 100644 --- a/Resources/Prototypes/Voice/disease_emotes.yml +++ b/Resources/Prototypes/Voice/disease_emotes.yml @@ -2,7 +2,23 @@ id: Sneeze name: chat-emote-name-sneeze category: Vocal + whitelist: + components: + - Vocal + blacklist: + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-sneeze"] + chatTriggers: + - sneeze + - sneezes + - sneezed + - sneeze. + - sneezes. + - sneezed. + - sneeze! + - sneezes! + - sneezed! - type: emote id: Cough @@ -19,7 +35,7 @@ chatTriggers: - cough - coughs - - coughed + - coughed - cough. - coughs. - coughed. From 57b248fc26c02b1af836c24be47a67ded1719aae Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 11 Feb 2026 22:02:45 +0000 Subject: [PATCH 324/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 00a7273834c..25aa0aedd41 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Princess-Cheeseballs - changes: - - message: Meth, Hyperzine and other stimulants properly reduce Knockdown and Stun - durations again. - type: Fix - id: 9010 - time: '2025-09-27T10:19:30.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39547 - author: TrixxedHeart changes: - message: Added 5 new Vox sounds, (Death gasp, Cough, Cry, Gasp, and Sigh) @@ -3994,3 +3986,10 @@ id: 9516 time: '2026-02-11T20:01:44.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42821 +- author: Minemoder + changes: + - message: The sneeze emote has been readded. + type: Add + id: 9517 + time: '2026-02-11T22:01:36.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/41479 From b90c9e4dcf925efa112ace129f112a95d08441bc Mon Sep 17 00:00:00 2001 From: Leah Date: Wed, 11 Feb 2026 23:16:10 +0100 Subject: [PATCH 325/603] fix: cleaning evidence off a person no longer reveals their true identity (#42868) fix cleaning evidence revealing your true identity --- Content.Server/Forensics/Systems/ForensicsSystem.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Content.Server/Forensics/Systems/ForensicsSystem.cs b/Content.Server/Forensics/Systems/ForensicsSystem.cs index 7d700df02d2..4c28265fed5 100644 --- a/Content.Server/Forensics/Systems/ForensicsSystem.cs +++ b/Content.Server/Forensics/Systems/ForensicsSystem.cs @@ -14,6 +14,7 @@ using Content.Shared.Forensics.Components; using Content.Shared.Forensics.Systems; using Content.Shared.Gibbing; +using Content.Shared.IdentityManagement; using Content.Shared.Interaction; using Content.Shared.Interaction.Events; using Content.Shared.Inventory; @@ -217,7 +218,7 @@ public bool TryStartCleaning(Entity cleanForensicsEnti { if (!TryComp(target, out var forensicsComp)) { - _popupSystem.PopupEntity(Loc.GetString("forensics-cleaning-cannot-clean", ("target", target)), user, user, PopupType.MediumCaution); + _popupSystem.PopupEntity(Loc.GetString("forensics-cleaning-cannot-clean", ("target", Identity.Entity(target, EntityManager))), user, user, PopupType.MediumCaution); return false; } @@ -238,13 +239,13 @@ public bool TryStartCleaning(Entity cleanForensicsEnti _doAfterSystem.TryStartDoAfter(doAfterArgs); - _popupSystem.PopupEntity(Loc.GetString("forensics-cleaning", ("target", target)), user, user); + _popupSystem.PopupEntity(Loc.GetString("forensics-cleaning", ("target", Identity.Entity(target, EntityManager))), user, user); return true; } else { - _popupSystem.PopupEntity(Loc.GetString("forensics-cleaning-cannot-clean", ("target", target)), user, user, PopupType.MediumCaution); + _popupSystem.PopupEntity(Loc.GetString("forensics-cleaning-cannot-clean", ("target", Identity.Entity(target, EntityManager))), user, user, PopupType.MediumCaution); return false; } From 09222dd6436580853403c28951cc197348ee5a1e Mon Sep 17 00:00:00 2001 From: PJBot Date: Wed, 11 Feb 2026 22:32:50 +0000 Subject: [PATCH 326/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 25aa0aedd41..3ff9eb44f1d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: TrixxedHeart - changes: - - message: Added 5 new Vox sounds, (Death gasp, Cough, Cry, Gasp, and Sigh) - type: Add - id: 9011 - time: '2025-09-27T17:01:14.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39914 - author: SignalSender changes: - message: reworked salv instrument spawns to include more instruments @@ -3993,3 +3986,10 @@ id: 9517 time: '2026-02-11T22:01:36.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/41479 +- author: bnuuy + changes: + - message: Cleaning evidence off a person no longer reveals their true identity. + type: Fix + id: 9518 + time: '2026-02-11T22:31:43.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42868 From b47db861890c35436ad2db061925746631e080ee Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Thu, 12 Feb 2026 15:42:34 +0100 Subject: [PATCH 327/603] Remove bad accents (#42880) These are just bad bloat content that doesn't even work properly or has obvious issues if you look at it too closely. Remove. Removed: * Dwarvish * Italian * German (word replacements only) * Southern * Cowboy (I have a friend from Texas who hates it) * Pirate (trait removal, hat still works) --- .../EntitySystems/GermanAccentSystem.cs | 4 - Resources/Locale/en-US/accent/cowboy.ftl | 296 ------------ Resources/Locale/en-US/accent/dwarf.ftl | 424 ------------------ Resources/Locale/en-US/accent/german.ftl | 199 -------- Resources/Locale/en-US/accent/italian.ftl | 151 ------- Resources/Locale/en-US/accent/southern.ftl | 17 - Resources/Locale/en-US/traits/traits.ftl | 12 - .../Prototypes/Accents/word_replacements.yml | 396 ---------------- Resources/Prototypes/Body/Species/dwarf.yml | 2 - .../Entities/Clothing/Head/hats.yml | 3 - .../Entities/Clothing/Masks/masks.yml | 3 - .../Entities/Objects/Devices/pda.yml | 2 - Resources/Prototypes/Traits/speech.yml | 40 -- 13 files changed, 1549 deletions(-) delete mode 100644 Resources/Locale/en-US/accent/cowboy.ftl delete mode 100644 Resources/Locale/en-US/accent/dwarf.ftl delete mode 100644 Resources/Locale/en-US/accent/german.ftl delete mode 100644 Resources/Locale/en-US/accent/italian.ftl delete mode 100644 Resources/Locale/en-US/accent/southern.ftl diff --git a/Content.Server/Speech/EntitySystems/GermanAccentSystem.cs b/Content.Server/Speech/EntitySystems/GermanAccentSystem.cs index 94a5606178b..8295a8164b6 100644 --- a/Content.Server/Speech/EntitySystems/GermanAccentSystem.cs +++ b/Content.Server/Speech/EntitySystems/GermanAccentSystem.cs @@ -9,7 +9,6 @@ namespace Content.Server.Speech.EntitySystems; public sealed class GermanAccentSystem : EntitySystem { [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly ReplacementAccentSystem _replacement = default!; private static readonly Regex RegexTh = new(@"(?<=\s|^)th", RegexOptions.IgnoreCase); private static readonly Regex RegexThe = new(@"(?<=\s|^)the(?=\s|$)", RegexOptions.IgnoreCase); @@ -38,9 +37,6 @@ public string Accentuate(string message) } } - // now, apply word replacements - msg = _replacement.ApplyReplacements(msg, "german"); - // replace th with zh (for zhis, zhat, etc. the => ze is handled by replacements already) var msgBuilder = new StringBuilder(msg); foreach (Match match in RegexTh.Matches(msg)) diff --git a/Resources/Locale/en-US/accent/cowboy.ftl b/Resources/Locale/en-US/accent/cowboy.ftl deleted file mode 100644 index 40877faf199..00000000000 --- a/Resources/Locale/en-US/accent/cowboy.ftl +++ /dev/null @@ -1,296 +0,0 @@ -accent-cowboy-words-1 = alcohol -accent-cowboy-replacement-1 = firewater - -accent-cowboy-words-2 = alien -accent-cowboy-replacement-2 = space critter - -accent-cowboy-words-3 = aliens -accent-cowboy-replacement-3 = space critters - -accent-cowboy-words-4 = ambush -accent-cowboy-replacement-4 = bush whack - -accent-cowboy-words-5 = angry -accent-cowboy-replacement-5 = fit to be tied - -accent-cowboy-words-6 = animal -accent-cowboy-replacement-6 = critter - -accent-cowboy-words-7 = animals -accent-cowboy-replacement-7 = critters - -accent-cowboy-words-8 = arrest -accent-cowboy-replacement-8 = lasso - -accent-cowboy-words-9 = arrested -accent-cowboy-replacement-9 = lassoed - -accent-cowboy-words-10 = bomb -accent-cowboy-replacement-10 = dynamite - -accent-cowboy-words-11 = borg -accent-cowboy-replacement-11 = tin man - -accent-cowboy-words-12 = bye -accent-cowboy-replacement-12 = so long - -accent-cowboy-words-13 = cell -accent-cowboy-replacement-13 = pokey - -accent-cowboy-words-14 = chef -accent-cowboy-replacement-14 = cookie - -accent-cowboy-words-15 = coffee -accent-cowboy-replacement-15 = black water - -accent-cowboy-words-16 = confused -accent-cowboy-replacement-16 = stumped - -accent-cowboy-words-17 = cool -accent-cowboy-replacement-17 = slick - -accent-cowboy-words-18 = corpse -accent-cowboy-replacement-18 = dead meat - -accent-cowboy-words-19 = cow -accent-cowboy-replacement-19 = dogie - -accent-cowboy-words-20 = cows -accent-cowboy-replacement-20 = dogies - -accent-cowboy-words-21 = crazy -accent-cowboy-replacement-21 = cracked - -accent-cowboy-words-22 = cyborg -accent-cowboy-replacement-22 = tin man - -accent-cowboy-words-23 = dad -accent-cowboy-replacement-23 = pappy - -accent-cowboy-words-24 = drunk -accent-cowboy-replacement-24 = soaked - -accent-cowboy-words-25 = explosive -accent-cowboy-replacement-25 = dynamite - -accent-cowboy-words-26 = fast -accent-cowboy-replacement-26 = lickety split - -accent-cowboy-words-27 = fight -accent-cowboy-replacement-27 = scrap - -accent-cowboy-words-28 = food -accent-cowboy-replacement-28 = grub - -accent-cowboy-words-29 = friend -accent-cowboy-replacement-29 = partner - -accent-cowboy-words-30 = goodbye -accent-cowboy-replacement-30 = so long - -accent-cowboy-words-31 = greytide -accent-cowboy-replacement-31 = varmints - -accent-cowboy-words-32 = greytider -accent-cowboy-replacement-32 = varmint - -accent-cowboy-words-33 = greytiders -accent-cowboy-replacement-33 = varmints - -accent-cowboy-words-34 = group -accent-cowboy-replacement-34 = possee - -accent-cowboy-words-35 = guess -accent-cowboy-replacement-35 = reckon - -accent-cowboy-words-36 = gun -accent-cowboy-replacement-36 = big iron - -accent-cowboy-words-37 = handcuff -accent-cowboy-replacement-37 = hog tie - -accent-cowboy-words-38 = handcuffed -accent-cowboy-replacement-38 = hog tied - -accent-cowboy-words-39 = hell -accent-cowboy-replacement-39 = tarnation - -accent-cowboy-words-40 = hello -accent-cowboy-replacement-40 = howdy - -accent-cowboy-words-41 = hey -accent-cowboy-replacement-41 = howdy - -accent-cowboy-words-42 = hi -accent-cowboy-replacement-42 = howdy - -accent-cowboy-words-43 = hungry -accent-cowboy-replacement-43 = peckish - -accent-cowboy-words-44 = idiot -accent-cowboy-replacement-44 = dunderhead - -accent-cowboy-words-45 = intending -accent-cowboy-replacement-45 = fixing - -accent-cowboy-words-46 = jail -accent-cowboy-replacement-46 = pokey - -accent-cowboy-words-47 = liqour -accent-cowboy-replacement-47 = firewater - -accent-cowboy-words-48 = lot -accent-cowboy-replacement-48 = heap - -accent-cowboy-words-49 = lots -accent-cowboy-replacement-49 = heaps - -accent-cowboy-words-50 = mouth -accent-cowboy-replacement-50 = bazoo - -accent-cowboy-words-51 = nervous -accent-cowboy-replacement-51 = rattled - -accent-cowboy-words-52 = ninja -accent-cowboy-replacement-52 = bushwhacker - -accent-cowboy-words-53 = ninjas -accent-cowboy-replacement-53 = bushwhackers - -accent-cowboy-words-54 = noise -accent-cowboy-replacement-54 = ruckus - -accent-cowboy-words-55 = nukies -accent-cowboy-replacement-55 = outlaws - -accent-cowboy-words-56 = operator -accent-cowboy-replacement-56 = outlaw - -accent-cowboy-words-57 = operators -accent-cowboy-replacement-57 = outlaws - -accent-cowboy-words-58 = ops -accent-cowboy-replacement-58 = outlaws - -accent-cowboy-words-59 = pal -accent-cowboy-replacement-59 = partner - -accent-cowboy-words-60 = party -accent-cowboy-replacement-60 = shindig - -accent-cowboy-words-61 = passenger -accent-cowboy-replacement-61 = greenhorn - -accent-cowboy-words-62 = passengers -accent-cowboy-replacement-62 = greenhorns - -accent-cowboy-words-63 = planning -accent-cowboy-replacement-63 = fixing - -accent-cowboy-words-64 = please -accent-cowboy-replacement-64 = pray - -accent-cowboy-words-65 = punch -accent-cowboy-replacement-65 = lick - -accent-cowboy-words-66 = punched -accent-cowboy-replacement-66 = slogged - -accent-cowboy-words-67 = ran -accent-cowboy-replacement-67 = skedaddled - -accent-cowboy-words-68 = robbery -accent-cowboy-replacement-68 = stick up - -accent-cowboy-words-69 = run -accent-cowboy-replacement-69 = skedaddle - -accent-cowboy-words-70 = running -accent-cowboy-replacement-70 = skedaddling - -accent-cowboy-words-71 = scream -accent-cowboy-replacement-71 = holler - -accent-cowboy-words-72 = screamed -accent-cowboy-replacement-72 = hollered - -accent-cowboy-words-73 = screaming -accent-cowboy-replacement-73 = hollering - -accent-cowboy-words-74 = sec -accent-cowboy-replacement-74 = law - -accent-cowboy-words-75 = secoff -accent-cowboy-replacement-75 = deputy - -accent-cowboy-words-76 = security -accent-cowboy-replacement-76 = law - -accent-cowboy-words-77 = shitsec -accent-cowboy-replacement-77 = crooked law - -accent-cowboy-words-78 = shoe -accent-cowboy-replacement-78 = boot - -accent-cowboy-words-79 = shoes -accent-cowboy-replacement-79 = boots - -accent-cowboy-words-80 = steal -accent-cowboy-replacement-80 = rustle - -accent-cowboy-words-81 = stole -accent-cowboy-replacement-81 = rustled - -accent-cowboy-words-82 = stolen -accent-cowboy-replacement-82 = rustled - -accent-cowboy-words-83 = story -accent-cowboy-replacement-83 = yarn - -accent-cowboy-words-84 = thank you -accent-cowboy-replacement-84 = much obliged - -accent-cowboy-words-85 = thanks -accent-cowboy-replacement-85 = much obliged - -accent-cowboy-words-86 = thief -accent-cowboy-replacement-86 = rustler - -accent-cowboy-words-87 = thieves -accent-cowboy-replacement-87 = rustlers - -accent-cowboy-words-88 = think -accent-cowboy-replacement-88 = reckon - -accent-cowboy-words-89 = tired -accent-cowboy-replacement-89 = dragged out - -accent-cowboy-words-90 = toilet -accent-cowboy-replacement-90 = outhouse - -accent-cowboy-words-91 = totally -accent-cowboy-replacement-91 = plumb - -accent-cowboy-words-92 = traitor -accent-cowboy-replacement-92 = outlaw - -accent-cowboy-words-93 = traitors -accent-cowboy-replacement-93 = outlaws - -accent-cowboy-words-94 = very -accent-cowboy-replacement-94 = mighty - -accent-cowboy-words-95 = worried -accent-cowboy-replacement-95 = rattled - -accent-cowboy-words-96 = wow -accent-cowboy-replacement-96 = by gum - -accent-cowboy-words-97 = yell -accent-cowboy-replacement-97 = holler - -accent-cowboy-words-98 = yelled -accent-cowboy-replacement-98 = hollered - -accent-cowboy-words-99 = yelling -accent-cowboy-replacement-99 = hollering \ No newline at end of file diff --git a/Resources/Locale/en-US/accent/dwarf.ftl b/Resources/Locale/en-US/accent/dwarf.ftl deleted file mode 100644 index 09e3120493a..00000000000 --- a/Resources/Locale/en-US/accent/dwarf.ftl +++ /dev/null @@ -1,424 +0,0 @@ -# these specifically mostly come from examples of specific scottish-english (not necessarily scots) verbiage -# https://en.wikipedia.org/wiki/Scotticism -# https://en.wikipedia.org/wiki/Scottish_English -# https://www.cs.stir.ac.uk/~kjt/general/scots.html - -accent-dwarf-words-1 = girl -accent-dwarf-words-replace-1 = lassie - -accent-dwarf-words-2 = boy -accent-dwarf-words-replace-2 = laddie - -accent-dwarf-words-3 = man -accent-dwarf-words-replace-3 = lad - -accent-dwarf-words-4 = woman -accent-dwarf-words-replace-4 = lass - -accent-dwarf-words-5 = do -accent-dwarf-words-replace-5 = dae - -accent-dwarf-words-6 = don't -accent-dwarf-words-replace-6 = dinnae - -accent-dwarf-words-7 = dont -accent-dwarf-words-replace-7 = dinnae - -accent-dwarf-words-8 = i'm -accent-dwarf-words-replace-8 = A'm - -accent-dwarf-words-9 = im -accent-dwarf-words-replace-9 = am - -accent-dwarf-words-10 = going -accent-dwarf-words-replace-10 = gaun - -accent-dwarf-words-11 = know -accent-dwarf-words-replace-11 = ken - -accent-dwarf-words-12 = i -accent-dwarf-words-replace-12 = Ah - -accent-dwarf-words-13 = you're -accent-dwarf-words-replace-13 = ye're - -accent-dwarf-words-14 = youre -accent-dwarf-words-replace-14 = yere - -accent-dwarf-words-15 = you -accent-dwarf-words-replace-15 = ye - -accent-dwarf-words-16 = i'll -accent-dwarf-words-replace-16 = A'll - -accent-dwarf-words-17 = ill -accent-dwarf-words-replace-17 = all - -accent-dwarf-words-18 = of -accent-dwarf-words-replace-18 = ae - -accent-dwarf-words-19 = was -accent-dwarf-words-replace-19 = wis - -accent-dwarf-words-20 = can't -accent-dwarf-words-replace-20 = cannae - -accent-dwarf-words-21 = cant -accent-dwarf-words-replace-21 = cannae - -accent-dwarf-words-22 = yourself -accent-dwarf-words-replace-22 = yersel - -accent-dwarf-words-23 = where -accent-dwarf-words-replace-23 = whaur - -accent-dwarf-words-24 = oh -accent-dwarf-words-replace-24 = ach - -accent-dwarf-words-25 = little -accent-dwarf-words-replace-25 = wee - -accent-dwarf-words-26 = small -accent-dwarf-words-replace-26 = wee - -accent-dwarf-words-27 = shit -accent-dwarf-words-replace-27 = shite - -accent-dwarf-words-28 = yeah -accent-dwarf-words-replace-28 = aye - -accent-dwarf-words-29 = yea -accent-dwarf-words-replace-29 = aye - -accent-dwarf-words-30 = yes -accent-dwarf-words-replace-30 = aye - -accent-dwarf-words-31 = too -accent-dwarf-words-replace-31 = tae - -accent-dwarf-words-32 = my -accent-dwarf-words-replace-32 = me - -accent-dwarf-words-33 = not -accent-dwarf-words-replace-33 = nae - -accent-dwarf-words-34 = dad -accent-dwarf-words-replace-34 = da - -accent-dwarf-words-35 = mom -accent-dwarf-words-replace-35 = maw - -accent-dwarf-words-36 = newbie -accent-dwarf-words-replace-36 = greenbeard - -accent-dwarf-words-37 = noob -accent-dwarf-words-replace-37 = greenbeard - -accent-dwarf-words-38 = noobie -accent-dwarf-words-replace-38 = greenbeard - -accent-dwarf-words-39 = professional -accent-dwarf-words-replace-39 = greybeard - -accent-dwarf-words-40 = veteran -accent-dwarf-words-replace-40 = greybeard - -accent-dwarf-words-41 = fuck -accent-dwarf-words-replace-41 = sod - -accent-dwarf-words-42 = would -accent-dwarf-words-replace-42 = wou - -accent-dwarf-words-43 = should -accent-dwarf-words-replace-43 = shou - -accent-dwarf-words-44 = could -accent-dwarf-words-replace-44 = cou - -accent-dwarf-words-45 = would've -accent-dwarf-words-replace-45 = wou'hae - -accent-dwarf-words-46 = should've -accent-dwarf-words-replace-46 = shou'hae - -accent-dwarf-words-47 = could've -accent-dwarf-words-replace-47 = cou'hae - -accent-dwarf-words-48 = wouldve -accent-dwarf-words-replace-48 = wouhae - -accent-dwarf-words-49 = shouldve -accent-dwarf-words-replace-49 = shouhae - -accent-dwarf-words-50 = couldve -accent-dwarf-words-replace-50 = couhae - -accent-dwarf-words-51 = would'nt -accent-dwarf-words-replace-51 = wou'nae - -accent-dwarf-words-52 = should'nt -accent-dwarf-words-replace-52 = shou'nae - -accent-dwarf-words-53 = could'nt -accent-dwarf-words-replace-53 = cou'nae - -accent-dwarf-words-54 = wouldnt -accent-dwarf-words-replace-54 = wounae - -accent-dwarf-words-55 = shouldnt -accent-dwarf-words-replace-55 = shounae - -accent-dwarf-words-56 = couldnt -accent-dwarf-words-replace-56 = counae - -accent-dwarf-words-57 = have -accent-dwarf-words-replace-57 = hae - -accent-dwarf-words-58 = no -accent-dwarf-words-replace-58 = nae - -accent-dwarf-words-59 = to -accent-dwarf-words-replace-59 = ta - -accent-dwarf-words-60 = the -accent-dwarf-words-replace-60 = tha - -accent-dwarf-words-61 = have -accent-dwarf-words-replace-61 = hae - -accent-dwarf-words-62 = are -accent-dwarf-words-replace-62 = be - -accent-dwarf-words-63 = is -accent-dwarf-words-replace-63 = be - -accent-dwarf-words-64 = am -accent-dwarf-words-replace-64 = be - -accent-dwarf-words-66 = food -accent-dwarf-words-replace-66 = grub - -accent-dwarf-words-67 = have -accent-dwarf-words-replace-67 = hae - -accent-dwarf-words-68 = hey -accent-dwarf-words-replace-68 = oi - -accent-dwarf-words-69 = what -accent-dwarf-words-replace-69 = wot - -accent-dwarf-words-70 = where -accent-dwarf-words-replace-70 = whaur - -accent-dwarf-words-71 = when -accent-dwarf-words-replace-71 = wen - -accent-dwarf-words-72 = myself -accent-dwarf-words-replace-72 = mesel - -accent-dwarf-words-73 = himself -accent-dwarf-words-replace-73 = hesel - -accent-dwarf-words-74 = herself -accent-dwarf-words-replace-74 = shesel - -accent-dwarf-words-75 = move -accent-dwarf-words-replace-75 = moev - -accent-dwarf-words-76 = moving -accent-dwarf-words-replace-76 = moeven - -accent-dwarf-words-77 = wasn't -accent-dwarf-words-replace-77 = wis'nae - -accent-dwarf-words-78 = wasnt -accent-dwarf-words-replace-78 = wisnae - -accent-dwarf-words-79 = wizard -accent-dwarf-words-replace-79 = wizer - -accent-dwarf-words-80 = fool -accent-dwarf-words-replace-80 = wazzok - -accent-dwarf-words-81 = have -accent-dwarf-words-replace-81 = hae - -accent-dwarf-words-82 = for -accent-dwarf-words-replace-82 = fer - -accent-dwarf-words-83 = about -accent-dwarf-words-replace-83 = abut - -accent-dwarf-words-84 = ow -accent-dwarf-words-replace-84 = och - -accent-dwarf-words-85 = small -accent-dwarf-words-replace-85 = wee - -accent-dwarf-words-86 = tiny -accent-dwarf-words-replace-86 = tinnae - -accent-dwarf-words-87 = baby -accent-dwarf-words-replace-87 = babee - -accent-dwarf-words-88 = after -accent-dwarf-words-replace-88 = efter - -accent-dwarf-words-90 = gonna -accent-dwarf-words-replace-90 = gaun'ae - -accent-dwarf-words-91 = going to -accent-dwarf-words-replace-91 = gaun'ae - -accent-dwarf-words-92 = gone -accent-dwarf-words-replace-92 = gaun - -accent-dwarf-words-93 = talk -accent-dwarf-words-replace-93 = blather - -accent-dwarf-words-94 = talking -accent-dwarf-words-replace-94 = blatherin' - -accent-dwarf-words-95 = now -accent-dwarf-words-replace-95 = nou - -accent-dwarf-words-96 = talked -accent-dwarf-words-replace-96 = blathered - -accent-dwarf-words-97 = give -accent-dwarf-words-replace-97 = gie - -accent-dwarf-words-98 = gimme -accent-dwarf-words-replace-98 = gie's - -accent-dwarf-words-99 = give me -accent-dwarf-words-replace-99 = gie's - -accent-dwarf-words-100 = do you -accent-dwarf-words-replace-100 = d'ye - -accent-dwarf-words-101 = with -accent-dwarf-words-replace-101 = wi - -accent-dwarf-words-102 = without -accent-dwarf-words-replace-102 = wi'ou - -accent-dwarf-words-103 = whether -accent-dwarf-words-replace-103 = we'er - -accent-dwarf-words-104 = ever -accent-dwarf-words-replace-104 = e'er - -accent-dwarf-words-105 = whenever -accent-dwarf-words-replace-105 = wen'er - -accent-dwarf-words-106 = whatever -accent-dwarf-words-replace-106 = wot'er - -accent-dwarf-words-107 = how -accent-dwarf-words-replace-107 = hou - -accent-dwarf-words-108 = however -accent-dwarf-words-replace-108 = hou'er - -accent-dwarf-words-109 = think -accent-dwarf-words-replace-109 = reckon - -accent-dwarf-words-111 = hamlet -accent-dwarf-words-replace-111 = hammy - -accent-dwarf-words-112 = hampster -accent-dwarf-words-replace-112 = hammy - -accent-dwarf-words-113 = nukie -accent-dwarf-words-replace-113 = reddie - -accent-dwarf-words-114 = nuclear op -accent-dwarf-words-replace-114 = reddie - -accent-dwarf-words-115 = nuclear operative -accent-dwarf-words-replace-115 = reddie - -accent-dwarf-words-116 = nuclear agent -accent-dwarf-words-replace-116 = reddie - -accent-dwarf-words-121 = more -accent-dwarf-words-replace-121 = maer - -accent-dwarf-words-122 = moreover -accent-dwarf-words-replace-122 = maero'er - -accent-dwarf-words-123 = over -accent-dwarf-words-replace-123 = o'er - -accent-dwarf-words-125 = human -accent-dwarf-words-replace-125 = humi - -accent-dwarf-words-126 = dwarf -accent-dwarf-words-replace-126 = dorf - -accent-dwarf-words-127 = slime -accent-dwarf-words-replace-127 = oozi - -accent-dwarf-words-128 = rat -accent-dwarf-words-replace-128 = raki - -accent-dwarf-words-129 = arachnid -accent-dwarf-words-replace-129 = aranaki - -accent-dwarf-words-130 = spider -accent-dwarf-words-replace-130 = hisser - -accent-dwarf-words-131 = isn't -accent-dwarf-words-replace-131 = be'nae - -accent-dwarf-words-132 = aren't -accent-dwarf-words-replace-132 = be'nae - -accent-dwarf-words-133 = ain't -accent-dwarf-words-replace-133 = be'nae - -accent-dwarf-words-134 = isnt -accent-dwarf-words-replace-134 = benae - -accent-dwarf-words-135 = arent -accent-dwarf-words-replace-135 = benae - -accent-dwarf-words-136 = aint -accent-dwarf-words-replace-136 = benae - -accent-dwarf-words-137 = zombie -accent-dwarf-words-replace-137 = rotter - -accent-dwarf-words-138 = zomb -accent-dwarf-words-replace-138 = rotter - -accent-dwarf-words-139 = clown -accent-dwarf-words-replace-139 = honki - -accent-dwarf-words-140 = cluwn -accent-dwarf-words-replace-140 = hunki - -accent-dwarf-words-141 = carp -accent-dwarf-words-replace-141 = fin - -accent-dwarf-words-142 = crusher -accent-dwarf-words-replace-142 = axe - -accent-dwarf-words-143 = coward -accent-dwarf-words-replace-143 = leaflover - -accent-dwarf-words-144 = idiot -accent-dwarf-words-replace-144 = dobber - -accent-dwarf-words-145 = stupid -accent-dwarf-words-replace-145 = diteit - -accent-dwarf-words-146 = officer -accent-dwarf-words-replace-146 = bobby - -accent-dwarf-words-147 = seccie -accent-dwarf-words-replace-147 = bobby - -accent-dwarf-words-148 = a -accent-dwarf-words-replace-148 = ae diff --git a/Resources/Locale/en-US/accent/german.ftl b/Resources/Locale/en-US/accent/german.ftl deleted file mode 100644 index ccb57ba714c..00000000000 --- a/Resources/Locale/en-US/accent/german.ftl +++ /dev/null @@ -1,199 +0,0 @@ -accent-german-words-1 = yes -accent-german-words-1-2 = yea -accent-german-words-replace-1 = ja - -accent-german-words-2 = no -accent-german-words-replace-2 = nein - -accent-german-words-3 = the -accent-german-words-replace-3 = ze - -accent-german-words-4 = shit -accent-german-words-replace-4 = scheisse - -accent-german-words-5 = sausage -accent-german-words-replace-5 = wurst - -accent-german-words-6 = sausages -accent-german-words-replace-6 = würste - -accent-german-words-7 = man -accent-german-words-replace-7 = mann - -accent-german-words-8 = men -accent-german-words-replace-8 = männer - -accent-german-words-9 = woman -accent-german-words-9-2 = lady -accent-german-words-replace-9 = frau - -accent-german-words-10 = women -accent-german-words-10-2 = ladies -accent-german-words-replace-10 = frauen - -accent-german-words-11 = gentleman -accent-german-words-replace-11 = herr - -accent-german-words-12 = gentlemen -accent-german-words-replace-12 = herren - -accent-german-words-13 = my god -accent-german-words-replace-13 = mein gott - -accent-german-words-14 = my -accent-german-words-replace-14 = mein - -accent-german-words-15 = here -accent-german-words-replace-15 = hier - -accent-german-words-16 = idiot -accent-german-words-replace-16 = dummkopf - -accent-german-words-17 = idiots -accent-german-words-replace-17 = dummköpfe - -accent-german-words-18 = butterfly -accent-german-words-replace-18 = schmetterling - -accent-german-words-19 = machine -accent-german-words-replace-19 = maschine - -accent-german-words-20 = machines -accent-german-words-replace-20 = maschinen - -accent-german-words-21 = watch out -accent-german-words-replace-21 = achtung - -accent-german-words-22 = music -accent-german-words-replace-22 = musik - -accent-german-words-23 = captain -accent-german-words-replace-23 = kapitän - -accent-german-words-24 = kebab -accent-german-words-replace-24 = döner - -accent-german-words-25 = mouse -accent-german-words-replace-25 = maus - -accent-german-words-26 = what -accent-german-words-replace-26 = wat - -accent-german-words-27 = thank you -accent-german-words-replace-27 = dankeschön - -accent-german-words-28 = thanks -accent-german-words-replace-28 = danke - -accent-german-words-29 = bless you -accent-german-words-replace-29 = gesundheit - -accent-german-words-30 = flamethrower -accent-german-words-replace-30 = flammenwerfer - -accent-german-words-31 = ghost -accent-german-words-replace-31 = poltergeist - -accent-german-words-32 = weed -accent-german-words-32-2 = cabbage -accent-german-words-replace-32 = kraut - -accent-german-words-33 = vodka -accent-german-words-replace-33 = wodka - -accent-german-words-34 = backpack -accent-german-words-replace-34 = rucksack - -accent-german-words-35 = medicine -accent-german-words-replace-35 = medizin - -accent-german-words-36 = accent -accent-german-words-replace-36 = akzent - -accent-german-words-37 = anomaly -accent-german-words-replace-37 = anomalie - -accent-german-words-38 = artifact -accent-german-words-38-2 = artefact -accent-german-words-replace-38 = artefakt - -accent-german-words-39 = dumb -accent-german-words-replace-39 = dumm - -accent-german-words-40 = stupid -accent-german-words-replace-40 = doof - -accent-german-words-41 = wonderful -accent-german-words-replace-41 = wunderbar - -accent-german-words-42 = warning -accent-german-words-replace-42 = warnung - -accent-german-words-43 = warnings -accent-german-words-replace-43 = warnungen - -accent-german-words-44 = and -accent-german-words-replace-44 = und - -accent-german-words-45 = carp -accent-german-words-replace-45 = karpfen - -accent-german-words-46 = commander -accent-german-words-replace-46 = kommandant - -accent-german-words-47 = beer -accent-german-words-47-2 = beers -accent-german-words-replace-47 = bier - -accent-german-words-48 = hi -accent-german-words-replace-48 = hallo - -accent-german-words-49 = hello -accent-german-words-replace-49 = guten Tag - -accent-german-words-50 = ambulance -accent-german-words-replace-50 = krankenwagen - -accent-german-words-51 = goodbye -accent-german-words-replace-51 = auf Wiedersehen - -accent-german-words-52 = bye -accent-german-words-replace-52 = tschüss - -accent-german-words-53 = bye bye -accent-german-words-53-2 = bye-bye -accent-german-words-replace-53 = tschau - -accent-german-words-54 = fantastic -accent-german-words-replace-54 = fantastisch - -accent-german-words-55 = changeling -accent-german-words-replace-55 = doppelgänger - -accent-german-words-56 = forbidden -accent-german-words-56-2 = prohibited -accent-german-words-56-3 = banned -accent-german-words-replace-56 = verboten - -accent-german-words-57 = quick -accent-german-words-57-2 = quickly -accent-german-words-replace-57 = schnell - -accent-german-words-58 = hospital -accent-german-words-replace-58 = krankenhaus - -accent-german-words-59 = tesla coil -accent-german-words-replace-59 = tesla coil - -accent-german-words-60 = tesla coils -accent-german-words-replace-60 = tesla coils - -accent-german-words-61 = teslaloose -accent-german-words-61-2 = tesloose -accent-german-words-61-3 = lightning ball -accent-german-words-61-4 = ball lightning -accent-german-words-61-5 = tesla -accent-german-words-replace-61 = kugelblitz - -accent-german-words-62 = car -accent-german-words-replace-62 = auto \ No newline at end of file diff --git a/Resources/Locale/en-US/accent/italian.ftl b/Resources/Locale/en-US/accent/italian.ftl deleted file mode 100644 index 4b8d9814b39..00000000000 --- a/Resources/Locale/en-US/accent/italian.ftl +++ /dev/null @@ -1,151 +0,0 @@ -# This should probably use the same prefix system as the mobster accent. -# For the record, these do not work right now - even when uncommented. - -# accent-italian-prefix-1 = Ravioli, ravioli, give me the formuoli! -# accent-italian-prefix-2 = Mamma-mia! -# accent-italian-prefix-3 = Mamma-mia! That's a spicy meat-ball! -# accemt-italian-prefix-4 = La la la la la funiculi funicula! - -accent-italian-words-1 = assistant -accent-italian-words-replace-1 = goombah - -accent-italian-words-2 = assistants -accent-italian-words-replace-2 = goombahs - -accent-italian-words-3 = baby -accent-italian-words-replace-3 = bambino - -accent-italian-words-4 = bad -accent-italian-words-replace-4 = molto male - -accent-italian-words-5 = bye -accent-italian-words-replace-5 = arrivederci - -accent-italian-words-6 = captain -accent-italian-words-replace-6 = capitano - -accent-italian-words-7 = cheese -accent-italian-words-replace-7 = parmesano - -accent-italian-words-8 = cook -accent-italian-words-replace-8 = cook-a - -accent-italian-words-9 = could -accent-italian-words-replace-9 = could-a - -accent-italian-words-10 = dad -accent-italian-words-replace-10 = papà - -accent-italian-words-11 = good -accent-italian-words-replace-11 = molto bene - -accent-italian-words-12 = greytide -accent-italian-words-replace-12 = curva - -accent-italian-words-13 = greytider -accent-italian-words-replace-13 = curvista - -accent-italian-words-14 = greytiders -accent-italian-words-replace-14 = curvisti - -accent-italian-words-15 = hello -accent-italian-words-replace-15 = ciao - -accent-italian-words-16 = it's -accent-italian-words-replace-16 = it's-a - -accent-italian-words-17 = make -accent-italian-words-replace-17 = make-a - -accent-italian-words-18 = meat -accent-italian-words-replace-18 = prosciutto - -accent-italian-words-19 = mom -accent-italian-words-replace-19 = mamma - -accent-italian-words-20 = my -accent-italian-words-replace-20 = my-a - -accent-italian-words-21 = nuke -accent-italian-words-replace-21 = spiciest-a meatball - -accent-italian-words-22 = op -accent-italian-words-replace-22 = greek - -accent-italian-words-23 = operative -accent-italian-words-replace-23 = greek - -accent-italian-words-24 = operatives -accent-italian-words-replace-24 = greeks - -accent-italian-words-25 = sec -accent-italian-words-replace-25 = polizia - -accent-italian-words-26 = security -accent-italian-words-replace-26 = polizia - -accent-italian-words-27 = secoff -accent-italian-words-replace-27 = polizia - -accent-italian-words-28 = shitcurity -accent-italian-words-replace-28 = carabinieri - -accent-italian-words-29 = shitsec -accent-italian-words-replace-29 = carabinieri - -accent-italian-words-30 = sing -accent-italian-words-replace-30 = sing-a - -accent-italian-words-31 = spaghetti -accent-italian-words-replace-31 = SPAGHETT - -accent-italian-words-32 = spicy -accent-italian-words-replace-32 = a-spicy - -accent-italian-words-33 = thanks -accent-italian-words-replace-33 = grazie - -accent-italian-words-34 = thing -accent-italian-words-replace-34 = thing-a - -accent-italian-words-35 = traitor -accent-italian-words-replace-35 = mafioso - -accent-italian-words-36 = traitors -accent-italian-words-replace-36 = mafiosi - -accent-italian-words-37 = use -accent-italian-words-replace-37 = use-a - -accent-italian-words-38 = want -accent-italian-words-replace-38 = want-a - -accent-italian-words-39 = what's -accent-italian-words-replace-39 = what's-a - -accent-italian-words-40 = who's -accent-italian-words-replace-40 = who's-a - -accent-italian-words-41 = whose -accent-italian-words-replace-41 = whose-a - -accent-italian-words-42 = why -accent-italian-words-replace-42 = for-a what reason - -accent-italian-words-43 = wine -accent-italian-words-replace-43 = vino - -accent-italian-words-44 = passenger -accent-italian-words-replace-44 = goombah - -accent-italian-words-45 = passengers -accent-italian-words-replace-45 = goombahs - -accent-italian-words-46 = i'm -accent-italian-words-replace-46 = i'm-a - -accent-italian-words-47 = am-a -accent-italian-words-replace-47 = am-a - -accent-italian-words-48 = and-a -accent-italian-words-replace-48 = and-a diff --git a/Resources/Locale/en-US/accent/southern.ftl b/Resources/Locale/en-US/accent/southern.ftl deleted file mode 100644 index 7e1657a3ed7..00000000000 --- a/Resources/Locale/en-US/accent/southern.ftl +++ /dev/null @@ -1,17 +0,0 @@ -accent-southern-words-1 = you all -accent-southern-words-replace-1 = y'all - -accent-southern-words-2 = you guys -accent-southern-words-replace-2 = y'all - -accent-southern-words-3 = isn't -accent-southern-words-replace-3 = ain't - -accent-southern-words-4 = is not -accent-southern-words-replace-4 = ain't - -accent-southern-words-5 = aren't -accent-southern-words-replace-5 = ain't - -accent-southern-words-6 = are not -accent-southern-words-replace-6 = ain't diff --git a/Resources/Locale/en-US/traits/traits.ftl b/Resources/Locale/en-US/traits/traits.ftl index 32066a2d71d..cbf299c32f0 100644 --- a/Resources/Locale/en-US/traits/traits.ftl +++ b/Resources/Locale/en-US/traits/traits.ftl @@ -27,9 +27,6 @@ trait-paracusia-desc = You hear sounds that aren't really there. trait-unrevivable-name = Unrevivable trait-unrevivable-desc = You are unable to be revived by defibrillators. -trait-pirate-accent-name = Pirate accent -trait-pirate-accent-desc = You can't stop speaking like a pirate! - trait-accentless-name = Accentless trait-accentless-desc = You don't have the accent that your species would usually have. @@ -39,24 +36,15 @@ trait-frontal-lisp-desc = You thpeak with a lithp. trait-socialanxiety-name = Stutter trait-socialanxiety-desc = You speak with a stutter. -trait-southern-name = Southern drawl -trait-southern-desc = You have a different way of speakin'. - trait-snoring-name = Snoring trait-snoring-desc = You will snore while sleeping. trait-liar-name = Pathological liar trait-liar-desc = You can hardly bring yourself to tell the truth. Sometimes you lie anyway. -trait-cowboy-name = Cowboy accent -trait-cowboy-desc = You speak with a distinct cowboy accent! - trait-german-name = German accent trait-german-desc = You seem to come from space Germany. -trait-italian-name = Italian accent -trait-italian-desc = Mamma mia! You seem to have lived in space Italy! - trait-french-name = French accent trait-french-desc = Your accent seems to have a certain «je ne sais quoi». diff --git a/Resources/Prototypes/Accents/word_replacements.yml b/Resources/Prototypes/Accents/word_replacements.yml index 35ad45c1864..cefaf61060c 100644 --- a/Resources/Prototypes/Accents/word_replacements.yml +++ b/Resources/Prototypes/Accents/word_replacements.yml @@ -23,210 +23,6 @@ accent-mobster-words-16: accent-mobster-words-replace-16 accent-mobster-words-17: accent-mobster-words-replace-17 -- type: accent - id: italian - wordReplacements: - accent-italian-words-1: accent-italian-words-replace-1 - accent-italian-words-2: accent-italian-words-replace-2 - accent-italian-words-3: accent-italian-words-replace-3 - accent-italian-words-4: accent-italian-words-replace-4 - accent-italian-words-5: accent-italian-words-replace-5 - accent-italian-words-6: accent-italian-words-replace-6 - accent-italian-words-7: accent-italian-words-replace-7 - accent-italian-words-8: accent-italian-words-replace-8 - accent-italian-words-9: accent-italian-words-replace-9 - accent-italian-words-10: accent-italian-words-replace-10 - accent-italian-words-11: accent-italian-words-replace-11 - accent-italian-words-12: accent-italian-words-replace-12 - accent-italian-words-13: accent-italian-words-replace-13 - accent-italian-words-14: accent-italian-words-replace-14 - accent-italian-words-15: accent-italian-words-replace-15 - accent-italian-words-16: accent-italian-words-replace-16 - accent-italian-words-17: accent-italian-words-replace-17 - accent-italian-words-18: accent-italian-words-replace-18 - accent-italian-words-19: accent-italian-words-replace-19 - accent-italian-words-20: accent-italian-words-replace-20 - accent-italian-words-21: accent-italian-words-replace-21 - accent-italian-words-22: accent-italian-words-replace-22 - accent-italian-words-23: accent-italian-words-replace-23 - accent-italian-words-24: accent-italian-words-replace-24 - accent-italian-words-25: accent-italian-words-replace-25 - accent-italian-words-26: accent-italian-words-replace-26 - accent-italian-words-27: accent-italian-words-replace-27 - accent-italian-words-28: accent-italian-words-replace-28 - accent-italian-words-29: accent-italian-words-replace-29 - accent-italian-words-30: accent-italian-words-replace-30 - accent-italian-words-31: accent-italian-words-replace-31 - accent-italian-words-32: accent-italian-words-replace-32 - accent-italian-words-33: accent-italian-words-replace-33 - accent-italian-words-34: accent-italian-words-replace-34 - accent-italian-words-35: accent-italian-words-replace-35 - accent-italian-words-36: accent-italian-words-replace-36 - accent-italian-words-37: accent-italian-words-replace-37 - accent-italian-words-38: accent-italian-words-replace-38 - accent-italian-words-39: accent-italian-words-replace-39 - accent-italian-words-40: accent-italian-words-replace-40 - accent-italian-words-41: accent-italian-words-replace-41 - accent-italian-words-42: accent-italian-words-replace-42 - accent-italian-words-43: accent-italian-words-replace-43 - accent-italian-words-44: accent-italian-words-replace-44 - accent-italian-words-45: accent-italian-words-replace-45 - accent-italian-words-46: accent-italian-words-replace-46 - accent-italian-words-47: accent-italian-words-replace-47 - accent-italian-words-48: accent-italian-words-replace-48 - accent-italian-words-49: accent-italian-words-replace-49 - -- type: accent - id: dwarf - wordReplacements: - accent-dwarf-words-1: accent-dwarf-words-replace-1 - accent-dwarf-words-2: accent-dwarf-words-replace-2 - accent-dwarf-words-3: accent-dwarf-words-replace-3 - accent-dwarf-words-4: accent-dwarf-words-replace-4 - accent-dwarf-words-5: accent-dwarf-words-replace-5 - accent-dwarf-words-6: accent-dwarf-words-replace-6 - accent-dwarf-words-7: accent-dwarf-words-replace-7 - accent-dwarf-words-8: accent-dwarf-words-replace-8 - accent-dwarf-words-9: accent-dwarf-words-replace-9 - accent-dwarf-words-10: accent-dwarf-words-replace-10 - accent-dwarf-words-11: accent-dwarf-words-replace-11 - accent-dwarf-words-12: accent-dwarf-words-replace-12 - accent-dwarf-words-13: accent-dwarf-words-replace-13 - accent-dwarf-words-14: accent-dwarf-words-replace-14 - accent-dwarf-words-15: accent-dwarf-words-replace-15 - accent-dwarf-words-16: accent-dwarf-words-replace-16 - accent-dwarf-words-17: accent-dwarf-words-replace-17 - accent-dwarf-words-18: accent-dwarf-words-replace-18 - accent-dwarf-words-19: accent-dwarf-words-replace-19 - accent-dwarf-words-20: accent-dwarf-words-replace-20 - accent-dwarf-words-21: accent-dwarf-words-replace-21 - accent-dwarf-words-22: accent-dwarf-words-replace-22 - accent-dwarf-words-23: accent-dwarf-words-replace-23 - accent-dwarf-words-24: accent-dwarf-words-replace-24 - accent-dwarf-words-25: accent-dwarf-words-replace-25 - accent-dwarf-words-26: accent-dwarf-words-replace-26 - accent-dwarf-words-27: accent-dwarf-words-replace-27 - accent-dwarf-words-28: accent-dwarf-words-replace-28 - accent-dwarf-words-29: accent-dwarf-words-replace-29 - accent-dwarf-words-30: accent-dwarf-words-replace-30 - accent-dwarf-words-31: accent-dwarf-words-replace-31 - accent-dwarf-words-32: accent-dwarf-words-replace-32 - accent-dwarf-words-33: accent-dwarf-words-replace-33 - accent-dwarf-words-34: accent-dwarf-words-replace-34 - accent-dwarf-words-35: accent-dwarf-words-replace-35 - accent-dwarf-words-36: accent-dwarf-words-replace-36 - accent-dwarf-words-37: accent-dwarf-words-replace-37 - accent-dwarf-words-38: accent-dwarf-words-replace-38 - accent-dwarf-words-39: accent-dwarf-words-replace-39 - accent-dwarf-words-40: accent-dwarf-words-replace-40 - accent-dwarf-words-41: accent-dwarf-words-replace-41 - accent-dwarf-words-42: accent-dwarf-words-replace-42 - accent-dwarf-words-43: accent-dwarf-words-replace-43 - accent-dwarf-words-44: accent-dwarf-words-replace-44 - accent-dwarf-words-45: accent-dwarf-words-replace-45 - accent-dwarf-words-46: accent-dwarf-words-replace-46 - accent-dwarf-words-47: accent-dwarf-words-replace-47 - accent-dwarf-words-48: accent-dwarf-words-replace-48 - accent-dwarf-words-49: accent-dwarf-words-replace-49 - accent-dwarf-words-50: accent-dwarf-words-replace-50 - accent-dwarf-words-51: accent-dwarf-words-replace-51 - accent-dwarf-words-52: accent-dwarf-words-replace-52 - accent-dwarf-words-53: accent-dwarf-words-replace-53 - accent-dwarf-words-54: accent-dwarf-words-replace-54 - accent-dwarf-words-55: accent-dwarf-words-replace-55 - accent-dwarf-words-56: accent-dwarf-words-replace-56 - accent-dwarf-words-57: accent-dwarf-words-replace-57 - accent-dwarf-words-58: accent-dwarf-words-replace-58 - accent-dwarf-words-59: accent-dwarf-words-replace-59 - accent-dwarf-words-60: accent-dwarf-words-replace-60 - accent-dwarf-words-61: accent-dwarf-words-replace-61 - accent-dwarf-words-62: accent-dwarf-words-replace-62 - accent-dwarf-words-63: accent-dwarf-words-replace-63 - accent-dwarf-words-64: accent-dwarf-words-replace-64 - accent-dwarf-words-65: accent-dwarf-words-replace-65 - accent-dwarf-words-66: accent-dwarf-words-replace-66 - accent-dwarf-words-67: accent-dwarf-words-replace-67 - accent-dwarf-words-68: accent-dwarf-words-replace-68 - accent-dwarf-words-69: accent-dwarf-words-replace-69 - accent-dwarf-words-70: accent-dwarf-words-replace-70 - accent-dwarf-words-71: accent-dwarf-words-replace-71 - accent-dwarf-words-72: accent-dwarf-words-replace-72 - accent-dwarf-words-73: accent-dwarf-words-replace-73 - accent-dwarf-words-74: accent-dwarf-words-replace-74 - accent-dwarf-words-75: accent-dwarf-words-replace-75 - accent-dwarf-words-76: accent-dwarf-words-replace-76 - accent-dwarf-words-77: accent-dwarf-words-replace-77 - accent-dwarf-words-78: accent-dwarf-words-replace-78 - accent-dwarf-words-79: accent-dwarf-words-replace-79 - accent-dwarf-words-80: accent-dwarf-words-replace-80 - accent-dwarf-words-81: accent-dwarf-words-replace-81 - accent-dwarf-words-82: accent-dwarf-words-replace-82 - accent-dwarf-words-83: accent-dwarf-words-replace-83 - accent-dwarf-words-84: accent-dwarf-words-replace-84 - accent-dwarf-words-85: accent-dwarf-words-replace-85 - accent-dwarf-words-86: accent-dwarf-words-replace-86 - accent-dwarf-words-87: accent-dwarf-words-replace-87 - accent-dwarf-words-88: accent-dwarf-words-replace-88 - accent-dwarf-words-89: accent-dwarf-words-replace-89 - accent-dwarf-words-90: accent-dwarf-words-replace-90 - accent-dwarf-words-91: accent-dwarf-words-replace-91 - accent-dwarf-words-92: accent-dwarf-words-replace-92 - accent-dwarf-words-93: accent-dwarf-words-replace-93 - accent-dwarf-words-94: accent-dwarf-words-replace-94 - accent-dwarf-words-95: accent-dwarf-words-replace-95 - accent-dwarf-words-96: accent-dwarf-words-replace-96 - accent-dwarf-words-97: accent-dwarf-words-replace-97 - accent-dwarf-words-98: accent-dwarf-words-replace-98 - accent-dwarf-words-99: accent-dwarf-words-replace-99 - accent-dwarf-words-100: accent-dwarf-words-replace-100 - accent-dwarf-words-101: accent-dwarf-words-replace-101 - accent-dwarf-words-102: accent-dwarf-words-replace-102 - accent-dwarf-words-103: accent-dwarf-words-replace-103 - accent-dwarf-words-104: accent-dwarf-words-replace-104 - accent-dwarf-words-105: accent-dwarf-words-replace-105 - accent-dwarf-words-106: accent-dwarf-words-replace-106 - accent-dwarf-words-107: accent-dwarf-words-replace-107 - accent-dwarf-words-108: accent-dwarf-words-replace-108 - accent-dwarf-words-109: accent-dwarf-words-replace-109 - accent-dwarf-words-110: accent-dwarf-words-replace-110 - accent-dwarf-words-111: accent-dwarf-words-replace-111 - accent-dwarf-words-112: accent-dwarf-words-replace-112 - accent-dwarf-words-113: accent-dwarf-words-replace-113 - accent-dwarf-words-114: accent-dwarf-words-replace-114 - accent-dwarf-words-115: accent-dwarf-words-replace-115 - accent-dwarf-words-116: accent-dwarf-words-replace-116 - accent-dwarf-words-117: accent-dwarf-words-replace-117 - accent-dwarf-words-118: accent-dwarf-words-replace-118 - accent-dwarf-words-119: accent-dwarf-words-replace-119 - accent-dwarf-words-120: accent-dwarf-words-replace-120 - accent-dwarf-words-121: accent-dwarf-words-replace-121 - accent-dwarf-words-122: accent-dwarf-words-replace-122 - accent-dwarf-words-123: accent-dwarf-words-replace-123 - accent-dwarf-words-124: accent-dwarf-words-replace-124 - accent-dwarf-words-125: accent-dwarf-words-replace-125 - accent-dwarf-words-126: accent-dwarf-words-replace-126 - accent-dwarf-words-127: accent-dwarf-words-replace-127 - accent-dwarf-words-128: accent-dwarf-words-replace-128 - accent-dwarf-words-129: accent-dwarf-words-replace-129 - accent-dwarf-words-130: accent-dwarf-words-replace-130 - accent-dwarf-words-131: accent-dwarf-words-replace-131 - accent-dwarf-words-132: accent-dwarf-words-replace-132 - accent-dwarf-words-133: accent-dwarf-words-replace-133 - accent-dwarf-words-134: accent-dwarf-words-replace-134 - accent-dwarf-words-135: accent-dwarf-words-replace-135 - accent-dwarf-words-136: accent-dwarf-words-replace-136 - accent-dwarf-words-137: accent-dwarf-words-replace-137 - accent-dwarf-words-138: accent-dwarf-words-replace-138 - accent-dwarf-words-139: accent-dwarf-words-replace-139 - accent-dwarf-words-140: accent-dwarf-words-replace-140 - accent-dwarf-words-141: accent-dwarf-words-replace-141 - accent-dwarf-words-142: accent-dwarf-words-replace-142 - accent-dwarf-words-143: accent-dwarf-words-replace-143 - accent-dwarf-words-144: accent-dwarf-words-replace-144 - accent-dwarf-words-145: accent-dwarf-words-replace-145 - accent-dwarf-words-146: accent-dwarf-words-replace-146 - accent-dwarf-words-147: accent-dwarf-words-replace-147 - accent-dwarf-words-148: accent-dwarf-words-replace-148 - type: accent id: pirate @@ -264,119 +60,6 @@ accent-pirate-replaced-31: accent-pirate-replacement-31 accent-pirate-replaced-32: accent-pirate-replacement-32 -- type: accent - id: cowboy - wordReplacements: - accent-cowboy-words-1: accent-cowboy-replacement-1 - accent-cowboy-words-2: accent-cowboy-replacement-2 - accent-cowboy-words-3: accent-cowboy-replacement-3 - accent-cowboy-words-4: accent-cowboy-replacement-4 - accent-cowboy-words-5: accent-cowboy-replacement-5 - accent-cowboy-words-6: accent-cowboy-replacement-6 - accent-cowboy-words-7: accent-cowboy-replacement-7 - accent-cowboy-words-8: accent-cowboy-replacement-8 - accent-cowboy-words-9: accent-cowboy-replacement-9 - accent-cowboy-words-10: accent-cowboy-replacement-10 - accent-cowboy-words-11: accent-cowboy-replacement-11 - accent-cowboy-words-12: accent-cowboy-replacement-12 - accent-cowboy-words-13: accent-cowboy-replacement-13 - accent-cowboy-words-14: accent-cowboy-replacement-14 - accent-cowboy-words-15: accent-cowboy-replacement-15 - accent-cowboy-words-16: accent-cowboy-replacement-16 - accent-cowboy-words-17: accent-cowboy-replacement-17 - accent-cowboy-words-18: accent-cowboy-replacement-18 - accent-cowboy-words-19: accent-cowboy-replacement-19 - accent-cowboy-words-20: accent-cowboy-replacement-20 - accent-cowboy-words-21: accent-cowboy-replacement-21 - accent-cowboy-words-22: accent-cowboy-replacement-22 - accent-cowboy-words-23: accent-cowboy-replacement-23 - accent-cowboy-words-24: accent-cowboy-replacement-24 - accent-cowboy-words-25: accent-cowboy-replacement-25 - accent-cowboy-words-26: accent-cowboy-replacement-26 - accent-cowboy-words-27: accent-cowboy-replacement-27 - accent-cowboy-words-28: accent-cowboy-replacement-28 - accent-cowboy-words-29: accent-cowboy-replacement-29 - accent-cowboy-words-30: accent-cowboy-replacement-30 - accent-cowboy-words-31: accent-cowboy-replacement-31 - accent-cowboy-words-32: accent-cowboy-replacement-32 - accent-cowboy-words-33: accent-cowboy-replacement-33 - accent-cowboy-words-34: accent-cowboy-replacement-34 - accent-cowboy-words-35: accent-cowboy-replacement-35 - accent-cowboy-words-36: accent-cowboy-replacement-36 - accent-cowboy-words-37: accent-cowboy-replacement-37 - accent-cowboy-words-38: accent-cowboy-replacement-38 - accent-cowboy-words-39: accent-cowboy-replacement-39 - accent-cowboy-words-40: accent-cowboy-replacement-40 - accent-cowboy-words-41: accent-cowboy-replacement-41 - accent-cowboy-words-42: accent-cowboy-replacement-42 - accent-cowboy-words-43: accent-cowboy-replacement-43 - accent-cowboy-words-44: accent-cowboy-replacement-44 - accent-cowboy-words-45: accent-cowboy-replacement-45 - accent-cowboy-words-46: accent-cowboy-replacement-46 - accent-cowboy-words-47: accent-cowboy-replacement-47 - accent-cowboy-words-48: accent-cowboy-replacement-48 - accent-cowboy-words-49: accent-cowboy-replacement-49 - accent-cowboy-words-50: accent-cowboy-replacement-50 - accent-cowboy-words-51: accent-cowboy-replacement-51 - accent-cowboy-words-52: accent-cowboy-replacement-52 - accent-cowboy-words-53: accent-cowboy-replacement-53 - accent-cowboy-words-54: accent-cowboy-replacement-54 - accent-cowboy-words-55: accent-cowboy-replacement-55 - accent-cowboy-words-56: accent-cowboy-replacement-56 - accent-cowboy-words-57: accent-cowboy-replacement-57 - accent-cowboy-words-58: accent-cowboy-replacement-58 - accent-cowboy-words-59: accent-cowboy-replacement-59 - accent-cowboy-words-60: accent-cowboy-replacement-60 - accent-cowboy-words-61: accent-cowboy-replacement-61 - accent-cowboy-words-62: accent-cowboy-replacement-62 - accent-cowboy-words-63: accent-cowboy-replacement-63 - accent-cowboy-words-64: accent-cowboy-replacement-64 - accent-cowboy-words-65: accent-cowboy-replacement-65 - accent-cowboy-words-66: accent-cowboy-replacement-66 - accent-cowboy-words-67: accent-cowboy-replacement-67 - accent-cowboy-words-68: accent-cowboy-replacement-68 - accent-cowboy-words-69: accent-cowboy-replacement-69 - accent-cowboy-words-70: accent-cowboy-replacement-70 - accent-cowboy-words-71: accent-cowboy-replacement-71 - accent-cowboy-words-72: accent-cowboy-replacement-72 - accent-cowboy-words-73: accent-cowboy-replacement-73 - accent-cowboy-words-74: accent-cowboy-replacement-74 - accent-cowboy-words-75: accent-cowboy-replacement-75 - accent-cowboy-words-76: accent-cowboy-replacement-76 - accent-cowboy-words-77: accent-cowboy-replacement-77 - accent-cowboy-words-78: accent-cowboy-replacement-78 - accent-cowboy-words-79: accent-cowboy-replacement-79 - accent-cowboy-words-80: accent-cowboy-replacement-80 - accent-cowboy-words-81: accent-cowboy-replacement-81 - accent-cowboy-words-82: accent-cowboy-replacement-82 - accent-cowboy-words-83: accent-cowboy-replacement-83 - accent-cowboy-words-84: accent-cowboy-replacement-84 - accent-cowboy-words-85: accent-cowboy-replacement-85 - accent-cowboy-words-86: accent-cowboy-replacement-86 - accent-cowboy-words-87: accent-cowboy-replacement-87 - accent-cowboy-words-88: accent-cowboy-replacement-88 - accent-cowboy-words-89: accent-cowboy-replacement-89 - accent-cowboy-words-90: accent-cowboy-replacement-90 - accent-cowboy-words-91: accent-cowboy-replacement-91 - accent-cowboy-words-92: accent-cowboy-replacement-92 - accent-cowboy-words-93: accent-cowboy-replacement-93 - accent-cowboy-words-94: accent-cowboy-replacement-94 - accent-cowboy-words-95: accent-cowboy-replacement-95 - accent-cowboy-words-96: accent-cowboy-replacement-96 - accent-cowboy-words-97: accent-cowboy-replacement-97 - accent-cowboy-words-98: accent-cowboy-replacement-98 - accent-cowboy-words-99: accent-cowboy-replacement-99 - -- type: accent - id: southern - wordReplacements: - accent-southern-words-1: accent-southern-words-replace-1 - accent-southern-words-2: accent-southern-words-replace-2 - accent-southern-words-3: accent-southern-words-replace-3 - accent-southern-words-4: accent-southern-words-replace-4 - accent-southern-words-5: accent-southern-words-replace-5 - accent-southern-words-6: accent-southern-words-replace-6 - # For the chat sanitization system - type: accent id: chatsanitize @@ -505,85 +188,6 @@ liar-word-38: liar-word-replacement-38 liar-word-39: liar-word-replacement-39 -- type: accent - id: german - wordReplacements: - accent-german-words-1: accent-german-words-replace-1 - accent-german-words-1-2: accent-german-words-replace-1 - accent-german-words-2: accent-german-words-replace-2 - accent-german-words-3: accent-german-words-replace-3 - accent-german-words-4: accent-german-words-replace-4 - accent-german-words-5: accent-german-words-replace-5 - accent-german-words-6: accent-german-words-replace-6 - accent-german-words-7: accent-german-words-replace-7 - accent-german-words-8: accent-german-words-replace-8 - accent-german-words-9: accent-german-words-replace-9 - accent-german-words-9-2: accent-german-words-replace-9 - accent-german-words-10: accent-german-words-replace-10 - accent-german-words-10-2: accent-german-words-replace-10 - accent-german-words-11: accent-german-words-replace-11 - accent-german-words-12: accent-german-words-replace-12 - accent-german-words-13: accent-german-words-replace-13 - accent-german-words-14: accent-german-words-replace-14 - accent-german-words-15: accent-german-words-replace-15 - accent-german-words-16: accent-german-words-replace-16 - accent-german-words-17: accent-german-words-replace-17 - accent-german-words-18: accent-german-words-replace-18 - accent-german-words-19: accent-german-words-replace-19 - accent-german-words-20: accent-german-words-replace-20 - accent-german-words-21: accent-german-words-replace-21 - accent-german-words-22: accent-german-words-replace-22 - accent-german-words-23: accent-german-words-replace-23 - accent-german-words-24: accent-german-words-replace-24 - accent-german-words-25: accent-german-words-replace-25 - accent-german-words-26: accent-german-words-replace-26 - accent-german-words-27: accent-german-words-replace-27 - accent-german-words-28: accent-german-words-replace-28 - accent-german-words-29: accent-german-words-replace-29 - accent-german-words-30: accent-german-words-replace-30 - accent-german-words-31: accent-german-words-replace-31 - accent-german-words-32: accent-german-words-replace-32 - accent-german-words-32-2: accent-german-words-replace-32 - accent-german-words-33: accent-german-words-replace-33 - accent-german-words-34: accent-german-words-replace-34 - accent-german-words-35: accent-german-words-replace-35 - accent-german-words-36: accent-german-words-replace-36 - accent-german-words-37: accent-german-words-replace-37 - accent-german-words-38: accent-german-words-replace-38 - accent-german-words-38-2: accent-german-words-replace-38 - accent-german-words-39: accent-german-words-replace-39 - accent-german-words-40: accent-german-words-replace-40 - accent-german-words-41: accent-german-words-replace-41 - accent-german-words-42: accent-german-words-replace-42 - accent-german-words-43: accent-german-words-replace-43 - accent-german-words-44: accent-german-words-replace-44 - accent-german-words-45: accent-german-words-replace-45 - accent-german-words-46: accent-german-words-replace-46 - accent-german-words-47: accent-german-words-replace-47 - accent-german-words-47-2: accent-german-words-replace-47 - accent-german-words-48: accent-german-words-replace-48 - accent-german-words-49: accent-german-words-replace-49 - accent-german-words-50: accent-german-words-replace-50 - accent-german-words-51: accent-german-words-replace-51 - accent-german-words-52: accent-german-words-replace-52 - accent-german-words-53: accent-german-words-replace-53 - accent-german-words-53-2: accent-german-words-replace-53 - accent-german-words-54: accent-german-words-replace-54 - accent-german-words-55: accent-german-words-replace-55 - accent-german-words-56: accent-german-words-replace-56 - accent-german-words-56-2: accent-german-words-replace-56 - accent-german-words-56-3: accent-german-words-replace-56 - accent-german-words-57: accent-german-words-replace-57 - accent-german-words-57-2: accent-german-words-replace-57 - accent-german-words-58: accent-german-words-replace-58 - accent-german-words-59: accent-german-words-replace-59 - accent-german-words-60: accent-german-words-replace-60 - accent-german-words-61: accent-german-words-replace-61 - accent-german-words-61-2: accent-german-words-replace-61 - accent-german-words-61-3: accent-german-words-replace-61 - accent-german-words-61-4: accent-german-words-replace-61 - accent-german-words-62: accent-german-words-replace-62 - - type: accent id: russian wordReplacements: diff --git a/Resources/Prototypes/Body/Species/dwarf.yml b/Resources/Prototypes/Body/Species/dwarf.yml index 1e99b9460ff..648b47fbfc0 100644 --- a/Resources/Prototypes/Body/Species/dwarf.yml +++ b/Resources/Prototypes/Body/Species/dwarf.yml @@ -62,8 +62,6 @@ Male: UnisexDwarf Female: FemaleDwarf Unsexed: UnisexDwarf - - type: ReplacementAccent - accent: dwarf - type: Speech speechSounds: Bass diff --git a/Resources/Prototypes/Entities/Clothing/Head/hats.yml b/Resources/Prototypes/Entities/Clothing/Head/hats.yml index 23f5f32948d..01dfd528a4c 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hats.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hats.yml @@ -1323,9 +1323,6 @@ sprite: Clothing/Head/Hats/cowboyhatbrown.rsi - type: Clothing sprite: Clothing/Head/Hats/cowboyhatbrown.rsi - - type: AddAccentClothing - accent: ReplacementAccent - replacement: cowboy - type: Tag tags: - PetWearable diff --git a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml index 87744b4d911..1dafaf4f926 100644 --- a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml +++ b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml @@ -710,9 +710,6 @@ sprite: Clothing/Mask/italian_moustache.rsi - type: Item storedRotation: -90 - - type: AddAccentClothing - accent: ReplacementAccent - replacement: italian - type: entity parent: ClothingMaskBase diff --git a/Resources/Prototypes/Entities/Objects/Devices/pda.yml b/Resources/Prototypes/Entities/Objects/Devices/pda.yml index 3811fa9e8e0..79beb70551c 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/pda.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/pda.yml @@ -296,8 +296,6 @@ borderColor: "#d7d7d0" - type: Icon state: pda-cook - - type: ReplacementAccent # for random sentience event - accent: italian - type: entity parent: BasePDA diff --git a/Resources/Prototypes/Traits/speech.yml b/Resources/Prototypes/Traits/speech.yml index 976d345a6d7..21152f4565b 100644 --- a/Resources/Prototypes/Traits/speech.yml +++ b/Resources/Prototypes/Traits/speech.yml @@ -13,39 +13,9 @@ removes: - type: LizardAccent - type: MothAccent - - type: ReplacementAccent - accent: dwarf # 1 Cost -- type: trait - id: SouthernAccent - name: trait-southern-name - description: trait-southern-desc - category: SpeechTraits - cost: 1 - components: - - type: SouthernAccent - -- type: trait - id: PirateAccent - name: trait-pirate-accent-name - description: trait-pirate-accent-desc - category: SpeechTraits - cost: 1 - components: - - type: PirateAccent - -- type: trait - id: CowboyAccent - name: trait-cowboy-name - description: trait-cowboy-desc - category: SpeechTraits - cost: 1 - components: - - type: ReplacementAccent - accent: cowboy - - type: trait id: GermanAccent name: trait-german-name @@ -55,16 +25,6 @@ components: - type: GermanAccent -- type: trait - id: ItalianAccent - name: trait-italian-name - description: trait-italian-desc - category: SpeechTraits - cost: 1 - components: - - type: ReplacementAccent - accent: italian - - type: trait id: FrenchAccent name: trait-french-name From 5ae67c9cab889e33f3dc7c84a984e25a27f3a626 Mon Sep 17 00:00:00 2001 From: PJBot Date: Thu, 12 Feb 2026 14:43:43 +0000 Subject: [PATCH 328/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 3ff9eb44f1d..7e077c90cae 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: SignalSender - changes: - - message: reworked salv instrument spawns to include more instruments - type: Tweak - id: 9012 - time: '2025-09-27T20:51:52.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40572 - author: keronshb changes: - message: 'EXPERIMENTAL: Tasers, a short-ranged gun capable of causing targets @@ -3993,3 +3986,10 @@ id: 9518 time: '2026-02-11T22:31:43.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42868 +- author: PJB3005 + changes: + - message: Nerfed and removed many boring word replacement accents. + type: Remove + id: 9519 + time: '2026-02-12T14:42:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42880 From d96c90a27c434e368d27be88ceffb33054bc3992 Mon Sep 17 00:00:00 2001 From: Dmitry <57028746+DIMMoon1@users.noreply.github.com> Date: Fri, 13 Feb 2026 00:17:14 +0700 Subject: [PATCH 329/603] Corvax-Sponsors breaking it down in a test :D --- Content.Client/Humanoid/OrganMarkingPicker.xaml.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Content.Client/Humanoid/OrganMarkingPicker.xaml.cs b/Content.Client/Humanoid/OrganMarkingPicker.xaml.cs index 82e4c621ccc..9b821c4aa2c 100644 --- a/Content.Client/Humanoid/OrganMarkingPicker.xaml.cs +++ b/Content.Client/Humanoid/OrganMarkingPicker.xaml.cs @@ -72,13 +72,13 @@ private void UpdateMarkings() _markingsModel.EnforceGroupAndSexRestrictions ? _marking.MarkingsByLayerAndGroupAndSex(layer, _group, organProfileData.Sex) : _marking.MarkingsByLayer(layer); // Corvax-Sponsors-Start - if (_sponsorsManager != null) + /*if (_sponsorsManager != null) { var sponsorPrototypes = _sponsorsManager.GetClientPrototypes(); allMarkings = allMarkings .Where(m => !m.Value.SponsorOnly || sponsorPrototypes.Contains(m.Key)) .ToDictionary(m => m.Key, m => m.Value); - } + }*/ // Corvax-Sponsors-End if (allMarkings.Count == 0) From fe4397e340e8c9ffa07f5ef4a275c0b9672b9b35 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Fri, 13 Feb 2026 01:31:33 +0100 Subject: [PATCH 330/603] Remove dwarves (#42882) * Remove dwarves Literally species test content that is so un-unique it doesn't pass the bar * Add migration --- .../en-US/metabolism/metabolizer-types.ftl | 1 - Resources/Locale/en-US/species/species.ftl | 1 - .../Prototypes/Accents/word_replacements.yml | 1 - Resources/Prototypes/Body/Species/dwarf.yml | 94 ------------------- .../Chemistry/metabolizer_types.yml | 4 - Resources/Prototypes/Guidebook/species.yml | 6 -- .../Loadouts/Miscellaneous/survival.yml | 2 - .../Reagents/Consumable/Drink/alcohol.yml | 44 --------- Resources/Prototypes/Species/dwarf.yml | 7 -- .../Prototypes/Species/species_weights.yml | 1 - .../Prototypes/Voice/speech_emote_sounds.yml | 86 ----------------- Resources/ServerInfo/Guidebook/Mobs/Dwarf.xml | 11 --- .../ServerInfo/Guidebook/Mobs/Species.xml | 1 - .../NewPlayer/YourFirstCharacter.xml | 2 +- .../CoreRules/RuleC13CharacterNames.xml | 4 - Resources/migration.yml | 6 ++ 16 files changed, 7 insertions(+), 264 deletions(-) delete mode 100644 Resources/Prototypes/Body/Species/dwarf.yml delete mode 100644 Resources/Prototypes/Species/dwarf.yml delete mode 100644 Resources/ServerInfo/Guidebook/Mobs/Dwarf.xml diff --git a/Resources/Locale/en-US/metabolism/metabolizer-types.ftl b/Resources/Locale/en-US/metabolism/metabolizer-types.ftl index 372c5c549e0..5fb354cceb3 100644 --- a/Resources/Locale/en-US/metabolism/metabolizer-types.ftl +++ b/Resources/Locale/en-US/metabolism/metabolizer-types.ftl @@ -6,6 +6,5 @@ metabolizer-type-slime = Slime metabolizer-type-vox = Vox metabolizer-type-rat = Rat metabolizer-type-plant = Plant -metabolizer-type-dwarf = Dwarf metabolizer-type-moth = Moth metabolizer-type-arachnid = Arachnid diff --git a/Resources/Locale/en-US/species/species.ftl b/Resources/Locale/en-US/species/species.ftl index 8c0900bb215..f287c6f88b2 100644 --- a/Resources/Locale/en-US/species/species.ftl +++ b/Resources/Locale/en-US/species/species.ftl @@ -1,7 +1,6 @@ ## Species Names species-name-human = Human -species-name-dwarf = Dwarf species-name-reptilian = Reptilian species-name-slime = Slime Person species-name-diona = Diona diff --git a/Resources/Prototypes/Accents/word_replacements.yml b/Resources/Prototypes/Accents/word_replacements.yml index cefaf61060c..66a57e0cab0 100644 --- a/Resources/Prototypes/Accents/word_replacements.yml +++ b/Resources/Prototypes/Accents/word_replacements.yml @@ -23,7 +23,6 @@ accent-mobster-words-16: accent-mobster-words-replace-16 accent-mobster-words-17: accent-mobster-words-replace-17 - - type: accent id: pirate wordReplacements: diff --git a/Resources/Prototypes/Body/Species/dwarf.yml b/Resources/Prototypes/Body/Species/dwarf.yml deleted file mode 100644 index 648b47fbfc0..00000000000 --- a/Resources/Prototypes/Body/Species/dwarf.yml +++ /dev/null @@ -1,94 +0,0 @@ -- type: entity - parent: AppearanceHuman - id: AppearanceDwarf - name: dwarf appearance - components: - - type: Inventory - femaleDisplacements: - jumpsuit: - sizeMaps: - 32: - sprite: Mobs/Species/Human/displacement.rsi - state: jumpsuit-female - - type: InitialBody - organs: - Torso: OrganHumanTorso - Head: OrganHumanHead - ArmLeft: OrganHumanArmLeft - ArmRight: OrganHumanArmRight - HandRight: OrganHumanHandRight - HandLeft: OrganHumanHandLeft - LegLeft: OrganHumanLegLeft - LegRight: OrganHumanLegRight - FootLeft: OrganHumanFootLeft - FootRight: OrganHumanFootRight - Brain: OrganHumanBrain - Eyes: OrganHumanEyes - Tongue: OrganHumanTongue - Appendix: OrganHumanAppendix - Ears: OrganHumanEars - Lungs: OrganHumanLungs - Heart: OrganDwarfHeart - Stomach: OrganDwarfStomach - Liver: OrganDwarfLiver - Kidneys: OrganHumanKidneys - - type: HumanoidProfile - species: Dwarf - - type: ScaleVisuals - scale: 1, 0.8 - -- type: entity - parent: - - AppearanceDwarf - - MobHuman - id: MobDwarf - name: Urist McHands the Dwarf - components: - - type: Fixtures - fixtures: # TODO: This needs a second fixture just for mob collisions. - fix1: - shape: - !type:PhysShapeCircle - radius: 0.35 - # they r smaller - density: 120 - restitution: 0.0 - mask: - - MobMask - layer: - - MobLayer - - type: Vocal - sounds: - Male: UnisexDwarf - Female: FemaleDwarf - Unsexed: UnisexDwarf - - type: Speech - speechSounds: Bass - -- type: entity - parent: OrganBase - id: OrganDwarf - abstract: true - suffix: Dwarf - -- type: entity - id: OrganDwarfMetabolizer - abstract: true - components: - - type: Metabolizer - metabolizerTypes: [ Dwarf ] - -- type: entity - parent: [ OrganDwarfMetabolizer, OrganHumanStomach ] - id: OrganDwarfStomach - components: - - type: Metabolizer - maxReagents: 5 - -- type: entity - parent: [ OrganDwarfMetabolizer, OrganHumanLiver ] - id: OrganDwarfLiver - -- type: entity - parent: [ OrganDwarfMetabolizer, OrganHumanHeart ] - id: OrganDwarfHeart diff --git a/Resources/Prototypes/Chemistry/metabolizer_types.yml b/Resources/Prototypes/Chemistry/metabolizer_types.yml index 3f7bf05b35e..c31db23f71e 100644 --- a/Resources/Prototypes/Chemistry/metabolizer_types.yml +++ b/Resources/Prototypes/Chemistry/metabolizer_types.yml @@ -33,10 +33,6 @@ id: Plant name: metabolizer-type-plant -- type: metabolizerType - id: Dwarf - name: metabolizer-type-dwarf - - type: metabolizerType id: Moth name: metabolizer-type-moth diff --git a/Resources/Prototypes/Guidebook/species.yml b/Resources/Prototypes/Guidebook/species.yml index 9783b23285d..dbdd362dc8f 100644 --- a/Resources/Prototypes/Guidebook/species.yml +++ b/Resources/Prototypes/Guidebook/species.yml @@ -5,7 +5,6 @@ children: - Arachnid - Diona - - Dwarf - Human - Moth - Reptilian @@ -23,11 +22,6 @@ name: species-name-diona text: "/ServerInfo/Guidebook/Mobs/Diona.xml" -- type: guideEntry - id: Dwarf - name: species-name-dwarf - text: "/ServerInfo/Guidebook/Mobs/Dwarf.xml" - - type: guideEntry id: Human name: species-name-human diff --git a/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml b/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml index 7ba7c01103f..1e71c07ef03 100644 --- a/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml +++ b/Resources/Prototypes/Loadouts/Miscellaneous/survival.yml @@ -14,7 +14,6 @@ species: - Arachnid - Diona - - Dwarf - Human - Moth - Reptilian @@ -73,7 +72,6 @@ species: - Arachnid - Diona - - Dwarf - Human - Reptilian - Vulpkanin diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml index 538a83e2c23..bf82bd911e9 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml @@ -150,43 +150,15 @@ - !type:ReagentCondition reagent: Ethanol min: 15 - - !type:MetabolizerTypeCondition - type: [ Dwarf ] - inverted: true damage: types: Poison: 0.1 - # dwarves take less toxin damage and heal a marginal amount of brute - - !type:HealthChange - conditions: - - !type:ReagentCondition - reagent: Ethanol - min: 15 - - !type:MetabolizerTypeCondition - type: [ Dwarf ] - damage: - types: - Poison: 0.02 - - !type:HealthChange - conditions: - - !type:ReagentCondition - reagent: Ethanol - min: 15 - - !type:MetabolizerTypeCondition - type: [ Dwarf ] - damage: - groups: - Brute: -0.1 - !type:Vomit probability: 0.04 conditions: - !type:ReagentCondition reagent: Ethanol min: 12 - # dwarves immune to vomiting from alcohol - - !type:MetabolizerTypeCondition - type: [ Dwarf ] - inverted: true - !type:Drunk boozePower: 2 @@ -2272,28 +2244,12 @@ - !type:ReagentCondition reagent: BacchusBlessing min: 6 - - !type:MetabolizerTypeCondition - type: [Dwarf] - inverted: true damage: types: Poison: 0.2 # TODO: Figure out poison amount. Ethanol does 0.1, this does 0.2 but also metabolises almost 3 to 4 times as fast as ethanol. This would be more Liver damage when that time arrives. - - !type:HealthChange - conditions: - - !type:ReagentCondition - reagent: BacchusBlessing - min: 6 - - !type:MetabolizerTypeCondition - type: [Dwarf] - damage: - types: - Poison: 0.04 # TODO: Might increase this, even though it's just double of ethanol from 0.02 to 0.04 - !type:Vomit probability: 0.1 #TODO: Tweak vomit probability, maybe make this more violent and poisonous but the body aggressively purges it... conditions: - !type:ReagentCondition reagent: BacchusBlessing min: 8 - - !type:MetabolizerTypeCondition - type: [Dwarf] - inverted: true diff --git a/Resources/Prototypes/Species/dwarf.yml b/Resources/Prototypes/Species/dwarf.yml deleted file mode 100644 index 0c2fbaf8b63..00000000000 --- a/Resources/Prototypes/Species/dwarf.yml +++ /dev/null @@ -1,7 +0,0 @@ -- type: species - id: Dwarf - name: species-name-dwarf - roundStart: true - prototype: MobDwarf - dollPrototype: AppearanceDwarf - skinColoration: HumanToned diff --git a/Resources/Prototypes/Species/species_weights.yml b/Resources/Prototypes/Species/species_weights.yml index a516795ffb6..cd5e7da2b5d 100644 --- a/Resources/Prototypes/Species/species_weights.yml +++ b/Resources/Prototypes/Species/species_weights.yml @@ -6,7 +6,6 @@ Reptilian: 4 SlimePerson: 4 Moth: 4 - Dwarf: 2 Diona: 2 Vox: 1 Vulpkanin: 4 diff --git a/Resources/Prototypes/Voice/speech_emote_sounds.yml b/Resources/Prototypes/Voice/speech_emote_sounds.yml index 3965e37b8cc..0fc45a4ff75 100644 --- a/Resources/Prototypes/Voice/speech_emote_sounds.yml +++ b/Resources/Prototypes/Voice/speech_emote_sounds.yml @@ -292,92 +292,6 @@ DefaultDeathgasp: collection: DeathGasp -- type: emoteSounds - id: UnisexDwarf - sounds: - Scream: - collection: MaleScreams - Laugh: - collection: MaleLaugh - Sneeze: - collection: MaleSneezes - Cough: - collection: MaleCoughs - CatMeow: - collection: CatMeows - CatHisses: - collection: CatHisses - MonkeyScreeches: - collection: MonkeyScreeches - RobotBeep: - collection: RobotBeeps - Yawn: - collection: MaleYawn - Snore: - collection: Snores - Sigh: - collection: MaleSigh - Honk: - collection: BikeHorn - Crying: - collection: MaleCry - Whistle: - collection: Whistles - Weh: - collection: Weh - Hew: - collection: Hew - Gasp: - collection: MaleGasp - DefaultDeathgasp: - collection: MaleDeathGasp - params: - variation: 0.125 - pitch: 0.75 - -- type: emoteSounds - id: FemaleDwarf - sounds: - Scream: - collection: FemaleScreams - Laugh: - collection: FemaleLaugh - Sneeze: - collection: FemaleSneezes - Cough: - collection: FemaleCoughs - CatMeow: - collection: CatMeows - CatHisses: - collection: CatHisses - MonkeyScreeches: - collection: MonkeyScreeches - RobotBeep: - collection: RobotBeeps - Yawn: - collection: FemaleYawn - Snore: - collection: Snores - Sigh: - collection: FemaleSigh - Honk: - collection: BikeHorn - Crying: - collection: FemaleCry - Whistle: - collection: Whistles - Weh: - collection: Weh - Hew: - collection: Hew - Gasp: - collection: FemaleGasp - DefaultDeathgasp: - collection: FemaleDeathGasp - params: - variation: 0.125 - pitch: 0.75 - - type: emoteSounds id: UnisexMoth params: diff --git a/Resources/ServerInfo/Guidebook/Mobs/Dwarf.xml b/Resources/ServerInfo/Guidebook/Mobs/Dwarf.xml deleted file mode 100644 index e5ac42c8207..00000000000 --- a/Resources/ServerInfo/Guidebook/Mobs/Dwarf.xml +++ /dev/null @@ -1,11 +0,0 @@ - - # Dwarves - - - - - - Dwarves are similar to humans in most respect, but tolerate alcohol better and are healed by it. - - - diff --git a/Resources/ServerInfo/Guidebook/Mobs/Species.xml b/Resources/ServerInfo/Guidebook/Mobs/Species.xml index a10b5fc4af9..45b21171806 100644 --- a/Resources/ServerInfo/Guidebook/Mobs/Species.xml +++ b/Resources/ServerInfo/Guidebook/Mobs/Species.xml @@ -6,7 +6,6 @@ - diff --git a/Resources/ServerInfo/Guidebook/NewPlayer/YourFirstCharacter.xml b/Resources/ServerInfo/Guidebook/NewPlayer/YourFirstCharacter.xml index 87f83fea0c0..b3cd5118843 100644 --- a/Resources/ServerInfo/Guidebook/NewPlayer/YourFirstCharacter.xml +++ b/Resources/ServerInfo/Guidebook/NewPlayer/YourFirstCharacter.xml @@ -10,7 +10,7 @@ If you'd like to be [color=#a4885c]methodical[/color], though, creating a charac ## Choosing a Species Most species have minor differences, which you can read about under the [color=#a4885c]Species[/color] entry. -However, you may find that it's easier to make your first character as a human, moth, dwarf or reptilian. +However, you may find that it's easier to make your first character as a human, moth, or reptilian. This shouldn't discourage you from getting creative with your character, though. diff --git a/Resources/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC13CharacterNames.xml b/Resources/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC13CharacterNames.xml index 97880466d44..47155cdc731 100644 --- a/Resources/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC13CharacterNames.xml +++ b/Resources/ServerInfo/Guidebook/ServerRules/CoreRules/RuleC13CharacterNames.xml @@ -24,10 +24,6 @@ - [color=#994444]Bad:[/color] Ben Dover - [color=#994444]Bad:[/color] Mike Hunt - Dwarfs typically use the human convention in a viking theme. - - [color=#449944]Acceptable:[/color] Ingrid Firebreath - - [color=#449944]Acceptable:[/color] Erik Lightningclaw - Lizards typically use the Verb-article-Noun convention. - [color=#449944]Acceptable:[/color] Cleans-the-Airlocks - [color=#994444]Bad:[/color] Bans-the-Admins diff --git a/Resources/migration.yml b/Resources/migration.yml index 71959fec08d..e4623a0dbf1 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -804,3 +804,9 @@ TowelColorYellow: null TowelColorMaroon: null TowelColorSilver: null TowelColorMime: null + +# 2026-02-11 +MobDwarf: MobHuman +OrganDwarfHeart: OrganHumanHeart +OrganDwarfStomach: OrganHumanStomach +OrganDwarfLiver: OrganHumanLiver From 1d13dbfc4c86380b230a6542971bf253dede54c7 Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 13 Feb 2026 00:32:45 +0000 Subject: [PATCH 331/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 7e077c90cae..bcf8f67ed4d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: keronshb - changes: - - message: 'EXPERIMENTAL: Tasers, a short-ranged gun capable of causing targets - to become prone, are now added into Warden, HoS, and Security locker fills.' - type: Add - id: 9013 - time: '2025-09-27T21:21:05.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/39087 - author: SurrealShibe changes: - message: Vulpkanin now audibly gasp. @@ -3993,3 +3985,10 @@ id: 9519 time: '2026-02-12T14:42:35.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42880 +- author: PJB3005 + changes: + - message: Dwarves have been removed. + type: Remove + id: 9520 + time: '2026-02-13T00:31:33.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42882 From ffe93b0b24e763b6430d3cb272c42d49a21fdeb4 Mon Sep 17 00:00:00 2001 From: Leah Date: Fri, 13 Feb 2026 06:09:04 +0100 Subject: [PATCH 332/603] Fix chameleon controller not updating fake mindshield action icon (#42900) fix chameleon controller not updating fake mindshield action icon --- Content.Shared/Mindshield/FakeMindShield/FakeMindshieldSystem.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Content.Shared/Mindshield/FakeMindShield/FakeMindshieldSystem.cs b/Content.Shared/Mindshield/FakeMindShield/FakeMindshieldSystem.cs index 4d7d457321f..276256c8eaf 100644 --- a/Content.Shared/Mindshield/FakeMindShield/FakeMindshieldSystem.cs +++ b/Content.Shared/Mindshield/FakeMindShield/FakeMindshieldSystem.cs @@ -58,6 +58,7 @@ private void OnChameleonControllerOutfitSelected(EntityUid uid, FakeMindShieldCo continue; component.IsEnabled = args.ChameleonOutfit.HasMindShield; + _actions.SetToggled(action, args.ChameleonOutfit.HasMindShield); Dirty(uid, component); if (actionComp.UseDelay != null) From cb065fa8db6ec0175104941c8425de9a0d5282b5 Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 13 Feb 2026 05:26:13 +0000 Subject: [PATCH 333/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index bcf8f67ed4d..545b02d4187 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: SurrealShibe - changes: - - message: Vulpkanin now audibly gasp. - type: Fix - id: 9014 - time: '2025-09-28T03:25:39.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40579 - author: keronshb changes: - message: Tasers can now be used by Pacifists. @@ -3992,3 +3985,11 @@ id: 9520 time: '2026-02-13T00:31:33.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42882 +- author: bnuuy + changes: + - message: The fake mindshield action button now correctly shows your mindshield + status when using the chameleon controller. + type: Fix + id: 9521 + time: '2026-02-13T05:25:04.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42900 From 1cc21d9d362fba582cd1ef4daa8b86780b528349 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Fri, 13 Feb 2026 00:47:13 -0800 Subject: [PATCH 334/603] Fix Flares dying after 10 seconds. (#42765) asdas Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- Content.Client/Light/EntitySystems/LightBehaviorSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Client/Light/EntitySystems/LightBehaviorSystem.cs b/Content.Client/Light/EntitySystems/LightBehaviorSystem.cs index b91062b60b4..3e5c1dc0695 100644 --- a/Content.Client/Light/EntitySystems/LightBehaviorSystem.cs +++ b/Content.Client/Light/EntitySystems/LightBehaviorSystem.cs @@ -40,7 +40,7 @@ private void OnBehaviorAnimationCompleted(EntityUid uid, LightBehaviourComponent } else { - StopLightBehaviour((uid, component), container.LightBehaviour.ID, resetToOriginalSettings: true); + StopLightBehaviour((uid, component), container.LightBehaviour.ID); } } From e16ae0e76c54c27b4c27119891ca6d3e479e6332 Mon Sep 17 00:00:00 2001 From: Tobias Berger Date: Fri, 13 Feb 2026 09:16:03 +0000 Subject: [PATCH 335/603] Typo fix (#41652) --- Content.Shared/Roles/SharedRoleSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/Roles/SharedRoleSystem.cs b/Content.Shared/Roles/SharedRoleSystem.cs index e85d4d86d84..47db09ebdb3 100644 --- a/Content.Shared/Roles/SharedRoleSystem.cs +++ b/Content.Shared/Roles/SharedRoleSystem.cs @@ -684,7 +684,7 @@ public void MindPlaySound(EntityUid mindId, SoundSpecifier? sound, MindComponent /// public HashSet? GetRoleRequirements(AntagPrototype antag) { - if (_requirementOverride != null && _requirementOverride.Jobs.TryGetValue(antag.ID, out var req)) + if (_requirementOverride != null && _requirementOverride.Antags.TryGetValue(antag.ID, out var req)) return req; return antag.Requirements; From 0e86bd45bd422e910b0ed134488ba0fa85782418 Mon Sep 17 00:00:00 2001 From: Leah Date: Fri, 13 Feb 2026 22:42:16 +0100 Subject: [PATCH 336/603] Identity Mask now updates equipped Agent ID name (#42772) * add identity mask updating agent id functionality * fix indentation * add check for voice mask item * use ChangeIDName field instead * Minor cleanup * remove trycomp --------- Co-authored-by: beck-thompson --- Content.Server/Access/Systems/AgentIDCardSystem.cs | 14 ++++++++++++++ Content.Server/PDA/PdaSystem.cs | 6 ++++-- Content.Shared/Inventory/InventorySystem.Relay.cs | 2 ++ .../VoiceMask/VoiceMaskComponent.cs | 8 +++++++- Content.Shared/VoiceMask/VoiceMaskSetNameEvent.cs | 8 ++++++-- .../Entities/Objects/Misc/subdermal_implants.yml | 1 + 6 files changed, 34 insertions(+), 5 deletions(-) rename {Content.Server => Content.Shared}/VoiceMask/VoiceMaskComponent.cs (90%) diff --git a/Content.Server/Access/Systems/AgentIDCardSystem.cs b/Content.Server/Access/Systems/AgentIDCardSystem.cs index 1eb050dd2ae..0586c33adae 100644 --- a/Content.Server/Access/Systems/AgentIDCardSystem.cs +++ b/Content.Server/Access/Systems/AgentIDCardSystem.cs @@ -11,10 +11,12 @@ using System.Diagnostics.CodeAnalysis; using Content.Server.Clothing.Systems; using Content.Server.Implants; +using Content.Server.VoiceMask; using Content.Shared.Implants; using Content.Shared.Inventory; using Content.Shared.Lock; using Content.Shared.PDA; +using Content.Shared.VoiceMask; namespace Content.Server.Access.Systems { @@ -39,6 +41,7 @@ public override void Initialize() SubscribeLocalEvent(OnJobChanged); SubscribeLocalEvent(OnJobIconChanged); SubscribeLocalEvent>(OnChameleonControllerOutfitChangedItem); + SubscribeLocalEvent>(OnVoiceMaskNameChanged); } private void OnChameleonControllerOutfitChangedItem(Entity ent, ref InventoryRelayedEvent args) @@ -80,6 +83,17 @@ private void OnChameleonControllerOutfitChangedItem(Entity _chameleon.SetSelectedPrototype(ent, comp.IdCard); } + private void OnVoiceMaskNameChanged(Entity ent, ref InventoryRelayedEvent args) + { + if (!TryComp(ent, out var idCard)) + return; + + if (!args.Args.VoiceMask.Comp.ChangeIDName) + return; + + _cardSystem.TryChangeFullName(ent, args.Args.NewName, idCard); + } + private void OnAfterInteract(EntityUid uid, AgentIDCardComponent component, AfterInteractEvent args) { if (args.Target == null || !args.CanReach || _lock.IsLocked(uid) || diff --git a/Content.Server/PDA/PdaSystem.cs b/Content.Server/PDA/PdaSystem.cs index 282290e4694..9122c969645 100644 --- a/Content.Server/PDA/PdaSystem.cs +++ b/Content.Server/PDA/PdaSystem.cs @@ -17,6 +17,7 @@ using Content.Shared.Light.EntitySystems; using Content.Shared.PDA; using Content.Shared.PDA.Ringer; +using Content.Shared.VoiceMask; using Robust.Server.Containers; using Robust.Server.GameObjects; using Robust.Shared.Containers; @@ -58,10 +59,11 @@ public override void Initialize() SubscribeLocalEvent(OnStationRenamed); SubscribeLocalEvent(OnEntityRenamed, after: new[] { typeof(IdCardSystem) }); SubscribeLocalEvent(OnAlertLevelChanged); - SubscribeLocalEvent>(ChameleonControllerOutfitItemSelected); + SubscribeLocalEvent>(OnRelayedEventToIdCard); + SubscribeLocalEvent>(OnRelayedEventToIdCard); } - private void ChameleonControllerOutfitItemSelected(Entity ent, ref InventoryRelayedEvent args) + private void OnRelayedEventToIdCard(Entity ent, ref InventoryRelayedEvent args) { // Relay it to your ID so it can update as well. if (ent.Comp.ContainedId != null) diff --git a/Content.Shared/Inventory/InventorySystem.Relay.cs b/Content.Shared/Inventory/InventorySystem.Relay.cs index ce8a6b1f508..8101c19eab5 100644 --- a/Content.Shared/Inventory/InventorySystem.Relay.cs +++ b/Content.Shared/Inventory/InventorySystem.Relay.cs @@ -27,6 +27,7 @@ using Content.Shared.Strip.Components; using Content.Shared.Temperature; using Content.Shared.Verbs; +using Content.Shared.VoiceMask; using Content.Shared.Weapons.Ranged.Events; using Content.Shared.Wieldable; using Content.Shared.Zombies; @@ -57,6 +58,7 @@ public void InitializeRelay() SubscribeLocalEvent(RelayInventoryEvent); SubscribeLocalEvent(RelayInventoryEvent); SubscribeLocalEvent(RelayInventoryEvent); + SubscribeLocalEvent(RelayInventoryEvent); SubscribeLocalEvent(RelayInventoryEvent); SubscribeLocalEvent(RelayInventoryEvent); SubscribeLocalEvent(RelayInventoryEvent); diff --git a/Content.Server/VoiceMask/VoiceMaskComponent.cs b/Content.Shared/VoiceMask/VoiceMaskComponent.cs similarity index 90% rename from Content.Server/VoiceMask/VoiceMaskComponent.cs rename to Content.Shared/VoiceMask/VoiceMaskComponent.cs index 042b78a8591..b53a6150947 100644 --- a/Content.Server/VoiceMask/VoiceMaskComponent.cs +++ b/Content.Shared/VoiceMask/VoiceMaskComponent.cs @@ -1,7 +1,7 @@ using Content.Shared.Speech; using Robust.Shared.Prototypes; -namespace Content.Server.VoiceMask; +namespace Content.Shared.VoiceMask; /// /// This component is for voice mask items! Adding this component to clothing will give the the voice mask UI @@ -55,5 +55,11 @@ public sealed partial class VoiceMaskComponent : Component /// [DataField] public bool AccentHide = true; + + /// + /// If user's equipped agent id name is getting changed. + /// + [DataField] + public bool ChangeIDName = false; } diff --git a/Content.Shared/VoiceMask/VoiceMaskSetNameEvent.cs b/Content.Shared/VoiceMask/VoiceMaskSetNameEvent.cs index caeb8429318..3d03a429d7b 100644 --- a/Content.Shared/VoiceMask/VoiceMaskSetNameEvent.cs +++ b/Content.Shared/VoiceMask/VoiceMaskSetNameEvent.cs @@ -1,4 +1,5 @@ using Content.Shared.Actions; +using Content.Shared.Inventory; namespace Content.Shared.VoiceMask; @@ -9,8 +10,11 @@ public sealed partial class VoiceMaskSetNameEvent : InstantActionEvent /// /// Raised on an entity when their voice masks name is updated /// -/// Uid of the voice mask +/// VoiceMask component /// The old name /// The new name [ByRefEvent] -public readonly record struct VoiceMaskNameUpdatedEvent(EntityUid VoiceMaskUid, string? OldName, string NewName); +public readonly record struct VoiceMaskNameUpdatedEvent(Entity VoiceMask, string? OldName, string NewName) : IInventoryRelayEvent +{ + SlotFlags IInventoryRelayEvent.TargetSlots => SlotFlags.WITHOUT_POCKET; +} diff --git a/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml b/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml index 98c1857b76b..8e29fdd88f8 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml @@ -250,6 +250,7 @@ implantAction: ActionChangeVoiceMaskImplant - type: VoiceMask overrideIdentity: true + changeIDName: true - type: UserInterface interfaces: enum.VoiceMaskUIKey.Key: From 7593a46b07e9c26cb6a97a9b9662489286b8860b Mon Sep 17 00:00:00 2001 From: PJBot Date: Fri, 13 Feb 2026 21:59:28 +0000 Subject: [PATCH 337/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 545b02d4187..2689a6b8cf8 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: keronshb - changes: - - message: Tasers can now be used by Pacifists. - type: Tweak - id: 9015 - time: '2025-09-28T03:43:02.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40588 - author: beck-thompson changes: - message: Labelers can no longer add markup tags to items @@ -3993,3 +3986,11 @@ id: 9521 time: '2026-02-13T05:25:04.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42900 +- author: bnuuy + changes: + - message: Changing your name with the Identity Mask implant now automatically updates + your Agent ID! + type: Tweak + id: 9522 + time: '2026-02-13T21:58:20.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42772 From 2f3589ec889f6ff274bacfdfa04cb46038263a72 Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Sun, 15 Feb 2026 00:32:39 +0100 Subject: [PATCH 338/603] Vulpkanin Sulfur Blood + Organs (#42722) * yeah * tweaks * artifact trigger oops * organ sprites --- .../Locale/en-US/reagents/meta/biological.ftl | 3 + .../Prototypes/Body/Species/vulpkanin.yml | 28 +++-- Resources/Prototypes/Reagents/biological.yml | 11 ++ .../Recipes/Reactions/biological.yml | 16 ++- Resources/Prototypes/XenoArch/triggers.yml | 1 + .../Species/Vulpkanin/organs.rsi/appendix.png | Bin 0 -> 268 bytes .../Species/Vulpkanin/organs.rsi/ears.png | Bin 0 -> 600 bytes .../Vulpkanin/organs.rsi/eyeball-l.png | Bin 0 -> 362 bytes .../Vulpkanin/organs.rsi/eyeball-r.png | Bin 0 -> 351 bytes .../organs.rsi/eyeballs-inhand-left.png | Bin 0 -> 202 bytes .../organs.rsi/eyeballs-inhand-right.png | Bin 0 -> 212 bytes .../organs.rsi/heart-inhand-left.png | Bin 0 -> 210 bytes .../organs.rsi/heart-inhand-right.png | Bin 0 -> 230 bytes .../Vulpkanin/organs.rsi/heart-off.png | Bin 0 -> 298 bytes .../Species/Vulpkanin/organs.rsi/heart-on.png | Bin 0 -> 567 bytes .../Species/Vulpkanin/organs.rsi/kidney-l.png | Bin 0 -> 287 bytes .../Species/Vulpkanin/organs.rsi/kidney-r.png | Bin 0 -> 300 bytes .../organs.rsi/kidneys-inhand-left.png | Bin 0 -> 288 bytes .../organs.rsi/kidneys-inhand-right.png | Bin 0 -> 295 bytes .../organs.rsi/liver-inhand-left.png | Bin 0 -> 302 bytes .../organs.rsi/liver-inhand-right.png | Bin 0 -> 305 bytes .../Species/Vulpkanin/organs.rsi/liver.png | Bin 0 -> 363 bytes .../Species/Vulpkanin/organs.rsi/lung-l.png | Bin 0 -> 369 bytes .../Species/Vulpkanin/organs.rsi/lung-r.png | Bin 0 -> 384 bytes .../organs.rsi/lungs-inhand-left.png | Bin 0 -> 327 bytes .../organs.rsi/lungs-inhand-right.png | Bin 0 -> 321 bytes .../Species/Vulpkanin/organs.rsi/meta.json | 105 ++++++++++++++++++ .../organs.rsi/stomach-inhand-left.png | Bin 0 -> 283 bytes .../organs.rsi/stomach-inhand-right.png | Bin 0 -> 298 bytes .../Species/Vulpkanin/organs.rsi/stomach.png | Bin 0 -> 452 bytes .../Species/Vulpkanin/organs.rsi/tongue.png | Bin 0 -> 383 bytes 31 files changed, 155 insertions(+), 9 deletions(-) create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/appendix.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/ears.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/eyeball-l.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/eyeball-r.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/eyeballs-inhand-left.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/eyeballs-inhand-right.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/heart-inhand-left.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/heart-inhand-right.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/heart-off.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/heart-on.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/kidney-l.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/kidney-r.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/kidneys-inhand-left.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/kidneys-inhand-right.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/liver-inhand-left.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/liver-inhand-right.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/liver.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/lung-l.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/lung-r.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/lungs-inhand-left.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/lungs-inhand-right.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/meta.json create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/stomach-inhand-left.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/stomach-inhand-right.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/stomach.png create mode 100644 Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/tongue.png diff --git a/Resources/Locale/en-US/reagents/meta/biological.ftl b/Resources/Locale/en-US/reagents/meta/biological.ftl index d8f0f6c4137..1885b3cee68 100644 --- a/Resources/Locale/en-US/reagents/meta/biological.ftl +++ b/Resources/Locale/en-US/reagents/meta/biological.ftl @@ -16,6 +16,9 @@ reagent-desc-hemocyanin-blood = Contains copper as opposed to iron which gives i reagent-name-ammonia-blood = anaerobic blood reagent-desc-ammonia-blood = Nothing else in the entire galaxy smells quite so appalling. +reagent-name-sulfur-blood = sulfuric blood +reagent-desc-sulfur-blood = Feels almost acidic. + reagent-name-zombie-blood = zombie blood reagent-desc-zombie-blood = Would not advise eating. Can be used to create an inoculation against the infection. diff --git a/Resources/Prototypes/Body/Species/vulpkanin.yml b/Resources/Prototypes/Body/Species/vulpkanin.yml index 4ef0fa25499..2ac31f2eec0 100644 --- a/Resources/Prototypes/Body/Species/vulpkanin.yml +++ b/Resources/Prototypes/Body/Species/vulpkanin.yml @@ -145,6 +145,13 @@ id: MobVulpkanin name: Urist McArfArf components: + - type: DamageVisuals + damageOverlayGroups: + Brute: + sprite: Mobs/Effects/brute_damage.rsi + color: "#ccac1f" + Burn: + sprite: Mobs/Effects/burn_damage.rsi - type: MessyDrinker spillChance: 0.33 - type: Speech @@ -166,11 +173,11 @@ types: Piercing: 2 Slash: 3 - - type: Temperature # Same as moth temperatures until below is solved. + - type: Temperature specificHeat: 44 - type: TemperatureDamage - heatDamageThreshold: 320 # TODO: 315 when there is a way to make the temperature alert not blink to the side of the screen and disappear when you "sweat" at 39C. - coldDamageThreshold: 230 # TODO: 220 when the above is solved. + heatDamageThreshold: 320 + coldDamageThreshold: 230 coldDamage: types: Cold: 0.05 # Per second, scales with temperature & other constants @@ -192,6 +199,11 @@ pitch: 1.33 volume: -5 variation: 0.05 + - type: Bloodstream + bloodReferenceSolution: + reagents: + - ReagentId: SulfurBlood + Quantity: 300 - type: entity parent: OrganBase @@ -212,7 +224,7 @@ abstract: true components: - type: Sprite - sprite: Mobs/Species/Human/organs.rsi + sprite: Mobs/Species/Vulpkanin/organs.rsi - type: entity id: OrganVulpkaninVisual @@ -297,11 +309,11 @@ id: OrganVulpkaninTongue - type: entity - parent: [ OrganBaseAppendix, OrganSpriteHumanInternal, OrganVulpkaninInternal ] + parent: [ OrganBaseAppendix, OrganVulpkaninInternal ] id: OrganVulpkaninAppendix - type: entity - parent: [ OrganBaseEars, OrganSpriteHumanInternal, OrganVulpkaninInternal ] + parent: [ OrganBaseEars, OrganVulpkaninInternal ] id: OrganVulpkaninEars - type: entity @@ -317,9 +329,9 @@ id: OrganVulpkaninStomach - type: entity - parent: [ OrganBaseLiver, OrganSpriteHumanInternal, OrganVulpkaninInternal, OrganVulpkaninMetabolizer ] + parent: [ OrganBaseLiver, OrganVulpkaninInternal, OrganVulpkaninMetabolizer ] id: OrganVulpkaninLiver - type: entity - parent: [ OrganBaseKidneys, OrganSpriteHumanInternal, OrganVulpkaninInternal, OrganVulpkaninMetabolizer ] + parent: [ OrganBaseKidneys, OrganVulpkaninInternal, OrganVulpkaninMetabolizer ] id: OrganVulpkaninKidneys diff --git a/Resources/Prototypes/Reagents/biological.yml b/Resources/Prototypes/Reagents/biological.yml index 33405b30b2d..98e4e487287 100644 --- a/Resources/Prototypes/Reagents/biological.yml +++ b/Resources/Prototypes/Reagents/biological.yml @@ -132,6 +132,17 @@ recognizable: true physicalDesc: reagent-physical-desc-pungent +- type: reagent + parent: Blood + id: SulfurBlood + name: reagent-name-sulfur-blood + group: Biological + desc: reagent-desc-sulfur-blood + flavor: bitter + color: "#ccac1f" + recognizable: true + physicalDesc: reagent-physical-desc-strong-smelling + - type: reagent id: ZombieBlood name: reagent-name-zombie-blood diff --git a/Resources/Prototypes/Recipes/Reactions/biological.yml b/Resources/Prototypes/Recipes/Reactions/biological.yml index ec157144f30..25f9cfaa83f 100644 --- a/Resources/Prototypes/Recipes/Reactions/biological.yml +++ b/Resources/Prototypes/Recipes/Reactions/biological.yml @@ -40,7 +40,6 @@ Water: 4 Nitrogen: 1 - - type: reaction id: SapBloodBreakdown source: true @@ -82,6 +81,21 @@ Chlorine: 2.5 Protein: 6 +- type: reaction + id: SulfurBloodBreakdown + source: true + requiredMixerCategories: + - Centrifuge + reactants: + SulfurBlood: + amount: 20 + products: + Water: 10 + Sulfur: 2 + Hydrogen: 1 + CarbonDioxide: 3 + Protein: 4 + - type: reaction id: ZombieBloodBreakdown source: true diff --git a/Resources/Prototypes/XenoArch/triggers.yml b/Resources/Prototypes/XenoArch/triggers.yml index e03e46280dc..641f7bc48dd 100644 --- a/Resources/Prototypes/XenoArch/triggers.yml +++ b/Resources/Prototypes/XenoArch/triggers.yml @@ -243,6 +243,7 @@ - AmmoniaBlood - ZombieBlood - Sap + - SulfurBlood - type: xenoArchTrigger id: TriggerThrow diff --git a/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/appendix.png b/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/appendix.png new file mode 100644 index 0000000000000000000000000000000000000000..188bc38ff38582ac55f4276429401bd7f98618cf GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oArNM~bhqvgP;j58 zi(^PcYjT1F>*55Fo~DNk(^QTAsE6wdo9bLQ+p2t9P{fiUMRW5c>t>ec#ckF3Cybkw z*c)`N3;a8`;roT$O=lHuGj335|G6*Cm|6MeItBJMIc5L<7wvoXUo8HUumVTG91cy^ z6zd1?_s-?f-{)#L2L?EiM3XmoyfKvkY|PCdA9nTd8^Q=kEt+rblT3@?kEGL$No+ynZA N!PC{xWt~$(69C}qWOx7o literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/ears.png b/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/ears.png new file mode 100644 index 0000000000000000000000000000000000000000..a35737c4b18eef340e2e26cf66945c5d2d207dfc GIT binary patch literal 600 zcmV-e0;m0nP)z^^1+e2mrK6i zdwDq`U%q^eqHgjjfiaAC1>9~t*-A^pnei6gzlVwE$<>nUcML3;&;7t+VE$T22%dYb zM6jRD2l1FBa=LMt(^O_(RYP8H%Vl-{w2&~DvXvlzjzMLc0n8uk zP2ypOG+N7PCg0yJw4XyoJh_uY69Qmwzp3EXvt(A^h^C_&1wWf=-|T$Ka}(ND09hkr z&KeoVC))9`cv=pado4fYNWYyS*#pR$p%M#e`RhS2M{g__I`25jlIk04yq6rCFu4+= zMk7EE$2GZT^Jw^m>a9r`!)LJ?qcR;BL%0Fyc~jS8f*}9^St0bZ65-RpnBx!w+EuAr zJ^$lO=1D#HQM*)eHUJc=0Q0-+65)KnfH7bY=PC^Z07W8#HgpQ02RJKhc7TBSVk#jU z6V*Wc;yJD$t-aAVfL#?}&e_2XrpO#1h%-5}k8 mLKFq&e`4wc@^9w8MpECL=P29kxWt|S0000F6XU=)mWz(`2JvP6de%u4PIfA8&N0MX&KI|=Hc zDp=X<{vX{zbhDfumJt;N_~fJJ6E=e)2c%3`_+LnfpW*w5&kUC5V^J)GMGqzE0>S!{2`1G0K_pjd!pI^OY(6~Pt#X^uHKnaxGkYK`Rxuu0212>N#gQSEA0|y5? z1D}L2!%c-;jD!iw9pnO>u6A8_A8bjM4nL6m$ME;xSBA$=o-;81`_CYGvH`A+65oRW z&JZ~J>N~@pSObQX{jb2O@c;k+4FCTAWqA4WHHtc#CPLwv*Z&)dvI9dwfZ_Rz2f$GH z%aH3}O4Wjhpkbi20HOs11sJM)9q3yMj)GAz3P!;w7zOkI0H~p9u=TyF6XU=)mk0S1h;G<;bi!+#h%YCdi4!T>9q-Qkvl z9D?ka0Re-?5$Iw}18F%3P(5K>oM!j`##>Gd@xS+WVoiutbpW#E;k7%7GMj2qfNVL) zx5NS#YB}JfY8L~CDIdd+51$$M!6L*tf+|t4^3t9EY#i)x{=a|!7=Cuj6IJ+790h&5 zj)5(ocI6L4(DqLZDf_>IllzCL6GZ8!*a1R90$}>U)9(xnRaOk2e*I%$Vq#?A7imPBJ)1LlWZq4E6NVx;E27M% xS~&o6grvAA!}FJ~8H$Otd=!j=Q7{TX005}fU)d{>Q<(q&002ovPDHLkV1m}Pkl+9S literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/eyeballs-inhand-left.png b/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/eyeballs-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..e3220edf85dbe069dcfb6c1af136a0a91aa5da82 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR0pkR%s zi(^Q|oVT|OxtbGr*e=Mg5BOl`H*fK3_7|)+jmg*fTJz+NUc4P5Fz2Y*M6r9(n`$Sd z_;@h_buv6CUcaw4{fXUrRn_fXd~aSQt_^IyAvJ%Nq0&2>>Az)+8g3{1+_V9y1cLoK rum3;Tu%^A$HZcAB`kl9#8UE)n`e#aA^w0Re6Qsb?)z4*}Q$iB}F+NEA literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/eyeballs-inhand-right.png b/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/eyeballs-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..693c5b135fc422c8c5eedc9e5a0e9be92daef31f GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR0pkSM) zi(^Q|oVT|&@-`a?um)&rD{S;%b;j{DgU$p_jmyhAT#jo@xv3VYbcaQe$thymz3e+X zexy(T?hMq+z>u(NcU;^`<3EoBTSG1Vy~Q6rD7~3?wq(V_JN4(c@*A$+VY~Uq&-k-@ z&l{P8)iW^2?_Rstz58#22BR0pkRxq zi(^Q|oVT|Y3LbJ0V7)L`!|K41WxO&*t_qjg<=BPX?Was+x^R5Xg2rTFwZqk{e{RP9 zHfI8AWN0Xx{&;PU=JwNkcfJRo`M%J`Z=%tM%AQYqzopr0K0`x A0RR91 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/heart-inhand-right.png b/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/heart-inhand-right.png new file mode 100644 index 0000000000000000000000000000000000000000..82df5079c9bcf49f2c859efb41e02e141f3e3357 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR0px_Ko z7srr_Id5+*Skc5*cvT&X}dAc$Gmfe_nRK8U0OSL`O7swZ9-kYdkRngtCSla`0n5* zRgv3knid^q25VvXv-g(no6W2Acc#Dp-=J6d;m*P7JVr-$^*55Fo~DIteB0#z|1aA2sy=Jxai>*n#lQ6oWS;Ff%TU}>@hI2LOXh$} zpIY?l$2^;_-(7a2Xp^kMf%tP1LgySVD4ZpGG|+JpvxC^Is`+U@K5U%)@cZlAJe#7b zcy#yih*&nMu*cZec07FlJ*0rcpl0Xs10ViMHc#SEy*62pHQ{vQgQMl1ZTI!{jPF!C zyR*BTO;5P9=dXZ;NbUdFcnbDKpaEB#CgTe~DWM4fOc8m7 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/heart-on.png b/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/heart-on.png new file mode 100644 index 0000000000000000000000000000000000000000..cc34c261cbe058817cb1cc9e3bf33bdee7962c85 GIT binary patch literal 567 zcmV-70?7S|P)V32ukvlk_ z=Y8Jye!%+>0RR91!2ewDC5@NZxX~%`yG1X!y}F~Do-CP33`etyQ_0AP-(}^Z*_kAr zB(km#z8Uc?6=1--P3v15ls*bdxfOZ`H+lTCDA|rLQ~);MzrO~Ip%2xn=BQdy^3{*pqA3$}_Nd<*cw ze=F%DR4d(6u3|N`HD-J>2gXhgLIqfkk)mE`d?p$baLeELOfg@f(Ivm-{}g@=vS4hz zspne#nAC#h1Vl}*`S@=pq19*JJm(r!^%?QF-!P20v=1Vuau8ktKNOG0Fcc*sH=CkhP{=96$E5Paf zdD(=X0c`NU{Q=KJ{e8{K%QZqPppZV5-XGvJ;fEM&iD6wKlYt;Ve(*k0BvNSGhoSIm zknP1+t4h5;!1cZPR>Ah?W%dWO1XcvuIRF3v00013@de=T-*S--EeZet002ovPDHLk FV1kFE`xyWL literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/kidney-l.png b/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/kidney-l.png new file mode 100644 index 0000000000000000000000000000000000000000..2c243305c3f46ff086e8e51ab04e6bed02c95f04 GIT binary patch literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oArNM~bhqvgQ1GIs zi(^PcYjT1F>*55Fo~DH?(^QTAEZ;WM=Zaau6-JX{2Hi*VGuRt+%C`kCZT)+s{XqBo zNjwVf2b>lioo=Og$f+x-L%BimP{Hr|D>ZCxSr!QggcUC;7ChEfZ*KcgJ|%#mGgwN< z#qz;D>4bod^^8^xl4tCHxNyGV5Xh)3{#}1I?USryh)9FZkMCbJ4qx-GKd4yv{H1ss zvx9qs!P16|>G}6`e*b^8=6HlG`zgUGEld{~o^&krerm8uUNv&kl9>f6tiM->=5{ fNCV^p7G?&iRJU!Bdw#wHdXB-<)z4*}Q$iB}rC)GV literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/kidney-r.png b/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/kidney-r.png new file mode 100644 index 0000000000000000000000000000000000000000..80675d07256a88887a0fd1d2f0aa44d66de128d7 GIT binary patch literal 300 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz&H|6fVg?3oArNM~bhqvgQ1G6o zi(^PcYjT1F>*55Fo~DItQ8kkPf-l>sWl6d5B`Ag~Z=0~<=9vQ?t1MNr8zR?bJ>yHe zU;C@oF>)5W&;RPGDJkv~WLf!)z8{ES&Dh!Yp`0z>HjPa!Gkelyj>tfUPfI7A$lc(2 zu8fCAf1h{LQAfp(-_2BR0px`A> z7srr_Id5-m9TD-79R3K!D!=fd97Xv5u z-SGEl`=9Nn`KPAn$*UZY4It35eNNN~&G0PS?FFk>KR8?UH9vLUs`KT{r4Qakm1V8E zns{YpR;$&8|6!IUyYHM8oBgGx^j`Ri_t|3KQ+<~t>65AU3zopr0N2BR0px{kU z7srr_Id5+navgFIXnok3F2FBvLUd2lRPha;<)+0sU#eu(wwC7J+mw;Yb?}mvwsHi^ zMAO7ccTfB`^-h>s%QHJGj0I>82zk=@`*=}?YG|&_UYTx|Mjn<;~=I0Nrkf5^AAey2BR0px^^f z7srr_Id5+%@*Q#zXnm-8uz-cH!72Ir0)f2@ebow<%woq`wK&8&4^J#$spgxt zyYhD0!~c`iLO0)@es`9nG0+$wP`Fi?EMMPt&s|(ORPq0ZpGr53&gd)`NMSUY_dZkh z(7H3qERhVan?&4&MN~@o$uZ&^MJZtt-^h2-Ry7b#&VH&S0 z=RQkGRlIul{L}eN5DOR>8unibm-gP+x5x6=^%|ok@72<(_s-Z_|A^(shnD&pAMZG^ q0~6l94mm75msgZ&GcyB&%TFe0LkImoo^C5aW_Y^#xvX2BR0px|Rq z7srr_Id5+%@*Oe|Irh<9#{B_u+TGb+~6V8*TS7}!Q;efCnLvA z*Dr3p`{}=G@!4Nr-}>(D0-6E>_OjPLT~jaZyWlp>wdzCb>{B`KQZigKbPkk7%KrN} z>&OY=xht9Xwd?n%N4{P9!sO!ob=J?XE?mZRXWrwoOrZ;FqFCO>oc?u;DaT9m-Spt~ zT?^)}+S$DCO4P+Gza|MotN@aGg|kJjUbS2H(je tWYt&w37_^kh$(*vQQTxr$G^+3+qZ)Z@pScbS?83{1OU^(eue-5 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/liver.png b/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/liver.png new file mode 100644 index 0000000000000000000000000000000000000000..9736b478474dba24ec791e820703cece5bde9034 GIT binary patch literal 363 zcmV-x0hIoUP)F6XU=)mkkq#IsHDFmH!+&Ic)O^y+WTDh@XFF9? zF^1d!NpS>8u0{7P$nqE8CE@(5rw_r|#5#g#2OwJx^EJBV+NO34H{NoB`G4>2B+3ya zMFGs>y@zgtEyHFx$YKz<_l7t#nMiQ}2q60!W;wHxJD3Jp4q}5Wuh~po=n@qIpx_7j z@Wppjapd3zSquWVPwgbya-to84j?|>31`DB1_AvvSq6s9kBK&mCTTM-aqfn!W)b_OCmUu-Or{cEV+_2NrqvQjfTyH zhmSvN^Zc1)#dBKXTC?ouhX*;kWDmHkahmZ|A?o%OKAmrGuj<~iW_VJaZXMbteqZ(A zwB`)XbI%3X4Y)7dV^m<+EHaa=Q99o;^L;~gzJ!EXzJ1F>jtG+gt`BO5#NyljuXLR7 zfZg)Yd8e+2$L#&s+?K89ne8vLsEe5+O?`s$6c>pDc5IeRl2>w;*;osmY3mX!;^C>5 zYiz!I{W6~%?~A^LGnpM2rtp=_t7T=kZ#Ga84`3GXX{o9Ce{kW3mq(1*e3zYmFy+6{ z3yCboMUM(z2JQT>&>l1AtAw6g?+1R9J;$U>F6XU=)mkp$wKKGW;J<2Yfx*^Pf^juu#h}$PS5` z&%j6*2Yh&N0&aOwcp$^a=T{i`C3P5e0w6mQm(Fv3y2i$ne38q1o!W;pki3JoVLQwFdTfTYwA^JGr_Nko= zw}G^ug%rb$f1C`AOkWu`pE$(e>j`lbP{se6&G-`|(b)wTXz@jjYmntvPak5q_lALi zkmVpim2v>)V^}m?1&S#~$T2W%ene0&MTrmwV3vat<;!PZ!M=}*Y9~rBRYCw{DJTtS zGF@iabmAG<_gl795T%#mG_Z83-2eM45J3%!_syGS|NHtrrr2zf909VFZWf}00kwP- ejDk@>DF6U|-hp)sEht6+00002BR0px{qW z7srr_Id5+*et5%N`5Yw=Ngv&}13sEJIyy@BK6>96e0 zJKsP5`0r8K;^G_A?p~X|QG4s2o$a%g&nKi7UTxVG8gSaOQ*3R?)xE5``>yk-?wEB% zb%v=!_qS>9_1C>#E?L=Y!$rnOwxESJfFAieAZie-y(>eAo9k=`;SujJYPgs zrOo5nJb!WMsmmps+5Wt$=y}P#VHT&xXP?P}lA`_v5@%Uz4rlQ(GJNQd)1MI*^YoVB PT#$ZGS3j3^P62BR0px|du z7srr_Id5+*O$Z&-+||DCa`w>vKWrNeruktWJE4>)l^^W#{Qbn>`lSOuxHyN@i^qLse$I zoJYA5t89GYj#cmNU*}vu2BRf}%9lTe@39%1I9=LyD+fV)Ir&ZThhvs`_ z6`QP-nB02fQz?VlOdk7i2D5uyGwh7P^oyClxL6n({>UlK37h$yM?Vf^hNr8a%Q~lo FCIFfygDe05 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/meta.json b/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/meta.json new file mode 100644 index 00000000000..b4a12c8225c --- /dev/null +++ b/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/meta.json @@ -0,0 +1,105 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "original icons taken from /tg/station 13 at https://github.com/tgstation/tgstation/commit/c4b7f3c41b6742aca260fe60cc358a778ba9b8c8 | appendix taken from CEV-Eris at https://github.com/discordia-space/CEV-Eris/commit/476e374cea95ff5e8b1603c48342bf700e2cd7af | inhands by mubururu_ (github). Modified by ScarKy0 (Github) into the vulpkanin versions.", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "appendix" + }, + { + "name": "ears" + }, + { + "name": "eyeballs-inhand-left", + "directions": 4 + }, + { + "name": "eyeballs-inhand-right", + "directions": 4 + }, + { + "name": "eyeball-l" + }, + { + "name": "eyeball-r" + }, + { + "name": "heart-inhand-left", + "directions": 4 + }, + { + "name": "heart-inhand-right", + "directions": 4 + }, + { + "name": "heart-off" + }, + { + "name": "heart-on", + "delays": [ + [ + 0.6, + 0.1, + 0.1 + ] + ] + }, + { + "name": "kidneys-inhand-left", + "directions": 4 + }, + { + "name": "kidneys-inhand-right", + "directions": 4 + }, + { + "name": "kidney-l" + }, + { + "name": "kidney-r" + }, + { + "name": "liver" + }, + { + "name": "liver-inhand-left", + "directions": 4 + }, + { + "name": "liver-inhand-right", + "directions": 4 + }, + { + "name": "lungs-inhand-left", + "directions": 4 + }, + { + "name": "lungs-inhand-right", + "directions": 4 + }, + { + "name": "lung-l" + }, + { + "name": "lung-r" + }, + { + "name": "stomach" + }, + { + "name": "stomach-inhand-left", + "directions": 4 + }, + { + "name": "stomach-inhand-right", + "directions": 4 + }, + { + "name": "tongue" + } + ] +} diff --git a/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/stomach-inhand-left.png b/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/stomach-inhand-left.png new file mode 100644 index 0000000000000000000000000000000000000000..f3145deec49cccd09c2fd51336175eff0a11d8e0 GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9GGLLkg|>2BR0px{|g z7srr_Id5<2@*Q#zXnUynkb}cyx?>?@%=^YCauz(Bm>M4|oM2;WYGHX|)~sZ)?fw>% zO8NcwbH2Hsoxun+00chedV34*eC_J9?oO(?f4}q05b19+=Re1|-rK&>>O)QK%_~`% z&pyZPFIMik(s=cs#{D(VE8iuo_@Djc|MdL~=Cl8l%RvkRk{2eOXDhjT{QsKi!O{2R z-Z#ttd6~9t)tVorYu8vxnMw-zmNA^}6|LirEic*|_wMcKuV1-tUE!U{&%nUr!fd$8 UInhd7`x(eIPgg&ebxsLQ0Q2>4!T2BR0px_-( z7srr_Id5+%@-Z0-v_6bHBq)%f*ZhcS$6oeH)ej6#h;qoVJLV}Ucz8JINjh#ixlZEL zg}llCFZ(`UI(OAd4xkYrupm3yYqC}I(W-}Yg3W7WPCeT+JH3!$R`BO2{-m79FMF;R z?b}!9E!O#Lj#qA+{ieLAxBUkfCS98IZu--I>;Ao&y=NKU4BtbCmrRI`gBS=Td4j6n ziB+eq_`2u6=8R*Hb60zD@h*~2(j&pGjey)h^>7(8A5T-G@yGywo5>v%!{ literal 0 HcmV?d00001 diff --git a/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/stomach.png b/Resources/Textures/Mobs/Species/Vulpkanin/organs.rsi/stomach.png new file mode 100644 index 0000000000000000000000000000000000000000..0e7e809f73b79bb9c7fd61b18f79266bf07fa239 GIT binary patch literal 452 zcmV;#0XzPQP)F6XU=&aQmL)R$A5hDm9BBVfsUw&u(ad^(9wpi- zcK|iO&~?DQHw+9fzDuHrfzku1X@Z4Z2h?n4U}Ru8^xxOhj-lnvA-JV>@$C%D7%Klq z%?HU71{6hsk_ZEX1m|-GkRwuqRKcP0_S$v^b-Pfavna)BfJ?>(>UP|M+iqCSquV@@_~V2 z^JdxqzP^tMnom?3fCV?qz@A!2ua0lxWzC)jO9c*0FR!_7zLwX*aHCQikgMfAYdZ^0000 zr;B4qL~C+_1nc4ik)EbNgG-Fc8@ZOZ8UGP~(zM}zy>mzUdX;-Tn`9X_-8piF<6QmE z4`$4}Tg;f(PhdIR94vi+PwBcMi)o|IbkWDD0@K4&f1K837pwmB%=+-bzwHNe>eFr8 z`2YWqyccuRbDArkLh(&z! zVkNaJy@`+Sc|U0J1%z}QV9?3U=yvj2v3mW^2~L^dkl}J;tYctE Y*-&<7($<})fFa7@>FVdQ&MBb@09jd-!vFvP literal 0 HcmV?d00001 From 41cb4b8d53a0cbef0526e04924c67d35f34e5089 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sat, 14 Feb 2026 23:50:31 +0000 Subject: [PATCH 339/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 2689a6b8cf8..3fffa385f8b 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: beck-thompson - changes: - - message: Labelers can no longer add markup tags to items - type: Fix - id: 9016 - time: '2025-09-28T18:33:27.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40600 - author: SirWarock changes: - message: Fixed Shotgun Ammo Count not properly updating when reloading! @@ -3994,3 +3987,10 @@ id: 9522 time: '2026-02-13T21:58:20.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42772 +- author: ScarKy0 + changes: + - message: Vulpkanins now have sulfur-based blood and unique organ sprites. + type: Add + id: 9523 + time: '2026-02-14T23:49:21.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42722 From 6fdc60a4c99e993b0a104321eacc531b802c1730 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Sat, 14 Feb 2026 16:53:47 -0800 Subject: [PATCH 340/603] Revert Gibbing Test, Remove Old Popups (#42924) * Revert "[EXPERIMENTAL] Removes Blunt and Burn Damage Threshold Gib Behavior (#42474)" This reverts commit d4fe565b2e5de65ae2f38cf32893faa9f15c6f4e. * remove popups * remove changelog --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- Resources/Changelog/Changelog.yml | 7 ------ Resources/Prototypes/Body/Species/vox.yml | 22 +++++++++++++++++++ Resources/Prototypes/Entities/Mobs/base.yml | 21 ++++++++++++++++++ .../FeedbackPopup/feedbackpopups.yml | 9 -------- 4 files changed, 43 insertions(+), 16 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 7e077c90cae..9163a4b8b1d 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -3754,13 +3754,6 @@ id: 9487 time: '2026-02-03T20:12:55.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42764 -- author: Admiral-Obvious-001 - changes: - - message: EXPERIMENTAL Removed blunt and burn based gibbing. - type: Remove - id: 9488 - time: '2026-02-04T04:49:36.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/42474 - author: veprolet changes: - message: Volumetric devices now respect their pressure limits more. diff --git a/Resources/Prototypes/Body/Species/vox.yml b/Resources/Prototypes/Body/Species/vox.yml index f679475a8b3..11f6989a5a7 100644 --- a/Resources/Prototypes/Body/Species/vox.yml +++ b/Resources/Prototypes/Body/Species/vox.yml @@ -182,6 +182,28 @@ amount: 5 - type: Destructible thresholds: + - trigger: + !type:DamageTypeTrigger + damageType: Blunt + damage: 400 + behaviors: + - !type:GibBehavior { } + - trigger: + !type:DamageTypeTrigger + damageType: Heat + damage: 1500 + behaviors: + - !type:SpawnEntitiesBehavior + spawnInContainer: true + spawn: + FoodMeatChickenFriedVox: + min: 3 + max: 5 + - !type:BurnBodyBehavior + popupMessage: bodyburn-vox-text-others + - !type:PlaySoundBehavior + sound: + collection: MeatLaserImpact - trigger: !type:DamageTypeTrigger damageType: Radiation diff --git a/Resources/Prototypes/Entities/Mobs/base.yml b/Resources/Prototypes/Entities/Mobs/base.yml index 5c7596d85ae..bae37a421b6 100644 --- a/Resources/Prototypes/Entities/Mobs/base.yml +++ b/Resources/Prototypes/Entities/Mobs/base.yml @@ -72,6 +72,27 @@ damageContainer: Biological - type: Destructible thresholds: + - trigger: + !type:DamageTypeTrigger + damageType: Blunt + damage: 400 + behaviors: + - !type:GibBehavior { } + - trigger: + !type:DamageTypeTrigger + damageType: Heat + damage: 1500 + behaviors: + - !type:SpawnEntitiesBehavior + spawnInContainer: true + spawn: + Ash: + min: 1 + max: 1 + - !type:BurnBodyBehavior + - !type:PlaySoundBehavior + sound: + collection: MeatLaserImpact - trigger: !type:DamageTypeTrigger damageType: Radiation diff --git a/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml b/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml index fa05e56558a..d424a24244f 100644 --- a/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml +++ b/Resources/Prototypes/FeedbackPopup/feedbackpopups.yml @@ -17,12 +17,3 @@ responseType: "General Feedback" responseLink: "https://forum.spacestation14.com/c/development/feedback/51" showRoundEnd: false - -- type: feedbackPopup - id: GibbingFeedback - popupOrigin: wizden_master - title: "[bold]Feedback on Gibbing Removal[/bold]" - description: >- - We're testing out the removal of gibbing to see how it affects the game. Please leave feedback on how your experience was removed/worsened so we can account for it! - responseType: "Experimental Feedback" - responseLink: "https://forum.spacestation14.com/t/gibbing-removal-feedback/26320" From 6e38a79257b74db933ffb7f6776356c37fc404af Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Sun, 15 Feb 2026 02:09:10 +0100 Subject: [PATCH 341/603] Fix paradox clones having default voice and pronouns (#42923) fix --- Resources/Prototypes/Entities/Mobs/Player/clone.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Resources/Prototypes/Entities/Mobs/Player/clone.yml b/Resources/Prototypes/Entities/Mobs/Player/clone.yml index 6e22f479d90..8aa1c4c7b0a 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/clone.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/clone.yml @@ -12,6 +12,8 @@ - DetailExaminable - Dna - Fingerprint + - Grammar # Pronouns + - HumanoidProfile # Age, Sex, Gender - NpcFactionMember # traits - BlackAndWhiteOverlay @@ -54,6 +56,8 @@ - SouthernAccent - SpanishAccent - StutteringAccent + eventComponents: + - Vocal # voice sounds # for job-specific traits etc. - type: cloningSettings @@ -81,7 +85,6 @@ blacklist: components: - AttachedClothing # helmets, which are part of the suit - - HumanoidProfile # will cause problems for downstream felinids getting cloned as Urists - Implanter # they will spawn full again, but you already get the implant. And we can't do item slot copying yet - VirtualItem @@ -120,7 +123,6 @@ # these need special treatment in the event subscription - Inventory # arachnid pockets and diona feet - Wagging # lizard tails - - Vocal # voice sounds - Storage # slime storage - Rootable # diona - Sericulture # arachnids From 9a7692aee584eecb1da8f27aa2f862f270f6166c Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 15 Feb 2026 01:25:41 +0000 Subject: [PATCH 342/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 3fffa385f8b..7472b23d337 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: SirWarock - changes: - - message: Fixed Shotgun Ammo Count not properly updating when reloading! - type: Fix - id: 9017 - time: '2025-09-29T10:28:45.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40568 - author: BoskiYourk, spanky_spanky changes: - message: Microwaves can now be picked up when unwrenched, and optionally, used @@ -3994,3 +3987,10 @@ id: 9523 time: '2026-02-14T23:49:21.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42722 +- author: ScarKy0 + changes: + - message: Paradox clones now correctly copy the voice and pronouns of the original. + type: Fix + id: 9524 + time: '2026-02-15T01:24:33.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42923 From faeacd18cfd8e944a57e103cdc15ccb082177909 Mon Sep 17 00:00:00 2001 From: TriviaSolari <154280615+TriviaSolari@users.noreply.github.com> Date: Sun, 15 Feb 2026 05:43:50 -0500 Subject: [PATCH 343/603] AI can now read papers and envelopes (#42926) * AI can now read papers and envelopes * Move whitelist component from BasePaper to Paper --- Resources/Prototypes/Entities/Objects/Misc/paper.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Resources/Prototypes/Entities/Objects/Misc/paper.yml b/Resources/Prototypes/Entities/Objects/Misc/paper.yml index d435042485c..6218da86eba 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/paper.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/paper.yml @@ -89,6 +89,7 @@ type: PaperBoundUserInterface - type: FaxableObject - type: PaperVisuals + - type: StationAiWhitelist - type: entity name: paper scrap @@ -467,3 +468,4 @@ - !type:EmptyAllContainersBehaviour - !type:DoActsBehavior acts: [ "Destruction" ] + - type: StationAiWhitelist From add86afc3a6d284d530d3d999b5a43ae6adadafe Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 15 Feb 2026 11:00:32 +0000 Subject: [PATCH 344/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 7472b23d337..8522c991b84 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: BoskiYourk, spanky_spanky - changes: - - message: Microwaves can now be picked up when unwrenched, and optionally, used - as a weapon. - type: Tweak - id: 9018 - time: '2025-09-30T21:55:10.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40618 - author: leahcat changes: - message: moved desoxyephedrine from ambrosia plants to glasstle. @@ -3994,3 +3986,10 @@ id: 9524 time: '2026-02-15T01:24:33.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42923 +- author: TriviaSolari + changes: + - message: Station AI is now able to read loose papers and envelopes. + type: Tweak + id: 9525 + time: '2026-02-15T10:59:24.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42926 From d1cbe4507217e992ad7c441ddad149b3114d26ae Mon Sep 17 00:00:00 2001 From: Le-Arctic-Fox Date: Sun, 15 Feb 2026 05:50:52 -0500 Subject: [PATCH 345/603] Change basic viper magazine to high capacity in operative bundle (#42927) * changed atmos fire suit to engineering contraband * changed normal pistol mag to extended in basic op bundle * yes * yes --- Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml index 1dd4e27f758..0e863bd359c 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml @@ -450,7 +450,7 @@ - id: WeaponSubMachineGunC20r - id: MagazinePistolSubMachineGun amount: 3 - - id: MagazinePistol + - id: MagazinePistolHighCapacity - id: SyndicateJawsOfLife - id: C4 amount: 2 From 883b58ca2a6fc9f3e332e3f8879c4d80a3063db8 Mon Sep 17 00:00:00 2001 From: PJBot Date: Sun, 15 Feb 2026 11:17:09 +0000 Subject: [PATCH 346/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 8522c991b84..c9d6037f8ab 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: leahcat - changes: - - message: moved desoxyephedrine from ambrosia plants to glasstle. - type: Tweak - id: 9019 - time: '2025-10-01T04:05:41.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40638 - author: SignalSender changes: - message: Musicians now have a Stage Name @@ -3993,3 +3986,10 @@ id: 9525 time: '2026-02-15T10:59:24.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42926 +- author: Le-Arctic-Fox + changes: + - message: Changed viper magazine to high capacity in the basic operative bundle + type: Fix + id: 9526 + time: '2026-02-15T11:16:02.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42927 From 4f11f7021639752cf02de1c34f22268bac30169e Mon Sep 17 00:00:00 2001 From: ScarKy0 <106310278+ScarKy0@users.noreply.github.com> Date: Mon, 16 Feb 2026 18:08:39 +0100 Subject: [PATCH 347/603] Fix uncooked animal proteins metabolism (#42942) * Update toxins.yml * poison!!!! * I hate solutions sytem I hate solutions sytem I hate solutions system --------- Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- Content.Shared/Medical/VomitSystem.cs | 11 +++++++++-- Resources/Prototypes/Reagents/biological.yml | 8 +++++++- Resources/Prototypes/Reagents/toxins.yml | 2 +- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/Content.Shared/Medical/VomitSystem.cs b/Content.Shared/Medical/VomitSystem.cs index 75d3f116bdf..8152e5bf4bd 100644 --- a/Content.Shared/Medical/VomitSystem.cs +++ b/Content.Shared/Medical/VomitSystem.cs @@ -52,9 +52,16 @@ public override void Initialize() private void TryVomitSolution(Entity ent, ref BodyRelayedEvent args) { - if (_solutionContainer.ResolveSolution(ent.Owner, StomachSystem.DefaultSolutionName, ref ent.Comp.Solution, out var sol)) - _solutionContainer.TryTransferSolution(ent.Comp.Solution.Value, args.Args.Sol, sol.AvailableVolume); + if (!_solutionContainer.ResolveSolution(ent.Owner, + StomachSystem.DefaultSolutionName, + ref ent.Comp.Solution, + out var sol)) + return; + + args.Args.Sol.AddSolution(sol, _proto); + // Remind the stomach that it's empty. + _solutionContainer.UpdateChemicals(ent.Comp.Solution.Value); args.Args = args.Args with { Handled = true }; } diff --git a/Resources/Prototypes/Reagents/biological.yml b/Resources/Prototypes/Reagents/biological.yml index 98e4e487287..29d4a18f1c0 100644 --- a/Resources/Prototypes/Reagents/biological.yml +++ b/Resources/Prototypes/Reagents/biological.yml @@ -33,6 +33,12 @@ groups: Brute: -3 Burn: -1.25 + Bloodstream: # Don't inject someone else's blood into yourself! Your own blood won't actually metabolise. + effects: + - !type:HealthChange + damage: + types: + Poison: 0.2 plantMetabolism: - !type:PlantAdjustWater amount: 0.5 @@ -175,7 +181,7 @@ flavor: metallic color: "#f4692e" recognizable: true - metabolisms: + metabolisms: Bloodstream: effects: - !type:SatiateThirst diff --git a/Resources/Prototypes/Reagents/toxins.yml b/Resources/Prototypes/Reagents/toxins.yml index 16853011096..103c284a671 100644 --- a/Resources/Prototypes/Reagents/toxins.yml +++ b/Resources/Prototypes/Reagents/toxins.yml @@ -483,7 +483,7 @@ flavor: bitter color: "#FFFFE5" metabolisms: - Digestion: + Bloodstream: effects: - !type:PopupMessage conditions: From 15934385981a03ce0b1002db85376fbc7e887ecf Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 16 Feb 2026 17:26:56 +0000 Subject: [PATCH 348/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 5a6a2568696..3cddce479b8 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -3986,3 +3986,12 @@ id: 9526 time: '2026-02-15T11:16:02.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42927 +- author: ScarKy0 + changes: + - message: Drinking blood as non-animal species makes you sick again. + type: Fix + - message: Injecting someone else's blood is now slightly poisonous. + type: Add + id: 9527 + time: '2026-02-16T17:25:45.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42942 From 307aa0562f64ec816451362eb05bfa0ad9d289eb Mon Sep 17 00:00:00 2001 From: Synthestra Date: Mon, 16 Feb 2026 20:27:31 +0000 Subject: [PATCH 349/603] Fix Thieving Beacon not detecting HUDs for said objective (#42945) --- Resources/Prototypes/Objectives/thief.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/Resources/Prototypes/Objectives/thief.yml b/Resources/Prototypes/Objectives/thief.yml index 24bab0e055d..ef67b560de2 100644 --- a/Resources/Prototypes/Objectives/thief.yml +++ b/Resources/Prototypes/Objectives/thief.yml @@ -176,7 +176,6 @@ minCollectionSize: 7 maxCollectionSize: 12 verifyMapExistence: false - checkStealAreas: false - type: Objective difficulty: 0.3 From d53be52b377daeaf162910d39998e6fdb93c7f2d Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 16 Feb 2026 20:44:17 +0000 Subject: [PATCH 350/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 3cddce479b8..2103844e40a 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: SignalSender - changes: - - message: Musicians now have a Stage Name - type: Tweak - id: 9020 - time: '2025-10-01T11:46:34.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/40640 - author: Velcroboy changes: - message: Shutters, blast doors, and lights can now be linked using the "Link Defaults" @@ -3995,3 +3988,11 @@ id: 9527 time: '2026-02-16T17:25:45.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42942 +- author: Synthestra + changes: + - message: Thieves' "Steal the HUDs" objective can now be completed with the thieving + beacon + type: Fix + id: 9528 + time: '2026-02-16T20:43:08.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42945 From f5bab1961f70f5bbefdbe3f16a141dd240cb6eb5 Mon Sep 17 00:00:00 2001 From: Steel Date: Tue, 17 Feb 2026 01:47:05 +0400 Subject: [PATCH 351/603] Fix jetpacks not turning off when switching to another jetpack (#42689) Initial commit --- Content.Shared/Movement/Systems/SharedJetpackSystem.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Content.Shared/Movement/Systems/SharedJetpackSystem.cs b/Content.Shared/Movement/Systems/SharedJetpackSystem.cs index 0ebcee9f8b6..0d6a9858ff4 100644 --- a/Content.Shared/Movement/Systems/SharedJetpackSystem.cs +++ b/Content.Shared/Movement/Systems/SharedJetpackSystem.cs @@ -173,6 +173,14 @@ public void SetEnabled(EntityUid uid, JetpackComponent component, bool enabled, if (enabled) { + // If the user is already using another jetpack, disable it first + if (TryComp(user, out var userComp) && + userComp.Jetpack != uid && + TryComp(userComp.Jetpack, out var oldJetpack)) + { + SetEnabled(userComp.Jetpack, oldJetpack, false, user); + } + SetupUser(user.Value, uid, component); EnsureComp(uid); } From cf831e2c4cf09be6ae316b711ee11cc8bc9a9fef Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 16 Feb 2026 22:04:13 +0000 Subject: [PATCH 352/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 2103844e40a..d0d4cd5eaf4 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,12 +1,4 @@ Entries: -- author: Velcroboy - changes: - - message: Shutters, blast doors, and lights can now be linked using the "Link Defaults" - button. - type: Tweak - id: 9021 - time: '2025-10-01T20:22:50.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/37690 - author: YoungThugSS14 changes: - message: The Prisoner Eva Suit now has the same stats as an emergency eva suit. @@ -3996,3 +3988,10 @@ id: 9528 time: '2026-02-16T20:43:08.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42945 +- author: Steel + changes: + - message: Jetpacks now turn off when another jetpack is activated. + type: Fix + id: 9529 + time: '2026-02-16T22:03:05.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42689 From 0b81cfb99eeb264f5d0ef4b01176915818a36597 Mon Sep 17 00:00:00 2001 From: nekokiwa Date: Mon, 16 Feb 2026 16:48:05 -0600 Subject: [PATCH 353/603] fixed barber scissors misgendering when blocked by a hat (#42948) --- Content.Shared/MagicMirror/MagicMirrorSystem.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content.Shared/MagicMirror/MagicMirrorSystem.cs b/Content.Shared/MagicMirror/MagicMirrorSystem.cs index ca7609c97d9..5cdedcf0275 100644 --- a/Content.Shared/MagicMirror/MagicMirrorSystem.cs +++ b/Content.Shared/MagicMirror/MagicMirrorSystem.cs @@ -59,7 +59,7 @@ private void OnMagicMirrorSelect(Entity ent, ref MagicMirr _popup.PopupEntity( ent.Comp.Target == args.Actor ? Loc.GetString("magic-mirror-blocked-by-hat-self") - : Loc.GetString("magic-mirror-blocked-by-hat-self-target", ("target", Identity.Entity(args.Actor, EntityManager))), + : Loc.GetString("magic-mirror-blocked-by-hat-self-target", ("target", Identity.Entity(target, EntityManager))), args.Actor, args.Actor, PopupType.Medium); From 5ec6d60d4ab6e199e00fcf1fde54a52d9ff0c7b1 Mon Sep 17 00:00:00 2001 From: PJBot Date: Mon, 16 Feb 2026 23:04:34 +0000 Subject: [PATCH 354/603] Automatic changelog update --- Resources/Changelog/Changelog.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index d0d4cd5eaf4..7d890320f40 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,11 +1,4 @@ Entries: -- author: YoungThugSS14 - changes: - - message: The Prisoner Eva Suit now has the same stats as an emergency eva suit. - type: Tweak - id: 9022 - time: '2025-10-01T20:23:37.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/36696 - author: K-Dynamic changes: - message: Puddles now spill over at 50u instead of 20u. @@ -3995,3 +3988,10 @@ id: 9529 time: '2026-02-16T22:03:05.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/42689 +- author: nekokiwa + changes: + - message: Barber Scissors no longer misgender the target when blocked by a hat. + type: Fix + id: 9530 + time: '2026-02-16T23:03:26.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/42948 From 2130cde6a3d095aaddc23fcf683fdab0b1263e55 Mon Sep 17 00:00:00 2001 From: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com> Date: Tue, 17 Feb 2026 09:56:04 -0800 Subject: [PATCH 355/603] Fix reagent duplication from vomiting (#42954) no more reagent duplication Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com> --- Content.Shared/Medical/VomitSystem.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Content.Shared/Medical/VomitSystem.cs b/Content.Shared/Medical/VomitSystem.cs index 8152e5bf4bd..8c528313b88 100644 --- a/Content.Shared/Medical/VomitSystem.cs +++ b/Content.Shared/Medical/VomitSystem.cs @@ -58,7 +58,9 @@ private void TryVomitSolution(Entity ent, ref BodyRelayedEvent out var sol)) return; + // Empty stomach solution into the new vomit solution args.Args.Sol.AddSolution(sol, _proto); + sol.RemoveAllSolution(); // Remind the stomach that it's empty. _solutionContainer.UpdateChemicals(ent.Comp.Solution.Value); From 4751c7981f1f2265181fbabbefd9d44cc9ffb9e3 Mon Sep 17 00:00:00 2001 From: Centronias Date: Tue, 17 Feb 2026 10:15:10 -0800 Subject: [PATCH 356/603] Add missing test pair cleanup to SharedGasSpecificHeatsTest (#42763) * add SharedGasSpecificHeatsTest testpair cleanup and make it nonparallel because sometimes the basic tests blast through so fast that the pairs are reused before they're read (or something? I honestly don't know, but making it non-parallel fixed issues I was seeing) * Apply suggestion from @Centronias --- .../Tests/Atmos/SharedGasSpecificHeatsTest.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Content.IntegrationTests/Tests/Atmos/SharedGasSpecificHeatsTest.cs b/Content.IntegrationTests/Tests/Atmos/SharedGasSpecificHeatsTest.cs index 6c3bcbe6db8..ac80f4a1050 100644 --- a/Content.IntegrationTests/Tests/Atmos/SharedGasSpecificHeatsTest.cs +++ b/Content.IntegrationTests/Tests/Atmos/SharedGasSpecificHeatsTest.cs @@ -13,7 +13,7 @@ namespace Content.IntegrationTests.Tests.Atmos; /// Tests for asserting that various gas specific heat operations agree with each other and do not deviate /// across client and server. ///